@dskripchenko/laravel-admin 1.1.24 → 1.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/auth/ForgotPasswordPage.vue.d.ts +9 -0
- package/dist/components/auth/LoginPage.vue.d.ts +7 -3
- package/dist/components/auth/ResetPasswordPage.vue.d.ts +7 -0
- package/dist/components/dashboard/AddWidgetDialog.vue.d.ts +12 -0
- package/dist/components/dashboard/BarChartWidget.vue.d.ts +1 -1
- package/dist/components/dashboard/ChartWidget.vue.d.ts +18 -0
- package/dist/components/dashboard/DashboardPage.vue.d.ts +8 -6
- package/dist/components/dashboard/GaugeWidget.vue.d.ts +1 -1
- package/dist/components/dashboard/WidgetActionsOverlay.vue.d.ts +8 -0
- package/dist/components/dashboard/WidgetConfigDialog.vue.d.ts +24 -0
- package/dist/components/dashboard/builtin.d.ts +5 -0
- package/dist/components/fields/DateField.vue.d.ts +2 -2
- package/dist/components/fields/NumberField.vue.d.ts +3 -3
- package/dist/components/fields/SelectField.vue.d.ts +1 -1
- package/dist/components/fields/TagsField.vue.d.ts +38 -0
- package/dist/components/fields/TextAreaField.vue.d.ts +1 -1
- package/dist/components/fields/TextField.vue.d.ts +1 -1
- package/dist/components/fields/TranslatableField.vue.d.ts +24 -0
- package/dist/components/fields/wysiwyg/quill/QuillField.vue.d.ts +4 -5
- package/dist/components/infolist/BadgeEntry.vue.d.ts +1 -1
- package/dist/components/infolist/TextEntry.vue.d.ts +2 -2
- package/dist/components/profile/ApiTokensManager.vue.d.ts +2 -0
- package/dist/components/profile/TwoFactorSetup.vue.d.ts +24 -0
- package/dist/components/resource/AdminFilterToolbar.vue.d.ts +42 -0
- package/dist/components/resource/AuditTimeline.vue.d.ts +12 -0
- package/dist/components/resource/FilterEditor.d.ts +58 -0
- package/dist/components/resource/InlineEditCell.vue.d.ts +26 -0
- package/dist/components/resource/ResourceFormPage.vue.d.ts +6 -3
- package/dist/components/resource/ResourceIndexPage.vue.d.ts +10 -4
- package/dist/components/resource/ResourceViewPage.vue.d.ts +33 -4
- package/dist/components/shell/AdminShell.vue.d.ts +8 -2
- package/dist/components/shell/AdminSidebar.vue.d.ts +10 -4
- package/dist/components/shell/AdminTopBar.vue.d.ts +4 -4
- package/dist/components/shell/BrandLogo.vue.d.ts +16 -0
- package/dist/components/shell/NotificationsDrawer.vue.d.ts +2 -0
- package/dist/components/shell/iconRegistry.d.ts +18 -0
- package/dist/createAdminApp.d.ts +3 -0
- package/dist/index.cjs +3 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.mjs +6499 -2729
- package/dist/index.mjs.map +1 -1
- package/dist/quill.cjs +1 -1
- package/dist/quill.cjs.map +1 -1
- package/dist/quill.mjs +21 -33
- package/dist/quill.mjs.map +1 -1
- package/dist/router/index.d.ts +4 -0
- package/dist/stores/dashboard.d.ts +212 -0
- package/dist/stores/i18n.d.ts +31 -0
- package/dist/stores/manifest.d.ts +73 -11
- package/dist/stores/navigation.d.ts +1 -1
- package/dist/stores/notifications.d.ts +14 -2
- package/dist/stores/resourceForm.d.ts +3 -3
- package/dist/stores/resourceIndex.d.ts +1 -1
- package/dist/stores/toast.d.ts +16 -0
- package/dist/style.css +1 -1
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -1,2 +1,4 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),O=require("pinia"),R=require("vue-router"),c=require("@dskripchenko/ui"),Ot=require("axios"),z=require("./formState-GlJBphEn.cjs");let oe=null;function Ee(t){oe=t}function L(){if(oe===null)throw new Error("[admin] AdminClient is not registered. Call setAdminClient(...) before using stores.");return oe}function qe(){oe=null}function Oe(){return oe!==null}const Wt=Object.freeze(Object.defineProperty({__proto__:null,clearAdminClient:qe,getAdminClient:L,hasAdminClient:Oe,setAdminClient:Ee},Symbol.toStringTag,{value:"Module"})),me=O.defineStore("admin-theme",()=>{const t=e.ref("light"),n=e.ref(["light","dark"]),a=e.computed(()=>t.value==="dark");function i(s){t.value=s.theme,n.value=s.availableThemes,r(s.theme)}function o(s){if(!n.value.includes(s))throw new Error(`Theme "${s}" is not available`);t.value=s,r(s)}async function l(s){if(!n.value.includes(s))throw new Error(`Theme "${s}" is not available`);const d=t.value;o(s);try{await L().post("/system/setTheme",{theme:s})}catch(u){throw o(d),u}}function r(s){typeof document<"u"&&document.documentElement&&document.documentElement.setAttribute("data-theme",s)}return{current:t,available:n,isDark:a,hydrate:i,applyLocal:o,setTheme:l}}),jt=["aria-label","aria-pressed"],Kt=["data-icon"],Ve=e.defineComponent({__name:"ThemeToggle",setup(t){const n=me(),a=e.computed(()=>n.current==="dark"),i=e.computed(()=>a.value?"sun":"moon"),o=e.computed(()=>a.value?"Переключить на светлую тему":"Переключить на тёмную тему");async function l(){const r=a.value?"light":"dark";await n.setTheme(r)}return(r,s)=>(e.openBlock(),e.createElementBlock("button",{type:"button",class:"admin-topbar__icon-btn","aria-label":o.value,"aria-pressed":a.value,onClick:l},[e.createElementVNode("span",{class:"admin-topbar__icon","data-icon":i.value},null,8,Kt)],8,jt))}}),fe=O.defineStore("admin-locale",()=>{const t=e.ref("ru"),n=e.ref(["ru","en"]);function a(r){t.value=r.locale,n.value=r.availableLocales,l(r.locale)}function i(r){if(!n.value.includes(r))throw new Error(`Locale "${r}" is not available`);t.value=r,l(r)}async function o(r){if(!n.value.includes(r))throw new Error(`Locale "${r}" is not available`);const s=t.value;i(r);try{await L().post("/system/setLocale",{locale:r})}catch(d){throw i(s),d}}function l(r){typeof document<"u"&&document.documentElement&&document.documentElement.setAttribute("lang",r);try{L().setLocale(r)}catch{}}return{current:t,available:n,hydrate:a,applyLocal:i,setLocale:o}}),Gt={type:"button",class:"admin-topbar__icon-btn",style:{width:"auto",padding:"0 8px",gap:"4px","font-size":"12px"},"aria-label":"Сменить локаль"},Ce=e.defineComponent({__name:"LocaleSwitcher",setup(t){const n=fe();async function a(i){i!==n.current&&await n.setLocale(i)}return(i,o)=>(e.openBlock(),e.createBlock(e.unref(c.UidMenu),null,{trigger:e.withCtx(()=>[e.createElementVNode("button",Gt,[o[0]||(o[0]=e.createElementVNode("span",{class:"admin-topbar__icon","data-icon":"globe"},null,-1)),e.createElementVNode("span",null,e.toDisplayString((e.unref(n).current??"").toUpperCase()),1)])]),default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(n).available,l=>(e.openBlock(),e.createBlock(e.unref(c.UidMenuItem),{key:l,onClick:r=>a(l)},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(l.toUpperCase()),1)]),_:2},1032,["onClick"]))),128))]),_:1}))}}),pe=O.defineStore("admin-notifications",()=>{const t=e.ref([]),n=e.ref(0),a=e.ref(!1),i=e.ref("all"),o=e.ref(null),l=e.computed(()=>n.value>0);function r(h){n.value=h.unread_notifications_count}async function s(h="all",k=1){a.value=!0;try{const m=await L().get(`/notifications/list?type=${h}&page=${k}`);t.value=m.data,n.value=m.meta.unread_count,o.value={page:m.meta.page,per_page:m.meta.per_page,total:m.meta.total,last_page:m.meta.last_page},i.value=h}finally{a.value=!1}}async function d(){const k=await L().get("/notifications/unread");n.value=k.count,i.value==="unread"&&(t.value=k.data)}async function u(h){await L().post("/notifications/markAsRead",{id:h});const p=t.value.find(m=>m.id===h);p&&p.read_at===null&&(p.read_at=new Date().toISOString(),n.value=Math.max(0,n.value-1))}async function f(){await L().post("/notifications/markAllAsRead");const k=new Date().toISOString();for(const p of t.value)p.read_at===null&&(p.read_at=k);n.value=0}async function g(h){await L().post("/notifications/destroy",{id:h});const p=t.value.findIndex(m=>m.id===h);if(p!==-1){const m=t.value[p].read_at===null;t.value.splice(p,1),m&&(n.value=Math.max(0,n.value-1))}}return{items:t,unreadCount:n,loading:a,meta:o,lastFilter:i,hasUnread:l,hydrate:r,load:s,loadUnread:d,markAsRead:u,markAllAsRead:f,destroy:g}}),Ht=["title"],We=e.defineComponent({__name:"NotificationBell",setup(t){const n=pe(),a=e.computed(()=>{const i=n.unreadCount;return i<=0?null:i>99?"99+":String(i)});return(i,o)=>(e.openBlock(),e.createBlock(e.unref(R.RouterLink),{to:"/notifications",class:"admin-topbar__icon-btn","aria-label":"Уведомления"},{default:e.withCtx(()=>[o[0]||(o[0]=e.createElementVNode("span",{class:"admin-topbar__icon","data-icon":"bell"},null,-1)),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,Ht)):e.createCommentVNode("",!0)]),_:1}))}});class W 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 xe extends W{constructor(n){super(401,n),this.name="UnauthenticatedError"}}class je extends W{constructor(n){super(403,n),this.name="ForbiddenError"}}class Ke extends W{constructor(n){super(404,n),this.name="NotFoundError"}}class le extends W{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 ye(t,n){switch(t){case 401:return new xe(n);case 403:return new je(n);case 404:return new Ke(n);case 422:return new le(n);default:return new W(t,n)}}const I=O.defineStore("admin-auth",()=>{const t=e.ref(null),n=e.ref([]),a=e.ref(null),i=e.computed(()=>t.value!==null),o=e.computed(()=>a.value!==null);function l(p){t.value=p.user,n.value=p.permissions}function r(p){return n.value.includes("*")||n.value.includes(p)?!0:n.value.some(m=>{if(!m.endsWith(".*"))return!1;const y=m.slice(0,-1);return p.startsWith(y)})}function s(p){return p.some(r)}function d(p){return p.every(r)}async function u(p){const m=L();try{const y=await m.post("/auth/login",p);return y?.user&&(t.value=y.user),Array.isArray(y?.permissions)&&(n.value=y.permissions),a.value=null,"authenticated"}catch(y){if(y instanceof W&&y.errorKey==="two_factor_required"){const $=y.payload.challenge_token;return a.value={challengeToken:typeof $=="string"?$:"",remember:p.remember??!1},"two_factor_required"}throw y}}async function f(p){if(a.value===null)throw new Error("No pending 2FA challenge");const y=await L().post("/auth/twoFactorChallenge",{challenge_token:a.value.challengeToken,code:p});t.value=y.user,a.value=null}async function g(p){if(a.value===null)throw new Error("No pending 2FA challenge");const y=await L().post("/auth/twoFactorRecovery",{challenge_token:a.value.challengeToken,recovery_code:p});return t.value=y.user,a.value=null,{remaining:y.recovery_codes_remaining}}function h(){a.value=null}async function k(){const p=L();try{await p.post("/auth/logout")}finally{t.value=null,n.value=[],a.value=null}}return{user:t,permissions:n,pendingChallenge:a,isAuthenticated:i,isChallengePending:o,hydrate:l,hasPermission:r,hasAnyPermission:s,hasAllPermissions:d,login:u,twoFactorChallenge:f,twoFactorRecovery:g,cancelChallenge:h,logout:k}}),Xt={type:"button",class:"admin-topbar__icon-btn admin-user-menu__trigger","aria-label":"Меню пользователя","aria-haspopup":"menu",style:{width:"auto",padding:"0 4px",gap:"8px"}},Ge=e.defineComponent({__name:"UserMenu",setup(t){const n=I(),a=R.useRouter();async function i(){try{await n.logout()}finally{await a.push({name:"admin.login"})}}function o(){a.push({name:"admin.profile"})}return(l,r)=>(e.openBlock(),e.createBlock(e.unref(c.UidMenu),null,{trigger:e.withCtx(()=>[e.createElementVNode("button",Xt,[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:o},{default:e.withCtx(()=>[...r[0]||(r[0]=[e.createTextVNode("Профиль",-1)])]),_:1}),e.createVNode(e.unref(c.UidMenuSeparator)),e.createVNode(e.unref(c.UidMenuItem),{variant:"danger",onClick:i},{default:e.withCtx(()=>[...r[1]||(r[1]=[e.createTextVNode("Выйти",-1)])]),_:1})]),_:1}))}}),Yt={class:"admin-topbar"},Jt={class:"admin-topbar__breadcrumbs"},Qt={key:0,class:"sep"},He=e.defineComponent({__name:"AdminTopBar",props:{breadcrumbs:{default:()=>[]},showCollapseToggle:{type:Boolean,default:!0}},emits:["toggle-sidebar"],setup(t,{emit:n}){const a=t,i=n,o=e.computed(()=>a.breadcrumbs.length-1);return(l,r)=>(e.openBlock(),e.createElementBlock("header",Yt,[t.showCollapseToggle?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:"admin-topbar__icon-btn","aria-label":"Свернуть меню",onClick:r[0]||(r[0]=s=>i("toggle-sidebar"))},[...r[1]||(r[1]=[e.createElementVNode("span",{class:"admin-topbar__icon","data-icon":"panel-left"},null,-1)])])):e.createCommentVNode("",!0),e.createElementVNode("div",Jt,[e.renderSlot(l.$slots,"breadcrumbs",{},()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.breadcrumbs,(s,d)=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:d},[d>0?(e.openBlock(),e.createElementBlock("span",Qt,"›")):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===o.value?"cur":"")},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(s.label),1)]),_:2},1032,["href","class"]))],64))),128))])]),r[3]||(r[3]=e.createElementVNode("div",{class:"admin-topbar__spacer"},null,-1)),e.renderSlot(l.$slots,"search",{},()=>[r[2]||(r[2]=e.createElementVNode("div",{class:"admin-topbar__search",role:"button",tabindex:"0"},[e.createElementVNode("span",{class:"admin-topbar__icon","data-icon":"search"}),e.createElementVNode("span",null,"Поиск везде…"),e.createElementVNode("kbd",null,"⌘K")],-1))]),e.renderSlot(l.$slots,"actions"),e.createVNode(We),e.createVNode(Ve),e.createVNode(Ce),e.createVNode(Ge)]))}}),$e=O.defineStore("admin-menu",()=>{const t=e.ref([]),n=e.ref(!1),a=e.ref(null),i=e.ref(!1),o=e.computed(()=>{const u=I(),f=g=>{if(Array.isArray(g.permissions)&&g.permissions.length>0&&!u.hasAnyPermission(g.permissions))return null;const h=(g.children??[]).map(f).filter(k=>k!==null);return{...g,children:h}};return t.value.map(f).filter(g=>g!==null)}),l=e.computed(()=>{const u=new Map;for(const g of o.value){const h=g.group??null;u.has(h)||u.set(h,[]),u.get(h).push(g)}const f=[];for(const[g,h]of u)h.sort((k,p)=>{const m=(k.order??0)-(p.order??0);return m!==0?m:k.label.localeCompare(p.label)}),f.push({group:g,items:h});return f});async function r(u=!1){if(i.value&&!u)return t.value;n.value=!0,a.value=null;try{const g=await L().get("/system/menu");return t.value=Array.isArray(g.items)?g.items:[],i.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,i.value=!0,a.value=null}function d(){t.value=[],i.value=!1,a.value=null,n.value=!1}return{items:t,loading:n,error:a,isLoaded:i,visibleItems:o,groupedItems:l,load:r,setItems:s,reset:d}}),Zt={class:"admin-sidebar-brand"},en={class:"admin-sidebar-brand__mark"},tn={key:0,class:"admin-sidebar-brand__name"},nn={key:0,class:"admin-sidebar-tenant"},an={class:"admin-sidebar-foot"},on={key:0,class:"admin-sidebar-foot__text"},ln=["href"],Xe=e.defineComponent({__name:"AdminSidebar",props:{collapsed:{type:Boolean,default:!1},brandName:{default:"Laravel Admin"},brandMark:{default:"L"},tenant:{default:null},version:{default:null},docsUrl:{default:null}},setup(t){const n=$e(),a=R.useRoute(),i=e.computed(()=>n.groupedItems);function o(s){return!!(s.routeName&&a.name===s.routeName||s.url&&a.path===s.url)}function l(s){if(s)return()=>e.h("span",{class:"admin-sidebar__icon","data-icon":s})}function r(s){if(s.url)return s.url;if(s.routeName)return{name:s.routeName}}return(s,d)=>(e.openBlock(),e.createBlock(e.unref(c.UidSidebar),{collapsed:t.collapsed},e.createSlots({header:e.withCtx(()=>[e.createElementVNode("div",Zt,[e.createElementVNode("div",en,e.toDisplayString(t.brandMark),1),t.collapsed?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",tn,e.toDisplayString(t.brandName),1))]),t.tenant&&!t.collapsed?(e.openBlock(),e.createElementBlock("div",nn,[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(i.value,(u,f)=>(e.openBlock(),e.createBlock(e.unref(c.UidSidebarGroup),{key:`grp-${f}`,title:u.group??void 0},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(u.items,g=>(e.openBlock(),e.createBlock(e.unref(c.UidSidebarItem),{key:g.key,to:r(g),active:o(g),badge:g.badge??void 0},e.createSlots({default:e.withCtx(()=>[e.createTextVNode(" "+e.toDisplayString(g.label),1)]),_:2},[g.icon?{name:"icon",fn:e.withCtx(()=>[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(l(g.icon))))]),key:"0"}:void 0]),1032,["to","active","badge"]))),128))]),_:2},1032,["title"]))),128))]),_:2},[t.version||t.docsUrl?{name:"footer",fn:e.withCtx(()=>[e.createElementVNode("div",an,[t.version?(e.openBlock(),e.createElementBlock("span",on,e.toDisplayString(t.version),1)):e.createCommentVNode("",!0),t.docsUrl?(e.openBlock(),e.createElementBlock("a",{key:1,href:t.docsUrl,class:"admin-sidebar-foot__text admin-sidebar-foot__link"}," Docs ",8,ln)):e.createCommentVNode("",!0)])]),key:"0"}:void 0]),1032,["collapsed"]))}}),rn={class:"admin-shell-root"},sn={key:0,class:"admin-impersonation-banner",role:"status"},he="data-admin-impersonating",Ye=e.defineComponent({__name:"AdminShell",props:{collapsed:{type:Boolean,default:!1},impersonation:{default:null}},emits:["update:collapsed","exit-impersonation"],setup(t,{emit:n}){const a=t,i=n;function o(r){i("update:collapsed",r)}function l(){i("exit-impersonation")}return e.watch(()=>a.impersonation,r=>{typeof document>"u"||(r!==null?document.documentElement.setAttribute(he,"true"):document.documentElement.removeAttribute(he))},{immediate:!0}),e.onBeforeUnmount(()=>{typeof document<"u"&&document.documentElement.removeAttribute(he)}),(r,s)=>(e.openBlock(),e.createElementBlock("div",rn,[t.impersonation?(e.openBlock(),e.createElementBlock("div",sn,[e.createElementVNode("span",null,[s[1]||(s[1]=e.createTextVNode(" Вы вошли как ",-1)),e.createElementVNode("b",null,e.toDisplayString(t.impersonation.asName),1),s[2]||(s[2]=e.createTextVNode(" · режим имперсонации ",-1))]),e.createElementVNode("button",{type:"button",class:"admin-impersonation-banner__exit",onClick:l}," Выйти из режима ")])):e.createCommentVNode("",!0),e.createVNode(e.unref(c.UidSidebarLayout),{"model-value":t.collapsed,"onUpdate:modelValue":o},{sidebar:e.withCtx(()=>[e.renderSlot(r.$slots,"sidebar",{},()=>[e.createVNode(Xe,{collapsed:t.collapsed},null,8,["collapsed"])])]),header:e.withCtx(()=>[e.renderSlot(r.$slots,"topbar",{},()=>[e.createVNode(He,{onToggleSidebar:s[0]||(s[0]=d=>o(!t.collapsed))})])]),default:e.withCtx(()=>[e.renderSlot(r.$slots,"default")]),_:3},8,["model-value"])]))}}),Se=O.defineStore("admin-navigation",()=>{const t=e.ref(0),n=e.computed(()=>t.value>0);function a(){t.value+=1}function i(){t.value>0&&(t.value-=1)}function o(){t.value=0}return{pending:t,isLoading:n,start:a,end:i,reset:o}}),cn=e.defineComponent({__name:"AdminLoadingBar",setup(t){const n=Se(),a=e.ref(!1);let i=null;e.watch(()=>n.isLoading,l=>{l?(i!==null&&(clearTimeout(i),i=null),a.value=!0):i=setTimeout(()=>{a.value=!1,i=null},120)},{immediate:!0});const o=e.computed(()=>({"admin-loading-bar":!0,"admin-loading-bar--visible":a.value}));return(l,r)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(o.value),role:"progressbar","aria-busy":"true"},null,2))}}),dn={class:"admin-page-host"},Je=e.defineComponent({__name:"AdminApp",setup(t){const n=R.useRoute(),a=e.computed(()=>!(n.meta?.fullscreen===!0||n.meta?.kind==="auth"||n.name==="admin.notFound"));return(i,o)=>{const l=e.resolveComponent("router-view");return e.openBlock(),e.createElementBlock(e.Fragment,null,[e.createVNode(cn),a.value?(e.openBlock(),e.createBlock(Ye,{key:0},{default:e.withCtx(()=>[e.createElementVNode("div",dn,[e.createVNode(l,null,{default:e.withCtx(({Component:r})=>[e.createVNode(e.Transition,{name:"admin-page"},{default:e.withCtx(()=>[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(r)))]),_:2},1024)]),_:1})])]),_:1})):(e.openBlock(),e.createBlock(l,{key:1},{default:e.withCtx(({Component:r})=>[e.createVNode(e.Transition,{name:"admin-page"},{default:e.withCtx(()=>[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(r)))]),_:2},1024)]),_:1}))],64)}}}),K=O.defineStore("admin-manifest",()=>{const t=e.ref(null),n=e.ref(!1),a=e.ref(null),i=e.computed(()=>t.value!==null),o=e.computed(()=>t.value?.version??null),l=e.computed(()=>t.value?.resources??[]),r=e.computed(()=>t.value?.screens??[]),s=e.computed(()=>t.value?.settings??[]),d=e.computed(()=>t.value?.plugins??[]);function u(p){return l.value.find(m=>m.slug===p)??null}function f(p){return r.value.find(m=>m.slug===p)??null}function g(p){return s.value.find(m=>m.slug===p)??null}async function h(p=!1){if(t.value!==null&&!p)return t.value;n.value=!0,a.value=null;try{const y=await L().get("/system/manifest");return t.value=y,y}catch(m){throw a.value=m instanceof Error?m:new Error(String(m)),m}finally{n.value=!1}}function k(){t.value=null,a.value=null,n.value=!1}return{manifest:t,loading:n,error:a,isLoaded:i,version:o,resources:l,screens:r,settings:s,plugins:d,getResource:u,getScreen:f,getSettings:g,load:h,reset:k}}),un={class:"admin-home"},mn={class:"admin-home__title"},fn={key:0,class:"admin-home__resources"},pn={class:"admin-home__grid"},gn=["onClick"],vn={class:"admin-home__card-label"},hn={class:"admin-home__card-slug"},Qe=e.defineComponent({__name:"HomePage",setup(t){const n=K(),a=I(),i=R.useRouter(),o=e.computed(()=>a.user?.name??""),l=e.computed(()=>n.manifest?.resources??[]);return(r,s)=>(e.openBlock(),e.createElementBlock("div",un,[e.createVNode(e.unref(c.UidCard),{padding:"lg",class:"admin-home__hero"},{default:e.withCtx(()=>[e.createElementVNode("h1",mn,"Добро пожаловать"+e.toDisplayString(o.value?", "+o.value:""),1),s[0]||(s[0]=e.createElementVNode("p",{class:"admin-home__lead"}," Админ-панель готова. Воспользуйтесь сайдбаром или переходите к ресурсам ниже. ",-1))]),_:1}),l.value.length?(e.openBlock(),e.createElementBlock("section",fn,[s[1]||(s[1]=e.createElementVNode("h2",{class:"admin-home__heading"},"Ресурсы",-1)),e.createElementVNode("ul",pn,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.value,d=>(e.openBlock(),e.createElementBlock("li",{key:d.slug},[e.createElementVNode("button",{type:"button",class:"admin-home__card",onClick:u=>e.unref(i).push({name:`admin.resource.${d.slug}.index`})},[e.createElementVNode("span",vn,e.toDisplayString(d.label),1),e.createElementVNode("span",hn,e.toDisplayString(d.slug),1)],8,gn)]))),128))])])):e.createCommentVNode("",!0)]))}}),kn={class:"admin-status-page"},Ze=e.defineComponent({__name:"ForbiddenPage",setup(t){const n=R.useRouter();return(a,i)=>(e.openBlock(),e.createElementBlock("div",kn,[e.createVNode(e.unref(c.UidCard),{padding:"lg",class:"admin-status-page__card"},{default:e.withCtx(()=>[i[2]||(i[2]=e.createElementVNode("h1",{class:"admin-status-page__code"},"403",-1)),i[3]||(i[3]=e.createElementVNode("p",{class:"admin-status-page__message"},"Доступ запрещён.",-1)),e.createVNode(e.unref(c.UidButton),{variant:"ghost",onClick:i[0]||(i[0]=o=>e.unref(n).replace({name:"admin.home"}))},{default:e.withCtx(()=>[...i[1]||(i[1]=[e.createTextVNode(" На главную ",-1)])]),_:1})]),_:1})]))}}),yn={class:"admin-status-page"},et=e.defineComponent({__name:"NotFoundPage",setup(t){const n=R.useRouter();return(a,i)=>(e.openBlock(),e.createElementBlock("div",yn,[e.createVNode(e.unref(c.UidCard),{padding:"lg",class:"admin-status-page__card"},{default:e.withCtx(()=>[i[2]||(i[2]=e.createElementVNode("h1",{class:"admin-status-page__code"},"404",-1)),i[3]||(i[3]=e.createElementVNode("p",{class:"admin-status-page__message"},"Страница не найдена.",-1)),e.createVNode(e.unref(c.UidButton),{variant:"ghost",onClick:i[0]||(i[0]=o=>e.unref(n).replace({name:"admin.home"}))},{default:e.withCtx(()=>[...i[1]||(i[1]=[e.createTextVNode(" На главную ",-1)])]),_:1})]),_:1})]))}}),_n={class:"admin-settings-page"},Bn={class:"admin-settings-page__title"},bn={key:0,class:"admin-settings-page__hint"},wn={key:1,class:"admin-settings-page__debug"},tt=e.defineComponent({__name:"SettingsPage",setup(t){const n=R.useRoute(),a=K(),i=e.computed(()=>String(n.params.slug??"")),o=e.computed(()=>a.manifest?.settings?.find(l=>l.slug===i.value)??null);return(l,r)=>(e.openBlock(),e.createElementBlock("div",_n,[e.createVNode(e.unref(c.UidCard),{padding:"lg"},{default:e.withCtx(()=>[e.createElementVNode("h1",Bn,e.toDisplayString(o.value?.label??i.value),1),o.value?(e.openBlock(),e.createElementBlock("pre",wn,e.toDisplayString(JSON.stringify(o.value.fields,null,2)),1)):(e.openBlock(),e.createElementBlock("p",bn," Settings «"+e.toDisplayString(i.value)+"» не найдено в manifest'е. ",1))]),_:1})]))}}),Nn={class:"admin-status-page"},En={class:"admin-status-page__title"},Vn={class:"admin-status-page__hint"},nt=e.defineComponent({__name:"UnknownScreenPage",setup(t){const n=R.useRoute(),a=e.computed(()=>String(n.params.slug??"")),i=e.computed(()=>String(n.meta?.title??a.value));return(o,l)=>(e.openBlock(),e.createElementBlock("div",Nn,[e.createVNode(e.unref(c.UidCard),{padding:"lg",class:"admin-status-page__card"},{default:e.withCtx(()=>[e.createElementVNode("h1",En,e.toDisplayString(i.value),1),e.createElementVNode("p",Vn,[e.createTextVNode(" Это заглушка для screen «"+e.toDisplayString(a.value)+"». Передайте свой компонент через ",1),l[0]||(l[0]=e.createElementVNode("code",null,"createAdminApp("+e.toDisplayString("{")+" pages: "+e.toDisplayString("{")+" screen: MyScreen "+e.toDisplayString("}")+" "+e.toDisplayString("}")+")",-1)),l[1]||(l[1]=e.createTextVNode(". ",-1))])]),_:1})]))}}),Cn={class:"admin-auth-card__row"},xn=["href"],$n={key:1,style:{"text-align":"center","font-size":"var(--uid-font-size-xs)",color:"var(--uid-text-secondary)","padding-top":"4px"}},Sn=["href"],at=e.defineComponent({__name:"LoginForm",props:{forgotUrl:{default:null},ssoLinkLabel:{default:null},ssoUrl:{default:null}},emits:["success"],setup(t,{emit:n}){const a=n,i=I(),o=e.ref(""),l=e.ref(""),r=e.ref(!1),s=e.ref(!1),d=e.ref(null),u=e.ref({}),f=e.computed(()=>u.value.email?.[0]),g=e.computed(()=>u.value.password?.[0]);async function h(){if(!s.value){s.value=!0,d.value=null,u.value={};try{const k=await i.login({email:o.value,password:l.value,remember:r.value});a("success",k)}catch(k){k instanceof le?(u.value=k.fields,d.value=k.firstFieldMessage()):k instanceof re?d.value="Нет соединения с сервером":k instanceof W?d.value=k.message||"Не удалось войти":d.value=k.message}finally{s.value=!1}}}return(k,p)=>(e.openBlock(),e.createElementBlock("form",{class:"admin-auth-card__bd",novalidate:"",onSubmit:e.withModifiers(h,["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:o.value,"onUpdate:modelValue":p[0]||(p[0]=m=>o.value=m),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:l.value,"onUpdate:modelValue":p[1]||(p[1]=m=>l.value=m),type:"password",label:"Пароль",autocomplete:"current-password",required:!0,disabled:s.value,error:g.value,name:"password"},null,8,["modelValue","disabled","error"]),e.createElementVNode("div",Cn,[e.createVNode(e.unref(c.UidCheckbox),{modelValue:r.value,"onUpdate:modelValue":p[2]||(p[2]=m=>r.value=m),disabled:s.value},{default:e.withCtx(()=>[...p[3]||(p[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,xn)):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",$n,[p[4]||(p[4]=e.createTextVNode(" или войдите через ",-1)),e.createElementVNode("a",{href:t.ssoUrl,class:"admin-auth-card__link"},e.toDisplayString(t.ssoLinkLabel),9,Sn)])):e.createCommentVNode("",!0)],32))}}),Un=["value","disabled","aria-label","onInput","onKeydown"],Tn={class:"admin-auth-card__row"},ot=e.defineComponent({__name:"TwoFactorForm",emits:["success","cancel"],setup(t,{emit:n}){const a=n,i=I(),o=e.ref("totp"),l=e.ref(["","","","","",""]),r=e.ref(""),s=e.ref([]),d=e.ref(!1),u=e.ref(null),f=e.ref(null),g=e.computed(()=>l.value.join("")),h=e.computed(()=>o.value==="totp"?g.value.length===6:r.value.trim().length>0);function k(v,C){C instanceof HTMLInputElement&&(s.value[v]=C)}function p(v,C){const S=C.target,U=S.value.replace(/\D/g,"").slice(-1);l.value[v]=U,S.value=U,U&&v<l.value.length-1&&e.nextTick(()=>s.value[v+1]?.focus()),g.value.length===l.value.length&&$()}function m(v,C){C.key==="Backspace"&&!l.value[v]&&v>0?e.nextTick(()=>s.value[v-1]?.focus()):C.key==="ArrowLeft"&&v>0?(s.value[v-1]?.focus(),C.preventDefault()):C.key==="ArrowRight"&&v<l.value.length-1&&(s.value[v+1]?.focus(),C.preventDefault())}function y(v){const S=(v.clipboardData?.getData("text")??"").replace(/\D/g,"").slice(0,l.value.length);if(S.length!==0){v.preventDefault();for(let U=0;U<l.value.length;U++)l.value[U]=S[U]??"";e.nextTick(()=>{s.value[Math.min(S.length,l.value.length-1)]?.focus(),S.length===l.value.length&&$()})}}async function $(){if(!(d.value||!h.value)){d.value=!0,u.value=null;try{if(o.value==="totp")await i.twoFactorChallenge(g.value);else{const v=await i.twoFactorRecovery(r.value.trim());f.value=v.remaining}a("success")}catch(v){v instanceof le?u.value=v.firstFieldMessage()??"Неверный код":v instanceof re?u.value="Нет соединения с сервером":v instanceof W?u.value=v.message||"Не удалось проверить код":u.value=v.message}finally{d.value=!1}}}function b(){i.cancelChallenge(),a("cancel")}function _(){o.value=o.value==="totp"?"recovery":"totp",u.value=null}return(v,C)=>(e.openBlock(),e.createElementBlock("form",{class:"admin-auth-card__bd",novalidate:"",onSubmit:e.withModifiers($,["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),o.value==="totp"?(e.openBlock(),e.createElementBlock("div",{key:2,class:"admin-code-input",onPaste:y},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.value,(S,U)=>(e.openBlock(),e.createElementBlock("input",{key:U,ref_for:!0,ref:N=>k(U,N),value:l.value[U],type:"text",inputmode:"numeric",autocomplete:"one-time-code",maxlength:"1",disabled:d.value,"aria-label":`Цифра ${U+1}`,onInput:N=>p(U,N),onKeydown:N=>m(U,N)},null,40,Un))),128))],32)):(e.openBlock(),e.createBlock(e.unref(c.UidInput),{key:3,modelValue:r.value,"onUpdate:modelValue":C[0]||(C[0]=S=>r.value=S),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||!h.value},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(d.value?"Проверка…":"Подтвердить"),1)]),_:1},8,["loading","disabled"]),e.createElementVNode("div",Tn,[e.createElementVNode("button",{type:"button",class:"admin-auth-card__link",onClick:_},[o.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))}}),Fn={class:"admin-auth-page"},Dn={key:0,class:"admin-auth-page__corner"},An={class:"admin-auth-card__hd"},Ln=["src","alt"],Rn={key:1,"aria-hidden":"true"},Mn={key:2},Pn={class:"admin-auth-card__title"},In={class:"admin-auth-card__sub"},lt=e.defineComponent({__name:"LoginPage",props:{brandName:{default:"Laravel Admin"},brandMark:{default:"L"},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=I(),i=R.useRouter(),o=R.useRoute();async function l(){const r=o.query[n.redirectQueryKey];if(typeof r=="string"&&r.length>0&&r.startsWith("/")){await i.push(r);return}await i.push({name:n.homeRouteName})}return e.watch(()=>a.isAuthenticated,r=>{r&&l()}),e.onMounted(()=>{a.isAuthenticated&&l()}),(r,s)=>(e.openBlock(),e.createElementBlock("div",Fn,[t.showCornerActions?(e.openBlock(),e.createElementBlock("div",Dn,[e.createVNode(Ve),e.createVNode(Ce)])):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",An,[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,Ln)):e.unref(a).isChallengePending?(e.openBlock(),e.createElementBlock("span",Rn,"🛡")):(e.openBlock(),e.createElementBlock("span",Mn,e.toDisplayString(t.brandMark),1))],2),e.createElementVNode("div",Pn,[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",In,[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(ot,{key:0,onSuccess:s[0]||(s[0]=()=>{}),onCancel:s[1]||(s[1]=()=>{})})):(e.openBlock(),e.createBlock(at,{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"])]))}});const zn=t=>t.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase();var ce={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 qn=({size:t,strokeWidth:n=2,absoluteStrokeWidth:a,color:i,iconNode:o,name:l,class:r,...s},{slots:d})=>e.h("svg",{...ce,width:t||ce.width,height:t||ce.height,stroke:i||ce.stroke,"stroke-width":a?Number(n)*24/Number(t):n,class:["lucide",`lucide-${zn(l??"icon")}`],...s},[...o.map(u=>e.h(...u)),...d.default?[d.default()]:[]]);const Ue=(t,n)=>(a,{slots:i})=>e.h(qn,{...a,iconNode:n,name:t},i);const On=Ue("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 Wn=Ue("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 jn=Ue("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"}]]),Pe={page:1,per_page:20,total:0,last_page:1},Te=O.defineStore("admin-resource-index",()=>{const t=e.ref(null),n=e.ref([]),a=e.ref({...Pe}),i=e.ref(!1),o=e.ref(!1),l=e.ref(null);let r=null;const s=200,d=e.ref(""),u=e.ref({}),f=e.ref(null),g=e.ref(null),h=e.ref(new Set),k=e.computed(()=>!i.value&&l.value===null&&n.value.length===0),p=e.computed(()=>h.value.size),m=e.computed(()=>h.value.size>0),y=e.computed(()=>l.value!==null),$=e.computed(()=>h.value.size===0||n.value.length===0?"none":n.value.every(T=>h.value.has(b(T)))?"all":"mixed");function b(w){return w.id??w.key??""}function _(w){t.value!==w&&(t.value=w,v(),i.value=!0)}function v(){n.value=[],a.value={...Pe},i.value=!1,l.value=null,d.value="",u.value={},f.value=null,g.value=null,h.value=new Set}function C(w={}){const T={page:w.page??a.value.page,per_page:w.per_page??a.value.per_page},se=w.search??d.value;se&&(T.q=se);const te=w.sort??f.value,Me=w.direction??g.value;te&&Me!==null&&(T.order=[{column:te,direction:Me}]);const zt=w.filters??u.value,ve={};for(const[qt,H]of Object.entries(zt))H==null||H===""||(ve[qt]=Array.isArray(H)?H.join(","):H);return Object.keys(ve).length>0&&(T.filters=ve),T}async function S(w={}){if(!t.value)throw new Error("useResourceIndexStore.load() called before setSlug()");i.value=!0,l.value=null,r!==null&&clearTimeout(r),r=setTimeout(()=>{o.value=!0},s);try{const T=L(),se=C(w),te=await T.post(`/${t.value}/search`,se);n.value=te.data,a.value=te.meta}catch(T){throw l.value=T instanceof Error?T:new Error(String(T)),T}finally{i.value=!1,o.value=!1,r!==null&&(clearTimeout(r),r=null)}}async function U(w){d.value=w,a.value.page=1,await S()}async function N(w,T){T==null||T===""?delete u.value[w]:u.value[w]=T,a.value.page=1,await S()}async function A(){u.value={},a.value.page=1,await S()}async function M(w,T="asc"){f.value=w,g.value=T,await S()}async function D(w){f.value===w?g.value==="asc"?g.value="desc":g.value==="desc"?(f.value=null,g.value=null):g.value="asc":(f.value=w,g.value="asc"),await S()}async function q(w){a.value.page=w,await S()}function E(w){const T=new Set(h.value);T.has(w)?T.delete(w):T.add(w),h.value=T}function B(){if($.value==="all"){h.value=new Set;return}const w=new Set(h.value);for(const T of n.value)w.add(b(T));h.value=w}function x(){h.value=new Set}function F(w){return h.value.has(w)}return{slug:t,items:n,meta:a,loading:i,slowLoading:o,error:l,search:d,filters:u,sortKey:f,sortDirection:g,selection:h,isEmpty:k,hasError:y,hasSelection:m,selectedCount:p,selectionState:$,setSlug:_,reset:v,load:S,setSearch:U,setFilter:N,clearFilters:A,setSort:M,toggleSort:D,setPage:q,toggleRow:E,toggleAllOnPage:B,clearSelection:x,isSelected:F,rowId:b}}),Kn=Object.freeze(Object.defineProperty({__proto__:null,useResourceIndexStore:Te},Symbol.toStringTag,{value:"Module"})),Ie="d.m.Y H:i:s",Gn="d.m.Y",Hn=/^\d{4}-\d{2}-\d{2}[T\s]\d{2}:\d{2}/;function rt(t,n,a={}){if(t==null)return"";if(!n&&typeof t=="string"&&Hn.test(t))return ke(t,Ie);switch(n){case"date":return ke(String(t),a.format??Gn);case"datetime":return ke(String(t),a.format??Ie);case"money":return Xn(t,a.currency??"RUB",a.decimals??2);case"boolean":return Yn(t,a.trueLabel??"Да",a.falseLabel??"Нет");case"bytes":return Jn(t);default:return String(t)}}function ke(t,n){const a=new Date(t);if(isNaN(a.getTime()))return t;const i=(r,s=2)=>String(r).padStart(s,"0"),o={d:i(a.getDate()),m:i(a.getMonth()+1),Y:String(a.getFullYear()),y:i(a.getFullYear()%100),H:i(a.getHours()),h:i((a.getHours()+11)%12+1),i:i(a.getMinutes()),s:i(a.getSeconds()),U:String(Math.floor(a.getTime()/1e3)),c:a.toISOString(),N:String((a.getDay()+6)%7+1),w:String(a.getDay())};let l="";for(let r=0;r<n.length;r++){const s=n[r];if(s==="\\"&&r+1<n.length){l+=n[r+1],r++;continue}l+=o[s]??s}return l}function Xn(t,n,a){const i=typeof t=="number"?t:Number(t);return isNaN(i)?String(t):`${i.toFixed(a)} ${n}`}function Yn(t,n,a){return t===!0||t===1||t==="1"||t==="true"?n:a}function Jn(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 Qn={class:"admin-page admin-resource-index"},Zn={class:"admin-page__hd"},ea={class:"admin-page__title-wrap"},ta={class:"admin-page__title"},na={key:0,class:"admin-page__count"},aa={class:"admin-page__actions"},oa={key:0,class:"admin-bulk-toolbar",role:"toolbar"},la={class:"admin-bulk-toolbar__count"},ra={key:1,class:"admin-filter-bar"},ia=["value"],sa={key:2,class:"admin-resource-index__loading"},ca={key:5,class:"admin-resource-index__table"},da={key:0,class:"admin-resource-index__row-actions"},ua=["onClick"],ma=["onClick"],fa=["onClick"],pa={key:6,class:"admin-resource-index__footer"},ze="__row_actions__",it=e.defineComponent({__name:"ResourceIndexPage",props:{slug:{},title:{default:null},subtitle:{default:null},createLabel:{default:"Создать"},createRouteName:{default:null}},emits:["bulk-action","row-click"],setup(t,{emit:n}){const a=t,i=n,o=Te(),l=K(),r=Se(),s=R.useRouter(),d=e.computed(()=>l.getResource(a.slug)),u=e.computed(()=>a.title??d.value?.label??a.slug),f=e.computed(()=>{const B=(d.value?.columns??[]).map(x=>{const F=x;return{key:String(F.key??F.name??""),label:String(F.label??F.name??""),sortable:!!F.sortable,align:F.align??"left",width:typeof F.width=="string"?F.width:void 0}}).filter(x=>x.key);return B.push({key:ze,label:"",sortable:!1,align:"right",width:"120px"}),B}),g=e.computed(()=>{const E=d.value?.columns??[],B={};for(const x of E){const F=x,w=String(F.key??F.name??"");w&&(B[w]={preset:typeof F.preset=="string"?F.preset:void 0,meta:F.meta??{}})}return B});function h(E,B){const F=B?.row?.[E],w=g.value[E];return rt(F,w?.preset,w?.meta??{})}function k(E){return E?.row}const p=e.computed(()=>o.search!==""||Object.keys(o.filters).length>0),m=e.computed(()=>!o.isEmpty||p.value),y=e.computed(()=>{const E=o.meta.total;return E===0?"":`${o.items.length} из ${E}`});async function $(){r.start();try{await o.load()}catch{}finally{r.end()}}e.onMounted(async()=>{o.setSlug(a.slug),l.manifest===null&&await l.load().catch(()=>{}),await $()}),e.watch(()=>a.slug,async(E,B)=>{E!==B&&(o.setSlug(E),await $())});async function b(E){await e.nextTick(),await o.setSort(E,o.sortDirection)}async function _(E){await e.nextTick(),await o.setSort(o.sortKey,E)}function v(E){o.selection=E}async function C(E){await o.setPage(E)}function S(E){const B=E?.id??E?.key;return typeof B=="string"||typeof B=="number"?B:null}function U(E){i("row-click",E);const B=S(E);B!==null&&s.push({name:`admin.resource.${a.slug}.view`,params:{id:String(B)}})}function N(E,B){B?.stopPropagation();const x=S(E);x!==null&&s.push({name:`admin.resource.${a.slug}.view`,params:{id:String(x)}})}function A(E,B){B?.stopPropagation();const x=S(E);x!==null&&s.push({name:`admin.resource.${a.slug}.edit`,params:{id:String(x)}})}async function M(E,B){B?.stopPropagation();const x=S(E);if(x!==null&&window.confirm("Удалить запись?"))try{r.start();const{getAdminClient:F}=await Promise.resolve().then(()=>Wt);await F().post(`/${a.slug}/delete`,{id:x}),await o.load().catch(()=>{})}finally{r.end()}}function D(E){i("bulk-action",E,[...o.selection])}async function q(){await o.load().catch(()=>{})}return(E,B)=>(e.openBlock(),e.createElementBlock("section",Qn,[e.createElementVNode("header",Zn,[e.createElementVNode("div",ea,[e.createElementVNode("h1",ta,e.toDisplayString(u.value),1),t.subtitle||y.value?(e.openBlock(),e.createElementBlock("div",na,[t.subtitle?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createTextVNode(e.toDisplayString(t.subtitle),1)],64)):e.createCommentVNode("",!0),t.subtitle&&y.value?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createTextVNode(" · ")],64)):e.createCommentVNode("",!0),y.value?(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[e.createTextVNode(e.toDisplayString(y.value),1)],64)):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0)]),e.createElementVNode("div",aa,[e.renderSlot(E.$slots,"actions"),t.createRouteName?(e.openBlock(),e.createBlock(e.unref(c.UidButton),{key:0,variant:"primary",onClick:B[0]||(B[0]=x=>E.$router.push({name:t.createRouteName}))},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(t.createLabel),1)]),_:1})):e.createCommentVNode("",!0)])]),e.unref(o).hasSelection?(e.openBlock(),e.createElementBlock("div",oa,[e.createElementVNode("span",la,[B[7]||(B[7]=e.createTextVNode(" Выбрано ",-1)),e.createElementVNode("b",null,e.toDisplayString(e.unref(o).selectedCount),1)]),B[13]||(B[13]=e.createElementVNode("span",{class:"admin-bulk-toolbar__divider"},null,-1)),e.createVNode(e.unref(c.UidButton),{size:"sm",variant:"ghost",onClick:B[1]||(B[1]=x=>D("publish"))},{default:e.withCtx(()=>[...B[8]||(B[8]=[e.createTextVNode("Опубликовать",-1)])]),_:1}),e.createVNode(e.unref(c.UidButton),{size:"sm",variant:"ghost",onClick:B[2]||(B[2]=x=>D("archive"))},{default:e.withCtx(()=>[...B[9]||(B[9]=[e.createTextVNode("Архивировать",-1)])]),_:1}),e.createVNode(e.unref(c.UidButton),{size:"sm",variant:"ghost",onClick:B[3]||(B[3]=x=>D("export"))},{default:e.withCtx(()=>[...B[10]||(B[10]=[e.createTextVNode("Экспорт",-1)])]),_:1}),e.createVNode(e.unref(c.UidButton),{size:"sm",variant:"danger",onClick:B[4]||(B[4]=x=>D("delete"))},{default:e.withCtx(()=>[...B[11]||(B[11]=[e.createTextVNode("Удалить",-1)])]),_:1}),B[14]||(B[14]=e.createElementVNode("span",{class:"admin-bulk-toolbar__spacer"},null,-1)),e.createVNode(e.unref(c.UidButton),{size:"sm",variant:"ghost",onClick:e.unref(o).clearSelection},{default:e.withCtx(()=>[...B[12]||(B[12]=[e.createTextVNode(" Снять выделение ",-1)])]),_:1},8,["onClick"])])):m.value?(e.openBlock(),e.createElementBlock("div",ra,[e.createElementVNode("input",{value:e.unref(o).search,type:"search",placeholder:"Поиск…",class:"admin-filter-bar__search",onKeydown:B[5]||(B[5]=e.withKeys(x=>e.unref(o).setSearch(x.target.value),["enter"]))},null,40,ia),e.renderSlot(E.$slots,"filters",{filters:e.unref(o).filters,setFilter:e.unref(o).setFilter}),B[16]||(B[16]=e.createElementVNode("span",{class:"admin-filter-bar__spacer"},null,-1)),Object.keys(e.unref(o).filters).length>0?(e.openBlock(),e.createBlock(e.unref(c.UidButton),{key:0,size:"sm",variant:"ghost",onClick:e.unref(o).clearFilters},{default:e.withCtx(()=>[...B[15]||(B[15]=[e.createTextVNode(" Сброс ",-1)])]),_:1},8,["onClick"])):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0),e.unref(o).loading&&e.unref(o).items.length===0?(e.openBlock(),e.createElementBlock("div",sa,[e.unref(o).slowLoading?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},e.renderList(8,x=>e.createVNode(e.unref(c.UidSkeleton),{key:x,height:"40px"})),64)):e.createCommentVNode("",!0)])):e.unref(o).hasError?(e.openBlock(),e.createBlock(e.unref(c.UidErrorState),{key:3,title:"Не удалось загрузить данные",description:e.unref(o).error?.message??"Попробуйте обновить страницу.",class:"admin-resource-index__state"},{actions:e.withCtx(()=>[e.createVNode(e.unref(c.UidButton),{variant:"primary",onClick:q},{default:e.withCtx(()=>[...B[17]||(B[17]=[e.createTextVNode("Обновить",-1)])]),_:1})]),_:1},8,["description"])):e.unref(o).isEmpty?(e.openBlock(),e.createBlock(e.unref(c.UidEmptyState),{key:4,title:"Пока пусто",description:"Создайте первую запись или измените фильтры.",class:"admin-resource-index__state"},{actions:e.withCtx(()=>[t.createRouteName?(e.openBlock(),e.createBlock(e.unref(c.UidButton),{key:0,variant:"primary",onClick:B[6]||(B[6]=x=>E.$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",ca,[e.createVNode(e.unref(c.UidTable),{columns:f.value,data:e.unref(o).items,"sort-key":e.unref(o).sortKey,"sort-direction":e.unref(o).sortDirection,selectable:"",selection:e.unref(o).selection,"row-key":x=>e.unref(o).rowId(x),"onUpdate:sortKey":b,"onUpdate:sortDirection":_,"onUpdate:selection":v,onRowClick:U},e.createSlots({_:2},[e.renderList(f.value,x=>({name:x.key,fn:e.withCtx(F=>[x.key===ze?(e.openBlock(),e.createElementBlock("div",da,[e.createElementVNode("button",{type:"button",class:"admin-resource-index__row-action",title:"Просмотр",onClick:e.withModifiers(w=>N(k(F)??{},w),["stop"])},[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(On),size:16},null,8,["icon"])],8,ua),e.createElementVNode("button",{type:"button",class:"admin-resource-index__row-action",title:"Редактировать",onClick:e.withModifiers(w=>A(k(F)??{},w),["stop"])},[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(Wn),size:16},null,8,["icon"])],8,ma),e.createElementVNode("button",{type:"button",class:"admin-resource-index__row-action admin-resource-index__row-action--danger",title:"Удалить",onClick:e.withModifiers(w=>M(k(F)??{},w),["stop"])},[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(jn),size:16},null,8,["icon"])],8,fa)])):e.renderSlot(E.$slots,`cell-${x.key}`,{key:1,row:k(F)},()=>[e.createTextVNode(e.toDisplayString(h(x.key,F)),1)])])}))]),1032,["columns","data","sort-key","sort-direction","selection","row-key"])])),!e.unref(o).loading&&!e.unref(o).hasError&&!e.unref(o).isEmpty?(e.openBlock(),e.createElementBlock("footer",pa,[e.createVNode(e.unref(c.UidPagination),{"model-value":e.unref(o).meta.page,total:e.unref(o).meta.total,"per-page":e.unref(o).meta.per_page,"onUpdate:modelValue":C},null,8,["model-value","total","per-page"])])):e.createCommentVNode("",!0)]))}}),Fe=O.defineStore("admin-resource-form",()=>{const t=e.ref(null),n=e.ref("create"),a=e.ref(null),i=e.ref({}),o=e.ref({}),l=e.ref({}),r=e.ref(!1),s=e.ref(!1),d=e.ref(!1),u=e.ref(null),f=e.computed(()=>n.value==="create"),g=e.computed(()=>n.value==="edit"),h=e.computed(()=>n.value==="view"),k=e.computed(()=>u.value!==null),p=e.computed(()=>{const N=i.value,A=o.value,M=new Set([...Object.keys(N),...Object.keys(A)]);for(const D of M)if(!Object.is(N[D],A[D]))if(typeof N[D]=="object"||typeof A[D]=="object"){if(JSON.stringify(N[D])!==JSON.stringify(A[D]))return!0}else return!0;return!1});function m(N,A){for(const M of Object.keys(N))delete N[M];Object.assign(N,A)}function y(){m(i.value,{}),m(o.value,{}),l.value={},r.value=!1,s.value=!1,d.value=!1,u.value=null,a.value=null}function $(N,A={}){t.value=N,n.value="create",a.value=null,m(i.value,A),m(o.value,A),l.value={},u.value=null}async function b(N,A,M="edit"){t.value=N,n.value=M,a.value=A,r.value=!0,u.value=null,l.value={};try{const q=await L().get(`/${N}/read`,{params:{id:A}});m(i.value,q.record),m(o.value,q.record)}catch(D){throw u.value=D instanceof Error?D:new Error(String(D)),D}finally{r.value=!1}}function _(N,A){if(i.value[N]=A,l.value[N]){const M={...l.value};delete M[N],l.value=M}}function v(N){l.value={...N}}function C(){l.value={}}async function S(){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,l.value={};try{const N=L(),A=n.value==="create"?`/${t.value}/create`:`/${t.value}/update`,M=n.value==="create"?i.value:{id:a.value,...i.value},D=await N.post(A,M),q=D.record?.id??D.id;if(q===void 0)throw new Error("save: backend response does not contain record.id");return a.value=q,m(o.value,{...i.value}),n.value="edit",q}catch(N){throw N instanceof le?l.value={...N.fields}:(N instanceof W||N instanceof Error)&&(u.value=N),N}finally{s.value=!1}}async function U(){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 L().post(`/${t.value}/delete`,{id:a.value})}catch(N){throw N instanceof Error&&(u.value=N),N}finally{d.value=!1}}return{slug:t,mode:n,recordId:a,state:i,initial:o,errors:l,loading:r,saving:s,deleting:d,error:u,isCreate:f,isEdit:g,isView:h,isDirty:p,hasError:k,reset:y,prepareCreate:$,load:b,setField:_,setErrors:v,clearErrors:C,save:S,destroy:U}});function ge(){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,i]of Object.entries(n))t.set(a,i)}}}const Y=ge(),J=ge(),ga=Y.register,De=Y.get,va=Y.has,ha=Y.list,ka=J.register,_e=J.get,ya=J.has,_a=J.list;function Ba(){Y.clear(),J.clear()}function st(t){t.fields&&Y.registerBundle(t.fields),t.layouts&&J.registerBundle(t.layouts)}const Ae=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}))}}),Le=e.defineComponent({__name:"FieldRenderer",props:{node:{}},setup(t){const n=t,a=e.computed(()=>De(n.node.type)),i=e.computed(()=>{const{type:o,...l}=n.node;return l});return(o,l)=>a.value?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(a.value),e.normalizeProps(e.mergeProps({key:0},i.value)),null,16)):(e.openBlock(),e.createBlock(Ae,{key:1,type:t.node.type,name:t.node.name},null,8,["type","name"]))}}),Q=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 r=_e(n.node.type);return r?{kind:"layout",component:r}:{kind:"unknown"}}const l=_e(n.node.type);return l?{kind:"layout",component:l}:De(n.node.type)?{kind:"field"}:{kind:"unknown"}}),i=e.computed(()=>{const{type:l,kind:r,...s}=n.node;return s}),o=e.computed(()=>n.node);return(l,r)=>a.value.kind==="layout"&&a.value.component?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(a.value.component),e.normalizeProps(e.mergeProps({key:0},i.value)),null,16)):a.value.kind==="field"?(e.openBlock(),e.createBlock(Le,{key:1,node:o.value},null,8,["node"])):(e.openBlock(),e.createBlock(Ae,{key:2,type:t.node.type,name:t.node.name},null,8,["type","name"]))}}),ba={class:"admin-page admin-resource-form"},wa={class:"admin-page__hd"},Na={class:"admin-page__title-wrap"},Ea={class:"admin-page__title"},Va={class:"admin-page__actions"},Ca={key:1,class:"admin-resource-form__loading"},xa={key:3,class:"admin-resource-form__savebar"},Be=e.defineComponent({__name:"ResourceFormPage",props:{slug:{},id:{default:null},indexRouteName:{default:"admin.home"}},setup(t){const n=t,a=Fe(),i=K(),o=R.useRouter(),l=z.provideFormState(a.state,a.errors);e.watch(()=>a.errors,p=>{l.setErrors({...p})});const r=e.computed(()=>i.getResource(n.slug)),s=e.computed(()=>r.value?.fields??[]),d=e.computed(()=>a.isCreate?`Создать: ${r.value?.label??n.slug}`:`${r.value?.label??n.slug}: запись #${n.id}`),u=e.computed(()=>{const p=a.state.status;return typeof p=="string"?p: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()=>{i.manifest===null&&await i.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,m])=>{m!=null?await a.load(p,m,"edit").catch(()=>{}):a.prepareCreate(p)});async function g(){try{const p=await a.save();a.isCreate&&o.push({name:`admin.resource.${n.slug}.edit`,params:{id:p}}).catch(()=>{})}catch{}}async function h(){confirm("Удалить запись?")&&(await a.destroy().catch(()=>{}),a.hasError||o.push({name:n.indexRouteName}).catch(()=>{}))}function k(){a.isDirty&&!confirm("Несохранённые изменения будут потеряны. Продолжить?")||o.push({name:n.indexRouteName}).catch(()=>{})}return(p,m)=>(e.openBlock(),e.createElementBlock("section",ba,[e.createElementVNode("header",wa,[e.createElementVNode("div",Na,[e.createElementVNode("a",{class:"admin-resource-form__back",onClick:k},"← Назад"),e.createElementVNode("h1",Ea,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",Va,[e.createVNode(e.unref(c.UidButton),{variant:"ghost",disabled:e.unref(a).saving||e.unref(a).deleting,onClick:k},{default:e.withCtx(()=>[...m[0]||(m[0]=[e.createTextVNode(" Отмена ",-1)])]),_:1},8,["disabled"]),e.unref(a).isEdit?(e.openBlock(),e.createBlock(e.unref(c.UidButton),{key:0,variant:"danger",disabled:e.unref(a).saving||e.unref(a).deleting,loading:e.unref(a).deleting,onClick:h},{default:e.withCtx(()=>[...m[1]||(m[1]=[e.createTextVNode(" Удалить ",-1)])]),_:1},8,["disabled","loading"])):e.createCommentVNode("",!0),e.createVNode(e.unref(c.UidButton),{variant:"primary",disabled:e.unref(a).saving||e.unref(a).loading,loading:e.unref(a).saving,onClick:g},{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",Ca,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(6,y=>e.createVNode(e.unref(c.UidSkeleton),{key:y,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,(y,$)=>(e.openBlock(),e.createBlock(Q,{key:$,node:y},null,8,["node"]))),128))]),_:1})),e.unref(a).isDirty&&!e.unref(a).loading?(e.openBlock(),e.createElementBlock("div",xa,[m[4]||(m[4]=e.createElementVNode("span",{class:"admin-resource-form__savebar-hint"}," Есть несохранённые изменения ",-1)),e.createVNode(e.unref(c.UidButton),{variant:"ghost",size:"sm",onClick:k},{default:e.withCtx(()=>[...m[2]||(m[2]=[e.createTextVNode("Отмена",-1)])]),_:1}),e.createVNode(e.unref(c.UidButton),{variant:"primary",size:"sm",loading:e.unref(a).saving,disabled:e.unref(a).saving,onClick:g},{default:e.withCtx(()=>[...m[3]||(m[3]=[e.createTextVNode(" Сохранить ",-1)])]),_:1},8,["loading","disabled"])])):e.createCommentVNode("",!0)]))}}),Z=ge(),$a=Z.register,be=Z.get,Sa=Z.has,Ua=Z.list,Ta=Z.clear,ct=Z.registerBundle,dt=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}))}}),Fa={key:1,class:"admin-infolist-rows"},Da={key:2,class:"admin-infolist-cols"},Aa={key:3,class:"admin-infolist-section"},La={key:0,class:"admin-infolist-section__hd"},Ra={key:0,class:"admin-infolist-section__title"},Ma={key:1,class:"admin-infolist-section__description"},Pa={class:"admin-infolist-section__body"},Ia={key:4,class:"admin-infolist-tabs"},za={class:"admin-infolist-tabs__list",role:"tablist"},qa={class:"admin-infolist-tabs__panel"},ut=e.defineComponent({__name:"InfolistRenderer",props:{node:{}},setup(t){const n=t,a=new Set(["rows","columns","section","block","tabs"]),i=e.computed(()=>{if(n.node.kind==="entry"){const g=be(n.node.type);return g?{kind:"entry",component:g}:{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=be(n.node.type);return f?{kind:"entry",component:f}:{kind:"unknown"}}),o=e.computed(()=>{const{type:f,kind:g,items:h,attributes:k,...p}=n.node,m=k??{},{preset:y,format:$,currency:b,decimals:_,trueLabel:v,falseLabel:C,...S}=m,U={};return $!==void 0&&(U.format=$),b!==void 0&&(U.currency=b),_!==void 0&&(U.decimals=_),v!==void 0&&(U.trueLabel=v),C!==void 0&&(U.falseLabel=C),{...p,...S,preset:y,meta:U}}),l=e.computed(()=>n.node.items??[]),r=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,g)=>{const h=e.resolveComponent("InfolistRenderer",!0);return i.value.kind==="entry"?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(i.value.component),e.normalizeProps(e.mergeProps({key:0},o.value)),null,16)):i.value.kind==="layout"&&i.value.layoutType==="rows"?(e.openBlock(),e.createElementBlock("div",Fa,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.value,(k,p)=>(e.openBlock(),e.createBlock(h,{key:p,node:k},null,8,["node"]))),128))])):i.value.kind==="layout"&&i.value.layoutType==="columns"?(e.openBlock(),e.createElementBlock("div",Da,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.value,(k,p)=>(e.openBlock(),e.createElementBlock("div",{key:p,class:"admin-infolist-cols__item",style:e.normalizeStyle({gridColumn:`span ${typeof k.span=="number"?k.span:Math.max(1,Math.floor(12/l.value.length))}`})},[e.createVNode(h,{node:k},null,8,["node"])],4))),128))])):i.value.kind==="layout"&&(i.value.layoutType==="section"||i.value.layoutType==="block")?(e.openBlock(),e.createElementBlock("section",Aa,[r.value||s.value?(e.openBlock(),e.createElementBlock("header",La,[r.value?(e.openBlock(),e.createElementBlock("h3",Ra,e.toDisplayString(r.value),1)):e.createCommentVNode("",!0),s.value?(e.openBlock(),e.createElementBlock("p",Ma,e.toDisplayString(s.value),1)):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0),e.createElementVNode("div",Pa,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.value,(k,p)=>(e.openBlock(),e.createBlock(h,{key:p,node:k},null,8,["node"]))),128))])])):i.value.kind==="layout"&&i.value.layoutType==="tabs"?(e.openBlock(),e.createElementBlock("div",Ia,[e.createElementVNode("ul",za,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(u.value,(k,p)=>(e.openBlock(),e.createElementBlock("li",{key:k.key??p,class:e.normalizeClass(["admin-infolist-tabs__tab",{"admin-infolist-tabs__tab--active":p===d.value}])},e.toDisplayString(k.label),3))),128))]),e.createElementVNode("div",qa,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(u.value[d.value]?.items??[],(k,p)=>(e.openBlock(),e.createBlock(h,{key:p,node:k},null,8,["node"]))),128))])])):(e.openBlock(),e.createBlock(dt,{key:5,type:t.node.type,name:t.node.name},null,8,["type","name"]))}}}),Re=Symbol("admin.infolist-record");function mt(t){e.provide(Re,t)}function Oa(){const t=e.inject(Re);if(!t)throw new Error("useRecord() called outside of provideRecord() scope");return t}function ie(){return e.inject(Re,null)}const Wa={class:"admin-page admin-resource-view"},ja={class:"admin-page__hd"},Ka={class:"admin-page__title-wrap"},Ga={class:"admin-page__title"},Ha={class:"admin-page__actions"},Xa={key:1,class:"admin-resource-view__loading"},ft=e.defineComponent({__name:"ResourceViewPage",props:{slug:{},id:{},editRouteName:{default:void 0},indexRouteName:{default:"admin.home"}},setup(t){const n=t,a=Fe(),i=K(),o=R.useRouter();mt(a.state);const l=e.computed(()=>i.getResource(n.slug)),r=e.computed(()=>l.value?.infolist??l.value?.fields??[]),s=e.computed(()=>`${l.value?.label??n.slug}: запись #${n.id}`);e.onMounted(async()=>{i.manifest===null&&await i.load().catch(()=>{}),await a.load(n.slug,n.id,"view").catch(()=>{})}),e.watch(()=>[n.slug,n.id],async([f,g])=>{await a.load(f,g,"view").catch(()=>{})});function d(){if(!n.editRouteName){o.push(`/r/${n.slug}/${n.id}/edit`).catch(()=>{});return}o.push({name:n.editRouteName,params:{id:n.id}}).catch(()=>{})}async function u(){confirm("Удалить запись?")&&(await a.destroy().catch(()=>{}),a.hasError||o.push({name:n.indexRouteName}).catch(()=>{}))}return(f,g)=>(e.openBlock(),e.createElementBlock("section",Wa,[e.createElementVNode("header",ja,[e.createElementVNode("div",Ka,[e.createElementVNode("h1",Ga,e.toDisplayString(s.value),1)]),e.createElementVNode("div",Ha,[e.createVNode(e.unref(c.UidButton),{variant:"ghost",onClick:d},{default:e.withCtx(()=>[...g[0]||(g[0]=[e.createTextVNode("Редактировать",-1)])]),_:1}),e.createVNode(e.unref(c.UidButton),{variant:"danger",loading:e.unref(a).deleting,disabled:e.unref(a).deleting,onClick:u},{default:e.withCtx(()=>[...g[1]||(g[1]=[e.createTextVNode(" Удалить ",-1)])]),_:1},8,["loading","disabled"])])]),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",Xa,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(8,h=>e.createVNode(e.unref(c.UidSkeleton),{key:h,height:"24px"})),64))])):(e.openBlock(),e.createBlock(e.unref(c.UidCard),{key:2,padding:"md",class:"admin-resource-view__body"},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.value,(h,k)=>(e.openBlock(),e.createBlock(ut,{key:k,node:h},null,8,["node"]))),128))]),_:1}))]))}}),Ya={class:"admin-page admin-profile"},Ja={class:"admin-page__hd"},Qa={class:"admin-page__title-wrap"},Za={class:"admin-page__title"},eo={class:"admin-page__count"},to={class:"admin-profile__layout"},no={class:"admin-profile__nav","aria-label":"Profile sections"},ao=["onClick"],oo=["data-icon"],lo={class:"admin-profile__content"},ro={class:"admin-profile__hero"},io={class:"admin-profile__hero-text"},so={class:"admin-profile__hero-name"},co={class:"admin-profile__hero-meta"},uo={class:"admin-profile__form"},mo={class:"admin-profile__card-ft"},fo={class:"admin-profile__card-hd"},po={key:0,class:"admin-profile__hint"},go={key:1,class:"admin-profile__hint"},vo={class:"admin-profile__card-ft"},ho={class:"admin-profile__hint"},pt=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,i=n,o=I(),l=me(),r=fe(),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,i("update:section",b)}const f=e.ref({name:o.user?.name??"",email:o.user?.email??"",locale:r.current,theme:l.current}),g=e.computed(()=>r.available.map(b=>({value:b,label:b.toUpperCase()}))),h=e.computed(()=>l.available.map(b=>({value:b,label:b==="dark"?"Тёмная":b==="light"?"Светлая":b})));e.watch(()=>f.value.locale,(b,_)=>{b===_||!b||r.setLocale(b).catch(()=>{})}),e.watch(()=>f.value.theme,(b,_)=>{b===_||!b||l.setTheme(b).catch(()=>{})});function k(){i("save",{...f.value})}function p(){i("avatar-replace")}function m(){i("two-factor-disable")}function y(){i("two-factor-regenerate")}const $=e.computed(()=>!!o.user?.twoFactorEnabled);return(b,_)=>(e.openBlock(),e.createElementBlock("section",Ya,[e.createElementVNode("header",Ja,[e.createElementVNode("div",Qa,[e.createElementVNode("h1",Za,e.toDisplayString(t.title),1),e.createElementVNode("div",eo,e.toDisplayString(t.subtitle),1)])]),e.createElementVNode("div",to,[e.createElementVNode("nav",no,[(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:C=>u(v.id)},[e.createElementVNode("span",{class:"admin-profile__nav-icon","data-icon":v.icon},null,8,oo),e.createElementVNode("span",null,e.toDisplayString(v.label),1)],10,ao)),64))]),e.createElementVNode("div",lo,[d.value==="general"?(e.openBlock(),e.createBlock(e.unref(c.UidCard),{key:0,padding:"md"},{default:e.withCtx(()=>[_[7]||(_[7]=e.createElementVNode("header",{class:"admin-profile__card-hd"},[e.createElementVNode("h3",{class:"admin-profile__card-title"},"Профиль")],-1)),e.createElementVNode("div",ro,[e.createVNode(e.unref(c.UidAvatar),{src:e.unref(o).user?.avatar??void 0,name:e.unref(o).user?.name??"?",size:"lg"},null,8,["src","name"]),e.createElementVNode("div",io,[e.createElementVNode("div",so,e.toDisplayString(e.unref(o).user?.name??"—"),1),e.createElementVNode("div",co,e.toDisplayString(e.unref(o).user?.email??"—"),1)]),_[5]||(_[5]=e.createElementVNode("div",{style:{flex:"1"}},null,-1)),e.createVNode(e.unref(c.UidButton),{variant:"ghost",size:"sm",onClick:p},{default:e.withCtx(()=>[..._[4]||(_[4]=[e.createTextVNode(" Заменить ",-1)])]),_:1})]),e.createElementVNode("div",uo,[e.createVNode(e.unref(c.UidInput),{modelValue:f.value.name,"onUpdate:modelValue":_[0]||(_[0]=v=>f.value.name=v),label:"Имя",name:"name"},null,8,["modelValue"]),e.createVNode(e.unref(c.UidInput),{modelValue:f.value.email,"onUpdate:modelValue":_[1]||(_[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":_[2]||(_[2]=v=>f.value.locale=v),options:g.value,label:"Язык"},null,8,["modelValue","options"]),e.createVNode(e.unref(c.UidSelect),{modelValue:f.value.theme,"onUpdate:modelValue":_[3]||(_[3]=v=>f.value.theme=v),options:h.value,label:"Тема"},null,8,["modelValue","options"])]),e.createElementVNode("footer",mo,[e.createVNode(e.unref(c.UidButton),{variant:"primary",onClick:k},{default:e.withCtx(()=>[..._[6]||(_[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",fo,[_[8]||(_[8]=e.createElementVNode("h3",{class:"admin-profile__card-title"},"Двухфакторная аутентификация",-1)),e.createVNode(e.unref(c.UidBadge),{variant:$.value?"success":"default"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString($.value?"Включена":"Отключена"),1)]),_:1},8,["variant"])]),$.value?(e.openBlock(),e.createElementBlock("p",po," 2FA включена. У вас остались recovery-коды на случай потери устройства. ")):(e.openBlock(),e.createElementBlock("p",go," Включите 2FA для дополнительной защиты аккаунта. ")),e.createElementVNode("footer",vo,[$.value?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createVNode(e.unref(c.UidButton),{variant:"ghost",size:"sm",onClick:y},{default:e.withCtx(()=>[..._[9]||(_[9]=[e.createTextVNode(" Перегенерировать коды ",-1)])]),_:1}),e.createVNode(e.unref(c.UidButton),{variant:"danger",size:"sm",onClick:m},{default:e.withCtx(()=>[..._[10]||(_[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(()=>[..._[11]||(_[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",ho," Section «"+e.toDisplayString(d.value)+"» не реализована библиотекой — host-проект подключает её через slot "+e.toDisplayString(d.value)+". ",1)]),_:1})])])])]))}}),ee=ge(),ko=ee.register,gt=ee.get,yo=ee.has,_o=ee.list,Bo=ee.clear,vt=ee.registerBundle,ht=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}))}}),kt=e.defineComponent({__name:"WidgetRenderer",props:{node:{}},setup(t){const n=t,a=e.computed(()=>gt(n.node.type)),i=e.computed(()=>{const{type:o,span:l,...r}=n.node;return r});return(o,l)=>a.value?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(a.value),e.normalizeProps(e.mergeProps({key:0},i.value)),null,16)):(e.openBlock(),e.createBlock(ht,{key:1,type:t.node.type},null,8,["type"]))}}),bo={class:"admin-page admin-dashboard"},wo={class:"admin-page__hd"},No={class:"admin-page__title-wrap"},Eo={class:"admin-page__title"},Vo={key:0,class:"admin-page__count"},Co={class:"admin-page__actions"},xo={class:"admin-dashboard__grid"},yt=e.defineComponent({__name:"DashboardPage",props:{slug:{default:void 0},widgets:{default:void 0},title:{default:void 0},subtitle:{default:void 0}},setup(t){const n=t,a=K(),i=e.computed(()=>!n.slug||!a.manifest?null:a.manifest.dashboards?.find(u=>u.slug===n.slug)??null),o=e.computed(()=>n.widgets?n.widgets:i.value?i.value.widgets??[]:[]),l=e.computed(()=>n.title??i.value?.label??"Dashboard"),r=e.computed(()=>n.subtitle??i.value?.description??null);function s(d){const u=typeof d.span=="number"?d.span:12;return Math.max(1,Math.min(12,u))}return(d,u)=>(e.openBlock(),e.createElementBlock("section",bo,[e.createElementVNode("header",wo,[e.createElementVNode("div",No,[e.createElementVNode("h1",Eo,e.toDisplayString(l.value),1),r.value?(e.openBlock(),e.createElementBlock("div",Vo,e.toDisplayString(r.value),1)):e.createCommentVNode("",!0)]),e.createElementVNode("div",Co,[e.renderSlot(d.$slots,"actions")])]),e.createElementVNode("div",xo,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.value,(f,g)=>(e.openBlock(),e.createElementBlock("div",{key:g,class:"admin-dashboard__cell",style:e.normalizeStyle({gridColumn:`span ${s(f)} / span ${s(f)}`})},[e.createVNode(kt,{node:f},null,8,["node"])],4))),128))])]))}}),_t=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"},i=e.computed(()=>a[n.tone]);return(o,l)=>(e.openBlock(),e.createBlock(e.unref(c.UidStat),{title:t.title,value:t.value,prefix:t.prefix,suffix:t.suffix,trend:t.trend,precision:t.precision,tone:i.value,loading:t.loading},null,8,["title","value","prefix","suffix","trend","precision","tone","loading"]))}}),$o={key:0,class:"admin-widget__hd"},So={key:0,class:"admin-widget__title"},Uo={key:1,class:"admin-widget__desc"},To=["viewBox","height","aria-label"],Fo=["x","y","width","height","fill","data-label","data-value"],Bt=e.defineComponent({__name:"BarChartWidget",props:{title:{default:""},description:{default:""},data:{},accent:{default:"var(--uid-accent)"},height:{default:200}},setup(t){const n=t,a=e.computed(()=>Math.max(1,...n.data.map(o=>o.value))),i=e.computed(()=>{const l=100/Math.max(1,n.data.length);return n.data.map((r,s)=>({label:r.label,value:r.value,x:s*l+l*.1,width:l*.8,heightPct:r.value/a.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",$o,[t.title?(e.openBlock(),e.createElementBlock("h3",So,e.toDisplayString(t.title),1)):e.createCommentVNode("",!0),t.description?(e.openBlock(),e.createElementBlock("p",Uo,e.toDisplayString(t.description),1)):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0),(e.openBlock(),e.createElementBlock("svg",{class:"admin-widget-bar-chart",viewBox:`0 0 100 ${t.height}`,preserveAspectRatio:"none",height:t.height,width:"100%",role:"img","aria-label":t.title||"Bar chart"},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(i.value,(r,s)=>(e.openBlock(),e.createElementBlock("rect",{key:s,x:r.x,y:t.height-r.heightPct/100*t.height,width:r.width,height:r.heightPct/100*t.height,fill:t.accent,rx:"1","data-label":r.label,"data-value":r.value},[e.createElementVNode("title",null,e.toDisplayString(r.label)+": "+e.toDisplayString(r.value),1)],8,Fo))),128))],8,To))]),_:1}))}}),Do={key:0,class:"admin-widget__hd"},Ao={class:"admin-widget__title"},Lo={class:"admin-donut-widget__row"},Ro=["aria-label"],Mo=["d","fill"],Po={class:"admin-donut-widget__legend"},Io={class:"admin-donut-widget__label"},zo={class:"admin-donut-widget__value"},bt=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)"],i=e.computed(()=>n.data.reduce((l,r)=>l+r.value,0)||1),o=e.computed(()=>{let l=0;return n.data.map((r,s)=>{const d=l/i.value*2*Math.PI;l+=r.value;const u=l/i.value*2*Math.PI,f=50,g=60,h=60,k=g+f*Math.cos(d-Math.PI/2),p=h+f*Math.sin(d-Math.PI/2),m=g+f*Math.cos(u-Math.PI/2),y=h+f*Math.sin(u-Math.PI/2),$=u-d>Math.PI?1:0,b=n.data.length===1?`M ${g-f} ${h} a ${f} ${f} 0 1 0 ${f*2} 0 a ${f} ${f} 0 1 0 ${-f*2} 0`:`M ${g} ${h} L ${k} ${p} A ${f} ${f} 0 ${$} 1 ${m} ${y} Z`;return{...r,path:b,color:r.color??a[s%a.length],pct:(r.value/i.value*100).toFixed(1)}})});return(l,r)=>(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",Do,[e.createElementVNode("h3",Ao,e.toDisplayString(t.title),1)])):e.createCommentVNode("",!0),e.createElementVNode("div",Lo,[(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,(s,d)=>(e.openBlock(),e.createElementBlock("path",{key:d,d:s.path,fill:s.color},[e.createElementVNode("title",null,e.toDisplayString(s.label)+": "+e.toDisplayString(s.value)+" ("+e.toDisplayString(s.pct)+"%)",1)],8,Mo))),128)),r[0]||(r[0]=e.createElementVNode("circle",{cx:"60",cy:"60",r:"30",fill:"var(--uid-surface-raised)"},null,-1))],8,Ro)),e.createElementVNode("ul",Po,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.value,(s,d)=>(e.openBlock(),e.createElementBlock("li",{key:d},[e.createElementVNode("span",{class:"admin-donut-widget__dot",style:e.normalizeStyle({background:s.color})},null,4),e.createElementVNode("span",Io,e.toDisplayString(s.label),1),e.createElementVNode("span",zo,e.toDisplayString(s.pct)+"%",1)]))),128))])])]),_:1}))}}),qo={key:0,class:"admin-widget__hd"},Oo={class:"admin-widget__title"},wt=e.defineComponent({__name:"RecentTableWidget",props:{title:{default:""},columns:{},rows:{},emptyText:{default:"Нет данных"}},setup(t){return(n,a)=>(e.openBlock(),e.createBlock(e.unref(c.UidCard),{padding:"md",class:"admin-widget"},{default:e.withCtx(()=>[t.title?(e.openBlock(),e.createElementBlock("header",qo,[e.createElementVNode("h3",Oo,e.toDisplayString(t.title),1)])):e.createCommentVNode("",!0),e.createVNode(e.unref(c.UidTable),{columns:t.columns,data:t.rows,"empty-text":t.emptyText},null,8,["columns","data","empty-text"])]),_:1}))}}),Wo={key:0,class:"admin-widget__hd"},jo={class:"admin-widget__title"},Nt=e.defineComponent({__name:"HeatmapWidget",props:{title:{default:""},data:{},levels:{default:5},color:{default:void 0},gap:{default:2}},setup(t){return(n,a)=>(e.openBlock(),e.createBlock(e.unref(c.UidCard),{padding:"md",class:"admin-widget"},{default:e.withCtx(()=>[t.title?(e.openBlock(),e.createElementBlock("header",Wo,[e.createElementVNode("h3",jo,e.toDisplayString(t.title),1)])):e.createCommentVNode("",!0),e.createVNode(e.unref(c.UidHeatmap),{data:t.data,levels:t.levels,color:t.color,gap:t.gap},null,8,["data","levels","color","gap"])]),_:1}))}}),Ko={key:0,class:"admin-widget__hd"},Go={class:"admin-widget__title"},Ho={style:{display:"flex","justify-content":"center"}},Et=e.defineComponent({__name:"GaugeWidget",props:{title:{default:""},value:{default:0},min:{default:0},max:{default:100},size:{default:160},ranges:{default:()=>[]},tone:{default:"neutral"},color:{default:void 0},label:{default:""},suffix:{default:""},precision:{default:0}},setup(t){const n=t,a={neutral:"primary",positive:"success",warning:"warning",negative:"danger"},i=e.computed(()=>a[n.tone]);return(o,l)=>(e.openBlock(),e.createBlock(e.unref(c.UidCard),{padding:"md",class:"admin-widget"},{default:e.withCtx(()=>[t.title?(e.openBlock(),e.createElementBlock("header",Ko,[e.createElementVNode("h3",Go,e.toDisplayString(t.title),1)])):e.createCommentVNode("",!0),e.createElementVNode("div",Ho,[e.createVNode(e.unref(c.UidGauge),{value:t.value,min:t.min,max:t.max,size:t.size,ranges:t.ranges,tone:i.value,color:t.color,label:t.label,suffix:t.suffix,precision:t.precision},null,8,["value","min","max","size","ranges","tone","color","label","suffix","precision"])])]),_:1}))}}),Xo={key:0,class:"admin-widget__hd"},Yo={class:"admin-widget__title"},Jo={class:"admin-markdown-widget"},Vt=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",Xo,[e.createElementVNode("h3",Yo,e.toDisplayString(t.title),1)])):e.createCommentVNode("",!0),e.createElementVNode("div",Jo,e.toDisplayString(t.content),1)]),_:1}))}});function Ct(){vt({stat:_t,"bar-chart":Bt,"donut-chart":bt,"recent-table":wt,heatmap:Nt,gauge:Et,markdown:Vt})}function xt(t){return t.success===!0}function Qo(t){return t.success===!1}function $t(t){const n=Ot.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(o=>{const l=Zo("XSRF-TOKEN");return l&&o.headers.set("X-XSRF-TOKEN",decodeURIComponent(l)),o}),n.interceptors.response.use(o=>{const l=o.data;if(l&&typeof l=="object"&&"success"in l){if(xt(l))return o.data=l.payload,o;throw ye(o.status,l.payload)}return o},o=>{if(o.response){const l=o.response.status,r=o.response.data?.payload??{errorKey:"unknown",message:o.message},s=ye(l,r);return s instanceof xe&&t.onUnauthenticated?.(),Promise.reject(s)}return Promise.reject(new re(o.message))});const a=(o,l,r)=>n[o](l,r).then(s=>s.data),i=(o,l,r,s)=>n[o](l,r,s).then(d=>d.data);return{raw:n,get:(o,l)=>a("get",o,l),delete:(o,l)=>a("delete",o,l),post:(o,l,r)=>i("post",o,l,r),put:(o,l,r)=>i("put",o,l,r),patch:(o,l,r)=>i("patch",o,l,r),setLocale:o=>{n.defaults.headers.common["X-Admin-Locale"]=o}}}function Zo(t){if(typeof document>"u")return null;const n=document.cookie.match(new RegExp("(^|; )"+el(t)+"=([^;]*)"));return n?n[2]:null}function el(t){return t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function de(t,n){const a=t.permissions?.[n];return typeof a=="string"&&a.length>0?[a]:[]}function tl(t,n){const a=t.permissions?.[n];return typeof a=="string"&&a.length>0?[a]:[]}function nl(t){return Array.isArray(t.permission)?t.permission:typeof t.permission=="string"&&t.permission.length>0?[t.permission]:[]}function al(t,n){const a=t.slug,i=`/r/${a}`;return[{path:i,name:`admin.resource.${a}.index`,component:n.resourceIndex,meta:{requiresAuth:!0,kind:"resource",slug:a,title:t.label,permissions:de(t,"view")},props:{slug:a}},{path:`${i}/create`,name:`admin.resource.${a}.create`,component:n.resourceCreate,meta:{requiresAuth:!0,kind:"resource",slug:a,title:`${t.label}: создать`,permissions:de(t,"create")},props:{slug:a}},{path:`${i}/:id/edit`,name:`admin.resource.${a}.edit`,component:n.resourceEdit,meta:{requiresAuth:!0,kind:"resource",slug:a,title:`${t.label}: редактирование`,permissions:de(t,"update")},props:o=>({slug:a,id:o.params.id})},{path:`${i}/:id`,name:`admin.resource.${a}.view`,component:n.resourceView,meta:{requiresAuth:!0,kind:"resource",slug:a,title:t.label,permissions:de(t,"view")},props:o=>({slug:a,id:o.params.id})}]}function ol(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:nl(t)}}}function ll(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:tl(t,"view")}}}function rl(t,n){if(typeof t.slug!="string"||t.slug.length===0)return null;const a=t.permission,i=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:i}}}function St(t,n){if(t===null)return[];const a=[];for(const i of t.resources)a.push(...al(i,n));for(const i of t.screens)a.push(ol(i,n));for(const i of t.settings)a.push(ll(i,n));for(const i of t.dashboards){const o=rl(i,n);o&&a.push(o)}return a}function Ut(t={}){const n=t.loginRouteName??"admin.login",a=t.forbiddenRouteName??"admin.forbidden",i=t.redirectQueryKey??"redirect";return o=>{if(o.name===n)return!0;const l=I();if(o.meta?.requiresAuth===!0&&!l.isAuthenticated)return{name:n,query:{[i]:o.fullPath}};if(l.isChallengePending)return{name:n,query:{[i]:o.fullPath}};const s=o.meta?.permissions;return Array.isArray(s)&&s.length>0&&!l.hasAnyPermission(s)?{name:a}:!0}}function Tt(t={}){const n=t.template,a=t.brand??"",i=t.fallback??"";return o=>{if(typeof document>"u")return;const l=o.meta?.title??i;let r;n?r=n.replace("{title}",l).replace("{brand}",a):l&&a?r=`${l} · ${a}`:r=l||a,document.title=r}}const il=["admin.resource.","admin.screen.","admin.settings.","admin.dashboard."];function sl(t){return typeof t!="string"?!1:il.some(n=>t.startsWith(n))}function Ft(t){const n=t.base??"/admin",a=t.history??R.createWebHistory(n),i=[{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&&i.push({path:"/profile",name:"admin.profile",component:t.components.profile,meta:{requiresAuth:!0,kind:"system",title:"Профиль"}}),t.components.notifications&&i.push({path:"/notifications",name:"admin.notifications",component:t.components.notifications,meta:{requiresAuth:!0,kind:"system",title:"Уведомления"}});const o={path:"/:pathMatch(.*)*",name:"admin.notFound",component:t.components.notFound,meta:{kind:"system",title:"404"}},l=R.createRouter({history:a,routes:[...i,...t.extraRoutes??[],o]});return l.beforeEach(Ut(t.authGuard)),l.afterEach(Tt(t.titleGuard)),l.replaceManifestRoutes=r=>{const s=l.getRoutes();for(const u of s)sl(u.name)&&l.removeRoute(u.name);l.hasRoute("admin.notFound")&&l.removeRoute("admin.notFound");const d=St(r,t.components);for(const u of d)l.addRoute(u);l.addRoute(o)},l}const P=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=z.useFormState(),i=e.computed(()=>a.getField(n.name)??""),o=e.computed(()=>a.errors[n.name]?.[0]);function l(r){a.setField(n.name,r)}return(r,s)=>(e.openBlock(),e.createBlock(e.unref(c.UidInput),{"model-value":i.value,type:t.inputType,label:t.label??void 0,hint:t.help??void 0,error:o.value,placeholder:t.placeholder??void 0,required:t.required,disabled:t.disabled,readonly:t.readonly,name:t.name,autocomplete:t.autocomplete??void 0,"onUpdate:modelValue":l},null,8,["model-value","type","label","hint","error","placeholder","required","disabled","readonly","name","autocomplete"]))}}),ne=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=z.useFormState(),i=e.computed(()=>a.getField(n.name)??""),o=e.computed(()=>a.errors[n.name]?.[0]);function l(r){a.setField(n.name,r)}return(r,s)=>(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:t.disabled},{default:e.withCtx(()=>[e.createVNode(e.unref(c.UidTextarea),{"model-value":i.value,rows:t.rows,placeholder:t.placeholder??void 0,disabled:t.disabled,readonly:t.readonly,name:t.name,"onUpdate:modelValue":l},null,8,["model-value","rows","placeholder","disabled","readonly","name"])]),_:1},8,["label","hint","error","required","disabled"]))}}),ue=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=z.useFormState(),i=e.computed(()=>{const r=a.getField(n.name);return r==null||r===""?null:typeof r=="number"?r:Number(r)}),o=e.computed(()=>a.errors[n.name]?.[0]);function l(r){a.setField(n.name,r)}return(r,s)=>(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:t.disabled},{default:e.withCtx(()=>[e.createVNode(e.unref(c.UidNumberInput),{"model-value":i.value,min:t.min??void 0,max:t.max??void 0,step:t.step??void 0,placeholder:t.placeholder??void 0,disabled:t.disabled,readonly:t.readonly,name:t.name,"onUpdate:modelValue":l},null,8,["model-value","min","max","step","placeholder","disabled","readonly","name"])]),_:1},8,["label","hint","error","required","disabled"]))}}),j=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=z.useFormState(),i=e.computed(()=>{const r=a.getField(n.name);return r==null||r===""?null:r}),o=e.computed(()=>a.errors[n.name]?.[0]);function l(r){a.setField(n.name,r)}return(r,s)=>(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:t.disabled},{default:e.withCtx(()=>[e.createVNode(e.unref(c.UidSelect),{"model-value":i.value,options:t.options,placeholder:t.placeholder??void 0,disabled:t.disabled,searchable:t.searchable,clearable:t.clearable,size:t.size,"onUpdate:modelValue":l},null,8,["model-value","options","placeholder","disabled","searchable","clearable","size"])]),_:1},8,["label","hint","error","required","disabled"]))}}),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=z.useFormState(),i=e.computed(()=>!!a.getField(n.name)),o=e.computed(()=>a.errors[n.name]?.[0]);function l(r){a.setField(n.name,r)}return(r,s)=>(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:t.disabled},{default:e.withCtx(()=>[e.createVNode(e.unref(c.UidCheckbox),{"model-value":i.value,disabled:t.disabled,name:t.name,"onUpdate:modelValue":l},{default:e.withCtx(()=>[t.inlineLabel?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createTextVNode(e.toDisplayString(t.inlineLabel),1)],64)):e.createCommentVNode("",!0)]),_:1},8,["model-value","disabled","name"])]),_:1},8,["label","hint","error","required","disabled"]))}}),G=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=z.useFormState(),i=e.computed(()=>{const r=a.getField(n.name);return r==null||r===""?null:String(r)}),o=e.computed(()=>a.errors[n.name]?.[0]);function l(r){a.setField(n.name,r)}return(r,s)=>(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:t.disabled},{default:e.withCtx(()=>[e.createVNode(e.unref(c.UidDatePicker),{"model-value":i.value,min:t.min??void 0,max:t.max??void 0,disabled:t.disabled,name:t.name,"onUpdate:modelValue":l},null,8,["model-value","min","max","disabled","name"])]),_:1},8,["label","hint","error","required","disabled"]))}}),we=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,(i,o)=>(e.openBlock(),e.createBlock(Q,{key:o,node:i},null,8,["node"]))),128))]),_:1},8,["gap"]))}}),Dt=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 i(o){const l=o.span;return typeof l=="number"&&l>0?Math.min(l,n.cols):a.value}return(o,l)=>(e.openBlock(),e.createBlock(e.unref(c.UidGrid),{cols:t.cols,gap:t.gap},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.items,(r,s)=>(e.openBlock(),e.createElementBlock("div",{key:s,class:"admin-columns__item",style:e.normalizeStyle({gridColumn:`span ${i(r)} / span ${i(r)}`})},[e.createVNode(Q,{node:r},null,8,["node"])],4))),128))]),_:1},8,["cols","gap"]))}}),cl={key:0,class:"admin-section__header"},dl={key:0,class:"admin-section__title"},ul={key:1,class:"admin-section__description"},ml={class:"admin-section__body"},X=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",cl,[t.title?(e.openBlock(),e.createElementBlock("h3",dl,e.toDisplayString(t.title),1)):e.createCommentVNode("",!0),t.description?(e.openBlock(),e.createElementBlock("p",ul,e.toDisplayString(t.description),1)):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0),e.createElementVNode("div",ml,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.items,(i,o)=>(e.openBlock(),e.createBlock(Q,{key:o,node:i},null,8,["node"]))),128))])]),_:1}))}}),At=e.defineComponent({__name:"TabsLayout",props:{items:{},active:{default:0}},emits:["update:active"],setup(t,{emit:n}){const a=t,i=n;function o(s,d){return s.key??d}const l=e.ref(a.active??o(a.items[0]??{},0));function r(s){l.value=s,i("update:active",s)}return(s,d)=>(e.openBlock(),e.createBlock(e.unref(c.UidTabs),{"model-value":l.value,"onUpdate:modelValue":r},{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:o(u,f),value:o(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-${o(u,f)}`,value:o(u,f)},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(u.items,(g,h)=>(e.openBlock(),e.createBlock(Q,{key:h,node:g},null,8,["node"]))),128))]),_:2},1032,["value"]))),128))]),_:1},8,["model-value"]))}});function Lt(){st({fields:{input:P,text:P,email:P,url:P,password:P,tel:P,search:P,slug:P,hidden:P,label:P,textarea:ne,wysiwyg:ne,markdown:ne,code:ne,number:ue,slider:ue,rating:ue,select:j,combobox:j,radio:j,tags:j,"morph-switcher":j,relation:j,cascader:j,"tree-select":j,checkbox:ae,switch:ae,switcher:ae,boolean:ae,date:G,datetime:G,datepicker:G,"date-range":G,time:G,"time-picker":G,"color-picker":P},layouts:{rows:we,columns:Dt,section:X,block:X,tabs:At,accordion:X,group:we,step:X,wizard:X}})}const fl={key:0,class:"admin-infolist-entry"},pl={class:"admin-infolist-entry__label"},V=e.defineComponent({__name:"TextEntry",props:{name:{default:""},label:{default:""},value:{default:void 0},placeholder:{default:"—"},mono:{type:Boolean,default:!1},preset:{default:void 0},meta:{default:()=>({})}},setup(t){const n=t,a=ie(),i=e.computed(()=>{let l=n.value;if(l===void 0&&a&&n.name&&(l=a[n.name]),l==null||l==="")return n.placeholder;const r=rt(l,n.preset,n.meta);return r===""?n.placeholder:r}),o=e.computed(()=>!!n.label);return(l,r)=>o.value?(e.openBlock(),e.createElementBlock("div",fl,[e.createElementVNode("span",pl,e.toDisplayString(t.label),1),e.createElementVNode("span",{class:e.normalizeClass(["admin-infolist-entry__value",t.mono?"admin-infolist-entry__value--mono":""])},e.toDisplayString(i.value),3)])):(e.openBlock(),e.createElementBlock("span",{key:1,class:e.normalizeClass(["admin-infolist-text",t.mono?"admin-infolist-text--mono":""])},e.toDisplayString(i.value),3))}}),gl={key:1,class:"admin-infolist-text"},Rt=e.defineComponent({__name:"BadgeEntry",props:{name:{default:""},label:{default:""},value:{default:void 0},map:{default:()=>({})},variant:{default:void 0}},setup(t){const n=t,a=ie(),i=e.computed(()=>{let l=n.value;return l===void 0&&a&&n.name&&(l=a[n.name]),l==null?"":String(l)}),o=e.computed(()=>n.variant?n.variant:n.map[i.value]??"default");return(l,r)=>i.value?(e.openBlock(),e.createBlock(e.unref(c.UidBadge),{key:0,variant:o.value},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(i.value),1)]),_:1},8,["variant"])):(e.openBlock(),e.createElementBlock("span",gl,"—"))}}),vl=["data-icon"],hl={key:0},Mt=e.defineComponent({__name:"IconEntry",props:{name:{default:""},label:{default:""},value:{type:[Boolean,null],default:void 0},trueIcon:{default:"check-circle-2"},falseIcon:{default:"circle"},trueLabel:{default:""},falseLabel:{default:""}},setup(t){const n=t,a=ie(),i=e.computed(()=>{let r=n.value;return r===void 0&&a&&n.name&&(r=a[n.name]),!!r}),o=e.computed(()=>i.value?n.trueLabel:n.falseLabel),l=e.computed(()=>i.value?n.trueIcon:n.falseIcon);return(r,s)=>(e.openBlock(),e.createElementBlock("span",{class:e.normalizeClass(["admin-infolist-icon",i.value?"admin-infolist-icon--on":"admin-infolist-icon--off"])},[e.createElementVNode("span",{class:"admin-infolist-icon__glyph","data-icon":l.value},null,8,vl),o.value?(e.openBlock(),e.createElementBlock("span",hl,e.toDisplayString(o.value),1)):e.createCommentVNode("",!0)],2))}}),kl={key:1,class:"admin-infolist-text"},Ne=e.defineComponent({__name:"KeyValueEntry",props:{name:{default:""},label:{default:""},value:{default:void 0}},setup(t){const n=t,a=ie(),i=e.computed(()=>{let l=n.value;return l===void 0&&a&&n.name&&(l=a[n.name]),l==null?[]:typeof l!="object"?[]:Object.entries(l)});function o(l){return l==null?"—":typeof l=="object"?JSON.stringify(l):String(l)}return(l,r)=>i.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(i.value,([s,d])=>(e.openBlock(),e.createBlock(e.unref(c.UidDescriptionItem),{key:s,label:s},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(o(d)),1)]),_:2},1032,["label"]))),128))]),_:1})):(e.openBlock(),e.createElementBlock("span",kl,"—"))}});function Pt(){ct({text:V,badge:Rt,icon:Mt,keyvalue:Ne,"key-value":Ne,input:V,email:V,url:V,password:V,tel:V,search:V,slug:V,hidden:V,label:V,textarea:V,wysiwyg:V,markdown:V,code:V,number:V,slider:V,rating:V,select:V,combobox:V,radio:V,tags:V,"morph-switcher":V,relation:V,cascader:V,"tree-select":V,checkbox:V,switch:V,switcher:V,boolean:V,date:V,datetime:V,datepicker:V,"date-range":V,time:V,"time-picker":V,"color-picker":V})}function yl(t,n={}){const a=n.pages??{},i=n.base??_l(t.baseUrl)??"/admin",o=$t({baseURL:t.apiUrl,csrfToken:t.csrf});Ee(o);const l=e.createApp(Je),r=O.createPinia();l.use(r),I().hydrate(t),fe().hydrate(t),me().hydrate(t),pe().hydrate(t),Lt(),Ct(),Pt();const s=Ft({base:i,history:n.router?.history??R.createWebHistory(i),components:{login:a.login??lt,home:a.home??Qe,forbidden:a.forbidden??Ze,notFound:a.notFound??et,profile:a.profile??pt,resourceIndex:a.resourceIndex??it,resourceCreate:a.resourceCreate??Be,resourceEdit:a.resourceEdit??Be,resourceView:a.resourceView??ft,dashboard:a.dashboard??yt,settings:a.settings??tt,screen:a.screen??nt},extraRoutes:n.router?.extraRoutes,authGuard:n.router?.authGuard,titleGuard:n.router?.titleGuard});l.use(s);const d=Se();if(s.beforeEach((u,f,g)=>{u.fullPath!==f.fullPath&&d.start(),g()}),s.afterEach(()=>{d.end()}),s.onError(()=>{d.end()}),s.beforeResolve(async(u,f,g)=>{const h=typeof u.name=="string"?u.name:null;if(h&&h.startsWith("admin.resource.")&&h.endsWith(".index")){const k=u.params.slug??u.meta.slug;if(k)try{const{useResourceIndexStore:p}=await Promise.resolve().then(()=>Kn),m=p();(m.slug!==k||m.items.length===0)&&(m.setSlug(k),await m.load().catch(()=>{}))}catch{}}g()}),!n.skipManifestLoad){const u=K(),f=I(),g=$e(),h=()=>{g.load().catch(()=>{}),u.load().then(k=>{s.replaceManifestRoutes(k);const p=s.currentRoute.value;p.name==="admin.notFound"&&p.fullPath!=="/"&&s.replace(p.fullPath)}).catch(k=>{typeof console<"u"&&console.error("[laravel-admin] manifest load failed:",k)})};f.isAuthenticated&&h(),e.watch(()=>f.user,(k,p)=>{k&&!p&&h()})}return n.onAppCreated?.(l),{app:l,router:s,client:o}}function _l(t){if(!t)return null;try{return new URL(t).pathname||"/admin"}catch{return t.startsWith("/")?t:null}}async function Bl(t={}){const n=It();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 It(){return typeof window>"u"?null:window.__ADMIN_BOOTSTRAP__??null}function bl(){return typeof document>"u"?null:document.querySelector('meta[name="csrf-token"]')?.getAttribute("content")??null}const wl={class:"admin-notifs__hd"},Nl={class:"admin-notifs__title"},El={key:0,class:"admin-notifs__count"},Vl={class:"admin-notifs__list"},Cl={key:0,class:"admin-notifs__empty"},xl={key:1,class:"admin-notifs__empty"},$l=["onClick"],Sl=["data-kind"],Ul={class:"admin-notifs__body"},Tl={class:"admin-notifs__row1"},Fl={key:0,class:"admin-notifs__title-strong"},Dl={key:1,class:"admin-notifs__title-soft"},Al={class:"admin-notifs__time"},Ll={key:0,class:"admin-notifs__text"},Rl=["onClick"],Ml=e.defineComponent({__name:"NotificationsDrawer",props:{open:{type:Boolean}},emits:["update:open","select-item"],setup(t,{emit:n}){const a=t,i=n,o=pe();function l(m){i("update:open",m)}e.watch(()=>a.open,async m=>{m&&await o.load(o.lastFilter??"all",1).catch(()=>{})},{immediate:!0});const r=e.computed(()=>o.lastFilter??"all");async function s(m){await o.load(m,1).catch(()=>{})}async function d(){await o.markAllAsRead().catch(()=>{})}async function u(m){i("select-item",m),m.read_at||await o.markAsRead(m.id).catch(()=>{})}async function f(m,y){y.stopPropagation(),await o.destroy(m.id).catch(()=>{})}function g(m){const y=m.data.level;return y==="success"||y==="warning"||y==="danger"?y:"info"}function h(m){return m.data.title??"—"}function k(m){return m.data.body??""}function p(m){if(!m)return"";const y=new Date(m),$=Math.max(0,Date.now()-y.getTime()),b=Math.floor($/6e4);if(b<1)return"только что";if(b<60)return`${b} мин назад`;const _=Math.floor(b/60);if(_<24)return`${_} ч назад`;const v=Math.floor(_/24);return v<7?`${v} д назад`:y.toLocaleDateString("ru-RU")}return(m,y)=>(e.openBlock(),e.createBlock(e.unref(c.UidDrawer),{"model-value":t.open,side:"right",width:"400px",title:"Уведомления","onUpdate:modelValue":l},{header:e.withCtx(()=>[e.createElementVNode("div",wl,[e.createElementVNode("h2",Nl,[y[0]||(y[0]=e.createTextVNode(" Уведомления ",-1)),e.unref(o).unreadCount>0?(e.openBlock(),e.createElementBlock("span",El," ("+e.toDisplayString(e.unref(o).unreadCount)+") ",1)):e.createCommentVNode("",!0)]),e.unref(o).unreadCount>0?(e.openBlock(),e.createBlock(e.unref(c.UidButton),{key:0,variant:"ghost",size:"sm",onClick:d},{default:e.withCtx(()=>[...y[1]||(y[1]=[e.createTextVNode(" Прочитать все ",-1)])]),_:1})):e.createCommentVNode("",!0)])]),default:e.withCtx(()=>[e.createVNode(e.unref(c.UidTabs),{"model-value":r.value,"onUpdate:modelValue":s},{list:e.withCtx(()=>[e.createVNode(e.unref(c.UidTab),{value:"all"},{default:e.withCtx(()=>[...y[2]||(y[2]=[e.createTextVNode("Все",-1)])]),_:1}),e.createVNode(e.unref(c.UidTab),{value:"unread"},{default:e.withCtx(()=>[y[3]||(y[3]=e.createTextVNode(" Непрочитанные",-1)),e.unref(o).unreadCount>0?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createTextVNode(" ("+e.toDisplayString(e.unref(o).unreadCount)+") ",1)],64)):e.createCommentVNode("",!0)]),_:1}),e.createVNode(e.unref(c.UidTab),{value:"read"},{default:e.withCtx(()=>[...y[4]||(y[4]=[e.createTextVNode("Прочитанные",-1)])]),_:1})]),default:e.withCtx(()=>[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(["all","unread","read"],$=>e.createVNode(e.unref(c.UidTabPanel),{key:$,value:$},{default:e.withCtx(()=>[e.createElementVNode("ul",Vl,[e.unref(o).loading?(e.openBlock(),e.createElementBlock("li",Cl," Загрузка… ")):e.unref(o).items.length===0?(e.openBlock(),e.createElementBlock("li",xl," Нет уведомлений ")):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(o).items,b=>(e.openBlock(),e.createElementBlock("li",{key:b.id,class:e.normalizeClass(["admin-notifs__item",`admin-notifs__item--${g(b)}`,{"admin-notifs__item--unread":!b.read_at}]),onClick:_=>u(b)},[e.createElementVNode("span",{class:"admin-notifs__icon","data-kind":g(b)},null,8,Sl),e.createElementVNode("div",Ul,[e.createElementVNode("div",Tl,[b.read_at?(e.openBlock(),e.createElementBlock("span",Dl,e.toDisplayString(h(b)),1)):(e.openBlock(),e.createElementBlock("strong",Fl,e.toDisplayString(h(b)),1)),e.createElementVNode("span",Al,e.toDisplayString(p(b.created_at)),1)]),k(b)?(e.openBlock(),e.createElementBlock("p",Ll,e.toDisplayString(k(b)),1)):e.createCommentVNode("",!0)]),e.createElementVNode("button",{type:"button",class:"admin-notifs__close","aria-label":"Удалить",onClick:_=>f(b,_)}," × ",8,Rl)],10,$l))),128))])]),_:1},8,["value"])),64))]),_:1},8,["model-value"])]),_:1},8,["model-value"]))}}),Pl={class:"admin-page admin-import-wizard"},Il={class:"admin-page__hd"},zl={class:"admin-page__title-wrap"},ql={class:"admin-page__title"},Ol={class:"admin-page__actions"},Wl={key:0,class:"admin-import-wizard__empty"},jl={key:1,class:"admin-import-wizard__mapping"},Kl={class:"admin-import-wizard__map-source"},Gl={key:0,class:"admin-import-wizard__map-sample"},Hl={class:"admin-import-wizard__card-hd"},Xl={key:2,class:"admin-import-wizard__empty"},Yl={key:0,class:"admin-import-wizard__empty"},Jl={class:"admin-import-wizard__kpi"},Ql={class:"admin-import-wizard__nav"},Zl=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,i=n,o=[{label:"Загрузка",description:"CSV / TSV / XLSX"},{label:"Сопоставление",description:"Колонки файла → поля"},{label:"Предпросмотр",description:"Проверка первых строк"},{label:"Импорт",description:"Запуск + сводка"}],l=e.ref(0),r=e.computed(()=>a.step??l.value);function s(_){a.step===void 0&&(_<0||_>=o.length||(l.value=_))}const d=e.ref([]);function u(_){d.value=_,_.length>0&&i("file-uploaded",_[0].file)}const f=e.ref({});function g(_,v){f.value[_]=v===null||v===""?null:String(v)}function h(){return a.headers.map(_=>({source:_.key,target:f.value[_.key]??null}))}function k(){i("mapping-submit",h()),s(2)}function p(){i("run-import"),s(3)}const m=e.computed(()=>r.value>0),y=e.computed(()=>{switch(r.value){case 0:return d.value.length>0;case 1:return Object.values(f.value).some(_=>_!==null);case 2:return!0;default:return!1}}),$=e.computed(()=>[{value:"",label:"Не импортировать"},...a.fieldOptions]);function b(){i("cancel")}return(_,v)=>(e.openBlock(),e.createElementBlock("section",Pl,[e.createElementVNode("header",Il,[e.createElementVNode("div",zl,[e.createElementVNode("h1",ql,e.toDisplayString(t.title),1)]),e.createElementVNode("div",Ol,[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:o,current:r.value},null,8,["current"]),r.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})):r.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",Wl," Нет данных — host ещё не отдал headers. Загрузите файл сначала. ")):(e.openBlock(),e.createElementBlock("div",jl,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.headers,C=>(e.openBlock(),e.createElementBlock("div",{key:C.key,class:"admin-import-wizard__map-row"},[e.createElementVNode("div",Kl,[e.createElementVNode("strong",null,e.toDisplayString(C.label),1),C.sample?(e.openBlock(),e.createElementBlock("span",Gl," «"+e.toDisplayString(C.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[C.key]??"",options:$.value,placeholder:"Не импортировать","onUpdate:modelValue":S=>g(C.key,S)},null,8,["model-value","options","onUpdate:modelValue"])]))),128))]))]),_:1})):r.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",Hl,[v[6]||(v[6]=e.createElementVNode("h3",null,"3. Предпросмотр",-1)),e.createElementVNode("p",null,"Первые "+e.toDisplayString(t.preview.length)+" строк перед импортом",1)]),t.preview.some(C=>C.__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",Xl," 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",Jl,[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",Yl," Запускается импорт… "))]),_:1})),e.createElementVNode("footer",Ql,[m.value?(e.openBlock(),e.createBlock(e.unref(c.UidButton),{key:0,variant:"ghost",onClick:v[0]||(v[0]=C=>s(r.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)),r.value===0?(e.openBlock(),e.createBlock(e.unref(c.UidButton),{key:1,variant:"primary",disabled:!y.value,onClick:v[1]||(v[1]=C=>s(1))},{default:e.withCtx(()=>[...v[10]||(v[10]=[e.createTextVNode(" Далее ",-1)])]),_:1},8,["disabled"])):r.value===1?(e.openBlock(),e.createBlock(e.unref(c.UidButton),{key:2,variant:"primary",disabled:!y.value,onClick:k},{default:e.withCtx(()=>[...v[11]||(v[11]=[e.createTextVNode(" Подтвердить mapping ",-1)])]),_:1},8,["disabled"])):r.value===2?(e.openBlock(),e.createBlock(e.unref(c.UidButton),{key:3,variant:"primary",onClick:p},{default:e.withCtx(()=>[...v[12]||(v[12]=[e.createTextVNode(" Запустить импорт ",-1)])]),_:1})):e.createCommentVNode("",!0)])]))}}),er={class:"admin-page admin-field-gallery"},tr={class:"admin-gallery__group-title"},nr={class:"admin-gallery__grid"},ar={class:"admin-gallery__card-hd"},or={class:"admin-gallery__card-title"},lr={class:"admin-gallery__card-type"},rr={class:"admin-gallery__card-desc"},ir={class:"admin-gallery__card-demo"},sr=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((o,l)=>(o[l.group]||(o[l.group]=[]),o[l.group].push(l),o),{}),i=e.reactive(n.reduce((o,l)=>Object.assign(o,l.initial),{}));return z.provideFormState(i),(o,l)=>(e.openBlock(),e.createElementBlock("section",er,[l[0]||(l[0]=e.createElementVNode("header",{class:"admin-page__hd"},[e.createElementVNode("div",{class:"admin-page__title-wrap"},[e.createElementVNode("h1",{class:"admin-page__title"},"Field Gallery"),e.createElementVNode("div",{class:"admin-page__count"}," Каталог встроенных field-компонентов library + примеры использования ")])],-1)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(a),(r,s)=>(e.openBlock(),e.createElementBlock("section",{key:s,class:"admin-gallery__group"},[e.createElementVNode("h2",tr,e.toDisplayString(s),1),e.createElementVNode("div",nr,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r,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",ar,[e.createElementVNode("h3",or,e.toDisplayString(d.title),1),e.createElementVNode("code",lr,"type: "+e.toDisplayString(d.type),1)]),e.createElementVNode("p",rr,e.toDisplayString(d.description),1),e.createElementVNode("div",ir,[e.createVNode(Le,{node:d.node},null,8,["node"])])]),_:2},1024))),128))])]))),128))]))}});exports.provideFormState=z.provideFormState;exports.tryUseFormState=z.tryUseFormState;exports.useFormState=z.useFormState;exports.AdminApp=Je;exports.AdminShell=Ye;exports.AdminSidebar=Xe;exports.AdminTopBar=He;exports.ApiError=W;exports.BadgeEntry=Rt;exports.BarChartWidget=Bt;exports.CheckboxField=ae;exports.ColumnsLayout=Dt;exports.DashboardPage=yt;exports.DateField=G;exports.DonutChartWidget=bt;exports.FieldGalleryPage=sr;exports.FieldRenderer=Le;exports.ForbiddenError=je;exports.ForbiddenPage=Ze;exports.GaugeWidget=Et;exports.HeatmapWidget=Nt;exports.HomePage=Qe;exports.IconEntry=Mt;exports.ImportWizardPage=Zl;exports.InfolistRenderer=ut;exports.KeyValueEntry=Ne;exports.LayoutRenderer=Q;exports.LocaleSwitcher=Ce;exports.LoginForm=at;exports.LoginPage=lt;exports.MarkdownWidget=Vt;exports.NetworkError=re;exports.NotFoundError=Ke;exports.NotFoundPage=et;exports.NotificationBell=We;exports.NotificationsDrawer=Ml;exports.NumberField=ue;exports.ProfilePage=pt;exports.RecentTableWidget=wt;exports.ResourceFormPage=Be;exports.ResourceIndexPage=it;exports.ResourceViewPage=ft;exports.RowsLayout=we;exports.SectionLayout=X;exports.SelectField=j;exports.SettingsPage=tt;exports.StatWidget=_t;exports.TabsLayout=At;exports.TextAreaField=ne;exports.TextEntry=V;exports.TextField=P;exports.ThemeToggle=Ve;exports.TwoFactorForm=ot;exports.UnauthenticatedError=xe;exports.UnknownEntry=dt;exports.UnknownField=Ae;exports.UnknownScreenPage=nt;exports.UnknownWidget=ht;exports.UserMenu=Ge;exports.ValidationError=le;exports.WidgetRenderer=kt;exports.buildRoutesFromManifest=St;exports.clearAdminClient=qe;exports.clearInfolistRegistry=Ta;exports.clearRegistry=Ba;exports.clearWidgetRegistry=Bo;exports.createAdminApp=yl;exports.createAdminClient=$t;exports.createAdminRouter=Ft;exports.createAuthGuard=Ut;exports.createTitleGuard=Tt;exports.getAdminClient=L;exports.getField=De;exports.getInfolistEntry=be;exports.getLayout=_e;exports.getWidget=gt;exports.hasAdminClient=Oe;exports.hasField=va;exports.hasInfolistEntry=Sa;exports.hasLayout=ya;exports.hasWidget=yo;exports.isError=Qo;exports.isSuccess=xt;exports.listFields=ha;exports.listInfolistEntries=Ua;exports.listLayouts=_a;exports.listWidgets=_o;exports.loadBootstrap=Bl;exports.provideRecord=mt;exports.readCsrfFromMeta=bl;exports.readInlineBootstrap=It;exports.registerBuiltinComponents=Lt;exports.registerBuiltinInfolistEntries=Pt;exports.registerBuiltinWidgets=Ct;exports.registerComponents=st;exports.registerField=ga;exports.registerInfolistEntries=ct;exports.registerInfolistEntry=$a;exports.registerLayout=ka;exports.registerWidget=ko;exports.registerWidgets=vt;exports.setAdminClient=Ee;exports.toApiError=ye;exports.tryUseRecord=ie;exports.useAuthStore=I;exports.useLocaleStore=fe;exports.useManifestStore=K;exports.useMenuStore=$e;exports.useNotificationsStore=pe;exports.useRecord=Oa;exports.useResourceFormStore=Fe;exports.useResourceIndexStore=Te;exports.useThemeStore=me;
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),ie=require("pinia"),Z=require("vue-router"),c=require("@dskripchenko/ui"),fa=require("axios"),ne=require("./formState-GlJBphEn.cjs");const pa=t=>t.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase();var Ae={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 va=({size:t,strokeWidth:n=2,absoluteStrokeWidth:a,color:r,iconNode:o,name:l,class:i,...s},{slots:u})=>e.h("svg",{...Ae,width:t||Ae.width,height:t||Ae.height,stroke:r||Ae.stroke,"stroke-width":a?Number(n)*24/Number(t):n,class:["lucide",`lucide-${pa(l??"icon")}`],...s},[...o.map(f=>e.h(...f)),...u.default?[u.default()]:[]]);const $=(t,n)=>(a,{slots:r})=>e.h(va,{...a,iconNode:n,name:t},r);const ha=$("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 ya=$("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 ga=$("ArrowLeftIcon",[["path",{d:"m12 19-7-7 7-7",key:"1l729n"}],["path",{d:"M19 12H5",key:"x3x0zl"}]]);const et=$("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 st=$("BookmarkIcon",[["path",{d:"m19 21-7-4-7 4V5a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2v16z",key:"1fy3hk"}]]);const qt=$("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 ka=$("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 jt=$("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 Ze=$("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 _a=$("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 ba=$("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 qe=$("CheckIcon",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]]);const Ot=$("ChevronDownIcon",[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]]);const wa=$("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 je=$("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 Ba=$("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 Va=$("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 Na=$("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 xa=$("ClockIcon",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["polyline",{points:"12 6 12 12 16 14",key:"68esgv"}]]);const Ca=$("CodeIcon",[["polyline",{points:"16 18 22 12 16 6",key:"z7tu5w"}],["polyline",{points:"8 6 2 12 8 18",key:"1eg1df"}]]);const Ea=$("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 $a=$("Columns2Icon",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M12 3v18",key:"108xh3"}]]);const Sa=$("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 Ua=$("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 Wt=$("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 Ht=$("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 Ma=$("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 Da=$("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 Mt=$("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 Ta=$("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 Ia=$("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 Fa=$("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 Aa=$("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 La=$("GaugeIcon",[["path",{d:"m12 14 4-4",key:"9kzdfg"}],["path",{d:"M3.34 19a10 10 0 1 1 17.32 0",key:"19p75a"}]]);const Kt=$("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 za=$("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 Gt=$("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 Ra=$("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 Pa=$("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 qa=$("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 ja=$("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 Oa=$("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 Dt=$("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 Wa=$("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 Ha=$("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 Ka=$("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 Ga=$("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 Xa=$("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 Ya=$("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 Za=$("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 Ja=$("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 Qa=$("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 eo=$("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 to=$("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 no=$("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 ao=$("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 Xt=$("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 oo=$("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 lo=$("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 Yt=$("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 ro=$("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 io=$("MoonIcon",[["path",{d:"M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z",key:"a7tn18"}]]);const so=$("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 co=$("PanelLeftIcon",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M9 3v18",key:"fh3hqa"}]]);const uo=$("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 mo=$("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 ct=$("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 Oe=$("PlusIcon",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]]);const fo=$("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 dt=$("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 ut=$("SearchIcon",[["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}],["path",{d:"m21 21-4.3-4.3",key:"1qie3q"}]]);const po=$("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 vo=$("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 Zt=$("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 Tt=$("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 ho=$("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 yo=$("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 go=$("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 ko=$("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 _o=$("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 bo=$("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 wo=$("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 Jt=$("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 Bo=$("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 Vo=$("TerminalIcon",[["polyline",{points:"4 17 10 11 4 5",key:"akl6gq"}],["line",{x1:"12",x2:"20",y1:"19",y2:"19",key:"q2wloq"}]]);const ge=$("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 No=$("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 xo=$("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 Qt=$("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 Co=$("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 Eo=$("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 $o=$("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 ke=$("XIcon",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]);const So=$("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 Ee=null;function mt(t){Ee=t}function H(){if(Ee===null)throw new Error("[admin] AdminClient is not registered. Call setAdminClient(...) before using stores.");return Ee}function en(){Ee=null}function tn(){return Ee!==null}const Q=Object.freeze(Object.defineProperty({__proto__:null,clearAdminClient:en,getAdminClient:H,hasAdminClient:tn,setAdminClient:mt},Symbol.toStringTag,{value:"Module"})),We=ie.defineStore("admin-theme",()=>{const t=e.ref("light"),n=e.ref(["light","dark"]),a=e.computed(()=>t.value==="dark");function r(s){t.value=s.theme,n.value=s.availableThemes,i(s.theme)}function o(s){if(!n.value.includes(s))throw new Error(`Theme "${s}" is not available`);t.value=s,i(s)}async function l(s){if(!n.value.includes(s))throw new Error(`Theme "${s}" is not available`);const u=t.value;o(s);try{await H().post("/system/setTheme",{theme:s})}catch(f){throw o(u),f}}function i(s){typeof document<"u"&&document.documentElement&&document.documentElement.setAttribute("data-theme",s)}return{current:t,available:n,isDark:a,hydrate:r,applyLocal:o,setTheme:l}}),Uo=["aria-label","aria-pressed"],ft=e.defineComponent({__name:"ThemeToggle",setup(t){const n=We(),a=e.computed(()=>n.current==="dark"),r=e.computed(()=>a.value?wo:io),o=e.computed(()=>a.value?"sun":"moon"),l=e.computed(()=>a.value?"Переключить на светлую тему":"Переключить на тёмную тему");async function i(){const s=a.value?"light":"dark";await n.setTheme(s)}return(s,u)=>(e.openBlock(),e.createElementBlock("button",{type:"button",class:"admin-topbar__icon-btn","aria-label":l.value,"aria-pressed":a.value,onClick:i},[e.createVNode(e.unref(c.UidIcon),{icon:r.value,size:18,"data-icon":o.value},null,8,["icon","data-icon"])],8,Uo))}}),$e=ie.defineStore("admin-locale",()=>{const t=e.ref("ru"),n=e.ref(["ru","en"]);function a(i){t.value=i.locale,n.value=i.availableLocales,l(i.locale)}function r(i){if(!n.value.includes(i))throw new Error(`Locale "${i}" is not available`);t.value=i,l(i)}async function o(i){if(!n.value.includes(i))throw new Error(`Locale "${i}" is not available`);const s=t.value;r(i);try{await H().post("/system/setLocale",{locale:i})}catch(u){throw r(s),u}}function l(i){typeof document<"u"&&document.documentElement&&document.documentElement.setAttribute("lang",i);try{H().setLocale(i)}catch{}}return{current:t,available:n,hydrate:a,applyLocal:r,setLocale:o}}),Mo={type:"button",class:"admin-topbar__icon-btn",style:{width:"auto",padding:"0 8px",gap:"4px","font-size":"12px"},"aria-label":"Сменить локаль"},pt=e.defineComponent({__name:"LocaleSwitcher",setup(t){const n=$e();async function a(r){r!==n.current&&await n.setLocale(r)}return(r,o)=>(e.openBlock(),e.createBlock(e.unref(c.UidMenu),null,{trigger:e.withCtx(()=>[e.createElementVNode("button",Mo,[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(Kt),size:14,"data-icon":"globe"},null,8,["icon"]),e.createElementVNode("span",null,e.toDisplayString((e.unref(n).current??"").toUpperCase()),1)])]),default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(n).available,l=>(e.openBlock(),e.createBlock(e.unref(c.UidMenuItem),{key:l,onClick:i=>a(l)},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(l.toUpperCase()),1)]),_:2},1032,["onClick"]))),128))]),_:1}))}}),Se=ie.defineStore("admin-notifications",()=>{const t=e.ref([]),n=e.ref(0),a=e.ref(!1),r=e.ref("all"),o=e.ref(null),l=e.ref(!1),i=e.computed(()=>n.value>0);function s(){l.value=!0}function u(){l.value=!1}function f(){l.value=!l.value}function p(m){n.value=m.unread_notifications_count}async function b(m="all",w=1){a.value=!0;try{const E=await H().get(`/notifications/list?type=${m}&page=${w}`);t.value=E.data,n.value=E.meta.unread_count,o.value={page:E.meta.page,per_page:E.meta.per_page,total:E.meta.total,last_page:E.meta.last_page},r.value=m}finally{a.value=!1}}async function d(){const w=await H().get("/notifications/unread");n.value=w.count,r.value==="unread"&&(t.value=w.data)}async function B(m){await H().post("/notifications/markAsRead",{id:m});const V=t.value.find(E=>E.id===m);V&&V.read_at===null&&(V.read_at=new Date().toISOString(),n.value=Math.max(0,n.value-1))}async function y(){await H().post("/notifications/markAllAsRead");const w=new Date().toISOString();for(const V of t.value)V.read_at===null&&(V.read_at=w);n.value=0}async function k(m){await H().post("/notifications/destroy",{id:m});const V=t.value.findIndex(E=>E.id===m);if(V!==-1){const E=t.value[V].read_at===null;t.value.splice(V,1),E&&(n.value=Math.max(0,n.value-1))}}return{items:t,unreadCount:n,loading:a,meta:o,lastFilter:r,isOpen:l,hasUnread:i,hydrate:p,load:b,loadUnread:d,markAsRead:B,markAllAsRead:y,destroy:k,openDrawer:s,closeDrawer:u,toggleDrawer:f}}),Do=["aria-expanded"],To=["title"],nn=e.defineComponent({__name:"NotificationBell",setup(t){const n=Se(),a=e.computed(()=>{const o=n.unreadCount;return o<=0?null:o>99?"99+":String(o)});function r(){n.toggleDrawer()}return(o,l)=>(e.openBlock(),e.createElementBlock("button",{type:"button",class:"admin-topbar__icon-btn","aria-label":"Уведомления","aria-haspopup":"dialog","aria-expanded":e.unref(n).isOpen,onClick:r},[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(et),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,To)):e.createCommentVNode("",!0)],8,Do))}});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 vt extends de{constructor(n){super(401,n),this.name="UnauthenticatedError"}}class an extends de{constructor(n){super(403,n),this.name="ForbiddenError"}}class on extends de{constructor(n){super(404,n),this.name="NotFoundError"}}class Ue 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 Me extends Error{constructor(n="Network error"){super(n),this.name="NetworkError"}}function tt(t,n){switch(t){case 401:return new vt(n);case 403:return new an(n);case 404:return new on(n);case 422:return new Ue(n);default:return new de(t,n)}}const re=ie.defineStore("admin-auth",()=>{const t=e.ref(null),n=e.ref([]),a=e.ref(null),r=e.computed(()=>t.value!==null),o=e.computed(()=>a.value!==null);function l(y){t.value=y.user,n.value=y.permissions}function i(y){return n.value.includes("*")||n.value.includes(y)?!0:n.value.some(k=>{if(!k.endsWith(".*"))return!1;const m=k.slice(0,-1);return y.startsWith(m)})}function s(y){return y.some(i)}function u(y){return y.every(i)}async function f(y){const k=H();try{const m=await k.post("/auth/login",y);return m?.user&&(t.value=m.user),Array.isArray(m?.permissions)&&(n.value=m.permissions),a.value=null,"authenticated"}catch(m){if(m instanceof de&&m.errorKey==="two_factor_required"){const w=m.payload.challenge_token;return a.value={challengeToken:typeof w=="string"?w:"",remember:y.remember??!1},"two_factor_required"}throw m}}async function p(y){if(a.value===null)throw new Error("No pending 2FA challenge");const m=await H().post("/auth/twoFactorChallenge",{challenge_token:a.value.challengeToken,code:y});t.value=m.user,a.value=null}async function b(y){if(a.value===null)throw new Error("No pending 2FA challenge");const m=await H().post("/auth/twoFactorRecovery",{challenge_token:a.value.challengeToken,recovery_code:y});return t.value=m.user,a.value=null,{remaining:m.recovery_codes_remaining}}function d(){a.value=null}async function B(){const y=H();try{await y.post("/auth/logout")}finally{t.value=null,n.value=[],a.value=null}}return{user:t,permissions:n,pendingChallenge:a,isAuthenticated:r,isChallengePending:o,hydrate:l,hasPermission:i,hasAnyPermission:s,hasAllPermissions:u,login:f,twoFactorChallenge:p,twoFactorRecovery:b,cancelChallenge:d,logout:B}}),Io={type:"button",class:"admin-topbar__icon-btn admin-user-menu__trigger","aria-label":"Меню пользователя","aria-haspopup":"menu",style:{width:"auto",padding:"0 4px",gap:"8px"}},ln=e.defineComponent({__name:"UserMenu",setup(t){const n=re(),a=Z.useRouter();async function r(){try{await n.logout()}finally{await a.push({name:"admin.login"})}}function o(){a.push({name:"admin.profile"})}return(l,i)=>(e.openBlock(),e.createBlock(e.unref(c.UidMenu),null,{trigger:e.withCtx(()=>[e.createElementVNode("button",Io,[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:o},{default:e.withCtx(()=>[...i[0]||(i[0]=[e.createTextVNode("Профиль",-1)])]),_:1}),e.createVNode(e.unref(c.UidMenuSeparator)),e.createVNode(e.unref(c.UidMenuItem),{variant:"danger",onClick:r},{default:e.withCtx(()=>[...i[1]||(i[1]=[e.createTextVNode("Выйти",-1)])]),_:1})]),_:1}))}}),Fo={class:"admin-topbar"},Ao={class:"admin-topbar__breadcrumbs"},Lo={key:0,class:"sep"},zo={class:"admin-topbar__search",role:"button",tabindex:"0"},rn=e.defineComponent({__name:"AdminTopBar",props:{breadcrumbs:{default:()=>[]},showCollapseToggle:{type:Boolean,default:!0}},emits:["toggle-sidebar"],setup(t,{emit:n}){const a=t,r=n,o=e.computed(()=>a.breadcrumbs.length-1);return(l,i)=>(e.openBlock(),e.createElementBlock("header",Fo,[t.showCollapseToggle?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:"admin-topbar__icon-btn","aria-label":"Свернуть меню",onClick:i[0]||(i[0]=s=>r("toggle-sidebar"))},[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(co),size:18,"data-icon":"panel-left"},null,8,["icon"])])):e.createCommentVNode("",!0),e.createElementVNode("div",Ao,[e.renderSlot(l.$slots,"breadcrumbs",{},()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.breadcrumbs,(s,u)=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:u},[u>0?(e.openBlock(),e.createElementBlock("span",Lo,"›")):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(u===o.value?"cur":"")},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(s.label),1)]),_:2},1032,["href","class"]))],64))),128))])]),i[3]||(i[3]=e.createElementVNode("div",{class:"admin-topbar__spacer"},null,-1)),e.renderSlot(l.$slots,"search",{},()=>[e.createElementVNode("div",zo,[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(ut),size:14,"data-icon":"search"},null,8,["icon"]),i[1]||(i[1]=e.createElementVNode("span",null,"Поиск везде…",-1)),i[2]||(i[2]=e.createElementVNode("kbd",null,"⌘K",-1))])]),e.renderSlot(l.$slots,"actions"),e.createVNode(nn),e.createVNode(ft),e.createVNode(pt),e.createVNode(ln)]))}}),ht=ie.defineStore("admin-menu",()=>{const t=e.ref([]),n=e.ref(!1),a=e.ref(null),r=e.ref(!1),o=e.computed(()=>{const f=re(),p=b=>{if(Array.isArray(b.permissions)&&b.permissions.length>0&&!f.hasAnyPermission(b.permissions))return null;const d=(b.children??[]).map(p).filter(B=>B!==null);return{...b,children:d}};return t.value.map(p).filter(b=>b!==null)}),l=e.computed(()=>{const f=new Map;for(const b of o.value){const d=b.group??null;f.has(d)||f.set(d,[]),f.get(d).push(b)}const p=[];for(const[b,d]of f)d.sort((B,y)=>{const k=(B.order??0)-(y.order??0);return k!==0?k:B.label.localeCompare(y.label)}),p.push({group:b,items:d});return p});async function i(f=!1){if(r.value&&!f)return t.value;n.value=!0,a.value=null;try{const b=await H().get("/system/menu");return t.value=Array.isArray(b.items)?b.items:[],r.value=!0,t.value}catch(p){throw a.value=p instanceof Error?p:new Error(String(p)),p}finally{n.value=!1}}function s(f){t.value=f,r.value=!0,a.value=null}function u(){t.value=[],r.value=!1,a.value=null,n.value=!1}return{items:t,loading:n,error:a,isLoaded:r,visibleItems:o,groupedItems:l,load:i,setItems:s,reset:u}}),Ro=["aria-label"],Po="#2dd4bf",qo="#18181b",He=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)),o=e.computed(()=>Math.round(n.size*.18)),l=e.computed(()=>Math.max(2,Math.round(n.size*.18))),i=e.computed(()=>Math.round(n.size*.3)),s=e.computed(()=>Math.max(1,Math.round(n.size*.04))),u=e.computed(()=>n.variant==="mono"?"currentColor":qo),f=e.computed(()=>n.variant==="mono"?"var(--ladmin-logo-fg, #fff)":Po),p=e.computed(()=>({width:`${n.size}px`,height:`${n.size}px`,padding:`0 ${o.value}px`,borderRadius:`${a.value}px`,background:u.value,color:f.value,fontSize:`${r.value}px`})),b=e.computed(()=>({width:`${l.value}px`,height:`${i.value}px`,marginLeft:`${s.value}px`,background:f.value}));return(d,B)=>(e.openBlock(),e.createElementBlock("span",{role:"img","aria-label":t.title,class:e.normalizeClass(["ladmin-logo",{"ladmin-logo--animated":t.animated}]),style:e.normalizeStyle(p.value)},[B[0]||(B[0]=e.createElementVNode("span",{"aria-hidden":"true"},">_",-1)),e.createElementVNode("span",{"aria-hidden":"true",class:"ladmin-logo__cursor",style:e.normalizeStyle(b.value)},null,4)],14,Ro))}}),jo={activity:ha,"alert-circle":wa,archive:ya,"bar-chart":Ze,"bar-chart-3":Ze,bell:et,bookmark:st,box:qt,briefcase:ka,calendar:jt,"check-circle":je,clock:xa,code:Ca,cog:Ea,command:Sa,database:Ua,download:Wt,file:Mt,"file-text":Mt,"file-clock":Da,files:Ta,flag:Ia,folder:Aa,"folder-open":Fa,gauge:La,globe:Kt,grid:za,"hard-drive":Ra,hash:Pa,"health-check":je,heart:qa,"help-circle":Ba,history:ja,home:Oa,image:Dt,images:Wa,inbox:Ha,info:Ka,key:Ga,layers:Xa,layout:uo,"layout-dashboard":Ya,"life-buoy":Ja,"line-chart":_a,link:Qa,list:to,"list-checks":eo,lock:no,"log-out":ao,mail:Xt,map:lo,"map-pin":oo,media:Dt,"message-square":Yt,monitor:ro,notifications:et,package:so,paperclip:mo,"pie-chart":ba,"refresh-cw":fo,reports:Ze,roles:Tt,search:ut,send:po,server:vo,settings:Zt,shield:Tt,"shopping-bag":ho,"shopping-cart":yo,sliders:go,star:_o,store:bo,tag:Jt,tags:Bo,terminal:Vo,"trending-up":No,upload:Qt,user:Eo,"user-circle":Va,users:$o,"x-circle":Na,zap:So};function sn(t){return t?jo[t]??null:null}const Oo={key:0,class:"admin-sidebar-brand__mark"},Wo={key:2,class:"admin-sidebar-brand__name"},Ho={key:0,class:"admin-sidebar-tenant"},Ko={class:"admin-sidebar-foot"},Go=["title"],Xo=["href"],cn=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=ht(),a=Z.useRoute(),r=e.computed(()=>n.groupedItems);function o(s){return!!(s.routeName&&a.name===s.routeName||s.url&&a.path===s.url)}function l(s){const u=sn(s)??qt;return()=>e.h(c.UidIcon,{icon:u,size:16})}function i(s){if(s.url)return s.url;if(s.routeName)return{name:s.routeName}}return(s,u)=>{const f=e.resolveComponent("router-link");return e.openBlock(),e.createBlock(e.unref(c.UidSidebar),{collapsed:t.collapsed},{header:e.withCtx(()=>[e.createVNode(f,{to:{name:t.homeRouteName},class:"admin-sidebar-brand",title:t.collapsed?t.brandName:void 0,"aria-label":t.brandName},{default:e.withCtx(()=>[t.brandMark?(e.openBlock(),e.createElementBlock("div",Oo,e.toDisplayString(t.brandMark),1)):(e.openBlock(),e.createBlock(He,{key:1,size:28})),t.collapsed?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",Wo,e.toDisplayString(t.brandName),1))]),_:1},8,["to","title","aria-label"]),t.tenant&&!t.collapsed?(e.openBlock(),e.createElementBlock("div",Ho,[e.createElementVNode("span",null,e.toDisplayString(t.tenant.label),1),e.createElementVNode("b",null,e.toDisplayString(t.tenant.name),1)])):e.createCommentVNode("",!0)]),nav:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.value,(p,b)=>(e.openBlock(),e.createBlock(e.unref(c.UidSidebarGroup),{key:`grp-${b}`,title:p.group??void 0},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(p.items,d=>(e.openBlock(),e.createBlock(e.unref(c.UidSidebarItem),{key:d.key,to:i(d),active:o(d),badge:d.badge??void 0,title:t.collapsed?d.label:void 0},{icon:e.withCtx(()=>[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(l(d.icon))))]),default:e.withCtx(()=>[e.createTextVNode(" "+e.toDisplayString(d.label),1)]),_:2},1032,["to","active","badge","title"]))),128))]),_:2},1032,["title"]))),128))]),footer:e.withCtx(()=>[e.createElementVNode("div",Ko,[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,Go),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,Xo)):e.createCommentVNode("",!0)])]),_:1},8,["collapsed"])}}}),Yo={class:"admin-shell-root"},Zo={key:0,class:"admin-impersonation-banner",role:"status"},Je="data-admin-impersonating",dn=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,o=e.ref(!1),l=e.computed(()=>a.collapsed!==void 0),i=e.computed(()=>l.value?a.collapsed:o.value);function s(f){l.value||(o.value=f),r("update:collapsed",f)}function u(){r("exit-impersonation")}return e.watch(()=>a.impersonation,f=>{typeof document>"u"||(f!==null?document.documentElement.setAttribute(Je,"true"):document.documentElement.removeAttribute(Je))},{immediate:!0}),e.onBeforeUnmount(()=>{typeof document<"u"&&document.documentElement.removeAttribute(Je)}),(f,p)=>(e.openBlock(),e.createElementBlock("div",Yo,[t.impersonation?(e.openBlock(),e.createElementBlock("div",Zo,[e.createElementVNode("span",null,[p[1]||(p[1]=e.createTextVNode(" Вы вошли как ",-1)),e.createElementVNode("b",null,e.toDisplayString(t.impersonation.asName),1),p[2]||(p[2]=e.createTextVNode(" · режим имперсонации ",-1))]),e.createElementVNode("button",{type:"button",class:"admin-impersonation-banner__exit",onClick:u}," Выйти из режима ")])):e.createCommentVNode("",!0),e.createVNode(e.unref(c.UidSidebarLayout),{"model-value":i.value,class:"admin-shell","onUpdate:modelValue":s},{sidebar:e.withCtx(()=>[e.renderSlot(f.$slots,"sidebar",{},()=>[e.createVNode(cn,{collapsed:i.value},null,8,["collapsed"])])]),header:e.withCtx(()=>[e.renderSlot(f.$slots,"topbar",{},()=>[e.createVNode(rn,{onToggleSidebar:p[0]||(p[0]=b=>s(!i.value))})])]),footer:e.withCtx(()=>[e.renderSlot(f.$slots,"footer",{},()=>[p[3]||(p[3]=e.createElementVNode("div",{class:"admin-main-footer"},null,-1))])]),default:e.withCtx(()=>[e.renderSlot(f.$slots,"default")]),_:3},8,["model-value"])]))}}),yt=ie.defineStore("admin-navigation",()=>{const t=e.ref(0),n=e.computed(()=>t.value>0);function a(){t.value+=1}function r(){t.value>0&&(t.value-=1)}function o(){t.value=0}return{pending:t,isLoading:n,start:a,end:r,reset:o}}),Jo=e.defineComponent({__name:"AdminLoadingBar",setup(t){const n=yt(),a=e.ref(!1);let r=null;e.watch(()=>n.isLoading,l=>{l?(r!==null&&(clearTimeout(r),r=null),a.value=!0):r=setTimeout(()=>{a.value=!1,r=null},120)},{immediate:!0});const o=e.computed(()=>({"admin-loading-bar":!0,"admin-loading-bar--visible":a.value}));return(l,i)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(o.value),role:"progressbar","aria-busy":"true"},null,2))}}),Qo={key:0,class:"admin-notif-drawer",role:"dialog","aria-modal":"true","aria-labelledby":"admin-notif-drawer-title"},el={class:"admin-notif-drawer__panel"},tl={class:"admin-notif-drawer__hd"},nl={id:"admin-notif-drawer-title",class:"admin-notif-drawer__title"},al={key:0,class:"admin-notif-drawer__unread-badge"},ol={class:"admin-notif-drawer__hd-actions"},ll={class:"admin-notif-drawer__tabs",role:"tablist"},rl=["aria-selected","onClick"],il={class:"admin-notif-drawer__tab-count"},sl={class:"admin-notif-drawer__body"},cl={key:0,class:"admin-notif-drawer__empty"},dl={key:1,class:"admin-notif-drawer__empty"},ul={key:2,class:"admin-notif-drawer__list"},ml=["onClick"],fl=["data-variant"],pl={class:"admin-notif-drawer__content"},vl={class:"admin-notif-drawer__row"},hl={class:"admin-notif-drawer__item-title"},yl={class:"admin-notif-drawer__item-time"},gl={key:0,class:"admin-notif-drawer__item-description"},kl={key:0,class:"admin-notif-drawer__unread-dot","aria-hidden":"true"},_l=["onClick"],bl=e.defineComponent({__name:"NotificationsDrawer",setup(t){const n=Se(),a=e.computed(()=>n.isOpen),r=[{key:"all",label:"Все"},{key:"unread",label:"Непрочитанные"},{key:"read",label:"Прочитанные"}];async function o(k){n.lastFilter!==k&&await n.load(k,1).catch(()=>{})}async function l(){await n.markAllAsRead().catch(()=>{})}async function i(k){k.read_at===null&&await n.markAsRead(k.id).catch(()=>{});const m=k.data.url;typeof m=="string"&&m.length>0&&(m.startsWith("http://")||m.startsWith("https://")?window.open(m,"_blank","noopener"):(n.closeDrawer(),window.location.href=m))}async function s(k,m){m.stopPropagation(),await n.destroy(k.id).catch(()=>{})}function u(){n.closeDrawer()}function f(k){const m=k.type.toLowerCase();return m.includes("import")||m.includes("finished")||m.includes("success")?je:m.includes("comment")||m.includes("message")||m.includes("mention")?Yt:m.includes("user")||m.includes("member")||m.includes("role")?Co:m.includes("warning")||m.includes("schedule")?xo:m.includes("delete")||m.includes("failed")||m.includes("error")?ge:je}function p(k){const m=k.type.toLowerCase();return m.includes("import")||m.includes("success")||m.includes("finished")?"success":m.includes("warning")||m.includes("schedule")?"warning":m.includes("delete")||m.includes("failed")||m.includes("error")?"danger":m.includes("comment")||m.includes("message")?"info":"neutral"}function b(k){if(!k)return"";const m=new Date(k).getTime();if(Number.isNaN(m))return"";const w=(Date.now()-m)/1e3;return w<60?`${Math.max(1,Math.floor(w))} сек назад`:w<3600?`${Math.floor(w/60)} мин назад`:w<86400?`${Math.floor(w/3600)} ч назад`:w<86400*2?"вчера":w<86400*7?`${Math.floor(w/86400)} д назад`:new Date(k).toLocaleDateString("ru-RU")}function d(k){const m=k.data,w=typeof m.title=="string"?m.title:typeof m.subject=="string"?m.subject:"Уведомление",V=typeof m.description=="string"?m.description:typeof m.message=="string"?m.message:typeof m.text=="string"?m.text:"";return{title:w,description:V}}const B=e.computed(()=>{const m=n.meta?.total??n.items.length,w=n.unreadCount,V=Math.max(0,m-w);return{all:m,unread:w,read:V}});e.watch(a,async k=>{k?(await n.load(n.lastFilter,1).catch(()=>{}),document.addEventListener("keydown",y)):document.removeEventListener("keydown",y)});function y(k){k.key==="Escape"&&u()}return e.onUnmounted(()=>{document.removeEventListener("keydown",y)}),(k,m)=>(e.openBlock(),e.createBlock(e.Teleport,{to:"body"},[e.createVNode(e.Transition,{name:"admin-notif-drawer"},{default:e.withCtx(()=>[a.value?(e.openBlock(),e.createElementBlock("div",Qo,[e.createElementVNode("div",{class:"admin-notif-drawer__backdrop",onClick:u}),e.createElementVNode("aside",el,[e.createElementVNode("header",tl,[e.createElementVNode("h2",nl,[m[0]||(m[0]=e.createTextVNode(" Уведомления ",-1)),e.unref(n).unreadCount>0?(e.openBlock(),e.createElementBlock("span",al,e.toDisplayString(e.unref(n).unreadCount),1)):e.createCommentVNode("",!0)]),e.createElementVNode("div",ol,[e.unref(n).unreadCount>0?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:"admin-notif-drawer__mark-all",onClick:l},[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(qe),size:14},null,8,["icon"]),m[1]||(m[1]=e.createTextVNode(" Прочитать все ",-1))])):e.createCommentVNode("",!0),e.createElementVNode("button",{type:"button",class:"admin-notif-drawer__close","aria-label":"Закрыть",onClick:u},[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(ke),size:16},null,8,["icon"])])])]),e.createElementVNode("nav",ll,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(r,w=>e.createElementVNode("button",{key:w.key,type:"button",role:"tab",class:e.normalizeClass(["admin-notif-drawer__tab",{"admin-notif-drawer__tab--active":e.unref(n).lastFilter===w.key}]),"aria-selected":e.unref(n).lastFilter===w.key,onClick:V=>o(w.key)},[e.createTextVNode(e.toDisplayString(w.label)+" ",1),e.createElementVNode("span",il,e.toDisplayString(B.value[w.key]),1)],10,rl)),64))]),e.createElementVNode("div",sl,[e.unref(n).loading&&e.unref(n).items.length===0?(e.openBlock(),e.createElementBlock("div",cl," Загрузка… ")):e.unref(n).items.length===0?(e.openBlock(),e.createElementBlock("div",dl," Нет уведомлений ")):(e.openBlock(),e.createElementBlock("ol",ul,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(n).items,w=>(e.openBlock(),e.createElementBlock("li",{key:w.id,class:e.normalizeClass(["admin-notif-drawer__item",{"admin-notif-drawer__item--unread":w.read_at===null}]),onClick:V=>i(w)},[e.createElementVNode("span",{class:"admin-notif-drawer__icon","data-variant":p(w),"aria-hidden":"true"},[e.createVNode(e.unref(c.UidIcon),{icon:f(w),size:14},null,8,["icon"])],8,fl),e.createElementVNode("div",pl,[e.createElementVNode("div",vl,[e.createElementVNode("span",hl,e.toDisplayString(d(w).title),1),e.createElementVNode("span",yl,e.toDisplayString(b(w.created_at)),1)]),d(w).description?(e.openBlock(),e.createElementBlock("div",gl,e.toDisplayString(d(w).description),1)):e.createCommentVNode("",!0)]),w.read_at===null?(e.openBlock(),e.createElementBlock("span",kl)):e.createCommentVNode("",!0),e.createElementVNode("button",{type:"button",class:"admin-notif-drawer__item-delete","aria-label":"Удалить",onClick:e.withModifiers(V=>s(w,V),["stop"])},[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(ke),size:12},null,8,["icon"])],8,_l)],10,ml))),128))]))])])])):e.createCommentVNode("",!0)]),_:1})]))}}),ce=ie.defineStore("admin-manifest",()=>{const t=e.ref(null),n=e.ref(!1),a=e.ref(null),r=e.ref(!1),o=e.computed(()=>t.value!==null),l=e.computed(()=>t.value?.version??null),i=e.computed(()=>t.value?.resources??[]),s=e.computed(()=>t.value?.screens??[]),u=e.computed(()=>t.value?.settings??[]),f=e.computed(()=>t.value?.plugins??[]);function p(k){return i.value.find(m=>m.slug===k)??null}function b(k){return s.value.find(m=>m.slug===k)??null}function d(k){return u.value.find(m=>m.slug===k)??null}async function B(k=!1){if(t.value!==null&&!k)return t.value;n.value=!0,a.value=null;try{const w=await H().get("/system/manifest");return t.value=w,w}catch(m){throw a.value=m instanceof Error?m:new Error(String(m)),m}finally{n.value=!1}}function y(){t.value=null,a.value=null,n.value=!1,r.value=!1}return{manifest:t,loading:n,error:a,bootResolved:r,isLoaded:o,version:l,resources:i,screens:s,settings:u,plugins:f,getResource:p,getScreen:b,getSettings:d,load:B,reset:y}});function Le(t,n){return{message:t,...n??{}}}const X={success(t,n){c.useToast().success(Le(t,n))},error(t,n){c.useToast().error(Le(t,{duration:6e3,...n??{}}))},warning(t,n){c.useToast().warning(Le(t,n))},info(t,n){c.useToast().info(Le(t,n))}},wl={class:"admin-page-host"},Bl={key:1,class:"admin-page-host__suspended","aria-busy":"true"},Vl={key:1,class:"admin-page-host__suspended","aria-busy":"true"},un=e.defineComponent({__name:"AdminApp",setup(t){const n=Z.useRoute(),a=ce(),r=re(),o=e.computed(()=>{const u=r.user;return u?.impersonator?{asName:String(u?.name??"?")}:null});async function l(){try{const{getAdminClient:u}=await Promise.resolve().then(()=>Q);await u().post("/auth/stopImpersonation"),window.location.reload()}catch{X.error("Не удалось выйти из режима импертонации.")}}const i=e.computed(()=>!(n.meta?.fullscreen===!0||n.meta?.kind==="auth"||n.name==="admin.notFound")),s=e.computed(()=>n.name==="admin.notFound"&&!a.bootResolved);return(u,f)=>{const p=e.resolveComponent("router-view");return e.openBlock(),e.createElementBlock(e.Fragment,null,[e.createVNode(Jo),i.value?(e.openBlock(),e.createBlock(dn,{key:0,impersonation:o.value,onExitImpersonation:l},{default:e.withCtx(()=>[e.createElementVNode("div",wl,[e.createVNode(p,null,{default:e.withCtx(({Component:b})=>[e.createVNode(e.Transition,{name:"admin-page"},{default:e.withCtx(()=>[s.value?(e.openBlock(),e.createElementBlock("div",Bl)):(e.openBlock(),e.createBlock(e.resolveDynamicComponent(b),{key:0}))]),_:2},1024)]),_:1})])]),_:1},8,["impersonation"])):(e.openBlock(),e.createBlock(p,{key:1},{default:e.withCtx(({Component:b})=>[e.createVNode(e.Transition,{name:"admin-page"},{default:e.withCtx(()=>[s.value?(e.openBlock(),e.createElementBlock("div",Vl)):(e.openBlock(),e.createBlock(e.resolveDynamicComponent(b),{key:0}))]),_:2},1024)]),_:1})),e.createVNode(bl),e.createVNode(e.unref(c.UidToastProvider))],64)}}}),mn=ie.defineStore("admin-dashboard",()=>{const t=e.ref(null),n=e.ref(!1),a=e.ref([]),r=e.ref([]),o=e.ref(!1),l=e.ref(!1),i=e.computed(()=>JSON.stringify(a.value)!==JSON.stringify(r.value));async function s(w){t.value=w,l.value=!0;try{const C=((await H().get(`/dashboard/get?key=${encodeURIComponent(w)}`)).layout??[]).map((M,g)=>({...M,position:M.position??g}));r.value=C,a.value=C.map(M=>({...M}))}catch{r.value=[],a.value=[]}finally{l.value=!1}}function u(){n.value=!0}function f(){a.value=r.value.map(w=>({...w})),n.value=!1}async function p(){if(t.value!==null){o.value=!0;try{const w=H(),V=a.value.map((E,C)=>({slug:E.slug,size:E.size,position:C,hidden:E.hidden??!1,type:E.type,config:E.config}));await w.post("/dashboard/save",{key:t.value,widgets:V}),r.value=a.value.map(E=>({...E})),n.value=!1}finally{o.value=!1}}}async function b(){if(t.value!==null){o.value=!0;try{await H().post("/dashboard/reset",{key:t.value}),r.value=[],a.value=[],n.value=!1}finally{o.value=!1}}}function d(w){a.value=[...a.value,{...w,position:a.value.length}]}function B(w){a.value=a.value.filter(V=>V.slug!==w)}function y(w,V){a.value=a.value.map(E=>E.slug===w?{...E,...V}:E)}function k(w,V){if(w===V)return;const E=[...a.value],[C]=E.splice(w,1);E.splice(V,0,C),a.value=E}function m(){t.value=null,n.value=!1,a.value=[],r.value=[]}return{slug:t,editMode:n,draft:a,original:r,saving:o,loading:l,isDirty:i,openDashboard:s,enterEditMode:u,cancelEdit:f,saveLayout:p,resetToDefault:b,addWidget:d,removeWidget:B,updateWidget:y,moveWidget:k,reset:m}}),fn=ie.defineStore("admin-i18n",()=>{const t=e.ref({}),n=e.ref("ru");function a(i){const s=i.translations;s&&typeof s=="object"&&(t.value={...s}),n.value=i.locale??"ru"}function r(i){t.value={...i}}function o(i,s={}){let u=t.value[i]??i;for(const[f,p]of Object.entries(s))u=u.replace(new RegExp(`:${f}`,"g"),String(p));return u}return{messages:t,locale:n,hydrate:a,setMessages:r,t:o,has:i=>i in t.value,keys:e.computed(()=>Object.keys(t.value))}});function Ke(){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 _e=Ke(),Nl=_e.register,pn=_e.get,xl=_e.has,vn=_e.list,Cl=_e.clear,hn=_e.registerBundle,gt=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}))}}),yn=e.defineComponent({__name:"WidgetRenderer",props:{node:{}},setup(t){const n=t,a=e.computed(()=>pn(n.node.type)),r=e.computed(()=>{const{type:o,span:l,...i}=n.node;return i});return(o,l)=>a.value?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(a.value),e.normalizeProps(e.mergeProps({key:0},r.value)),null,16)):(e.openBlock(),e.createBlock(gt,{key:1,type:t.node.type},null,8,["type"]))}}),El={class:"admin-widget-actions",role:"toolbar","aria-label":"Действия с виджетом"},$l={type:"button",class:"admin-widget-actions__btn admin-widget-actions__drag","aria-label":"Перетащить",title:"Перетащить","data-drag-handle":"true"},Sl=e.defineComponent({__name:"WidgetActionsOverlay",emits:["configure","remove"],setup(t){return(n,a)=>(e.openBlock(),e.createElementBlock("div",El,[e.createElementVNode("button",$l,[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(Gt),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(Zt),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(ke),size:14},null,8,["icon"])])]))}}),Ul={key:0,class:"admin-dialog-root",role:"dialog","aria-modal":"true","aria-labelledby":"widget-config-title"},Ml={class:"admin-dialog"},Dl={class:"admin-dialog__hd"},Tl={id:"widget-config-title",class:"admin-dialog__title"},Il={class:"admin-dialog__body"},Fl={key:0,class:"admin-dialog__field"},Al={class:"admin-dialog__type-grid"},Ll=["onClick"],zl={class:"admin-dialog__type-name"},Rl={class:"admin-dialog__type-help"},Pl={key:1,class:"admin-dialog__field"},ql={class:"admin-dialog__readonly"},jl={class:"admin-dialog__field"},Ol={class:"admin-dialog__field"},Wl={key:2,class:"admin-dialog__field"},Hl={class:"admin-dialog__field"},Kl={class:"admin-dialog__field"},Gl={key:4,class:"admin-dialog__field"},Xl={class:"admin-dialog__field"},Yl={class:"admin-dialog__field"},Zl={class:"admin-dialog__field"},Jl={class:"admin-dialog__field"},Ql={class:"admin-dialog__ft"},er=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,o=e.computed(()=>vn()),l=e.ref(""),i=e.ref(""),s=e.ref("6"),u=e.ref(`# Новая заметка
|
|
2
|
+
|
|
3
|
+
Текст…`),f=e.ref("LABEL"),p=e.ref("0"),b=e.ref("50"),d=e.ref("Янв, Фев, Мар, Апр"),B=e.ref("10, 20, 15, 30"),y=e.ref(""),k=e.ref("5");e.watch(()=>a.open,g=>{if(g)if(a.mode==="configure"&&a.item){const v=a.item.config??{};l.value=a.item.type??"",i.value=v.title??a.initialTitle,s.value=String(a.item.size??6),u.value=v.content??u.value;const _=v.stats?.[0];_&&(f.value=String(_.label??""),p.value=String(_.value??"")),b.value=String(v.value??50);const F=v.labels,R=v.datasets;F&&F.length>0&&(d.value=F.join(", ")),R&&R[0]?.data&&(B.value=R[0].data.join(", ")),y.value=v.resource??"",k.value=String(v.limit??5)}else l.value="",i.value="",s.value="6"});const m=e.computed(()=>l.value!==""&&i.value.trim()!==""),w={stat:"Stat — карточка с числом",stats:"Stats overview — несколько метрик",chart:"Chart — линия / столбцы / донат","bar-chart":"Bar chart — гистограмма","donut-chart":"Donut — кольцевая диаграмма","recent-table":"Recent list — последние записи",recent_list:"Recent list — последние записи","recent-list":"Recent list — последние записи",heatmap:"Heatmap — тепловая карта",gauge:"Gauge — шкала со значением",markdown:"Markdown — заметка / текст"};function V(g){return g==="markdown"?"markdown":g==="stat"||g==="stats"?"stat":g==="gauge"?"gauge":g==="chart"||g==="bar-chart"||g==="donut-chart"?"chart":g==="recent-table"||g==="recent_list"||g==="recent-list"?"recent":null}function E(){const g={title:i.value};switch(V(l.value)){case"markdown":g.content=u.value;break;case"stat":g.stats=[{label:f.value,value:p.value}];break;case"gauge":g.value=Number(b.value)||0,g.min=0,g.max=100;break;case"chart":{const v=d.value.split(",").map(F=>F.trim()).filter(Boolean),_=B.value.split(",").map(F=>Number(F.trim())).filter(F=>!Number.isNaN(F));g.labels=v,g.datasets=[{label:i.value,data:_}],g.type=l.value==="donut-chart"?"doughnut":"bar";break}case"recent":g.resource=y.value,g.limit=Number(k.value)||5;break}return g}function C(){if(!m.value)return;const g=Math.max(1,Math.min(12,Number(s.value)||6)),v=E();if(a.mode==="configure"&&a.item)r("save",{size:g,type:l.value,config:v});else{const _=`custom.${l.value}.${Date.now()}`;r("add",{slug:_,type:l.value,size:g,config:v})}r("close")}function M(){r("close")}return(g,v)=>(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",Ul,[e.createElementVNode("div",{class:"admin-dialog-root__backdrop",onClick:M}),e.createElementVNode("div",Ml,[e.createElementVNode("header",Dl,[e.createElementVNode("h2",Tl,e.toDisplayString(t.mode==="add"?"Добавить виджет":"Настроить виджет"),1),e.createElementVNode("button",{type:"button",class:"admin-dialog__close","aria-label":"Закрыть",onClick:M},[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(ke),size:16},null,8,["icon"])])]),e.createElementVNode("div",Il,[t.mode==="add"?(e.openBlock(),e.createElementBlock("div",Fl,[v[10]||(v[10]=e.createElementVNode("label",{class:"admin-dialog__label"},"Тип виджета",-1)),e.createElementVNode("div",Al,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.value,_=>(e.openBlock(),e.createElementBlock("button",{key:_,type:"button",class:e.normalizeClass(["admin-dialog__type-card",{"admin-dialog__type-card--active":l.value===_}]),onClick:F=>l.value=_},[e.createElementVNode("span",zl,e.toDisplayString(_),1),e.createElementVNode("span",Rl,e.toDisplayString(w[_]??""),1)],10,Ll))),128))])])):(e.openBlock(),e.createElementBlock("div",Pl,[v[11]||(v[11]=e.createElementVNode("label",{class:"admin-dialog__label"},"Тип",-1)),e.createElementVNode("div",ql,e.toDisplayString(l.value||"unknown"),1)])),e.createElementVNode("div",jl,[v[12]||(v[12]=e.createElementVNode("label",{class:"admin-dialog__label"},"Заголовок",-1)),e.createVNode(e.unref(c.UidInput),{modelValue:i.value,"onUpdate:modelValue":v[0]||(v[0]=_=>i.value=_),placeholder:"Название виджета"},null,8,["modelValue"])]),e.createElementVNode("div",Ol,[v[13]||(v[13]=e.createElementVNode("label",{class:"admin-dialog__label"},"Ширина (1..12)",-1)),e.createVNode(e.unref(c.UidInput),{modelValue:s.value,"onUpdate:modelValue":v[1]||(v[1]=_=>s.value=_),type:"number"},null,8,["modelValue"])]),V(l.value)==="markdown"?(e.openBlock(),e.createElementBlock("div",Wl,[v[14]||(v[14]=e.createElementVNode("label",{class:"admin-dialog__label"},"Markdown содержимое",-1)),e.withDirectives(e.createElementVNode("textarea",{"onUpdate:modelValue":v[2]||(v[2]=_=>u.value=_),class:"admin-dialog__textarea",rows:"6"},null,512),[[e.vModelText,u.value]])])):V(l.value)==="stat"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:3},[e.createElementVNode("div",Hl,[v[15]||(v[15]=e.createElementVNode("label",{class:"admin-dialog__label"},"Метка",-1)),e.createVNode(e.unref(c.UidInput),{modelValue:f.value,"onUpdate:modelValue":v[3]||(v[3]=_=>f.value=_)},null,8,["modelValue"])]),e.createElementVNode("div",Kl,[v[16]||(v[16]=e.createElementVNode("label",{class:"admin-dialog__label"},"Значение",-1)),e.createVNode(e.unref(c.UidInput),{modelValue:p.value,"onUpdate:modelValue":v[4]||(v[4]=_=>p.value=_)},null,8,["modelValue"])])],64)):V(l.value)==="gauge"?(e.openBlock(),e.createElementBlock("div",Gl,[v[17]||(v[17]=e.createElementVNode("label",{class:"admin-dialog__label"},"Значение (0..100)",-1)),e.createVNode(e.unref(c.UidInput),{modelValue:b.value,"onUpdate:modelValue":v[5]||(v[5]=_=>b.value=_),type:"number"},null,8,["modelValue"])])):V(l.value)==="chart"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:5},[e.createElementVNode("div",Xl,[v[18]||(v[18]=e.createElementVNode("label",{class:"admin-dialog__label"},"Метки (через запятую)",-1)),e.createVNode(e.unref(c.UidInput),{modelValue:d.value,"onUpdate:modelValue":v[6]||(v[6]=_=>d.value=_),placeholder:"Янв, Фев, Мар"},null,8,["modelValue"])]),e.createElementVNode("div",Yl,[v[19]||(v[19]=e.createElementVNode("label",{class:"admin-dialog__label"},"Значения (через запятую)",-1)),e.createVNode(e.unref(c.UidInput),{modelValue:B.value,"onUpdate:modelValue":v[7]||(v[7]=_=>B.value=_),placeholder:"10, 20, 15"},null,8,["modelValue"])])],64)):V(l.value)==="recent"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:6},[e.createElementVNode("div",Zl,[v[20]||(v[20]=e.createElementVNode("label",{class:"admin-dialog__label"},"Resource slug",-1)),e.createVNode(e.unref(c.UidInput),{modelValue:y.value,"onUpdate:modelValue":v[8]||(v[8]=_=>y.value=_),placeholder:"articles"},null,8,["modelValue"])]),e.createElementVNode("div",Jl,[v[21]||(v[21]=e.createElementVNode("label",{class:"admin-dialog__label"},"Limit",-1)),e.createVNode(e.unref(c.UidInput),{modelValue:k.value,"onUpdate:modelValue":v[9]||(v[9]=_=>k.value=_),type:"number"},null,8,["modelValue"])])],64)):e.createCommentVNode("",!0)]),e.createElementVNode("footer",Ql,[e.createVNode(e.unref(c.UidButton),{variant:"ghost",onClick:M},{default:e.withCtx(()=>[...v[22]||(v[22]=[e.createTextVNode("Отмена",-1)])]),_:1}),e.createVNode(e.unref(c.UidButton),{variant:"primary",disabled:!m.value,onClick:C},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(t.mode==="add"?"Добавить":"Сохранить"),1)]),_:1},8,["disabled"])])])])):e.createCommentVNode("",!0)]),_:1})]))}}),tr={class:"admin-page admin-dashboard"},nr={class:"admin-page__hd"},ar={class:"admin-page__title-wrap"},or={class:"admin-page__title"},lr={key:0,class:"admin-page__count"},rr={class:"admin-page__actions"},ir=["draggable","onDragstart","onDrop"],sr=["onMousedown"],kt=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,o=ce(),l=mn(),i=fn(),s=(A,L)=>i.has(A)?i.t(A):L,u=e.computed(()=>!a.slug||!o.manifest?null:o.manifest.dashboards?.find(L=>L.slug===a.slug)??null),f=e.computed(()=>a.widgets?a.widgets:m.value!==null?m.value:u.value?.widgets??[]),p=e.computed(()=>a.title??u.value?.label??"Dashboard"),b=e.computed(()=>a.subtitle??u.value?.description??null),d=e.computed(()=>{const A=new Map;for(const P of f.value){const O=String(P.slug??"");O&&A.set(O,P)}const L=l.draft,q=[];if(L.length>0){for(const P of L){if(P.hidden)continue;let O=null;if(A.has(P.slug)){const oe=A.get(P.slug);O={...oe,size:P.size??oe.size??12},A.delete(P.slug)}else if(P.type){const oe=P.config??{};O={slug:P.slug,type:P.type,title:oe.title??"",size:P.size??6,data:oe}}O&&q.push({node:O,layoutSlug:P.slug})}for(const[P,O]of A.entries())q.push({node:O,layoutSlug:P})}else for(const P of f.value)q.push({node:P,layoutSlug:String(P.slug??"")});return q});function B(A){const L=A.size??A.span;return Math.max(1,Math.min(12,typeof L=="number"?L:12))}const y=e.computed(()=>[{key:"7d",label:s("admin.dashboard.period.7d","За 7 дней")},{key:"30d",label:s("admin.dashboard.period.30d","За 30 дней")},{key:"90d",label:s("admin.dashboard.period.90d","За 90 дней")},{key:"all",label:s("admin.dashboard.period.all","Всё время")}]),k=e.ref("30d"),m=e.ref(null);async function w(A,L){k.value=A,r("change-period",A),await V()}async function V(){if(a.slug)try{const{getAdminClient:A}=await Promise.resolve().then(()=>Q),q=await A().get(`/dashboard/widgets?key=${encodeURIComponent(a.slug)}&period=${encodeURIComponent(k.value)}`);m.value=q.widgets}catch{}}const E=e.computed(()=>y.value.find(A=>A.key===k.value)?.label??s("admin.dashboard.period.label","Период")),C=e.ref(null),M=e.ref(null),g=e.ref("");function v(){C.value="add",M.value=null,g.value=""}function _(){C.value=null}function F(){l.enterEditMode()}function R(){l.cancelEdit()}async function W(){await l.saveLayout().catch(()=>{})}function K(A){l.draft.some(q=>q.slug===A)?l.removeWidget(A):l.addWidget({slug:A,hidden:!0})}function ae(A){Y();const L=l.draft.find(O=>O.slug===A)??null,P=d.value.find(O=>O.layoutSlug===A)?.node;M.value=L??{slug:A,type:P?.type??"",size:P?.size??6,config:{}},g.value=P?.title??"",C.value="configure"}function J(A){l.addWidget(A)}function D(A){if(!M.value)return;const L=M.value.slug;if(l.draft.some(P=>P.slug===L)){const P=l.draft.find(O=>O.slug===L);l.updateWidget(L,{...A,config:{...P?.config??{},...A.config??{}}})}else l.addWidget({slug:L,type:M.value.type,...A})}const S=e.ref(null);function x(A,L){if(!l.editMode||L.dataTransfer===null)return;if(!L.target?.closest('[data-drag-handle="true"]')){L.preventDefault();return}S.value=A,L.dataTransfer.effectAllowed="move",L.dataTransfer.setData("text/plain",String(A))}function I(A){l.editMode&&S.value!==null&&A.preventDefault()}function ee(A,L){if(L.preventDefault(),!l.editMode||S.value===null)return;const q=S.value;Y(),l.moveWidget(q,A),S.value=null}function Y(){if(l.draft.length===d.value.length)return;const A=d.value.map(({node:L,layoutSlug:q},P)=>{const O=l.draft.find(oe=>oe.slug===q);return{slug:q,size:B(L),position:P,hidden:O?.hidden??!1,type:O?.type??L.type,config:O?.config}});l.draft=A}const G=e.ref(null);let ue=0;function fe(A,L,q){if(!l.editMode)return;A.preventDefault(),A.stopPropagation(),Y(),G.value={slug:L,startX:A.clientX,startSpan:q},ue=A.target.closest(".admin-dashboard__grid")?.getBoundingClientRect().width??1200,window.addEventListener("mousemove",he),window.addEventListener("mouseup",se)}function he(A){if(!G.value)return;const L=ue/12,q=Math.round((A.clientX-G.value.startX)/L),P=Math.max(1,Math.min(12,G.value.startSpan+q)),O=l.draft.find(oe=>oe.slug===G.value.slug);O&&O.size!==P&&l.updateWidget(G.value.slug,{size:P})}function se(){G.value=null,window.removeEventListener("mousemove",he),window.removeEventListener("mouseup",se)}function Ge(){r("export")}return(A,L)=>(e.openBlock(),e.createElementBlock("section",tr,[e.createElementVNode("header",nr,[e.createElementVNode("div",ar,[e.createElementVNode("h1",or,e.toDisplayString(p.value),1),b.value?(e.openBlock(),e.createElementBlock("div",lr,e.toDisplayString(b.value),1)):e.createCommentVNode("",!0)]),e.createElementVNode("div",rr,[e.renderSlot(A.$slots,"actions"),e.createVNode(e.unref(c.UidMenu),null,{trigger:e.withCtx(()=>[e.createVNode(e.unref(c.UidButton),{variant:"ghost",size:"md"},{prepend:e.withCtx(()=>[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(jt),size:14},null,8,["icon"])]),append:e.withCtx(()=>[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(Ot),size:14},null,8,["icon"])]),default:e.withCtx(()=>[e.createTextVNode(" "+e.toDisplayString(E.value)+" ",1)]),_:1})]),default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(y.value,q=>(e.openBlock(),e.createBlock(e.unref(c.UidMenuItem),{key:q.key,onClick:P=>w(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:Ge},{prepend:e.withCtx(()=>[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(Wt),size:14},null,8,["icon"])]),default:e.withCtx(()=>[L[0]||(L[0]=e.createTextVNode(" Export ",-1))]),_:1}),e.unref(l).editMode?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createVNode(e.unref(c.UidButton),{variant:"secondary",size:"md",onClick:v},{prepend:e.withCtx(()=>[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(Oe),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:R},{prepend:e.withCtx(()=>[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(dt),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(l).saving,disabled:e.unref(l).saving,onClick:W},{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:F},{prepend:e.withCtx(()=>[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(ct),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(l).editMode}])},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(d.value,(q,P)=>(e.openBlock(),e.createElementBlock("div",{key:q.layoutSlug,class:e.normalizeClass(["admin-dashboard__cell",{"admin-dashboard__cell--editing":e.unref(l).editMode}]),draggable:e.unref(l).editMode,style:e.normalizeStyle({gridColumn:`span ${B(q.node)} / span ${B(q.node)}`}),onDragstart:O=>x(P,O),onDragover:I,onDrop:O=>ee(P,O)},[e.createVNode(yn,{node:q.node},null,8,["node"]),e.unref(l).editMode?(e.openBlock(),e.createBlock(Sl,{key:0,onConfigure:O=>ae(q.layoutSlug),onRemove:O=>K(q.layoutSlug)},null,8,["onConfigure","onRemove"])):e.createCommentVNode("",!0),e.unref(l).editMode?(e.openBlock(),e.createElementBlock("span",{key:1,class:"admin-dashboard__resize","aria-label":"Изменить размер",onMousedown:O=>fe(O,q.layoutSlug,B(q.node))},null,40,sr)):e.createCommentVNode("",!0)],46,ir))),128))],2),e.createVNode(er,{open:C.value!==null,mode:C.value??"add",item:M.value,"initial-title":g.value,onClose:_,onAdd:J,onSave:D},null,8,["open","mode","item","initial-title"])]))}}),cr={key:1,class:"admin-home"},dr={class:"admin-home__title"},ur={key:0,class:"admin-home__resources"},mr={class:"admin-home__grid"},fr=["onClick"],pr={class:"admin-home__card-label"},vr={class:"admin-home__card-slug"},gn=e.defineComponent({__name:"HomePage",setup(t){const n=ce(),a=re(),r=Z.useRouter(),o=e.computed(()=>a.user?.name??""),l=e.computed(()=>n.manifest?.resources??[]),i=e.computed(()=>n.manifest?.dashboards??[]),s=e.computed(()=>i.value[0]?.slug??null),u=mn();return e.watch(s,f=>{f&&u.openDashboard(f)},{immediate:!0}),(f,p)=>s.value?(e.openBlock(),e.createBlock(kt,{key:0,slug:s.value},null,8,["slug"])):(e.openBlock(),e.createElementBlock("div",cr,[e.createVNode(e.unref(c.UidCard),{padding:"lg",class:"admin-home__hero"},{default:e.withCtx(()=>[e.createElementVNode("h1",dr,"Добро пожаловать"+e.toDisplayString(o.value?", "+o.value:""),1),p[0]||(p[0]=e.createElementVNode("p",{class:"admin-home__lead"}," Админ-панель готова. Зарегистрируйте DashboardScreen чтобы увидеть widget-grid здесь, либо переходите к ресурсам ниже. ",-1))]),_:1}),l.value.length?(e.openBlock(),e.createElementBlock("section",ur,[p[1]||(p[1]=e.createElementVNode("h2",{class:"admin-home__heading"},"Ресурсы",-1)),e.createElementVNode("ul",mr,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.value,b=>(e.openBlock(),e.createElementBlock("li",{key:b.slug},[e.createElementVNode("button",{type:"button",class:"admin-home__card",onClick:d=>e.unref(r).push({name:`admin.resource.${b.slug}.index`})},[e.createElementVNode("span",pr,e.toDisplayString(b.label),1),e.createElementVNode("span",vr,e.toDisplayString(b.slug),1)],8,fr)]))),128))])])):e.createCommentVNode("",!0)]))}}),hr={class:"admin-status-page"},kn=e.defineComponent({__name:"ForbiddenPage",setup(t){const n=Z.useRouter();return(a,r)=>(e.openBlock(),e.createElementBlock("div",hr,[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]=o=>e.unref(n).replace({name:"admin.home"}))},{default:e.withCtx(()=>[...r[1]||(r[1]=[e.createTextVNode(" На главную ",-1)])]),_:1})]),_:1})]))}}),yr={class:"admin-status-page"},_n=e.defineComponent({__name:"NotFoundPage",setup(t){const n=Z.useRouter();return(a,r)=>(e.openBlock(),e.createElementBlock("div",yr,[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]=o=>e.unref(n).replace({name:"admin.home"}))},{default:e.withCtx(()=>[...r[1]||(r[1]=[e.createTextVNode(" На главную ",-1)])]),_:1})]),_:1})]))}}),gr={class:"admin-settings-page"},kr={class:"admin-settings-page__title"},_r={key:0,class:"admin-settings-page__hint"},br={key:1,class:"admin-settings-page__debug"},bn=e.defineComponent({__name:"SettingsPage",setup(t){const n=Z.useRoute(),a=ce(),r=e.computed(()=>String(n.params.slug??"")),o=e.computed(()=>a.manifest?.settings?.find(l=>l.slug===r.value)??null);return(l,i)=>(e.openBlock(),e.createElementBlock("div",gr,[e.createVNode(e.unref(c.UidCard),{padding:"lg"},{default:e.withCtx(()=>[e.createElementVNode("h1",kr,e.toDisplayString(o.value?.label??r.value),1),o.value?(e.openBlock(),e.createElementBlock("pre",br,e.toDisplayString(JSON.stringify(o.value.fields,null,2)),1)):(e.openBlock(),e.createElementBlock("p",_r," Settings «"+e.toDisplayString(r.value)+"» не найдено в manifest'е. ",1))]),_:1})]))}}),wr={class:"admin-status-page"},Br={class:"admin-status-page__title"},Vr={class:"admin-status-page__hint"},wn=e.defineComponent({__name:"UnknownScreenPage",setup(t){const n=Z.useRoute(),a=e.computed(()=>String(n.params.slug??"")),r=e.computed(()=>String(n.meta?.title??a.value));return(o,l)=>(e.openBlock(),e.createElementBlock("div",wr,[e.createVNode(e.unref(c.UidCard),{padding:"lg",class:"admin-status-page__card"},{default:e.withCtx(()=>[e.createElementVNode("h1",Br,e.toDisplayString(r.value),1),e.createElementVNode("p",Vr,[e.createTextVNode(" Это заглушка для screen «"+e.toDisplayString(a.value)+"». Передайте свой компонент через ",1),l[0]||(l[0]=e.createElementVNode("code",null,"createAdminApp("+e.toDisplayString("{")+" pages: "+e.toDisplayString("{")+" screen: MyScreen "+e.toDisplayString("}")+" "+e.toDisplayString("}")+")",-1)),l[1]||(l[1]=e.createTextVNode(". ",-1))])]),_:1})]))}}),Nr={class:"admin-auth-card__row"},xr=["href"],Cr={key:1,style:{"text-align":"center","font-size":"var(--uid-font-size-xs)",color:"var(--uid-text-secondary)","padding-top":"4px"}},Er=["href"],Bn=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(),o=e.ref(""),l=e.ref(""),i=e.ref(!1),s=e.ref(!1),u=e.ref(null),f=e.ref({}),p=e.computed(()=>f.value.email?.[0]),b=e.computed(()=>f.value.password?.[0]);async function d(){if(!s.value){s.value=!0,u.value=null,f.value={};try{const B=await r.login({email:o.value,password:l.value,remember:i.value});a("success",B)}catch(B){B instanceof Ue?(f.value=B.fields,u.value=B.firstFieldMessage()):B instanceof Me?u.value="Нет соединения с сервером":B instanceof de?u.value=B.message||"Не удалось войти":u.value=B.message}finally{s.value=!1}}}return(B,y)=>(e.openBlock(),e.createElementBlock("form",{class:"admin-auth-card__bd",novalidate:"",onSubmit:e.withModifiers(d,["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),e.createVNode(e.unref(c.UidInput),{modelValue:o.value,"onUpdate:modelValue":y[0]||(y[0]=k=>o.value=k),type:"email",label:"Email",placeholder:"you@company.com",autocomplete:"username",required:!0,disabled:s.value,error:p.value,name:"email"},null,8,["modelValue","disabled","error"]),e.createVNode(e.unref(c.UidInput),{modelValue:l.value,"onUpdate:modelValue":y[1]||(y[1]=k=>l.value=k),type:"password",label:"Пароль",autocomplete:"current-password",required:!0,disabled:s.value,error:b.value,name:"password"},null,8,["modelValue","disabled","error"]),e.createElementVNode("div",Nr,[e.createVNode(e.unref(c.UidCheckbox),{modelValue:i.value,"onUpdate:modelValue":y[2]||(y[2]=k=>i.value=k),disabled:s.value},{default:e.withCtx(()=>[...y[3]||(y[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,xr)):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",Cr,[y[4]||(y[4]=e.createTextVNode(" или войдите через ",-1)),e.createElementVNode("a",{href:t.ssoUrl,class:"admin-auth-card__link"},e.toDisplayString(t.ssoLinkLabel),9,Er)])):e.createCommentVNode("",!0)],32))}}),$r=["value","disabled","aria-label","onInput","onKeydown"],Sr={class:"admin-auth-card__row"},Vn=e.defineComponent({__name:"TwoFactorForm",emits:["success","cancel"],setup(t,{emit:n}){const a=n,r=re(),o=e.ref("totp"),l=e.ref(["","","","","",""]),i=e.ref(""),s=e.ref([]),u=e.ref(!1),f=e.ref(null),p=e.ref(null),b=e.computed(()=>l.value.join("")),d=e.computed(()=>o.value==="totp"?b.value.length===6:i.value.trim().length>0);function B(C,M){M instanceof HTMLInputElement&&(s.value[C]=M)}function y(C,M){const g=M.target,v=g.value.replace(/\D/g,"").slice(-1);l.value[C]=v,g.value=v,v&&C<l.value.length-1&&e.nextTick(()=>s.value[C+1]?.focus()),b.value.length===l.value.length&&w()}function k(C,M){M.key==="Backspace"&&!l.value[C]&&C>0?e.nextTick(()=>s.value[C-1]?.focus()):M.key==="ArrowLeft"&&C>0?(s.value[C-1]?.focus(),M.preventDefault()):M.key==="ArrowRight"&&C<l.value.length-1&&(s.value[C+1]?.focus(),M.preventDefault())}function m(C){const g=(C.clipboardData?.getData("text")??"").replace(/\D/g,"").slice(0,l.value.length);if(g.length!==0){C.preventDefault();for(let v=0;v<l.value.length;v++)l.value[v]=g[v]??"";e.nextTick(()=>{s.value[Math.min(g.length,l.value.length-1)]?.focus(),g.length===l.value.length&&w()})}}async function w(){if(!(u.value||!d.value)){u.value=!0,f.value=null;try{if(o.value==="totp")await r.twoFactorChallenge(b.value);else{const C=await r.twoFactorRecovery(i.value.trim());p.value=C.remaining}a("success")}catch(C){C instanceof Ue?f.value=C.firstFieldMessage()??"Неверный код":C instanceof Me?f.value="Нет соединения с сервером":C instanceof de?f.value=C.message||"Не удалось проверить код":f.value=C.message}finally{u.value=!1}}}function V(){r.cancelChallenge(),a("cancel")}function E(){o.value=o.value==="totp"?"recovery":"totp",f.value=null}return(C,M)=>(e.openBlock(),e.createElementBlock("form",{class:"admin-auth-card__bd",novalidate:"",onSubmit:e.withModifiers(w,["prevent"])},[f.value?(e.openBlock(),e.createBlock(e.unref(c.UidAlert),{key:0,variant:"danger",class:"admin-auth-card__alert",role:"alert"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(f.value),1)]),_:1})):e.createCommentVNode("",!0),p.value!==null?(e.openBlock(),e.createBlock(e.unref(c.UidAlert),{key:1,variant:"info",class:"admin-auth-card__alert",role:"status"},{default:e.withCtx(()=>[e.createTextVNode(" Использован recovery-код. Осталось: "+e.toDisplayString(p.value),1)]),_:1})):e.createCommentVNode("",!0),o.value==="totp"?(e.openBlock(),e.createElementBlock("div",{key:2,class:"admin-code-input",onPaste:m},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.value,(g,v)=>(e.openBlock(),e.createElementBlock("input",{key:v,ref_for:!0,ref:_=>B(v,_),value:l.value[v],type:"text",inputmode:"numeric",autocomplete:"one-time-code",maxlength:"1",disabled:u.value,"aria-label":`Цифра ${v+1}`,onInput:_=>y(v,_),onKeydown:_=>k(v,_)},null,40,$r))),128))],32)):(e.openBlock(),e.createBlock(e.unref(c.UidInput),{key:3,modelValue:i.value,"onUpdate:modelValue":M[0]||(M[0]=g=>i.value=g),type:"text",label:"Recovery-код",autocomplete:"one-time-code",disabled:u.value,name:"recovery-code"},null,8,["modelValue","disabled"])),e.createVNode(e.unref(c.UidButton),{type:"submit",variant:"primary",size:"lg",loading:u.value,disabled:u.value||!d.value},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(u.value?"Проверка…":"Подтвердить"),1)]),_:1},8,["loading","disabled"]),e.createElementVNode("div",Sr,[e.createElementVNode("button",{type:"button",class:"admin-auth-card__link",onClick:E},[o.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:V}," Отмена ")])],32))}}),Ur={class:"admin-auth-page"},Mr={key:0,class:"admin-auth-page__corner"},Dr={class:"admin-auth-card__hd"},Tr=["src","alt"],Ir={key:1,"aria-hidden":"true"},Fr={key:2},Ar={class:"admin-auth-card__title"},Lr={class:"admin-auth-card__sub"},Nn=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=Z.useRouter(),o=Z.useRoute();async function l(){const i=o.query[n.redirectQueryKey];if(typeof i=="string"&&i.length>0&&i.startsWith("/")){await r.push(i);return}await r.push({name:n.homeRouteName})}return e.watch(()=>a.isAuthenticated,i=>{i&&l()}),e.onMounted(()=>{a.isAuthenticated&&l()}),(i,s)=>(e.openBlock(),e.createElementBlock("div",Ur,[t.showCornerActions?(e.openBlock(),e.createElementBlock("div",Mr,[e.createVNode(ft),e.createVNode(pt)])):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",Dr,[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,Tr)):e.unref(a).isChallengePending?(e.openBlock(),e.createElementBlock("span",Ir,"🛡")):t.brandMark?(e.openBlock(),e.createElementBlock("span",Fr,e.toDisplayString(t.brandMark),1)):(e.openBlock(),e.createBlock(He,{key:3,size:40}))],2),e.createElementVNode("div",Ar,[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",Lr,[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(Vn,{key:0,onSuccess:s[0]||(s[0]=()=>{}),onCancel:s[1]||(s[1]=()=>{})})):(e.openBlock(),e.createBlock(Bn,{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"])]))}}),zr={class:"admin-auth-page"},Rr={class:"admin-auth-card__hd"},Pr={class:"admin-auth-card__logo"},qr={class:"admin-auth-card__sub"},jr={class:"admin-auth-card__body"},Or=e.defineComponent({__name:"ForgotPasswordPage",props:{brandName:{default:"Laravel Admin"},loginRouteName:{default:"admin.login"}},setup(t){const n=Z.useRouter(),a=e.ref(""),r=e.ref(!1),o=e.ref(!1);async function l(){if(a.value.trim()===""){X.error("Введите email.");return}o.value=!0;try{const{getAdminClient:i}=await Promise.resolve().then(()=>Q);await i().post("/auth/forgotPassword",{email:a.value.trim()}),r.value=!0}catch{r.value=!0}finally{o.value=!1}}return(i,s)=>(e.openBlock(),e.createElementBlock("div",zr,[e.createVNode(e.unref(c.UidCard),{padding:"none",class:"admin-auth-card"},{default:e.withCtx(()=>[e.createElementVNode("div",Rr,[e.createElementVNode("div",Pr,[e.createVNode(He,{size:40})]),s[2]||(s[2]=e.createElementVNode("div",{class:"admin-auth-card__title"},"Восстановление пароля",-1)),e.createElementVNode("div",qr,e.toDisplayString(r.value?"Если такой email зарегистрирован — мы отправили письмо со ссылкой на сброс.":"Введите email — отправим ссылку для сброса пароля."),1)]),e.createElementVNode("div",jr,[r.value?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("form",{key:0,onSubmit:e.withModifiers(l,["prevent"])},[e.createVNode(e.unref(c.UidInput),{modelValue:a.value,"onUpdate:modelValue":s[0]||(s[0]=u=>a.value=u),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:o.value},{prepend:e.withCtx(()=>[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(Xt),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]=u=>e.unref(n).push({name:t.loginRouteName}))},{default:e.withCtx(()=>[...s[4]||(s[4]=[e.createTextVNode(" ← Назад ко входу ",-1)])]),_:1})])]),_:1})]))}}),Wr={class:"admin-auth-page"},Hr={class:"admin-auth-card__hd"},Kr={class:"admin-auth-card__logo"},Gr={class:"admin-auth-card__body"},Xr={key:0,class:"admin-auth-card__error"},Yr=e.defineComponent({__name:"ResetPasswordPage",props:{loginRouteName:{default:"admin.login"}},setup(t){const n=t,a=Z.useRouter(),r=Z.useRoute(),o=e.computed(()=>String(r.query.token??"")),l=e.ref(String(r.query.email??"")),i=e.ref(""),s=e.ref(""),u=e.ref(!1),f=e.ref("");async function p(){if(f.value="",i.value.length<8){f.value="Пароль должен быть не менее 8 символов.";return}if(i.value!==s.value){f.value="Пароли не совпадают.";return}u.value=!0;try{const{getAdminClient:b}=await Promise.resolve().then(()=>Q);await b().post("/auth/resetPassword",{token:o.value,email:l.value,password:i.value,password_confirmation:s.value}),X.success("Пароль обновлён. Войдите с новым паролем."),await a.push({name:n.loginRouteName})}catch{f.value="Не удалось сбросить пароль. Возможно, ссылка устарела."}finally{u.value=!1}}return(b,d)=>(e.openBlock(),e.createElementBlock("div",Wr,[e.createVNode(e.unref(c.UidCard),{padding:"none",class:"admin-auth-card"},{default:e.withCtx(()=>[e.createElementVNode("div",Hr,[e.createElementVNode("div",Kr,[e.createVNode(He,{size:40})]),d[3]||(d[3]=e.createElementVNode("div",{class:"admin-auth-card__title"},"Новый пароль",-1)),d[4]||(d[4]=e.createElementVNode("div",{class:"admin-auth-card__sub"},"Задайте новый пароль для своего аккаунта.",-1))]),e.createElementVNode("div",Gr,[e.createElementVNode("form",{onSubmit:e.withModifiers(p,["prevent"])},[e.createVNode(e.unref(c.UidInput),{modelValue:l.value,"onUpdate:modelValue":d[0]||(d[0]=B=>l.value=B),type:"email",placeholder:"email",required:""},null,8,["modelValue"]),e.createVNode(e.unref(c.UidInput),{modelValue:i.value,"onUpdate:modelValue":d[1]||(d[1]=B=>i.value=B),type:"password",placeholder:"Новый пароль (мин. 8)",autocomplete:"new-password",required:""},null,8,["modelValue"]),e.createVNode(e.unref(c.UidInput),{modelValue:s.value,"onUpdate:modelValue":d[2]||(d[2]=B=>s.value=B),type:"password",placeholder:"Повторите пароль",autocomplete:"new-password",required:""},null,8,["modelValue"]),f.value?(e.openBlock(),e.createElementBlock("p",Xr,e.toDisplayString(f.value),1)):e.createCommentVNode("",!0),e.createVNode(e.unref(c.UidButton),{type:"submit",variant:"primary",class:"admin-auth-card__submit",loading:u.value},{prepend:e.withCtx(()=>[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(qe),size:14},null,8,["icon"])]),default:e.withCtx(()=>[d[5]||(d[5]=e.createTextVNode(" Сохранить пароль ",-1))]),_:1},8,["loading"])],32)])]),_:1})]))}}),It={page:1,per_page:20,total:0,last_page:1},_t=ie.defineStore("admin-resource-index",()=>{const t=e.ref(null),n=e.ref([]),a=e.ref({...It}),r=e.ref(!1),o=e.ref(!1),l=e.ref(null);let i=null;const s=200,u=e.ref(""),f=e.ref({}),p=e.ref(null),b=e.ref(null),d=e.ref(new Set),B=e.computed(()=>!r.value&&l.value===null&&n.value.length===0),y=e.computed(()=>d.value.size),k=e.computed(()=>d.value.size>0),m=e.computed(()=>l.value!==null),w=e.computed(()=>d.value.size===0||n.value.length===0?"none":n.value.every(I=>d.value.has(V(I)))?"all":"mixed");function V(x){return x.id??x.key??""}function E(x){t.value!==x&&(t.value=x,C(),r.value=!0)}function C(){n.value=[],a.value={...It},r.value=!1,l.value=null,u.value="",f.value={},p.value=null,b.value=null,d.value=new Set}function M(x={}){const I={page:x.page??a.value.page,per_page:x.per_page??a.value.per_page},ee=x.search??u.value;ee&&(I.q=ee);const Y=x.sort??p.value,G=x.direction??b.value;Y&&G!==null&&(I.order=[{column:Y,direction:G}]);const ue=x.filters??f.value,fe={};for(const[he,se]of Object.entries(ue))se==null||se===""||(fe[he]=Array.isArray(se)?se.join(","):se);return Object.keys(fe).length>0&&(I.filters=fe),I}async function g(x={}){if(!t.value)throw new Error("useResourceIndexStore.load() called before setSlug()");r.value=!0,l.value=null,i!==null&&clearTimeout(i),i=setTimeout(()=>{o.value=!0},s);try{const I=H(),ee=M(x),Y=await I.post(`/${t.value}/search`,ee);n.value=Y.data,a.value=Y.meta}catch(I){throw l.value=I instanceof Error?I:new Error(String(I)),I}finally{r.value=!1,o.value=!1,i!==null&&(clearTimeout(i),i=null)}}async function v(x){u.value=x,a.value.page=1,await g()}async function _(x,I){I==null||I===""?delete f.value[x]:f.value[x]=I,a.value.page=1,await g()}async function F(){f.value={},a.value.page=1,await g()}async function R(x,I="asc"){p.value=x,b.value=I,await g()}async function W(x){p.value===x?b.value==="asc"?b.value="desc":b.value==="desc"?(p.value=null,b.value=null):b.value="asc":(p.value=x,b.value="asc"),await g()}async function K(x){a.value.page=x,await g()}function ae(x){const I=new Set(d.value);I.has(x)?I.delete(x):I.add(x),d.value=I}function J(){if(w.value==="all"){d.value=new Set;return}const x=new Set(d.value);for(const I of n.value)x.add(V(I));d.value=x}function D(){d.value=new Set}function S(x){return d.value.has(x)}return{slug:t,items:n,meta:a,loading:r,slowLoading:o,error:l,search:u,filters:f,sortKey:p,sortDirection:b,selection:d,isEmpty:B,hasError:m,hasSelection:k,selectedCount:y,selectionState:w,setSlug:E,reset:C,load:g,setSearch:v,setFilter:_,clearFilters:F,setSort:R,toggleSort:W,setPage:K,toggleRow:ae,toggleAllOnPage:J,clearSelection:D,isSelected:S,rowId:V}}),Zr=Object.freeze(Object.defineProperty({__proto__:null,useResourceIndexStore:_t},Symbol.toStringTag,{value:"Module"})),Ft="d.m.Y H:i:s",Jr="d.m.Y",Qr=/^\d{4}-\d{2}-\d{2}[T\s]\d{2}:\d{2}/;function xn(t,n,a={}){if(t==null)return"";if(!n&&typeof t=="string"&&Qr.test(t))return Qe(t,Ft);switch(n){case"date":return Qe(String(t),a.format??Jr);case"datetime":return Qe(String(t),a.format??Ft);case"money":return ei(t,a.currency??"RUB",a.decimals??2);case"boolean":return ti(t,a.trueLabel??"Да",a.falseLabel??"Нет");case"bytes":return ni(t);default:return String(t)}}function Qe(t,n){const a=new Date(t);if(isNaN(a.getTime()))return t;const r=(i,s=2)=>String(i).padStart(s,"0"),o={d:r(a.getDate()),m:r(a.getMonth()+1),Y:String(a.getFullYear()),y:r(a.getFullYear()%100),H:r(a.getHours()),h:r((a.getHours()+11)%12+1),i:r(a.getMinutes()),s:r(a.getSeconds()),U:String(Math.floor(a.getTime()/1e3)),c:a.toISOString(),N:String((a.getDay()+6)%7+1),w:String(a.getDay())};let l="";for(let i=0;i<n.length;i++){const s=n[i];if(s==="\\"&&i+1<n.length){l+=n[i+1],i++;continue}l+=o[s]??s}return l}function ei(t,n,a){const r=typeof t=="number"?t:Number(t);return isNaN(r)?String(t):`${r.toFixed(a)} ${n}`}function ti(t,n,a){return t===!0||t===1||t==="1"||t==="true"?n:a}function ni(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 At=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:o=>n("set-draft",{...r,from:o.target.value})}),e.h("input",{type:"date",value:r.to??"",class:"admin-toolbar__input",placeholder:"До",onChange:o=>n("set-draft",{...r,to:o.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(o=>e.h("label",{key:o.value,class:"admin-toolbar__list-item admin-toolbar__list-item--checkbox"},[e.h("input",{type:"radio",checked:t.draft===o.value,onChange:()=>n("set-draft",o.value)}),e.h("span",null,o.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)})}}}),ai={class:"admin-toolbar"},oi={class:"admin-toolbar__row admin-toolbar__row--filters"},li={class:"admin-toolbar__search"},ri=["placeholder"],ii={key:0,class:"admin-toolbar__divider"},si={type:"button",class:"admin-toolbar__chip admin-toolbar__chip--active"},ci={class:"admin-toolbar__chip-text"},di=["onClick","onKeydown"],ui={class:"admin-toolbar__popover-actions"},mi={type:"button",class:"admin-toolbar__chip"},fi={class:"admin-toolbar__chip-text"},pi={class:"admin-toolbar__popover-actions"},vi={type:"button",class:"admin-toolbar__chip"},hi=["onClick"],yi={key:0,class:"admin-toolbar__row admin-toolbar__row--actions"},gi={type:"button",class:"admin-toolbar__chip"},ki={class:"admin-toolbar__chip-text"},_i=["onClick"],bi={type:"button",class:"admin-toolbar__chip"},wi=["checked","onChange"],Bi={type:"button",class:"admin-toolbar__chip"},Vi={class:"admin-toolbar__popover-actions"},Lt=4,Ni=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,o=e.ref(a.search);e.watch(()=>a.search,D=>{o.value=D});function l(){o.value!==a.search&&r("update:search",o.value)}function i(D){return D==null||D===""||Array.isArray(D)&&D.length===0?!1:typeof D=="object"&&!Array.isArray(D)?Object.values(D).some(x=>x!==null&&x!==""&&x!==void 0):!0}const s=e.computed(()=>a.filters.filter(D=>i(a.values[D.name]))),u=e.computed(()=>a.filters.filter(D=>!i(a.values[D.name]))),f=e.ref(new Set),p=e.computed(()=>u.value.filter((D,S)=>f.value.has(D.name)||S<Lt)),b=e.computed(()=>u.value.filter((D,S)=>!f.value.has(D.name)&&S>=Lt));function d(D){const S=new Set(f.value);S.add(D),f.value=S}const B=e.computed(()=>a.search!==""||s.value.length>0);function y(D){r("apply-filter",D,null)}function k(D){const S=a.values[D.name];if(D.options&&D.options.length>0){const I=(Array.isArray(S)?S:[S]).map(ee=>D.options?.find(Y=>String(Y.value)===String(ee))?.label??String(ee));return`${D.label}: ${I.join(", ")}`}if(D.type==="date_range"&&S&&typeof S=="object"){const x=S;return`${D.label}: ${x.from??""} – ${x.to??""}`}return D.type==="switcher"?`${D.label}: ${S?"да":"нет"}`:`${D.label}: ${String(S)}`}const m=e.ref({});function w(D){return D in m.value||(m.value[D]=a.values[D]??null),m.value[D]}function V(D,S){m.value={...m.value,[D]:S}}function E(D,S){r("apply-filter",D,m.value[D]??null),S()}function C(D,S,x){if(!x){V(D,S);return}const I=w(D),ee=Array.isArray(I)?[...I]:[],Y=ee.findIndex(G=>String(G)===String(S));Y>=0?ee.splice(Y,1):ee.push(S),V(D,ee)}function M(D,S){const x=w(D);return Array.isArray(x)?x.some(I=>String(I)===String(S)):x!=null&&String(x)===String(S)}const g=e.computed(()=>a.columns.filter(D=>D.groupable===!0&&(D.key??D.name)));function v(D,S){r("group-by",D),S()}function _(D){return String(D.key??D.name??"")}function F(D){return String(D.label??D.name??D.key??"")}function R(D){const S=_(D);return S in a.columnVisibility?a.columnVisibility[S]:!0}function W(D){const S=_(D);r("columns-visibility",{...a.columnVisibility,[S]:!R(D)})}const K=e.ref("");function ae(D){K.value.trim()!==""&&(r("save-view",K.value.trim()),K.value="",D())}function J(D){return sn(D)??null}return(D,S)=>(e.openBlock(),e.createElementBlock("div",ai,[e.createElementVNode("div",oi,[e.createElementVNode("label",li,[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(ut),size:14,class:"admin-toolbar__search-icon"},null,8,["icon"]),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":S[0]||(S[0]=x=>o.value=x),type:"search",placeholder:t.searchPlaceholder,class:"admin-toolbar__search-input",onKeydown:e.withKeys(l,["enter"]),onBlur:l},null,40,ri),[[e.vModelText,o.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,x=>(e.openBlock(),e.createBlock(e.unref(c.UidMenu),{key:`active-${x.name}`},{trigger:e.withCtx(()=>[e.createElementVNode("button",si,[J(x.icon)!==null?(e.openBlock(),e.createBlock(e.unref(c.UidIcon),{key:0,icon:J(x.icon),size:14},null,8,["icon"])):e.createCommentVNode("",!0),e.createElementVNode("span",ci,e.toDisplayString(k(x)),1),e.createElementVNode("span",{role:"button",tabindex:"0","aria-label":"Сбросить фильтр",class:"admin-toolbar__chip-x",onClick:e.withModifiers(I=>y(x.name),["stop"]),onKeydown:e.withKeys(e.withModifiers(I=>y(x.name),["stop"]),["enter"])},[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(ke),size:12},null,8,["icon"])],40,di)])]),default:e.withCtx(()=>[e.createElementVNode("div",{class:"admin-toolbar__popover",onKeydown:S[1]||(S[1]=e.withModifiers(()=>{},["stop"]))},[e.createVNode(e.unref(At),{filter:x,draft:w(x.name),"is-checked":I=>M(x.name,I),onToggleOption:I=>C(x.name,I,x.multiple??!1),onSetDraft:I=>V(x.name,I)},null,8,["filter","draft","is-checked","onToggleOption","onSetDraft"]),e.createElementVNode("div",ui,[e.createVNode(e.unref(c.UidButton),{size:"sm",variant:"ghost",onClick:I=>V(x.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:I=>E(x.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(p.value,x=>(e.openBlock(),e.createBlock(e.unref(c.UidMenu),{key:`inactive-${x.name}`},{trigger:e.withCtx(()=>[e.createElementVNode("button",mi,[J(x.icon)!==null?(e.openBlock(),e.createBlock(e.unref(c.UidIcon),{key:0,icon:J(x.icon),size:14},null,8,["icon"])):e.createCommentVNode("",!0),e.createElementVNode("span",fi,e.toDisplayString(x.label),1)])]),default:e.withCtx(()=>[e.createElementVNode("div",{class:"admin-toolbar__popover",onKeydown:S[2]||(S[2]=e.withModifiers(()=>{},["stop"]))},[e.createVNode(e.unref(At),{filter:x,draft:w(x.name),"is-checked":I=>M(x.name,I),onToggleOption:I=>C(x.name,I,x.multiple??!1),onSetDraft:I=>V(x.name,I)},null,8,["filter","draft","is-checked","onToggleOption","onSetDraft"]),e.createElementVNode("div",pi,[e.createVNode(e.unref(c.UidButton),{size:"sm",variant:"ghost",onClick:I=>V(x.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:I=>E(x.name,()=>{})},{default:e.withCtx(()=>[...S[15]||(S[15]=[e.createTextVNode(" Применить ",-1)])]),_:1},8,["onClick"])])],32)]),_:2},1024))),128)),b.value.length>0?(e.openBlock(),e.createBlock(e.unref(c.UidMenu),{key:1},{trigger:e.withCtx(()=>[e.createElementVNode("button",vi,[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(Oe),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(b.value,x=>(e.openBlock(),e.createElementBlock("button",{key:x.name,type:"button",role:"menuitem",class:"admin-toolbar__list-item",onClick:I=>d(x.name)},[J(x.icon)!==null?(e.openBlock(),e.createBlock(e.unref(c.UidIcon),{key:0,icon:J(x.icon),size:14},null,8,["icon"])):e.createCommentVNode("",!0),e.createTextVNode(" "+e.toDisplayString(x.label),1)],8,hi))),128))],32)]),_:1})):e.createCommentVNode("",!0),S[18]||(S[18]=e.createElementVNode("span",{class:"admin-toolbar__spacer"},null,-1)),B.value?(e.openBlock(),e.createBlock(e.unref(c.UidButton),{key:2,variant:"ghost",size:"md",onClick:S[4]||(S[4]=x=>r("reset"))},{prepend:e.withCtx(()=>[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(dt),size:14},null,8,["icon"])]),default:e.withCtx(()=>[S[17]||(S[17]=e.createTextVNode(" Сбросить ",-1))]),_:1})):e.createCommentVNode("",!0)]),g.value.length>0||t.columns.length>0||t.enableSavedViews?(e.openBlock(),e.createElementBlock("div",yi,[g.value.length>0?(e.openBlock(),e.createBlock(e.unref(c.UidMenu),{key:0},{trigger:e.withCtx(()=>[e.createElementVNode("button",gi,[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(Za),size:14},null,8,["icon"]),e.createElementVNode("span",ki,e.toDisplayString(t.groupBy?`Группа: ${F(t.columns.find(x=>_(x)===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]=x=>v(null,()=>{}))},[t.groupBy?e.createCommentVNode("",!0):(e.openBlock(),e.createBlock(e.unref(c.UidIcon),{key:0,icon:e.unref(qe),size:14},null,8,["icon"])),S[19]||(S[19]=e.createElementVNode("span",null,"Без группировки",-1))]),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(g.value,x=>(e.openBlock(),e.createElementBlock("button",{key:_(x),type:"button",role:"menuitem",class:"admin-toolbar__list-item",onClick:I=>v(_(x),()=>{})},[t.groupBy===_(x)?(e.openBlock(),e.createBlock(e.unref(c.UidIcon),{key:0,icon:e.unref(qe),size:14},null,8,["icon"])):e.createCommentVNode("",!0),e.createElementVNode("span",null,e.toDisplayString(F(x)),1)],8,_i))),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",bi,[e.createVNode(e.unref(c.UidIcon),{icon:e.unref($a),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(x=>_(x)!==""),x=>(e.openBlock(),e.createElementBlock("label",{key:_(x),class:"admin-toolbar__list-item admin-toolbar__list-item--checkbox"},[e.createElementVNode("input",{type:"checkbox",checked:R(x),onChange:I=>W(x)},null,40,wi),e.createElementVNode("span",null,e.toDisplayString(F(x)),1)]))),128))],32)]),_:1})):e.createCommentVNode("",!0),t.enableSavedViews?(e.openBlock(),e.createBlock(e.unref(c.UidMenu),{key:2},{trigger:e.withCtx(()=>[e.createElementVNode("button",Bi,[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(st),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]=x=>K.value=x),type:"text",placeholder:"Название view",class:"admin-toolbar__input",onKeydown:S[9]||(S[9]=e.withKeys(x=>ae(()=>{}),["enter"]))},null,544),[[e.vModelText,K.value]]),e.createElementVNode("div",Vi,[e.createVNode(e.unref(c.UidButton),{size:"sm",variant:"primary",disabled:K.value.trim()==="",onClick:S[10]||(S[10]=x=>ae(()=>{}))},{default:e.withCtx(()=>[...S[22]||(S[22]=[e.createTextVNode(" Сохранить view ",-1)])]),_:1},8,["disabled"])])],32)]),_:1})):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0)]))}}),xi=["title"],Ci=["disabled"],Ei=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,o=e.ref(!1),l=e.ref(""),i=e.ref(!1),s=e.ref(null);async function u(){!a.editable||i.value||(l.value=a.value===null||a.value===void 0?"":String(a.value),o.value=!0,await e.nextTick(),s.value?.focus(),s.value?.select())}function f(){o.value=!1}async function p(){if(!(!o.value||i.value)){if(l.value===String(a.value??"")){o.value=!1;return}i.value=!0;try{const{getAdminClient:d}=await Promise.resolve().then(()=>Q);await d().post(`/${a.resourceSlug}/inlineUpdate`,{id:a.rowId,column:a.column,value:l.value}),r("saved",l.value),o.value=!1}catch(d){typeof console<"u"&&console.error("[admin] inline-update failed:",d),X.error(`Не удалось обновить «${a.column}».`)}finally{i.value=!1}}}function b(d){d.key==="Enter"?(d.preventDefault(),p()):d.key==="Escape"&&(d.preventDefault(),f())}return(d,B)=>o.value?e.withDirectives((e.openBlock(),e.createElementBlock("input",{key:1,ref_key:"inputRef",ref:s,"onUpdate:modelValue":B[0]||(B[0]=y=>l.value=y),type:"text",class:"admin-inline-edit__input",disabled:i.value,onKeydown:b,onBlur:p,onClick:B[1]||(B[1]=e.withModifiers(()=>{},["stop"]))},null,40,Ci)),[[e.vModelText,l.value]]):(e.openBlock(),e.createElementBlock("span",{key:0,class:e.normalizeClass(["admin-inline-edit",{"admin-inline-edit--editable":t.editable}]),title:t.editable?"Двойной клик для редактирования":void 0,onDblclick:e.withModifiers(u,["stop"])},[e.renderSlot(d.$slots,"default",{},()=>[e.createTextVNode(e.toDisplayString(t.value),1)])],42,xi))}}),$i={class:"admin-page admin-resource-index"},Si={class:"admin-page__hd"},Ui={class:"admin-page__title-wrap"},Mi={class:"admin-page__title-row"},Di={class:"admin-page__title"},Ti={key:0,class:"admin-page__live",role:"status"},Ii={key:0,class:"admin-page__count"},Fi={class:"admin-page__actions"},Ai={class:"admin-page__view-row"},Li={class:"admin-page__view-name"},zi={key:0,class:"admin-page__view-badge"},Ri=["onClick"],Pi={key:0,class:"admin-bulk-toolbar",role:"toolbar"},qi={class:"admin-bulk-toolbar__count"},ji={key:2,class:"admin-resource-index__loading"},Oi={key:5,class:"admin-resource-index__table"},Wi=["draggable","onDragstart","onDrop"],Hi={key:1,class:"admin-resource-index__row-actions"},Ki=["onClick"],Gi=["onClick"],Xi=["onClick"],Yi=["onClick"],Zi=["onClick"],Ji={class:"admin-cell-truncate"},Qi=["title"],es={key:6,class:"admin-resource-index__footer"},zt="__row_actions__",Rt="__row_reorder__",Cn=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=t,r=n,o=_t(),l=ce(),i=yt(),s=Z.useRouter(),u=e.computed(()=>l.getResource(a.slug)),f=e.computed(()=>a.title??u.value?.label??a.slug),p=e.computed(()=>{if(a.createRouteName!==null)return s.hasRoute(a.createRouteName)?a.createRouteName:null;const N=`admin.resource.${a.slug}.create`;return s.hasRoute(N)?N:null}),b=e.computed(()=>(u.value?.actions??[]).map(h=>({key:String(h.key??h.name??""),label:String(h.label??h.name??h.key??""),confirm:typeof h.confirm=="string"?h.confirm:void 0,icon:typeof h.icon=="string"?h.icon:void 0})).filter(h=>h.key!==""&&h.label!==""));async function d(N){if(!(N.confirm&&!window.confirm(N.confirm))){r("header-action",N.key);try{i.start();const{getAdminClient:h}=await Promise.resolve().then(()=>Q),T=await h().post(`/${a.slug}/action`,{key:N.key,ids:[...o.selection]});await o.load().catch(()=>{}),X.success(T?.message??`Action «${N.label}» применён к ${T?.affected??0} записям.`)}catch(h){typeof console<"u"&&console.error("[admin] header-action failed:",h),X.error(`Не удалось выполнить action «${N.label}».`)}finally{i.end()}}}async function B(N="csv"){r("header-action","export");try{i.start();const{getAdminClient:h}=await Promise.resolve().then(()=>Q),T=await h().post(`/${a.slug}/export`,{format:N,filters:o.filters,search:o.search},{responseType:"blob"}),z=URL.createObjectURL(T),te=document.createElement("a");te.href=z,te.download=`${a.slug}-${new Date().toISOString().slice(0,10)}.${N}`,document.body.appendChild(te),te.click(),te.remove(),URL.revokeObjectURL(z)}catch(h){typeof console<"u"&&console.error("[admin] export failed:",h),X.error(`Не удалось экспортировать данные в формате ${N.toUpperCase()}.`)}finally{i.end()}}const y=e.ref(null);function k(){r("import"),y.value?.click()}async function m(N){const h=N.target,U=h.files?.[0];if(U)try{i.start();const{getAdminClient:T}=await Promise.resolve().then(()=>Q),z=T(),te=new FormData;te.append("file",U),te.append("resource",a.slug);const Fe=await z.post("/import/upload",te),Xe=await z.post("/import/preview",{resource:a.slug,upload_id:Fe.upload_id}),Ye=await z.post("/import/start",{resource:a.slug,upload_id:Fe.upload_id,mapping:Xe.mapping}),$t=await w(z,Ye.process_id),St=$t.imported??0,Ut=$t.failed??0;Ut>0?X.warning(`Импорт завершён с ошибками: ${St} записей, ${Ut} ошибок.`):X.success(`Импортировано записей: ${St}.`),await o.load().catch(()=>{})}catch(T){typeof console<"u"&&console.error("[admin] import failed:",T),X.error("Импорт не удался. Проверьте формат файла и поля ресурса либо обратитесь к администратору.")}finally{h.value="",i.end()}}async function w(N,h){const U=Date.now()+9e4;for(;Date.now()<U;){await new Promise(z=>setTimeout(z,800));const T=await N.get(`/import/status?process_id=${encodeURIComponent(h)}`);if(T.status==="done"||T.status==="failed")return T}return{status:"failed",failed:1}}const V=e.computed(()=>(u.value?.features??{}).reorderable===!0),E=e.computed(()=>{const h=(u.value?.columns??[]).map(T=>{const z=T;return{key:String(z.key??z.name??""),label:String(z.label??z.name??""),sortable:!!z.sortable,align:z.align??"left",width:typeof z.width=="string"?z.width:void 0}}).filter(T=>T.key).filter(T=>J.value[T.key]!==!1);return[...V.value?[{key:Rt,label:"",sortable:!1,align:"center",width:"32px"}]:[],...h,{key:zt,label:"",sortable:!1,align:"right",width:"120px"}]});function C(N){const h=u.value?.columns??[];for(const U of h){const T=U;if(String(T.key??T.name??"")===N)return T.editable!==null&&T.editable!==void 0}return!1}const M=e.computed(()=>{const N=u.value?.columns??[],h={};for(const U of N){const T=U,z=String(T.key??T.name??"");z&&(h[z]={preset:typeof T.preset=="string"?T.preset:void 0,meta:T.meta??{}})}return h});function g(N,h){const T=h?.row?.[N],z=M.value[N];return xn(T,z?.preset,z?.meta??{})}function v(N){return N?.row}const _=e.computed(()=>o.search!==""||Object.keys(o.filters).length>0),F=e.computed(()=>!o.isEmpty||_.value),R=e.computed(()=>u.value?.filters??[]),W=e.computed(()=>u.value?.columns??[]),K=e.computed(()=>`Поиск по ${(u.value?.label??a.slug).toLowerCase()}…`),ae=e.ref(null),J=e.ref({});async function D(N,h){await o.setFilter(N,h)}async function S(N){await o.setSearch(N)}async function x(){o.search="",await o.clearFilters()}async function I(N){ae.value=N,await o.load({group_by:N})}function ee(N){J.value=N}const Y=e.ref([]),G=e.ref(null);async function ue(){try{const{getAdminClient:N}=await Promise.resolve().then(()=>Q),U=await N().get(`/${a.slug}_views/list`);Y.value=U.data??[]}catch{Y.value=[]}}async function fe(N){G.value=N.id;const h=N.state;o.search=h.search??"",o.filters={...h.filters??{}},o.sortKey=h.sort?.key??null,o.sortDirection=h.sort?.direction??null,ae.value=h.group_by??null,J.value={...h.columns??{}},o.meta.page=1,await Te()}async function he(){G.value=null,o.search="",o.filters={},o.sortKey=null,o.sortDirection=null,ae.value=null,J.value={},o.meta.page=1,await Te()}async function se(N,h){if(h?.stopPropagation(),!!N.owned&&window.confirm(`Удалить view «${N.name}»?`))try{i.start();const{getAdminClient:U}=await Promise.resolve().then(()=>Q);await U().post(`/${a.slug}_views/delete`,{id:N.id}),G.value===N.id&&(G.value=null),await ue()}catch(U){typeof console<"u"&&console.error("[admin] delete-view failed:",U)}finally{i.end()}}async function Ge(N){try{i.start();const{getAdminClient:h}=await Promise.resolve().then(()=>Q),T=await h().post(`/${a.slug}_views/create`,{name:N,state:{search:o.search,filters:o.filters,sort:{key:o.sortKey,direction:o.sortDirection},group_by:ae.value,columns:J.value}});T?.view&&(G.value=T.view.id),await ue(),X.success("Представление сохранено.")}catch(h){typeof console<"u"&&console.error("[admin] save-view failed:",h),X.error("Не удалось сохранить view. Возможно, недостаточно прав либо ресурс не зарегистрирован.")}finally{i.end()}}const A=e.computed(()=>{const N=o.meta.total;return N===0?"":`${o.items.length} из ${N} ${L(N)}`});function L(N){const h=N%10,U=N%100;return h===1&&U!==11?"запись":h>=2&&h<=4&&(U<10||U>=20)?"записи":"записей"}const q=e.ref(null),P=e.ref(0);let O=null;e.watch(()=>o.loading,(N,h)=>{h&&!N&&o.error===null&&(q.value=Date.now())}),e.onMounted(()=>{O=setInterval(()=>{P.value+=1},3e4)}),e.onUnmounted(()=>{O!==null&&clearInterval(O)});const oe=e.computed(()=>{if(P.value,q.value===null)return null;const N=Math.floor((Date.now()-q.value)/1e3);if(N<5)return"обновлено только что";if(N<60)return`обновлено ${N} сек назад`;const h=Math.floor(N/60);if(h<60)return`обновлено ${h} мин назад`;const U=Math.floor(h/60);return U<24?`обновлено ${U} ч назад`:"обновлено более суток назад"}),Jn=e.computed(()=>{if(G.value!==null){const h=Y.value.find(U=>U.id===G.value);if(h)return h.name}return`Все ${(u.value?.label??a.slug).toLowerCase()}`});async function Te(){i.start();try{await o.load()}catch{}finally{i.end()}}e.onMounted(async()=>{o.setSlug(a.slug),l.manifest===null&&await l.load().catch(()=>{}),ue(),await Te()}),e.watch(()=>a.slug,async(N,h)=>{N!==h&&(o.setSlug(N),G.value=null,ue(),await Te())});async function Qn(N){await e.nextTick(),await o.setSort(N,o.sortDirection)}async function ea(N){await e.nextTick(),await o.setSort(o.sortKey,N)}function ta(N){o.selection=N}async function na(N){await o.setPage(N)}function pe(N){const h=N?.id??N?.key;return typeof h=="string"||typeof h=="number"?h:null}function aa(N){r("row-click",N);const h=pe(N);h!==null&&s.push({name:`admin.resource.${a.slug}.view`,params:{id:String(h)}})}function oa(N,h){h?.stopPropagation();const U=pe(N);U!==null&&s.push({name:`admin.resource.${a.slug}.view`,params:{id:String(U)}})}function la(N,h){h?.stopPropagation();const U=pe(N);U!==null&&s.push({name:`admin.resource.${a.slug}.edit`,params:{id:String(U)}})}async function ra(N,h){h?.stopPropagation();const U=pe(N);if(U!==null&&window.confirm("Удалить запись?"))try{i.start();const{getAdminClient:T}=await Promise.resolve().then(()=>Q);await T().post(`/${a.slug}/delete`,{id:U}),await o.load().catch(()=>{}),X.success("Запись удалена.")}catch(T){typeof console<"u"&&console.error("[admin] delete failed:",T),X.error("Не удалось удалить запись.")}finally{i.end()}}function ia(N){return N.deleted_at!==null&&N.deleted_at!==void 0}async function sa(N,h){h?.stopPropagation();const U=pe(N);if(U!==null)try{i.start();const{getAdminClient:T}=await Promise.resolve().then(()=>Q);await T().post(`/${a.slug}/restore`,{id:U}),await o.load().catch(()=>{}),X.success("Запись восстановлена.")}catch(T){typeof console<"u"&&console.error("[admin] restore failed:",T),X.error("Не удалось восстановить запись.")}finally{i.end()}}const Ne=e.ref(null);function ca(N,h){if(!V.value||!h.dataTransfer)return;if(!h.target?.closest('[data-row-drag-handle="true"]')){h.preventDefault();return}Ne.value=N,h.dataTransfer.effectAllowed="move",h.dataTransfer.setData("text/plain",String(N))}function da(N){V.value&&Ne.value!==null&&N.preventDefault()}async function ua(N,h){if(h.preventDefault(),!V.value||Ne.value===null)return;const U=Ne.value;if(Ne.value=null,U===N)return;const T=[...o.items],[z]=T.splice(U,1);T.splice(N,0,z),o.items=T;try{i.start();const{getAdminClient:te}=await Promise.resolve().then(()=>Q),Fe=te(),Xe=T.map(Ye=>o.rowId(Ye));await Fe.post(`/${a.slug}/reorder`,{ids:Xe}),X.success("Порядок сохранён.")}catch(te){typeof console<"u"&&console.error("[admin] reorder failed:",te),X.error("Не удалось сохранить порядок."),await o.load().catch(()=>{})}finally{i.end()}}async function ma(N,h){h?.stopPropagation();const U=pe(N);if(U!==null&&window.confirm("Удалить запись НАВСЕГДА? Действие необратимо."))try{i.start();const{getAdminClient:T}=await Promise.resolve().then(()=>Q);await T().post(`/${a.slug}/forceDelete`,{id:U}),await o.load().catch(()=>{}),X.success("Запись удалена навсегда.")}catch(T){typeof console<"u"&&console.error("[admin] force-delete failed:",T),X.error("Не удалось удалить запись навсегда.")}finally{i.end()}}function Ie(N){r("bulk-action",N,[...o.selection])}async function Et(){await o.load().catch(()=>{})}return(N,h)=>(e.openBlock(),e.createElementBlock("section",$i,[e.createElementVNode("header",Si,[e.createElementVNode("div",Ui,[e.createElementVNode("div",Mi,[e.createElementVNode("h1",Di,e.toDisplayString(f.value),1),oe.value?(e.openBlock(),e.createElementBlock("span",Ti,[h[10]||(h[10]=e.createElementVNode("span",{class:"admin-page__live-dot","aria-hidden":"true"},null,-1)),e.createTextVNode(" "+e.toDisplayString(oe.value),1)])):e.createCommentVNode("",!0)]),t.subtitle||A.value?(e.openBlock(),e.createElementBlock("div",Ii,[t.subtitle?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createTextVNode(e.toDisplayString(t.subtitle),1)],64)):e.createCommentVNode("",!0),t.subtitle&&A.value?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createTextVNode(" · ")],64)):e.createCommentVNode("",!0),A.value?(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[e.createTextVNode(e.toDisplayString(A.value),1)],64)):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0)]),e.createElementVNode("div",Fi,[e.renderSlot(N.$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(st),size:14},null,8,["icon"])]),append:e.withCtx(()=>[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(Ot),size:14},null,8,["icon"])]),default:e.withCtx(()=>[e.createTextVNode(" "+e.toDisplayString(Jn.value)+" ",1)]),_:1})]),default:e.withCtx(()=>[e.createVNode(e.unref(c.UidMenuItem),{onClick:he},{default:e.withCtx(()=>[e.createTextVNode(" Все "+e.toDisplayString((u.value?.label??t.slug).toLowerCase()),1)]),_:1}),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(Y.value,U=>(e.openBlock(),e.createBlock(e.unref(c.UidMenuItem),{key:U.id,onClick:T=>fe(U)},{default:e.withCtx(()=>[e.createElementVNode("span",Ai,[e.createElementVNode("span",Li,[e.createTextVNode(e.toDisplayString(U.name)+" ",1),U.is_default?(e.openBlock(),e.createElementBlock("span",zi,"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(T=>se(U,T),["stop"])},[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(ge),size:12},null,8,["icon"])],8,Ri)):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(Ht),size:16},null,8,["icon"])]),_:1})]),default:e.withCtx(()=>[e.createVNode(e.unref(c.UidMenuItem),{onClick:Et},{default:e.withCtx(()=>[...h[11]||(h[11]=[e.createTextVNode("Обновить",-1)])]),_:1}),e.createVNode(e.unref(c.UidMenuItem),{onClick:h[0]||(h[0]=U=>B("csv"))},{default:e.withCtx(()=>[...h[12]||(h[12]=[e.createTextVNode("Экспорт CSV",-1)])]),_:1}),e.createVNode(e.unref(c.UidMenuItem),{onClick:h[1]||(h[1]=U=>B("json"))},{default:e.withCtx(()=>[...h[13]||(h[13]=[e.createTextVNode("Экспорт JSON",-1)])]),_:1}),e.createVNode(e.unref(c.UidMenuItem),{onClick:h[2]||(h[2]=U=>B("xlsx"))},{default:e.withCtx(()=>[...h[14]||(h[14]=[e.createTextVNode("Экспорт XLSX",-1)])]),_:1}),e.createVNode(e.unref(c.UidMenuItem),{onClick:h[3]||(h[3]=U=>B("pdf"))},{default:e.withCtx(()=>[...h[15]||(h[15]=[e.createTextVNode("Экспорт PDF",-1)])]),_:1}),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(b.value,U=>(e.openBlock(),e.createBlock(e.unref(c.UidMenuItem),{key:U.key,onClick:T=>d(U)},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(U.label),1)]),_:2},1032,["onClick"]))),128)),e.renderSlot(N.$slots,"header-menu")]),_:3}),e.createVNode(e.unref(c.UidButton),{variant:"secondary",size:"md",onClick:k},{prepend:e.withCtx(()=>[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(Qt),size:14},null,8,["icon"])]),default:e.withCtx(()=>[h[16]||(h[16]=e.createTextVNode(" Import ",-1))]),_:1}),e.createElementVNode("input",{ref_key:"importInput",ref:y,type:"file",class:"admin-page__import-input",accept:".csv,.json,.xlsx,.xls,application/json,text/csv",onChange:m},null,544),p.value?(e.openBlock(),e.createBlock(e.unref(c.UidButton),{key:0,variant:"primary",size:"md",onClick:h[4]||(h[4]=U=>N.$router.push({name:p.value}))},{prepend:e.withCtx(()=>[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(Oe),size:14},null,8,["icon"])]),default:e.withCtx(()=>[e.createTextVNode(" "+e.toDisplayString(t.createLabel),1)]),_:1})):e.createCommentVNode("",!0)])]),e.unref(o).hasSelection?(e.openBlock(),e.createElementBlock("div",Pi,[e.createElementVNode("span",qi,[h[17]||(h[17]=e.createTextVNode(" Выбрано ",-1)),e.createElementVNode("b",null,e.toDisplayString(e.unref(o).selectedCount),1)]),h[23]||(h[23]=e.createElementVNode("span",{class:"admin-bulk-toolbar__divider"},null,-1)),e.createVNode(e.unref(c.UidButton),{size:"sm",variant:"ghost",onClick:h[5]||(h[5]=U=>Ie("publish"))},{default:e.withCtx(()=>[...h[18]||(h[18]=[e.createTextVNode("Опубликовать",-1)])]),_:1}),e.createVNode(e.unref(c.UidButton),{size:"sm",variant:"ghost",onClick:h[6]||(h[6]=U=>Ie("archive"))},{default:e.withCtx(()=>[...h[19]||(h[19]=[e.createTextVNode("Архивировать",-1)])]),_:1}),e.createVNode(e.unref(c.UidButton),{size:"sm",variant:"ghost",onClick:h[7]||(h[7]=U=>Ie("export"))},{default:e.withCtx(()=>[...h[20]||(h[20]=[e.createTextVNode("Экспорт",-1)])]),_:1}),e.createVNode(e.unref(c.UidButton),{size:"sm",variant:"danger",onClick:h[8]||(h[8]=U=>Ie("delete"))},{default:e.withCtx(()=>[...h[21]||(h[21]=[e.createTextVNode("Удалить",-1)])]),_:1}),h[24]||(h[24]=e.createElementVNode("span",{class:"admin-bulk-toolbar__spacer"},null,-1)),e.createVNode(e.unref(c.UidButton),{size:"sm",variant:"ghost",onClick:e.unref(o).clearSelection},{default:e.withCtx(()=>[...h[22]||(h[22]=[e.createTextVNode(" Снять выделение ",-1)])]),_:1},8,["onClick"])])):F.value?(e.openBlock(),e.createBlock(Ni,{key:1,search:e.unref(o).search,"search-placeholder":K.value,filters:R.value,values:e.unref(o).filters,columns:W.value,"group-by":ae.value,"column-visibility":J.value,"onUpdate:search":S,onApplyFilter:D,onReset:x,onGroupBy:I,onColumnsVisibility:ee,onSaveView:Ge},{extra:e.withCtx(()=>[e.renderSlot(N.$slots,"filters",{filters:e.unref(o).filters,setFilter:e.unref(o).setFilter})]),_:3},8,["search","search-placeholder","filters","values","columns","group-by","column-visibility"])):e.createCommentVNode("",!0),e.unref(o).loading&&e.unref(o).items.length===0?(e.openBlock(),e.createElementBlock("div",ji,[e.unref(o).slowLoading?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},e.renderList(8,U=>e.createVNode(e.unref(c.UidSkeleton),{key:U,height:"40px"})),64)):e.createCommentVNode("",!0)])):e.unref(o).hasError?(e.openBlock(),e.createBlock(e.unref(c.UidErrorState),{key:3,title:"Не удалось загрузить данные",description:e.unref(o).error?.message??"Попробуйте обновить страницу.",class:"admin-resource-index__state"},{actions:e.withCtx(()=>[e.createVNode(e.unref(c.UidButton),{variant:"primary",onClick:Et},{default:e.withCtx(()=>[...h[25]||(h[25]=[e.createTextVNode("Обновить",-1)])]),_:1})]),_:1},8,["description"])):e.unref(o).isEmpty?(e.openBlock(),e.createBlock(e.unref(c.UidEmptyState),{key:4,title:"Пока пусто",description:"Создайте первую запись или измените фильтры.",class:"admin-resource-index__state"},{actions:e.withCtx(()=>[t.createRouteName?(e.openBlock(),e.createBlock(e.unref(c.UidButton),{key:0,variant:"primary",onClick:h[9]||(h[9]=U=>N.$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",Oi,[e.createVNode(e.unref(c.UidTable),{columns:E.value,data:e.unref(o).items,"sort-key":e.unref(o).sortKey,"sort-direction":e.unref(o).sortDirection,selectable:"",selection:e.unref(o).selection,"row-key":U=>e.unref(o).rowId(U),"onUpdate:sortKey":Qn,"onUpdate:sortDirection":ea,"onUpdate:selection":ta,onRowClick:aa},e.createSlots({_:2},[e.renderList(E.value,U=>({name:U.key,fn:e.withCtx(T=>[U.key===Rt?(e.openBlock(),e.createElementBlock("span",{key:0,class:"admin-resource-index__row-drag","data-row-drag-handle":"true",draggable:V.value,title:"Перетащить",onDragstart:z=>ca(e.unref(o).items.indexOf(v(T)??{}),z),onDragover:da,onDrop:z=>ua(e.unref(o).items.indexOf(v(T)??{}),z)},[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(Gt),size:14},null,8,["icon"])],40,Wi)):U.key===zt?(e.openBlock(),e.createElementBlock("div",Hi,[e.createElementVNode("button",{type:"button",class:"admin-resource-index__row-action",title:"Просмотр",onClick:e.withModifiers(z=>oa(v(T)??{},z),["stop"])},[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(Ma),size:16},null,8,["icon"])],8,Ki),ia(v(T)??{})?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createElementVNode("button",{type:"button",class:"admin-resource-index__row-action",title:"Восстановить",onClick:e.withModifiers(z=>sa(v(T)??{},z),["stop"])},[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(dt),size:16},null,8,["icon"])],8,Yi),e.createElementVNode("button",{type:"button",class:"admin-resource-index__row-action admin-resource-index__row-action--danger",title:"Удалить навсегда",onClick:e.withModifiers(z=>ma(v(T)??{},z),["stop"])},[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(ge),size:16},null,8,["icon"])],8,Zi)],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createElementVNode("button",{type:"button",class:"admin-resource-index__row-action",title:"Редактировать",onClick:e.withModifiers(z=>la(v(T)??{},z),["stop"])},[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(ct),size:16},null,8,["icon"])],8,Gi),e.createElementVNode("button",{type:"button",class:"admin-resource-index__row-action admin-resource-index__row-action--danger",title:"Удалить",onClick:e.withModifiers(z=>ra(v(T)??{},z),["stop"])},[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(ge),size:16},null,8,["icon"])],8,Xi)],64))])):e.renderSlot(N.$slots,`cell-${U.key}`,{key:2,row:v(T)},()=>[C(U.key)?(e.openBlock(),e.createBlock(Ei,{key:0,"resource-slug":t.slug,"row-id":pe(v(T)??{})??"",column:U.key,value:(v(T)??{})[U.key],editable:!0,onSaved:z=>{const te=v(T);te&&(te[U.key]=z)}},{default:e.withCtx(()=>[e.createElementVNode("span",Ji,e.toDisplayString(g(U.key,T)),1)]),_:2},1032,["resource-slug","row-id","column","value","onSaved"])):(e.openBlock(),e.createElementBlock("span",{key:1,class:"admin-cell-truncate",title:g(U.key,T)},e.toDisplayString(g(U.key,T)),9,Qi))])])}))]),1032,["columns","data","sort-key","sort-direction","selection","row-key"])])),!e.unref(o).loading&&!e.unref(o).hasError&&!e.unref(o).isEmpty?(e.openBlock(),e.createElementBlock("footer",es,[e.createVNode(e.unref(c.UidPagination),{"model-value":e.unref(o).meta.page,total:e.unref(o).meta.total,"per-page":e.unref(o).meta.per_page,"onUpdate:modelValue":na},null,8,["model-value","total","per-page"])])):e.createCommentVNode("",!0)]))}}),bt=ie.defineStore("admin-resource-form",()=>{const t=e.ref(null),n=e.ref("create"),a=e.ref(null),r=e.ref({}),o=e.ref({}),l=e.ref({}),i=e.ref(!1),s=e.ref(!1),u=e.ref(!1),f=e.ref(null),p=e.computed(()=>n.value==="create"),b=e.computed(()=>n.value==="edit"),d=e.computed(()=>n.value==="view"),B=e.computed(()=>f.value!==null),y=e.computed(()=>{const _=r.value,F=o.value,R=new Set([...Object.keys(_),...Object.keys(F)]);for(const W of R)if(!Object.is(_[W],F[W]))if(typeof _[W]=="object"||typeof F[W]=="object"){if(JSON.stringify(_[W])!==JSON.stringify(F[W]))return!0}else return!0;return!1});function k(_,F){for(const R of Object.keys(_))delete _[R];Object.assign(_,F)}function m(){k(r.value,{}),k(o.value,{}),l.value={},i.value=!1,s.value=!1,u.value=!1,f.value=null,a.value=null}function w(_,F={}){t.value=_,n.value="create",a.value=null,k(r.value,F),k(o.value,F),l.value={},f.value=null}async function V(_,F,R="edit"){t.value=_,n.value=R,a.value=F,i.value=!0,f.value=null,l.value={};try{const K=await H().get(`/${_}/read`,{params:{id:F}});k(r.value,K.record),k(o.value,K.record)}catch(W){throw f.value=W instanceof Error?W:new Error(String(W)),W}finally{i.value=!1}}function E(_,F){if(r.value[_]=F,l.value[_]){const R={...l.value};delete R[_],l.value=R}}function C(_){l.value={..._}}function M(){l.value={}}async function g(){if(!t.value)throw new Error("useResourceFormStore.save() before slug set");if(s.value)throw new Error("Already saving");s.value=!0,f.value=null,l.value={};try{const _=H(),F=n.value==="create"?`/${t.value}/create`:`/${t.value}/update`,R=n.value==="create"?r.value:{id:a.value,...r.value},W=await _.post(F,R),K=W.record?.id??W.id;if(K===void 0)throw new Error("save: backend response does not contain record.id");return a.value=K,k(o.value,{...r.value}),n.value="edit",K}catch(_){throw _ instanceof Ue?l.value={..._.fields}:(_ instanceof de||_ instanceof Error)&&(f.value=_),_}finally{s.value=!1}}async function v(){if(!t.value||a.value===null)throw new Error("Nothing to delete");if(u.value)throw new Error("Already deleting");u.value=!0,f.value=null;try{await H().post(`/${t.value}/delete`,{id:a.value})}catch(_){throw _ instanceof Error&&(f.value=_),_}finally{u.value=!1}}return{slug:t,mode:n,recordId:a,state:r,initial:o,errors:l,loading:i,saving:s,deleting:u,error:f,isCreate:p,isEdit:b,isView:d,isDirty:y,hasError:B,reset:m,prepareCreate:w,load:V,setField:E,setErrors:C,clearErrors:M,save:g,destroy:v}}),be=Ke(),we=Ke(),ts=be.register,wt=be.get,ns=be.has,as=be.list,os=we.register,nt=we.get,ls=we.has,rs=we.list;function is(){be.clear(),we.clear()}function En(t){t.fields&&be.registerBundle(t.fields),t.layouts&&we.registerBundle(t.layouts)}const Bt=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}))}}),Vt=e.defineComponent({__name:"FieldRenderer",props:{node:{}},setup(t){const n=t,a=e.computed(()=>wt(n.node.type)),r=e.computed(()=>{const{type:o,attributes:l,...i}=n.node;return{...i,...l??{}}});return(o,l)=>a.value?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(a.value),e.normalizeProps(e.mergeProps({key:0},r.value)),null,16)):(e.openBlock(),e.createBlock(Bt,{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 i=nt(n.node.type);return i?{kind:"layout",component:i}:{kind:"unknown"}}const l=nt(n.node.type);return l?{kind:"layout",component:l}:wt(n.node.type)?{kind:"field"}:{kind:"unknown"}}),r=e.computed(()=>{const{type:l,kind:i,...s}=n.node;return s}),o=e.computed(()=>n.node);return(l,i)=>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(Vt,{key:1,node:o.value},null,8,["node"])):(e.openBlock(),e.createBlock(Bt,{key:2,type:t.node.type,name:t.node.name},null,8,["type","name"]))}}),ss={class:"admin-page admin-resource-form"},cs={class:"admin-page__hd"},ds={class:"admin-page__title-wrap"},us={class:"admin-page__title"},ms={class:"admin-page__actions"},fs={key:1,class:"admin-resource-form__loading"},ps={key:3,class:"admin-resource-form__savebar"},at=e.defineComponent({__name:"ResourceFormPage",props:{slug:{},id:{default:null},indexRouteName:{default:null}},setup(t){const n=t,a=bt(),r=ce(),o=Z.useRouter(),l=ne.provideFormState(a.state,a.errors);e.watch(()=>a.errors,k=>{l.setErrors({...k})});const i=e.computed(()=>r.getResource(n.slug)),s=e.computed(()=>i.value?.fields??[]),u=e.computed(()=>a.isCreate?`Создать: ${i.value?.label??n.slug}`:`${i.value?.label??n.slug}: запись #${n.id}`),f=e.computed(()=>{const k=a.state.status;return typeof k=="string"?k:null}),p=e.computed(()=>{switch(f.value){case"published":return"success";case"review":case"draft":return"warning";case"archived":return"danger";default:return"default"}});e.onMounted(async()=>{r.manifest===null&&await r.load().catch(()=>{}),n.id!==null&&n.id!==void 0?await a.load(n.slug,n.id,"edit").catch(()=>{}):a.prepareCreate(n.slug)}),e.watch(()=>[n.slug,n.id],async([k,m])=>{m!=null?await a.load(k,m,"edit").catch(()=>{}):a.prepareCreate(k)});async function b(){try{const k=await a.save();a.isCreate&&o.push({name:`admin.resource.${n.slug}.edit`,params:{id:k}}).catch(()=>{})}catch{}}const d=e.computed(()=>n.indexRouteName??`admin.resource.${n.slug}.index`);async function B(){confirm("Удалить запись?")&&(await a.destroy().catch(()=>{}),a.hasError||o.push({name:d.value}).catch(()=>{}))}function y(){a.isDirty&&!confirm("Несохранённые изменения будут потеряны. Продолжить?")||o.push({name:d.value}).catch(()=>{})}return(k,m)=>(e.openBlock(),e.createElementBlock("section",ss,[e.createElementVNode("header",cs,[e.createElementVNode("div",ds,[e.createElementVNode("a",{class:"admin-resource-form__back",onClick:y},"← Назад"),e.createElementVNode("h1",us,e.toDisplayString(u.value),1),f.value?(e.openBlock(),e.createBlock(e.unref(c.UidBadge),{key:0,variant:p.value},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(f.value),1)]),_:1},8,["variant"])):e.createCommentVNode("",!0)]),e.createElementVNode("div",ms,[e.createVNode(e.unref(c.UidButton),{variant:"ghost",disabled:e.unref(a).saving||e.unref(a).deleting,onClick:y},{default:e.withCtx(()=>[...m[0]||(m[0]=[e.createTextVNode(" Отмена ",-1)])]),_:1},8,["disabled"]),e.unref(a).isEdit?(e.openBlock(),e.createBlock(e.unref(c.UidButton),{key:0,variant:"danger",disabled:e.unref(a).saving||e.unref(a).deleting,loading:e.unref(a).deleting,onClick:B},{default:e.withCtx(()=>[...m[1]||(m[1]=[e.createTextVNode(" Удалить ",-1)])]),_:1},8,["disabled","loading"])):e.createCommentVNode("",!0),e.createVNode(e.unref(c.UidButton),{variant:"primary",disabled:e.unref(a).saving||e.unref(a).loading,loading:e.unref(a).saving,onClick:b},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(a).isCreate?"Создать":"Сохранить"),1)]),_:1},8,["disabled","loading"])])]),e.unref(a).hasError?(e.openBlock(),e.createBlock(e.unref(c.UidAlert),{key:0,variant:"danger",class:"admin-resource-form__alert",role:"alert"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(a).error?.message??"Не удалось сохранить запись"),1)]),_:1})):e.createCommentVNode("",!0),e.unref(a).loading?(e.openBlock(),e.createElementBlock("div",fs,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(6,w=>e.createVNode(e.unref(c.UidSkeleton),{key:w,height:"40px"})),64))])):(e.openBlock(),e.createBlock(e.unref(c.UidCard),{key:2,padding:"md",class:"admin-resource-form__body"},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.value,(w,V)=>(e.openBlock(),e.createBlock(Be,{key:V,node:w},null,8,["node"]))),128))]),_:1})),e.unref(a).isDirty&&!e.unref(a).loading?(e.openBlock(),e.createElementBlock("div",ps,[m[4]||(m[4]=e.createElementVNode("span",{class:"admin-resource-form__savebar-hint"}," Есть несохранённые изменения ",-1)),e.createVNode(e.unref(c.UidButton),{variant:"ghost",size:"sm",onClick:y},{default:e.withCtx(()=>[...m[2]||(m[2]=[e.createTextVNode("Отмена",-1)])]),_:1}),e.createVNode(e.unref(c.UidButton),{variant:"primary",size:"sm",loading:e.unref(a).saving,disabled:e.unref(a).saving,onClick:b},{default:e.withCtx(()=>[...m[3]||(m[3]=[e.createTextVNode(" Сохранить ",-1)])]),_:1},8,["loading","disabled"])])):e.createCommentVNode("",!0)]))}}),Ve=Ke(),vs=Ve.register,ot=Ve.get,hs=Ve.has,ys=Ve.list,gs=Ve.clear,$n=Ve.registerBundle,Sn=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}))}}),ks={key:1,class:"admin-infolist-rows"},_s={key:2,class:"admin-infolist-cols"},bs={key:3,class:"admin-infolist-section"},ws={key:0,class:"admin-infolist-section__hd"},Bs={key:0,class:"admin-infolist-section__title"},Vs={key:1,class:"admin-infolist-section__description"},Ns={class:"admin-infolist-section__body"},xs={key:4,class:"admin-infolist-tabs"},Cs={class:"admin-infolist-tabs__list",role:"tablist"},Es={class:"admin-infolist-tabs__panel"},Un=e.defineComponent({__name:"InfolistRenderer",props:{node:{}},setup(t){const n=t,a=new Set(["rows","columns","section","block","tabs"]),r=e.computed(()=>{if(n.node.kind==="entry"){const b=ot(n.node.type);return b?{kind:"entry",component:b}:{kind:"unknown"}}if(n.node.kind==="layout")return a.has(n.node.type)?{kind:"layout",layoutType:n.node.type}:{kind:"unknown"};if(a.has(n.node.type))return{kind:"layout",layoutType:n.node.type};const p=ot(n.node.type);return p?{kind:"entry",component:p}:{kind:"unknown"}}),o=e.computed(()=>{const{type:p,kind:b,items:d,attributes:B,...y}=n.node,k=B??{},{preset:m,format:w,currency:V,decimals:E,trueLabel:C,falseLabel:M,...g}=k,v={};return w!==void 0&&(v.format=w),V!==void 0&&(v.currency=V),E!==void 0&&(v.decimals=E),C!==void 0&&(v.trueLabel=C),M!==void 0&&(v.falseLabel=M),{...y,...g,preset:m,meta:v}}),l=e.computed(()=>n.node.items??[]),i=e.computed(()=>n.node.title??null),s=e.computed(()=>n.node.description??null),u=e.computed(()=>{const p=n.node.active;return typeof p=="number"?p:0}),f=e.computed(()=>n.node.items??[]);return(p,b)=>{const d=e.resolveComponent("InfolistRenderer",!0);return r.value.kind==="entry"?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(r.value.component),e.normalizeProps(e.mergeProps({key:0},o.value)),null,16)):r.value.kind==="layout"&&r.value.layoutType==="rows"?(e.openBlock(),e.createElementBlock("div",ks,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.value,(B,y)=>(e.openBlock(),e.createBlock(d,{key:y,node:B},null,8,["node"]))),128))])):r.value.kind==="layout"&&r.value.layoutType==="columns"?(e.openBlock(),e.createElementBlock("div",_s,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.value,(B,y)=>(e.openBlock(),e.createElementBlock("div",{key:y,class:"admin-infolist-cols__item",style:e.normalizeStyle({gridColumn:`span ${typeof B.span=="number"?B.span:Math.max(1,Math.floor(12/l.value.length))}`})},[e.createVNode(d,{node:B},null,8,["node"])],4))),128))])):r.value.kind==="layout"&&(r.value.layoutType==="section"||r.value.layoutType==="block")?(e.openBlock(),e.createElementBlock("section",bs,[i.value||s.value?(e.openBlock(),e.createElementBlock("header",ws,[i.value?(e.openBlock(),e.createElementBlock("h3",Bs,e.toDisplayString(i.value),1)):e.createCommentVNode("",!0),s.value?(e.openBlock(),e.createElementBlock("p",Vs,e.toDisplayString(s.value),1)):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0),e.createElementVNode("div",Ns,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.value,(B,y)=>(e.openBlock(),e.createBlock(d,{key:y,node:B},null,8,["node"]))),128))])])):r.value.kind==="layout"&&r.value.layoutType==="tabs"?(e.openBlock(),e.createElementBlock("div",xs,[e.createElementVNode("ul",Cs,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(f.value,(B,y)=>(e.openBlock(),e.createElementBlock("li",{key:B.key??y,class:e.normalizeClass(["admin-infolist-tabs__tab",{"admin-infolist-tabs__tab--active":y===u.value}])},e.toDisplayString(B.label),3))),128))]),e.createElementVNode("div",Es,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(f.value[u.value]?.items??[],(B,y)=>(e.openBlock(),e.createBlock(d,{key:y,node:B},null,8,["node"]))),128))])])):(e.openBlock(),e.createBlock(Sn,{key:5,type:t.node.type,name:t.node.name},null,8,["type","name"]))}}}),Nt=Symbol("admin.infolist-record");function Mn(t){e.provide(Nt,t)}function $s(){const t=e.inject(Nt);if(!t)throw new Error("useRecord() called outside of provideRecord() scope");return t}function De(){return e.inject(Nt,null)}const Ss={class:"admin-audit-timeline"},Us={key:0,class:"admin-audit-timeline__loading"},Ms={key:1,class:"admin-audit-timeline__error"},Ds={key:2,class:"admin-audit-timeline__empty"},Ts={key:3,class:"admin-audit-timeline__list"},Is={class:"admin-audit-timeline__icon","aria-hidden":"true"},Fs={class:"admin-audit-timeline__body"},As={class:"admin-audit-timeline__row"},Ls={class:"admin-audit-timeline__actor"},zs={class:"admin-audit-timeline__verb"},Rs={class:"admin-audit-timeline__when"},Ps={key:0,class:"admin-audit-timeline__detail"},qs=e.defineComponent({__name:"AuditTimeline",props:{subjectType:{},subjectId:{}},setup(t){const n=t,a=e.ref([]),r=e.ref(!1),o=e.ref(null);async function l(){if(!n.subjectType||n.subjectType===""){a.value=[],r.value=!1,o.value=null;return}r.value=!0,o.value=null;try{const{getAdminClient:d}=await Promise.resolve().then(()=>Q),y=await d().get(`/audit/timeline?subject_type=${encodeURIComponent(n.subjectType)}&subject_id=${encodeURIComponent(String(n.subjectId))}`);a.value=y.data??[]}catch(d){o.value=d instanceof Error?d:new Error(String(d)),a.value=[]}finally{r.value=!1}}e.onMounted(l),e.watch(()=>[n.subjectType,n.subjectId],l);const i=e.computed(()=>a.value.length>0);function s(d){return d==="created"?Oe:d==="deleted"||d==="destroyed"?ge:d.includes("tag")||d.includes("label")?Jt:ko}function u(d){return{created:"создал",updated:"отредактировал",deleted:"удалил",destroyed:"удалил",restored:"восстановил",published:"опубликовал"}[d]??d}function f(d){const B=new Date(d).getTime();if(Number.isNaN(B))return"";const y=(Date.now()-B)/1e3;return y<60?`${Math.max(1,Math.floor(y))} сек назад`:y<3600?`${Math.floor(y/60)} мин назад`:y<86400?`${Math.floor(y/3600)} ч назад`:y<86400*30?`${Math.floor(y/86400)} д назад`:new Date(d).toLocaleDateString("ru-RU")}function p(d){if(d.summary)return d.summary;if(!d.diff||d.diff.length===0)return"";if(d.diff.length===1){const y=d.diff[0];return`Поле ${y.field}: ${b(y.before)} → ${b(y.after)}`}const B=d.diff.slice(0,4).map(y=>y.field).join(", ");return`Изменены ${d.diff.length} поля: ${B}`}function b(d){return d==null?"∅":typeof d=="string"?d.length>20?`${d.slice(0,20)}…`:d:String(d)}return(d,B)=>(e.openBlock(),e.createElementBlock("section",Ss,[B[0]||(B[0]=e.createElementVNode("h2",{class:"admin-audit-timeline__title"},"История изменений",-1)),r.value?(e.openBlock(),e.createElementBlock("div",Us,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(3,y=>e.createVNode(e.unref(c.UidSkeleton),{key:y,height:"48px"})),64))])):o.value?(e.openBlock(),e.createElementBlock("div",Ms," Не удалось загрузить историю: "+e.toDisplayString(o.value.message),1)):i.value?(e.openBlock(),e.createElementBlock("ol",Ts,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.value,y=>(e.openBlock(),e.createElementBlock("li",{key:y.id,class:"admin-audit-timeline__item"},[e.createElementVNode("span",Is,[e.createVNode(e.unref(c.UidIcon),{icon:s(y.event),size:14},null,8,["icon"])]),e.createElementVNode("div",Fs,[e.createElementVNode("div",As,[e.createVNode(e.unref(c.UidAvatar),{name:y.actor?.name??"?",alt:y.actor?.name??"Неизвестный",size:"xs"},null,8,["name","alt"]),e.createElementVNode("span",Ls,e.toDisplayString(y.actor?.name??"Система"),1),e.createElementVNode("span",zs,e.toDisplayString(u(y.event)),1),e.createElementVNode("span",Rs,e.toDisplayString(f(y.created_at)),1)]),p(y)?(e.openBlock(),e.createElementBlock("div",Ps,e.toDisplayString(p(y)),1)):e.createCommentVNode("",!0)])]))),128))])):(e.openBlock(),e.createElementBlock("div",Ds," Записей в истории пока нет. "))]))}}),js={class:"admin-page admin-resource-view"},Os={class:"admin-resource-view__hd"},Ws={class:"admin-resource-view__hd-left"},Hs={class:"admin-page__title"},Ks={class:"admin-resource-view__meta"},Gs=["data-variant","data-status"],Xs={class:"admin-resource-view__uid"},Ys={class:"admin-resource-view__hd-right"},Zs={key:1,class:"admin-resource-view__loading"},Js={key:2,class:"admin-resource-view__grid"},Qs={class:"admin-resource-view__main"},ec={class:"admin-resource-view__aside"},tc={class:"admin-resource-view__metrics"},nc={class:"admin-resource-view__metric-label"},ac={class:"admin-resource-view__metric-value"},Dn=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=bt(),r=ce(),o=Z.useRouter();Mn(a.state);const l=e.computed(()=>r.getResource(n.slug)),i=e.computed(()=>l.value?.infolist??l.value?.fields??[]),s=e.computed(()=>n.auditSubjectType!==null?n.auditSubjectType:l.value?.subject_type??null),u=e.computed(()=>{const M=a.state,g=[],v=W=>{if(typeof W!="string"||W==="")return null;const K=new Date(W);return Number.isNaN(K.getTime())?null:K.toLocaleString("ru-RU",{day:"2-digit",month:"2-digit",year:"numeric",hour:"2-digit",minute:"2-digit"})},_=v(M.created_at);_&&g.push({label:"Создано",value:_});const F=v(M.updated_at);F&&F!==_&&g.push({label:"Обновлено",value:F});const R=typeof M.created_by_name=="string"&&M.created_by_name!==""?M.created_by_name:typeof M.author=="string"?M.author:null;return R&&g.push({label:"Автор",value:R}),g}),f=e.computed(()=>{const M=a.state,g=M.title??M.name??M.label;return typeof g=="string"&&g.length>0?g:`${l.value?.label??n.slug}: запись #${n.id}`}),p=e.computed(()=>l.value?.label??n.slug),b=e.computed(()=>`${n.uidPrefix}${n.id}`),d=e.computed(()=>{const g=a.state[n.statusField];return typeof g=="string"&&g.length>0?g:null}),B={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 y(M){return B[M.toLowerCase()]??"neutral"}const k=e.computed(()=>(l.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})).filter(g=>g.key!==""&&g.label!==""));async function m(M){if(!(M.confirm&&!window.confirm(M.confirm)))try{const{getAdminClient:g}=await Promise.resolve().then(()=>Q);await g().post(`/${n.slug}/action/${M.key}`,{ids:[n.id]}),await a.load(n.slug,n.id,"view").catch(()=>{})}catch(g){typeof console<"u"&&console.error("[admin] action failed:",g)}}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([M,g])=>{await a.load(M,g,"view").catch(()=>{})});const w=e.computed(()=>n.indexRouteName??`admin.resource.${n.slug}.index`);function V(){o.push({name:w.value}).catch(()=>{o.push(`/r/${n.slug}`)})}function E(){if(!n.editRouteName){o.push(`/r/${n.slug}/${n.id}/edit`).catch(()=>{});return}o.push({name:n.editRouteName,params:{id:n.id}}).catch(()=>{})}async function C(){confirm("Удалить запись?")&&(await a.destroy().catch(()=>{}),a.hasError||o.push({name:w.value}).catch(()=>{}))}return(M,g)=>(e.openBlock(),e.createElementBlock("section",js,[e.createElementVNode("header",Os,[e.createElementVNode("div",Ws,[e.createElementVNode("button",{type:"button",class:"admin-resource-view__back",onClick:V},[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(ga),size:14},null,8,["icon"]),e.createTextVNode(" "+e.toDisplayString(p.value),1)]),e.createElementVNode("h1",Hs,e.toDisplayString(f.value),1),e.createElementVNode("div",Ks,[d.value?(e.openBlock(),e.createElementBlock("span",{key:0,class:"admin-status-badge","data-variant":y(d.value),"data-status":d.value},[g[0]||(g[0]=e.createElementVNode("span",{class:"admin-status-badge__dot","aria-hidden":"true"},null,-1)),e.createTextVNode(" "+e.toDisplayString(d.value),1)],8,Gs)):e.createCommentVNode("",!0),e.createElementVNode("span",Xs,e.toDisplayString(b.value),1)])]),e.createElementVNode("div",Ys,[e.createVNode(e.unref(c.UidButton),{variant:"secondary",size:"md",onClick:E},{prepend:e.withCtx(()=>[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(ct),size:14},null,8,["icon"])]),default:e.withCtx(()=>[g[1]||(g[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(Ht),size:16},null,8,["icon"])]),_:1})]),default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(k.value,v=>(e.openBlock(),e.createBlock(e.unref(c.UidMenuItem),{key:v.key,onClick:_=>m(v)},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(v.label),1)]),_:2},1032,["onClick"]))),128)),e.createVNode(e.unref(c.UidMenuItem),{variant:"danger",onClick:C},{icon:e.withCtx(()=>[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(ge),size:14},null,8,["icon"])]),default:e.withCtx(()=>[g[2]||(g[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",Zs,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(8,v=>e.createVNode(e.unref(c.UidSkeleton),{key:v,height:"24px"})),64))])):(e.openBlock(),e.createElementBlock("div",Js,[e.createElementVNode("div",Qs,[e.createVNode(e.unref(c.UidCard),{padding:"md",class:"admin-resource-view__card"},{default:e.withCtx(()=>[g[3]||(g[3]=e.createElementVNode("h2",{class:"admin-resource-view__card-title"},"Основные данные",-1)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(i.value,(v,_)=>(e.openBlock(),e.createBlock(Un,{key:_,node:v},null,8,["node"]))),128))]),_:1}),e.createVNode(e.unref(c.UidCard),{padding:"md",class:"admin-resource-view__card"},{default:e.withCtx(()=>[e.createVNode(qs,{"subject-type":s.value,"subject-id":t.id},null,8,["subject-type","subject-id"])]),_:1})]),e.createElementVNode("aside",ec,[u.value.length>0?(e.openBlock(),e.createBlock(e.unref(c.UidCard),{key:0,padding:"md",class:"admin-resource-view__card"},{default:e.withCtx(()=>[g[4]||(g[4]=e.createElementVNode("h2",{class:"admin-resource-view__card-title"},"Метрики",-1)),e.createElementVNode("dl",tc,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(u.value,v=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:v.label},[e.createElementVNode("dt",nc,e.toDisplayString(v.label),1),e.createElementVNode("dd",ac,e.toDisplayString(v.value),1)],64))),128))])]),_:1})):e.createCommentVNode("",!0),e.renderSlot(M.$slots,"sidebar",{record:e.unref(a).state,resource:l.value})])]))]))}}),oc={class:"admin-page admin-profile"},lc={class:"admin-page__hd"},rc={class:"admin-page__title-wrap"},ic={class:"admin-page__title"},sc={class:"admin-page__count"},cc={class:"admin-profile__layout"},dc={class:"admin-profile__nav","aria-label":"Profile sections"},uc=["onClick"],mc=["data-icon"],fc={class:"admin-profile__content"},pc={class:"admin-profile__hero"},vc={class:"admin-profile__hero-text"},hc={class:"admin-profile__hero-name"},yc={class:"admin-profile__hero-meta"},gc={class:"admin-profile__form"},kc={class:"admin-profile__card-ft"},_c={class:"admin-profile__card-hd"},bc={key:0,class:"admin-profile__hint"},wc={key:1,class:"admin-profile__hint"},Bc={class:"admin-profile__card-ft"},Vc={class:"admin-profile__hint"},Tn=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,o=re(),l=We(),i=$e(),s=[{id:"general",label:"Основное",icon:"user"},{id:"security",label:"Безопасность",icon:"shield"},{id:"tokens",label:"API токены",icon:"key"},{id:"sessions",label:"Сессии",icon:"monitor"}],u=e.ref(a.section);function f(V){u.value=V,r("update:section",V)}const p=e.ref({name:o.user?.name??"",email:o.user?.email??"",locale:i.current,theme:l.current}),b=e.computed(()=>i.available.map(V=>({value:V,label:V.toUpperCase()}))),d=e.computed(()=>l.available.map(V=>({value:V,label:V==="dark"?"Тёмная":V==="light"?"Светлая":V})));e.watch(()=>p.value.locale,(V,E)=>{V===E||!V||i.setLocale(V).catch(()=>{})}),e.watch(()=>p.value.theme,(V,E)=>{V===E||!V||l.setTheme(V).catch(()=>{})});function B(){r("save",{...p.value})}function y(){r("avatar-replace")}function k(){r("two-factor-disable")}function m(){r("two-factor-regenerate")}const w=e.computed(()=>!!o.user?.twoFactorEnabled);return(V,E)=>(e.openBlock(),e.createElementBlock("section",oc,[e.createElementVNode("header",lc,[e.createElementVNode("div",rc,[e.createElementVNode("h1",ic,e.toDisplayString(t.title),1),e.createElementVNode("div",sc,e.toDisplayString(t.subtitle),1)])]),e.createElementVNode("div",cc,[e.createElementVNode("nav",dc,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(s,C=>e.createElementVNode("button",{key:C.id,type:"button",class:e.normalizeClass(["admin-profile__nav-item",{"admin-profile__nav-item--active":u.value===C.id}]),onClick:M=>f(C.id)},[e.createElementVNode("span",{class:"admin-profile__nav-icon","data-icon":C.icon},null,8,mc),e.createElementVNode("span",null,e.toDisplayString(C.label),1)],10,uc)),64))]),e.createElementVNode("div",fc,[u.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",pc,[e.createVNode(e.unref(c.UidAvatar),{src:e.unref(o).user?.avatar??void 0,name:e.unref(o).user?.name??"?",size:"lg"},null,8,["src","name"]),e.createElementVNode("div",vc,[e.createElementVNode("div",hc,e.toDisplayString(e.unref(o).user?.name??"—"),1),e.createElementVNode("div",yc,e.toDisplayString(e.unref(o).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:y},{default:e.withCtx(()=>[...E[4]||(E[4]=[e.createTextVNode(" Заменить ",-1)])]),_:1})]),e.createElementVNode("div",gc,[e.createVNode(e.unref(c.UidInput),{modelValue:p.value.name,"onUpdate:modelValue":E[0]||(E[0]=C=>p.value.name=C),label:"Имя",name:"name"},null,8,["modelValue"]),e.createVNode(e.unref(c.UidInput),{modelValue:p.value.email,"onUpdate:modelValue":E[1]||(E[1]=C=>p.value.email=C),label:"Email",type:"email",name:"email"},null,8,["modelValue"]),e.createVNode(e.unref(c.UidSelect),{modelValue:p.value.locale,"onUpdate:modelValue":E[2]||(E[2]=C=>p.value.locale=C),options:b.value,label:"Язык"},null,8,["modelValue","options"]),e.createVNode(e.unref(c.UidSelect),{modelValue:p.value.theme,"onUpdate:modelValue":E[3]||(E[3]=C=>p.value.theme=C),options:d.value,label:"Тема"},null,8,["modelValue","options"])]),e.createElementVNode("footer",kc,[e.createVNode(e.unref(c.UidButton),{variant:"primary",onClick:B},{default:e.withCtx(()=>[...E[6]||(E[6]=[e.createTextVNode("Сохранить",-1)])]),_:1})])]),_:1})):u.value==="security"?(e.openBlock(),e.createBlock(e.unref(c.UidCard),{key:1,padding:"md"},{default:e.withCtx(()=>[e.createElementVNode("header",_c,[E[8]||(E[8]=e.createElementVNode("h3",{class:"admin-profile__card-title"},"Двухфакторная аутентификация",-1)),e.createVNode(e.unref(c.UidBadge),{variant:w.value?"success":"default"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(w.value?"Включена":"Отключена"),1)]),_:1},8,["variant"])]),w.value?(e.openBlock(),e.createElementBlock("p",bc," 2FA включена. У вас остались recovery-коды на случай потери устройства. ")):(e.openBlock(),e.createElementBlock("p",wc," Включите 2FA для дополнительной защиты аккаунта. ")),e.createElementVNode("footer",Bc,[w.value?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createVNode(e.unref(c.UidButton),{variant:"ghost",size:"sm",onClick:m},{default:e.withCtx(()=>[...E[9]||(E[9]=[e.createTextVNode(" Перегенерировать коды ",-1)])]),_:1}),e.createVNode(e.unref(c.UidButton),{variant:"danger",size:"sm",onClick:k},{default:e.withCtx(()=>[...E[10]||(E[10]=[e.createTextVNode(" Отключить 2FA ",-1)])]),_:1})],64)):e.renderSlot(V.$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(V.$slots,u.value,{key:2,section:u.value},()=>[e.createVNode(e.unref(c.UidCard),{padding:"md"},{default:e.withCtx(()=>[e.createElementVNode("p",Vc," Section «"+e.toDisplayString(u.value)+"» не реализована библиотекой — host-проект подключает её через slot "+e.toDisplayString(u.value)+". ",1)]),_:1})])])])]))}}),lt=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(o,l)=>(e.openBlock(),e.createBlock(e.unref(c.UidStat),{title:t.title,value:t.value,prefix:t.prefix,suffix:t.suffix,trend:t.trend,precision:t.precision,tone:r.value,loading:t.loading},null,8,["title","value","prefix","suffix","trend","precision","tone","loading"]))}}),Nc={key:0,class:"admin-widget__hd"},xc={key:0,class:"admin-widget__title"},Cc={key:1,class:"admin-widget__desc"},Ec=["viewBox","height","aria-label"],$c=["x","y","width","height","fill","data-label","data-value"],xt=e.defineComponent({__name:"BarChartWidget",props:{title:{default:""},description:{default:""},data:{},accent:{default:"var(--uid-accent)"},height:{default:200}},setup(t){const n=t,a=e.computed(()=>Math.max(1,...n.data.map(o=>o.value))),r=e.computed(()=>{const l=100/Math.max(1,n.data.length);return n.data.map((i,s)=>({label:i.label,value:i.value,x:s*l+l*.1,width:l*.8,heightPct:i.value/a.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",Nc,[t.title?(e.openBlock(),e.createElementBlock("h3",xc,e.toDisplayString(t.title),1)):e.createCommentVNode("",!0),t.description?(e.openBlock(),e.createElementBlock("p",Cc,e.toDisplayString(t.description),1)):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0),(e.openBlock(),e.createElementBlock("svg",{class:"admin-widget-bar-chart",viewBox:`0 0 100 ${t.height}`,preserveAspectRatio:"none",height:t.height,width:"100%",role:"img","aria-label":t.title||"Bar chart"},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.value,(i,s)=>(e.openBlock(),e.createElementBlock("rect",{key:s,x:i.x,y:t.height-i.heightPct/100*t.height,width:i.width,height:i.heightPct/100*t.height,fill:t.accent,rx:"1","data-label":i.label,"data-value":i.value},[e.createElementVNode("title",null,e.toDisplayString(i.label)+": "+e.toDisplayString(i.value),1)],8,$c))),128))],8,Ec))]),_:1}))}}),Sc={key:0,class:"admin-widget__hd"},Uc={class:"admin-widget__title"},Mc={class:"admin-donut-widget__row"},Dc=["aria-label"],Tc=["d","fill"],Ic={class:"admin-donut-widget__legend"},Fc={class:"admin-donut-widget__label"},Ac={class:"admin-donut-widget__value"},Ct=e.defineComponent({__name:"DonutChartWidget",props:{title:{default:""},data:{}},setup(t){const n=t,a=["var(--uid-color-teal-500, #14b8a6)","var(--uid-color-zinc-700, #3f3f46)","var(--uid-color-amber-400, #fbbf24)","var(--uid-color-rose-400, #fb7185)","var(--uid-color-blue-400, #60a5fa)"],r=e.computed(()=>n.data.reduce((l,i)=>l+i.value,0)||1),o=e.computed(()=>{let l=0;return n.data.map((i,s)=>{const u=l/r.value*2*Math.PI;l+=i.value;const f=l/r.value*2*Math.PI,p=50,b=60,d=60,B=b+p*Math.cos(u-Math.PI/2),y=d+p*Math.sin(u-Math.PI/2),k=b+p*Math.cos(f-Math.PI/2),m=d+p*Math.sin(f-Math.PI/2),w=f-u>Math.PI?1:0,V=n.data.length===1?`M ${b-p} ${d} a ${p} ${p} 0 1 0 ${p*2} 0 a ${p} ${p} 0 1 0 ${-p*2} 0`:`M ${b} ${d} L ${B} ${y} A ${p} ${p} 0 ${w} 1 ${k} ${m} Z`;return{...i,path:V,color:i.color??a[s%a.length],pct:(i.value/r.value*100).toFixed(1)}})});return(l,i)=>(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",Sc,[e.createElementVNode("h3",Uc,e.toDisplayString(t.title),1)])):e.createCommentVNode("",!0),e.createElementVNode("div",Mc,[(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,(s,u)=>(e.openBlock(),e.createElementBlock("path",{key:u,d:s.path,fill:s.color},[e.createElementVNode("title",null,e.toDisplayString(s.label)+": "+e.toDisplayString(s.value)+" ("+e.toDisplayString(s.pct)+"%)",1)],8,Tc))),128)),i[0]||(i[0]=e.createElementVNode("circle",{cx:"60",cy:"60",r:"30",fill:"var(--uid-surface-raised)"},null,-1))],8,Dc)),e.createElementVNode("ul",Ic,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.value,(s,u)=>(e.openBlock(),e.createElementBlock("li",{key:u},[e.createElementVNode("span",{class:"admin-donut-widget__dot",style:e.normalizeStyle({background:s.color})},null,4),e.createElementVNode("span",Fc,e.toDisplayString(s.label),1),e.createElementVNode("span",Ac,e.toDisplayString(s.pct)+"%",1)]))),128))])])]),_:1}))}}),Lc={key:0,class:"admin-widget__hd"},zc={class:"admin-widget__title"},Re=e.defineComponent({__name:"RecentTableWidget",props:{title:{default:""},columns:{},rows:{},emptyText:{default:"Нет данных"}},setup(t){return(n,a)=>(e.openBlock(),e.createBlock(e.unref(c.UidCard),{padding:"md",class:"admin-widget"},{default:e.withCtx(()=>[t.title?(e.openBlock(),e.createElementBlock("header",Lc,[e.createElementVNode("h3",zc,e.toDisplayString(t.title),1)])):e.createCommentVNode("",!0),e.createVNode(e.unref(c.UidTable),{columns:t.columns,data:t.rows,"empty-text":t.emptyText},null,8,["columns","data","empty-text"])]),_:1}))}}),Rc={key:0,class:"admin-widget__hd"},Pc={class:"admin-widget__title"},In=e.defineComponent({__name:"HeatmapWidget",props:{title:{default:""},data:{},levels:{default:5},color:{default:void 0},gap:{default:2}},setup(t){return(n,a)=>(e.openBlock(),e.createBlock(e.unref(c.UidCard),{padding:"md",class:"admin-widget"},{default:e.withCtx(()=>[t.title?(e.openBlock(),e.createElementBlock("header",Rc,[e.createElementVNode("h3",Pc,e.toDisplayString(t.title),1)])):e.createCommentVNode("",!0),e.createVNode(e.unref(c.UidHeatmap),{data:t.data,levels:t.levels,color:t.color,gap:t.gap},null,8,["data","levels","color","gap"])]),_:1}))}}),qc={key:0,class:"admin-widget__hd"},jc={class:"admin-widget__title"},Oc={style:{display:"flex","justify-content":"center"}},Fn=e.defineComponent({__name:"GaugeWidget",props:{title:{default:""},value:{default:0},min:{default:0},max:{default:100},size:{default:160},ranges:{default:()=>[]},tone:{default:"neutral"},color:{default:void 0},label:{default:""},suffix:{default:""},precision:{default:0}},setup(t){const n=t,a={neutral:"primary",positive:"success",warning:"warning",negative:"danger"},r=e.computed(()=>a[n.tone]);return(o,l)=>(e.openBlock(),e.createBlock(e.unref(c.UidCard),{padding:"md",class:"admin-widget"},{default:e.withCtx(()=>[t.title?(e.openBlock(),e.createElementBlock("header",qc,[e.createElementVNode("h3",jc,e.toDisplayString(t.title),1)])):e.createCommentVNode("",!0),e.createElementVNode("div",Oc,[e.createVNode(e.unref(c.UidGauge),{value:t.value,min:t.min,max:t.max,size:t.size,ranges:t.ranges,tone:r.value,color:t.color,label:t.label,suffix:t.suffix,precision:t.precision},null,8,["value","min","max","size","ranges","tone","color","label","suffix","precision"])])]),_:1}))}}),Wc={key:0,class:"admin-widget__hd"},Hc={class:"admin-widget__title"},Kc={class:"admin-markdown-widget"},An=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",Wc,[e.createElementVNode("h3",Hc,e.toDisplayString(t.title),1)])):e.createCommentVNode("",!0),e.createElementVNode("div",Kc,e.toDisplayString(t.content),1)]),_:1}))}}),Gc=e.defineComponent({__name:"ChartWidget",props:{type:{},title:{},size:{},data:{}},setup(t){const n=t,a=e.computed(()=>n.data?.type??"bar"),r=["#10b981","#f59e0b","#9ca3af","#3b82f6","#dc2626","#a855f7","#ec4899"],o=e.computed(()=>{const s=n.data?.datasets?.[0];return s?s.data.map((u,f)=>({label:n.data?.labels?.[f]??String(f+1),value:u})):[]}),l=e.computed(()=>n.data?.datasets?.[0]?.color),i=e.computed(()=>{const s=n.data?.datasets?.[0];return s?s.data.map((u,f)=>({label:n.data?.labels?.[f]??String(f+1),value:u,color:s.color??r[f%r.length]})):[]});return(s,u)=>a.value==="doughnut"||a.value==="pie"?(e.openBlock(),e.createBlock(Ct,{key:0,title:t.title,data:i.value},null,8,["title","data"])):a.value==="bar"||a.value==="line"||a.value==="area"?(e.openBlock(),e.createBlock(xt,{key:1,title:t.title,data:o.value,accent:l.value},null,8,["title","data","accent"])):(e.openBlock(),e.createBlock(gt,{key:2,type:`chart:${a.value}`},null,8,["type"]))}});function Ln(){hn({stat:lt,stats:lt,chart:Gc,"bar-chart":xt,"donut-chart":Ct,"recent-table":Re,recent_list:Re,"recent-list":Re,heatmap:In,gauge:Fn,markdown:An})}function zn(t){return t.success===!0}function Xc(t){return t.success===!1}function Rn(t){const n=fa.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(o=>{const l=Yc("XSRF-TOKEN");return l&&o.headers.set("X-XSRF-TOKEN",decodeURIComponent(l)),o}),n.interceptors.response.use(o=>{const l=o.data;if(l&&typeof l=="object"&&"success"in l){if(zn(l))return o.data=l.payload,o;throw tt(o.status,l.payload)}return o},o=>{if(o.response){const l=o.response.status,i=o.response.data?.payload??{errorKey:"unknown",message:o.message},s=tt(l,i);return s instanceof vt&&t.onUnauthenticated?.(),Promise.reject(s)}return Promise.reject(new Me(o.message))});const a=(o,l,i)=>n[o](l,i).then(s=>s.data),r=(o,l,i,s)=>n[o](l,i,s).then(u=>u.data);return{raw:n,get:(o,l)=>a("get",o,l),delete:(o,l)=>a("delete",o,l),post:(o,l,i)=>r("post",o,l,i),put:(o,l,i)=>r("put",o,l,i),patch:(o,l,i)=>r("patch",o,l,i),setLocale:o=>{n.defaults.headers.common["X-Admin-Locale"]=o}}}function Yc(t){if(typeof document>"u")return null;const n=document.cookie.match(new RegExp("(^|; )"+Zc(t)+"=([^;]*)"));return n?n[2]:null}function Zc(t){return t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function ze(t,n){const a=t.permissions?.[n];return typeof a=="string"&&a.length>0?[a]:[]}function Jc(t,n){const a=t.permissions?.[n];return typeof a=="string"&&a.length>0?[a]:[]}function Qc(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:o=>({slug:a,id:o.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:o=>({slug:a,id:o.params.id})}]}function td(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:Qc(t)}}}function nd(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:Jc(t,"view")}}}function ad(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 Pn(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(td(r,n));for(const r of t.settings)a.push(nd(r,n));for(const r of t.dashboards){const o=ad(r,n);o&&a.push(o)}return a}function qn(t={}){const n=t.loginRouteName??"admin.login",a=t.forbiddenRouteName??"admin.forbidden",r=t.redirectQueryKey??"redirect";return o=>{if(o.name===n)return!0;const l=re();if(o.meta?.requiresAuth===!0&&!l.isAuthenticated)return{name:n,query:{[r]:o.fullPath}};if(l.isChallengePending)return{name:n,query:{[r]:o.fullPath}};const s=o.meta?.permissions;return Array.isArray(s)&&s.length>0&&!l.hasAnyPermission(s)?{name:a}:!0}}function jn(t={}){const n=t.template,a=t.brand??"",r=t.fallback??"";return o=>{if(typeof document>"u")return;const l=o.meta?.title??r;let i;n?i=n.replace("{title}",l).replace("{brand}",a):l&&a?i=`${l} · ${a}`:i=l||a,document.title=i}}const od=["admin.resource.","admin.screen.","admin.settings.","admin.dashboard."];function ld(t){return typeof t!="string"?!1:od.some(n=>t.startsWith(n))}function On(t){const n=t.base??"/admin",a=t.history??Z.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 o={path:"/:pathMatch(.*)*",name:"admin.notFound",component:t.components.notFound,meta:{kind:"system",title:"404"}},l=Z.createRouter({history:a,routes:[...r,...t.extraRoutes??[],o]});return l.beforeEach(qn(t.authGuard)),l.afterEach(jn(t.titleGuard)),l.replaceManifestRoutes=i=>{const s=l.getRoutes();for(const f of s)ld(f.name)&&l.removeRoute(f.name);l.hasRoute("admin.notFound")&&l.removeRoute("admin.notFound");const u=Pn(i,t.components);for(const f of u)l.addRoute(f);l.addRoute(o)},l}const le=e.defineComponent({__name:"TextField",props:{name:{},label:{default:null},help:{default:null},required:{type:Boolean,default:!1},placeholder:{default:null},inputType:{default:"text"},disabled:{type:Boolean,default:!1},readonly:{type:Boolean,default:!1},autocomplete:{default:null}},setup(t){const n=t,a=ne.useFormState(),r=e.computed(()=>a.getField(n.name)??""),o=e.computed(()=>a.errors[n.name]?.[0]);function l(i){a.setField(n.name,i)}return(i,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:o.value,placeholder:t.placeholder??void 0,required:t.required,disabled:t.disabled,readonly:t.readonly,name:t.name,autocomplete:t.autocomplete??void 0,"onUpdate:modelValue":l},null,8,["model-value","type","label","hint","error","placeholder","required","disabled","readonly","name","autocomplete"]))}}),xe=e.defineComponent({__name:"TextAreaField",props:{name:{},label:{default:null},help:{default:null},required:{type:Boolean,default:!1},placeholder:{default:null},rows:{default:4},disabled:{type:Boolean,default:!1},readonly:{type:Boolean,default:!1}},setup(t){const n=t,a=ne.useFormState(),r=e.computed(()=>a.getField(n.name)??""),o=e.computed(()=>a.errors[n.name]?.[0]);function l(i){a.setField(n.name,i)}return(i,s)=>(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:t.disabled},{default:e.withCtx(()=>[e.createVNode(e.unref(c.UidTextarea),{"model-value":r.value,rows:t.rows,placeholder:t.placeholder??void 0,disabled:t.disabled,readonly:t.readonly,name:t.name,"onUpdate:modelValue":l},null,8,["model-value","rows","placeholder","disabled","readonly","name"])]),_:1},8,["label","hint","error","required","disabled"]))}}),Pe=e.defineComponent({__name:"NumberField",props:{name:{},label:{default:null},help:{default:null},required:{type:Boolean,default:!1},placeholder:{default:null},min:{default:null},max:{default:null},step:{default:null},disabled:{type:Boolean,default:!1},readonly:{type:Boolean,default:!1}},setup(t){const n=t,a=ne.useFormState(),r=e.computed(()=>{const i=a.getField(n.name);return i==null||i===""?null:typeof i=="number"?i:Number(i)}),o=e.computed(()=>a.errors[n.name]?.[0]);function l(i){a.setField(n.name,i)}return(i,s)=>(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:t.disabled},{default:e.withCtx(()=>[e.createVNode(e.unref(c.UidNumberInput),{"model-value":r.value,min:t.min??void 0,max:t.max??void 0,step:t.step??void 0,placeholder:t.placeholder??void 0,disabled:t.disabled,readonly:t.readonly,name:t.name,"onUpdate:modelValue":l},null,8,["model-value","min","max","step","placeholder","disabled","readonly","name"])]),_:1},8,["label","hint","error","required","disabled"]))}}),me=e.defineComponent({__name:"SelectField",props:{name:{},options:{},label:{default:null},help:{default:null},required:{type:Boolean,default:!1},placeholder:{default:null},disabled:{type:Boolean,default:!1},searchable:{type:Boolean,default:!1},clearable:{type:Boolean,default:!1},size:{default:"md"}},setup(t){const n=t,a=ne.useFormState(),r=e.computed(()=>{const i=a.getField(n.name);return i==null||i===""?null:i}),o=e.computed(()=>a.errors[n.name]?.[0]);function l(i){a.setField(n.name,i)}return(i,s)=>(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:t.disabled},{default:e.withCtx(()=>[e.createVNode(e.unref(c.UidSelect),{"model-value":r.value,options:t.options,placeholder:t.placeholder??void 0,disabled:t.disabled,searchable:t.searchable,clearable:t.clearable,size:t.size,"onUpdate:modelValue":l},null,8,["model-value","options","placeholder","disabled","searchable","clearable","size"])]),_:1},8,["label","hint","error","required","disabled"]))}}),Ce=e.defineComponent({__name:"CheckboxField",props:{name:{},label:{default:null},help:{default:null},required:{type:Boolean,default:!1},inlineLabel:{default:null},disabled:{type:Boolean,default:!1}},setup(t){const n=t,a=ne.useFormState(),r=e.computed(()=>!!a.getField(n.name)),o=e.computed(()=>a.errors[n.name]?.[0]);function l(i){a.setField(n.name,i)}return(i,s)=>(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:t.disabled},{default:e.withCtx(()=>[e.createVNode(e.unref(c.UidCheckbox),{"model-value":r.value,disabled:t.disabled,name:t.name,"onUpdate:modelValue":l},{default:e.withCtx(()=>[t.inlineLabel?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createTextVNode(e.toDisplayString(t.inlineLabel),1)],64)):e.createCommentVNode("",!0)]),_:1},8,["model-value","disabled","name"])]),_:1},8,["label","hint","error","required","disabled"]))}}),ve=e.defineComponent({__name:"DateField",props:{name:{},label:{default:null},help:{default:null},required:{type:Boolean,default:!1},inputType:{default:"date"},min:{default:null},max:{default:null},disabled:{type:Boolean,default:!1}},setup(t){const n=t,a=ne.useFormState(),r=e.computed(()=>{const i=a.getField(n.name);return i==null||i===""?null:String(i)}),o=e.computed(()=>a.errors[n.name]?.[0]);function l(i){a.setField(n.name,i)}return(i,s)=>(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:t.disabled},{default:e.withCtx(()=>[e.createVNode(e.unref(c.UidDatePicker),{"model-value":r.value,min:t.min??void 0,max:t.max??void 0,disabled:t.disabled,name:t.name,"onUpdate:modelValue":l},null,8,["model-value","min","max","disabled","name"])]),_:1},8,["label","hint","error","required","disabled"]))}}),rd={key:0,class:"admin-field__label"},id={key:0,class:"admin-field__required","aria-hidden":"true"},sd={class:"admin-tags__chip-text"},cd=["onClick"],dd=["value","placeholder","disabled"],ud={key:0,class:"admin-tags__dropdown",role:"listbox"},md={class:"admin-tags__group-label"},fd=["aria-selected","onMousedown","onMouseenter"],pd=["aria-selected","onMousedown","onMouseenter"],vd={key:1,class:"admin-field__error"},hd={key:2,class:"admin-field__help"},yd=e.defineComponent({__name:"TagsField",props:{name:{},label:{default:null},help:{default:null},required:{type:Boolean,default:!1},placeholder:{default:"Введите ключ и нажмите Enter…"},suggestions:{default:()=>[]},suggestionsByGroup:{default:()=>[]},maxItems:{default:0},separator:{default:","},disabled:{type:Boolean,default:!1}},setup(t){const n=t,a=ne.useFormState(),r=e.computed(()=>{const g=a.getField(n.name);return Array.isArray(g)?g.map(v=>String(v)):typeof g=="string"&&g!==""?g.split(",").map(v=>v.trim()).filter(Boolean):[]}),o=e.computed(()=>a.errors[n.name]?.[0]),l=e.ref(""),i=e.ref(!1),s=e.ref(null),u=e.ref(null);function f(g){const v=new Set,_=[];for(const F of g){const R=F.trim();if(!(R===""||v.has(R))&&(v.add(R),_.push(R),n.maxItems>0&&_.length>=n.maxItems))break}a.setField(n.name,_)}function p(g){const v=g.trim();if(v!==""){if(r.value.includes(v)){l.value="";return}f([...r.value,v]),l.value=""}}function b(g){const v=[...r.value];v.splice(g,1),f(v)}function d(g){g.key==="Enter"?(g.preventDefault(),y.value>=0&&w.value[y.value]?p(w.value[y.value]):l.value.trim()!==""&&p(l.value)):g.key==="Backspace"&&l.value===""&&r.value.length>0?b(r.value.length-1):g.key==="ArrowDown"?(g.preventDefault(),y.value=Math.min(y.value+1,w.value.length-1)):g.key==="ArrowUp"?(g.preventDefault(),y.value=Math.max(y.value-1,-1)):g.key==="Escape"&&(i.value=!1,s.value?.blur())}function B(g){const v=g.target.value;if(n.separator&&v.includes(n.separator)){const _=v.split(n.separator);_.slice(0,-1).map(R=>R.trim()).filter(Boolean).forEach(p),l.value=_[_.length-1]??"";return}l.value=v}const y=e.ref(-1),k=e.computed(()=>Array.isArray(n.suggestionsByGroup)&&n.suggestionsByGroup.length>0),m=e.computed(()=>{const g=l.value.trim().toLowerCase(),v=new Set(r.value);return k.value?n.suggestionsByGroup.map(_=>({label:_.label,items:_.items.filter(F=>!v.has(F)&&(g===""||F.toLowerCase().includes(g)))})).filter(_=>_.items.length>0):[]}),w=e.computed(()=>{if(k.value)return m.value.flatMap(_=>_.items);const g=l.value.trim().toLowerCase(),v=new Set(r.value);return n.suggestions.filter(_=>!v.has(_)).filter(_=>g===""||_.toLowerCase().includes(g)).slice(0,200)});function V(g){return g===y.value}e.watch(l,()=>{y.value=-1});function E(){n.disabled||s.value?.focus()}function C(g){p(g),e.nextTick(()=>s.value?.focus())}function M(){window.setTimeout(()=>{i.value=!1,l.value.trim()!==""&&p(l.value)},120)}return(g,v)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["admin-field",{"admin-field--invalid":o.value!==void 0}])},[t.label?(e.openBlock(),e.createElementBlock("label",rd,[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:u,class:e.normalizeClass(["admin-field__control admin-tags",{"admin-tags--focused":i.value,"admin-tags--disabled":t.disabled}]),onClick:E},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.value,(_,F)=>(e.openBlock(),e.createElementBlock("span",{key:`${_}-${F}`,class:"admin-tags__chip"},[e.createElementVNode("span",sd,e.toDisplayString(_),1),t.disabled?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:"admin-tags__chip-remove","aria-label":"Удалить",onClick:e.withModifiers(R=>b(F),["stop"])},[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(ke),size:10},null,8,["icon"])],8,cd))]))),128)),e.createElementVNode("input",{ref_key:"inputRef",ref:s,value:l.value,placeholder:r.value.length===0?t.placeholder??"":"",disabled:t.disabled,class:"admin-tags__input",type:"text",onInput:B,onKeydown:d,onFocus:v[0]||(v[0]=_=>i.value=!0),onBlur:M},null,40,dd),i.value&&w.value.length>0?(e.openBlock(),e.createElementBlock("div",ud,[k.value?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(m.value,(_,F)=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:`g-${F}-${_.label}`},[e.createElementVNode("div",md,e.toDisplayString(_.label),1),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(_.items,R=>(e.openBlock(),e.createElementBlock("button",{key:R,type:"button",role:"option",class:e.normalizeClass(["admin-tags__option",{"admin-tags__option--active":V(w.value.indexOf(R))}]),"aria-selected":V(w.value.indexOf(R)),onMousedown:e.withModifiers(W=>C(R),["prevent"]),onMouseenter:W=>y.value=w.value.indexOf(R)},e.toDisplayString(R),43,fd))),128))],64))),128)):(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:1},e.renderList(w.value,(_,F)=>(e.openBlock(),e.createElementBlock("button",{key:_,type:"button",role:"option",class:e.normalizeClass(["admin-tags__option",{"admin-tags__option--active":F===y.value}]),"aria-selected":F===y.value,onMousedown:e.withModifiers(R=>C(_),["prevent"]),onMouseenter:R=>y.value=F},e.toDisplayString(_),43,pd))),128))])):e.createCommentVNode("",!0)],2),o.value?(e.openBlock(),e.createElementBlock("p",vd,e.toDisplayString(o.value),1)):t.help?(e.openBlock(),e.createElementBlock("p",hd,e.toDisplayString(t.help),1)):e.createCommentVNode("",!0)],2))}}),gd={key:0,class:"admin-field__label"},kd={key:0,class:"admin-field__required","aria-hidden":"true"},_d={class:"admin-translatable"},bd={class:"admin-translatable__tabs",role:"tablist"},wd=["aria-selected","onClick"],Bd={key:0,class:"admin-translatable__dot","aria-hidden":"true"},Vd={class:"admin-translatable__panel"},Nd=["value","placeholder","rows","disabled"],xd={key:1,class:"admin-field__error"},Cd={key:2,class:"admin-field__help"},Pt=e.defineComponent({__name:"TranslatableField",props:{name:{},label:{default:null},help:{default:null},required:{type:Boolean,default:!1},placeholder:{default:null},locales:{default:void 0},multiline:{type:Boolean,default:!1},rows:{default:3},disabled:{type:Boolean,default:!1}},setup(t){const n=t,a=ne.useFormState(),r=$e(),o=e.computed(()=>n.locales??r.available??[r.current??"ru"]),l=e.ref(r.current??o.value[0]??"ru"),i=e.computed(()=>{const p=a.getField(n.name);return p&&typeof p=="object"&&!Array.isArray(p)?p:typeof p=="string"?{[l.value]:p}:{}});function s(p,b){const d={...i.value};d[p]=b,a.setField(n.name,d)}const u=e.computed(()=>{const p=a.errors[n.name];if(p?.[0])return p[0];for(const b of o.value){const d=a.errors[`${n.name}.${b}`]?.[0];if(d)return`[${b}] ${d}`}});function f(p){const b=i.value[p];return typeof b=="string"&&b.trim()!==""}return(p,b)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["admin-field",{"admin-field--invalid":u.value!==void 0}])},[t.label?(e.openBlock(),e.createElementBlock("label",gd,[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",_d,[e.createElementVNode("div",bd,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.value,d=>(e.openBlock(),e.createElementBlock("button",{key:d,type:"button",role:"tab",class:e.normalizeClass(["admin-translatable__tab",{"admin-translatable__tab--active":l.value===d,"admin-translatable__tab--filled":f(d)}]),"aria-selected":l.value===d,onClick:B=>l.value=d},[e.createTextVNode(e.toDisplayString(d.toUpperCase())+" ",1),f(d)?(e.openBlock(),e.createElementBlock("span",Bd)):e.createCommentVNode("",!0)],10,wd))),128))]),e.createElementVNode("div",Vd,[t.multiline?(e.openBlock(),e.createElementBlock("textarea",{key:1,value:i.value[l.value]??"",placeholder:t.placeholder??"",rows:t.rows,disabled:t.disabled,class:"admin-translatable__textarea",onInput:b[1]||(b[1]=d=>s(l.value,d.target.value))},null,40,Nd)):(e.openBlock(),e.createBlock(e.unref(c.UidInput),{key:0,"model-value":i.value[l.value]??"",placeholder:t.placeholder??"",disabled:t.disabled,"onUpdate:modelValue":b[0]||(b[0]=d=>s(l.value,d))},null,8,["model-value","placeholder","disabled"]))])]),u.value?(e.openBlock(),e.createElementBlock("p",xd,e.toDisplayString(u.value),1)):t.help?(e.openBlock(),e.createElementBlock("p",Cd,e.toDisplayString(t.help),1)):e.createCommentVNode("",!0)],2))}}),rt=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,o)=>(e.openBlock(),e.createBlock(Be,{key:o,node:r},null,8,["node"]))),128))]),_:1},8,["gap"]))}}),Wn=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(o){const l=o.span;return typeof l=="number"&&l>0?Math.min(l,n.cols):a.value}return(o,l)=>(e.openBlock(),e.createBlock(e.unref(c.UidGrid),{cols:t.cols,gap:t.gap},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.items,(i,s)=>(e.openBlock(),e.createElementBlock("div",{key:s,class:"admin-columns__item",style:e.normalizeStyle({gridColumn:`span ${r(i)} / span ${r(i)}`})},[e.createVNode(Be,{node:i},null,8,["node"])],4))),128))]),_:1},8,["cols","gap"]))}}),Ed={key:0,class:"admin-section__header"},$d={key:0,class:"admin-section__title"},Sd={key:1,class:"admin-section__description"},Ud={class:"admin-section__body"},ye=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",Ed,[t.title?(e.openBlock(),e.createElementBlock("h3",$d,e.toDisplayString(t.title),1)):e.createCommentVNode("",!0),t.description?(e.openBlock(),e.createElementBlock("p",Sd,e.toDisplayString(t.description),1)):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0),e.createElementVNode("div",Ud,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.items,(r,o)=>(e.openBlock(),e.createBlock(Be,{key:o,node:r},null,8,["node"]))),128))])]),_:1}))}}),Hn=e.defineComponent({__name:"TabsLayout",props:{items:{},active:{default:0}},emits:["update:active"],setup(t,{emit:n}){const a=t,r=n;function o(s,u){return s.key??u}const l=e.ref(a.active??o(a.items[0]??{},0));function i(s){l.value=s,r("update:active",s)}return(s,u)=>(e.openBlock(),e.createBlock(e.unref(c.UidTabs),{"model-value":l.value,"onUpdate:modelValue":i},{list:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.items,(f,p)=>(e.openBlock(),e.createBlock(e.unref(c.UidTab),{key:o(f,p),value:o(f,p)},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(f.label),1)]),_:2},1032,["value"]))),128))]),default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.items,(f,p)=>(e.openBlock(),e.createBlock(e.unref(c.UidTabPanel),{key:`panel-${o(f,p)}`,value:o(f,p)},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(f.items,(b,d)=>(e.openBlock(),e.createBlock(Be,{key:d,node:b},null,8,["node"]))),128))]),_:2},1032,["value"]))),128))]),_:1},8,["model-value"]))}});function Kn(){En({fields:{input:le,text:le,email:le,url:le,password:le,tel:le,search:le,slug:le,hidden:le,label:le,textarea:xe,wysiwyg:xe,markdown:xe,code:xe,number:Pe,slider:Pe,rating:Pe,select:me,combobox:me,radio:me,tags:yd,translatable:Pt,"translatable-text":Pt,"morph-switcher":me,relation:me,cascader:me,"tree-select":me,checkbox:Ce,switch:Ce,switcher:Ce,boolean:Ce,date:ve,datetime:ve,datepicker:ve,"date-range":ve,time:ve,"time-picker":ve,"color-picker":le},layouts:{rows:rt,columns:Wn,section:ye,block:ye,tabs:Hn,accordion:ye,group:rt,step:ye,wizard:ye}})}const Md={key:0,class:"admin-infolist-entry"},Dd={class:"admin-infolist-entry__label"},j=e.defineComponent({__name:"TextEntry",props:{name:{default:""},label:{default:""},value:{default:void 0},placeholder:{default:"—"},mono:{type:Boolean,default:!1},preset:{default:void 0},meta:{default:()=>({})}},setup(t){const n=t,a=De(),r=e.computed(()=>{let l=n.value;if(l===void 0&&a&&n.name&&(l=a[n.name]),l==null||l==="")return n.placeholder;const i=xn(l,n.preset,n.meta);return i===""?n.placeholder:i}),o=e.computed(()=>!!n.label);return(l,i)=>o.value?(e.openBlock(),e.createElementBlock("div",Md,[e.createElementVNode("span",Dd,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))}}),Td={key:1,class:"admin-infolist-text"},Gn=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=De(),r=e.computed(()=>{let l=n.value;return l===void 0&&a&&n.name&&(l=a[n.name]),l==null?"":String(l)}),o=e.computed(()=>n.variant?n.variant:n.map[r.value]??"default");return(l,i)=>r.value?(e.openBlock(),e.createBlock(e.unref(c.UidBadge),{key:0,variant:o.value},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(r.value),1)]),_:1},8,["variant"])):(e.openBlock(),e.createElementBlock("span",Td,"—"))}}),Id=["data-icon"],Fd={key:0},Xn=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=De(),r=e.computed(()=>{let i=n.value;return i===void 0&&a&&n.name&&(i=a[n.name]),!!i}),o=e.computed(()=>r.value?n.trueLabel:n.falseLabel),l=e.computed(()=>r.value?n.trueIcon:n.falseIcon);return(i,s)=>(e.openBlock(),e.createElementBlock("span",{class:e.normalizeClass(["admin-infolist-icon",r.value?"admin-infolist-icon--on":"admin-infolist-icon--off"])},[e.createElementVNode("span",{class:"admin-infolist-icon__glyph","data-icon":l.value},null,8,Id),o.value?(e.openBlock(),e.createElementBlock("span",Fd,e.toDisplayString(o.value),1)):e.createCommentVNode("",!0)],2))}}),Ad={key:1,class:"admin-infolist-text"},it=e.defineComponent({__name:"KeyValueEntry",props:{name:{default:""},label:{default:""},value:{default:void 0}},setup(t){const n=t,a=De(),r=e.computed(()=>{let l=n.value;return l===void 0&&a&&n.name&&(l=a[n.name]),l==null?[]:typeof l!="object"?[]:Object.entries(l)});function o(l){return l==null?"—":typeof l=="object"?JSON.stringify(l):String(l)}return(l,i)=>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,u])=>(e.openBlock(),e.createBlock(e.unref(c.UidDescriptionItem),{key:s,label:s},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(o(u)),1)]),_:2},1032,["label"]))),128))]),_:1})):(e.openBlock(),e.createElementBlock("span",Ad,"—"))}});function Yn(){$n({text:j,badge:Gn,icon:Xn,keyvalue:it,"key-value":it,input:j,email:j,url:j,password:j,tel:j,search:j,slug:j,hidden:j,label:j,textarea:j,wysiwyg:j,markdown:j,code:j,number:j,slider:j,rating:j,select:j,combobox:j,radio:j,tags:j,"morph-switcher":j,relation:j,cascader:j,"tree-select":j,checkbox:j,switch:j,switcher:j,boolean:j,date:j,datetime:j,datepicker:j,"date-range":j,time:j,"time-picker":j,"color-picker":j})}function Ld(t,n={}){const a=n.pages??{},r=n.base??zd(t.baseUrl)??"/admin",o=Rn({baseURL:t.apiUrl,csrfToken:t.csrf});mt(o);const l=e.createApp(un),i=ie.createPinia();l.use(i),re().hydrate(t),$e().hydrate(t),We().hydrate(t),Se().hydrate(t),fn().hydrate(t),Kn(),Ln(),Yn();const s=On({base:r,history:n.router?.history??Z.createWebHistory(r),components:{login:a.login??Nn,home:a.home??gn,forbidden:a.forbidden??kn,notFound:a.notFound??_n,profile:a.profile??Tn,forgotPassword:a.forgotPassword??Or,resetPassword:a.resetPassword??Yr,resourceIndex:a.resourceIndex??Cn,resourceCreate:a.resourceCreate??at,resourceEdit:a.resourceEdit??at,resourceView:a.resourceView??Dn,dashboard:a.dashboard??kt,settings:a.settings??bn,screen:a.screen??wn},extraRoutes:n.router?.extraRoutes,authGuard:n.router?.authGuard,titleGuard:n.router?.titleGuard});l.use(s);const u=yt();if(s.beforeEach((f,p,b)=>{f.fullPath!==p.fullPath&&u.start(),b()}),s.afterEach(()=>{u.end()}),s.onError(()=>{u.end()}),s.beforeResolve(async(f,p,b)=>{const d=typeof f.name=="string"?f.name:null;if(d&&d.startsWith("admin.resource.")&&d.endsWith(".index")){const B=f.params.slug??f.meta.slug;if(B)try{const{useResourceIndexStore:y}=await Promise.resolve().then(()=>Zr),k=y();(k.slug!==B||k.items.length===0)&&(k.setSlug(B),await k.load().catch(()=>{}))}catch{}}b()}),n.skipManifestLoad)ce().bootResolved=!0;else{const f=ce(),p=re(),b=ht(),d=async()=>{b.load().catch(()=>{});try{const B=await f.load();s.replaceManifestRoutes(B);const y=s.currentRoute.value;y.name==="admin.notFound"&&y.fullPath!=="/"&&await s.replace(y.fullPath).catch(()=>{})}catch(B){typeof console<"u"&&console.error("[laravel-admin] manifest load failed:",B)}finally{f.bootResolved=!0}};p.isAuthenticated?d():f.bootResolved=!0,e.watch(()=>p.user,(B,y)=>{B&&!y&&(f.bootResolved=!1,d())})}return n.onAppCreated?.(l),{app:l,router:s,client:o}}function zd(t){if(!t)return null;try{return new URL(t).pathname||"/admin"}catch{return t.startsWith("/")?t:null}}async function Rd(t={}){const n=Zn();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 Me)return null;throw a}return null}function Zn(){return typeof window>"u"?null:window.__ADMIN_BOOTSTRAP__??null}function Pd(){return typeof document>"u"?null:document.querySelector('meta[name="csrf-token"]')?.getAttribute("content")??null}const qd={class:"admin-notifs__hd"},jd={class:"admin-notifs__title"},Od={key:0,class:"admin-notifs__count"},Wd={class:"admin-notifs__list"},Hd={key:0,class:"admin-notifs__empty"},Kd={key:1,class:"admin-notifs__empty"},Gd=["onClick"],Xd=["data-kind"],Yd={class:"admin-notifs__body"},Zd={class:"admin-notifs__row1"},Jd={key:0,class:"admin-notifs__title-strong"},Qd={key:1,class:"admin-notifs__title-soft"},eu={class:"admin-notifs__time"},tu={key:0,class:"admin-notifs__text"},nu=["onClick"],au=e.defineComponent({__name:"NotificationsDrawer",props:{open:{type:Boolean}},emits:["update:open","select-item"],setup(t,{emit:n}){const a=t,r=n,o=Se();function l(k){r("update:open",k)}e.watch(()=>a.open,async k=>{k&&await o.load(o.lastFilter??"all",1).catch(()=>{})},{immediate:!0});const i=e.computed(()=>o.lastFilter??"all");async function s(k){await o.load(k,1).catch(()=>{})}async function u(){await o.markAllAsRead().catch(()=>{})}async function f(k){r("select-item",k),k.read_at||await o.markAsRead(k.id).catch(()=>{})}async function p(k,m){m.stopPropagation(),await o.destroy(k.id).catch(()=>{})}function b(k){const m=k.data.level;return m==="success"||m==="warning"||m==="danger"?m:"info"}function d(k){return k.data.title??"—"}function B(k){return k.data.body??""}function y(k){if(!k)return"";const m=new Date(k),w=Math.max(0,Date.now()-m.getTime()),V=Math.floor(w/6e4);if(V<1)return"только что";if(V<60)return`${V} мин назад`;const E=Math.floor(V/60);if(E<24)return`${E} ч назад`;const C=Math.floor(E/24);return C<7?`${C} д назад`:m.toLocaleDateString("ru-RU")}return(k,m)=>(e.openBlock(),e.createBlock(e.unref(c.UidDrawer),{"model-value":t.open,side:"right",width:"400px",title:"Уведомления","onUpdate:modelValue":l},{header:e.withCtx(()=>[e.createElementVNode("div",qd,[e.createElementVNode("h2",jd,[m[0]||(m[0]=e.createTextVNode(" Уведомления ",-1)),e.unref(o).unreadCount>0?(e.openBlock(),e.createElementBlock("span",Od," ("+e.toDisplayString(e.unref(o).unreadCount)+") ",1)):e.createCommentVNode("",!0)]),e.unref(o).unreadCount>0?(e.openBlock(),e.createBlock(e.unref(c.UidButton),{key:0,variant:"ghost",size:"sm",onClick:u},{default:e.withCtx(()=>[...m[1]||(m[1]=[e.createTextVNode(" Прочитать все ",-1)])]),_:1})):e.createCommentVNode("",!0)])]),default:e.withCtx(()=>[e.createVNode(e.unref(c.UidTabs),{"model-value":i.value,"onUpdate:modelValue":s},{list:e.withCtx(()=>[e.createVNode(e.unref(c.UidTab),{value:"all"},{default:e.withCtx(()=>[...m[2]||(m[2]=[e.createTextVNode("Все",-1)])]),_:1}),e.createVNode(e.unref(c.UidTab),{value:"unread"},{default:e.withCtx(()=>[m[3]||(m[3]=e.createTextVNode(" Непрочитанные",-1)),e.unref(o).unreadCount>0?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createTextVNode(" ("+e.toDisplayString(e.unref(o).unreadCount)+") ",1)],64)):e.createCommentVNode("",!0)]),_:1}),e.createVNode(e.unref(c.UidTab),{value:"read"},{default:e.withCtx(()=>[...m[4]||(m[4]=[e.createTextVNode("Прочитанные",-1)])]),_:1})]),default:e.withCtx(()=>[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(["all","unread","read"],w=>e.createVNode(e.unref(c.UidTabPanel),{key:w,value:w},{default:e.withCtx(()=>[e.createElementVNode("ul",Wd,[e.unref(o).loading?(e.openBlock(),e.createElementBlock("li",Hd," Загрузка… ")):e.unref(o).items.length===0?(e.openBlock(),e.createElementBlock("li",Kd," Нет уведомлений ")):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(o).items,V=>(e.openBlock(),e.createElementBlock("li",{key:V.id,class:e.normalizeClass(["admin-notifs__item",`admin-notifs__item--${b(V)}`,{"admin-notifs__item--unread":!V.read_at}]),onClick:E=>f(V)},[e.createElementVNode("span",{class:"admin-notifs__icon","data-kind":b(V)},null,8,Xd),e.createElementVNode("div",Yd,[e.createElementVNode("div",Zd,[V.read_at?(e.openBlock(),e.createElementBlock("span",Qd,e.toDisplayString(d(V)),1)):(e.openBlock(),e.createElementBlock("strong",Jd,e.toDisplayString(d(V)),1)),e.createElementVNode("span",eu,e.toDisplayString(y(V.created_at)),1)]),B(V)?(e.openBlock(),e.createElementBlock("p",tu,e.toDisplayString(B(V)),1)):e.createCommentVNode("",!0)]),e.createElementVNode("button",{type:"button",class:"admin-notifs__close","aria-label":"Удалить",onClick:E=>p(V,E)}," × ",8,nu)],10,Gd))),128))])]),_:1},8,["value"])),64))]),_:1},8,["model-value"])]),_:1},8,["model-value"]))}}),ou={class:"admin-page admin-import-wizard"},lu={class:"admin-page__hd"},ru={class:"admin-page__title-wrap"},iu={class:"admin-page__title"},su={class:"admin-page__actions"},cu={key:0,class:"admin-import-wizard__empty"},du={key:1,class:"admin-import-wizard__mapping"},uu={class:"admin-import-wizard__map-source"},mu={key:0,class:"admin-import-wizard__map-sample"},fu={class:"admin-import-wizard__card-hd"},pu={key:2,class:"admin-import-wizard__empty"},vu={key:0,class:"admin-import-wizard__empty"},hu={class:"admin-import-wizard__kpi"},yu={class:"admin-import-wizard__nav"},gu=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,o=[{label:"Загрузка",description:"CSV / TSV / XLSX"},{label:"Сопоставление",description:"Колонки файла → поля"},{label:"Предпросмотр",description:"Проверка первых строк"},{label:"Импорт",description:"Запуск + сводка"}],l=e.ref(0),i=e.computed(()=>a.step??l.value);function s(E){a.step===void 0&&(E<0||E>=o.length||(l.value=E))}const u=e.ref([]);function f(E){u.value=E,E.length>0&&r("file-uploaded",E[0].file)}const p=e.ref({});function b(E,C){p.value[E]=C===null||C===""?null:String(C)}function d(){return a.headers.map(E=>({source:E.key,target:p.value[E.key]??null}))}function B(){r("mapping-submit",d()),s(2)}function y(){r("run-import"),s(3)}const k=e.computed(()=>i.value>0),m=e.computed(()=>{switch(i.value){case 0:return u.value.length>0;case 1:return Object.values(p.value).some(E=>E!==null);case 2:return!0;default:return!1}}),w=e.computed(()=>[{value:"",label:"Не импортировать"},...a.fieldOptions]);function V(){r("cancel")}return(E,C)=>(e.openBlock(),e.createElementBlock("section",ou,[e.createElementVNode("header",lu,[e.createElementVNode("div",ru,[e.createElementVNode("h1",iu,e.toDisplayString(t.title),1)]),e.createElementVNode("div",su,[e.createVNode(e.unref(c.UidButton),{variant:"ghost",onClick:V},{default:e.withCtx(()=>[...C[2]||(C[2]=[e.createTextVNode("Отмена",-1)])]),_:1})])]),e.createVNode(e.unref(c.UidStepper),{steps:o,current:i.value},null,8,["current"]),i.value===0?(e.openBlock(),e.createBlock(e.unref(c.UidCard),{key:0,padding:"md",class:"admin-import-wizard__card"},{default:e.withCtx(()=>[C[3]||(C[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":u.value,accept:".csv,.tsv,.xlsx","max-size":50*1024*1024,"max-files":1,"primary-text":"Перетащите файл сюда или","secondary-text":"нажмите чтобы выбрать","onUpdate:modelValue":f},null,8,["model-value"])]),_:1})):i.value===1?(e.openBlock(),e.createBlock(e.unref(c.UidCard),{key:1,padding:"md",class:"admin-import-wizard__card"},{default:e.withCtx(()=>[C[5]||(C[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",cu," Нет данных — host ещё не отдал headers. Загрузите файл сначала. ")):(e.openBlock(),e.createElementBlock("div",du,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.headers,M=>(e.openBlock(),e.createElementBlock("div",{key:M.key,class:"admin-import-wizard__map-row"},[e.createElementVNode("div",uu,[e.createElementVNode("strong",null,e.toDisplayString(M.label),1),M.sample?(e.openBlock(),e.createElementBlock("span",mu," «"+e.toDisplayString(M.sample)+"» ",1)):e.createCommentVNode("",!0)]),C[4]||(C[4]=e.createElementVNode("span",{class:"admin-import-wizard__map-arrow"},"→",-1)),e.createVNode(e.unref(c.UidSelect),{"model-value":p.value[M.key]??"",options:w.value,placeholder:"Не импортировать","onUpdate:modelValue":g=>b(M.key,g)},null,8,["model-value","options","onUpdate:modelValue"])]))),128))]))]),_:1})):i.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",fu,[C[6]||(C[6]=e.createElementVNode("h3",null,"3. Предпросмотр",-1)),e.createElementVNode("p",null,"Первые "+e.toDisplayString(t.preview.length)+" строк перед импортом",1)]),t.preview.some(M=>M.__warning)?(e.openBlock(),e.createBlock(e.unref(c.UidAlert),{key:0,variant:"warning",style:{"margin-bottom":"var(--uid-space-md)"}},{default:e.withCtx(()=>[...C[7]||(C[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",pu," Host не передал previewColumns/preview. "))]),_:1})):(e.openBlock(),e.createBlock(e.unref(c.UidCard),{key:3,padding:"md",class:"admin-import-wizard__card"},{default:e.withCtx(()=>[C[8]||(C[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",hu,[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",vu," Запускается импорт… "))]),_:1})),e.createElementVNode("footer",yu,[k.value?(e.openBlock(),e.createBlock(e.unref(c.UidButton),{key:0,variant:"ghost",onClick:C[0]||(C[0]=M=>s(i.value-1))},{default:e.withCtx(()=>[...C[9]||(C[9]=[e.createTextVNode(" Назад ",-1)])]),_:1})):e.createCommentVNode("",!0),C[13]||(C[13]=e.createElementVNode("span",{style:{flex:"1"}},null,-1)),i.value===0?(e.openBlock(),e.createBlock(e.unref(c.UidButton),{key:1,variant:"primary",disabled:!m.value,onClick:C[1]||(C[1]=M=>s(1))},{default:e.withCtx(()=>[...C[10]||(C[10]=[e.createTextVNode(" Далее ",-1)])]),_:1},8,["disabled"])):i.value===1?(e.openBlock(),e.createBlock(e.unref(c.UidButton),{key:2,variant:"primary",disabled:!m.value,onClick:B},{default:e.withCtx(()=>[...C[11]||(C[11]=[e.createTextVNode(" Подтвердить mapping ",-1)])]),_:1},8,["disabled"])):i.value===2?(e.openBlock(),e.createBlock(e.unref(c.UidButton),{key:3,variant:"primary",onClick:y},{default:e.withCtx(()=>[...C[12]||(C[12]=[e.createTextVNode(" Запустить импорт ",-1)])]),_:1})):e.createCommentVNode("",!0)])]))}}),ku={class:"admin-page admin-field-gallery"},_u={class:"admin-gallery__group-title"},bu={class:"admin-gallery__grid"},wu={class:"admin-gallery__card-hd"},Bu={class:"admin-gallery__card-title"},Vu={class:"admin-gallery__card-type"},Nu={class:"admin-gallery__card-desc"},xu={class:"admin-gallery__card-demo"},Cu=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((o,l)=>(o[l.group]||(o[l.group]=[]),o[l.group].push(l),o),{}),r=e.reactive(n.reduce((o,l)=>Object.assign(o,l.initial),{}));return ne.provideFormState(r),(o,l)=>(e.openBlock(),e.createElementBlock("section",ku,[l[0]||(l[0]=e.createElementVNode("header",{class:"admin-page__hd"},[e.createElementVNode("div",{class:"admin-page__title-wrap"},[e.createElementVNode("h1",{class:"admin-page__title"},"Field Gallery"),e.createElementVNode("div",{class:"admin-page__count"}," Каталог встроенных field-компонентов library + примеры использования ")])],-1)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(a),(i,s)=>(e.openBlock(),e.createElementBlock("section",{key:s,class:"admin-gallery__group"},[e.createElementVNode("h2",_u,e.toDisplayString(s),1),e.createElementVNode("div",bu,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(i,u=>(e.openBlock(),e.createBlock(e.unref(c.UidCard),{key:u.type+u.title,padding:"md",class:"admin-gallery__card"},{default:e.withCtx(()=>[e.createElementVNode("header",wu,[e.createElementVNode("h3",Bu,e.toDisplayString(u.title),1),e.createElementVNode("code",Vu,"type: "+e.toDisplayString(u.type),1)]),e.createElementVNode("p",Nu,e.toDisplayString(u.description),1),e.createElementVNode("div",xu,[e.createVNode(Vt,{node:u.node},null,8,["node"])])]),_:2},1024))),128))])]))),128))]))}});exports.provideFormState=ne.provideFormState;exports.tryUseFormState=ne.tryUseFormState;exports.useFormState=ne.useFormState;exports.AdminApp=un;exports.AdminShell=dn;exports.AdminSidebar=cn;exports.AdminTopBar=rn;exports.ApiError=de;exports.BadgeEntry=Gn;exports.BarChartWidget=xt;exports.CheckboxField=Ce;exports.ColumnsLayout=Wn;exports.DashboardPage=kt;exports.DateField=ve;exports.DonutChartWidget=Ct;exports.FieldGalleryPage=Cu;exports.FieldRenderer=Vt;exports.ForbiddenError=an;exports.ForbiddenPage=kn;exports.GaugeWidget=Fn;exports.HeatmapWidget=In;exports.HomePage=gn;exports.IconEntry=Xn;exports.ImportWizardPage=gu;exports.InfolistRenderer=Un;exports.KeyValueEntry=it;exports.LayoutRenderer=Be;exports.LocaleSwitcher=pt;exports.LoginForm=Bn;exports.LoginPage=Nn;exports.MarkdownWidget=An;exports.NetworkError=Me;exports.NotFoundError=on;exports.NotFoundPage=_n;exports.NotificationBell=nn;exports.NotificationsDrawer=au;exports.NumberField=Pe;exports.ProfilePage=Tn;exports.RecentTableWidget=Re;exports.ResourceFormPage=at;exports.ResourceIndexPage=Cn;exports.ResourceViewPage=Dn;exports.RowsLayout=rt;exports.SectionLayout=ye;exports.SelectField=me;exports.SettingsPage=bn;exports.StatWidget=lt;exports.TabsLayout=Hn;exports.TextAreaField=xe;exports.TextEntry=j;exports.TextField=le;exports.ThemeToggle=ft;exports.TwoFactorForm=Vn;exports.UnauthenticatedError=vt;exports.UnknownEntry=Sn;exports.UnknownField=Bt;exports.UnknownScreenPage=wn;exports.UnknownWidget=gt;exports.UserMenu=ln;exports.ValidationError=Ue;exports.WidgetRenderer=yn;exports.buildRoutesFromManifest=Pn;exports.clearAdminClient=en;exports.clearInfolistRegistry=gs;exports.clearRegistry=is;exports.clearWidgetRegistry=Cl;exports.createAdminApp=Ld;exports.createAdminClient=Rn;exports.createAdminRouter=On;exports.createAuthGuard=qn;exports.createTitleGuard=jn;exports.getAdminClient=H;exports.getField=wt;exports.getInfolistEntry=ot;exports.getLayout=nt;exports.getWidget=pn;exports.hasAdminClient=tn;exports.hasField=ns;exports.hasInfolistEntry=hs;exports.hasLayout=ls;exports.hasWidget=xl;exports.isError=Xc;exports.isSuccess=zn;exports.listFields=as;exports.listInfolistEntries=ys;exports.listLayouts=rs;exports.listWidgets=vn;exports.loadBootstrap=Rd;exports.provideRecord=Mn;exports.readCsrfFromMeta=Pd;exports.readInlineBootstrap=Zn;exports.registerBuiltinComponents=Kn;exports.registerBuiltinInfolistEntries=Yn;exports.registerBuiltinWidgets=Ln;exports.registerComponents=En;exports.registerField=ts;exports.registerInfolistEntries=$n;exports.registerInfolistEntry=vs;exports.registerLayout=os;exports.registerWidget=Nl;exports.registerWidgets=hn;exports.setAdminClient=mt;exports.toApiError=tt;exports.tryUseRecord=De;exports.useAuthStore=re;exports.useLocaleStore=$e;exports.useManifestStore=ce;exports.useMenuStore=ht;exports.useNotificationsStore=Se;exports.useRecord=$s;exports.useResourceFormStore=bt;exports.useResourceIndexStore=_t;exports.useThemeStore=We;
|
|
2
4
|
//# sourceMappingURL=index.cjs.map
|