From a3dde3874a939d1426fb45b3eb7d50fab906a8a2 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 15 Jul 2026 02:10:05 +0800 Subject: [PATCH] feat(admin): strip SPA ops menus; redirect old hashes to native WP (Phase 4) SPA shop/forum/payment/users sections now keep configuration pages only. Operational workbenches were removed from the sidebar and loaders; legacy hash routes open NativeOpsRedirect into the matching WP native admin page. Admin SPA production build refreshed accordingly. --- .../build/AttachmentPermissions.NUq74TjZ.js | 1 + assets/admin/build/AttachmentPermissions.css | 1 + assets/admin/build/BannerManager.DIeolpAQ.js | 1 + assets/admin/build/BannerManager.css | 1 + assets/admin/build/CmsCredits.xTl3ugX1.js | 1 + .../build/CommentPermissions.wWXEnm5v.js | 1 + .../admin/build/CommentSettings.BXEQmxrU.js | 1 + assets/admin/build/DeferredPage.DrhT6-8i.js | 1 + assets/admin/build/DeferredPage.css | 1 + assets/admin/build/DocsPage.Cef6fL12.js | 1 + assets/admin/build/DocsPage.css | 1 + .../build/DownloadPermissions.D_4Tmrvf.js | 1 + assets/admin/build/ExtensionAI.css | 1 + assets/admin/build/ExtensionAI.vrglPKlb.js | 1 + .../admin/build/ExtensionSecurity.Dusc4b9q.js | 1 + assets/admin/build/ExtensionSecurity.css | 1 + assets/admin/build/ExtensionTools.D5LShWF9.js | 1 + assets/admin/build/ExtensionTools.css | 1 + assets/admin/build/FaIcon.CX_hGmM4.js | 1 + .../build/FloatingButtonsSettings.-1uwNMV9.js | 1 + .../admin/build/FloatingButtonsSettings.css | 1 + assets/admin/build/FooterSettings.css | 1 + assets/admin/build/FooterSettings.pT4aCC_F.js | 1 + .../build/FooterTabbarSettings.RLdsCbkU.js | 1 + assets/admin/build/FooterTabbarSettings.css | 1 + assets/admin/build/HeroManager.css | 1 + assets/admin/build/HeroManager.sfaSC084.js | 1 + assets/admin/build/HomepageSettings.css | 1 + .../admin/build/HomepageSettings.iKd6UZP-.js | 1 + .../admin/build/NativeOpsRedirect.C0bocwWY.js | 1 + assets/admin/build/NativeOpsRedirect.css | 1 + assets/admin/build/PageHeader.Di3JTPjc.js | 1 + assets/admin/build/PageHeader.css | 1 + assets/admin/build/PaymentGateway.BTbqvMWf.js | 1 + assets/admin/build/PaymentGateway.css | 1 + .../build/PermissionsCapabilities.DAu3e_3q.js | 1 + .../admin/build/PermissionsCapabilities.css | 1 + .../admin/build/PostPageSettings.B1brRzY8.js | 1 + .../admin/build/ResourceDownload.DvRILKEZ.js | 1 + assets/admin/build/SchemaPage.CSkx936u.js | 1 + assets/admin/build/SchemaPage.css | 1 + .../build/ThemeAuthorizationPage.exqEspJr.js | 1 + assets/admin/build/ThemeInfoPage.CmzNxB-f.js | 1 + assets/admin/build/ThemeInfoPage.css | 1 + .../build/ToolsEmailRollback.YrJUTDzS.js | 1 + assets/admin/build/ToolsEmailRollback.css | 1 + assets/admin/build/ToolsHealth.CoF-E7n8.js | 1 + assets/admin/build/ToolsHealth.css | 1 + .../admin/build/ToolsImportExport.CBVCMq0z.js | 3 + assets/admin/build/ToolsImportExport.css | 1 + assets/admin/build/ToolsUpdate.CTzLIO24.js | 1 + assets/admin/build/ToolsUpdate.css | 1 + assets/admin/build/UsersBadge.BAdBIwxF.js | 4 + assets/admin/build/UsersFeatures.8x2S0GR6.js | 1 + assets/admin/build/UsersLevel.D9sYKZP1.js | 10 + assets/admin/build/UsersSignin.frRX-AHK.js | 6 + assets/admin/build/UsersVerify.DlTUYsYd.js | 1 + assets/admin/build/UsersVerify.css | 1 + .../build/UsersWechatTemplate.BTkLtWGJ.js | 1 + assets/admin/build/UsersWechatTemplate.css | 1 + assets/admin/build/index.css | 1 + assets/admin/build/index.html | 16 + assets/admin/build/index.js | 2 + assets/admin/build/index2.css | 1 + assets/admin/build/media.BHNcAGK-.js | 1 + assets/admin/build/naive-ui.css | 8260 +++++++++++++++++ assets/admin/build/shared-api.B7o7Pzvu.js | 55 + assets/admin/build/shared-api.D5_fnN32.js | 1 + .../admin/build/vendor-draggable.CceJcfGJ.js | 10 + assets/admin/build/vendor-misc.1adHN6i_.js | 48 + assets/admin/build/vendor-naive.BuHWlEgf.js | 7348 +++++++++++++++ assets/admin/build/vendor-vue.Bykizn0M.js | 52 + assets/admin/src/constants/sections/forum.js | 59 +- assets/admin/src/constants/sections/index.js | 4 +- .../admin/src/constants/sections/payment.js | 42 +- assets/admin/src/constants/sections/shop.js | 81 +- assets/admin/src/constants/sections/users.js | 53 +- .../pages/placeholder/NativeOpsRedirect.vue | 57 + .../src/router/component-loaders/core.js | 1 + .../src/router/component-loaders/forum.js | 9 +- .../src/router/component-loaders/payment.js | 3 - .../src/router/component-loaders/shop.js | 11 +- .../src/router/component-loaders/users.js | 4 - assets/admin/src/router/index.js | 36 + docs/zibll-gap-matrix.md | 2 +- 85 files changed, 15987 insertions(+), 249 deletions(-) create mode 100644 assets/admin/build/AttachmentPermissions.NUq74TjZ.js create mode 100644 assets/admin/build/AttachmentPermissions.css create mode 100644 assets/admin/build/BannerManager.DIeolpAQ.js create mode 100644 assets/admin/build/BannerManager.css create mode 100644 assets/admin/build/CmsCredits.xTl3ugX1.js create mode 100644 assets/admin/build/CommentPermissions.wWXEnm5v.js create mode 100644 assets/admin/build/CommentSettings.BXEQmxrU.js create mode 100644 assets/admin/build/DeferredPage.DrhT6-8i.js create mode 100644 assets/admin/build/DeferredPage.css create mode 100644 assets/admin/build/DocsPage.Cef6fL12.js create mode 100644 assets/admin/build/DocsPage.css create mode 100644 assets/admin/build/DownloadPermissions.D_4Tmrvf.js create mode 100644 assets/admin/build/ExtensionAI.css create mode 100644 assets/admin/build/ExtensionAI.vrglPKlb.js create mode 100644 assets/admin/build/ExtensionSecurity.Dusc4b9q.js create mode 100644 assets/admin/build/ExtensionSecurity.css create mode 100644 assets/admin/build/ExtensionTools.D5LShWF9.js create mode 100644 assets/admin/build/ExtensionTools.css create mode 100644 assets/admin/build/FaIcon.CX_hGmM4.js create mode 100644 assets/admin/build/FloatingButtonsSettings.-1uwNMV9.js create mode 100644 assets/admin/build/FloatingButtonsSettings.css create mode 100644 assets/admin/build/FooterSettings.css create mode 100644 assets/admin/build/FooterSettings.pT4aCC_F.js create mode 100644 assets/admin/build/FooterTabbarSettings.RLdsCbkU.js create mode 100644 assets/admin/build/FooterTabbarSettings.css create mode 100644 assets/admin/build/HeroManager.css create mode 100644 assets/admin/build/HeroManager.sfaSC084.js create mode 100644 assets/admin/build/HomepageSettings.css create mode 100644 assets/admin/build/HomepageSettings.iKd6UZP-.js create mode 100644 assets/admin/build/NativeOpsRedirect.C0bocwWY.js create mode 100644 assets/admin/build/NativeOpsRedirect.css create mode 100644 assets/admin/build/PageHeader.Di3JTPjc.js create mode 100644 assets/admin/build/PageHeader.css create mode 100644 assets/admin/build/PaymentGateway.BTbqvMWf.js create mode 100644 assets/admin/build/PaymentGateway.css create mode 100644 assets/admin/build/PermissionsCapabilities.DAu3e_3q.js create mode 100644 assets/admin/build/PermissionsCapabilities.css create mode 100644 assets/admin/build/PostPageSettings.B1brRzY8.js create mode 100644 assets/admin/build/ResourceDownload.DvRILKEZ.js create mode 100644 assets/admin/build/SchemaPage.CSkx936u.js create mode 100644 assets/admin/build/SchemaPage.css create mode 100644 assets/admin/build/ThemeAuthorizationPage.exqEspJr.js create mode 100644 assets/admin/build/ThemeInfoPage.CmzNxB-f.js create mode 100644 assets/admin/build/ThemeInfoPage.css create mode 100644 assets/admin/build/ToolsEmailRollback.YrJUTDzS.js create mode 100644 assets/admin/build/ToolsEmailRollback.css create mode 100644 assets/admin/build/ToolsHealth.CoF-E7n8.js create mode 100644 assets/admin/build/ToolsHealth.css create mode 100644 assets/admin/build/ToolsImportExport.CBVCMq0z.js create mode 100644 assets/admin/build/ToolsImportExport.css create mode 100644 assets/admin/build/ToolsUpdate.CTzLIO24.js create mode 100644 assets/admin/build/ToolsUpdate.css create mode 100644 assets/admin/build/UsersBadge.BAdBIwxF.js create mode 100644 assets/admin/build/UsersFeatures.8x2S0GR6.js create mode 100644 assets/admin/build/UsersLevel.D9sYKZP1.js create mode 100644 assets/admin/build/UsersSignin.frRX-AHK.js create mode 100644 assets/admin/build/UsersVerify.DlTUYsYd.js create mode 100644 assets/admin/build/UsersVerify.css create mode 100644 assets/admin/build/UsersWechatTemplate.BTkLtWGJ.js create mode 100644 assets/admin/build/UsersWechatTemplate.css create mode 100644 assets/admin/build/index.css create mode 100644 assets/admin/build/index.html create mode 100644 assets/admin/build/index.js create mode 100644 assets/admin/build/index2.css create mode 100644 assets/admin/build/media.BHNcAGK-.js create mode 100644 assets/admin/build/naive-ui.css create mode 100644 assets/admin/build/shared-api.B7o7Pzvu.js create mode 100644 assets/admin/build/shared-api.D5_fnN32.js create mode 100644 assets/admin/build/vendor-draggable.CceJcfGJ.js create mode 100644 assets/admin/build/vendor-misc.1adHN6i_.js create mode 100644 assets/admin/build/vendor-naive.BuHWlEgf.js create mode 100644 assets/admin/build/vendor-vue.Bykizn0M.js create mode 100644 assets/admin/src/pages/placeholder/NativeOpsRedirect.vue diff --git a/assets/admin/build/AttachmentPermissions.NUq74TjZ.js b/assets/admin/build/AttachmentPermissions.NUq74TjZ.js new file mode 100644 index 00000000..cebc53a7 --- /dev/null +++ b/assets/admin/build/AttachmentPermissions.NUq74TjZ.js @@ -0,0 +1 @@ +import{o as q,X as U,a4 as l,a3 as o,r as w,a1 as m,e as F,_ as $,W as x,f as z,Y as s,F as D,R as E,a2 as G,Z as P,c as H}from"./vendor-vue.Bykizn0M.js";import{a as f}from"./shared-api.D5_fnN32.js";import{P as L}from"./PageHeader.Di3JTPjc.js";import{_ as T}from"./FaIcon.CX_hGmM4.js";import{_ as W}from"./index.js";import{u as X}from"./vendor-naive.BuHWlEgf.js";import"./vendor-misc.1adHN6i_.js";const Y={class:"aksrt-page-container"},Z={class:"aksrt-attach__summary"},j={class:"aksrt-form-actions"},J={__name:"AttachmentPermissions",setup(K){const y=$(),v=X(),g=w(!0),k=w(!1),p=w({}),e=F({allow_avatar_upload:!0,allow_cover_upload:!0,allow_background_upload:!1,avatar_max_size:2,allow_submit_images:!0,submit_image_max_size:5,allow_comment_images:!1,comment_image_max_size:2,allow_resource_upload:!0,resource_max_size:50,ai_moderate_background:!0,ai_moderate_submit:!1}),M=H(()=>[{key:"avatar",icon:"fas fa-user-circle",label:"头像上传",enabled:e.allow_avatar_upload},{key:"cover",icon:"fas fa-image",label:"封面上传",enabled:e.allow_cover_upload},{key:"background",icon:"fas fa-photo-video",label:"背景图上传",enabled:e.allow_background_upload},{key:"submit",icon:"fas fa-edit",label:"投稿图片",enabled:e.allow_submit_images},{key:"comment",icon:"fas fa-comment-dots",label:"评论图片",enabled:e.allow_comment_images},{key:"resource",icon:"fas fa-file-archive",label:"资源附件",enabled:e.allow_resource_upload}]);function B(i){y.push(i)}function N(){y.push("/permissions/moderation")}async function S(){g.value=!0;try{const[i,a]=await Promise.all([f.getPermissionsAttachmentSettings(),f.getPermissionsModerationSettings()]),n=(i==null?void 0:i.data)??i??{},_=(a==null?void 0:a.data)??a??{};e.allow_avatar_upload=n.allow_avatar_upload!==!1,e.allow_cover_upload=n.allow_cover_upload!==!1,e.allow_background_upload=!!n.allow_background_upload,e.avatar_max_size=Number(n.avatar_max_size||2),e.allow_submit_images=n.allow_submit_images!==!1,e.submit_image_max_size=Number(n.submit_image_max_size||5),e.allow_comment_images=!!n.allow_comment_images,e.comment_image_max_size=Number(n.comment_image_max_size||2),e.allow_resource_upload=n.allow_resource_upload!==!1,e.resource_max_size=Number(n.resource_max_size||50),e.ai_moderate_background=_.ai_moderate_background!==!1,e.ai_moderate_submit=!!_.ai_moderate_submit,p.value={..._}}catch(i){v.error(i.message||"加载附件权限失败")}finally{g.value=!1}}async function A(){k.value=!0;try{await Promise.all([f.savePermissionsAttachmentSettings({allow_avatar_upload:e.allow_avatar_upload,allow_cover_upload:e.allow_cover_upload,allow_background_upload:e.allow_background_upload,avatar_max_size:e.avatar_max_size,allow_submit_images:e.allow_submit_images,submit_image_max_size:e.submit_image_max_size,allow_comment_images:e.allow_comment_images,comment_image_max_size:e.comment_image_max_size,allow_resource_upload:e.allow_resource_upload,resource_max_size:e.resource_max_size}),f.savePermissionsModerationSettings({...p.value,ai_moderate_background:e.ai_moderate_background,ai_moderate_submit:e.ai_moderate_submit})]),p.value={...p.value,ai_moderate_background:e.ai_moderate_background,ai_moderate_submit:e.ai_moderate_submit},v.success("附件治理配置已保存")}catch(i){v.error(i.message||"保存失败")}finally{k.value=!1}}return q(S),(i,a)=>{const n=m("n-button"),_=m("n-space"),C=m("n-grid-item"),I=m("n-grid"),d=m("n-card"),u=m("n-switch"),r=m("n-form-item"),c=m("n-input-number"),b=m("n-form"),V=m("n-spin");return x(),U("div",Y,[l(L,{title:"附件治理",desc:"统一管理全站上传行为:头像、封面、投稿图片、评论图片、背景图和资源附件。"},{actions:o(()=>[l(_,null,{default:o(()=>[l(n,{quaternary:"",onClick:a[0]||(a[0]=t=>B("/permissions/download"))},{default:o(()=>[...a[13]||(a[13]=[z("下载权限",-1)])]),_:1}),l(n,{quaternary:"",onClick:N},{default:o(()=>[...a[14]||(a[14]=[z("审核策略",-1)])]),_:1})]),_:1})]),_:1}),l(V,{show:g.value,style:{width:"100%","min-height":"200px"}},{default:o(()=>[l(d,{class:"aksrt-section-card"},{default:o(()=>[a[15]||(a[15]=s("div",{class:"aksrt-section-header"},[s("h3",null,"上传策略总览")],-1)),l(I,{cols:3,"x-gap":12,"y-gap":12},{default:o(()=>[(x(!0),U(D,null,E(M.value,t=>(x(),G(C,{key:t.key},{default:o(()=>[s("div",Z,[l(T,{icon:t.icon,size:16,color:t.enabled?"#52c41a":"#8a909c"},null,8,["icon","color"]),s("div",null,[s("strong",null,P(t.label),1),s("p",null,P(t.enabled?"已启用":"已关闭"),1)])])]),_:2},1024))),128))]),_:1})]),_:1}),l(d,{class:"aksrt-section-card"},{default:o(()=>[a[19]||(a[19]=s("div",{class:"aksrt-section-header"},[s("h3",null,"头像与封面")],-1)),l(b,{model:e,"label-placement":"left","label-width":"200",class:"aksrt-form"},{default:o(()=>[l(r,{label:"允许用户上传头像"},{feedback:o(()=>[...a[16]||(a[16]=[s("span",{class:"aksrt-hint-text"},"关闭后用户只能使用 Gravatar/Cravatar 自动头像。",-1)])]),default:o(()=>[l(u,{value:e.allow_avatar_upload,"onUpdate:value":a[1]||(a[1]=t=>e.allow_avatar_upload=t)},null,8,["value"])]),_:1}),l(r,{label:"允许用户上传封面图"},{feedback:o(()=>[...a[17]||(a[17]=[s("span",{class:"aksrt-hint-text"},"控制用户中心公开主页封面图上传入口。",-1)])]),default:o(()=>[l(u,{value:e.allow_cover_upload,"onUpdate:value":a[2]||(a[2]=t=>e.allow_cover_upload=t)},null,8,["value"])]),_:1}),l(r,{label:"允许用户上传背景图"},{feedback:o(()=>[...a[18]||(a[18]=[s("span",{class:"aksrt-hint-text"},"控制用户中心公开可用的背景图上传入口。",-1)])]),default:o(()=>[l(u,{value:e.allow_background_upload,"onUpdate:value":a[3]||(a[3]=t=>e.allow_background_upload=t)},null,8,["value"])]),_:1}),l(r,{label:"头像/封面大小上限 (MB)"},{default:o(()=>[l(c,{value:e.avatar_max_size,"onUpdate:value":a[4]||(a[4]=t=>e.avatar_max_size=t),min:1,max:10,style:{"max-width":"160px"}},null,8,["value"])]),_:1})]),_:1},8,["model"])]),_:1}),l(d,{class:"aksrt-section-card"},{default:o(()=>[a[22]||(a[22]=s("div",{class:"aksrt-section-header"},[s("h3",null,"内容上传")],-1)),l(b,{model:e,"label-placement":"left","label-width":"200",class:"aksrt-form"},{default:o(()=>[l(r,{label:"允许投稿插入图片"},{feedback:o(()=>[...a[20]||(a[20]=[s("span",{class:"aksrt-hint-text"},"前台投稿编辑器中允许插入图片。",-1)])]),default:o(()=>[l(u,{value:e.allow_submit_images,"onUpdate:value":a[5]||(a[5]=t=>e.allow_submit_images=t)},null,8,["value"])]),_:1}),l(r,{label:"投稿图片大小上限 (MB)"},{default:o(()=>[l(c,{value:e.submit_image_max_size,"onUpdate:value":a[6]||(a[6]=t=>e.submit_image_max_size=t),min:1,max:20,style:{"max-width":"160px"}},null,8,["value"])]),_:1}),l(r,{label:"允许评论插入图片"},{feedback:o(()=>[...a[21]||(a[21]=[s("span",{class:"aksrt-hint-text"},"评论工具栏中允许插入图片链接或上传图片。",-1)])]),default:o(()=>[l(u,{value:e.allow_comment_images,"onUpdate:value":a[7]||(a[7]=t=>e.allow_comment_images=t)},null,8,["value"])]),_:1}),l(r,{label:"评论图片大小上限 (MB)"},{default:o(()=>[l(c,{value:e.comment_image_max_size,"onUpdate:value":a[8]||(a[8]=t=>e.comment_image_max_size=t),min:1,max:10,style:{"max-width":"160px"}},null,8,["value"])]),_:1})]),_:1},8,["model"])]),_:1}),l(d,{class:"aksrt-section-card"},{default:o(()=>[a[24]||(a[24]=s("div",{class:"aksrt-section-header"},[s("h3",null,"资源附件")],-1)),l(b,{model:e,"label-placement":"left","label-width":"200",class:"aksrt-form"},{default:o(()=>[l(r,{label:"允许资源附件上传"},{feedback:o(()=>[...a[23]||(a[23]=[s("span",{class:"aksrt-hint-text"},"后台资源编辑器中允许上传附件文件。",-1)])]),default:o(()=>[l(u,{value:e.allow_resource_upload,"onUpdate:value":a[9]||(a[9]=t=>e.allow_resource_upload=t)},null,8,["value"])]),_:1}),l(r,{label:"资源附件大小上限 (MB)"},{default:o(()=>[l(c,{value:e.resource_max_size,"onUpdate:value":a[10]||(a[10]=t=>e.resource_max_size=t),min:1,max:200,style:{"max-width":"160px"}},null,8,["value"])]),_:1})]),_:1},8,["model"])]),_:1}),l(d,{class:"aksrt-section-card"},{default:o(()=>[a[27]||(a[27]=s("div",{class:"aksrt-section-header"},[s("h3",null,"审核联动")],-1)),l(b,{model:e,"label-placement":"left","label-width":"200",class:"aksrt-form"},{default:o(()=>[l(r,{label:"背景图接入 AI 审核"},{feedback:o(()=>[...a[25]||(a[25]=[s("span",{class:"aksrt-hint-text"},"命中高风险时会阻断上传,并保留上一次背景图。",-1)])]),default:o(()=>[l(u,{value:e.ai_moderate_background,"onUpdate:value":a[11]||(a[11]=t=>e.ai_moderate_background=t)},null,8,["value"])]),_:1}),l(r,{label:"投稿图片接入 AI 审核"},{feedback:o(()=>[...a[26]||(a[26]=[s("span",{class:"aksrt-hint-text"},"投稿中插入的图片也会经过内容安全审核。",-1)])]),default:o(()=>[l(u,{value:e.ai_moderate_submit,"onUpdate:value":a[12]||(a[12]=t=>e.ai_moderate_submit=t)},null,8,["value"])]),_:1})]),_:1},8,["model"])]),_:1}),s("div",j,[l(n,{type:"primary",loading:k.value,onClick:A},{default:o(()=>[...a[28]||(a[28]=[z("保存配置",-1)])]),_:1},8,["loading"])])]),_:1},8,["show"])])}}},oa=W(J,[["__scopeId","data-v-a728445f"]]);export{oa as default}; diff --git a/assets/admin/build/AttachmentPermissions.css b/assets/admin/build/AttachmentPermissions.css new file mode 100644 index 00000000..5684b5c4 --- /dev/null +++ b/assets/admin/build/AttachmentPermissions.css @@ -0,0 +1 @@ +.aksrt-attach__summary[data-v-a728445f]{display:flex;align-items:center;gap:10px;padding:12px;border-radius:6px;background:#fafafa}.aksrt-attach__summary strong[data-v-a728445f]{display:block;font-size:13px;color:#1a1a2e}.aksrt-attach__summary p[data-v-a728445f]{margin:2px 0 0;font-size:12px;color:#8a909c} diff --git a/assets/admin/build/BannerManager.DIeolpAQ.js b/assets/admin/build/BannerManager.DIeolpAQ.js new file mode 100644 index 00000000..53d70fd8 --- /dev/null +++ b/assets/admin/build/BannerManager.DIeolpAQ.js @@ -0,0 +1 @@ +import{o as K,X as U,a4 as t,a3 as n,a1 as i,r as m,_ as O,W as g,Y as o,N as c,f as _,a2 as T,Z as Q,a5 as ee,k as d}from"./vendor-vue.Bykizn0M.js";import{a as f}from"./shared-api.D5_fnN32.js";import{o as ae}from"./media.BHNcAGK-.js";import{P as te}from"./PageHeader.Di3JTPjc.js";import{_ as le}from"./index.js";import{u as ne,a as se,B as p,d as E,b as z}from"./vendor-naive.BuHWlEgf.js";import"./vendor-misc.1adHN6i_.js";const oe={class:"aksrt-page-container content-page"},re={class:"aksrt-card-header-row"},ie={class:"aksrt-inline-setting"},ue={class:"aksrt-inline-setting__actions"},de={class:"aksrt-card-header-row"},me={class:"aksrt-card-header-row__left"},pe={class:"header-icon"},ce={xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round",style:{width:"18px",height:"18px"},"aria-hidden":"true"},ve={class:"aksrt-card-header-row__title"},_e={key:0,class:"aksrt-modal-preview"},fe={class:"aksrt-modal-grid"},ge={class:"aksrt-modal-footer"},be={__name:"BannerManager",setup(ye){const P=O(),r=ne(),V=se();function j(){P.push("/page-display/header-components")}const x=m(!0),C=m(!1),b=m(!1),y=m(!1),h=m([]),k=m(!0),v=m(!1),l=m(S());function S(){return{id:0,title:"",subtitle:"",image_url:"",link_url:"",show_text:!0,enabled:!0,show_meta:!1,sort_order:0}}const D=[{title:"预览",key:"image_url",width:90,render(e){return e.image_url?d(E,{src:e.image_url,width:64,height:36,objectFit:"cover",previewSrc:e.image_url,style:"border-radius:4px;display:block;"}):d("span",{style:"color:#bbb;font-size:12px;"},"无")}},{title:"标题",key:"title",ellipsis:{tooltip:!0},render(e){return e.title||d("span",{style:"color:#bbb;"},"未命名")}},{title:"文字",key:"show_text",width:70,className:"aksrt-table-mobile-hide",render(e){return d(z,{size:"small",type:e.show_text?"info":"default"},{default:()=>e.show_text?"显示":"隐藏"})}},{title:"排序",key:"sort_order",width:64,className:"aksrt-table-mobile-hide"},{title:"元信息",key:"show_meta",width:78,className:"aksrt-table-mobile-hide",render(e){return d(z,{size:"small",type:e.show_meta?"info":"default"},{default:()=>e.show_meta?"显示":"隐藏"})}},{title:"状态",key:"enabled",width:84,render(e){return d(z,{size:"small",type:e.enabled?"success":"default"},{default:()=>e.enabled?"启用":"禁用"})}},{title:"操作",key:"actions",width:130,render(e){return d("div",{style:"display:flex;gap:6px;"},[d(p,{size:"tiny",onClick:()=>q(e)},{default:()=>"编辑"}),d(p,{size:"tiny",type:"error",quaternary:!0,onClick:()=>W(e)},{default:()=>"删除"})])}}];async function N(){try{x.value=!0;const e=await f.getHomepageBanners();e.code==="success"&&(h.value=e.data||[])}catch(e){r.error(e.message||"加载失败")}finally{x.value=!1}}async function I(){b.value=!0;try{const e=await f.getHomepageSettings(),a=(e==null?void 0:e.data)||{};k.value=a.homepage_module_banner_enabled!==!1}catch(e){r.error(e.message||"加载 Banner 开关失败")}finally{b.value=!1}}async function F(){y.value=!0;try{const e=await f.saveHomepageSettings({homepage_module_banner_enabled:k.value});if((e==null?void 0:e.code)==="success"){r.success("Banner 开关已保存");return}throw new Error((e==null?void 0:e.message)||"保存 Banner 开关失败")}catch(e){r.error(e.message||"保存 Banner 开关失败")}finally{y.value=!1}}function $(){l.value=S(),v.value=!0}function q(e){l.value={id:e.id,title:e.title||"",subtitle:e.subtitle||"",image_url:e.image_url||"",link_url:e.link_url||"",show_text:e.show_text!==!1,enabled:!!e.enabled,show_meta:e.show_meta===!0,sort_order:Number(e.sort_order)||0},v.value=!0}async function L(){try{const e=await ae({title:"选择 Banner 图片",buttonText:"使用这张 Banner 图"});e!=null&&e.url&&(l.value.image_url=e.url)}catch(e){r.error(e.message||"打开媒体库失败")}}async function R(){if(!l.value.image_url){r.warning("请填写 Banner 图片");return}C.value=!0;try{l.value.id?(await f.updateHomepageBanner(l.value.id,l.value),r.success("已保存")):(await f.createHomepageBanner(l.value),r.success("已添加")),v.value=!1,await N()}catch(e){r.error(e.message||"保存失败")}finally{C.value=!1}}function W(e){V.warning({title:"确认删除",content:`确定删除 Banner「${e.title||"未命名"}」?`,positiveText:"删除",negativeText:"取消",onPositiveClick:async()=>{try{await f.deleteHomepageBanner(e.id),r.success("已删除"),await N()}catch(a){r.error(a.message||"删除失败")}}})}return K(()=>{N(),I()}),(e,a)=>{const w=i("n-switch"),u=i("n-form-item"),H=i("n-form"),M=i("n-card"),X=i("n-data-table"),Y=i("n-empty"),Z=i("n-spin"),B=i("n-input"),A=i("n-input-group"),G=i("n-input-number"),J=i("n-modal");return g(),U("div",oe,[t(te,{title:"Banner 管理",desc:"管理首页内容流 Banner 幻灯片(图片、文案、跳转、启用状态)。"}),t(M,{class:"aksrt-section-card",style:{"margin-bottom":"16px"}},{header:n(()=>[o("div",re,[a[12]||(a[12]=o("strong",null,"Banner 显示开关",-1)),t(c(p),{size:"small",secondary:"",onClick:j},{default:n(()=>[...a[11]||(a[11]=[_("顶部多功能组件(轮播参数)",-1)])]),_:1})])]),default:n(()=>[t(H,{"label-placement":"left","label-width":"180",class:"aksrt-form"},{default:n(()=>[t(u,{label:"显示首页 Banner"},{default:n(()=>[o("div",ie,[t(w,{value:k.value,"onUpdate:value":a[0]||(a[0]=s=>k.value=s),disabled:b.value||y.value},null,8,["value","disabled"]),a[13]||(a[13]=o("span",{class:"aksrt-inline-setting__hint"},"关闭后,首页 Banner 区块将不再渲染。",-1))])]),_:1})]),_:1}),o("div",ue,[t(c(p),{type:"primary",loading:y.value,disabled:b.value,onClick:F},{default:n(()=>[...a[14]||(a[14]=[_("保存 Banner 开关",-1)])]),_:1},8,["loading","disabled"])])]),_:1}),t(Z,{show:x.value,style:{width:"100%","min-height":"200px"}},{default:n(()=>[t(M,{class:"aksrt-section-card"},{header:n(()=>[o("div",de,[o("div",me,[o("span",pe,[(g(),U("svg",ce,[...a[15]||(a[15]=[o("rect",{width:"18",height:"14",x:"3",y:"5",rx:"2"},null,-1),o("path",{d:"M3 10h18"},null,-1)])]))]),o("strong",ve,"Banner 列表 ("+Q(h.value.length)+")",1)]),t(c(p),{type:"primary",size:"small",onClick:$},{default:n(()=>[...a[16]||(a[16]=[_("+ 添加 Banner",-1)])]),_:1})])]),default:n(()=>[h.value.length?(g(),T(X,{key:0,columns:D,data:h.value,"row-key":s=>s.id,bordered:!1,size:"small"},null,8,["data","row-key"])):(g(),T(Y,{key:1,description:"暂无 Banner,添加后即可在首页使用。"}))]),_:1})]),_:1},8,["show"]),t(J,{show:v.value,"onUpdate:show":a[10]||(a[10]=s=>v.value=s),"mask-closable":!1,preset:"card",title:l.value.id?"编辑 Banner":"添加 Banner",class:"aksrt-modal-card"},{footer:n(()=>[o("div",ge,[t(c(p),{onClick:a[9]||(a[9]=s=>v.value=!1)},{default:n(()=>[...a[18]||(a[18]=[_("取消",-1)])]),_:1}),t(c(p),{type:"primary",loading:C.value,onClick:R},{default:n(()=>[...a[19]||(a[19]=[_("保存",-1)])]),_:1},8,["loading"])])]),default:n(()=>[t(H,{model:l.value,"label-placement":"top",class:"aksrt-form"},{default:n(()=>[t(u,{label:"标题"},{default:n(()=>[t(B,{value:l.value.title,"onUpdate:value":a[1]||(a[1]=s=>l.value.title=s),placeholder:"开启文字后显示的主标题"},null,8,["value"])]),_:1}),t(u,{label:"副标题"},{default:n(()=>[t(B,{value:l.value.subtitle,"onUpdate:value":a[2]||(a[2]=s=>l.value.subtitle=s),placeholder:"开启文字后显示的副标题"},null,8,["value"])]),_:1}),t(u,{label:"Banner 图片"},{default:n(()=>[t(A,null,{default:n(()=>[t(B,{value:l.value.image_url,"onUpdate:value":a[3]||(a[3]=s=>l.value.image_url=s),placeholder:"https://..."},null,8,["value"]),t(c(p),{secondary:"",onClick:L},{default:n(()=>[...a[17]||(a[17]=[_("媒体库",-1)])]),_:1})]),_:1})]),_:1}),l.value.image_url?(g(),U("div",_e,[t(c(E),{src:l.value.image_url,width:"100%",height:"160","object-fit":"cover","preview-src":l.value.image_url},null,8,["src","preview-src"])])):ee("",!0),t(u,{label:"跳转链接"},{default:n(()=>[t(B,{value:l.value.link_url,"onUpdate:value":a[4]||(a[4]=s=>l.value.link_url=s),placeholder:"点击后跳转地址,可留空"},null,8,["value"])]),_:1}),o("div",fe,[t(u,{label:"显示文字"},{default:n(()=>[t(w,{value:l.value.show_text,"onUpdate:value":a[5]||(a[5]=s=>l.value.show_text=s)},null,8,["value"])]),_:1}),t(u,{label:"启用"},{default:n(()=>[t(w,{value:l.value.enabled,"onUpdate:value":a[6]||(a[6]=s=>l.value.enabled=s)},null,8,["value"])]),_:1}),t(u,{label:"显示元信息"},{default:n(()=>[t(w,{value:l.value.show_meta,"onUpdate:value":a[7]||(a[7]=s=>l.value.show_meta=s)},null,8,["value"])]),_:1}),t(u,{label:"排序"},{default:n(()=>[t(G,{value:l.value.sort_order,"onUpdate:value":a[8]||(a[8]=s=>l.value.sort_order=s),min:0,style:{width:"100%"}},null,8,["value"])]),_:1})])]),_:1},8,["model"])]),_:1},8,["show","title"])])}}},Ue=le(be,[["__scopeId","data-v-ef7a491f"]]);export{Ue as default}; diff --git a/assets/admin/build/BannerManager.css b/assets/admin/build/BannerManager.css new file mode 100644 index 00000000..debd1431 --- /dev/null +++ b/assets/admin/build/BannerManager.css @@ -0,0 +1 @@ +.aksrt-inline-setting[data-v-ef7a491f]{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.aksrt-inline-setting__hint[data-v-ef7a491f]{color:#7a7f8a;font-size:13px}.aksrt-inline-setting__actions[data-v-ef7a491f]{display:flex;justify-content:flex-end}.aksrt-modal-preview[data-v-ef7a491f]{margin:-8px 0 18px;border-radius:8px;overflow:hidden;border:1px solid #eef1f6}.aksrt-modal-grid[data-v-ef7a491f]{display:grid;grid-template-columns:1fr 1fr 1fr;gap:14px}.aksrt-modal-footer[data-v-ef7a491f]{display:flex;justify-content:flex-end;gap:10px}@media(max-width:768px){.aksrt-modal-grid[data-v-ef7a491f]{grid-template-columns:1fr}} diff --git a/assets/admin/build/CmsCredits.xTl3ugX1.js b/assets/admin/build/CmsCredits.xTl3ugX1.js new file mode 100644 index 00000000..236f34f5 --- /dev/null +++ b/assets/admin/build/CmsCredits.xTl3ugX1.js @@ -0,0 +1 @@ +import{a as w}from"./shared-api.D5_fnN32.js";import{u as x}from"./vendor-naive.BuHWlEgf.js";import{o as U,X as C,Y as s,a4 as a,a3 as n,a1 as o,r as g,e as N,W as S,f as J}from"./vendor-vue.Bykizn0M.js";import"./vendor-misc.1adHN6i_.js";const O={class:"aksrt-page-container"},q={class:"aksrt-form-footer"},W={__name:"CmsCredits",setup(B){const p=x(),l=N({enabled:!0,currency_name:"",register_bonus:10,daily_signin:{enabled:!0,base:1,streak:{3:2,7:5,30:20}},comment_reward:{enabled:!0,amount:1,daily_cap:5,min_length:10,on_approved:!0},invite_reward:{enabled:!0,inviter_amount:5,invitee_amount:2,require_verify:!0,ip_daily_cap:3,register_field:"optional",reject_invalid:!0},download_default_cost:0}),_=g("{}"),f=g(!1);async function k(){var i;try{const e=await w.getCreditSettings();Object.assign(l,e),_.value=JSON.stringify(((i=l.daily_signin)==null?void 0:i.streak)||{},null,0)}catch(e){p.error(e.message||"加载失败")}}async function y(){f.value=!0;try{let i={};try{i=JSON.parse(_.value||"{}")}catch{}l.daily_signin.streak=i,await w.saveCreditSettings(l),p.success("已保存")}catch(i){p.error(i.message||"保存失败")}finally{f.value=!1}}return U(()=>{k()}),(i,e)=>{const u=o("n-switch"),r=o("n-form-item"),b=o("n-input"),d=o("n-input-number"),m=o("n-form"),v=o("n-card"),c=o("n-button");return S(),C("div",O,[e[26]||(e[26]=s("h2",{class:"”aksrt-page-title”"},"积分配置",-1)),e[27]||(e[27]=s("p",{class:"”aksrt-page-desc”"}," 配置积分规则与发放策略。可自定义货币名称(如”金币”、”魔石”等)。用户余额与手工调整已迁移到 WordPress 原生”用户”菜单中管理。 ",-1)),a(v,{class:"aksrt-section-card"},{default:n(()=>[e[18]||(e[18]=s("div",{class:"aksrt-section-header"},[s("h3",null,"主开关 + 基础设置")],-1)),a(m,{model:l,"label-placement":"left","label-width":"200",class:"aksrt-form"},{default:n(()=>[a(r,{label:"启用积分系统"},{default:n(()=>[a(u,{value:l.enabled,"onUpdate:value":e[0]||(e[0]=t=>l.enabled=t)},null,8,["value"])]),_:1}),a(r,{label:"自定义货币名称"},{feedback:n(()=>[...e[17]||(e[17]=[s("span",{class:"aksrt-hint-text"},'自定义货币显示名称,如"金币"、"魔石"等。留空则使用默认名称"积分"。',-1)])]),default:n(()=>[a(b,{value:l.currency_name,"onUpdate:value":e[1]||(e[1]=t=>l.currency_name=t),placeholder:"积分",maxlength:"20"},null,8,["value"])]),_:1}),a(r,{label:"注册赠送积分"},{default:n(()=>[a(d,{value:l.register_bonus,"onUpdate:value":e[2]||(e[2]=t=>l.register_bonus=t),min:0,max:1e4},null,8,["value"])]),_:1})]),_:1},8,["model"])]),_:1}),a(v,{class:"aksrt-section-card"},{default:n(()=>[e[20]||(e[20]=s("div",{class:"aksrt-section-header"},[s("h3",null,"每日签到")],-1)),a(m,{model:l.daily_signin,"label-placement":"left","label-width":"200",class:"aksrt-form"},{default:n(()=>[a(r,{label:"启用"},{default:n(()=>[a(u,{value:l.daily_signin.enabled,"onUpdate:value":e[3]||(e[3]=t=>l.daily_signin.enabled=t)},null,8,["value"])]),_:1}),a(r,{label:"基础奖励"},{default:n(()=>[a(d,{value:l.daily_signin.base,"onUpdate:value":e[4]||(e[4]=t=>l.daily_signin.base=t),min:0,max:1e4},null,8,["value"])]),_:1}),a(r,{label:"连续奖励(JSON)"},{feedback:n(()=>[...e[19]||(e[19]=[s("span",{class:"aksrt-hint-text"},"连续 N 天时额外发放的积分。",-1)])]),default:n(()=>[a(b,{type:"textarea",value:_.value,"onUpdate:value":e[5]||(e[5]=t=>_.value=t),placeholder:'{"3":2,"7":5,"30":20}',autosize:{minRows:2}},null,8,["value"])]),_:1})]),_:1},8,["model"])]),_:1}),a(v,{class:"aksrt-section-card"},{default:n(()=>[e[21]||(e[21]=s("div",{class:"aksrt-section-header"},[s("h3",null,"评论奖励")],-1)),a(m,{model:l.comment_reward,"label-placement":"left","label-width":"200",class:"aksrt-form"},{default:n(()=>[a(r,{label:"启用"},{default:n(()=>[a(u,{value:l.comment_reward.enabled,"onUpdate:value":e[6]||(e[6]=t=>l.comment_reward.enabled=t)},null,8,["value"])]),_:1}),a(r,{label:"单次奖励"},{default:n(()=>[a(d,{value:l.comment_reward.amount,"onUpdate:value":e[7]||(e[7]=t=>l.comment_reward.amount=t),min:0,max:1e4},null,8,["value"])]),_:1}),a(r,{label:"每日上限"},{default:n(()=>[a(d,{value:l.comment_reward.daily_cap,"onUpdate:value":e[8]||(e[8]=t=>l.comment_reward.daily_cap=t),min:0,max:100},null,8,["value"])]),_:1}),a(r,{label:"最少字符数"},{default:n(()=>[a(d,{value:l.comment_reward.min_length,"onUpdate:value":e[9]||(e[9]=t=>l.comment_reward.min_length=t),min:0,max:500},null,8,["value"])]),_:1}),a(r,{label:"审核通过后发放"},{default:n(()=>[a(u,{value:l.comment_reward.on_approved,"onUpdate:value":e[10]||(e[10]=t=>l.comment_reward.on_approved=t)},null,8,["value"])]),_:1})]),_:1},8,["model"])]),_:1}),a(v,{class:"aksrt-section-card"},{default:n(()=>[e[22]||(e[22]=s("div",{class:"aksrt-section-header"},[s("h3",null,"邀请奖励")],-1)),a(m,{model:l.invite_reward,"label-placement":"left","label-width":"200",class:"aksrt-form"},{default:n(()=>[a(r,{label:"启用"},{default:n(()=>[a(u,{value:l.invite_reward.enabled,"onUpdate:value":e[11]||(e[11]=t=>l.invite_reward.enabled=t)},null,8,["value"])]),_:1}),a(r,{label:"邀请人奖励"},{default:n(()=>[a(d,{value:l.invite_reward.inviter_amount,"onUpdate:value":e[12]||(e[12]=t=>l.invite_reward.inviter_amount=t),min:0,max:1e4},null,8,["value"])]),_:1}),a(r,{label:"被邀请人奖励"},{default:n(()=>[a(d,{value:l.invite_reward.invitee_amount,"onUpdate:value":e[13]||(e[13]=t=>l.invite_reward.invitee_amount=t),min:0,max:1e4},null,8,["value"])]),_:1}),a(r,{label:"需邮箱验证后发放"},{default:n(()=>[a(u,{value:l.invite_reward.require_verify,"onUpdate:value":e[14]||(e[14]=t=>l.invite_reward.require_verify=t)},null,8,["value"])]),_:1}),a(r,{label:"同 IP 当日上限"},{default:n(()=>[a(d,{value:l.invite_reward.ip_daily_cap,"onUpdate:value":e[15]||(e[15]=t=>l.invite_reward.ip_daily_cap=t),min:0,max:100},null,8,["value"])]),_:1})]),_:1},8,["model"])]),_:1}),a(v,{class:"aksrt-section-card"},{default:n(()=>[e[24]||(e[24]=s("div",{class:"aksrt-section-header"},[s("h3",null,"下载消费(参考)")],-1)),a(m,{model:l,"label-placement":"left","label-width":"200",class:"aksrt-form"},{default:n(()=>[a(r,{label:`默认积分价参考(${l.currency_name||"积分"})`},{feedback:n(()=>[...e[23]||(e[23]=[s("span",{class:"aksrt-hint-text"},"兼容字段。实际价格以文章「付费内容设置」的积分价/现金价为准;下载解锁走收银台订单,不按次扣费。",-1)])]),default:n(()=>[a(d,{value:l.download_default_cost,"onUpdate:value":e[16]||(e[16]=t=>l.download_default_cost=t),min:0,max:1e5},null,8,["value"])]),_:1},8,["label"])]),_:1},8,["model"])]),_:1}),s("div",q,[a(c,{type:"primary",loading:f.value,onClick:y},{default:n(()=>[...e[25]||(e[25]=[J("保存配置",-1)])]),_:1},8,["loading"])])])}}};export{W as default}; diff --git a/assets/admin/build/CommentPermissions.wWXEnm5v.js b/assets/admin/build/CommentPermissions.wWXEnm5v.js new file mode 100644 index 00000000..f065cb3e --- /dev/null +++ b/assets/admin/build/CommentPermissions.wWXEnm5v.js @@ -0,0 +1 @@ +import{o as M,X as N,a4 as t,a3 as n,r as C,a1 as r,e as E,_ as R,W as V,f as m,Y as u,Z as f}from"./vendor-vue.Bykizn0M.js";import{a as y}from"./shared-api.D5_fnN32.js";import{P as A}from"./PageHeader.Di3JTPjc.js";import{u as U}from"./vendor-naive.BuHWlEgf.js";import"./index.js";import"./vendor-misc.1adHN6i_.js";const $={class:"aksrt-page-container"},H={class:"aksrt-form-actions"},z={__name:"CommentPermissions",setup(K){const q=R(),g=U(),b=C(!0),v=C(!1),s=E({comment_require_login:!1,comment_allow_reply:!0}),a=E({commentCaptchaEnabled:!1,moderationEnabled:!1,rateLimitEnabled:!1,keywordRuleCount:0});function w(o){q.push(o)}function P(o){return String(o||"").split(/\r?\n/).map(e=>e.trim()).filter(Boolean)}async function S(){b.value=!0;try{const[o,e,i]=await Promise.all([y.getSchemaPage("post_list","comment"),y.getPermissionsLoginSettings(),y.getPermissionsModerationSettings()]),c=(o==null?void 0:o.data)??o??{},l=(e==null?void 0:e.data)??e??{},d=(i==null?void 0:i.data)??i??{},p=Array.isArray(l.disabled_scenarios)?l.disabled_scenarios:[];s.comment_require_login=!!c.comment_require_login,s.comment_allow_reply=c.comment_allow_reply!==!1,a.commentCaptchaEnabled=!!l.enabled&&!!l.active_provider&&!p.includes("comment"),a.moderationEnabled=!!d.enabled,a.rateLimitEnabled=!!d.rate_limit_enabled,a.keywordRuleCount=P(d.blocked_keywords).length}catch(o){g.error(o.message||"加载评论权限失败")}finally{b.value=!1}}async function x(){v.value=!0;try{await y.saveSchemaPage("post_list","comment",{comment_require_login:s.comment_require_login,comment_allow_reply:s.comment_allow_reply}),g.success("评论权限已保存")}catch(o){g.error(o.message||"保存失败")}finally{v.value=!1}}return M(S),(o,e)=>{const i=r("n-button"),c=r("n-space"),l=r("n-tag"),d=r("n-card"),p=r("n-switch"),k=r("n-form-item"),h=r("n-form"),L=r("n-alert"),B=r("n-spin");return V(),N("div",$,[t(A,{title:"评论权限",desc:"管理评论入口的登录要求与回复权限,并查看当前验证码与审核策略状态。"},{actions:n(()=>[t(c,null,{default:n(()=>[t(i,{quaternary:"",onClick:e[0]||(e[0]=_=>w("/permissions/login"))},{default:n(()=>[...e[4]||(e[4]=[m("人机验证",-1)])]),_:1}),t(i,{quaternary:"",onClick:e[1]||(e[1]=_=>w("/permissions/moderation"))},{default:n(()=>[...e[5]||(e[5]=[m("审核策略",-1)])]),_:1})]),_:1})]),_:1}),t(B,{show:b.value,style:{width:"100%","min-height":"200px"}},{default:n(()=>[t(d,{class:"aksrt-section-card"},{default:n(()=>[e[6]||(e[6]=u("div",{class:"aksrt-section-header"},[u("h3",null,"当前联动状态")],-1)),t(c,null,{default:n(()=>[t(l,{type:a.commentCaptchaEnabled?"success":"default",round:""},{default:n(()=>[m(" 评论验证码:"+f(a.commentCaptchaEnabled?"已启用":"未启用"),1)]),_:1},8,["type"]),t(l,{type:a.moderationEnabled?"warning":"default",round:""},{default:n(()=>[m(" 审核链路:"+f(a.moderationEnabled?"已启用":"未启用"),1)]),_:1},8,["type"]),t(l,{type:a.rateLimitEnabled?"warning":"default",round:""},{default:n(()=>[m(" 评论限流:"+f(a.rateLimitEnabled?"已启用":"未启用"),1)]),_:1},8,["type"]),t(l,{type:a.keywordRuleCount>0?"error":"default",round:""},{default:n(()=>[m(" 敏感词:"+f(a.keywordRuleCount)+" 条 ",1)]),_:1},8,["type"])]),_:1})]),_:1}),t(d,{class:"aksrt-section-card"},{default:n(()=>[e[9]||(e[9]=u("div",{class:"aksrt-section-header"},[u("h3",null,"评论准入")],-1)),t(h,{model:s,"label-placement":"left","label-width":"180",class:"aksrt-form"},{default:n(()=>[t(k,{label:"评论需要登录"},{feedback:n(()=>[...e[7]||(e[7]=[u("span",{class:"aksrt-hint-text"},"开启后,游客只能浏览评论,不能直接提交评论。",-1)])]),default:n(()=>[t(p,{value:s.comment_require_login,"onUpdate:value":e[2]||(e[2]=_=>s.comment_require_login=_)},null,8,["value"])]),_:1}),t(k,{label:"允许楼中回复"},{feedback:n(()=>[...e[8]||(e[8]=[u("span",{class:"aksrt-hint-text"},"关闭后,前台评论列表将不再展示回复按钮。",-1)])]),default:n(()=>[t(p,{value:s.comment_allow_reply,"onUpdate:value":e[3]||(e[3]=_=>s.comment_allow_reply=_)},null,8,["value"])]),_:1})]),_:1},8,["model"])]),_:1}),t(d,{class:"aksrt-section-card"},{default:n(()=>[t(L,{type:"info","show-icon":!1},{default:n(()=>[...e[10]||(e[10]=[m(" 评论排序、分页方式、头像大小和空状态文案继续在“文章&列表 -> 评论设置”中维护;本页只负责准入与治理联动。 ",-1)])]),_:1})]),_:1}),u("div",H,[t(i,{type:"primary",loading:v.value,onClick:x},{default:n(()=>[...e[11]||(e[11]=[m("保存配置",-1)])]),_:1},8,["loading"])])]),_:1},8,["show"])])}}};export{z as default}; diff --git a/assets/admin/build/CommentSettings.BXEQmxrU.js b/assets/admin/build/CommentSettings.BXEQmxrU.js new file mode 100644 index 00000000..6b0f4248 --- /dev/null +++ b/assets/admin/build/CommentSettings.BXEQmxrU.js @@ -0,0 +1 @@ +import t from"./SchemaPage.CSkx936u.js";import{a2 as o,W as m}from"./vendor-vue.Bykizn0M.js";import"./shared-api.B7o7Pzvu.js";import"./FaIcon.CX_hGmM4.js";import"./index.js";import"./vendor-naive.BuHWlEgf.js";import"./vendor-misc.1adHN6i_.js";import"./shared-api.D5_fnN32.js";const u={__name:"CommentSettings",setup(r){return(e,p)=>(m(),o(t,{domain:"post_list",section:"comment"}))}};export{u as default}; diff --git a/assets/admin/build/DeferredPage.DrhT6-8i.js b/assets/admin/build/DeferredPage.DrhT6-8i.js new file mode 100644 index 00000000..581a8072 --- /dev/null +++ b/assets/admin/build/DeferredPage.DrhT6-8i.js @@ -0,0 +1 @@ +import{X as n,Y as r,a4 as u,Z as l,a3 as c,a2 as y,a5 as f,F as h,R as P,c as o,a1 as V,$ as b,W as a,f as _}from"./vendor-vue.Bykizn0M.js";import{_ as S}from"./FaIcon.CX_hGmM4.js";import{_ as C}from"./index.js";import"./vendor-naive.BuHWlEgf.js";import"./vendor-misc.1adHN6i_.js";const F={class:"aksrt-deferred-page"},R={class:"aksrt-deferred-page__icon"},w={class:"aksrt-deferred-page__title"},A={class:"aksrt-deferred-page__desc"},I={class:"aksrt-deferred-page__meta"},T={key:0,class:"aksrt-deferred-page__depends"},$={class:"aksrt-deferred-page__depends-list"},E={key:1,class:"aksrt-deferred-page__reason"},L={key:2,class:"aksrt-deferred-page__features"},W={class:"aksrt-deferred-page__badge"},X={__name:"DeferredPage",props:{title:{type:String,default:""},description:{type:String,default:""},icon:{type:String,default:""},features:{type:Array,default:()=>[]},status:{type:String,default:""},phase:{type:String,default:""},dependsOn:{type:Array,default:()=>[]},reason:{type:String,default:""}},setup(z){const t=z,d=b(),O=o(()=>{var s,e;return t.title||((e=(s=d.meta)==null?void 0:s.deferredProps)==null?void 0:e.title)||"功能开发中"}),x=o(()=>{var s,e;return t.description||((e=(s=d.meta)==null?void 0:s.deferredProps)==null?void 0:e.description)||"此功能正在规划开发中,将在后续版本上线。"}),D=o(()=>{var s,e;return t.icon||((e=(s=d.meta)==null?void 0:s.deferredProps)==null?void 0:e.icon)||"fas fa-rocket"}),B=o(()=>{var s,e;return t.status||((e=(s=d.meta)==null?void 0:s.deferredProps)==null?void 0:e.status)||"deferred"}),g=o(()=>{var s,e;return t.phase||((e=(s=d.meta)==null?void 0:s.deferredProps)==null?void 0:e.phase)||""}),m=o(()=>{var s,e;return t.dependsOn&&t.dependsOn.length?t.dependsOn:((e=(s=d.meta)==null?void 0:s.deferredProps)==null?void 0:e.dependsOn)||[]}),k=o(()=>{var s,e;return t.reason||((e=(s=d.meta)==null?void 0:s.deferredProps)==null?void 0:e.reason)||""}),v=o(()=>{var s,e;return t.features&&t.features.length?t.features:((e=(s=d.meta)==null?void 0:s.deferredProps)==null?void 0:e.features)||[]});return(s,e)=>{const p=V("n-tag");return a(),n("div",F,[r("div",R,[u(S,{icon:D.value,size:48},null,8,["icon"])]),r("h2",w,l(O.value),1),r("p",A,l(x.value),1),r("div",I,[u(p,{size:"small",type:"info"},{default:c(()=>[_(l(B.value),1)]),_:1}),g.value?(a(),y(p,{key:0,size:"small",type:"warning"},{default:c(()=>[_("Phase "+l(g.value),1)]),_:1})):f("",!0)]),m.value.length?(a(),n("div",T,[e[0]||(e[0]=r("span",{class:"aksrt-deferred-page__label"},"依赖",-1)),r("div",$,[(a(!0),n(h,null,P(m.value,i=>(a(),y(p,{key:i,size:"small",type:"default"},{default:c(()=>[_(l(i),1)]),_:2},1024))),128))])])):f("",!0),k.value?(a(),n("div",E,[e[1]||(e[1]=r("span",{class:"aksrt-deferred-page__label"},"原因",-1)),r("p",null,l(k.value),1)])):f("",!0),v.value&&v.value.length?(a(),n("div",L,[(a(!0),n(h,null,P(v.value,(i,N)=>(a(),n("div",{key:N,class:"aksrt-deferred-page__feature"},[u(S,{icon:"fas fa-check-circle",size:14}),r("span",null,l(i),1)]))),128))])):f("",!0),r("div",W,[u(p,{type:"info",size:"small"},{default:c(()=>[...e[2]||(e[2]=[_("即将推出",-1)])]),_:1})])])}}},H=C(X,[["__scopeId","data-v-e3307067"]]);export{H as default}; diff --git a/assets/admin/build/DeferredPage.css b/assets/admin/build/DeferredPage.css new file mode 100644 index 00000000..2e40b8b3 --- /dev/null +++ b/assets/admin/build/DeferredPage.css @@ -0,0 +1 @@ +.aksrt-deferred-page[data-v-e3307067]{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:400px;text-align:center;padding:40px 20px}.aksrt-deferred-page__icon[data-v-e3307067]{color:#c0c4cc;margin-bottom:20px}.aksrt-deferred-page__title[data-v-e3307067]{margin:0 0 10px;font-size:20px;font-weight:600;color:#1a1a2e}.aksrt-deferred-page__desc[data-v-e3307067]{margin:0 0 20px;font-size:14px;color:#8a909c;max-width:400px;line-height:1.6}.aksrt-deferred-page__meta[data-v-e3307067]{display:flex;gap:10px;margin-bottom:18px}.aksrt-deferred-page__depends[data-v-e3307067],.aksrt-deferred-page__reason[data-v-e3307067]{width:min(520px,100%);margin-bottom:18px;text-align:left}.aksrt-deferred-page__label[data-v-e3307067]{display:inline-block;margin-bottom:8px;font-size:12px;font-weight:600;color:#4b5563}.aksrt-deferred-page__depends-list[data-v-e3307067]{display:flex;flex-wrap:wrap;gap:8px}.aksrt-deferred-page__reason p[data-v-e3307067]{margin:0;color:#666;line-height:1.7}.aksrt-deferred-page__features[data-v-e3307067]{display:flex;flex-direction:column;gap:8px;margin-bottom:20px}.aksrt-deferred-page__feature[data-v-e3307067]{display:flex;align-items:center;gap:8px;font-size:13px;color:#666}.aksrt-deferred-page__feature[data-v-e3307067] i{color:#52c41a} diff --git a/assets/admin/build/DocsPage.Cef6fL12.js b/assets/admin/build/DocsPage.Cef6fL12.js new file mode 100644 index 00000000..20ad41be --- /dev/null +++ b/assets/admin/build/DocsPage.Cef6fL12.js @@ -0,0 +1 @@ +import{P as I}from"./PageHeader.Di3JTPjc.js";import{_ as n}from"./FaIcon.CX_hGmM4.js";import{a as g}from"./shared-api.D5_fnN32.js";import{_ as K}from"./index.js";import{r as f,o as N,X as y,a4 as o,a3 as s,Y as a,F as P,R as A,a1 as i,W as _,Z as c,f as r,a2 as v,I as E}from"./vendor-vue.Bykizn0M.js";import"./vendor-naive.BuHWlEgf.js";import"./vendor-misc.1adHN6i_.js";const F={class:"aksrt-page-container"},H={class:"aksrt-docs__mode-status"},L={class:"aksrt-docs__mode-info"},M={class:"aksrt-docs__stat"},R={class:"aksrt-docs__action"},W={class:"aksrt-docs__action"},Z={class:"aksrt-docs__action"},q={class:"aksrt-docs__action"},J={class:"aksrt-docs__grid"},O={class:"aksrt-docs__card-inner"},U={class:"aksrt-docs__card-body"},X={class:"aksrt-docs__card-title"},Y={class:"aksrt-docs__card-desc"},j={__name:"DocsPage",setup(G){var x;const C=f(((x=window.aksrtAdminData)==null?void 0:x.themeVersion)||"3.4.0-dev"),b=f("—"),u=f(!1),z=f(0),k=f([{key:"total",icon:"fas fa-file-alt",color:"#1890ff",value:0,label:"文档页面"},{key:"nav",icon:"fas fa-sitemap",color:"#722ed1",value:0,label:"导航页"},{key:"special",icon:"fas fa-layer-group",color:"#fa8c16",value:0,label:"专题页"}]),D=f([{key:"admin-ia-map",title:"后台 IA 蓝图",description:"完整的后台信息架构映射,12 个顶级分区及子页面清单。",icon:"fas fa-sitemap",color:"#1890ff",file:"admin-ia-map.md"},{key:"zibll-gap-matrix",title:"对标差异矩阵",description:"AKSRT 当前 → Zibll 参考 → AKSRT 目标三层对照表。",icon:"fas fa-columns",color:"#722ed1",file:"zibll-gap-matrix.md"},{key:"frontend-page-matrix",title:"前端页面矩阵",description:"前端模板、CSS、JS 资产映射与覆盖范围。",icon:"fas fa-desktop",color:"#13c2c2",file:"frontend-page-matrix.md"},{key:"manual-acceptance-baseline",title:"验收基线",description:"每个 Phase 的人工验收标准和检查清单。",icon:"fas fa-clipboard-check",color:"#52c41a",file:"manual-acceptance-baseline.md"},{key:"feature-domain-map",title:"功能域地图",description:"业务域划分、依赖关系和模块边界说明。",icon:"fas fa-map",color:"#fa8c16",file:"feature-domain-map.md"},{key:"migration-map",title:"迁移地图",description:"设置 key 迁移、旧选项兼容和 Schema 版本对照。",icon:"fas fa-exchange-alt",color:"#eb2f96",file:"migration-map.md"}]);N(async()=>{try{const t=await g.getSchemaPage("extensions","docs-mode");t!=null&&t.data&&(u.value=!!t.data.docs_mode_enabled)}catch{}try{const t=await g.request("/docs/stats");t!=null&&t.data&&(z.value=t.data.total||0,k.value[0].value=t.data.total||0,k.value[1].value=t.data.nav_count||0,k.value[2].value=t.data.special_count||0)}catch{}try{const t=await g.getHealthCheck();t!=null&&t.data&&(b.value=t.data.db_schema_version||"—")}catch{}});function V(t){var d;const e=((d=window.aksrtAdminData)==null?void 0:d.siteUrl)||window.location.origin;window.open(`${e}/wp-content/themes/AKSRT-theme/docs/${t.file}`,"_blank")}return(t,e)=>{const d=i("router-link"),B=i("n-space"),m=i("n-card"),T=i("n-alert"),p=i("n-grid-item"),w=i("n-grid"),S=i("n-tag"),h=i("n-descriptions-item"),$=i("n-descriptions");return _(),y("div",F,[o(I,{title:"文档中心",desc:"主题使用文档、开发指南、迁移说明和更新日志。"}),o(m,{class:"aksrt-docs__section",size:"small"},{default:s(()=>[a("div",H,[a("div",L,[o(n,{icon:u.value?"fas fa-book-open":"fas fa-book",size:18,color:u.value?"#52c41a":"#8a909c"},null,8,["icon","color"]),a("div",null,[a("strong",null,c(u.value?"文档模式已启用":"文档模式未启用"),1),a("p",null,c(u.value?"文档导航页面和文档站式侧边栏已激活":"启用后将激活文档导航页面模板和文档站式侧边栏"),1)])]),o(B,null,{default:s(()=>[o(d,{to:"/extensions/docs-mode",class:"aksrt-docs__mode-link"},{default:s(()=>[o(n,{icon:"fas fa-cog",size:12}),r(" "+c(u.value?"管理文档模式":"启用文档模式"),1)]),_:1})]),_:1})])]),_:1}),o(m,{title:"文档页面",size:"small",class:"aksrt-docs__section"},{default:s(()=>[z.value===0?(_(),v(T,{key:0,type:"info",size:"small"},{default:s(()=>[...e[0]||(e[0]=[r(' 尚未创建文档页面。在 WordPress 后台新建页面时,选择"文档导航页"或"专题聚合页"模板。 ',-1)])]),_:1})):(_(),v(w,{key:1,cols:3,"x-gap":12,"y-gap":12},{default:s(()=>[(_(!0),y(P,null,A(k.value,l=>(_(),v(p,{key:l.key},{default:s(()=>[a("div",M,[o(n,{icon:l.icon,size:16,color:l.color},null,8,["icon","color"]),a("div",null,[a("strong",null,c(l.value),1),a("p",null,c(l.label),1)])])]),_:2},1024))),128))]),_:1}))]),_:1}),o(m,{title:"常用操作",size:"small",class:"aksrt-docs__section"},{default:s(()=>[o(w,{cols:2,"x-gap":12,"y-gap":12},{default:s(()=>[o(p,null,{default:s(()=>[a("div",R,[o(n,{icon:"fas fa-palette",size:16}),a("div",null,[e[2]||(e[2]=a("strong",null,"全局设置",-1)),e[3]||(e[3]=a("p",null,"Logo、背景、菜单装饰、自定义代码",-1)),o(d,{to:"/global/common"},{default:s(()=>[...e[1]||(e[1]=[r("前往配置 →",-1)])]),_:1})])])]),_:1}),o(p,null,{default:s(()=>[a("div",W,[o(n,{icon:"fas fa-home",size:16}),a("div",null,[e[5]||(e[5]=a("strong",null,"首页配置",-1)),e[6]||(e[6]=a("p",null,"首页模块、布局、排序和预设模板",-1)),o(d,{to:"/page-display/homepage"},{default:s(()=>[...e[4]||(e[4]=[r("前往配置 →",-1)])]),_:1})])])]),_:1}),o(p,null,{default:s(()=>[a("div",Z,[o(n,{icon:"fas fa-users",size:16}),a("div",null,[e[8]||(e[8]=a("strong",null,"用户管理",-1)),e[9]||(e[9]=a("p",null,"登录注册、OAuth、签到、积分",-1)),o(d,{to:"/users/auth"},{default:s(()=>[...e[7]||(e[7]=[r("前往配置 →",-1)])]),_:1})])])]),_:1}),o(p,null,{default:s(()=>[a("div",q,[o(n,{icon:"fas fa-tools",size:16}),a("div",null,[e[11]||(e[11]=a("strong",null,"系统工具",-1)),e[12]||(e[12]=a("p",null,"导入导出、健康检查、迁移状态",-1)),o(d,{to:"/tools/import-export"},{default:s(()=>[...e[10]||(e[10]=[r("前往配置 →",-1)])]),_:1})])])]),_:1})]),_:1})]),_:1}),a("div",J,[(_(!0),y(P,null,A(D.value,l=>(_(),v(m,{key:l.key,class:"aksrt-docs__card",size:"small",hoverable:"",onClick:Q=>V(l)},{default:s(()=>[a("div",O,[a("div",{class:"aksrt-docs__card-icon",style:E({background:l.color})},[o(n,{icon:l.icon,size:20,color:"#fff"},null,8,["icon"])],4),a("div",U,[a("h4",X,c(l.title),1),a("p",Y,c(l.description),1)]),o(n,{icon:"fas fa-external-link-alt",size:12,class:"aksrt-docs__card-arrow"})])]),_:2},1032,["onClick"]))),128))]),o(m,{title:"当前版本",size:"small",class:"aksrt-docs__section"},{default:s(()=>[o($,{column:2,bordered:"","label-placement":"left",size:"small"},{default:s(()=>[o(h,{label:"主题版本"},{default:s(()=>[o(S,{type:"success",size:"small"},{default:s(()=>[r(c(C.value),1)]),_:1})]),_:1}),o(h,{label:"Schema 版本"},{default:s(()=>[o(S,{type:"info",size:"small"},{default:s(()=>[r(c(b.value),1)]),_:1})]),_:1})]),_:1})]),_:1})])}}},ia=K(j,[["__scopeId","data-v-ec6dbd74"]]);export{ia as default}; diff --git a/assets/admin/build/DocsPage.css b/assets/admin/build/DocsPage.css new file mode 100644 index 00000000..c06526b6 --- /dev/null +++ b/assets/admin/build/DocsPage.css @@ -0,0 +1 @@ +.aksrt-docs__mode-status[data-v-ec6dbd74]{display:flex;align-items:center;justify-content:space-between;gap:16px}.aksrt-docs__mode-info[data-v-ec6dbd74]{display:flex;align-items:center;gap:12px}.aksrt-docs__mode-info strong[data-v-ec6dbd74]{display:block;font-size:14px;color:#1a1a2e}.aksrt-docs__mode-info p[data-v-ec6dbd74]{margin:2px 0 0;font-size:12px;color:#8a909c}.aksrt-docs__mode-link[data-v-ec6dbd74]{display:inline-flex;align-items:center;gap:6px;padding:6px 14px;border-radius:6px;background:#f5f7fa;color:#1890ff;text-decoration:none;font-size:13px;transition:background .2s}.aksrt-docs__mode-link[data-v-ec6dbd74]:hover{background:#e6f4ff}.aksrt-docs__stat[data-v-ec6dbd74]{display:flex;align-items:center;gap:10px;padding:12px;border-radius:6px;background:#fafafa}.aksrt-docs__stat strong[data-v-ec6dbd74]{display:block;font-size:20px;color:#1a1a2e}.aksrt-docs__stat p[data-v-ec6dbd74]{margin:0;font-size:12px;color:#8a909c}.aksrt-docs__grid[data-v-ec6dbd74]{display:grid;grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:12px;margin-bottom:16px}.aksrt-docs__card[data-v-ec6dbd74]{cursor:pointer;transition:box-shadow .2s}.aksrt-docs__card[data-v-ec6dbd74]:hover{box-shadow:0 2px 12px #00000014}.aksrt-docs__card-inner[data-v-ec6dbd74]{display:flex;align-items:center;gap:12px}.aksrt-docs__card-icon[data-v-ec6dbd74]{flex-shrink:0;width:40px;height:40px;border-radius:8px;display:flex;align-items:center;justify-content:center}.aksrt-docs__card-body[data-v-ec6dbd74]{flex:1;min-width:0}.aksrt-docs__card-title[data-v-ec6dbd74]{margin:0 0 2px;font-size:14px;font-weight:600;color:#1a1a2e}.aksrt-docs__card-desc[data-v-ec6dbd74]{margin:0;font-size:12px;color:#8a909c;line-height:1.5;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.aksrt-docs__card-arrow[data-v-ec6dbd74]{flex-shrink:0;color:#c0c4cc}.aksrt-docs__section[data-v-ec6dbd74]{margin-bottom:16px}.aksrt-docs__action[data-v-ec6dbd74]{display:flex;gap:12px;align-items:flex-start;padding:12px;border-radius:6px;background:#fafafa}.aksrt-docs__action i[data-v-ec6dbd74]{color:#1890ff;margin-top:2px}.aksrt-docs__action strong[data-v-ec6dbd74]{display:block;font-size:14px;color:#1a1a2e;margin-bottom:2px}.aksrt-docs__action p[data-v-ec6dbd74]{margin:0 0 4px;font-size:12px;color:#8a909c}.aksrt-docs__action a[data-v-ec6dbd74]{font-size:12px;color:#1890ff;text-decoration:none}.aksrt-docs__action a[data-v-ec6dbd74]:hover{text-decoration:underline} diff --git a/assets/admin/build/DownloadPermissions.D_4Tmrvf.js b/assets/admin/build/DownloadPermissions.D_4Tmrvf.js new file mode 100644 index 00000000..8e4d0110 --- /dev/null +++ b/assets/admin/build/DownloadPermissions.D_4Tmrvf.js @@ -0,0 +1 @@ +import{o as B,X as U,a4 as a,a3 as t,r as p,a1 as n,e as q,_ as D,W as F,f as l,Y as r,Z as f}from"./vendor-vue.Bykizn0M.js";import{a as b}from"./shared-api.D5_fnN32.js";import{P as M}from"./PageHeader.Di3JTPjc.js";import{u as $}from"./vendor-naive.BuHWlEgf.js";import"./index.js";import"./vendor-misc.1adHN6i_.js";const E={class:"aksrt-page-container"},H={class:"aksrt-form-actions"},z={__name:"DownloadPermissions",setup(I){const x=D(),w=$(),m=p(!0),g=p(!1),h=p(0),i=p({resource_cpt_enabled:!0,search_include_resource:!0,download_login:!0,download_credit:!0,download_captcha:!1}),e=q({download_login:!0,download_credit:!0,download_captcha:!1});function C(u){x.push(u)}async function P(){var u;m.value=!0;try{const[o,d]=await Promise.all([b.getCmsFeatures(),b.getCreditSettings()]),s=(o==null?void 0:o.cms_features)??((u=o==null?void 0:o.data)==null?void 0:u.cms_features)??{},c=(d==null?void 0:d.data)??d??{};i.value={resource_cpt_enabled:s.resource_cpt_enabled!==!1,search_include_resource:s.search_include_resource!==!1,download_login:s.download_login!==!1,download_credit:s.download_credit!==!1,download_captcha:!!s.download_captcha},e.download_login=i.value.download_login,e.download_credit=i.value.download_credit,e.download_captcha=i.value.download_captcha,h.value=Number(c.download_default_cost||0)}catch(o){w.error(o.message||"加载下载权限失败")}finally{m.value=!1}}async function S(){g.value=!0;try{await b.saveCmsFeatures({...i.value,download_login:e.download_login,download_credit:e.download_credit,download_captcha:e.download_captcha}),i.value={...i.value,download_login:e.download_login,download_credit:e.download_credit,download_captcha:e.download_captcha},w.success("下载权限已保存")}catch(u){w.error(u.message||"保存失败")}finally{g.value=!1}}return B(P),(u,o)=>{const d=n("n-button"),s=n("n-space"),c=n("n-tag"),v=n("n-card"),y=n("n-switch"),k=n("n-form-item"),N=n("n-form"),T=n("n-alert"),V=n("n-spin");return F(),U("div",E,[a(M,{title:"下载权限",desc:"管理资源下载的登录、积分购买模式与验证码门槛。付费解锁走收银台订单,下载 token 不再按次扣积分。"},{actions:t(()=>[a(s,null,{default:t(()=>[a(d,{quaternary:"",onClick:o[0]||(o[0]=_=>C("/payment/paid"))},{default:t(()=>[...o[5]||(o[5]=[l("资源下载页",-1)])]),_:1}),a(d,{quaternary:"",onClick:o[1]||(o[1]=_=>C("/permissions/login"))},{default:t(()=>[...o[6]||(o[6]=[l("人机验证",-1)])]),_:1})]),_:1})]),_:1}),a(V,{show:m.value,style:{width:"100%","min-height":"200px"}},{default:t(()=>[a(v,{class:"aksrt-section-card"},{default:t(()=>[o[8]||(o[8]=r("div",{class:"aksrt-section-header"},[r("h3",null,"当前门槛摘要")],-1)),a(s,null,{default:t(()=>[a(c,{type:e.download_login?"warning":"default",round:""},{default:t(()=>[l(" 登录要求:"+f(e.download_login?"已启用":"已关闭"),1)]),_:1},8,["type"]),a(c,{type:e.download_credit?"warning":"default",round:""},{default:t(()=>[l(" 积分购买模式:"+f(e.download_credit?"已启用":"已关闭"),1)]),_:1},8,["type"]),a(c,{type:e.download_captcha?"warning":"default",round:""},{default:t(()=>[l(" 下载验证码:"+f(e.download_captcha?"已启用":"已关闭"),1)]),_:1},8,["type"]),a(c,{type:"info",round:""},{default:t(()=>[l("默认积分价参考:"+f(h.value),1)]),_:1}),a(c,{type:"info",round:""},{default:t(()=>[...o[7]||(o[7]=[l("Token TTL:10 分钟",-1)])]),_:1})]),_:1})]),_:1}),a(v,{class:"aksrt-section-card"},{default:t(()=>[o[12]||(o[12]=r("div",{class:"aksrt-section-header"},[r("h3",null,"下载门槛")],-1)),a(N,{model:e,"label-placement":"left","label-width":"180",class:"aksrt-form"},{default:t(()=>[a(k,{label:"下载需要登录"},{feedback:t(()=>[...o[9]||(o[9]=[r("span",{class:"aksrt-hint-text"},"关闭后,单个资源的登录要求仍可通过资源元字段单独覆盖。",-1)])]),default:t(()=>[a(y,{value:e.download_login,"onUpdate:value":o[2]||(o[2]=_=>e.download_login=_)},null,8,["value"])]),_:1}),a(k,{label:"允许积分购买模式"},{feedback:t(()=>[...o[10]||(o[10]=[r("span",{class:"aksrt-hint-text"},"开启后,文章 pay_modo=积分 可走收银台一次购买解锁;下载 token 不再按次扣积分。关闭时积分模式资源按免费/需登录策略处理。",-1)])]),default:t(()=>[a(y,{value:e.download_credit,"onUpdate:value":o[3]||(o[3]=_=>e.download_credit=_)},null,8,["value"])]),_:1}),a(k,{label:"下载启用验证码"},{feedback:t(()=>[...o[11]||(o[11]=[r("span",{class:"aksrt-hint-text"},"具体验证码服务商与场景白名单仍在“登录权限”页维护。",-1)])]),default:t(()=>[a(y,{value:e.download_captcha,"onUpdate:value":o[4]||(o[4]=_=>e.download_captcha=_)},null,8,["value"])]),_:1})]),_:1},8,["model"])]),_:1}),a(v,{class:"aksrt-section-card"},{default:t(()=>[a(T,{type:"info","show-icon":!1},{default:t(()=>[...o[13]||(o[13]=[l(" 实际价格以文章「付费内容设置」为准;本页只维护全局访问门槛。VIP 白名单与收银台策略见「支付 & 付费」相关页面。 ",-1)])]),_:1})]),_:1}),r("div",H,[a(d,{type:"primary",loading:g.value,onClick:S},{default:t(()=>[...o[14]||(o[14]=[l("保存配置",-1)])]),_:1},8,["loading"])])]),_:1},8,["show"])])}}};export{z as default}; diff --git a/assets/admin/build/ExtensionAI.css b/assets/admin/build/ExtensionAI.css new file mode 100644 index 00000000..d7ec1293 --- /dev/null +++ b/assets/admin/build/ExtensionAI.css @@ -0,0 +1 @@ +.aksrt-ai__status[data-v-800595b0]{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px;margin-bottom:24px}.aksrt-ai__status-card[data-v-800595b0]{display:flex;align-items:center;gap:12px;padding:16px;background:#fff;border-radius:8px;border:1px solid #e8e8e8}.aksrt-ai__status-icon[data-v-800595b0]{width:40px;height:40px;border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:16px}.aksrt-ai__status-icon--ok[data-v-800595b0]{background:#d4edda;color:#155724}.aksrt-ai__status-icon--warn[data-v-800595b0]{background:#fff3cd;color:#856404}.aksrt-ai__status-icon--off[data-v-800595b0]{background:#f8d7da;color:#721c24}.aksrt-ai__status-icon--info[data-v-800595b0]{background:#d1ecf1;color:#0c5460}.aksrt-ai__status-value[data-v-800595b0]{font-size:18px;font-weight:600;color:#1a1a2e}.aksrt-ai__status-label[data-v-800595b0]{font-size:12px;color:#888}.aksrt-ai__form-card[data-v-800595b0]{background:#fff;border:1px solid #e8e8e8;border-radius:8px;padding:24px;margin-bottom:16px}.aksrt-ai__form-card h3[data-v-800595b0]{margin:0 0 16px;font-size:16px;font-weight:600}.aksrt-form-hint[data-v-800595b0]{font-size:12px;color:#888;margin-top:4px}.aksrt-ai__load-error[data-v-800595b0]{background:#fdecea;border-color:#f5c2c0;color:#842029;margin-bottom:16px}.aksrt-ai__notice[data-v-800595b0]{background:#fff8e1;border-color:#ffe082}.aksrt-ai__notice h3[data-v-800595b0]{color:#e65100}.aksrt-ai__notice ul[data-v-800595b0]{margin:0;padding-left:20px}.aksrt-ai__notice li[data-v-800595b0]{margin-bottom:8px;font-size:14px}.aksrt-ai__notice code[data-v-800595b0]{background:#0000000f;padding:2px 6px;border-radius:3px;font-size:13px}.aksrt-badge[data-v-800595b0]{display:inline-block;padding:2px 8px;border-radius:999px;font-size:12px}.aksrt-badge--success[data-v-800595b0]{background:#d4edda;color:#155724}.aksrt-badge--warning[data-v-800595b0]{background:#fff3cd;color:#856404}.aksrt-table[data-v-800595b0]{width:100%;border-collapse:collapse}.aksrt-table th[data-v-800595b0],.aksrt-table td[data-v-800595b0]{border-bottom:1px solid #eee;padding:10px 8px;text-align:left}.aksrt-form-group[data-v-800595b0]{margin-bottom:14px}.aksrt-input[data-v-800595b0],.aksrt-select[data-v-800595b0]{width:100%;max-width:480px;padding:8px 10px}.aksrt-button[data-v-800595b0]{padding:8px 16px;border:0;border-radius:6px;cursor:pointer}.aksrt-button--primary[data-v-800595b0]{background:#1677ff;color:#fff}.aksrt-button[data-v-800595b0]:disabled{opacity:.6;cursor:not-allowed} diff --git a/assets/admin/build/ExtensionAI.vrglPKlb.js b/assets/admin/build/ExtensionAI.vrglPKlb.js new file mode 100644 index 00000000..90cb9188 --- /dev/null +++ b/assets/admin/build/ExtensionAI.vrglPKlb.js @@ -0,0 +1 @@ +import{X as l,a4 as I,Y as a,f as d,Z as i,a5 as m,L as k,j as _,af as P,ah as w,ag as u,F as S,R as E,o as V,c as g,r as f,e as C,a1 as O,W as r}from"./vendor-vue.Bykizn0M.js";import{P as U}from"./PageHeader.Di3JTPjc.js";import{a as A}from"./shared-api.D5_fnN32.js";import{_ as L}from"./index.js";import"./vendor-naive.BuHWlEgf.js";import"./vendor-misc.1adHN6i_.js";const W={name:"ExtensionAI",components:{PageHeader:U},setup(){const n=f({enabled:!1,provider:"none",configured:!1,model:"",api_key:"",rate_limit:10,available:!1,backend:"none",wp_ai_available:!1,theme_available:!1,seo_ai_enabled:!1,write_assist:!1}),s=C({enabled:!1,provider:"none",api_key:"",api_base:"https://api.openai.com/v1",model:"gpt-3.5-turbo",max_tokens:1e3,rate_limit:10}),v=f(!1),e=f(""),b=g(()=>({wp_ai:"WP AI Client",theme:"主题 Provider",none:"无"})[n.value.backend]||n.value.backend||"无"),c=g(()=>{const t=!!n.value.available;return[{key:"seo",name:"AI 生成 SEO",scene:"文章/分类「独立 SEO」框",ready:t&&!!n.value.seo_ai_enabled},{key:"summary",name:"AI 生成摘要",scene:"前台投稿页",ready:t},{key:"tags",name:"AI 建议标签",scene:"前台投稿页",ready:t}]});function p(t){!t||typeof t!="object"||(n.value={enabled:!!t.enabled,provider:t.provider||"none",configured:!!t.configured,model:t.model||"",api_key:"",rate_limit:t.rate_limit||10,available:!!t.available,backend:t.backend||"none",wp_ai_available:!!t.wp_ai_available,theme_available:!!t.theme_available,seo_ai_enabled:!!t.seo_ai_enabled,write_assist:!!t.write_assist},s.enabled=!!t.enabled,s.provider=t.provider||"none",s.model=t.model||"gpt-3.5-turbo",s.rate_limit=t.rate_limit||10,t.api_base&&(s.api_base=t.api_base),typeof t.max_tokens=="number"&&t.max_tokens>0&&(s.max_tokens=t.max_tokens))}async function o(){e.value="";try{const t=await A.getAiStatus();p(t.data||{})}catch(t){console.error("Load AI status failed:",t),e.value=(t==null?void 0:t.message)||"加载 AI 状态失败"}}async function x(){v.value=!0;try{const t={enabled:s.enabled,provider:s.provider,api_base:s.api_base,model:s.model,max_tokens:s.max_tokens,rate_limit:s.rate_limit};s.api_key&&s.api_key!=="***"&&(t.api_key=s.api_key);const y=await A.updateAiSettings(t);alert(y.message||"设置已保存"),await o()}catch(t){console.error("Save failed:",t),alert((t==null?void 0:t.message)||"保存失败")}finally{v.value=!1}}return V(()=>o()),{status:n,form:s,saving:v,loadError:e,features:c,backendLabel:b,saveSettings:x}}},N={class:"aksrt-page-container"},j={key:0,class:"aksrt-ai__form-card aksrt-ai__load-error",role:"alert"},B={class:"aksrt-ai__status"},M={class:"aksrt-ai__status-card"},R={class:"aksrt-ai__status-info"},F={class:"aksrt-ai__status-value"},H={class:"aksrt-ai__status-card"},T={class:"aksrt-ai__status-info"},D={class:"aksrt-ai__status-value"},K={class:"aksrt-ai__status-card"},z={class:"aksrt-ai__status-info"},X={class:"aksrt-ai__status-value"},Y={class:"aksrt-ai__status-card"},Z={class:"aksrt-ai__status-info"},q={class:"aksrt-ai__status-value"},G={class:"aksrt-ai__form-card"},J={class:"aksrt-form-group"},Q={class:"aksrt-form-group"},h={key:0,class:"aksrt-form-group"},$={key:1,class:"aksrt-form-group"},ss={key:2,class:"aksrt-form-group"},as={key:3,class:"aksrt-form-group"},ts={key:4,class:"aksrt-form-group"},es={class:"aksrt-form-actions"},os=["disabled"],ls={class:"aksrt-ai__form-card"},is={class:"aksrt-table aksrt-table--sm"};function rs(n,s,v,e,b,c){const p=O("PageHeader");return r(),l("div",N,[I(p,{title:"AI 连接配置",desc:"配置 AI 生成能力的连接方式。优先使用 WordPress AI Connectors;也可填写 OpenAI 兼容接口。SEO 生成入口在文章「独立 SEO」框,摘要/标签入口在前台投稿页。"}),e.loadError?(r(),l("div",j,[s[8]||(s[8]=a("strong",null,"加载失败:",-1)),d(i(e.loadError),1)])):m("",!0),a("div",B,[a("div",M,[a("div",{class:k(["aksrt-ai__status-icon",e.status.available?"aksrt-ai__status-icon--ok":"aksrt-ai__status-icon--off"])},[...s[9]||(s[9]=[a("i",{class:"fas fa-robot"},null,-1)])],2),a("div",R,[s[10]||(s[10]=a("div",{class:"aksrt-ai__status-label"},"可用状态",-1)),a("div",F,i(e.status.available?"可用":"不可用"),1)])]),a("div",H,[a("div",{class:k(["aksrt-ai__status-icon",e.status.wp_ai_available?"aksrt-ai__status-icon--ok":"aksrt-ai__status-icon--warn"])},[...s[11]||(s[11]=[a("i",{class:"fas fa-plug"},null,-1)])],2),a("div",T,[s[12]||(s[12]=a("div",{class:"aksrt-ai__status-label"},"WP AI Client",-1)),a("div",D,i(e.status.wp_ai_available?"已就绪":"不可用"),1)])]),a("div",K,[a("div",{class:k(["aksrt-ai__status-icon",e.status.theme_available?"aksrt-ai__status-icon--ok":"aksrt-ai__status-icon--warn"])},[...s[13]||(s[13]=[a("i",{class:"fas fa-key"},null,-1)])],2),a("div",z,[s[14]||(s[14]=a("div",{class:"aksrt-ai__status-label"},"主题 Provider",-1)),a("div",X,i(e.status.theme_available?"已配置":"未配置"),1)])]),a("div",Y,[s[16]||(s[16]=a("div",{class:"aksrt-ai__status-icon aksrt-ai__status-icon--info"},[a("i",{class:"fas fa-route"})],-1)),a("div",Z,[s[15]||(s[15]=a("div",{class:"aksrt-ai__status-label"},"当前后端",-1)),a("div",q,i(e.backendLabel),1)])])]),a("div",G,[s[27]||(s[27]=a("h3",null,"主题 Provider 配置(回退链路)",-1)),s[28]||(s[28]=a("p",{class:"aksrt-form-hint"},[d("已配置主题 Provider 时优先走下方接口;未配置时才尝试 WordPress AI Connectors。NewAPI/兼容网关请填到 "),a("code",null,"/v1"),d("(也可只填域名,保存时会自动补全)。")],-1)),a("div",J,[a("label",null,[_(a("input",{type:"checkbox","onUpdate:modelValue":s[0]||(s[0]=o=>e.form.enabled=o)},null,512),[[P,e.form.enabled]]),s[17]||(s[17]=d(" 启用主题 AI Provider ",-1))])]),a("div",Q,[s[19]||(s[19]=a("label",null,"AI Provider",-1)),_(a("select",{"onUpdate:modelValue":s[1]||(s[1]=o=>e.form.provider=o),class:"aksrt-select"},[...s[18]||(s[18]=[a("option",{value:"none"},"不使用",-1),a("option",{value:"openai"},"OpenAI 兼容接口",-1)])],512),[[w,e.form.provider]])]),e.form.provider!=="none"?(r(),l("div",h,[s[20]||(s[20]=a("label",null,"API Key",-1)),_(a("input",{"onUpdate:modelValue":s[2]||(s[2]=o=>e.form.api_key=o),type:"password",class:"aksrt-input",placeholder:"sk-..."},null,512),[[u,e.form.api_key]]),s[21]||(s[21]=a("p",{class:"aksrt-form-hint"},"保存后不会回显完整密钥",-1))])):m("",!0),e.form.provider==="openai"?(r(),l("div",$,[s[22]||(s[22]=a("label",null,"API Base URL",-1)),_(a("input",{"onUpdate:modelValue":s[3]||(s[3]=o=>e.form.api_base=o),type:"text",class:"aksrt-input",placeholder:"https://llm.example.com/v1"},null,512),[[u,e.form.api_base]]),s[23]||(s[23]=a("p",{class:"aksrt-form-hint"},"示例:https://api.openai.com/v1 或 https://你的网关/v1(不要填到 /chat/completions)",-1))])):m("",!0),e.form.provider!=="none"?(r(),l("div",ss,[s[24]||(s[24]=a("label",null,"模型",-1)),_(a("input",{"onUpdate:modelValue":s[4]||(s[4]=o=>e.form.model=o),type:"text",class:"aksrt-input",placeholder:"gpt-3.5-turbo"},null,512),[[u,e.form.model]])])):m("",!0),e.form.provider!=="none"?(r(),l("div",as,[s[25]||(s[25]=a("label",null,"最大 Token 数",-1)),_(a("input",{"onUpdate:modelValue":s[5]||(s[5]=o=>e.form.max_tokens=o),type:"number",min:"100",max:"4000",class:"aksrt-input"},null,512),[[u,e.form.max_tokens,void 0,{number:!0}]])])):m("",!0),e.form.provider!=="none"?(r(),l("div",ts,[s[26]||(s[26]=a("label",null,"每分钟请求限制",-1)),_(a("input",{"onUpdate:modelValue":s[6]||(s[6]=o=>e.form.rate_limit=o),type:"number",min:"1",max:"100",class:"aksrt-input"},null,512),[[u,e.form.rate_limit,void 0,{number:!0}]])])):m("",!0),a("div",es,[a("button",{class:"aksrt-button aksrt-button--primary",disabled:e.saving,onClick:s[7]||(s[7]=(...o)=>e.saveSettings&&e.saveSettings(...o))},i(e.saving?"保存中...":"保存设置"),9,os)])]),a("div",ls,[s[30]||(s[30]=a("h3",null,"已接通能力",-1)),a("table",is,[s[29]||(s[29]=a("thead",null,[a("tr",null,[a("th",null,"能力"),a("th",null,"入口"),a("th",null,"状态")])],-1)),a("tbody",null,[(r(!0),l(S,null,E(e.features,o=>(r(),l("tr",{key:o.key},[a("td",null,i(o.name),1),a("td",null,i(o.scene),1),a("td",null,[a("span",{class:k(["aksrt-badge",o.ready?"aksrt-badge--success":"aksrt-badge--warning"])},i(o.ready?"可用":"未就绪"),3)])]))),128))])]),s[31]||(s[31]=a("p",{class:"aksrt-form-hint"},"SEO 开关与提示词请到「全局 → SEO」配置(seo_ai_enabled / ai_seo_*_prompt)。",-1))]),s[32]||(s[32]=a("div",{class:"aksrt-ai__form-card aksrt-ai__notice"},[a("h3",null,[a("i",{class:"fas fa-exclamation-triangle"}),d(" 重要说明")]),a("ul",null,[a("li",null,[d("AI 输出仅作为"),a("strong",null,"建议"),d(",不会自动写库;需用户点「更新/提交」才保存")]),a("li",null,"主题 API Key 已配置时优先使用;否则回退 WordPress AI Connectors"),a("li",null,"生成接口要求登录与编辑/投稿权限;配置接口仍需管理员")])],-1))])}const ks=L(W,[["render",rs],["__scopeId","data-v-800595b0"]]);export{ks as default}; diff --git a/assets/admin/build/ExtensionSecurity.Dusc4b9q.js b/assets/admin/build/ExtensionSecurity.Dusc4b9q.js new file mode 100644 index 00000000..16c3d799 --- /dev/null +++ b/assets/admin/build/ExtensionSecurity.Dusc4b9q.js @@ -0,0 +1 @@ +import{_ as H,a1 as s,W as i,X as h,a4 as a,a3 as t,a2 as m,F as q,R as O,f as d,Z as g,a5 as C,l as W,o as X,r as x,Y as $}from"./vendor-vue.Bykizn0M.js";import{P as Y}from"./PageHeader.Di3JTPjc.js";import{_ as L}from"./FaIcon.CX_hGmM4.js";import{a as R}from"./shared-api.D5_fnN32.js";import{_ as Z}from"./index.js";import{u as K}from"./vendor-naive.BuHWlEgf.js";import"./vendor-misc.1adHN6i_.js";const Q={class:"aksrt-page-container"},ee={__name:"ExtensionsSectionPage",props:{title:{type:String,required:!0},desc:{type:String,default:""},note:{type:String,default:""},links:{type:Array,default:()=>[]}},setup(y){const p=H();function z(o){p.push(o)}return(o,k)=>{const _=s("n-button"),S=s("n-space"),u=s("n-alert"),c=s("n-card");return i(),h("div",Q,[a(Y,{title:y.title,desc:y.desc},{actions:t(()=>[y.links.length?(i(),m(S,{key:0},{default:t(()=>[(i(!0),h(q,null,O(y.links,I=>(i(),m(_,{key:I.path,quaternary:"",onClick:V=>z(I.path)},{default:t(()=>[d(g(I.label),1)]),_:2},1032,["onClick"]))),128))]),_:1})):C("",!0)]),_:1},8,["title","desc"]),y.note?(i(),m(c,{key:0,class:"aksrt-section-card"},{default:t(()=>[a(u,{type:"info","show-icon":!1},{default:t(()=>[d(g(y.note),1)]),_:1})]),_:1})):C("",!0),W(o.$slots,"default")])}}},te={class:"aksrt-security__overview-card"},ae={key:0,class:"aksrt-security__output"},le={key:0,class:"aksrt-security__output"},ne={__name:"ExtensionSecurity",setup(y){const p=K(),z=x(!1),o=x([{key:"email_gate",icon:"fas fa-envelope",color:"#1890ff",value:"—",label:"邮箱验证"},{key:"captcha",icon:"fas fa-shield-alt",color:"#52c41a",value:"—",label:"验证码保护"},{key:"moderation",icon:"fas fa-gavel",color:"#722ed1",value:"—",label:"内容审核"},{key:"ip_geo",icon:"fas fa-map-marker-alt",color:"#fa8c16",value:"—",label:"IP 归属地"}]),k=x([{key:"email_verification",icon:"fas fa-envelope",color:"#1890ff",name:"邮箱验证",description:"新用户注册需要邮箱验证",enabled:!1,settingsRoute:"/users/auth"},{key:"captcha_comment",icon:"fas fa-shield-alt",color:"#52c41a",name:"评论验证码",description:"发表评论时需要人机验证",enabled:!1,settingsRoute:"/permissions/login"},{key:"captcha_download",icon:"fas fa-shield-alt",color:"#52c41a",name:"下载验证码",description:"下载资源时需要人机验证",enabled:!1,settingsRoute:"/permissions/login"},{key:"content_audit",icon:"fas fa-shield-virus",color:"#722ed1",name:"内容审核 API",description:"接入第三方内容安全审核",enabled:!1,settingsRoute:"/extensions/audit"},{key:"ip_geolocation",icon:"fas fa-map-marker-alt",color:"#fa8c16",name:"IP 归属地",description:"在评论和用户主页显示 IP 归属地",enabled:!1,settingsRoute:"/extensions/ip"}]),_=x({show_unapproved_comments:!1,skip_submit_moderation:!1,guest_comment:!1}),S=x([]),u=x({ip:"8.8.8.8",loading:!1,result:""}),c=x({text:"这是一段用于审核测试的示例文本。",loading:!1,result:""});X(async()=>{var n;try{const e=await R.request("/settings/security");if(e!=null&&e.data){const r=e.data,w=e.services||{},f=r.captcha||w.captcha||{},N=!!(f.enabled&&f.configured),U=f.scenes||{},v=r.content_audit||w.audit||{},b=r.ip_geo||w.ip_geo||{};o.value[0].value=r.email_gate_enabled?"已开启":"未开启",o.value[0].color=r.email_gate_enabled?"#52c41a":"#8a909c",o.value[1].value=N?"已开启":"未开启",o.value[1].color=N?"#52c41a":"#8a909c",v.enabled?(o.value[2].value=v.configured?"已配置":"待补全",o.value[2].color=v.configured?"#52c41a":"#faad14"):(o.value[2].value="未开启",o.value[2].color="#8a909c"),b.enabled?(o.value[3].value=b.configured?"已配置":"待补全",o.value[3].color=b.configured?"#52c41a":"#faad14"):(o.value[3].value="未开启",o.value[3].color="#8a909c"),k.value[0].enabled=!!r.email_gate_enabled,k.value[1].enabled=!!U.comment,k.value[2].enabled=!!f.download_active,k.value[3].enabled=!!v.enabled,k.value[4].enabled=!!b.enabled,r.risk_switches&&(_.value={..._.value,...r.risk_switches})}}catch{}try{const e=await R.request("/security/audit-log");(n=e==null?void 0:e.data)!=null&&n.logs&&(S.value=e.data.logs.slice(0,10))}catch{}});async function I(){z.value=!0;try{await R.request("/settings/security",{method:"POST",body:JSON.stringify({risk_switches:_.value})}),p.success("风险设置已保存")}catch(n){p.error("保存失败: "+((n==null?void 0:n.message)||"未知错误"))}finally{z.value=!1}}async function V(){u.value.loading=!0,u.value.result="";try{const n=await R.testIpGeo(String(u.value.ip||"").trim()),e=(n==null?void 0:n.data)||{};u.value.result=JSON.stringify(e,null,2),e.ok?p.success(e.display?`IP 测试成功:${e.display}`:"IP 接口测试完成"):p.warning(e.message||"未查询到归属地信息")}catch(n){p.error((n==null?void 0:n.message)||"IP 测试失败")}finally{u.value.loading=!1}}async function M(){c.value.loading=!0,c.value.result="";try{const n=await R.testContentAudit(String(c.value.text||"").trim()),e=(n==null?void 0:n.data)||{};c.value.result=JSON.stringify(e,null,2),e.ok?p.success(e.message||"内容审核测试完成"):p.warning(e.message||"内容审核未通过或配置异常")}catch(n){p.error((n==null?void 0:n.message)||"内容审核测试失败")}finally{c.value.loading=!1}}return(n,e)=>{const r=s("n-grid-item"),w=s("n-grid"),f=s("n-card"),N=s("n-tag"),U=s("router-link"),v=s("n-space"),b=s("n-thing"),J=s("n-list-item"),F=s("n-list"),G=s("n-input"),P=s("n-form-item"),A=s("n-button"),B=s("n-form"),j=s("n-alert"),E=s("n-switch"),T=s("n-text"),D=s("n-empty");return i(),m(ee,{title:"网站安全",desc:"扩展安全策略和第三方安全集成。"},{default:t(()=>[a(f,{title:"安全概览",size:"small",class:"aksrt-security__section"},{default:t(()=>[a(w,{cols:4,"x-gap":12,"y-gap":12},{default:t(()=>[(i(!0),h(q,null,O(o.value,l=>(i(),m(r,{key:l.key},{default:t(()=>[$("div",te,[a(L,{icon:l.icon,size:18,color:l.color},null,8,["icon","color"]),$("div",null,[$("strong",null,g(l.value),1),$("p",null,g(l.label),1)])])]),_:2},1024))),128))]),_:1})]),_:1}),a(f,{title:"安全能力",size:"small",class:"aksrt-security__section"},{default:t(()=>[a(F,{bordered:"",size:"small"},{default:t(()=>[(i(!0),h(q,null,O(k.value,l=>(i(),m(J,{key:l.key},{default:t(()=>[a(b,{title:l.name,description:l.description},{avatar:t(()=>[a(L,{icon:l.icon,size:16,color:l.color},null,8,["icon","color"])]),"header-extra":t(()=>[a(v,{align:"center",size:"small"},{default:t(()=>[a(N,{type:l.enabled?"success":"default",size:"small"},{default:t(()=>[d(g(l.enabled?"已启用":"未启用"),1)]),_:2},1032,["type"]),l.settingsRoute?(i(),m(U,{key:0,to:l.settingsRoute,class:"aksrt-security__config-link"},{default:t(()=>[...e[5]||(e[5]=[d(" 前往配置 ",-1)])]),_:1},8,["to"])):C("",!0)]),_:2},1024)]),_:2},1032,["title","description"])]),_:2},1024))),128))]),_:1})]),_:1}),a(f,{title:"在线测试",size:"small",class:"aksrt-security__section"},{default:t(()=>[a(w,{cols:2,"x-gap":16,"y-gap":16},{default:t(()=>[a(r,null,{default:t(()=>[a(B,{"label-placement":"top"},{default:t(()=>[a(P,{label:"IP 归属地测试"},{default:t(()=>[a(G,{value:u.value.ip,"onUpdate:value":e[0]||(e[0]=l=>u.value.ip=l),placeholder:"输入 IPv4 / IPv6,例如 8.8.8.8"},null,8,["value"])]),_:1}),a(v,null,{default:t(()=>[a(A,{loading:u.value.loading,onClick:V},{default:t(()=>[...e[6]||(e[6]=[d("测试 IP 接口",-1)])]),_:1},8,["loading"])]),_:1}),u.value.result?(i(),h("pre",ae,g(u.value.result),1)):C("",!0)]),_:1})]),_:1}),a(r,null,{default:t(()=>[a(B,{"label-placement":"top"},{default:t(()=>[a(P,{label:"内容审核测试"},{default:t(()=>[a(G,{value:c.value.text,"onUpdate:value":e[1]||(e[1]=l=>c.value.text=l),type:"textarea",autosize:{minRows:4,maxRows:8},placeholder:"输入一段测试文本,检查当前审核策略是否生效"},null,8,["value"])]),_:1}),a(v,null,{default:t(()=>[a(A,{loading:c.value.loading,onClick:M},{default:t(()=>[...e[7]||(e[7]=[d("测试内容审核",-1)])]),_:1},8,["loading"])]),_:1}),c.value.result?(i(),h("pre",le,g(c.value.result),1)):C("",!0)]),_:1})]),_:1})]),_:1})]),_:1}),a(f,{title:"风险开关",size:"small",class:"aksrt-security__section"},{action:t(()=>[a(v,{justify:"end"},{default:t(()=>[a(A,{type:"primary",size:"small",loading:z.value,onClick:I},{default:t(()=>[...e[12]||(e[12]=[d("保存风险设置",-1)])]),_:1},8,["loading"])]),_:1})]),default:t(()=>[a(j,{type:"warning",size:"small",style:{"margin-bottom":"12px"}},{default:t(()=>[...e[8]||(e[8]=[d(" 以下开关会影响站点安全策略,请谨慎操作。 ",-1)])]),_:1}),a(B,{"label-placement":"left","label-width":"200",size:"small"},{default:t(()=>[a(P,{label:"允许未审核评论显示"},{default:t(()=>[a(E,{value:_.value.show_unapproved_comments,"onUpdate:value":e[2]||(e[2]=l=>_.value.show_unapproved_comments=l)},null,8,["value"]),a(T,{depth:"3",style:{"margin-left":"8px","font-size":"12px"}},{default:t(()=>[...e[9]||(e[9]=[d(" 开启后未审核评论也会在前台显示(标记为待审核) ",-1)])]),_:1})]),_:1}),a(P,{label:"允许前台投稿无需审核"},{default:t(()=>[a(E,{value:_.value.skip_submit_moderation,"onUpdate:value":e[3]||(e[3]=l=>_.value.skip_submit_moderation=l)},null,8,["value"]),a(T,{depth:"3",style:{"margin-left":"8px","font-size":"12px"}},{default:t(()=>[...e[10]||(e[10]=[d(" 开启后用户投稿直接发布,不经过审核流程 ",-1)])]),_:1})]),_:1}),a(P,{label:"允许游客评论"},{default:t(()=>[a(E,{value:_.value.guest_comment,"onUpdate:value":e[4]||(e[4]=l=>_.value.guest_comment=l)},null,8,["value"]),a(T,{depth:"3",style:{"margin-left":"8px","font-size":"12px"}},{default:t(()=>[...e[11]||(e[11]=[d(" 开启后未登录用户也可以发表评论 ",-1)])]),_:1})]),_:1})]),_:1})]),_:1}),a(f,{title:"安全审计",size:"small",class:"aksrt-security__section"},{default:t(()=>[S.value.length===0?(i(),m(D,{key:0,description:"暂无审计记录"})):(i(),m(F,{key:1,bordered:"",size:"small"},{default:t(()=>[(i(!0),h(q,null,O(S.value,l=>(i(),m(J,{key:l.id},{default:t(()=>[a(b,{title:l.action,description:l.detail},{"header-extra":t(()=>[a(T,{depth:"3",style:{"font-size":"11px"}},{default:t(()=>[d(g(l.time),1)]),_:2},1024)]),_:2},1032,["title","description"])]),_:2},1024))),128))]),_:1}))]),_:1})]),_:1})}}},_e=Z(ne,[["__scopeId","data-v-1628ae71"]]);export{_e as default}; diff --git a/assets/admin/build/ExtensionSecurity.css b/assets/admin/build/ExtensionSecurity.css new file mode 100644 index 00000000..d3d9b42d --- /dev/null +++ b/assets/admin/build/ExtensionSecurity.css @@ -0,0 +1 @@ +.aksrt-security__section[data-v-1628ae71]{margin-bottom:16px}.aksrt-security__overview-card[data-v-1628ae71]{display:flex;align-items:center;gap:10px;padding:14px;border-radius:8px;background:#fafafa;border:1px solid #f0f0f0}.aksrt-security__overview-card strong[data-v-1628ae71]{display:block;font-size:14px;color:#1a1a2e}.aksrt-security__overview-card p[data-v-1628ae71]{margin:2px 0 0;font-size:12px;color:#8a909c}.aksrt-security__config-link[data-v-1628ae71]{font-size:12px;color:#1890ff;text-decoration:none;white-space:nowrap}.aksrt-security__config-link[data-v-1628ae71]:hover{text-decoration:underline}.aksrt-security__output[data-v-1628ae71]{margin:12px 0 0;padding:12px 14px;border-radius:12px;background:#101828;color:#d0d7e2;font-size:12px;line-height:1.7;white-space:pre-wrap;word-break:break-word} diff --git a/assets/admin/build/ExtensionTools.D5LShWF9.js b/assets/admin/build/ExtensionTools.D5LShWF9.js new file mode 100644 index 00000000..6669af93 --- /dev/null +++ b/assets/admin/build/ExtensionTools.D5LShWF9.js @@ -0,0 +1 @@ +import{o as D,X as P,a4 as t,a3 as s,r as O,a1 as u,_ as H,W as p,F as T,R as N,a2 as q,Y as d,L,Z as k,I as M,f as S}from"./vendor-vue.Bykizn0M.js";import{P as R}from"./PageHeader.Di3JTPjc.js";import{_ as m}from"./FaIcon.CX_hGmM4.js";import{a as y}from"./shared-api.D5_fnN32.js";import{_ as W}from"./index.js";import{u as $}from"./vendor-naive.BuHWlEgf.js";import"./vendor-misc.1adHN6i_.js";const A={class:"aksrt-page-container"},G=["onClick"],X={class:"aksrt-tools__tool-body"},Y={__name:"ExtensionTools",setup(Z){const I=H(),c=$(),_=O([{key:"php",icon:"fas fa-code",color:"#1890ff",value:"—",label:"PHP 版本",status:"ok"},{key:"wp",icon:"fab fa-wordpress",color:"#722ed1",value:"—",label:"WordPress",status:"ok"},{key:"db",icon:"fas fa-database",color:"#52c41a",value:"—",label:"数据库",status:"ok"},{key:"uploads",icon:"fas fa-folder-open",color:"#fa8c16",value:"—",label:"上传目录",status:"ok"}]),B=O([{key:"import-export",icon:"fas fa-exchange-alt",bg:"#1890ff",title:"导入导出",desc:"设置导入、导出和重置",route:"/tools/import-export"},{key:"health",icon:"fas fa-heartbeat",bg:"#52c41a",title:"健康检查",desc:"系统状态检测和诊断",route:"/tools/health"},{key:"email-rollback",icon:"fas fa-undo",bg:"#fa8c16",title:"邮箱回滚",desc:"邮箱变更 14 天内回滚",route:"/tools/email-rollback"}]),n=O([{key:"sms",icon:"fas fa-sms",color:"#1890ff",name:"短信服务",description:"验证码和通知短信",available:!1},{key:"wechat",icon:"fab fa-weixin",color:"#52c41a",name:"微信通知",description:"微信模板消息和订阅通知",available:!1},{key:"captcha",icon:"fas fa-shield-alt",color:"#722ed1",name:"验证码服务",description:"人机验证(极验/腾讯/阿里云)",available:!1},{key:"push",icon:"fas fa-paper-plane",color:"#fa8c16",name:"搜索引擎推送",description:"百度/Google 主动推送",available:!1},{key:"audit",icon:"fas fa-shield-virus",color:"#f5222d",name:"内容审核",description:"第三方内容安全审核 API",available:!1}]);D(async()=>{var a,r,b,h,f,g,w,x,z,v,C,e;try{const i=await y.request("/tools/health");if(i!=null&&i.data){const o=i.data;o.php_version&&(_.value[0].value=o.php_version),o.wp_version&&(_.value[1].value=o.wp_version),o.db_status&&(_.value[2].value=o.db_status,_.value[2].status=o.db_ok?"ok":"warn"),o.upload_dir&&(_.value[3].value=o.upload_dir,_.value[3].status=o.upload_ok?"ok":"warn")}}catch{}try{const i=await y.request("/settings/extensions");if(i!=null&&i.data){const o=i.data,l=i.services||{};n.value[0].available=!!(((a=l.sms)==null?void 0:a.available)??o.sms_enabled),n.value[0].status=((r=l.sms)==null?void 0:r.provider)||(o.sms_enabled?"已启用":"未配置"),n.value[1].available=!!(((b=l.wechat)==null?void 0:b.available)??o.wechat_enabled),n.value[1].status=((h=l.wechat)==null?void 0:h.provider)||(o.wechat_enabled?"已启用":"未配置"),n.value[2].available=!!(((f=l.captcha)==null?void 0:f.available)??((g=l.captcha)==null?void 0:g.configured)),n.value[2].status=((w=l.captcha)==null?void 0:w.provider)||((x=l.captcha)!=null&&x.enabled?"已启用":"未配置"),n.value[3].available=!!(((z=l.push)==null?void 0:z.available)??o.baidu_push_enabled),n.value[3].status=((v=l.push)==null?void 0:v.provider)||(o.baidu_push_enabled?"已启用":"未配置"),n.value[4].available=!!(((C=l.audit)==null?void 0:C.available)??o.content_audit_enabled),n.value[4].status=((e=l.audit)==null?void 0:e.provider)||(o.content_audit_enabled?"已启用":"未配置")}}catch{}});function E(a){I.push(a)}async function F(){c.info("正在清除缓存...");try{const a=await y.request("/tools/maintenance",{method:"POST",body:JSON.stringify({action:"flush_cache"})});c.success((a==null?void 0:a.message)||"缓存已清除")}catch(a){c.error((a==null?void 0:a.message)||"清除缓存失败")}}async function J(){c.info("正在优化数据表...");try{const a=await y.request("/tools/maintenance",{method:"POST",body:JSON.stringify({action:"optimize_db"})});c.success((a==null?void 0:a.message)||"数据表已优化")}catch(a){c.error((a==null?void 0:a.message)||"优化数据表失败")}}async function V(){c.info("正在重建索引...");try{const a=await y.request("/tools/maintenance",{method:"POST",body:JSON.stringify({action:"rebuild_index"})});c.success((a==null?void 0:a.message)||"索引重建完成")}catch(a){c.error((a==null?void 0:a.message)||"重建索引失败")}}return(a,r)=>{const b=u("n-grid-item"),h=u("n-grid"),f=u("n-card"),g=u("n-tag"),w=u("n-thing"),x=u("n-list-item"),z=u("n-list"),v=u("n-button"),C=u("n-space");return p(),P("div",A,[t(R,{title:"系统工具",desc:"额外运维工具与扩展能力。"}),t(f,{title:"系统健康",size:"small",class:"aksrt-tools__section"},{default:s(()=>[t(h,{cols:4,"x-gap":12,"y-gap":12},{default:s(()=>[(p(!0),P(T,null,N(_.value,e=>(p(),q(b,{key:e.key},{default:s(()=>[d("div",{class:L(["aksrt-tools__health-card","aksrt-tools__health-card--"+e.status])},[t(m,{icon:e.icon,size:18,color:e.color},null,8,["icon","color"]),d("div",null,[d("strong",null,k(e.value),1),d("p",null,k(e.label),1)])],2)]),_:2},1024))),128))]),_:1})]),_:1}),t(f,{title:"工具集合",size:"small",class:"aksrt-tools__section"},{default:s(()=>[t(h,{cols:3,"x-gap":12,"y-gap":12},{default:s(()=>[(p(!0),P(T,null,N(B.value,e=>(p(),q(b,{key:e.key},{default:s(()=>[d("div",{class:"aksrt-tools__tool-card",onClick:i=>E(e.route)},[d("div",{class:"aksrt-tools__tool-icon",style:M({background:e.bg})},[t(m,{icon:e.icon,size:18,color:"#fff"},null,8,["icon"])],4),d("div",X,[d("strong",null,k(e.title),1),d("p",null,k(e.desc),1)]),t(m,{icon:"fas fa-chevron-right",size:12,color:"#c0c4cc"})],8,G)]),_:2},1024))),128))]),_:1})]),_:1}),t(f,{title:"服务状态",size:"small",class:"aksrt-tools__section"},{default:s(()=>[t(z,{bordered:"",size:"small"},{default:s(()=>[(p(!0),P(T,null,N(n.value,e=>(p(),q(x,{key:e.key},{default:s(()=>[t(w,{title:e.name,description:e.description},{avatar:s(()=>[t(m,{icon:e.icon,size:16,color:e.color},null,8,["icon","color"])]),"header-extra":s(()=>[t(g,{type:e.available?"success":"warning",size:"small"},{default:s(()=>[S(k(e.available?"可用":"未配置"),1)]),_:2},1032,["type"])]),_:2},1032,["title","description"])]),_:2},1024))),128))]),_:1})]),_:1}),t(f,{title:"手动维护",size:"small",class:"aksrt-tools__section"},{default:s(()=>[t(C,null,{default:s(()=>[t(v,{onClick:F},{icon:s(()=>[t(m,{icon:"fas fa-broom",size:12})]),default:s(()=>[r[0]||(r[0]=S(" 清除缓存 ",-1))]),_:1}),t(v,{onClick:J},{icon:s(()=>[t(m,{icon:"fas fa-database",size:12})]),default:s(()=>[r[1]||(r[1]=S(" 优化数据表 ",-1))]),_:1}),t(v,{onClick:V},{icon:s(()=>[t(m,{icon:"fas fa-sync-alt",size:12})]),default:s(()=>[r[2]||(r[2]=S(" 重建索引 ",-1))]),_:1})]),_:1})]),_:1})])}}},sa=W(Y,[["__scopeId","data-v-dc044b00"]]);export{sa as default}; diff --git a/assets/admin/build/ExtensionTools.css b/assets/admin/build/ExtensionTools.css new file mode 100644 index 00000000..c759165a --- /dev/null +++ b/assets/admin/build/ExtensionTools.css @@ -0,0 +1 @@ +.aksrt-tools__section[data-v-dc044b00]{margin-bottom:16px}.aksrt-tools__health-card[data-v-dc044b00]{display:flex;align-items:center;gap:10px;padding:14px;border-radius:8px;background:#fafafa;border:1px solid #f0f0f0}.aksrt-tools__health-card strong[data-v-dc044b00]{display:block;font-size:14px;color:#1a1a2e}.aksrt-tools__health-card p[data-v-dc044b00]{margin:2px 0 0;font-size:12px;color:#8a909c}.aksrt-tools__health-card--warn[data-v-dc044b00]{border-color:#faad14;background:#fffbe6}.aksrt-tools__tool-card[data-v-dc044b00]{display:flex;align-items:center;gap:12px;padding:14px;border-radius:8px;background:#fafafa;border:1px solid #f0f0f0;cursor:pointer;transition:all .2s}.aksrt-tools__tool-card[data-v-dc044b00]:hover{border-color:#1890ff;box-shadow:0 2px 8px #1890ff1a}.aksrt-tools__tool-icon[data-v-dc044b00]{width:40px;height:40px;border-radius:8px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.aksrt-tools__tool-body[data-v-dc044b00]{flex:1;min-width:0}.aksrt-tools__tool-body strong[data-v-dc044b00]{display:block;font-size:14px;color:#1a1a2e}.aksrt-tools__tool-body p[data-v-dc044b00]{margin:2px 0 0;font-size:12px;color:#8a909c} diff --git a/assets/admin/build/FaIcon.CX_hGmM4.js b/assets/admin/build/FaIcon.CX_hGmM4.js new file mode 100644 index 00000000..59c66fc3 --- /dev/null +++ b/assets/admin/build/FaIcon.CX_hGmM4.js @@ -0,0 +1 @@ +import{W as r,X as p,I as u,L as f,c as a}from"./vendor-vue.Bykizn0M.js";const c={__name:"FaIcon",props:{icon:{type:String,required:!0},size:{type:[Number,String],default:null},fw:{type:Boolean,default:!1},spin:{type:Boolean,default:!1},pulse:{type:Boolean,default:!1},rotate:{type:[Number,String],default:null},flip:{type:String,default:null},extraClass:{type:String,default:""}},setup(l){const e=l,i=a(()=>{const t=[],s=e.icon.trim();return s.startsWith("fa-")?t.push("fas",s):t.push(...s.split(/\s+/)),e.fw&&t.push("fa-fw"),e.spin&&t.push("fa-spin"),e.pulse&&t.push("fa-pulse"),e.rotate&&t.push(`fa-rotate-${e.rotate}`),e.flip&&t.push(`fa-flip-${e.flip}`),e.extraClass&&t.push(e.extraClass),t.join(" ")}),n=a(()=>e.size?{fontSize:typeof e.size=="number"?`${e.size}px`:e.size}:{});return(t,s)=>(r(),p("i",{class:f(i.value),style:u(n.value),"aria-hidden":"true"},null,6))}};export{c as _}; diff --git a/assets/admin/build/FloatingButtonsSettings.-1uwNMV9.js b/assets/admin/build/FloatingButtonsSettings.-1uwNMV9.js new file mode 100644 index 00000000..9f77c5d1 --- /dev/null +++ b/assets/admin/build/FloatingButtonsSettings.-1uwNMV9.js @@ -0,0 +1 @@ +import{d as ae}from"./vendor-draggable.CceJcfGJ.js";import{a as se}from"./shared-api.D5_fnN32.js";import{P as Qe}from"./PageHeader.Di3JTPjc.js";import{_ as Ae}from"./index.js";import{u as Fe,a as Be,B as k,b as T}from"./vendor-naive.BuHWlEgf.js";import{o as De,X as f,a4 as a,a3 as s,r as L,a1 as c,e as oe,W as r,N as p,f as u,Y as o,a2 as m,L as $,a5 as g,Z as x,F as ie,R as ne,c as C}from"./vendor-vue.Bykizn0M.js";import"./vendor-misc.1adHN6i_.js";const Ve={class:"aksrt-page-container content-page"},Pe={class:"aksrt-card-header-row"},Se={class:"aksrt-card-header-row__left"},Te={class:"aksrt-card-header-row__title"},Le={class:"float-btn-sort__item"},Me={class:"float-btn-sort__main"},je={class:"float-btn-sort__icon"},He={class:"float-btn-sort__meta"},Ne={class:"float-btn-sort__title-row"},Oe={class:"float-btn-sort__desc"},Ee={class:"float-btn-sort__actions"},Ie={class:"aksrt-form-actions"},Re={class:"icon-preview-row"},We={key:0,class:"theme-icon-preview-inline"},Xe={key:2,class:"muted-text"},Ye={key:6,class:"add-items-editor"},Ze={class:"add-items-editor__head"},Ge={class:"add-items-editor__head-actions"},Je={key:0,class:"add-items-editor__list"},Ke={class:"add-items-editor__row"},et={class:"add-items-preview"},tt={class:"add-items-preview__panel add-items-preview__panel--light"},lt={class:"add-items-preview__trigger"},at={class:"add-items-preview__menu"},st={key:0,class:"add-items-preview__list"},ot={key:1,class:"add-items-preview__empty"},it={class:"add-items-preview__panel add-items-preview__panel--dark"},nt={class:"add-items-preview__trigger add-items-preview__trigger--dark"},dt={class:"add-items-preview__menu add-items-preview__menu--dark"},rt={key:0,class:"add-items-preview__list"},ut={key:1,class:"add-items-preview__empty add-items-preview__empty--dark"},_t={class:"aksrt-modal-footer"},ct={__name:"FloatingButtonsSettings",setup(pt){var Y,Z;const v=Fe(),de=Be(),M=L(!0),A=L(!1),U=L(!1),q=L(-1),z=(((Y=window.aksrtAdminData)==null?void 0:Y.siteUrl)||"").replace(/\/$/,""),N=(((Z=window.aksrtAdminData)==null?void 0:Z.adminUrl)||"").replace(/\/$/,""),n=oe({enabled:!0,style:"round",position:"bottom",scroll_hide:!1,scroll_down_hide:!0,filter_blur:["mobile"],items:[]}),t=oe(B()),O=[{label:"自定义链接",value:"custom"},{label:"回到顶部",value:"back_top"},{label:"主题切换",value:"theme_mode"},{label:"页面二维码",value:"qrcode"},{label:"发布入口",value:"add"},{label:"购物车",value:"shop_cart"},{label:"QQ 客服",value:"service_qq"},{label:"微信客服",value:"service_wechat"},{label:"会员入口",value:"pay_vip"}],j=Object.fromEntries(O.map(i=>[i.value,i.label])),re=C(()=>[{label:"写文章",key:"post"},{label:"投稿页",key:"submit"},{label:"用户中心创作",key:"profile"}].map(e=>{const d=R(e.key);return{...e,disabled:d,label:d?`${e.label}(已存在)`:e.label}})),F=C(()=>["custom","pay_vip","add","shop_cart"].includes(t.type)&&!t.hover),Q=C(()=>["custom","pay_vip"].includes(t.type)),E=C(()=>["service_qq","service_wechat"].includes(t.type)),I=C(()=>["service_qq","service_wechat"].includes(t.type)&&t.action_mode==="qrcode"),ue=C(()=>!I.value);function B(){return{id:"",type:"custom",icon:"fas fa-link",icon_dark:"",icon_light:"",text:"",desc:"",action_mode:"link",qq:"",qrcode_img:"",wechat_img:"",link:"",add_items:[],hover:"",qr_size:120,hover_width:200,pc_s:!0,m_s:!0,color:null,bg:null,enabled:!0,sort_order:0}}function _e(i){const e={custom:{icon:"fas fa-link",icon_dark:"",icon_light:"",text:"链接",desc:"",link:"",hover:"",action_mode:"link",qr_size:120},back_top:{icon:"fas fa-chevron-up",icon_dark:"",icon_light:"",text:"顶部",desc:"返回顶部",link:"",hover:"",action_mode:"link",qr_size:120},theme_mode:{icon:"fas fa-sun",icon_dark:"",icon_light:"",text:"主题",desc:"切换主题",link:"",hover:"",action_mode:"link",qr_size:120},qrcode:{icon:"fas fa-qrcode",icon_dark:"",icon_light:"",text:"二维码",desc:"扫码继续浏览",link:"",hover:"",action_mode:"qrcode",qr_size:120},service_qq:{icon:"fab fa-qq",icon_dark:"",icon_light:"",text:"QQ",desc:"QQ 联系",link:"",hover:"",action_mode:"link",qr_size:120},service_wechat:{icon:"fab fa-weixin",icon_dark:"",icon_light:"",text:"微信",desc:"扫码添加微信",link:"",hover:"",action_mode:"link",qr_size:120},pay_vip:{icon:"fas fa-crown",icon_dark:"",icon_light:"",text:"会员",desc:"会员入口",link:"",hover:"",action_mode:"link",qr_size:120},add:{icon:"fas fa-plus",icon_dark:"",icon_light:"",text:"发布",desc:"发布内容",link:"",hover:"",action_mode:"link",qr_size:120},shop_cart:{icon:"fas fa-shopping-cart",icon_dark:"",icon_light:"",text:"购物车",desc:"购物车入口",link:"",hover:"",action_mode:"link",qr_size:120}};return e[i]||e.custom}function ce(i){const e=_e(i);t.icon=e.icon,t.icon_dark=e.icon_dark,t.icon_light=e.icon_light,t.action_mode=e.action_mode,t.qr_size=e.qr_size,t.text||(t.text=e.text),t.desc||(t.desc=e.desc),Q.value||(t.hover=""),i==="service_qq"&&t.action_mode==="qrcode"&&(t.qq=""),i==="service_wechat"&&t.action_mode==="qrcode"&&(t.link=""),["service_qq","service_wechat"].includes(i)&&t.action_mode==="qrcode"&&(t.desc=""),!F.value&&!["service_qq","service_wechat"].includes(i)&&(t.link="")}function pe(){Object.assign(t,B(),{id:`float_${Date.now()}`,sort_order:n.items.length}),q.value=-1,U.value=!0}function me(){t.add_items.push({id:`add_${Date.now()}_${t.add_items.length}`,label:"",icon:"fas fa-pen",url:""})}function fe(){t.add_items=t.add_items.map((i,e)=>({...i,id:i.id||`add_${Date.now()}_${e}`}))}function ve(i){if(R(i)){v.info("该预设已存在,无需重复添加");return}const d={post:()=>({label:"写文章",icon:"fas fa-pen-nib",url:`${N||z}/post-new.php`}),submit:()=>({label:"投稿页",icon:"fas fa-paper-plane",url:`${z}/submit/`}),profile:()=>({label:"创作中心",icon:"fas fa-user-edit",url:`${z}/user/`})}[i];if(!d)return;const _=d();t.add_items.push({id:`add_${Date.now()}_${t.add_items.length}`,..._})}function R(i){const e=ge(i);return e?t.add_items.some(d=>{const _=(d.label||"").trim(),w=W(d.url||"");return _===e.label||w===W(e.url)}):!1}function ge(i){const e={post:()=>({label:"写文章",icon:"fas fa-pen-nib",url:`${N||z}/post-new.php`}),submit:()=>({label:"投稿页",icon:"fas fa-paper-plane",url:`${z}/submit/`}),profile:()=>({label:"创作中心",icon:"fas fa-user-edit",url:`${z}/user/`})};return e[i]?e[i]():null}function W(i){return String(i||"").replace(/\/$/,"")}function ye(i){t.add_items.splice(i,1)}function ke(i){Object.assign(t,B(),n.items[i]),q.value=i,U.value=!0}function D(){n.items.splice(0,n.items.length,...n.items.map((i,e)=>({...i,sort_order:e})))}function be(i){return i.type==="service_qq"?i.action_mode==="qrcode"?i.qrcode_img||"未设置 QQ 二维码":i.link||i.qq||"未设置 QQ 号码":i.type==="service_wechat"?i.action_mode==="qrcode"?i.wechat_img||"未设置微信二维码":i.link||"未设置跳转链接":i.type==="qrcode"?i.desc||"展示当前页面二维码":i.hover?"使用 HTML 悬浮层内容":i.link||i.desc||"未设置说明"}function qe(){if(t.type!=="theme_mode"&&!t.icon){v.warning("请填写图标");return}if(!t.text){v.warning("请填写按钮标题");return}if(t.type==="service_qq"&&t.action_mode!=="qrcode"&&!t.qq&&!t.link){v.warning("请填写 QQ 号码或跳转链接");return}if(t.type==="service_qq"&&t.action_mode==="qrcode"&&!t.qrcode_img){v.warning("请填写 QQ 二维码地址");return}if(t.type==="service_wechat"&&t.action_mode==="qrcode"&&!t.wechat_img){v.warning("请填写微信二维码地址");return}if(t.type==="service_wechat"&&t.action_mode!=="qrcode"&&!t.link){v.warning("请填写微信跳转链接");return}if(F.value&&!t.link){v.warning("请填写链接地址");return}const i={id:t.id||`float_${Date.now()}`,type:t.type,icon:t.type==="theme_mode"?"fas fa-sun":t.icon,icon_dark:"",icon_light:"",text:t.text,desc:I.value?"":t.desc,action_mode:E.value?t.action_mode:"link",qq:t.type==="service_qq"&&t.action_mode!=="qrcode"?t.qq:"",qrcode_img:t.type==="service_qq"&&t.action_mode==="qrcode"?t.qrcode_img:"",wechat_img:t.type==="service_wechat"&&t.action_mode==="qrcode"?t.wechat_img:"",link:F.value||t.type==="service_wechat"&&t.action_mode!=="qrcode"||t.type==="service_qq"&&t.action_mode!=="qrcode"&&t.link?t.link:"",add_items:t.type==="add"?t.add_items.filter(e=>e.label||e.url).map((e,d)=>({id:e.id||`add_${d}`,label:e.label||"",icon:e.icon||"fas fa-pen",url:e.url||""})):[],hover:Q.value&&t.hover||"",qr_size:t.type==="qrcode"&&t.qr_size||120,hover_width:Q.value&&t.hover_width||200,pc_s:t.pc_s,m_s:t.m_s,color:t.color||"",bg:t.bg||"",enabled:t.enabled,sort_order:q.value>=0?n.items[q.value].sort_order:n.items.length};q.value>=0?n.items.splice(q.value,1,i):n.items.push(i),D(),U.value=!1,v.success(q.value>=0?"已更新":"已添加")}function we(i){de.warning({title:"确认删除",content:`确定删除「${n.items[i].text||j[n.items[i].type]||"按钮"}」吗?`,positiveText:"删除",negativeText:"取消",onPositiveClick:()=>{n.items.splice(i,1),D(),v.success("已删除")}})}async function he(){M.value=!0;try{const i=await se.getFloatingButtons();if(i.code==="success"&&i.data){const e=i.data;n.enabled=e.enabled!==!1,n.style=e.style||"round",n.position=e.position||"bottom",n.scroll_hide=!!e.scroll_hide,n.scroll_down_hide=e.scroll_down_hide!==!1,n.filter_blur=Array.isArray(e.filter_blur)?e.filter_blur:[],n.items=(e.items||[]).map((d,_)=>({...B(),...d,icon:d.type==="theme_mode"?"fas fa-sun":d.icon||"",color:d.color||null,bg:d.bg||null,icon_dark:"",icon_light:"",action_mode:d.action_mode||(["service_qq","service_wechat"].includes(d.type),"link"),qrcode_img:d.qrcode_img||"",add_items:Array.isArray(d.add_items)?d.add_items:[],qr_size:d.qr_size||120,sort_order:d.sort_order??_})),D()}}catch(i){console.error("[FloatingButtons] load failed:",i),v.error("加载配置失败")}finally{M.value=!1}}async function X(){A.value=!0;try{const i={enabled:n.enabled,style:n.style,position:n.position,scroll_hide:n.scroll_hide,scroll_down_hide:n.scroll_down_hide,filter_blur:n.filter_blur,items:n.items.map((d,_)=>({...d,icon:d.type==="theme_mode"?"fas fa-sun":d.icon||"",icon_dark:"",icon_light:"",color:d.color||"",bg:d.bg||"",sort_order:_}))},e=await se.saveFloatingButtons(i);e.code==="success"?v.success(e.message||"保存成功"):v.error(e.message||"保存失败")}catch(i){console.error("[FloatingButtons] save failed:",i),v.error("保存失败")}finally{A.value=!1}}return De(he),(i,e)=>{const d=c("n-switch"),_=c("n-form-item"),w=c("n-radio"),V=c("n-space"),H=c("n-radio-group"),G=c("n-checkbox"),xe=c("n-checkbox-group"),J=c("n-form"),K=c("n-card"),ee=c("n-empty"),Ue=c("n-spin"),ze=c("n-select"),b=c("n-form-item-gi"),y=c("n-input"),P=c("n-grid"),te=c("n-color-picker"),le=c("n-input-number"),$e=c("n-dropdown"),Ce=c("n-modal");return r(),f("div",Ve,[a(Qe,{title:"底部悬浮按钮",desc:"配置右侧悬浮按钮的显示、排序和交互内容,前端会根据保存结果实时渲染。"},{actions:s(()=>[a(p(k),{type:"primary",loading:A.value,onClick:X},{default:s(()=>[...e[27]||(e[27]=[u("保存",-1)])]),_:1},8,["loading"])]),_:1}),a(Ue,{show:M.value,style:{width:"100%","min-height":"200px"}},{default:s(()=>[a(K,{class:"aksrt-section-card"},{header:s(()=>[...e[28]||(e[28]=[o("div",{class:"aksrt-card-header-row"},[o("div",{class:"aksrt-card-header-row__left"},[o("span",{class:"header-icon"},[o("i",{class:"fas fa-cog"})]),o("strong",{class:"aksrt-card-header-row__title"},"基础设置")])],-1)])]),default:s(()=>[a(J,{model:n,"label-placement":"left","label-width":"140",class:"aksrt-form"},{default:s(()=>[a(_,{label:"启用悬浮按钮"},{default:s(()=>[a(d,{value:n.enabled,"onUpdate:value":e[0]||(e[0]=l=>n.enabled=l)},null,8,["value"]),e[29]||(e[29]=o("span",{class:"aksrt-hint-text",style:{"margin-left":"12px"}},"控制前台整个悬浮按钮组是否显示",-1))]),_:1}),a(_,{label:"按钮样式"},{default:s(()=>[a(H,{value:n.style,"onUpdate:value":e[1]||(e[1]=l=>n.style=l)},{default:s(()=>[a(V,null,{default:s(()=>[a(w,{value:"round"},{default:s(()=>[...e[30]||(e[30]=[u("圆角卡片",-1)])]),_:1}),a(w,{value:"square"},{default:s(()=>[...e[31]||(e[31]=[u("方形堆叠",-1)])]),_:1})]),_:1})]),_:1},8,["value"])]),_:1}),a(_,{label:"显示位置"},{default:s(()=>[a(H,{value:n.position,"onUpdate:value":e[2]||(e[2]=l=>n.position=l)},{default:s(()=>[a(V,null,{default:s(()=>[a(w,{value:"bottom"},{default:s(()=>[...e[32]||(e[32]=[u("右下角",-1)])]),_:1}),a(w,{value:"center"},{default:s(()=>[...e[33]||(e[33]=[u("右侧居中",-1)])]),_:1})]),_:1})]),_:1},8,["value"])]),_:1}),a(_,{label:"滚动中隐藏"},{default:s(()=>[a(d,{value:n.scroll_hide,"onUpdate:value":e[3]||(e[3]=l=>n.scroll_hide=l)},null,8,["value"]),e[34]||(e[34]=o("span",{class:"aksrt-hint-text",style:{"margin-left":"12px"}},"页面滚动时暂时隐藏,停止滚动后恢复",-1))]),_:1}),a(_,{label:"下滑隐藏"},{default:s(()=>[a(d,{value:n.scroll_down_hide,"onUpdate:value":e[4]||(e[4]=l=>n.scroll_down_hide=l)},null,8,["value"]),e[35]||(e[35]=o("span",{class:"aksrt-hint-text",style:{"margin-left":"12px"}},"向下滚动隐藏,向上滚动显示",-1))]),_:1}),a(_,{label:"毛玻璃设备"},{default:s(()=>[a(xe,{value:n.filter_blur,"onUpdate:value":e[5]||(e[5]=l=>n.filter_blur=l)},{default:s(()=>[a(V,null,{default:s(()=>[a(G,{value:"pc"},{default:s(()=>[...e[36]||(e[36]=[u("PC",-1)])]),_:1}),a(G,{value:"mobile"},{default:s(()=>[...e[37]||(e[37]=[u("移动端",-1)])]),_:1})]),_:1})]),_:1},8,["value"])]),_:1})]),_:1},8,["model"])]),_:1}),a(K,{class:"aksrt-section-card"},{header:s(()=>[o("div",Pe,[o("div",Se,[e[38]||(e[38]=o("span",{class:"header-icon"},[o("i",{class:"fas fa-layer-group"})],-1)),o("strong",Te,"按钮列表 ("+x(n.items.length)+")",1)]),a(p(k),{type:"primary",size:"small",onClick:pe},{icon:s(()=>[...e[39]||(e[39]=[o("i",{class:"fas fa-plus"},null,-1)])]),default:s(()=>[e[40]||(e[40]=u(" 添加按钮 ",-1))]),_:1})])]),default:s(()=>[e[48]||(e[48]=o("p",{class:"section-desc"},"支持内置功能按钮、自定义链接、二维码弹层和客服入口。排序结果会直接用于前端输出顺序。",-1)),n.items.length?(r(),m(p(ae),{key:0,modelValue:n.items,"onUpdate:modelValue":e[6]||(e[6]=l=>n.items=l),"item-key":"id",handle:".float-btn-sort__handle","ghost-class":"float-btn-sort__ghost",animation:"180",class:"float-btn-sort",onEnd:D},{item:s(({element:l,index:S})=>[o("div",Le,[o("div",Me,[e[43]||(e[43]=o("button",{type:"button",class:"float-btn-sort__handle","aria-label":"拖拽排序"},[o("i",{class:"fas fa-grip-vertical"})],-1)),o("span",je,[l.icon?(r(),f("i",{key:0,class:$(l.icon)},null,2)):g("",!0)]),o("div",He,[o("div",Ne,[o("strong",null,x(l.text||p(j)[l.type]||"按钮"),1),a(p(T),{size:"small",bordered:!1},{default:s(()=>[u(x(p(j)[l.type]||l.type),1)]),_:2},1024),l.pc_s?(r(),m(p(T),{key:0,size:"small",type:"info",bordered:!1},{default:s(()=>[...e[41]||(e[41]=[u("PC",-1)])]),_:1})):g("",!0),l.m_s?(r(),m(p(T),{key:1,size:"small",type:"warning",bordered:!1},{default:s(()=>[...e[42]||(e[42]=[u("移动",-1)])]),_:1})):g("",!0),a(p(T),{size:"small",type:l.enabled?"success":"default",bordered:!1},{default:s(()=>[u(x(l.enabled?"启用":"禁用"),1)]),_:2},1032,["type"])]),o("div",Oe,x(be(l)),1)])]),o("div",Ee,[a(p(k),{size:"tiny",quaternary:"",type:"primary",onClick:h=>ke(S)},{icon:s(()=>[...e[44]||(e[44]=[o("i",{class:"fas fa-edit",style:{"font-size":"12px"}},null,-1)])]),default:s(()=>[e[45]||(e[45]=u(" 编辑 ",-1))]),_:1},8,["onClick"]),a(p(k),{size:"tiny",quaternary:"",type:"error",onClick:h=>we(S)},{icon:s(()=>[...e[46]||(e[46]=[o("i",{class:"fas fa-trash-alt",style:{"font-size":"12px"}},null,-1)])]),default:s(()=>[e[47]||(e[47]=u(" 删除 ",-1))]),_:1},8,["onClick"])])])]),_:1},8,["modelValue"])):(r(),m(ee,{key:1,description:"暂无悬浮按钮,请点击上方按钮添加"}))]),_:1}),o("div",Ie,[a(p(k),{type:"primary",loading:A.value,onClick:X},{default:s(()=>[...e[49]||(e[49]=[u("保存悬浮按钮配置",-1)])]),_:1},8,["loading"])])]),_:1},8,["show"]),a(Ce,{show:U.value,"onUpdate:show":e[26]||(e[26]=l=>U.value=l),"mask-closable":!1,preset:"card",title:q.value>=0?"编辑悬浮按钮":"添加悬浮按钮",class:"aksrt-modal-card",style:{"max-width":"640px"}},{footer:s(()=>[o("div",_t,[a(p(k),{onClick:e[25]||(e[25]=l=>U.value=!1)},{default:s(()=>[...e[66]||(e[66]=[u("取消",-1)])]),_:1}),a(p(k),{type:"primary",onClick:qe},{default:s(()=>[...e[67]||(e[67]=[u("保存",-1)])]),_:1})])]),default:s(()=>[a(J,{model:t,"label-placement":"top",class:"aksrt-form"},{default:s(()=>[a(P,{cols:2,"x-gap":16},{default:s(()=>[a(b,{label:"按钮类型"},{default:s(()=>[a(ze,{value:t.type,"onUpdate:value":[e[7]||(e[7]=l=>t.type=l),ce],options:O,placeholder:"选择按钮类型"},null,8,["value"])]),_:1}),t.type!=="theme_mode"?(r(),m(b,{key:0,label:"主图标 (Font Awesome)"},{default:s(()=>[a(y,{value:t.icon,"onUpdate:value":e[8]||(e[8]=l=>t.icon=l),placeholder:"例如: fas fa-home"},null,8,["value"])]),_:1})):(r(),m(b,{key:1,label:"主题图标"},{default:s(()=>[...e[50]||(e[50]=[o("div",{class:"theme-icon-preview"},[o("span",null,[o("i",{class:"fas fa-sun"}),u(" 亮色固定显示太阳")]),o("span",null,[o("i",{class:"fas fa-moon"}),u(" 暗色固定显示月亮")])],-1)])]),_:1}))]),_:1}),o("div",Re,[e[52]||(e[52]=o("span",null,"预览:",-1)),t.type==="theme_mode"?(r(),f("span",We,[...e[51]||(e[51]=[o("i",{class:"fas fa-sun"},null,-1),u(" / ",-1),o("i",{class:"fas fa-moon"},null,-1)])])):t.icon?(r(),f("i",{key:1,class:$(t.icon),style:{"font-size":"18px"}},null,2)):(r(),f("span",Xe,"未设置图标")),e[53]||(e[53]=o("a",{href:"https://fontawesome.com/search?m=free",target:"_blank",rel:"noopener"},[o("i",{class:"fas fa-external-link-alt"}),u(" Font Awesome ")],-1))]),a(P,{cols:2,"x-gap":16},{default:s(()=>[a(b,{label:"按钮标题"},{default:s(()=>[a(y,{value:t.text,"onUpdate:value":e[9]||(e[9]=l=>t.text=l),placeholder:"例如: 微信, 顶部, 会员"},null,8,["value"])]),_:1}),ue.value?(r(),m(b,{key:0,label:"悬停说明"},{default:s(()=>[a(y,{value:t.desc,"onUpdate:value":e[10]||(e[10]=l=>t.desc=l),placeholder:"例如: 扫码添加微信"},null,8,["value"])]),_:1})):g("",!0)]),_:1}),a(P,{cols:2,"x-gap":16},{default:s(()=>[a(b,{label:"PC 显示"},{default:s(()=>[a(d,{value:t.pc_s,"onUpdate:value":e[11]||(e[11]=l=>t.pc_s=l)},null,8,["value"])]),_:1}),a(b,{label:"移动端显示"},{default:s(()=>[a(d,{value:t.m_s,"onUpdate:value":e[12]||(e[12]=l=>t.m_s=l)},null,8,["value"])]),_:1})]),_:1}),a(P,{cols:2,"x-gap":16},{default:s(()=>[a(b,{label:"图标颜色"},{default:s(()=>[a(te,{value:t.color,"onUpdate:value":e[13]||(e[13]=l=>t.color=l),"show-alpha":!0,clearable:""},null,8,["value"])]),_:1}),a(b,{label:"背景颜色"},{default:s(()=>[a(te,{value:t.bg,"onUpdate:value":e[14]||(e[14]=l=>t.bg=l),"show-alpha":!0,clearable:""},null,8,["value"])]),_:1})]),_:1}),E.value?(r(),m(_,{key:0,label:"交互方式"},{default:s(()=>[a(H,{value:t.action_mode,"onUpdate:value":e[15]||(e[15]=l=>t.action_mode=l)},{default:s(()=>[a(V,null,{default:s(()=>[a(w,{value:"link"},{default:s(()=>[...e[54]||(e[54]=[u("点击跳转",-1)])]),_:1}),a(w,{value:"qrcode"},{default:s(()=>[...e[55]||(e[55]=[u("悬浮二维码",-1)])]),_:1})]),_:1})]),_:1},8,["value"])]),_:1})):g("",!0),F.value?(r(),m(_,{key:1,label:"链接地址"},{default:s(()=>[a(y,{value:t.link,"onUpdate:value":e[16]||(e[16]=l=>t.link=l),placeholder:"https://example.com 或 /vip"},null,8,["value"])]),_:1})):g("",!0),t.type==="service_qq"&&t.action_mode!=="qrcode"?(r(),m(_,{key:2,label:"QQ 号码"},{default:s(()=>[a(y,{value:t.qq,"onUpdate:value":e[17]||(e[17]=l=>t.qq=l),placeholder:"仅填写数字"},null,8,["value"])]),_:1})):g("",!0),t.type==="service_qq"&&t.action_mode==="qrcode"?(r(),m(_,{key:3,label:"QQ 二维码地址"},{default:s(()=>[a(y,{value:t.qrcode_img,"onUpdate:value":e[18]||(e[18]=l=>t.qrcode_img=l),placeholder:"https://example.com/qq-qrcode.jpg"},null,8,["value"])]),_:1})):g("",!0),t.type==="service_wechat"&&t.action_mode==="qrcode"?(r(),m(_,{key:4,label:"微信二维码地址"},{default:s(()=>[a(y,{value:t.wechat_img,"onUpdate:value":e[19]||(e[19]=l=>t.wechat_img=l),placeholder:"https://example.com/qrcode.jpg"},null,8,["value"])]),_:1})):g("",!0),t.type==="qrcode"?(r(),m(_,{key:5,label:"二维码尺寸"},{default:s(()=>[a(le,{value:t.qr_size,"onUpdate:value":e[20]||(e[20]=l=>t.qr_size=l),min:80,max:240,style:{width:"180px"}},null,8,["value"])]),_:1})):g("",!0),t.type==="add"?(r(),f("div",Ye,[o("div",Ze,[e[60]||(e[60]=o("strong",null,"发布菜单项",-1)),o("div",Ge,[a($e,{trigger:"click",options:re.value,onSelect:ve},{default:s(()=>[a(p(k),{size:"small"},{icon:s(()=>[...e[56]||(e[56]=[o("i",{class:"fas fa-magic"},null,-1)])]),default:s(()=>[e[57]||(e[57]=u(" 一键预设 ",-1))]),_:1})]),_:1},8,["options"]),a(p(k),{size:"small",type:"primary",onClick:me},{icon:s(()=>[...e[58]||(e[58]=[o("i",{class:"fas fa-plus"},null,-1)])]),default:s(()=>[e[59]||(e[59]=u(" 添加子项 ",-1))]),_:1})])]),t.add_items.length?(r(),f("div",Je,[a(p(ae),{modelValue:t.add_items,"onUpdate:modelValue":e[21]||(e[21]=l=>t.add_items=l),"item-key":"id",handle:".add-items-editor__drag","ghost-class":"add-items-editor__ghost",animation:"180",onEnd:fe},{item:s(({element:l,index:S})=>[o("div",Ke,[e[62]||(e[62]=o("button",{type:"button",class:"add-items-editor__drag","aria-label":"拖拽排序"},[o("i",{class:"fas fa-grip-vertical"})],-1)),a(y,{value:l.label,"onUpdate:value":h=>l.label=h,placeholder:"名称,例如: 写文章"},null,8,["value","onUpdate:value"]),a(y,{value:l.icon,"onUpdate:value":h=>l.icon=h,placeholder:"图标,例如: fas fa-pen"},null,8,["value","onUpdate:value"]),a(y,{value:l.url,"onUpdate:value":h=>l.url=h,placeholder:"链接,例如: /submit"},null,8,["value","onUpdate:value"]),a(p(k),{quaternary:"",type:"error",onClick:h=>ye(S)},{icon:s(()=>[...e[61]||(e[61]=[o("i",{class:"fas fa-trash-alt"},null,-1)])]),_:1},8,["onClick"])])]),_:1},8,["modelValue"])])):(r(),m(ee,{key:1,description:"未配置子项时,发布按钮会退化为单链接模式"})),o("div",et,[e[65]||(e[65]=o("div",{class:"add-items-preview__title"},"展开预览",-1)),o("div",tt,[e[63]||(e[63]=o("div",{class:"add-items-preview__mode"},"亮色",-1)),o("div",lt,[o("i",{class:$(t.icon||"fas fa-plus")},null,2)]),o("div",at,[t.add_items.length?(r(),f("div",st,[(r(!0),f(ie,null,ne(t.add_items,l=>(r(),f("a",{key:l.id,href:"javascript:void(0)",class:"add-items-preview__item"},[o("i",{class:$(l.icon||"fas fa-pen")},null,2),o("span",null,x(l.label||"未命名子项"),1)]))),128))])):(r(),f("div",ot,"当前没有子菜单项,将使用单链接按钮。"))])]),o("div",it,[e[64]||(e[64]=o("div",{class:"add-items-preview__mode"},"暗色",-1)),o("div",nt,[o("i",{class:$(t.icon||"fas fa-plus")},null,2)]),o("div",dt,[t.add_items.length?(r(),f("div",rt,[(r(!0),f(ie,null,ne(t.add_items,l=>(r(),f("a",{key:`${l.id}-dark`,href:"javascript:void(0)",class:"add-items-preview__item add-items-preview__item--dark"},[o("i",{class:$(l.icon||"fas fa-pen")},null,2),o("span",null,x(l.label||"未命名子项"),1)]))),128))])):(r(),f("div",ut,"当前没有子菜单项,将使用单链接按钮。"))])])])])):g("",!0),Q.value?(r(),m(_,{key:7,label:"悬浮内容 HTML"},{default:s(()=>[a(y,{value:t.hover,"onUpdate:value":e[22]||(e[22]=l=>t.hover=l),type:"textarea",autosize:{minRows:4,maxRows:8},placeholder:"可填写简单 HTML 内容,填写后会优先展示弹层内容"},null,8,["value"])]),_:1})):g("",!0),Q.value?(r(),m(_,{key:8,label:"悬浮层宽度"},{default:s(()=>[a(le,{value:t.hover_width,"onUpdate:value":e[23]||(e[23]=l=>t.hover_width=l),min:120,max:480,style:{width:"180px"}},null,8,["value"])]),_:1})):g("",!0),a(_,{label:"启用状态"},{default:s(()=>[a(d,{value:t.enabled,"onUpdate:value":e[24]||(e[24]=l=>t.enabled=l)},null,8,["value"])]),_:1})]),_:1},8,["model"])]),_:1},8,["show","title"])])}}},qt=Ae(ct,[["__scopeId","data-v-3f29cff8"]]);export{qt as default}; diff --git a/assets/admin/build/FloatingButtonsSettings.css b/assets/admin/build/FloatingButtonsSettings.css new file mode 100644 index 00000000..a3c24379 --- /dev/null +++ b/assets/admin/build/FloatingButtonsSettings.css @@ -0,0 +1 @@ +.icon-preview-row[data-v-3f29cff8]{display:flex;align-items:center;gap:8px;margin-bottom:16px;font-size:13px}.theme-icon-preview[data-v-3f29cff8]{display:flex;flex-direction:column;gap:6px;color:var(--n-text-color-3);font-size:13px}.theme-icon-preview span[data-v-3f29cff8],.theme-icon-preview-inline[data-v-3f29cff8]{display:inline-flex;align-items:center;gap:6px}.icon-preview-row a[data-v-3f29cff8]{color:var(--n-primary-color);text-decoration:none}.icon-preview-row a[data-v-3f29cff8]:hover{text-decoration:underline}.muted-text[data-v-3f29cff8]{color:#999;font-size:12px}.aksrt-modal-footer[data-v-3f29cff8]{display:flex;justify-content:flex-end;gap:10px}.section-desc[data-v-3f29cff8]{color:var(--n-text-color-3);font-size:13px;margin:0 0 16px}.float-btn-sort[data-v-3f29cff8]{display:flex;flex-direction:column;gap:12px}.float-btn-sort__item[data-v-3f29cff8]{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 16px;border:1px solid var(--n-border-color);border-radius:14px;background:var(--n-card-color)}.float-btn-sort__main[data-v-3f29cff8]{display:flex;align-items:center;gap:12px;min-width:0;flex:1}.float-btn-sort__handle[data-v-3f29cff8]{width:30px;height:30px;border:0;background:transparent;color:var(--n-text-color-3);cursor:grab}.float-btn-sort__handle[data-v-3f29cff8]:active{cursor:grabbing}.float-btn-sort__icon[data-v-3f29cff8]{width:36px;height:36px;border-radius:10px;display:inline-flex;align-items:center;justify-content:center;background:#88abda1f;color:var(--n-text-color-2)}.float-btn-sort__meta[data-v-3f29cff8]{min-width:0;flex:1}.float-btn-sort__title-row[data-v-3f29cff8]{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-bottom:6px}.float-btn-sort__desc[data-v-3f29cff8]{font-size:13px;color:var(--n-text-color-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.float-btn-sort__actions[data-v-3f29cff8]{display:flex;gap:8px;flex-shrink:0}.float-btn-sort__ghost[data-v-3f29cff8]{opacity:.45}.add-items-editor[data-v-3f29cff8]{margin-bottom:16px}.add-items-editor__head[data-v-3f29cff8]{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.add-items-editor__head-actions[data-v-3f29cff8]{display:flex;gap:8px}.add-items-editor__list[data-v-3f29cff8]{display:flex;flex-direction:column;gap:10px}.add-items-editor__row[data-v-3f29cff8]{display:grid;grid-template-columns:auto 1fr 1fr 1.4fr auto;gap:10px;align-items:center}.add-items-editor__drag[data-v-3f29cff8]{width:32px;height:32px;border:0;border-radius:8px;background:#88abda1f;color:var(--n-text-color-3);cursor:grab}.add-items-editor__drag[data-v-3f29cff8]:active{cursor:grabbing}.add-items-editor__ghost[data-v-3f29cff8]{opacity:.45}.add-items-preview[data-v-3f29cff8]{margin-top:14px;padding:14px;border:1px dashed var(--n-border-color);border-radius:14px;background:#88abda0a}.add-items-preview__title[data-v-3f29cff8]{font-size:13px;color:var(--n-text-color-3);margin-bottom:10px}.add-items-preview__panel[data-v-3f29cff8]{display:flex;align-items:center;gap:12px;margin-top:12px}.add-items-preview__panel[data-v-3f29cff8]:first-of-type{margin-top:0}.add-items-preview__mode[data-v-3f29cff8]{width:40px;flex-shrink:0;font-size:12px;color:var(--n-text-color-3)}.add-items-preview__trigger[data-v-3f29cff8]{width:42px;height:42px;border-radius:12px;background:#fff;border:1px solid var(--n-border-color);display:inline-flex;align-items:center;justify-content:center;color:var(--n-text-color-2);box-shadow:0 8px 20px #11182714}.add-items-preview__trigger--dark[data-v-3f29cff8]{background:#232734;border-color:#ffffff14;color:#d8dee9;box-shadow:0 12px 28px #00000047}.add-items-preview__menu[data-v-3f29cff8]{flex:1;min-width:0;padding:10px;border-radius:14px;background:#fff;border:1px solid var(--n-border-color)}.add-items-preview__menu--dark[data-v-3f29cff8]{background:#232734;border-color:#ffffff14}.add-items-preview__list[data-v-3f29cff8]{display:flex;flex-direction:column;gap:6px}.add-items-preview__item[data-v-3f29cff8]{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:10px;background:#88abda0f;color:var(--n-text-color-2);text-decoration:none}.add-items-preview__item i[data-v-3f29cff8]{width:18px;text-align:center;color:var(--n-primary-color)}.add-items-preview__item--dark[data-v-3f29cff8]{background:#ffffff0d;color:#e5e7eb}.add-items-preview__item--dark i[data-v-3f29cff8]{color:#9fc0ec}.add-items-preview__empty[data-v-3f29cff8]{font-size:13px;color:var(--n-text-color-3);padding:10px 12px}.add-items-preview__empty--dark[data-v-3f29cff8]{color:#e5e7ebb8} diff --git a/assets/admin/build/FooterSettings.css b/assets/admin/build/FooterSettings.css new file mode 100644 index 00000000..f7e50097 --- /dev/null +++ b/assets/admin/build/FooterSettings.css @@ -0,0 +1 @@ +.aksrt-modal-footer[data-v-75e6f4e1]{display:flex;justify-content:flex-end;gap:10px}.aksrt-media-row[data-v-75e6f4e1]{display:flex;align-items:center;gap:8px;width:100%}.aksrt-media-preview[data-v-75e6f4e1]{display:block;max-width:200px;max-height:80px;margin-top:8px;border-radius:6px;border:1px solid var(--n-border-color, #e0e0e6);object-fit:contain}.aksrt-media-preview--sm[data-v-75e6f4e1]{max-width:64px;max-height:64px}.aksrt-mini-img-row[data-v-75e6f4e1]{padding:10px 0;border-bottom:1px solid var(--n-border-color, #e0e0e6)}.aksrt-mini-img-row[data-v-75e6f4e1]:last-child{border-bottom:none} diff --git a/assets/admin/build/FooterSettings.pT4aCC_F.js b/assets/admin/build/FooterSettings.pT4aCC_F.js new file mode 100644 index 00000000..b11f257a --- /dev/null +++ b/assets/admin/build/FooterSettings.pT4aCC_F.js @@ -0,0 +1 @@ +import{a as P}from"./shared-api.D5_fnN32.js";import{P as Be}from"./PageHeader.Di3JTPjc.js";import{o as se}from"./media.BHNcAGK-.js";import{_ as Re}from"./index.js";import{u as je,a as He,B as r,b as ie,c as Pe}from"./vendor-naive.BuHWlEgf.js";import{o as Ne,X as q,a4 as t,a3 as l,r as y,a1 as c,e as N,W as m,N as _,f as d,Y as s,a5 as I,a2 as h,Z as Ie,F as Se,R as Ve,k}from"./vendor-vue.Bykizn0M.js";import"./vendor-misc.1adHN6i_.js";const Oe={class:"aksrt-page-container content-page"},Qe={class:"aksrt-media-row"},De=["src"],Ee={class:"aksrt-media-row"},Ge=["src"],Xe={class:"aksrt-card-header-row"},Ye={class:"aksrt-media-row"},Ze=["src"],We={class:"aksrt-card-header-row"},Je={class:"aksrt-card-header-row"},Ke={class:"aksrt-card-header-row"},et={class:"aksrt-card-header-row"},tt={class:"aksrt-card-header-row__left"},ot={class:"aksrt-card-header-row__title"},lt={class:"aksrt-card-header-row"},at={class:"aksrt-media-row",style:{flex:"1"}},nt=["src","alt"],st={class:"aksrt-form-actions"},it={class:"aksrt-modal-footer"},rt={class:"aksrt-modal-footer"},dt={class:"aksrt-modal-footer"},ut={class:"aksrt-modal-footer"},_t={__name:"FooterSettings",setup(ct){const w=je(),O=He(),Q=y(!0),S=y(!1),K=y("contacts"),o=N({contacts:[],quick_links:[],more_links:[],hot_categories:5,copyright_text:"",layout_template:"template_1",footer_t1_m_s:["pc","mobile"],footer_t1_img:"",footer_t1_img_dark:"",footer_t1_t:"",fcode_t1_code:"",footer_contact_wechat_img:"",footer_contact_qq:"",footer_contact_weibo:"",footer_contact_email:"",footer_contact_m_s:["pc","mobile"],footer_contact_more:[],fcode_t2_code_1:"",fcode_t2_code_2:"",footer_mini_img_m_s:["pc","mobile"],footer_mini_img:[],fcode_customize_code:""}),L=y(!1),M=y(-1),f=N({icon:"",url:"",title:"",enabled:!0});let ee=0;const te=[{label:"GitHub",value:"github"},{label:"X (Twitter)",value:"x"},{label:"Email",value:"email"},{label:"微信",value:"wechat"},{label:"QQ",value:"qq"},{label:"微博",value:"weibo"},{label:"Telegram",value:"telegram"},{label:"Discord",value:"discord"},{label:"Bilibili",value:"bilibili"},{label:"LinkedIn",value:"linkedin"},{label:"Facebook",value:"facebook"},{label:"YouTube",value:"youtube"},{label:"Instagram",value:"instagram"},{label:"RSS / 网站",value:"web"}];function re(){Object.assign(f,{icon:"",url:"",title:"",enabled:!0}),M.value=-1,L.value=!0}function de(n,e){Object.assign(f,{icon:n.icon,url:n.url,title:n.title,enabled:n.enabled}),M.value=e,L.value=!0}function ue(){if(!f.icon||!f.url){w.warning("请填写图标类型和链接地址");return}const n={_uid:M.value>=0?o.contacts[M.value]._uid:++ee,icon:f.icon,url:f.url,title:f.title,enabled:f.enabled};M.value>=0?o.contacts[M.value]=n:o.contacts.push(n),L.value=!1}function _e(n){O.warning({title:"确认删除",content:"确定删除这个联系方式图标吗?",positiveText:"删除",negativeText:"取消",onPositiveClick:()=>{o.contacts.splice(n,1)}})}const ce=[{title:"平台",key:"icon",width:120,render:n=>{var e;return((e=te.find(p=>p.value===n.icon))==null?void 0:e.label)||n.icon}},{title:"链接",key:"url",ellipsis:{tooltip:!0}},{title:"提示",key:"title",ellipsis:{tooltip:!0},className:"aksrt-table-mobile-hide"},{title:"状态",key:"enabled",width:80,render:n=>k(ie,{size:"small",type:n.enabled?"success":"default"},{default:()=>n.enabled?"启用":"禁用"})},{title:"操作",key:"actions",width:130,render:(n,e)=>k("div",{style:"display:flex;gap:6px;"},[k(r,{size:"tiny",onClick:()=>de(o.contacts[e],e)},{default:()=>"编辑"}),k(r,{size:"tiny",type:"error",quaternary:!0,onClick:()=>_e(e)},{default:()=>"删除"})])}],T=y(!1),D=y("quick_links"),E=y(-1),g=N({id:"",name:"",url:"",enabled:!0,sort_order:0});function G(n,e=null,p=-1){D.value=n,E.value=p,Object.assign(g,e||{id:"",name:"",url:"",enabled:!0,sort_order:n==="quick_links"?o.quick_links.length:o.more_links.length}),T.value=!0}function me(){if(!g.name||!g.url){w.warning("请填写链接名称和链接地址");return}const n=o[D.value],e={id:g.id||`link_${Date.now()}`,name:g.name,url:g.url,enabled:g.enabled,sort_order:g.sort_order??n.length};E.value>=0?n[E.value]=e:n.push(e),T.value=!1}function fe(n,e){O.warning({title:"确认删除",content:"确定删除这个链接吗?",positiveText:"删除",negativeText:"取消",onPositiveClick:()=>{o[n].splice(e,1)}})}function oe(n){return[{title:"名称",key:"name",width:160},{title:"URL",key:"url",ellipsis:{tooltip:!0}},{title:"状态",key:"enabled",width:80,render:e=>k(ie,{size:"small",type:e.enabled?"success":"default"},{default:()=>e.enabled?"启用":"禁用"})},{title:"操作",key:"actions",width:130,render:(e,p)=>k("div",{style:"display:flex;gap:6px;"},[k(r,{size:"tiny",onClick:()=>G(n,o[n][p],p)},{default:()=>"编辑"}),k(r,{size:"tiny",type:"error",quaternary:!0,onClick:()=>fe(n,p)},{default:()=>"删除"})])}]}const $=y([]),A=y(!1),X=y(!1),v=N({name:"",url:"",logo:"",description:""}),pe=[{title:"Logo",key:"logo",width:60,render:n=>n.logo?k(Pe,{src:n.logo,size:32,round:!0}):k("span",{style:"color:#bbb;font-size:12px;"},"—")},{title:"名称",key:"name",width:140,ellipsis:{tooltip:!0}},{title:"URL",key:"url",ellipsis:{tooltip:!0}},{title:"描述",key:"description",ellipsis:{tooltip:!0},className:"aksrt-table-mobile-hide"},{title:"操作",key:"actions",width:90,render:n=>k(r,{quaternary:!0,type:"error",size:"tiny",onClick:()=>ge(n)},{default:()=>"删除"})}];function ve(){Object.assign(v,{name:"",url:"",logo:"",description:""}),A.value=!0}async function Y(){try{const n=await P.getFriendLinks();n.code==="success"&&($.value=n.data||[])}catch(n){console.error("[FriendLinks] load failed:",n)}}async function ke(){if(!v.name||!v.url){w.warning("请填写站点名称和 URL");return}X.value=!0;try{const n=await P.addFriendLink({name:v.name,url:v.url,logo:v.logo,description:v.description,sort_order:$.value.length});n.code==="success"&&(w.success(n.message||"已添加"),A.value=!1,await Y())}catch(n){w.error(n.message||"添加失败")}finally{X.value=!1}}function ge(n){O.warning({title:"确认删除",content:`确定删除友链「${n.name}」?`,positiveText:"删除",negativeText:"取消",onPositiveClick:async()=>{try{await P.deleteFriendLink(n.id),w.success("已删除"),await Y()}catch(e){w.error(e.message||"删除失败")}}})}async function we(){Q.value=!0;try{const[n]=await Promise.all([P.getFooterSettings(),Y()]);if(n.code==="success"&&n.data){const e=n.data;o.contacts=(e.contacts||[]).map(p=>({...p,_uid:++ee})),o.quick_links=e.quick_links||[],o.more_links=e.more_links||[],o.hot_categories=e.hot_categories??5,o.copyright_text=e.copyright_text||"",o.layout_template="template_1",o.footer_t1_m_s=Array.isArray(e.footer_t1_m_s)?e.footer_t1_m_s:["pc","mobile"],o.footer_t1_img=e.footer_t1_img||"",o.footer_t1_img_dark=e.footer_t1_img_dark||"",o.footer_t1_t=e.footer_t1_t||"",o.fcode_t1_code=e.fcode_t1_code||"",o.footer_contact_wechat_img=e.footer_contact_wechat_img||"",o.footer_contact_qq=e.footer_contact_qq||"",o.footer_contact_weibo=e.footer_contact_weibo||"",o.footer_contact_email=e.footer_contact_email||"",o.footer_contact_m_s=Array.isArray(e.footer_contact_m_s)?e.footer_contact_m_s:["pc","mobile"],o.footer_contact_more=Array.isArray(e.footer_contact_more)?e.footer_contact_more:[],o.fcode_t2_code_1=e.fcode_t2_code_1||"",o.fcode_t2_code_2=e.fcode_t2_code_2||"",o.footer_mini_img_m_s=Array.isArray(e.footer_mini_img_m_s)?e.footer_mini_img_m_s:["pc","mobile"],o.footer_mini_img=Array.isArray(e.footer_mini_img)?e.footer_mini_img:[],o.fcode_customize_code=e.fcode_customize_code||""}}catch(n){console.error("[Footer] load failed:",n),w.error((n==null?void 0:n.message)||"加载失败")}finally{Q.value=!1}}async function le(){S.value=!0;try{const n={contacts:o.contacts.map(({_uid:p,...z})=>z),quick_links:o.quick_links,more_links:o.more_links,hot_categories:o.hot_categories,copyright_text:o.copyright_text,layout_template:o.layout_template,footer_t1_m_s:o.footer_t1_m_s,footer_t1_img:o.footer_t1_img,footer_t1_img_dark:o.footer_t1_img_dark,footer_t1_t:o.footer_t1_t,fcode_t1_code:o.fcode_t1_code,footer_contact_wechat_img:o.footer_contact_wechat_img,footer_contact_qq:o.footer_contact_qq,footer_contact_weibo:o.footer_contact_weibo,footer_contact_email:o.footer_contact_email,footer_contact_m_s:o.footer_contact_m_s,footer_contact_more:o.footer_contact_more,fcode_t2_code_1:o.fcode_t2_code_1,fcode_t2_code_2:o.fcode_t2_code_2,footer_mini_img_m_s:o.footer_mini_img_m_s,footer_mini_img:o.footer_mini_img,fcode_customize_code:o.fcode_customize_code},e=await P.saveFooterSettings(n);e.code==="success"?w.success(e.message||"保存成功"):w.error(e.message||"保存失败")}catch(n){console.error("[Footer] save failed:",n),w.error((n==null?void 0:n.message)||"保存失败")}finally{S.value=!1}}async function Z(n){try{const e=await se({title:"选择图片"});e!=null&&e.url&&(o[n]=e.url)}catch(e){e.message&&w.warning(e.message)}}function ye(){o.footer_contact_more.push({desc:"",icon:"",link:"",img:""})}function be(n){o.footer_contact_more.splice(n,1)}const B=y(!1),W=y(-1),b=N({desc:"",icon:"",link:"",img:""});function he(n,e){Object.assign(b,n),W.value=e,B.value=!0}function xe(){const n={...b};W.value>=0&&(o.footer_contact_more[W.value]=n),B.value=!1}const Ce=[{title:"描述",key:"desc",width:120},{title:"图标",key:"icon",width:100},{title:"链接",key:"link",ellipsis:{tooltip:!0}},{title:"图片",key:"img",width:60,render:n=>n.img?k("img",{src:n.img,style:"width:32px;height:32px;object-fit:cover;border-radius:4px;"}):k("span",{style:"color:#bbb;"},"—")},{title:"操作",key:"actions",width:130,render:(n,e)=>k("div",{style:"display:flex;gap:6px;"},[k(r,{size:"tiny",onClick:()=>he(o.footer_contact_more[e],e)},{default:()=>"编辑"}),k(r,{size:"tiny",type:"error",quaternary:!0,onClick:()=>be(e)},{default:()=>"删除"})])}];function Ue(){o.footer_mini_img.length<4&&o.footer_mini_img.push({text:"",img:""})}function ze(n){o.footer_mini_img.splice(n,1)}async function qe(n){try{const e=await se({title:"选择二维码图片"});e!=null&&e.url&&(o.footer_mini_img[n].img=e.url)}catch(e){e.message&&w.warning(e.message)}}return Ne(we),(n,e)=>{const p=c("n-checkbox"),z=c("n-space"),J=c("n-checkbox-group"),i=c("n-form-item"),u=c("n-input"),x=c("n-form"),C=c("n-card"),U=c("n-tab-pane"),R=c("n-data-table"),F=c("n-empty"),ae=c("n-divider"),Le=c("n-radio-button"),Me=c("n-radio-group"),Fe=c("n-input-number"),Te=c("n-tabs"),$e=c("n-spin"),Ae=c("n-select"),ne=c("n-switch"),V=c("n-modal");return m(),q("div",Oe,[t(Be,{title:"页脚配置",desc:"管理页脚区域的联系方式、快速链接、更多链接、友情链接和版权信息。"},{actions:l(()=>[t(_(r),{type:"primary",loading:S.value,onClick:le},{default:l(()=>[...e[50]||(e[50]=[d("保存",-1)])]),_:1},8,["loading"])]),_:1}),t($e,{show:Q.value,style:{width:"100%","min-height":"200px"}},{default:l(()=>[t(Te,{value:K.value,"onUpdate:value":e[26]||(e[26]=a=>K.value=a),type:"line",animated:"",class:"aksrt-tabs"},{default:l(()=>[t(U,{name:"brand",tab:"品牌与Logo"},{default:l(()=>[t(C,{class:"aksrt-section-card"},{default:l(()=>[e[55]||(e[55]=s("div",{class:"aksrt-section-header"},[s("span",{class:"section-icon"},[s("svg",{xmlns:"http://www.w3.org/2000/svg",width:"17",height:"17",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[s("path",{d:"M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"}),s("polyline",{points:"9 22 9 12 15 12 15 22"})])]),s("h3",null,"品牌列(第一列)")],-1)),t(x,{model:o,"label-placement":"left","label-width":"160",class:"aksrt-form"},{default:l(()=>[t(i,{label:"显示设备"},{default:l(()=>[t(J,{value:o.footer_t1_m_s,"onUpdate:value":e[0]||(e[0]=a=>o.footer_t1_m_s=a)},{default:l(()=>[t(z,null,{default:l(()=>[t(p,{value:"pc",label:"PC"}),t(p,{value:"mobile",label:"移动端"})]),_:1})]),_:1},8,["value"])]),_:1}),t(i,{label:"页脚 Logo(日间)"},{default:l(()=>[s("div",Qe,[t(u,{value:o.footer_t1_img,"onUpdate:value":e[1]||(e[1]=a=>o.footer_t1_img=a),placeholder:"图片 URL",readonly:"",style:{flex:"1"}},null,8,["value"]),t(_(r),{size:"small",onClick:e[2]||(e[2]=a=>Z("footer_t1_img"))},{default:l(()=>[...e[51]||(e[51]=[d("选择",-1)])]),_:1}),t(_(r),{size:"small",quaternary:"",type:"error",disabled:!o.footer_t1_img,onClick:e[3]||(e[3]=a=>o.footer_t1_img="")},{default:l(()=>[...e[52]||(e[52]=[d("清除",-1)])]),_:1},8,["disabled"])]),o.footer_t1_img?(m(),q("img",{key:0,src:o.footer_t1_img,class:"aksrt-media-preview",alt:"footer logo day"},null,8,De)):I("",!0)]),_:1}),t(i,{label:"页脚 Logo(夜间)"},{default:l(()=>[s("div",Ee,[t(u,{value:o.footer_t1_img_dark,"onUpdate:value":e[4]||(e[4]=a=>o.footer_t1_img_dark=a),placeholder:"图片 URL",readonly:"",style:{flex:"1"}},null,8,["value"]),t(_(r),{size:"small",onClick:e[5]||(e[5]=a=>Z("footer_t1_img_dark"))},{default:l(()=>[...e[53]||(e[53]=[d("选择",-1)])]),_:1}),t(_(r),{size:"small",quaternary:"",type:"error",disabled:!o.footer_t1_img_dark,onClick:e[6]||(e[6]=a=>o.footer_t1_img_dark="")},{default:l(()=>[...e[54]||(e[54]=[d("清除",-1)])]),_:1},8,["disabled"])]),o.footer_t1_img_dark?(m(),q("img",{key:0,src:o.footer_t1_img_dark,class:"aksrt-media-preview",alt:"footer logo night"},null,8,Ge)):I("",!0)]),_:1}),t(i,{label:"品牌标题"},{default:l(()=>[t(u,{value:o.footer_t1_t,"onUpdate:value":e[7]||(e[7]=a=>o.footer_t1_t=a),placeholder:"留空则使用站点名称"},null,8,["value"])]),_:1}),t(i,{label:"品牌列自定义代码"},{default:l(()=>[t(u,{value:o.fcode_t1_code,"onUpdate:value":e[8]||(e[8]=a=>o.fcode_t1_code=a),type:"textarea",rows:3,placeholder:"可选,显示在品牌区域底部"},null,8,["value"])]),_:1})]),_:1},8,["model"])]),_:1})]),_:1}),t(U,{name:"contacts",tab:"联系方式"},{default:l(()=>[t(C,{class:"aksrt-section-card"},{header:l(()=>[s("div",Xe,[e[57]||(e[57]=s("div",{class:"aksrt-card-header-row__left"},[s("span",{class:"header-icon"},[s("svg",{xmlns:"http://www.w3.org/2000/svg",width:"17",height:"17",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[s("rect",{x:"5",y:"2",width:"14",height:"20",rx:"2",ry:"2"}),s("line",{x1:"12",y1:"18",x2:"12.01",y2:"18"})])]),s("strong",{class:"aksrt-card-header-row__title"},"联系方式图标")],-1)),t(_(r),{type:"primary",size:"small",onClick:re},{default:l(()=>[...e[56]||(e[56]=[d("+ 添加图标",-1)])]),_:1})])]),default:l(()=>[e[65]||(e[65]=s("p",{class:"section-desc"},"页脚中的社交平台或联系入口。",-1)),o.contacts.length?(m(),h(R,{key:0,columns:ce,data:o.contacts,"row-key":a=>a._uid,bordered:!1,size:"small"},null,8,["data","row-key"])):(m(),h(F,{key:1,description:"暂无联系方式图标"})),t(ae,null,{default:l(()=>[...e[58]||(e[58]=[d("标准联系字段",-1)])]),_:1}),t(x,{model:o,"label-placement":"left","label-width":"160",class:"aksrt-form"},{default:l(()=>[t(i,{label:"显示设备"},{default:l(()=>[t(J,{value:o.footer_contact_m_s,"onUpdate:value":e[9]||(e[9]=a=>o.footer_contact_m_s=a)},{default:l(()=>[t(z,null,{default:l(()=>[t(p,{value:"pc",label:"PC"}),t(p,{value:"mobile",label:"移动端"})]),_:1})]),_:1},8,["value"])]),_:1}),t(i,{label:"微信二维码"},{default:l(()=>[s("div",Ye,[t(u,{value:o.footer_contact_wechat_img,"onUpdate:value":e[10]||(e[10]=a=>o.footer_contact_wechat_img=a),placeholder:"图片 URL",readonly:"",style:{flex:"1"}},null,8,["value"]),t(_(r),{size:"small",onClick:e[11]||(e[11]=a=>Z("footer_contact_wechat_img"))},{default:l(()=>[...e[59]||(e[59]=[d("选择",-1)])]),_:1}),t(_(r),{size:"small",quaternary:"",type:"error",disabled:!o.footer_contact_wechat_img,onClick:e[12]||(e[12]=a=>o.footer_contact_wechat_img="")},{default:l(()=>[...e[60]||(e[60]=[d("清除",-1)])]),_:1},8,["disabled"])]),o.footer_contact_wechat_img?(m(),q("img",{key:0,src:o.footer_contact_wechat_img,class:"aksrt-media-preview",alt:"wechat qr"},null,8,Ze)):I("",!0)]),_:1}),t(i,{label:"QQ"},{default:l(()=>[t(u,{value:o.footer_contact_qq,"onUpdate:value":e[13]||(e[13]=a=>o.footer_contact_qq=a),placeholder:"QQ 号或链接"},null,8,["value"])]),_:1}),t(i,{label:"微博"},{default:l(()=>[t(u,{value:o.footer_contact_weibo,"onUpdate:value":e[14]||(e[14]=a=>o.footer_contact_weibo=a),placeholder:"微博链接"},null,8,["value"])]),_:1}),t(i,{label:"邮箱"},{default:l(()=>[t(u,{value:o.footer_contact_email,"onUpdate:value":e[15]||(e[15]=a=>o.footer_contact_email=a),placeholder:"邮箱地址"},null,8,["value"])]),_:1}),t(i,{label:"链接 HTML(fcode_t2_code_1)"},{default:l(()=>[t(u,{value:o.fcode_t2_code_1,"onUpdate:value":e[16]||(e[16]=a=>o.fcode_t2_code_1=a),type:"textarea",rows:3,placeholder:'推荐直接写 首页 等链接 HTML;为空时回退快速链接/友链/热门分类'},null,8,["value"])]),_:1}),t(i,{label:"链接下方自定义代码"},{default:l(()=>[t(u,{value:o.fcode_t2_code_2,"onUpdate:value":e[17]||(e[17]=a=>o.fcode_t2_code_2=a),type:"textarea",rows:2,placeholder:"备案号等 HTML"},null,8,["value"])]),_:1})]),_:1},8,["model"]),t(ae,null,{default:l(()=>[...e[61]||(e[61]=[d("更多联系项",-1)])]),_:1}),t(C,{class:"aksrt-section-card",embedded:""},{header:l(()=>[s("div",We,[e[63]||(e[63]=s("strong",{class:"aksrt-card-header-row__title"},"扩展联系项",-1)),t(_(r),{type:"primary",size:"small",onClick:ye},{default:l(()=>[...e[62]||(e[62]=[d("+ 添加",-1)])]),_:1})])]),default:l(()=>[e[64]||(e[64]=s("p",{class:"section-desc"},"每项含描述、图标、链接、图片(hover 显示),用于补充标准联系方式。",-1)),o.footer_contact_more.length?(m(),h(R,{key:0,columns:Ce,data:o.footer_contact_more,"row-key":(a,j)=>j,bordered:!1,size:"small"},null,8,["data","row-key"])):(m(),h(F,{key:1,description:"暂无扩展联系项"}))]),_:1})]),_:1})]),_:1}),t(U,{name:"quick",tab:"快速链接"},{default:l(()=>[t(C,{class:"aksrt-section-card"},{header:l(()=>[s("div",Je,[e[67]||(e[67]=s("div",{class:"aksrt-card-header-row__left"},[s("span",{class:"header-icon"},[s("svg",{xmlns:"http://www.w3.org/2000/svg",width:"17",height:"17",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[s("path",{d:"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}),s("path",{d:"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"})])]),s("strong",{class:"aksrt-card-header-row__title"},"快速链接")],-1)),t(_(r),{type:"primary",size:"small",onClick:e[18]||(e[18]=a=>G("quick_links"))},{default:l(()=>[...e[66]||(e[66]=[d("+ 添加链接",-1)])]),_:1})])]),default:l(()=>[e[68]||(e[68]=s("p",{class:"section-desc"},"页脚第二列的常用导航链接。",-1)),o.quick_links.length?(m(),h(R,{key:0,columns:oe("quick_links"),data:o.quick_links,"row-key":a=>a.id,bordered:!1,size:"small"},null,8,["columns","data","row-key"])):(m(),h(F,{key:1,description:"暂无快速链接"}))]),_:1})]),_:1}),t(U,{name:"more",tab:"更多链接"},{default:l(()=>[t(C,{class:"aksrt-section-card"},{header:l(()=>[s("div",Ke,[e[70]||(e[70]=s("div",{class:"aksrt-card-header-row__left"},[s("span",{class:"header-icon"},[s("svg",{xmlns:"http://www.w3.org/2000/svg",width:"17",height:"17",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[s("path",{d:"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}),s("path",{d:"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"})])]),s("strong",{class:"aksrt-card-header-row__title"},"更多链接")],-1)),t(_(r),{type:"primary",size:"small",onClick:e[19]||(e[19]=a=>G("more_links"))},{default:l(()=>[...e[69]||(e[69]=[d("+ 添加链接",-1)])]),_:1})])]),default:l(()=>[e[71]||(e[71]=s("p",{class:"section-desc"},"页脚补充链接区域。",-1)),o.more_links.length?(m(),h(R,{key:0,columns:oe("more_links"),data:o.more_links,"row-key":a=>a.id,bordered:!1,size:"small"},null,8,["columns","data","row-key"])):(m(),h(F,{key:1,description:"暂无更多链接"}))]),_:1})]),_:1}),t(U,{name:"friends",tab:"友情链接"},{default:l(()=>[t(C,{class:"aksrt-section-card"},{header:l(()=>[s("div",et,[s("div",tt,[e[72]||(e[72]=s("span",{class:"header-icon"},[s("svg",{xmlns:"http://www.w3.org/2000/svg",width:"17",height:"17",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[s("path",{d:"M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2"}),s("circle",{cx:"9",cy:"7",r:"4"}),s("path",{d:"M23 21v-2a4 4 0 0 0-3-3.87"}),s("path",{d:"M16 3.13a4 4 0 0 1 0 7.75"})])],-1)),s("strong",ot,"友情链接 ("+Ie($.value.length)+")",1)]),t(_(r),{type:"primary",size:"small",onClick:e[20]||(e[20]=a=>ve())},{default:l(()=>[...e[73]||(e[73]=[d("+ 添加友链",-1)])]),_:1})])]),default:l(()=>[e[74]||(e[74]=s("p",{class:"section-desc"},"站点友情链接列表,支持 Logo 头像、名称、URL 与简短描述。",-1)),$.value.length?(m(),h(R,{key:0,columns:pe,data:$.value,"row-key":a=>a.id,bordered:!1,size:"small"},null,8,["data","row-key"])):(m(),h(F,{key:1,description:"暂无友情链接"}))]),_:1})]),_:1}),t(U,{name:"mini_qr",tab:"二维码图片组"},{default:l(()=>[t(C,{class:"aksrt-section-card"},{header:l(()=>[s("div",lt,[e[76]||(e[76]=s("div",{class:"aksrt-card-header-row__left"},[s("span",{class:"header-icon"},[s("svg",{xmlns:"http://www.w3.org/2000/svg",width:"17",height:"17",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[s("rect",{x:"3",y:"3",width:"7",height:"7"}),s("rect",{x:"14",y:"3",width:"7",height:"7"}),s("rect",{x:"14",y:"14",width:"7",height:"7"}),s("rect",{x:"3",y:"14",width:"7",height:"7"})])]),s("strong",{class:"aksrt-card-header-row__title"},"二维码图片组(最多 4 个)")],-1)),t(_(r),{type:"primary",size:"small",disabled:o.footer_mini_img.length>=4,onClick:Ue},{default:l(()=>[...e[75]||(e[75]=[d("+ 添加",-1)])]),_:1},8,["disabled"])])]),default:l(()=>[e[79]||(e[79]=s("p",{class:"section-desc"},"显示在页脚第三列区域,每项含文字描述和二维码图片。",-1)),t(x,{model:o,"label-placement":"left","label-width":"120",class:"aksrt-form"},{default:l(()=>[t(i,{label:"显示设备"},{default:l(()=>[t(J,{value:o.footer_mini_img_m_s,"onUpdate:value":e[21]||(e[21]=a=>o.footer_mini_img_m_s=a)},{default:l(()=>[t(z,null,{default:l(()=>[t(p,{value:"pc",label:"PC"}),t(p,{value:"mobile",label:"移动端"})]),_:1})]),_:1},8,["value"])]),_:1})]),_:1},8,["model"]),(m(!0),q(Se,null,Ve(o.footer_mini_img,(a,j)=>(m(),q("div",{key:j,class:"aksrt-mini-img-row"},[t(z,{align:"center",size:12,style:{width:"100%"}},{default:l(()=>[t(u,{value:a.text,"onUpdate:value":H=>a.text=H,placeholder:"文字描述",style:{width:"160px"}},null,8,["value","onUpdate:value"]),s("div",at,[t(u,{value:a.img,"onUpdate:value":H=>a.img=H,placeholder:"二维码图片 URL",readonly:"",style:{flex:"1"}},null,8,["value","onUpdate:value"]),t(_(r),{size:"small",onClick:H=>qe(j)},{default:l(()=>[...e[77]||(e[77]=[d("选择",-1)])]),_:1},8,["onClick"])]),t(_(r),{size:"small",quaternary:"",type:"error",onClick:H=>ze(j)},{default:l(()=>[...e[78]||(e[78]=[d("删除",-1)])]),_:1},8,["onClick"])]),_:2},1024),a.img?(m(),q("img",{key:0,src:a.img,class:"aksrt-media-preview aksrt-media-preview--sm",alt:a.text||"qr"},null,8,nt)):I("",!0)]))),128)),o.footer_mini_img.length?I("",!0):(m(),h(F,{key:0,description:"暂无二维码图片"}))]),_:1})]),_:1}),t(U,{name:"custom_code",tab:"自定义代码"},{default:l(()=>[t(C,{class:"aksrt-section-card"},{default:l(()=>[e[80]||(e[80]=s("div",{class:"aksrt-section-header"},[s("span",{class:"section-icon"},[s("svg",{xmlns:"http://www.w3.org/2000/svg",width:"17",height:"17",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[s("polyline",{points:"16 18 22 12 16 6"}),s("polyline",{points:"8 6 2 12 8 18"})])]),s("h3",null,"底部自定义代码")],-1)),e[81]||(e[81]=s("p",{class:"section-desc"},"插入在页脚底部区域(版权信息之后),支持 HTML。",-1)),t(x,{model:o,"label-placement":"top",class:"aksrt-form"},{default:l(()=>[t(i,{label:"fcode_customize_code"},{default:l(()=>[t(u,{value:o.fcode_customize_code,"onUpdate:value":e[22]||(e[22]=a=>o.fcode_customize_code=a),type:"textarea",rows:6,placeholder:"自定义 HTML 代码,显示在页脚最底部"},null,8,["value"])]),_:1})]),_:1},8,["model"])]),_:1})]),_:1}),t(U,{name:"misc",tab:"版权与杂项"},{default:l(()=>[t(C,{class:"aksrt-section-card"},{default:l(()=>[e[84]||(e[84]=s("div",{class:"aksrt-section-header"},[s("span",{class:"section-icon"},[s("svg",{xmlns:"http://www.w3.org/2000/svg",width:"17",height:"17",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[s("circle",{cx:"12",cy:"12",r:"3"}),s("path",{d:"M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1 0 2.83 2 2 0 0 1-2.83 0l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-2 2 2 2 0 0 1-2-2v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 0 1-2.83 0 2 2 0 0 1 0-2.83l.06-.06A1.65 1.65 0 0 0 4.68 15a1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1-2-2 2 2 0 0 1 2-2h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 0 1 0-2.83 2 2 0 0 1 2.83 0l.06.06A1.65 1.65 0 0 0 9 4.68a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 2-2 2 2 0 0 1 2 2v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 0 1 2.83 0 2 2 0 0 1 0 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82V9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 2 2 2 2 0 0 1-2 2h-.09a1.65 1.65 0 0 0-1.51 1z"})])]),s("h3",null,"其他设置")],-1)),t(x,{model:o,"label-placement":"left","label-width":"140",class:"aksrt-form"},{default:l(()=>[t(i,{label:"页脚布局模板"},{default:l(()=>[t(Me,{value:o.layout_template,"onUpdate:value":e[23]||(e[23]=a=>o.layout_template=a)},{default:l(()=>[t(Le,{value:"template_1"},{default:l(()=>[...e[82]||(e[82]=[d("模板一(Zibll)",-1)])]),_:1})]),_:1},8,["value"])]),_:1}),t(i,{label:"热门分类数量"},{default:l(()=>[t(z,{align:"center",size:10},{default:l(()=>[t(Fe,{value:o.hot_categories,"onUpdate:value":e[24]||(e[24]=a=>o.hot_categories=a),min:1,max:20,style:{width:"120px"}},null,8,["value"]),e[83]||(e[83]=s("span",{class:"aksrt-hint-text"},"范围 1 - 20",-1))]),_:1})]),_:1}),t(i,{label:"自定义版权文案"},{default:l(()=>[t(u,{value:o.copyright_text,"onUpdate:value":e[25]||(e[25]=a=>o.copyright_text=a),type:"textarea",rows:3,placeholder:"留空则使用默认版权信息"},null,8,["value"])]),_:1})]),_:1},8,["model"])]),_:1})]),_:1})]),_:1},8,["value"]),s("div",st,[t(_(r),{type:"primary",loading:S.value,onClick:le},{default:l(()=>[...e[85]||(e[85]=[d("保存页脚配置",-1)])]),_:1},8,["loading"])])]),_:1},8,["show"]),t(V,{show:L.value,"onUpdate:show":e[32]||(e[32]=a=>L.value=a),"mask-closable":!1,preset:"card",title:"编辑联系方式图标",class:"aksrt-modal-card"},{footer:l(()=>[s("div",it,[t(_(r),{onClick:e[31]||(e[31]=a=>L.value=!1)},{default:l(()=>[...e[86]||(e[86]=[d("取消",-1)])]),_:1}),t(_(r),{type:"primary",onClick:ue},{default:l(()=>[...e[87]||(e[87]=[d("保存",-1)])]),_:1})])]),default:l(()=>[t(x,{model:f,"label-placement":"top",class:"aksrt-form"},{default:l(()=>[t(i,{label:"图标类型"},{default:l(()=>[t(Ae,{value:f.icon,"onUpdate:value":e[27]||(e[27]=a=>f.icon=a),options:te,placeholder:"选择图标"},null,8,["value"])]),_:1}),t(i,{label:"链接地址"},{default:l(()=>[t(u,{value:f.url,"onUpdate:value":e[28]||(e[28]=a=>f.url=a),placeholder:"https://..."},null,8,["value"])]),_:1}),t(i,{label:"标题提示"},{default:l(()=>[t(u,{value:f.title,"onUpdate:value":e[29]||(e[29]=a=>f.title=a),placeholder:"鼠标悬停提示文案"},null,8,["value"])]),_:1}),t(i,{label:"启用状态"},{default:l(()=>[t(ne,{value:f.enabled,"onUpdate:value":e[30]||(e[30]=a=>f.enabled=a)},null,8,["value"])]),_:1})]),_:1},8,["model"])]),_:1},8,["show"]),t(V,{show:T.value,"onUpdate:show":e[37]||(e[37]=a=>T.value=a),"mask-closable":!1,preset:"card",title:D.value==="quick_links"?"编辑快速链接":"编辑更多链接",class:"aksrt-modal-card"},{footer:l(()=>[s("div",rt,[t(_(r),{onClick:e[36]||(e[36]=a=>T.value=!1)},{default:l(()=>[...e[88]||(e[88]=[d("取消",-1)])]),_:1}),t(_(r),{type:"primary",onClick:me},{default:l(()=>[...e[89]||(e[89]=[d("保存",-1)])]),_:1})])]),default:l(()=>[t(x,{model:g,"label-placement":"top",class:"aksrt-form"},{default:l(()=>[t(i,{label:"链接名称"},{default:l(()=>[t(u,{value:g.name,"onUpdate:value":e[33]||(e[33]=a=>g.name=a),placeholder:"例如:首页"},null,8,["value"])]),_:1}),t(i,{label:"链接地址"},{default:l(()=>[t(u,{value:g.url,"onUpdate:value":e[34]||(e[34]=a=>g.url=a),placeholder:"https:// 或 /path"},null,8,["value"])]),_:1}),t(i,{label:"启用状态"},{default:l(()=>[t(ne,{value:g.enabled,"onUpdate:value":e[35]||(e[35]=a=>g.enabled=a)},null,8,["value"])]),_:1})]),_:1},8,["model"])]),_:1},8,["show","title"]),t(V,{show:A.value,"onUpdate:show":e[43]||(e[43]=a=>A.value=a),"mask-closable":!1,preset:"card",title:"添加友情链接",class:"aksrt-modal-card"},{footer:l(()=>[s("div",dt,[t(_(r),{onClick:e[42]||(e[42]=a=>A.value=!1)},{default:l(()=>[...e[90]||(e[90]=[d("取消",-1)])]),_:1}),t(_(r),{type:"primary",loading:X.value,onClick:ke},{default:l(()=>[...e[91]||(e[91]=[d("保存",-1)])]),_:1},8,["loading"])])]),default:l(()=>[t(x,{model:v,"label-placement":"top",class:"aksrt-form"},{default:l(()=>[t(i,{label:"站点名称"},{default:l(()=>[t(u,{value:v.name,"onUpdate:value":e[38]||(e[38]=a=>v.name=a),placeholder:"如:某人的博客"},null,8,["value"])]),_:1}),t(i,{label:"站点 URL"},{default:l(()=>[t(u,{value:v.url,"onUpdate:value":e[39]||(e[39]=a=>v.url=a),placeholder:"https://"},null,8,["value"])]),_:1}),t(i,{label:"Logo 图片 URL"},{default:l(()=>[t(u,{value:v.logo,"onUpdate:value":e[40]||(e[40]=a=>v.logo=a),placeholder:"图标 URL(可选,方形 PNG 推荐)"},null,8,["value"])]),_:1}),t(i,{label:"描述"},{default:l(()=>[t(u,{value:v.description,"onUpdate:value":e[41]||(e[41]=a=>v.description=a),placeholder:"一句话简介(可选)"},null,8,["value"])]),_:1})]),_:1},8,["model"])]),_:1},8,["show"]),t(V,{show:B.value,"onUpdate:show":e[49]||(e[49]=a=>B.value=a),"mask-closable":!1,preset:"card",title:"编辑扩展联系项",class:"aksrt-modal-card"},{footer:l(()=>[s("div",ut,[t(_(r),{onClick:e[48]||(e[48]=a=>B.value=!1)},{default:l(()=>[...e[92]||(e[92]=[d("取消",-1)])]),_:1}),t(_(r),{type:"primary",onClick:xe},{default:l(()=>[...e[93]||(e[93]=[d("保存",-1)])]),_:1})])]),default:l(()=>[t(x,{model:b,"label-placement":"top",class:"aksrt-form"},{default:l(()=>[t(i,{label:"描述"},{default:l(()=>[t(u,{value:b.desc,"onUpdate:value":e[44]||(e[44]=a=>b.desc=a),placeholder:"如:微信公众号"},null,8,["value"])]),_:1}),t(i,{label:"图标类名"},{default:l(()=>[t(u,{value:b.icon,"onUpdate:value":e[45]||(e[45]=a=>b.icon=a),placeholder:"如:fab fa-weixin"},null,8,["value"])]),_:1}),t(i,{label:"链接地址"},{default:l(()=>[t(u,{value:b.link,"onUpdate:value":e[46]||(e[46]=a=>b.link=a),placeholder:"https://..."},null,8,["value"])]),_:1}),t(i,{label:"Hover 图片"},{default:l(()=>[t(u,{value:b.img,"onUpdate:value":e[47]||(e[47]=a=>b.img=a),placeholder:"图片 URL(可选,hover 显示)"},null,8,["value"])]),_:1})]),_:1},8,["model"])]),_:1},8,["show"])])}}},yt=Re(_t,[["__scopeId","data-v-75e6f4e1"]]);export{yt as default}; diff --git a/assets/admin/build/FooterTabbarSettings.RLdsCbkU.js b/assets/admin/build/FooterTabbarSettings.RLdsCbkU.js new file mode 100644 index 00000000..e0251993 --- /dev/null +++ b/assets/admin/build/FooterTabbarSettings.RLdsCbkU.js @@ -0,0 +1 @@ +import{d as E}from"./vendor-draggable.CceJcfGJ.js";import{a as V}from"./shared-api.D5_fnN32.js";import{P as pe}from"./PageHeader.Di3JTPjc.js";import{_ as fe}from"./index.js";import{u as _e,a as ce,B as b,b as I}from"./vendor-naive.BuHWlEgf.js";import{o as me,X as c,a4 as o,a3 as s,r as C,a1 as _,e as L,W as u,N as f,f as i,Y as n,Z as w,a2 as y,L as j,a5 as g,F as $,R as be,c as ye}from"./vendor-vue.Bykizn0M.js";import"./vendor-misc.1adHN6i_.js";const ge={class:"aksrt-page-container content-page"},ve={class:"aksrt-card-header-row"},ke={class:"aksrt-card-header-row__left"},we={class:"aksrt-card-header-row__title"},he={class:"section-desc section-desc--tight"},xe={class:"tabbar-sort__item"},Te={class:"tabbar-sort__main"},Ue={class:"tabbar-sort__icon"},Ce={class:"tabbar-sort__meta"},$e={class:"tabbar-sort__title-row"},ze={class:"tabbar-sort__desc"},Ie={class:"tabbar-sort__actions"},Ae={class:"aksrt-form-actions"},Fe={class:"icon-preview-row"},De={key:1,class:"muted-text"},Ve={key:5,class:"add-items-editor"},Ne={class:"add-items-editor__head"},Se={class:"add-items-editor__presets"},Pe={key:0,class:"add-items-editor__list"},Be={class:"add-items-editor__row"},Oe={key:1,class:"muted-text"},Me={class:"aksrt-modal-footer"},qe={__name:"FooterTabbarSettings",setup(Ee){const m=_e(),W=ce(),A=C(!0),z=C(!1),T=C(!1),h=C(-1),F=C([]),d=L({enabled:!0,scroll_hide:!1,scroll_down_hide:!0,footer_tabbar_single:"default",items:[]}),a=L({id:"",type:"link",icon:"",text:"",link:"",badge:"",badge_mode:"static",category_id:null,search_default_type:"post",new_window:!1,add_items:[],enabled:!0,sort_order:0,ontop:!1}),H=[{label:"首页",value:"home"},{label:"分类页",value:"category"},{label:"链接",value:"link"},{label:"中央发布按钮",value:"add"},{label:"用户中心",value:"user"},{label:"登录/我的",value:"auth"},{label:"搜索",value:"search"},{label:"消息中心",value:"msg"},{label:"开通会员",value:"pay_vip"},{label:"购物车",value:"shop_cart"}],R={home:"首页",category:"分类页",link:"链接",add:"中央发布按钮",user:"用户中心",auth:"登录/我的",search:"搜索",msg:"消息中心",pay_vip:"开通会员",shop_cart:"购物车"},N={home:{icon:"fas fa-home",text:"首页"},category:{icon:"fas fa-th-large",text:"分类"},link:{icon:"fas fa-link",text:"链接"},add:{icon:"fas fa-plus",text:"发布"},user:{icon:"fas fa-user",text:"用户中心"},auth:{icon:"fas fa-user",text:"我的"},search:{icon:"fas fa-search",text:"搜索"},msg:{icon:"fas fa-bell",text:"消息"},pay_vip:{icon:"fas fa-crown",text:"会员"},shop_cart:{icon:"fas fa-shopping-cart",text:"购物车"}},X=ye(()=>d.items.filter(t=>t.enabled));function Y(t){var e;if(t.type==="home")return t.ontop?"首页按钮,滚动后切换返回顶部":"首页按钮";if(t.type==="category"){if(t.category_id){const r=F.value.find(p=>p.value===t.category_id);return r?`跳转到分类: ${r.label}`:`跳转到分类 ID ${t.category_id}`}return"跳转到分类聚合页"}return t.type==="add"?(e=t.add_items)!=null&&e.length?`展开 ${t.add_items.length} 个发布入口`:"点击后打开默认发布入口":t.type==="search"?`打开顶部搜索面板,默认搜索${t.search_default_type==="category"?"分类":t.search_default_type==="tag"?"标签":"文章"}`:t.type==="user"?"自动跳转到用户中心或登录页":t.type==="auth"?"登录用户显示我的,游客显示登录":t.type==="msg"?"跳转到消息中心页面":t.type==="pay_vip"?t.link||"跳转到会员开通页":t.type==="shop_cart"?t.link||"跳转到购物车页面":t.link||"自定义链接按钮"}const Z=[{label:"写文章",icon:"fas fa-pen-fancy",url:"/post-new"},{label:"投稿页",icon:"fas fa-file-alt",url:"/submit"},{label:"发布资源",icon:"fas fa-cloud-upload-alt",url:"/resource-new"},{label:"创作中心",icon:"fas fa-palette",url:"/creator"}];function G(t){a.add_items.some(e=>e.url===t.url)||a.add_items.push({id:`add_${Date.now()}_${a.add_items.length}`,label:t.label,icon:t.icon,url:t.url})}function J(){a.add_items.push({id:`add_${Date.now()}_${a.add_items.length}`,label:"",icon:"fas fa-pen",url:""})}function K(t){a.add_items.splice(t,1)}function S(){d.items=d.items.map((t,e)=>({...t,sort_order:e}))}function Q(t,e=!1){const r=N[t]||N.link;(e||!a.icon)&&(a.icon=r.icon),(e||!a.text)&&(a.text=r.text),["link","msg","pay_vip","shop_cart"].includes(t)||(a.link=""),t!=="category"&&(a.category_id=null),t!=="search"&&(a.search_default_type="post"),t!=="add"&&(a.add_items=[]),t!=="home"&&(a.ontop=!1)}function ee(t){Q(t,!1)}function ae(){if(d.items.length>=5){m.warning("底部Tab最多只能配置 5 个按钮");return}Object.assign(a,{id:`tab_${Date.now()}`,type:"link",icon:"fas fa-link",text:"链接",link:"",badge:"",badge_mode:"static",category_id:null,search_default_type:"post",new_window:!1,add_items:[],enabled:!0,sort_order:d.items.length,ontop:!1}),h.value=-1,T.value=!0}function te(t){const e=d.items[t];Object.assign(a,{id:e.id,type:e.type||"link",icon:e.icon||"",text:e.text||"",link:e.link||"",badge:e.badge||"",badge_mode:e.badge_mode||"static",category_id:e.category_id||null,search_default_type:e.search_default_type||"post",new_window:!!e.new_window,add_items:Array.isArray(e.add_items)?e.add_items.map(r=>({...r})):[],enabled:e.enabled!==!1,sort_order:e.sort_order??t,ontop:e.ontop||!1}),h.value=t,T.value=!0}function le(){if(h.value<0&&d.items.length>=5){m.warning("底部Tab最多只能配置 5 个按钮");return}if(!a.icon){m.warning("请填写图标");return}if(!a.text){m.warning("请填写显示文字");return}const t={id:a.id||`tab_${Date.now()}`,type:a.type,icon:a.icon,text:a.text,link:["link","msg","pay_vip","shop_cart"].includes(a.type)?a.link:"",badge:(a.badge||"").trim(),badge_mode:a.badge_mode,category_id:a.type==="category"&&a.category_id||0,search_default_type:a.type==="search"?a.search_default_type:"post",new_window:a.type==="link"?!!a.new_window:!1,add_items:a.type==="add"?a.add_items.filter(e=>e.label&&e.url).map(e=>({id:e.id||`add_${Date.now()}`,label:e.label,icon:e.icon||"fas fa-pen",url:e.url})):[],enabled:a.enabled,sort_order:a.sort_order,ontop:a.type==="home"?a.ontop:!1};h.value>=0?d.items[h.value]=t:d.items.push(t),T.value=!1,m.success(h.value>=0?"已更新":"已添加")}async function se(){try{const t=await V.getCategories();t.code==="success"&&Array.isArray(t.data)&&(F.value=t.data.map(e=>({label:e.name,value:Number(e.id)})))}catch(t){console.error("[FooterTabbar] load categories failed:",t)}}function oe(t){W.warning({title:"确认删除",content:`确定删除「${d.items[t].text}」按钮吗?`,positiveText:"删除",negativeText:"取消",onPositiveClick:()=>{d.items.splice(t,1),S(),m.success("已删除")}})}async function ne(){A.value=!0;try{const[t]=await Promise.all([V.getFooterTabbarSettings(),se()]);if(t.code==="success"&&t.data){const e=t.data;d.enabled=e.enabled!==!1,d.scroll_hide=e.scroll_hide||!1,d.scroll_down_hide=e.scroll_down_hide!==!1,d.footer_tabbar_single=e.footer_tabbar_single||"default",d.items=(e.items||[]).map((r,p)=>({...r,badge:r.badge||"",badge_mode:r.badge_mode||"static",category_id:r.category_id||0,search_default_type:r.search_default_type||"post",new_window:!!r.new_window,add_items:Array.isArray(r.add_items)?r.add_items:[],sort_order:r.sort_order??p}))}}catch(t){console.error("[FooterTabbar] load failed:",t),m.error("加载配置失败")}finally{A.value=!1}}async function P(){if(d.items.length>5){m.warning("底部Tab最多只能配置 5 个按钮");return}z.value=!0;try{const t={enabled:d.enabled,scroll_hide:d.scroll_hide,scroll_down_hide:d.scroll_down_hide,footer_tabbar_single:d.footer_tabbar_single,items:d.items.map((r,p)=>({...r,sort_order:p}))},e=await V.saveFooterTabbarSettings(t);e.code==="success"?m.success(e.message||"保存成功"):m.error(e.message||"保存失败")}catch(t){console.error("[FooterTabbar] save failed:",t),m.error("保存失败")}finally{z.value=!1}}return me(ne),(t,e)=>{const r=_("n-switch"),p=_("n-form-item"),D=_("n-select"),B=_("n-form"),O=_("n-card"),de=_("n-empty"),re=_("n-spin"),x=_("n-input"),U=_("n-radio"),M=_("n-space"),q=_("n-radio-group"),ie=_("n-alert"),ue=_("n-modal");return u(),c("div",ge,[o(pe,{title:"底部Tab配置",desc:"自定义移动端底部导航栏的按钮,支持排序、图标配置和返回顶部功能。"},{actions:s(()=>[o(f(b),{type:"primary",loading:z.value,onClick:P},{default:s(()=>[...e[18]||(e[18]=[i("保存",-1)])]),_:1},8,["loading"])]),_:1}),o(re,{show:A.value,style:{width:"100%","min-height":"200px"}},{default:s(()=>[o(O,{class:"aksrt-section-card"},{header:s(()=>[...e[19]||(e[19]=[n("div",{class:"aksrt-card-header-row"},[n("div",{class:"aksrt-card-header-row__left"},[n("span",{class:"header-icon"},[n("i",{class:"fas fa-cog"})]),n("strong",{class:"aksrt-card-header-row__title"},"基础设置")])],-1)])]),default:s(()=>[o(B,{model:d,"label-placement":"left","label-width":"140",class:"aksrt-form"},{default:s(()=>[o(p,{label:"启用底部Tab"},{default:s(()=>[o(r,{value:d.enabled,"onUpdate:value":e[0]||(e[0]=l=>d.enabled=l)},null,8,["value"]),e[20]||(e[20]=n("span",{class:"aksrt-hint-text",style:{"margin-left":"12px"}},"移动端底部导航栏总开关",-1))]),_:1}),o(p,{label:"向下滚动隐藏"},{default:s(()=>[o(r,{value:d.scroll_down_hide,"onUpdate:value":e[1]||(e[1]=l=>d.scroll_down_hide=l)},null,8,["value"]),e[21]||(e[21]=n("span",{class:"aksrt-hint-text",style:{"margin-left":"12px"}},"页面向下滚动时隐藏,向上滚动时显示",-1))]),_:1}),o(p,{label:"文章页专属Tab"},{default:s(()=>[o(D,{value:d.footer_tabbar_single,"onUpdate:value":e[2]||(e[2]=l=>d.footer_tabbar_single=l),options:[{label:"默认按钮",value:"default"},{label:"文章扩展按钮(评论/收藏/分享)",value:"extend"}],style:{width:"240px"}},null,8,["value"]),e[22]||(e[22]=n("span",{class:"aksrt-hint-text",style:{"margin-left":"12px"}},"文章详情页底部显示的Tab按钮类型",-1))]),_:1})]),_:1},8,["model"])]),_:1}),o(O,{class:"aksrt-section-card"},{header:s(()=>[n("div",ve,[n("div",ke,[e[23]||(e[23]=n("span",{class:"header-icon"},[n("i",{class:"fas fa-list-ul"})],-1)),n("strong",we,"Tab按钮配置 ("+w(d.items.length)+")",1)]),o(f(b),{type:"primary",size:"small",onClick:ae},{icon:s(()=>[...e[24]||(e[24]=[n("i",{class:"fas fa-plus"},null,-1)])]),default:s(()=>[e[25]||(e[25]=i(" 添加按钮 ",-1))]),_:1})])]),default:s(()=>[e[32]||(e[32]=n("p",{class:"section-desc"},"配置移动端底部导航栏显示的按钮,支持拖拽排序。建议按钮数量不超过5个。",-1)),n("div",he,"当前已启用 "+w(X.value.length)+" 个按钮,最多允许 5 个。",1),d.items.length?(u(),y(f(E),{key:0,modelValue:d.items,"onUpdate:modelValue":e[3]||(e[3]=l=>d.items=l),"item-key":"id",handle:".tabbar-sort__handle","ghost-class":"tabbar-sort__ghost",animation:"180",class:"tabbar-sort",onEnd:S},{item:s(({element:l,index:v})=>[n("div",xe,[n("div",Te,[e[27]||(e[27]=n("button",{type:"button",class:"tabbar-sort__handle","aria-label":"拖拽排序"},[n("i",{class:"fas fa-grip-vertical"})],-1)),n("span",Ue,[l.icon?(u(),c("i",{key:0,class:j(l.icon)},null,2)):g("",!0)]),n("div",Ce,[n("div",$e,[n("strong",null,w(l.text||"按钮"),1),o(f(I),{size:"small",bordered:!1},{default:s(()=>[i(w(R[l.type]||l.type),1)]),_:2},1024),l.badge?(u(),y(f(I),{key:0,size:"small",type:"error",bordered:!1},{default:s(()=>[i("徽标 "+w(l.badge),1)]),_:2},1024)):g("",!0),l.type==="home"&&l.ontop?(u(),y(f(I),{key:1,size:"small",type:"success",bordered:!1},{default:s(()=>[...e[26]||(e[26]=[i("返回顶部",-1)])]),_:1})):g("",!0),o(f(I),{size:"small",type:l.enabled?"success":"default",bordered:!1},{default:s(()=>[i(w(l.enabled?"启用":"禁用"),1)]),_:2},1032,["type"])]),n("div",ze,w(Y(l)),1)])]),n("div",Ie,[o(f(b),{size:"tiny",quaternary:"",type:"primary",onClick:k=>te(v)},{icon:s(()=>[...e[28]||(e[28]=[n("i",{class:"fas fa-edit",style:{"font-size":"12px"}},null,-1)])]),default:s(()=>[e[29]||(e[29]=i(" 编辑 ",-1))]),_:1},8,["onClick"]),o(f(b),{size:"tiny",quaternary:"",type:"error",onClick:k=>oe(v)},{icon:s(()=>[...e[30]||(e[30]=[n("i",{class:"fas fa-trash-alt",style:{"font-size":"12px"}},null,-1)])]),default:s(()=>[e[31]||(e[31]=i(" 删除 ",-1))]),_:1},8,["onClick"])])])]),_:1},8,["modelValue"])):(u(),y(de,{key:1,description:"暂无Tab按钮,请点击上方按钮添加"}))]),_:1}),n("div",Ae,[o(f(b),{type:"primary",loading:z.value,onClick:P},{default:s(()=>[...e[33]||(e[33]=[i("保存底部Tab配置",-1)])]),_:1},8,["loading"])])]),_:1},8,["show"]),o(ue,{show:T.value,"onUpdate:show":e[17]||(e[17]=l=>T.value=l),"mask-closable":!1,preset:"card",title:h.value>=0?"编辑Tab按钮":"添加Tab按钮",class:"aksrt-modal-card",style:{"max-width":"520px"}},{footer:s(()=>[n("div",Me,[o(f(b),{onClick:e[16]||(e[16]=l=>T.value=!1)},{default:s(()=>[...e[48]||(e[48]=[i("取消",-1)])]),_:1}),o(f(b),{type:"primary",onClick:le},{default:s(()=>[...e[49]||(e[49]=[i("保存",-1)])]),_:1})])]),default:s(()=>[o(B,{model:a,"label-placement":"top",class:"aksrt-form"},{default:s(()=>[o(p,{label:"按钮类型"},{default:s(()=>[o(D,{value:a.type,"onUpdate:value":[e[4]||(e[4]=l=>a.type=l),ee],options:H,placeholder:"选择按钮类型"},null,8,["value"])]),_:1}),o(p,{label:"图标 (Font Awesome)"},{feedback:s(()=>[n("div",Fe,[e[34]||(e[34]=n("span",null,"预览:",-1)),a.icon?(u(),c("i",{key:0,class:j(a.icon),style:{"font-size":"20px"}},null,2)):(u(),c("span",De,"无图标")),e[35]||(e[35]=n("a",{href:"https://fontawesome.com/search?m=free",target:"_blank",rel:"noopener",style:{"margin-left":"12px"}},[n("i",{class:"fas fa-external-link-alt"}),i(" Font Awesome 图标库 ")],-1))])]),default:s(()=>[o(x,{value:a.icon,"onUpdate:value":e[5]||(e[5]=l=>a.icon=l),placeholder:"例如: fas fa-home"},null,8,["value"])]),_:1}),o(p,{label:"显示文字"},{default:s(()=>[o(x,{value:a.text,"onUpdate:value":e[6]||(e[6]=l=>a.text=l),placeholder:"例如: 首页"},null,8,["value"])]),_:1}),o(p,{label:"徽标文本"},{default:s(()=>[o(x,{value:a.badge,"onUpdate:value":e[7]||(e[7]=l=>a.badge=l),placeholder:"例如: NEW, 9+,留空不显示",maxlength:"4"},null,8,["value"])]),_:1}),o(p,{label:"徽标模式"},{default:s(()=>[o(q,{value:a.badge_mode,"onUpdate:value":e[8]||(e[8]=l=>a.badge_mode=l)},{default:s(()=>[o(M,null,{default:s(()=>[o(U,{value:"static"},{default:s(()=>[...e[36]||(e[36]=[i("静态文本",-1)])]),_:1}),o(U,{value:"dynamic"},{default:s(()=>[...e[37]||(e[37]=[i("动态徽标",-1)])]),_:1})]),_:1})]),_:1},8,["value"])]),_:1}),a.badge_mode==="dynamic"?(u(),y(ie,{key:0,type:"info","show-icon":!1,style:{"margin-bottom":"16px"}},{default:s(()=>[a.type==="auth"?(u(),c($,{key:0},[i("未登录时显示提醒徽标,登录后自动隐藏。")],64)):a.type==="user"?(u(),c($,{key:1},[i("登录用户显示评论数徽标,游客不显示。")],64)):a.type==="search"?(u(),c($,{key:2},[i("搜索结果页显示 ON 徽标,其它页面隐藏。")],64)):(u(),c($,{key:3},[i("当前类型不提供动态徽标,前端将回退为静态徽标。")],64))]),_:1})):g("",!0),a.type==="category"?(u(),y(p,{key:1,label:"指定分类"},{default:s(()=>[o(D,{value:a.category_id,"onUpdate:value":e[9]||(e[9]=l=>a.category_id=l),options:F.value,placeholder:"留空则跳转分类聚合页",clearable:"",filterable:""},null,8,["value","options"])]),_:1})):g("",!0),a.type==="search"?(u(),y(p,{key:2,label:"默认搜索类型"},{default:s(()=>[o(q,{value:a.search_default_type,"onUpdate:value":e[10]||(e[10]=l=>a.search_default_type=l)},{default:s(()=>[o(M,null,{default:s(()=>[o(U,{value:"post"},{default:s(()=>[...e[38]||(e[38]=[i("文章",-1)])]),_:1}),o(U,{value:"category"},{default:s(()=>[...e[39]||(e[39]=[i("分类",-1)])]),_:1}),o(U,{value:"tag"},{default:s(()=>[...e[40]||(e[40]=[i("标签",-1)])]),_:1})]),_:1})]),_:1},8,["value"])]),_:1})):g("",!0),["link","msg","pay_vip","shop_cart"].includes(a.type)?(u(),y(p,{key:3,label:"链接地址"},{default:s(()=>[o(x,{value:a.link,"onUpdate:value":e[11]||(e[11]=l=>a.link=l),placeholder:a.type==="msg"?"留空使用默认消息中心地址":a.type==="pay_vip"?"留空使用默认会员页地址":a.type==="shop_cart"?"留空使用默认购物车地址":"https:// 或 /path"},null,8,["value","placeholder"])]),_:1})):g("",!0),a.type==="link"?(u(),y(p,{key:4,label:"新窗口打开"},{default:s(()=>[o(r,{value:a.new_window,"onUpdate:value":e[12]||(e[12]=l=>a.new_window=l)},null,8,["value"])]),_:1})):g("",!0),a.type==="add"?(u(),c("div",Ve,[n("div",Ne,[e[43]||(e[43]=n("strong",null,"发布菜单项",-1)),o(f(b),{size:"small",type:"primary",onClick:J},{icon:s(()=>[...e[41]||(e[41]=[n("i",{class:"fas fa-plus"},null,-1)])]),default:s(()=>[e[42]||(e[42]=i(" 添加子项 ",-1))]),_:1})]),n("div",Se,[e[44]||(e[44]=n("span",{class:"add-items-editor__presets-label"},"快速添加:",-1)),(u(),c($,null,be(Z,l=>o(f(b),{key:l.url,size:"tiny",secondary:"",type:a.add_items.some(v=>v.url===l.url)?"success":"default",disabled:a.add_items.some(v=>v.url===l.url),onClick:v=>G(l)},{default:s(()=>[i(w(l.label),1)]),_:2},1032,["type","disabled","onClick"])),64))]),a.add_items.length?(u(),c("div",Pe,[o(f(E),{modelValue:a.add_items,"onUpdate:modelValue":e[13]||(e[13]=l=>a.add_items=l),"item-key":"id",handle:".add-items-editor__drag","ghost-class":"add-items-editor__ghost",animation:"180"},{item:s(({element:l,index:v})=>[n("div",Be,[e[46]||(e[46]=n("button",{type:"button",class:"add-items-editor__drag","aria-label":"拖拽排序"},[n("i",{class:"fas fa-grip-vertical"})],-1)),o(x,{value:l.label,"onUpdate:value":k=>l.label=k,placeholder:"名称,例如:写文章"},null,8,["value","onUpdate:value"]),o(x,{value:l.icon,"onUpdate:value":k=>l.icon=k,placeholder:"图标,例如:fas fa-pen"},null,8,["value","onUpdate:value"]),o(x,{value:l.url,"onUpdate:value":k=>l.url=k,placeholder:"链接,例如:/wp-admin/post-new.php"},null,8,["value","onUpdate:value"]),o(f(b),{quaternary:"",type:"error",onClick:k=>K(v)},{icon:s(()=>[...e[45]||(e[45]=[n("i",{class:"fas fa-trash-alt"},null,-1)])]),_:1},8,["onClick"])])]),_:1},8,["modelValue"])])):(u(),c("div",Oe,"当前没有子项,前端将回退为默认发布入口。"))])):g("",!0),a.type==="home"?(u(),y(p,{key:6,label:"返回顶部功能"},{default:s(()=>[o(r,{value:a.ontop,"onUpdate:value":e[14]||(e[14]=l=>a.ontop=l)},null,8,["value"]),e[47]||(e[47]=n("span",{class:"aksrt-hint-text",style:{"margin-left":"12px"}},"页面滚动后切换为返回顶部按钮",-1))]),_:1})):g("",!0),o(p,{label:"启用状态"},{default:s(()=>[o(r,{value:a.enabled,"onUpdate:value":e[15]||(e[15]=l=>a.enabled=l)},null,8,["value"])]),_:1})]),_:1},8,["model"])]),_:1},8,["show","title"])])}}},Ze=fe(qe,[["__scopeId","data-v-13ae8f9c"]]);export{Ze as default}; diff --git a/assets/admin/build/FooterTabbarSettings.css b/assets/admin/build/FooterTabbarSettings.css new file mode 100644 index 00000000..ee267ace --- /dev/null +++ b/assets/admin/build/FooterTabbarSettings.css @@ -0,0 +1 @@ +.icon-preview-row[data-v-13ae8f9c]{display:flex;align-items:center;gap:8px;margin-top:4px;font-size:13px}.icon-preview-row a[data-v-13ae8f9c]{color:var(--n-primary-color);text-decoration:none}.icon-preview-row a[data-v-13ae8f9c]:hover{text-decoration:underline}.muted-text[data-v-13ae8f9c]{color:#999;font-size:12px}.aksrt-modal-footer[data-v-13ae8f9c]{display:flex;justify-content:flex-end;gap:10px}.section-desc[data-v-13ae8f9c]{color:var(--n-text-color-3);font-size:13px;margin:0 0 16px}.section-desc--tight[data-v-13ae8f9c]{margin-top:-6px}.add-items-editor[data-v-13ae8f9c]{margin-bottom:16px}.add-items-editor__head[data-v-13ae8f9c]{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}.add-items-editor__presets[data-v-13ae8f9c]{display:flex;align-items:center;gap:6px;margin-bottom:12px;flex-wrap:wrap}.add-items-editor__presets-label[data-v-13ae8f9c]{font-size:12px;color:var(--n-text-color-3, #999)}.add-items-editor__list[data-v-13ae8f9c]{display:flex;flex-direction:column;gap:10px}.add-items-editor__row[data-v-13ae8f9c]{display:grid;grid-template-columns:32px 1fr 1fr 1.2fr 40px;gap:8px;align-items:center}.add-items-editor__drag[data-v-13ae8f9c]{width:32px;height:32px;border:0;border-radius:10px;background:#f3f5f7;color:#6b7280;cursor:grab}.add-items-editor__ghost[data-v-13ae8f9c]{opacity:.5}.tabbar-sort[data-v-13ae8f9c]{display:flex;flex-direction:column;gap:12px}.tabbar-sort__item[data-v-13ae8f9c]{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 16px;border:1px solid var(--n-border-color);border-radius:14px;background:#fff}.tabbar-sort__main[data-v-13ae8f9c]{min-width:0;display:flex;align-items:center;gap:12px;flex:1}.tabbar-sort__handle[data-v-13ae8f9c]{width:32px;height:32px;border:0;border-radius:10px;background:#f3f5f7;color:#6b7280;cursor:grab}.tabbar-sort__icon[data-v-13ae8f9c]{width:38px;height:38px;border-radius:12px;display:inline-flex;align-items:center;justify-content:center;background:#18a0581f;color:#18a058;font-size:18px;flex:0 0 auto}.tabbar-sort__meta[data-v-13ae8f9c]{min-width:0;flex:1}.tabbar-sort__title-row[data-v-13ae8f9c]{display:flex;align-items:center;flex-wrap:wrap;gap:8px;margin-bottom:4px}.tabbar-sort__desc[data-v-13ae8f9c]{color:var(--n-text-color-3);font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tabbar-sort__actions[data-v-13ae8f9c]{display:flex;gap:6px;flex:0 0 auto}.tabbar-sort__ghost[data-v-13ae8f9c]{opacity:.5}@media(max-width:1023px){.tabbar-sort__item[data-v-13ae8f9c]{flex-direction:column;align-items:stretch}.tabbar-sort__actions[data-v-13ae8f9c]{justify-content:flex-end}.add-items-editor__row[data-v-13ae8f9c]{grid-template-columns:32px 1fr}} diff --git a/assets/admin/build/HeroManager.css b/assets/admin/build/HeroManager.css new file mode 100644 index 00000000..cb171ed1 --- /dev/null +++ b/assets/admin/build/HeroManager.css @@ -0,0 +1 @@ +.aksrt-inline-setting[data-v-2bdc0f38]{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.aksrt-inline-setting__hint[data-v-2bdc0f38]{color:#7a7f8a;font-size:13px}.aksrt-inline-setting__actions[data-v-2bdc0f38]{display:flex;justify-content:flex-end}.aksrt-modal-preview[data-v-2bdc0f38]{margin:-8px 0 18px;border-radius:8px;overflow:hidden;border:1px solid #eef1f6}.aksrt-modal-grid[data-v-2bdc0f38]{display:grid;grid-template-columns:1fr 1fr;gap:14px}.aksrt-layer-item[data-v-2bdc0f38]{border:1px solid #eef1f6;border-radius:8px;padding:14px;margin-bottom:10px;background:#fafbfc}.aksrt-layer-item__header[data-v-2bdc0f38]{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}.aksrt-modal-footer[data-v-2bdc0f38]{display:flex;justify-content:flex-end;gap:10px}@media(max-width:768px){.aksrt-modal-grid[data-v-2bdc0f38]{grid-template-columns:1fr}} diff --git a/assets/admin/build/HeroManager.sfaSC084.js b/assets/admin/build/HeroManager.sfaSC084.js new file mode 100644 index 00000000..90c712ca --- /dev/null +++ b/assets/admin/build/HeroManager.sfaSC084.js @@ -0,0 +1 @@ +import{o as de,X as w,a4 as t,a3 as a,a1 as r,r as b,_ as ve,W as g,Y as u,N as _,f as i,a2 as N,Z as $,a5 as P,F as pe,R as _e,k as m}from"./vendor-vue.Bykizn0M.js";import{a as x}from"./shared-api.D5_fnN32.js";import{o as j}from"./media.BHNcAGK-.js";import{P as me}from"./PageHeader.Di3JTPjc.js";import{_ as fe}from"./index.js";import{u as ge,a as ce,B as p,d as D,b as T}from"./vendor-naive.BuHWlEgf.js";import"./vendor-misc.1adHN6i_.js";const be={class:"aksrt-page-container content-page"},ye={class:"aksrt-card-header-row"},ke={class:"aksrt-inline-setting"},xe={class:"aksrt-inline-setting__actions"},we={class:"aksrt-card-header-row"},he={class:"aksrt-card-header-row__left"},Ue={class:"header-icon"},He={xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round",style:{width:"18px",height:"18px"},"aria-hidden":"true"},ze={class:"aksrt-card-header-row__title"},Ce={key:0,class:"aksrt-modal-preview"},Ne={class:"aksrt-modal-grid"},Se={class:"aksrt-modal-grid"},Le={class:"aksrt-layer-item__header"},Be={class:"aksrt-modal-grid"},Me={class:"aksrt-modal-footer"},Pe={__name:"HeroManager",setup(Te){const q=ve(),v=ge(),A=ce();function W(){q.push("/page-display/header-components")}const S=b(!0),L=b(!1),h=b(!1),U=b(!1),H=b([]),z=b(!0),k=b(!1),n=b(R());function R(){return{id:0,title:"",subtitle:"",description:"",image_url:"",video_url:"",link_url:"",link_target:"_self",text_align:"left",device_visibility:"all",enabled:!0,show_text:!0,show_meta:!1,sort_order:0,text_size_pc:"",text_size_m:"",text_parallax:!1,layers:[]}}const X=[{title:"预览",key:"image_url",width:90,render(l){return l.image_url?m(D,{src:l.image_url,width:64,height:36,objectFit:"cover",previewSrc:l.image_url,style:"border-radius:4px;display:block;"}):m("span",{style:"color:#bbb;font-size:12px;"},"无")}},{title:"标题",key:"title",ellipsis:{tooltip:!0},render(l){return l.title||m("span",{style:"color:#bbb;"},"未命名")}},{title:"文字",key:"show_text",width:70,className:"aksrt-table-mobile-hide",render(l){return m(T,{size:"small",type:l.show_text?"info":"default"},{default:()=>l.show_text?"显示":"隐藏"})}},{title:"元信息",key:"show_meta",width:78,className:"aksrt-table-mobile-hide",render(l){return m(T,{size:"small",type:l.show_meta?"info":"default"},{default:()=>l.show_meta?"显示":"隐藏"})}},{title:"跳转",key:"link_url",ellipsis:{tooltip:!0},className:"aksrt-table-mobile-hide",render(l){return l.link_url||m("span",{style:"color:#bbb;font-size:12px;"},"—")}},{title:"排序",key:"sort_order",width:64,className:"aksrt-table-mobile-hide"},{title:"状态",key:"enabled",width:84,render(l){return m(T,{size:"small",type:l.enabled?"success":"default"},{default:()=>l.enabled?"启用":"禁用"})}},{title:"操作",key:"actions",width:130,render(l){return m("div",{style:"display:flex;gap:6px;"},[m(p,{size:"tiny",onClick:()=>J(l)},{default:()=>"编辑"}),m(p,{size:"tiny",type:"error",quaternary:!0,onClick:()=>te(l)},{default:()=>"删除"})])}}];async function B(){try{S.value=!0;const l=await x.getHeroes();l.code==="success"&&(H.value=l.data||[])}catch(l){v.error(l.message||"加载失败")}finally{S.value=!1}}async function Y(){h.value=!0;try{const l=await x.getHomepageSettings(),e=(l==null?void 0:l.data)||{};z.value=e.homepage_module_hero_enabled!==!1}catch(l){v.error(l.message||"加载 Hero 开关失败")}finally{h.value=!1}}async function Z(){U.value=!0;try{const l=await x.saveHomepageSettings({homepage_module_hero_enabled:z.value});if((l==null?void 0:l.code)==="success"){v.success("Hero 开关已保存");return}throw new Error((l==null?void 0:l.message)||"保存 Hero 开关失败")}catch(l){v.error(l.message||"保存 Hero 开关失败")}finally{U.value=!1}}function G(){n.value=R(),k.value=!0}function J(l){n.value={id:l.id,title:l.title||"",subtitle:l.subtitle||"",description:l.description||"",image_url:l.image_url||"",video_url:l.video_url||"",link_url:l.link_url||"",link_target:l.link_target||"_self",text_align:l.text_align||"left",device_visibility:l.device_visibility||"all",show_text:l.show_text!==!1,enabled:!!l.enabled,show_meta:l.show_meta===!0,sort_order:Number(l.sort_order)||0,text_size_pc:l.text_size_pc||"",text_size_m:l.text_size_m||"",text_parallax:!!l.text_parallax,layers:Array.isArray(l.layers)?l.layers:[]},k.value=!0}async function K(){try{const l=await j({title:"选择 Hero 背景图",buttonText:"使用这张 Hero 图"});l!=null&&l.url&&(n.value.image_url=l.url)}catch(l){v.error(l.message||"打开媒体库失败")}}function O(){n.value.layers.push({image:"",free_size:!1,align:"center",parallax:!1,parallax_scale:.3,parallax_opacity:.6})}function Q(l){n.value.layers.splice(l,1)}async function ee(l){try{const e=await j({title:"选择图层图片",buttonText:"使用这张图"});e!=null&&e.url&&(n.value.layers[l].image=e.url)}catch(e){v.error(e.message||"打开媒体库失败")}}async function le(){if(!n.value.image_url){v.warning("请填写 Hero 背景图");return}L.value=!0;try{n.value.id?(await x.updateHero(n.value.id,n.value),v.success("已保存")):(await x.createHero(n.value),v.success("已添加")),k.value=!1,await B()}catch(l){v.error(l.message||"保存失败")}finally{L.value=!1}}function te(l){A.warning({title:"确认删除",content:`确定删除 Hero「${l.title||"未命名"}」?`,positiveText:"删除",negativeText:"取消",onPositiveClick:async()=>{try{await x.deleteHero(l.id),v.success("已删除"),await B()}catch(e){v.error(e.message||"删除失败")}}})}return de(()=>{B(),Y()}),(l,e)=>{const y=r("n-switch"),o=r("n-form-item"),E=r("n-form"),F=r("n-card"),ae=r("n-data-table"),se=r("n-empty"),ne=r("n-spin"),f=r("n-input"),I=r("n-input-group"),c=r("n-radio-button"),M=r("n-radio-group"),oe=r("n-input-number"),ue=r("n-divider"),ie=r("n-select"),V=r("n-slider"),re=r("n-modal");return g(),w("div",be,[t(me,{title:"Hero 轮播管理",desc:"管理首页 Hero 幻灯片内容(图片/视频、文案、图层、跳转)。标题、副标题可留空。"}),t(F,{class:"aksrt-section-card",style:{"margin-bottom":"16px"}},{header:a(()=>[u("div",ye,[e[20]||(e[20]=u("strong",null,"Hero 显示开关",-1)),t(_(p),{size:"small",secondary:"",onClick:W},{default:a(()=>[...e[19]||(e[19]=[i("顶部多功能组件(搜索/卡片/轮播参数)",-1)])]),_:1})])]),default:a(()=>[t(E,{"label-placement":"left","label-width":"160",class:"aksrt-form"},{default:a(()=>[t(o,{label:"显示首页 Hero"},{default:a(()=>[u("div",ke,[t(y,{value:z.value,"onUpdate:value":e[0]||(e[0]=s=>z.value=s),disabled:h.value||U.value},null,8,["value","disabled"]),e[21]||(e[21]=u("span",{class:"aksrt-inline-setting__hint"},"关闭后,首页 Hero 区块将不再渲染。",-1))])]),_:1})]),_:1}),u("div",xe,[t(_(p),{type:"primary",loading:U.value,disabled:h.value,onClick:Z},{default:a(()=>[...e[22]||(e[22]=[i("保存 Hero 开关",-1)])]),_:1},8,["loading","disabled"])])]),_:1}),t(ne,{show:S.value,style:{width:"100%","min-height":"200px"}},{default:a(()=>[t(F,{class:"aksrt-section-card"},{header:a(()=>[u("div",we,[u("div",he,[u("span",Ue,[(g(),w("svg",He,[...e[23]||(e[23]=[u("rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",ry:"2"},null,-1),u("circle",{cx:"9",cy:"9",r:"2"},null,-1),u("path",{d:"m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21"},null,-1)])]))]),u("strong",ze,"Hero 列表 ("+$(H.value.length)+")",1)]),t(_(p),{type:"primary",size:"small",onClick:G},{default:a(()=>[...e[24]||(e[24]=[i("+ 添加 Hero",-1)])]),_:1})])]),default:a(()=>[H.value.length?(g(),N(ae,{key:0,columns:X,data:H.value,"row-key":s=>s.id,bordered:!1,size:"small"},null,8,["data","row-key"])):(g(),N(se,{key:1,description:"暂无 Hero,添加后首页即可使用。"}))]),_:1})]),_:1},8,["show"]),t(re,{show:k.value,"onUpdate:show":e[18]||(e[18]=s=>k.value=s),"mask-closable":!1,preset:"card",title:n.value.id?"编辑 Hero":"添加 Hero",class:"aksrt-modal-card"},{footer:a(()=>[u("div",Me,[t(_(p),{onClick:e[17]||(e[17]=s=>k.value=!1)},{default:a(()=>[...e[38]||(e[38]=[i("取消",-1)])]),_:1}),t(_(p),{type:"primary",loading:L.value,onClick:le},{default:a(()=>[...e[39]||(e[39]=[i("保存",-1)])]),_:1},8,["loading"])])]),default:a(()=>[t(E,{model:n.value,"label-placement":"top",class:"aksrt-form"},{default:a(()=>[t(o,{label:"标题"},{default:a(()=>[t(f,{value:n.value.title,"onUpdate:value":e[1]||(e[1]=s=>n.value.title=s),placeholder:"可选,主标题"},null,8,["value"])]),_:1}),t(o,{label:"副标题"},{default:a(()=>[t(f,{value:n.value.subtitle,"onUpdate:value":e[2]||(e[2]=s=>n.value.subtitle=s),placeholder:"可选,副标题"},null,8,["value"])]),_:1}),t(o,{label:"背景图 URL"},{default:a(()=>[t(I,null,{default:a(()=>[t(f,{value:n.value.image_url,"onUpdate:value":e[3]||(e[3]=s=>n.value.image_url=s),placeholder:"https://..."},null,8,["value"]),t(_(p),{secondary:"",onClick:K},{default:a(()=>[...e[25]||(e[25]=[i("媒体库",-1)])]),_:1})]),_:1})]),_:1}),n.value.image_url?(g(),w("div",Ce,[t(_(D),{src:n.value.image_url,width:"100%",height:"160","object-fit":"cover","preview-src":n.value.image_url},null,8,["src","preview-src"])])):P("",!0),t(o,{label:"跳转链接"},{default:a(()=>[t(f,{value:n.value.link_url,"onUpdate:value":e[4]||(e[4]=s=>n.value.link_url=s),placeholder:"点击后跳转地址,可留空"},null,8,["value"])]),_:1}),t(o,{label:"描述文字"},{default:a(()=>[t(f,{value:n.value.description,"onUpdate:value":e[5]||(e[5]=s=>n.value.description=s),type:"textarea",rows:2,placeholder:"可选,显示在副标题下方"},null,8,["value"])]),_:1}),t(o,{label:"视频背景 URL"},{default:a(()=>[t(f,{value:n.value.video_url,"onUpdate:value":e[6]||(e[6]=s=>n.value.video_url=s),placeholder:"可选,MP4 视频地址替代背景图"},null,8,["value"])]),_:1}),u("div",Ne,[t(o,{label:"链接打开方式"},{default:a(()=>[t(M,{value:n.value.link_target,"onUpdate:value":e[7]||(e[7]=s=>n.value.link_target=s)},{default:a(()=>[t(c,{value:"_self"},{default:a(()=>[...e[26]||(e[26]=[i("当前窗口",-1)])]),_:1}),t(c,{value:"_blank"},{default:a(()=>[...e[27]||(e[27]=[i("新窗口",-1)])]),_:1})]),_:1},8,["value"])]),_:1}),t(o,{label:"文字对齐"},{default:a(()=>[t(M,{value:n.value.text_align,"onUpdate:value":e[8]||(e[8]=s=>n.value.text_align=s)},{default:a(()=>[t(c,{value:"left"},{default:a(()=>[...e[28]||(e[28]=[i("左",-1)])]),_:1}),t(c,{value:"center"},{default:a(()=>[...e[29]||(e[29]=[i("居中",-1)])]),_:1}),t(c,{value:"right"},{default:a(()=>[...e[30]||(e[30]=[i("右",-1)])]),_:1})]),_:1},8,["value"])]),_:1}),t(o,{label:"设备可见性"},{default:a(()=>[t(M,{value:n.value.device_visibility,"onUpdate:value":e[9]||(e[9]=s=>n.value.device_visibility=s)},{default:a(()=>[t(c,{value:"all"},{default:a(()=>[...e[31]||(e[31]=[i("全部",-1)])]),_:1}),t(c,{value:"pc"},{default:a(()=>[...e[32]||(e[32]=[i("仅电脑",-1)])]),_:1}),t(c,{value:"mobile"},{default:a(()=>[...e[33]||(e[33]=[i("仅移动",-1)])]),_:1})]),_:1},8,["value"])]),_:1}),t(o,{label:"文字视差"},{default:a(()=>[t(y,{value:n.value.text_parallax,"onUpdate:value":e[10]||(e[10]=s=>n.value.text_parallax=s)},null,8,["value"])]),_:1}),t(o,{label:"文字大小(PC)"},{default:a(()=>[t(f,{value:n.value.text_size_pc,"onUpdate:value":e[11]||(e[11]=s=>n.value.text_size_pc=s),placeholder:"如 48px,留空默认"},null,8,["value"])]),_:1}),t(o,{label:"文字大小(移动)"},{default:a(()=>[t(f,{value:n.value.text_size_m,"onUpdate:value":e[12]||(e[12]=s=>n.value.text_size_m=s),placeholder:"如 28px,留空默认"},null,8,["value"])]),_:1})]),u("div",Se,[t(o,{label:"显示文字"},{default:a(()=>[t(y,{value:n.value.show_text,"onUpdate:value":e[13]||(e[13]=s=>n.value.show_text=s)},null,8,["value"])]),_:1}),t(o,{label:"排序"},{default:a(()=>[t(oe,{value:n.value.sort_order,"onUpdate:value":e[14]||(e[14]=s=>n.value.sort_order=s),min:0,style:{width:"100%"}},null,8,["value"])]),_:1}),t(o,{label:"启用"},{default:a(()=>[t(y,{value:n.value.enabled,"onUpdate:value":e[15]||(e[15]=s=>n.value.enabled=s)},null,8,["value"])]),_:1}),t(o,{label:"显示元信息"},{default:a(()=>[t(y,{value:n.value.show_meta,"onUpdate:value":e[16]||(e[16]=s=>n.value.show_meta=s)},null,8,["value"])]),_:1})]),t(ue,{"title-placement":"left",style:{margin:"16px 0 12px"}},{default:a(()=>[...e[34]||(e[34]=[i(" 图片图层(视差叠加) ",-1)])]),_:1}),(g(!0),w(pe,null,_e(n.value.layers,(s,C)=>(g(),w("div",{key:C,class:"aksrt-layer-item"},[u("div",Le,[u("strong",null,"图层 "+$(C+1),1),t(_(p),{size:"tiny",type:"error",quaternary:"",onClick:d=>Q(C)},{default:a(()=>[...e[35]||(e[35]=[i("删除",-1)])]),_:1},8,["onClick"])]),t(o,{label:"图片"},{default:a(()=>[t(I,null,{default:a(()=>[t(f,{value:s.image,"onUpdate:value":d=>s.image=d,placeholder:"图片 URL"},null,8,["value","onUpdate:value"]),t(_(p),{secondary:"",onClick:d=>ee(C)},{default:a(()=>[...e[36]||(e[36]=[i("媒体库",-1)])]),_:1},8,["onClick"])]),_:2},1024)]),_:2},1024),u("div",Be,[t(o,{label:"原始尺寸"},{default:a(()=>[t(y,{value:s.free_size,"onUpdate:value":d=>s.free_size=d},null,8,["value","onUpdate:value"])]),_:2},1024),t(o,{label:"对齐方式"},{default:a(()=>[t(ie,{value:s.align,"onUpdate:value":d=>s.align=d,options:[{label:"居中",value:"center"},{label:"左上",value:"left top"},{label:"右上",value:"right top"},{label:"左下",value:"left bottom"},{label:"右下",value:"right bottom"}]},null,8,["value","onUpdate:value"])]),_:2},1024),t(o,{label:"视差"},{default:a(()=>[t(y,{value:s.parallax,"onUpdate:value":d=>s.parallax=d},null,8,["value","onUpdate:value"])]),_:2},1024),s.parallax?(g(),N(o,{key:0,label:"视差强度"},{default:a(()=>[t(V,{value:s.parallax_scale,"onUpdate:value":d=>s.parallax_scale=d,min:0,max:1,step:.05},null,8,["value","onUpdate:value"])]),_:2},1024)):P("",!0),s.parallax?(g(),N(o,{key:1,label:"视差透明度"},{default:a(()=>[t(V,{value:s.parallax_opacity,"onUpdate:value":d=>s.parallax_opacity=d,min:0,max:1,step:.05},null,8,["value","onUpdate:value"])]),_:2},1024)):P("",!0)])]))),128)),t(_(p),{size:"small",dashed:"",block:"",onClick:O,style:{"margin-top":"8px"}},{default:a(()=>[...e[37]||(e[37]=[i("+ 添加图层",-1)])]),_:1})]),_:1},8,["model"])]),_:1},8,["show","title"])])}}},De=fe(Pe,[["__scopeId","data-v-2bdc0f38"]]);export{De as default}; diff --git a/assets/admin/build/HomepageSettings.css b/assets/admin/build/HomepageSettings.css new file mode 100644 index 00000000..1935e0f3 --- /dev/null +++ b/assets/admin/build/HomepageSettings.css @@ -0,0 +1 @@ +.homepage-settings__empty-tabs[data-v-ae4c5b65]{padding:24px;text-align:center;border:1px dashed var(--n-border-color);border-radius:4px;margin-bottom:12px}.homepage-settings__tab-row[data-v-ae4c5b65]{margin-bottom:8px}.homepage-settings__tab-fields[data-v-ae4c5b65]{display:flex;gap:8px;align-items:center}.aksrt-form-actions[data-v-ae4c5b65]{margin-top:16px;text-align:right} diff --git a/assets/admin/build/HomepageSettings.iKd6UZP-.js b/assets/admin/build/HomepageSettings.iKd6UZP-.js new file mode 100644 index 00000000..402b3449 --- /dev/null +++ b/assets/admin/build/HomepageSettings.iKd6UZP-.js @@ -0,0 +1 @@ +import{o as Y,X as w,a4 as t,a3 as a,Y as i,r as U,a1 as _,e as G,_ as K,W as f,f as d,a2 as F,a5 as H,F as Q,R as ee,N as I,c as M}from"./vendor-vue.Bykizn0M.js";import{a as S}from"./shared-api.D5_fnN32.js";import{P as te}from"./PageHeader.Di3JTPjc.js";import{_ as ae}from"./index.js";import{u as le}from"./vendor-naive.BuHWlEgf.js";import"./vendor-misc.1adHN6i_.js";const oe={class:"aksrt-page-container content-page"},se={style:{display:"flex","align-items":"center","justify-content":"space-between"}},ne={key:0,class:"homepage-settings__empty-tabs"},_e={class:"homepage-settings__tab-fields"},re={class:"aksrt-form-actions"},ie={__name:"HomepageSettings",setup(de){const A=K(),T=le(),v=U(!0),y=U(!1),$=U("stream"),B=U([]),C=[{label:"最近更新",value:"modified"},{label:"发布时间",value:"date"},{label:"浏览量",value:"views"},{label:"点赞数",value:"likes"},{label:"评论数",value:"comments"},{label:"收藏数",value:"favorites"},{label:"下载量",value:"downloads"},{label:"随机",value:"rand"}],l=G({home_posts_list_s:!0,home_list1_orderby_s:!0,home_list1_orderby_option:{orderby:"modified",options:["modified","date","views","likes","comments"]},index_list_title:"最新发布",home_exclude_posts:[],home_exclude_cats:[],home_lists:[],homepage_card_style:"default",homepage_multi_thumb_enabled:!0,homepage_multi_thumb_min_images:3,homepage_sidebar_mini_enabled:!0,homepage_default_view:"list",homepage_sort_ajax_enabled:!0,homepage_sticky_tabs_enabled:!0,home_list_sort_dropdown:!1,homepage_tab_posts_per_page:6,homepage_tab_limit:4}),N=M({get:()=>(l.home_exclude_posts||[]).join(","),set:s=>{l.home_exclude_posts=s.split(",").map(e=>parseInt(e.trim(),10)).filter(e=>e>0)}}),V=M({get:()=>(l.home_exclude_cats||[]).join(","),set:s=>{l.home_exclude_cats=s.split(",").map(e=>parseInt(e.trim(),10)).filter(e=>e>0)}});function R(){l.home_lists.push({term_id:0,title:"",orderby:"date",enabled:!0})}function X(s){l.home_lists.splice(s,1)}function h(s,e,n){l.home_lists[s][e]=n}async function Z(){try{const s=await S.getHomepageCategories(),e=(s==null?void 0:s.data)||[];B.value=e.map(n=>({label:`${n.taxonomy==="topics"?"[专题] ":""}${n.name} (${n.count})`,value:n.term_id||n.id}))}catch{}}async function q(){v.value=!0;try{const s=await S.getHomepageSettings(),e=(s==null?void 0:s.data)||{};l.home_posts_list_s=e.home_posts_list_s!==!1&&e.home_posts_list_enabled!==!1,l.home_list1_orderby_s=e.home_list1_orderby_s!==!1&&e.home_list_sort_enabled!==!1;const n=e.home_list1_orderby_option&&typeof e.home_list1_orderby_option=="object"?e.home_list1_orderby_option:{};l.home_list1_orderby_option={orderby:n.orderby||e.homepage_default_sort||"modified",options:Array.isArray(n.options)&&n.options.length?n.options:Array.isArray(e.home_list_sort_options)&&e.home_list_sort_options.length?e.home_list_sort_options:["modified","date","views","likes","comments"]},l.index_list_title=e.index_list_title||e.home_list_title||"最新发布",l.home_exclude_posts=Array.isArray(e.home_exclude_posts)?e.home_exclude_posts:Array.isArray(e.home_exclude_post_ids)?e.home_exclude_post_ids:[],l.home_exclude_cats=Array.isArray(e.home_exclude_cats)?e.home_exclude_cats:Array.isArray(e.home_exclude_category_ids)?e.home_exclude_category_ids:[],l.home_lists=Array.isArray(e.home_lists)?e.home_lists:Array.isArray(e.homepage_tabs)?e.homepage_tabs:[],l.homepage_card_style=e.homepage_card_style||"default",l.homepage_multi_thumb_enabled=e.homepage_multi_thumb_enabled!==!1,l.homepage_multi_thumb_min_images=e.homepage_multi_thumb_min_images||3,l.homepage_sidebar_mini_enabled=e.homepage_sidebar_mini_enabled!==!1,l.homepage_default_view=e.homepage_default_view||"list",l.homepage_sort_ajax_enabled=e.homepage_sort_ajax_enabled!==!1,l.homepage_sticky_tabs_enabled=e.homepage_sticky_tabs_enabled!==!1,l.home_list_sort_dropdown=!!e.home_list_sort_dropdown,l.homepage_tab_posts_per_page=e.homepage_tab_posts_per_page||6,l.homepage_tab_limit=e.homepage_tab_limit||4}catch(s){T.error(s.message||"加载设置失败")}finally{v.value=!1}}async function z(){y.value=!0;try{const s={...l},e=await S.saveHomepageSettings(s);if((e==null?void 0:e.code)==="success"){T.success("首页设置已保存");return}throw new Error((e==null?void 0:e.message)||"保存失败")}catch(s){T.error(s.message||"保存失败")}finally{y.value=!1}}return Y(()=>{Z(),q()}),(s,e)=>{const n=_("n-button"),x=_("n-alert"),r=_("n-form-item"),g=_("n-form"),u=_("n-card"),p=_("n-switch"),c=_("n-input"),k=_("n-select"),O=_("n-radio-button"),j=_("n-space"),J=_("n-radio-group"),P=_("n-input-number"),L=_("n-text"),D=_("n-spin"),E=_("n-tab-pane"),W=_("n-tabs");return f(),w("div",oe,[t(te,{title:"首页配置",desc:"配置首页主列表、分类 Tab 与基础交互。列表/卡片显示请在「文章列表」中设置。"},{actions:a(()=>[t(n,{type:"primary",loading:y.value,onClick:z},{default:a(()=>[...e[17]||(e[17]=[d("保存设置",-1)])]),_:1},8,["loading"])]),_:1}),t(W,{value:$.value,"onUpdate:value":e[16]||(e[16]=o=>$.value=o),type:"line",animated:""},{default:a(()=>[t(E,{name:"stream",tab:"主列表 & Tab"},{default:a(()=>[t(D,{show:v.value,style:{width:"100%","min-height":"200px"}},{default:a(()=>[t(u,{class:"aksrt-section-card",style:{"margin-bottom":"16px"}},{header:a(()=>[...e[18]||(e[18]=[i("strong",null,"首页说明",-1)])]),default:a(()=>[t(g,{model:l,"label-placement":"left","label-width":"160",class:"aksrt-form"},{default:a(()=>[t(r,{label:"内容说明"},{default:a(()=>[t(x,{type:"info","show-icon":!1},{default:a(()=>[...e[19]||(e[19]=[d(" 首页主列表只使用普通文章。下载/付费是文章能力(meta),不是第二种内容类型。当前为固定骨架模式,不再使用旧版自由模块画布。 ",-1)])]),_:1})]),_:1})]),_:1},8,["model"])]),_:1}),t(u,{class:"aksrt-section-card",style:{"margin-bottom":"16px"}},{header:a(()=>[...e[20]||(e[20]=[i("strong",null,"主列表",-1)])]),default:a(()=>[t(g,{model:l,"label-placement":"left","label-width":"160",class:"aksrt-form"},{default:a(()=>[t(r,{label:"启用主列表"},{feedback:a(()=>[...e[21]||(e[21]=[i("span",{class:"aksrt-hint-text"},"首页主内容区保留 Zibll 式内容流,不建议关闭。",-1)])]),default:a(()=>[t(p,{value:l.home_posts_list_s,"onUpdate:value":e[0]||(e[0]=o=>l.home_posts_list_s=o)},null,8,["value"])]),_:1}),t(r,{label:"显示标题"},{default:a(()=>[t(c,{value:l.index_list_title,"onUpdate:value":e[1]||(e[1]=o=>l.index_list_title=o),placeholder:"最新发布"},null,8,["value"])]),_:1}),t(r,{label:"主栏目默认排序"},{default:a(()=>[t(k,{value:l.home_list1_orderby_option.orderby,"onUpdate:value":e[2]||(e[2]=o=>l.home_list1_orderby_option.orderby=o),options:C},null,8,["value"])]),_:1}),t(r,{label:"显示排序方式按钮"},{default:a(()=>[t(p,{value:l.home_list1_orderby_s,"onUpdate:value":e[3]||(e[3]=o=>l.home_list1_orderby_s=o)},null,8,["value"])]),_:1}),l.home_list1_orderby_s?(f(),F(r,{key:0,label:"排序栏样式"},{default:a(()=>[t(J,{value:l.home_list_sort_dropdown,"onUpdate:value":e[4]||(e[4]=o=>l.home_list_sort_dropdown=o)},{default:a(()=>[t(j,{size:"large"},{default:a(()=>[t(O,{value:!1},{default:a(()=>[...e[22]||(e[22]=[d("内联链接",-1)])]),_:1}),t(O,{value:!0},{default:a(()=>[...e[23]||(e[23]=[d("下拉菜单",-1)])]),_:1})]),_:1})]),_:1},8,["value"])]),_:1})):H("",!0),l.home_list1_orderby_s?(f(),F(r,{key:1,label:"排序方式选项"},{default:a(()=>[t(k,{value:l.home_list1_orderby_option.options,"onUpdate:value":e[5]||(e[5]=o=>l.home_list1_orderby_option.options=o),options:C,multiple:"",placeholder:"选择排序选项"},null,8,["value"])]),_:1})):H("",!0)]),_:1},8,["model"])]),_:1}),t(u,{class:"aksrt-section-card",style:{"margin-bottom":"16px"}},{header:a(()=>[...e[24]||(e[24]=[i("strong",null,"排除规则",-1)])]),default:a(()=>[t(g,{model:l,"label-placement":"left","label-width":"160",class:"aksrt-form"},{default:a(()=>[t(r,{label:"排除文章"},{feedback:a(()=>[...e[25]||(e[25]=[i("span",{class:"aksrt-hint-text"},"主列表和首页 Tab 查询均排除这些文章。",-1)])]),default:a(()=>[t(c,{value:N.value,"onUpdate:value":e[6]||(e[6]=o=>N.value=o),type:"textarea",placeholder:"逗号分隔的文章 ID,如 12,34,56",rows:2},null,8,["value"])]),_:1}),t(r,{label:"排除分类"},{feedback:a(()=>[...e[26]||(e[26]=[i("span",{class:"aksrt-hint-text"},"主列表排除这些分类,首页 Tab 不能绑定已排除分类。",-1)])]),default:a(()=>[t(c,{value:V.value,"onUpdate:value":e[7]||(e[7]=o=>V.value=o),type:"textarea",placeholder:"逗号分隔的分类 ID,如 5,8",rows:2},null,8,["value"])]),_:1})]),_:1},8,["model"])]),_:1}),t(u,{class:"aksrt-section-card",style:{"margin-bottom":"16px"}},{header:a(()=>[i("div",se,[e[28]||(e[28]=i("strong",null,"更多栏目",-1)),t(n,{size:"small",onClick:R},{default:a(()=>[...e[27]||(e[27]=[d("+ 添加栏目",-1)])]),_:1})])]),default:a(()=>[t(g,{model:l,"label-placement":"left","label-width":"160",class:"aksrt-form",style:{"margin-bottom":"16px"}},{default:a(()=>[t(r,{label:"Tab 数量上限"},{default:a(()=>[t(P,{value:l.homepage_tab_limit,"onUpdate:value":e[8]||(e[8]=o=>l.homepage_tab_limit=o),min:1,max:12},null,8,["value"])]),_:1}),t(r,{label:"每 Tab 文章数"},{default:a(()=>[t(P,{value:l.homepage_tab_posts_per_page,"onUpdate:value":e[9]||(e[9]=o=>l.homepage_tab_posts_per_page=o),min:1,max:20},null,8,["value"])]),_:1})]),_:1},8,["model"]),l.home_lists.length===0?(f(),w("div",ne,[t(L,{depth:"3"},{default:a(()=>[...e[29]||(e[29]=[d("暂无更多栏目,点击“添加栏目”创建分类/专题 Tab。",-1)])]),_:1})])):H("",!0),(f(!0),w(Q,null,ee(l.home_lists,(o,b)=>(f(),w("div",{key:b,class:"homepage-settings__tab-row"},[i("div",_e,[t(k,{value:o.term_id,options:B.value,placeholder:"分类",filterable:"",style:{flex:"2"},"onUpdate:value":m=>h(b,"term_id",m)},null,8,["value","options","onUpdate:value"]),t(c,{value:o.title,placeholder:"自定义标题",style:{flex:"1"},"onUpdate:value":m=>h(b,"title",m)},null,8,["value","onUpdate:value"]),t(k,{value:o.orderby,options:C,style:{flex:"1"},"onUpdate:value":m=>h(b,"orderby",m)},null,8,["value","onUpdate:value"]),t(p,{value:o.enabled,"onUpdate:value":m=>h(b,"enabled",m)},null,8,["value","onUpdate:value"]),t(n,{size:"small",quaternary:"",type:"error",onClick:m=>X(b)},{default:a(()=>[...e[30]||(e[30]=[d("删除",-1)])]),_:1},8,["onClick"])])]))),128))]),_:1})]),_:1},8,["show"])]),_:1}),t(E,{name:"cards",tab:"卡片 & 交互"},{default:a(()=>[t(D,{show:v.value,style:{width:"100%","min-height":"200px"}},{default:a(()=>[t(u,{class:"aksrt-section-card",style:{"margin-bottom":"16px"}},{header:a(()=>[...e[31]||(e[31]=[i("strong",null,"列表显示",-1)])]),default:a(()=>[t(x,{type:"info","show-icon":!1},{default:a(()=>[...e[32]||(e[32]=[d(" 首页文章列表/卡片模式、样式变体与缩略图比例已统一到「文章&列表 → 文章列表」设置(对齐 Zibll 全局 list_type / list_card_home)。此处不再单独维护 homepage_card_style / 默认视图。 ",-1)])]),_:1})]),_:1}),t(u,{class:"aksrt-section-card",style:{"margin-bottom":"16px"}},{header:a(()=>[...e[33]||(e[33]=[i("strong",null,"交互设置",-1)])]),default:a(()=>[t(g,{model:l,"label-placement":"left","label-width":"160",class:"aksrt-form"},{default:a(()=>[t(r,{label:"排序栏 AJAX"},{feedback:a(()=>[...e[34]||(e[34]=[i("span",{class:"aksrt-hint-text"},"关闭后排序链接使用整页跳转。",-1)])]),default:a(()=>[t(p,{value:l.homepage_sort_ajax_enabled,"onUpdate:value":e[10]||(e[10]=o=>l.homepage_sort_ajax_enabled=o)},null,8,["value"])]),_:1}),t(r,{label:"Tab 吸顶"},{default:a(()=>[t(p,{value:l.homepage_sticky_tabs_enabled,"onUpdate:value":e[11]||(e[11]=o=>l.homepage_sticky_tabs_enabled=o)},null,8,["value"])]),_:1}),t(r,{label:"迷你侧栏列表"},{default:a(()=>[t(p,{value:l.homepage_sidebar_mini_enabled,"onUpdate:value":e[12]||(e[12]=o=>l.homepage_sidebar_mini_enabled=o)},null,8,["value"])]),_:1})]),_:1},8,["model"])]),_:1}),t(u,{class:"aksrt-section-card"},{header:a(()=>[...e[35]||(e[35]=[i("strong",null,"固定骨架说明",-1)])]),default:a(()=>[t(j,{vertical:""},{default:a(()=>[t(x,{type:"warning","show-icon":!1},{default:a(()=>[...e[36]||(e[36]=[d(" Hero 与 Banner 已作为固定首页骨架的一部分维护,不再由旧版首页模块编排驱动。 ",-1)])]),_:1}),t(x,{type:"info","show-icon":!1},{default:a(()=>[...e[37]||(e[37]=[d(" 如需调整首页首屏运营区,请前往对应管理页配置幻灯片内容或顶部组件参数。 ",-1)])]),_:1}),t(j,null,{default:a(()=>[t(n,{secondary:"",type:"primary",onClick:e[13]||(e[13]=o=>I(A).push("/page-display/hero"))},{default:a(()=>[...e[38]||(e[38]=[d("管理 Hero 轮播",-1)])]),_:1}),t(n,{secondary:"",type:"primary",onClick:e[14]||(e[14]=o=>I(A).push("/page-display/banner"))},{default:a(()=>[...e[39]||(e[39]=[d("管理 Banner 轮播",-1)])]),_:1}),t(n,{secondary:"",onClick:e[15]||(e[15]=o=>I(A).push("/page-display/header-components"))},{default:a(()=>[...e[40]||(e[40]=[d(" 顶部多功能组件 ",-1)])]),_:1})]),_:1})]),_:1})]),_:1})]),_:1},8,["show"])]),_:1})]),_:1},8,["value"]),i("div",re,[t(n,{type:"primary",loading:y.value,onClick:z},{default:a(()=>[...e[41]||(e[41]=[d("保存设置",-1)])]),_:1},8,["loading"])])])}}},ve=ae(ie,[["__scopeId","data-v-ae4c5b65"]]);export{ve as default}; diff --git a/assets/admin/build/NativeOpsRedirect.C0bocwWY.js b/assets/admin/build/NativeOpsRedirect.C0bocwWY.js new file mode 100644 index 00000000..5752da10 --- /dev/null +++ b/assets/admin/build/NativeOpsRedirect.C0bocwWY.js @@ -0,0 +1 @@ +import{o as d,X as a,Y as o,Z as u,c as l,$ as _,W as r}from"./vendor-vue.Bykizn0M.js";import{_ as m}from"./index.js";import"./vendor-naive.BuHWlEgf.js";import"./vendor-misc.1adHN6i_.js";const v={class:"aks-native-ops-redirect"},f={key:0},h=["href"],k={key:1,class:"desc"},b={__name:"NativeOpsRedirect",setup(w){const n=_(),p=l(()=>{var e;return((e=n.meta)==null?void 0:e.title)||"运营功能已迁移"}),t=l(()=>{var i,c;const e=((i=n.meta)==null?void 0:i.nativeAdminPath)||"";return e?(((c=window.aksrtAdminData)==null?void 0:c.adminUrl)||"/wp-admin/").replace(/\/?$/,"/")+e.replace(/^\//,""):""});return d(()=>{t.value&&window.location.replace(t.value)}),(e,s)=>(r(),a("div",v,[o("h2",null,u(p.value),1),s[0]||(s[0]=o("p",{class:"desc"}," 此运营功能已迁移到 WordPress 原生后台侧栏(对齐 zibll)。正在跳转… ",-1)),t.value?(r(),a("p",f,[o("a",{class:"button button-primary",href:t.value},"立即打开原生页面",8,h)])):(r(),a("p",k,"未配置原生跳转地址,请从左侧 WP 菜单进入。"))]))}},P=m(b,[["__scopeId","data-v-da26f551"]]);export{P as default}; diff --git a/assets/admin/build/NativeOpsRedirect.css b/assets/admin/build/NativeOpsRedirect.css new file mode 100644 index 00000000..57079d35 --- /dev/null +++ b/assets/admin/build/NativeOpsRedirect.css @@ -0,0 +1 @@ +.aks-native-ops-redirect[data-v-da26f551]{max-width:640px;margin:48px auto;padding:24px;background:var(--aks-surface, #fff);border-radius:8px;border:1px solid var(--aks-border, #e5e7eb)}.desc[data-v-da26f551]{color:#646970;line-height:1.6}.button[data-v-da26f551]{display:inline-block;margin-top:8px;padding:8px 14px;background:#2271b1;color:#fff;border-radius:4px;text-decoration:none} diff --git a/assets/admin/build/PageHeader.Di3JTPjc.js b/assets/admin/build/PageHeader.Di3JTPjc.js new file mode 100644 index 00000000..778459c5 --- /dev/null +++ b/assets/admin/build/PageHeader.Di3JTPjc.js @@ -0,0 +1 @@ +import{_ as n}from"./index.js";import{X as s,Y as d,Z as o,l as r,a5 as c,W as t,f as i}from"./vendor-vue.Bykizn0M.js";const _={class:"aksrt-page-header"},l={class:"aksrt-page-header__main"},h={class:"aksrt-page-header__title"},p={key:0,class:"aksrt-page-header__desc"},u={key:1,class:"aksrt-page-header__desc"},g={key:0,class:"aksrt-page-header__actions"},k={__name:"PageHeader",props:{title:{type:String,required:!0},desc:{type:String,default:""}},setup(a){return(e,m)=>(t(),s("header",_,[d("div",l,[d("h2",h,o(a.title),1),a.desc?(t(),s("p",p,[r(e.$slots,"desc",{},()=>[i(o(a.desc),1)],!0)])):e.$slots.desc?(t(),s("div",u,[r(e.$slots,"desc",{},void 0,!0)])):c("",!0)]),e.$slots.actions?(t(),s("div",g,[r(e.$slots,"actions",{},void 0,!0)])):c("",!0)]))}},$=n(k,[["__scopeId","data-v-8ce32c14"]]);export{$ as P}; diff --git a/assets/admin/build/PageHeader.css b/assets/admin/build/PageHeader.css new file mode 100644 index 00000000..85d21606 --- /dev/null +++ b/assets/admin/build/PageHeader.css @@ -0,0 +1 @@ +.aksrt-page-header[data-v-8ce32c14]{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:20px;flex-wrap:wrap}.aksrt-page-header__main[data-v-8ce32c14]{flex:1 1 auto;min-width:0}.aksrt-page-header__title[data-v-8ce32c14]{margin:0 0 6px;color:#1a1a2e;font-size:22px;font-weight:700;letter-spacing:-.02em;line-height:1.3}.aksrt-page-header__desc[data-v-8ce32c14]{margin:0;color:#7a7f8a;font-size:13px;line-height:1.65}.aksrt-page-header__actions[data-v-8ce32c14]{flex:0 0 auto;display:flex;align-items:center;gap:8px}@media(max-width:768px){.aksrt-page-header[data-v-8ce32c14]{margin-bottom:14px;gap:10px}.aksrt-page-header__title[data-v-8ce32c14]{font-size:18px}.aksrt-page-header__desc[data-v-8ce32c14]{font-size:12px}.aksrt-page-header__actions[data-v-8ce32c14]{width:100%}} diff --git a/assets/admin/build/PaymentGateway.BTbqvMWf.js b/assets/admin/build/PaymentGateway.BTbqvMWf.js new file mode 100644 index 00000000..7513a509 --- /dev/null +++ b/assets/admin/build/PaymentGateway.BTbqvMWf.js @@ -0,0 +1 @@ +import{_ as H,a1 as c,W as _,X as V,a4 as s,a3 as t,a2 as g,F as A,R as D,f as C,Z as d,a5 as $,l as I,N as h,c as z,o as T,r as F,Y as n,L as P}from"./vendor-vue.Bykizn0M.js";import{a as q}from"./shared-api.D5_fnN32.js";import{P as U}from"./PageHeader.Di3JTPjc.js";import{u as W,A as X,g as Y}from"./shared-api.B7o7Pzvu.js";import{u as L}from"./vendor-naive.BuHWlEgf.js";import{_ as Z}from"./index.js";import"./FaIcon.CX_hGmM4.js";import"./vendor-misc.1adHN6i_.js";const j={class:"aksrt-page-container"},J={__name:"PaymentSectionPage",props:{section:{type:String,required:!0},title:{type:String,required:!0},desc:{type:String,default:""},note:{type:String,default:""},links:{type:Array,default:()=>[]}},setup(m){const y=m,v=H(),o=L(),f=z(()=>Y("payment",y.section)||{groups:[]}),N=z(()=>{const l={};return(f.value.groups||[]).forEach(x=>{(x.fields||[]).forEach(w=>{w.default!==void 0&&(l[w.key]=w.default)})}),l}),{formData:u,loading:e,saving:i,loadError:p,dirty:S,save:B,reload:b}=W({fetch:()=>q.getSchemaPage("payment",y.section),submit:l=>q.saveSchemaPage("payment",y.section,l),defaults:N.value,onSaved:()=>{o.success("设置已保存")}});function E(l){v.push(l)}async function a(){try{await B()}catch(l){o.error(l.message||"保存失败")}}function r(){b(),o.info("已放弃更改")}return(l,x)=>{const w=c("n-button"),M=c("n-space"),R=c("n-alert"),G=c("n-card");return _(),V("div",j,[s(U,{title:m.title,desc:m.desc},{actions:t(()=>[m.links.length?(_(),g(M,{key:0},{default:t(()=>[(_(!0),V(A,null,D(m.links,k=>(_(),g(w,{key:k.path,quaternary:"",onClick:ne=>E(k.path)},{default:t(()=>[C(d(k.label),1)]),_:2},1032,["onClick"]))),128))]),_:1})):$("",!0)]),_:1},8,["title","desc"]),m.note?(_(),g(G,{key:0,class:"aksrt-section-card"},{default:t(()=>[s(R,{type:"info","show-icon":!1},{default:t(()=>[C(d(m.note),1)]),_:1})]),_:1})):$("",!0),I(l.$slots,"before-form"),s(X,{schema:f.value.groups,"form-data":h(u),dirty:h(S),loading:h(e),saving:h(i),"load-error":h(p),"show-search":!1,"onUpdate:formData":x[0]||(x[0]=k=>u.value=k),onSave:a,onReload:r},null,8,["schema","form-data","dirty","loading","saving","load-error"])])}}},K={class:"aksrt-gateway__card"},O={class:"aksrt-gateway__stat"},Q={class:"aksrt-gateway__stat"},ee={class:"aksrt-gateway__stat"},ae={class:"aksrt-gateway__stat"},te={__name:"PaymentGateway",setup(m){const y=L(),v=F([]),o=F({}),f=F(!1),N=z(()=>{var e;const u=(e=o.value.gateway)==null?void 0:e.mode;return u==="test_gateway"?"测试网关":u==="adapter_ready"?"适配器就绪":"人工确认"});return T(async()=>{var u;f.value=!0;try{const[e,i]=await Promise.all([q.request("/shop/gateways").catch(()=>null),q.request("/payment/overview").catch(()=>null)]);(u=e==null?void 0:e.data)!=null&&u.gateways&&(v.value=e.data.gateways),i!=null&&i.data&&(o.value=i.data)}catch{y.warning("部分支付接口暂不可用")}finally{f.value=!1}}),(u,e)=>{const i=c("n-tag"),p=c("n-grid-item"),S=c("n-grid"),B=c("n-empty"),b=c("n-card"),E=c("n-spin");return _(),g(J,{section:"gateway",title:"收款接口",desc:"管理支付网关、查看连接状态、配置回调口令。",note:"当前支持人工确认与测试联调;回调校验口令在接入真实网关时直接复用。",links:[{label:"余额充值",path:"/payment/recharge"},{label:"付费内容",path:"/payment/paid"}]},{"before-form":t(()=>[s(E,{show:f.value},{default:t(()=>[s(b,{class:"aksrt-section-card",title:"网关状态"},{default:t(()=>[s(S,{cols:3,"x-gap":12,"y-gap":12},{default:t(()=>[(_(!0),V(A,null,D(v.value,a=>(_(),g(p,{key:a.id},{default:t(()=>[n("div",K,[n("div",{class:P(["aksrt-gateway__icon",a.configured?"aksrt-gateway__icon--active":""])},[n("i",{class:P(a.id==="balance"?"fas fa-wallet":"fas fa-credit-card")},null,2)],2),n("div",null,[n("strong",null,d(a.name),1),n("p",null,d(a.configured?"已配置":"未配置"),1)]),s(i,{type:a.configured?"success":"default",size:"small",round:""},{default:t(()=>[C(d(a.configured?"可用":"不可用"),1)]),_:2},1032,["type"])])]),_:2},1024))),128))]),_:1}),!f.value&&v.value.length===0?(_(),g(B,{key:0,description:"暂无已注册的支付网关"})):$("",!0)]),_:1}),s(b,{class:"aksrt-section-card",title:"运行摘要"},{default:t(()=>[s(S,{cols:4,"x-gap":12,"y-gap":12},{default:t(()=>[s(p,null,{default:t(()=>[n("div",O,[n("strong",null,d(N.value),1),e[0]||(e[0]=n("p",null,"当前模式",-1))])]),_:1}),s(p,null,{default:t(()=>{var a,r;return[n("div",Q,[n("strong",{class:P((a=o.value.gateway)!=null&&a.test_enabled?"aksrt-text-warning":"")},d((r=o.value.gateway)!=null&&r.test_enabled?"启用":"关闭"),3),e[1]||(e[1]=n("p",null,"测试网关",-1))])]}),_:1}),s(p,null,{default:t(()=>{var a,r;return[n("div",ee,[n("strong",{class:P((a=o.value.gateway)!=null&&a.manual_review?"aksrt-text-info":"")},d((r=o.value.gateway)!=null&&r.manual_review?"启用":"关闭"),3),e[2]||(e[2]=n("p",null,"人工复核",-1))])]}),_:1}),s(p,null,{default:t(()=>{var a;return[n("div",ae,[s(i,{type:(a=o.value.gateway)!=null&&a.callback_secret?"success":"warning",size:"small",round:""},{default:t(()=>{var r;return[C(d((r=o.value.gateway)!=null&&r.callback_secret?"已设置":"未设置"),1)]}),_:1},8,["type"]),e[3]||(e[3]=n("p",null,"回调口令",-1))])]}),_:1})]),_:1})]),_:1})]),_:1},8,["show"])]),_:1})}}},_e=Z(te,[["__scopeId","data-v-fe319791"]]);export{_e as default}; diff --git a/assets/admin/build/PaymentGateway.css b/assets/admin/build/PaymentGateway.css new file mode 100644 index 00000000..c27e07b2 --- /dev/null +++ b/assets/admin/build/PaymentGateway.css @@ -0,0 +1 @@ +.aksrt-gateway__card[data-v-fe319791]{display:flex;align-items:center;gap:12px;padding:14px;border-radius:8px;background:var(--surface-2, #fafafa);border:1px solid var(--color-line, #f0f0f0)}.aksrt-gateway__icon[data-v-fe319791]{width:40px;height:40px;border-radius:8px;display:flex;align-items:center;justify-content:center;background:var(--surface-3, #f0f0f0);color:var(--color-ink-4, #8a909c);font-size:16px}.aksrt-gateway__icon--active[data-v-fe319791]{background:var(--color-primary-soft, #f0f5ff);color:var(--color-primary, #1890ff)}.aksrt-gateway__card strong[data-v-fe319791]{display:block;font-size:14px;color:var(--color-ink, #1a1a2e)}.aksrt-gateway__card p[data-v-fe319791]{margin:2px 0 0;font-size:12px;color:var(--color-ink-4, #8a909c)}.aksrt-gateway__stat[data-v-fe319791]{text-align:center;padding:16px;border-radius:8px;background:var(--surface-2, #fafafa)}.aksrt-gateway__stat strong[data-v-fe319791]{display:block;font-size:18px;font-weight:600;color:var(--color-ink, #1a1a2e)}.aksrt-gateway__stat p[data-v-fe319791]{margin:4px 0 0;font-size:12px;color:var(--color-ink-4, #8a909c)}.aksrt-text-warning[data-v-fe319791]{color:var(--color-warning, #f59e0b)}.aksrt-text-info[data-v-fe319791]{color:var(--color-info, #3b82f6)} diff --git a/assets/admin/build/PermissionsCapabilities.DAu3e_3q.js b/assets/admin/build/PermissionsCapabilities.DAu3e_3q.js new file mode 100644 index 00000000..1b27f68c --- /dev/null +++ b/assets/admin/build/PermissionsCapabilities.DAu3e_3q.js @@ -0,0 +1 @@ +import{a as V}from"./shared-api.D5_fnN32.js";import{P as R}from"./PageHeader.Di3JTPjc.js";import{_ as T}from"./index.js";import{u as U,b as C,e as q,f as H}from"./vendor-naive.BuHWlEgf.js";import{o as L,X as j,a4 as l,a3 as o,r as _,e as B,a1 as f,W as h,f as m,a2 as P,Y as c,N as S,Z as v,a5 as W,F as X,R as Y,k as r}from"./vendor-vue.Bykizn0M.js";import"./vendor-misc.1adHN6i_.js";const Z={class:"aksrt-page-container"},A={class:"aksrt-cap-matrix__header"},G={class:"aksrt-cap-matrix__title"},I={class:"aksrt-cap-matrix__desc"},K={class:"aksrt-form-actions"},Q={__name:"PermissionsCapabilities",setup($){const y=U(),g=_(!0),k=_(!1),b=_([]),N=_({}),u=B({cap_count:0,group_count:0,column_count:0}),i=B({}),x=_({});L(w);async function w(){g.value=!0;try{const e=await V.getCapabilities(),a=(e==null?void 0:e.data)||{};N.value=a.columns||{},b.value=a.groups||[],Object.assign(u,a.summary||{cap_count:0,group_count:0,column_count:0});const s={};for(const t of b.value)for(const n of t.items||[])s[n.cap_id]={...n.values||{}};O(i,s),x.value=JSON.parse(JSON.stringify(s))}catch(e){y.error((e==null?void 0:e.message)||"加载能力矩阵失败")}finally{g.value=!1}}function O(e,a){Object.keys(e).forEach(s=>delete e[s]),Object.entries(a).forEach(([s,t])=>{e[s]={...t}})}function z(e){const a=[{title:"能力项",key:"label",fixed:"left",width:280,render:t=>r("div",{class:"aksrt-cap-matrix__cap"},[r("strong",t.label),r("code",t.cap_id)])}],s=new Set;for(const t of e.items||[])for(const n of t.visible_columns||[])s.add(n);for(const t of Object.keys(N.value||{}))s.has(t)&&a.push({title:N.value[t],key:t,width:t==="level"||t==="vip"?110:100,render:n=>E(n,t)});return a}function E(e,a){var t,n;return(e.visible_columns||[]).includes(a)?(i[e.cap_id]||(i[e.cap_id]={...e.values||{}}),a==="level"||a==="vip"?r(q,{value:((t=i[e.cap_id])==null?void 0:t[a])??-1,min:-1,max:a==="level"?10:2,step:1,size:"small",style:"width: 90px",onUpdateValue:d=>J(e.cap_id,a,d??-1)}):r(H,{value:!!((n=i[e.cap_id])!=null&&n[a]),size:"small",onUpdateValue:d=>J(e.cap_id,a,d)})):r("span",{class:"aksrt-cap-matrix__empty"},"—")}function J(e,a,s){i[e]||(i[e]={}),i[e][a]=s}function M(){O(i,JSON.parse(JSON.stringify(x.value||{}))),y.info("已恢复默认矩阵")}async function D(){k.value=!0;try{await V.saveCapabilities(JSON.parse(JSON.stringify(i))),x.value=JSON.parse(JSON.stringify(i)),y.success("能力矩阵已保存")}catch(e){y.error((e==null?void 0:e.message)||"保存能力矩阵失败")}finally{k.value=!1}}return(e,a)=>{const s=f("n-button"),t=f("n-space"),n=f("n-card"),d=f("n-data-table"),F=f("n-spin");return h(),j("div",Z,[l(R,{title:"基本权限 / 能力矩阵",desc:"统一管理用户治理、投稿和评论的角色能力矩阵。"},{actions:o(()=>[l(t,null,{default:o(()=>[l(s,{quaternary:"",onClick:M},{default:o(()=>[...a[0]||(a[0]=[m("恢复默认",-1)])]),_:1})]),_:1})]),_:1}),l(F,{show:g.value,style:{width:"100%","min-height":"240px"}},{default:o(()=>[u.cap_count?(h(),P(n,{key:0,class:"aksrt-section-card"},{default:o(()=>[a[1]||(a[1]=c("div",{class:"aksrt-section-header"},[c("h3",null,"矩阵概览")],-1)),l(t,null,{default:o(()=>[l(S(C),{round:"",type:"info"},{default:o(()=>[m("能力项:"+v(u.cap_count),1)]),_:1}),l(S(C),{round:"",type:"info"},{default:o(()=>[m("分组:"+v(u.group_count),1)]),_:1}),l(S(C),{round:"",type:"info"},{default:o(()=>[m("角色列:"+v(u.column_count),1)]),_:1})]),_:1})]),_:1})):W("",!0),(h(!0),j(X,null,Y(b.value,p=>(h(),P(n,{key:p.key,class:"aksrt-section-card"},{header:o(()=>[c("div",A,[c("div",null,[c("h3",G,v(p.title),1),c("p",I,"共 "+v(p.items.length)+" 项能力",1)])])]),default:o(()=>[l(d,{columns:z(p),data:p.items,bordered:!0,size:"small","single-line":!1,"scroll-x":1200},null,8,["columns","data"])]),_:2},1024))),128)),c("div",K,[l(s,{type:"primary",loading:k.value,onClick:D},{default:o(()=>[...a[2]||(a[2]=[m("保存能力矩阵",-1)])]),_:1},8,["loading"])])]),_:1},8,["show"])])}}},ie=T(Q,[["__scopeId","data-v-34bd6923"]]);export{ie as default}; diff --git a/assets/admin/build/PermissionsCapabilities.css b/assets/admin/build/PermissionsCapabilities.css new file mode 100644 index 00000000..7014a9bf --- /dev/null +++ b/assets/admin/build/PermissionsCapabilities.css @@ -0,0 +1 @@ +.aksrt-cap-matrix__header[data-v-34bd6923]{display:flex;align-items:center;justify-content:space-between}.aksrt-cap-matrix__title[data-v-34bd6923]{margin:0;font-size:15px;font-weight:600}.aksrt-cap-matrix__desc[data-v-34bd6923]{margin:4px 0 0;font-size:12px;color:#8a909c}.aksrt-cap-matrix__cap[data-v-34bd6923]{display:flex;flex-direction:column;gap:4px}.aksrt-cap-matrix__cap code[data-v-34bd6923]{font-size:11px;color:#667085}.aksrt-cap-matrix__empty[data-v-34bd6923]{color:#c0c4cc}.aksrt-form-actions[data-v-34bd6923]{display:flex;justify-content:flex-end;margin-top:16px} diff --git a/assets/admin/build/PostPageSettings.B1brRzY8.js b/assets/admin/build/PostPageSettings.B1brRzY8.js new file mode 100644 index 00000000..a3a97ac6 --- /dev/null +++ b/assets/admin/build/PostPageSettings.B1brRzY8.js @@ -0,0 +1 @@ +import t from"./SchemaPage.CSkx936u.js";import{a2 as o,W as r}from"./vendor-vue.Bykizn0M.js";import"./shared-api.B7o7Pzvu.js";import"./FaIcon.CX_hGmM4.js";import"./index.js";import"./vendor-naive.BuHWlEgf.js";import"./vendor-misc.1adHN6i_.js";import"./shared-api.D5_fnN32.js";const l={__name:"PostPageSettings",setup(e){return(p,a)=>(r(),o(t,{domain:"post_list",section:"page"}))}};export{l as default}; diff --git a/assets/admin/build/ResourceDownload.DvRILKEZ.js b/assets/admin/build/ResourceDownload.DvRILKEZ.js new file mode 100644 index 00000000..aea02b97 --- /dev/null +++ b/assets/admin/build/ResourceDownload.DvRILKEZ.js @@ -0,0 +1 @@ +import{o as z,X as L,a4 as t,a3 as o,r as f,a1 as s,e as W,_ as E,W as R,f as r,Y as _,Z as m,a2 as H,a5 as I,c as V}from"./vendor-vue.Bykizn0M.js";import{a as c}from"./shared-api.D5_fnN32.js";import{P as O}from"./PageHeader.Di3JTPjc.js";import{u as X}from"./vendor-naive.BuHWlEgf.js";import"./index.js";import"./vendor-misc.1adHN6i_.js";const Y={class:"aksrt-page-container"},Z={class:"aksrt-form-actions"},ae={__name:"ResourceDownload",setup(j){const B=E(),k=X(),b=f(!0),x=f(!1),C=f({}),v=f({}),P=f({}),a=W({download_login:!0,download_credit:!0,download_captcha:!1,download_default_cost:0,payment_paid_post_types:"post",payment_vip_free_download:!1,payment_vip_exempt_roles:"",payment_paid_catalog_note:"",payment_manual_delivery_note:"付费或人工确认内容请在订单备注中记录交付方式。"}),S=V(()=>P.value.currency_name||v.value.currency_name||"积分"),T=V(()=>{var e;const l=((e=P.value.gateway)==null?void 0:e.mode)||"manual_review";return l==="test_gateway"?"测试网关":l==="adapter_ready"?"适配器就绪":"人工确认"});function N(l){B.push(l)}function U(l){return(l==null?void 0:l.data)??l??{}}async function h(){var l;b.value=!0;try{const[e,y,w,u]=await Promise.all([c.getCmsFeatures(),c.getCreditSettings(),c.getSchemaPage("payment","paid"),c.getPaymentOverview()]),p=(e==null?void 0:e.cms_features)??((l=e==null?void 0:e.data)==null?void 0:l.cms_features)??{},i=U(y),d=U(w);C.value=p,v.value=i,P.value=U(u),a.download_login=p.download_login!==!1,a.download_credit=p.download_credit!==!1,a.download_captcha=!!p.download_captcha,a.download_default_cost=Number(i.download_default_cost||0),a.payment_paid_post_types=d.payment_paid_post_types||"post",a.payment_vip_free_download=!!d.payment_vip_free_download,a.payment_vip_exempt_roles=d.payment_vip_exempt_roles||"",a.payment_paid_catalog_note=d.payment_paid_catalog_note||"",a.payment_manual_delivery_note=d.payment_manual_delivery_note||"付费或人工确认内容请在订单备注中记录交付方式。"}catch(e){k.error(e.message||"加载下载/付费内容中心失败")}finally{b.value=!1}}async function F(){x.value=!0;try{const l={...C.value,download_login:a.download_login,download_credit:a.download_credit,download_captcha:a.download_captcha},e={...v.value,download_default_cost:Number(a.download_default_cost||0)};await Promise.all([c.saveCmsFeatures(l),c.saveCreditSettings(e),c.saveSchemaPage("payment","paid",{payment_paid_post_types:a.payment_paid_post_types,payment_vip_free_download:a.payment_vip_free_download,payment_vip_exempt_roles:a.payment_vip_exempt_roles,payment_paid_catalog_note:a.payment_paid_catalog_note,payment_manual_delivery_note:a.payment_manual_delivery_note})]),C.value=l,v.value=e,k.success("下载/付费内容中心已保存")}catch(l){k.error(l.message||"保存失败")}finally{x.value=!1}}return z(h),(l,e)=>{const y=s("n-button"),w=s("n-space"),u=s("n-tag"),p=s("n-card"),i=s("n-switch"),d=s("n-form-item"),M=s("n-input-number"),D=s("n-form"),g=s("n-input"),$=s("n-alert"),q=s("n-spin");return R(),L("div",Y,[t(O,{title:"下载/付费内容中心",desc:"统一管理资源下载门槛、积分购买模式开关、角色免扣和人工交付说明。付费解锁走收银台订单,下载 token 不再按次扣费。"},{actions:o(()=>[t(w,null,{default:o(()=>[t(y,{quaternary:"",onClick:e[0]||(e[0]=n=>N("/permissions/download"))},{default:o(()=>[...e[11]||(e[11]=[r("下载权限",-1)])]),_:1}),t(y,{quaternary:"",onClick:e[1]||(e[1]=n=>N("/payment/gateway"))},{default:o(()=>[...e[12]||(e[12]=[r("收款接口",-1)])]),_:1})]),_:1})]),_:1}),t(q,{show:b.value,style:{width:"100%","min-height":"200px"}},{default:o(()=>[t(p,{class:"aksrt-section-card"},{default:o(()=>[e[14]||(e[14]=_("div",{class:"aksrt-section-header"},[_("h3",null,"当前联动摘要")],-1)),t(w,null,{default:o(()=>[t(u,{round:"",type:a.download_login?"warning":"default"},{default:o(()=>[r(" 登录门槛:"+m(a.download_login?"已启用":"已关闭"),1)]),_:1},8,["type"]),t(u,{round:"",type:a.download_credit?"warning":"default"},{default:o(()=>[r(" 积分购买模式:"+m(a.download_credit?"已启用":"已关闭"),1)]),_:1},8,["type"]),t(u,{round:"",type:a.download_captcha?"warning":"default"},{default:o(()=>[r(" 下载验证码:"+m(a.download_captcha?"已启用":"已关闭"),1)]),_:1},8,["type"]),t(u,{round:"",type:"info"},{default:o(()=>[r(" 默认积分价:"+m(a.download_default_cost)+" "+m(S.value),1)]),_:1}),t(u,{round:"",type:a.payment_vip_free_download?"success":"default"},{default:o(()=>[r(" 角色白名单免费:"+m(a.payment_vip_free_download?"已启用":"未启用"),1)]),_:1},8,["type"]),t(u,{round:"",type:"info"},{default:o(()=>[...e[13]||(e[13]=[r(" Token TTL:10 分钟 ",-1)])]),_:1})]),_:1})]),_:1}),t(p,{class:"aksrt-section-card"},{default:o(()=>[e[17]||(e[17]=_("div",{class:"aksrt-section-header"},[_("h3",null,"下载门槛")],-1)),t(D,{model:a,"label-placement":"left","label-width":"180",class:"aksrt-form"},{default:o(()=>[t(d,{label:"下载需要登录"},{default:o(()=>[t(i,{value:a.download_login,"onUpdate:value":e[2]||(e[2]=n=>a.download_login=n)},null,8,["value"])]),_:1}),t(d,{label:"允许积分购买模式"},{feedback:o(()=>[...e[15]||(e[15]=[_("span",{class:"aksrt-hint-text"},"开启后,文章 pay_modo=积分 可走收银台一次购买解锁;下载 token 不再按次扣积分。关闭时积分模式资源按免费/需登录策略处理。",-1)])]),default:o(()=>[t(i,{value:a.download_credit,"onUpdate:value":e[3]||(e[3]=n=>a.download_credit=n)},null,8,["value"])]),_:1}),t(d,{label:"下载启用验证码"},{default:o(()=>[t(i,{value:a.download_captcha,"onUpdate:value":e[4]||(e[4]=n=>a.download_captcha=n)},null,8,["value"])]),_:1}),t(d,{label:`默认积分价(${S.value})`},{feedback:o(()=>[...e[16]||(e[16]=[_("span",{class:"aksrt-hint-text"},"仅作运营参考/兼容字段;实际价格以文章 _aksrt_pay 的积分价/现金价为准。角色白名单命中时免费下载。",-1)])]),default:o(()=>[t(M,{value:a.download_default_cost,"onUpdate:value":e[5]||(e[5]=n=>a.download_default_cost=n),min:0,max:1e5,style:{width:"180px"}},null,8,["value"])]),_:1},8,["label"])]),_:1},8,["model"])]),_:1}),t(p,{class:"aksrt-section-card"},{default:o(()=>[e[20]||(e[20]=_("div",{class:"aksrt-section-header"},[_("h3",null,"付费内容策略")],-1)),t(D,{model:a,"label-placement":"left","label-width":"180",class:"aksrt-form"},{default:o(()=>[t(d,{label:"受管内容类型"},{feedback:o(()=>[...e[18]||(e[18]=[_("span",{class:"aksrt-hint-text"},"逗号分隔,标记纳入统一付费策略的内容类型。",-1)])]),default:o(()=>[t(g,{value:a.payment_paid_post_types,"onUpdate:value":e[6]||(e[6]=n=>a.payment_paid_post_types=n),placeholder:"post,course,doc"},null,8,["value"])]),_:1}),t(d,{label:"角色白名单免扣下载"},{default:o(()=>[t(i,{value:a.payment_vip_free_download,"onUpdate:value":e[7]||(e[7]=n=>a.payment_vip_free_download=n)},null,8,["value"])]),_:1}),a.payment_vip_free_download?(R(),H(d,{key:0,label:"免扣角色列表"},{feedback:o(()=>[...e[19]||(e[19]=[_("span",{class:"aksrt-hint-text"},"命中这些 WordPress role 的用户可免费下载(无需购买)。",-1)])]),default:o(()=>[t(g,{value:a.payment_vip_exempt_roles,"onUpdate:value":e[8]||(e[8]=n=>a.payment_vip_exempt_roles=n),placeholder:"administrator,editor,vip"},null,8,["value"])]),_:1})):I("",!0),t(d,{label:"前台付费提示"},{default:o(()=>[t(g,{value:a.payment_paid_catalog_note,"onUpdate:value":e[9]||(e[9]=n=>a.payment_paid_catalog_note=n),type:"textarea",autosize:{minRows:3,maxRows:6},placeholder:"可填写资源购买须知、交付说明或人工确认提示。"},null,8,["value"])]),_:1}),t(d,{label:"人工交付备注"},{default:o(()=>[t(g,{value:a.payment_manual_delivery_note,"onUpdate:value":e[10]||(e[10]=n=>a.payment_manual_delivery_note=n),type:"textarea",autosize:{minRows:3,maxRows:6}},null,8,["value"])]),_:1})]),_:1},8,["model"])]),_:1}),t(p,{class:"aksrt-section-card"},{default:o(()=>[t($,{type:"info","show-icon":!1},{default:o(()=>[r(" 当前收款模式:"+m(T.value)+"。充值、VIP、返佣和分成页均已提供稳定结构,订单和结算台账直接衔接这些字段。 ",1)]),_:1})]),_:1}),_("div",Z,[t(y,{type:"primary",loading:x.value,onClick:F},{default:o(()=>[...e[21]||(e[21]=[r("保存配置",-1)])]),_:1},8,["loading"])])]),_:1},8,["show"])])}}};export{ae as default}; diff --git a/assets/admin/build/SchemaPage.CSkx936u.js b/assets/admin/build/SchemaPage.CSkx936u.js new file mode 100644 index 00000000..b539ba11 --- /dev/null +++ b/assets/admin/build/SchemaPage.CSkx936u.js @@ -0,0 +1 @@ +import{aa as R,a1 as i,W as _,a2 as S,a3 as l,a4 as a,f,Y as C,c as x,w as te,b as ae,X as K,ab as ne,R as le,N as A,a5 as M,ac as oe,I as se,Z as ue,r as L,$ as ce,l as re,ad as ie,ae as de,n as pe}from"./vendor-vue.Bykizn0M.js";import{u as me,A as fe,n as ve,g as $}from"./shared-api.B7o7Pzvu.js";import{a as F}from"./shared-api.D5_fnN32.js";import{_ as _e}from"./index.js";import{u as ge}from"./vendor-naive.BuHWlEgf.js";import"./FaIcon.CX_hGmM4.js";import"./vendor-misc.1adHN6i_.js";const ye={__name:"TencentConfig",props:{modelValue:{type:Object,default:()=>({})},modelModifiers:{}},emits:["update:modelValue"],setup(T){const s=R(T,"modelValue"),y=x(()=>{const u=s.value;return!!(u.secret_id&&u.secret_key&&u.app_id&&u.app_secret_key)});return(u,e)=>{const v=i("n-divider"),o=i("n-a"),m=i("n-alert"),p=i("n-input"),g=i("n-form-item"),k=i("n-tag"),I=i("n-space"),V=i("n-form");return _(),S(V,{"label-placement":"left","label-width":"130"},{default:l(()=>[a(I,{vertical:"",style:{width:"100%"}},{default:l(()=>[a(v,{"title-placement":"left"},{default:l(()=>[...e[4]||(e[4]=[f("云 API 密钥(用于 TC3 签名)",-1)])]),_:1}),a(m,{type:"warning",style:{"margin-bottom":"12px"}},{default:l(()=>[e[6]||(e[6]=f(" 请从 ",-1)),a(o,{href:"https://console.cloud.tencent.com/cam/capi",target:"_blank"},{default:l(()=>[...e[5]||(e[5]=[f("访问管理控制台 → API 密钥管理",-1)])]),_:1}),e[7]||(e[7]=f(" 获取。建议使用子账号密钥并仅授予 ",-1)),e[8]||(e[8]=C("code",null,"QcloudCaptchaFullAccess",-1)),e[9]||(e[9]=f(" 权限。 ",-1))]),_:1}),a(g,{label:"SecretId"},{default:l(()=>[a(p,{value:s.value.secret_id,"onUpdate:value":e[0]||(e[0]=c=>s.value.secret_id=c),placeholder:"腾讯云 API SecretId",autocomplete:"off"},null,8,["value"])]),_:1}),a(g,{label:"SecretKey"},{default:l(()=>[a(p,{value:s.value.secret_key,"onUpdate:value":e[1]||(e[1]=c=>s.value.secret_key=c),type:"text",placeholder:"腾讯云 API SecretKey",autocomplete:"off","show-password-on":"click"},null,8,["value"])]),_:1}),a(v,{"title-placement":"left"},{default:l(()=>[...e[10]||(e[10]=[f("验证码密钥",-1)])]),_:1}),a(g,{label:"CaptchaAppId"},{default:l(()=>[a(p,{value:s.value.app_id,"onUpdate:value":e[2]||(e[2]=c=>s.value.app_id=c),placeholder:"从验证码控制台获取 CaptchaAppId",autocomplete:"off"},null,8,["value"])]),_:1}),a(g,{label:"AppSecretKey"},{feedback:l(()=>[...e[11]||(e[11]=[f("请从「验证管理 → 基础配置」完整复制,注意区分 I/l/1/O/0",-1)])]),default:l(()=>[a(p,{value:s.value.app_secret_key,"onUpdate:value":e[3]||(e[3]=c=>s.value.app_secret_key=c),type:"text",placeholder:"从验证码控制台获取 AppSecretKey",autocomplete:"off","show-password-on":"click"},null,8,["value"])]),_:1}),a(m,{type:"info",style:{"margin-bottom":"12px"}},{default:l(()=>[...e[12]||(e[12]=[f(" 腾讯云验证码 2.0 — 验证类型(滑动拼图、文字点选、空间语义等)请在",-1),C("a",{href:"https://console.cloud.tencent.com/captcha/graphical",target:"_blank"},"验证码控制台",-1),f("配置。 ",-1)])]),_:1}),y.value?(_(),S(k,{key:0,type:"success",size:"small"},{default:l(()=>[...e[13]||(e[13]=[f("✓ 已完整配置",-1)])]),_:1})):(_(),S(k,{key:1,type:"warning",size:"small"},{default:l(()=>[...e[14]||(e[14]=[f("未完成配置",-1)])]),_:1}))]),_:1})]),_:1})}}},we={__name:"AliyunConfig",props:{modelValue:{type:Object,default:()=>({})},modelModifiers:{}},emits:["update:modelValue"],setup(T){const s=R(T,"modelValue"),y=x(()=>{const u=s.value;return!!(u.region&&u.prefix&&u.scene_id&&u.access_key_id&&u.access_key_secret)});return(u,e)=>{const v=i("n-divider"),o=i("n-select"),m=i("n-form-item"),p=i("n-input"),g=i("n-alert"),k=i("n-tag"),I=i("n-space"),V=i("n-form");return _(),S(V,{"label-placement":"left","label-width":"130"},{default:l(()=>[a(I,{vertical:"",style:{width:"100%"}},{default:l(()=>[a(v,{"title-placement":"left"},{default:l(()=>[...e[5]||(e[5]=[f("前端配置",-1)])]),_:1}),a(m,{label:"所属地区"},{default:l(()=>[a(o,{value:s.value.region,"onUpdate:value":e[0]||(e[0]=c=>s.value.region=c),options:[{label:"中国内地 (cn)",value:"cn"},{label:"新加坡 (sgp)",value:"sgp"}],placeholder:"选择地区"},null,8,["value"])]),_:1}),a(m,{label:"身份标 (prefix)"},{default:l(()=>[a(p,{value:s.value.prefix,"onUpdate:value":e[1]||(e[1]=c=>s.value.prefix=c),placeholder:"从概览页获取身份标",autocomplete:"off"},null,8,["value"])]),_:1}),a(m,{label:"场景ID"},{default:l(()=>[a(p,{value:s.value.scene_id,"onUpdate:value":e[2]||(e[2]=c=>s.value.scene_id=c),placeholder:"从验证码场景列表获取 SceneId",autocomplete:"off"},null,8,["value"])]),_:1}),a(v,{"title-placement":"left"},{default:l(()=>[...e[6]||(e[6]=[f("后端 API 密钥(用于服务端验签)",-1)])]),_:1}),a(m,{label:"AccessKey ID"},{default:l(()=>[a(p,{value:s.value.access_key_id,"onUpdate:value":e[3]||(e[3]=c=>s.value.access_key_id=c),placeholder:"阿里云 RAM 用户 AccessKey ID",autocomplete:"off"},null,8,["value"])]),_:1}),a(m,{label:"AccessKey Secret"},{default:l(()=>[a(p,{value:s.value.access_key_secret,"onUpdate:value":e[4]||(e[4]=c=>s.value.access_key_secret=c),type:"password","show-password-on":"click",autocomplete:"current-password",placeholder:"阿里云 RAM 用户 AccessKey Secret"},null,8,["value"])]),_:1}),a(g,{type:"warning",style:{"margin-bottom":"8px"}},{default:l(()=>[...e[7]||(e[7]=[f(" 请使用 RAM 子账号密钥并授权 ",-1),C("code",null,"AliyunYundunAFSFullAccess",-1),f(" 权限,切勿使用主账号密钥。 ",-1)])]),_:1}),y.value?(_(),S(k,{key:0,type:"success",size:"small"},{default:l(()=>[...e[8]||(e[8]=[f("✓ 已完整配置",-1)])]),_:1})):(_(),S(k,{key:1,type:"warning",size:"small"},{default:l(()=>[...e[9]||(e[9]=[f("未完成配置",-1)])]),_:1}))]),_:1})]),_:1})}}},he={__name:"CloudflareConfig",props:{modelValue:{type:Object,default:()=>({})},modelModifiers:{}},emits:["update:modelValue"],setup(T){const s=R(T,"modelValue"),y=x(()=>{const v=s.value;return!!(v.site_key&&v.secret_key)}),u=[{label:"自动",value:"auto"},{label:"浅色",value:"light"},{label:"深色",value:"dark"}],e=[{label:"正常",value:"normal"},{label:"紧凑",value:"compact"}];return(v,o)=>{const m=i("n-input"),p=i("n-form-item"),g=i("n-select"),k=i("n-tag"),I=i("n-space"),V=i("n-form");return _(),S(V,{"label-placement":"left","label-width":"130"},{default:l(()=>[a(I,{vertical:"",style:{width:"100%"}},{default:l(()=>[a(p,{label:"Site Key"},{default:l(()=>[a(m,{value:s.value.site_key,"onUpdate:value":o[0]||(o[0]=c=>s.value.site_key=c),placeholder:"Cloudflare Turnstile Site Key",autocomplete:"off"},null,8,["value"])]),_:1}),a(p,{label:"Secret Key"},{default:l(()=>[a(m,{value:s.value.secret_key,"onUpdate:value":o[1]||(o[1]=c=>s.value.secret_key=c),type:"password","show-password-on":"click",autocomplete:"current-password"},null,8,["value"])]),_:1}),a(p,{label:"自定义域名"},{default:l(()=>[a(m,{value:s.value.domain,"onUpdate:value":o[2]||(o[2]=c=>s.value.domain=c),placeholder:"留空使用默认域名",autocomplete:"url"},null,8,["value"])]),_:1}),a(p,{label:"主题"},{default:l(()=>[a(g,{value:s.value.theme,"onUpdate:value":o[3]||(o[3]=c=>s.value.theme=c),options:u,clearable:""},null,8,["value"])]),_:1}),a(p,{label:"尺寸"},{default:l(()=>[a(g,{value:s.value.size,"onUpdate:value":o[4]||(o[4]=c=>s.value.size=c),options:e,clearable:""},null,8,["value"])]),_:1}),y.value?(_(),S(k,{key:0,type:"success",size:"small"},{default:l(()=>[...o[5]||(o[5]=[f("✓ 已完整配置",-1)])]),_:1})):(_(),S(k,{key:1,type:"warning",size:"small"},{default:l(()=>[...o[6]||(o[6]=[f("未完成配置",-1)])]),_:1}))]),_:1})]),_:1})}}},ke={__name:"GeetestConfig",props:{modelValue:{type:Object,default:()=>({product:"bind"})},modelModifiers:{}},emits:["update:modelValue"],setup(T){const s=R(T,"modelValue"),y=x(()=>{const u=s.value;return!!(u.captcha_id&&u.captcha_key)});return(u,e)=>{const v=i("n-input"),o=i("n-form-item"),m=i("n-tag"),p=i("n-space"),g=i("n-form");return _(),S(g,{"label-placement":"left","label-width":"130"},{default:l(()=>[a(p,{vertical:"",style:{width:"100%"}},{default:l(()=>[a(o,{label:"Captcha ID"},{default:l(()=>[a(v,{value:s.value.captcha_id,"onUpdate:value":e[0]||(e[0]=k=>s.value.captcha_id=k),placeholder:"极验 GeeTest CaptchaID",autocomplete:"off"},null,8,["value"])]),_:1}),a(o,{label:"Captcha Key"},{default:l(()=>[a(v,{value:s.value.captcha_key,"onUpdate:value":e[1]||(e[1]=k=>s.value.captcha_key=k),type:"password","show-password-on":"click",autocomplete:"current-password"},null,8,["value"])]),_:1}),y.value?(_(),S(m,{key:0,type:"success",size:"small"},{default:l(()=>[...e[2]||(e[2]=[f("✓ 已完整配置",-1)])]),_:1})):(_(),S(m,{key:1,type:"warning",size:"small"},{default:l(()=>[...e[3]||(e[3]=[f("未完成配置",-1)])]),_:1}))]),_:1})]),_:1})}}},be={class:"aksrt-schema-page"},Se={key:0,class:"aksrt-schema-page__tool-actions"},Ce={class:"captcha-test-panel"},Te={class:"captcha-test-body"},xe={key:0,style:{"text-align":"center",padding:"40px"}},Ue={style:{"font-size":"16px",margin:"0"}},Ae={key:2,id:"captcha-test-box",style:{"min-height":"150px"}},Ie={__name:"SchemaPage",props:{domain:{type:String,default:""},section:{type:String,default:""},showSearch:{type:Boolean,default:!0}},setup(T){const s=T,y=ce(),u=ge(),e=L(!1),v=L(!1),o=L(null),m=x(()=>{var n,t;return ve(s.domain||((n=y.meta)==null?void 0:n.canonicalDomain)||((t=y.meta)==null?void 0:t.schemaDomain)||I(y.path))}),p=x(()=>{var n,t;return s.section||((n=y.meta)==null?void 0:n.section)||((t=y.meta)==null?void 0:t.schemaSection)||V(y.path)}),g=x(()=>m.value==="permissions"&&p.value==="login"),k=x(()=>m.value==="permissions"&&p.value==="moderation");function I(n){return n.split("/").filter(Boolean)[0]||"global"}function V(n){const t=n.split("/").filter(Boolean);return t[t.length-1]||"common"}const c=x(()=>{var t,h;const n=$(m.value,p.value);return n&&n.groups&&n.groups.length>0?{title:n.title||"",description:n.description||"",icon:n.icon||"",groups:n.groups}:{title:((t=y.meta)==null?void 0:t.title)||"",description:((h=y.meta)==null?void 0:h.desc)||"",icon:"",groups:[]}}),N=x(()=>{const n=$(m.value,p.value);if(!n)return{};const t={};for(const h of n.groups||[])for(const d of h.fields||[])d.default!==void 0&&(t[d.key]=d.default);return t}),{formData:z,loading:B,saving:q,loadError:O,dirty:G,save:J,reload:E}=me({fetch:()=>F.getSchemaPage(m.value,p.value),submit:n=>F.saveSchemaPage(m.value,p.value,n),defaults:N.value,onSaved:()=>{u.success("设置已保存")}});async function Y(){try{await J()}catch(n){u.error("保存失败: "+((n==null?void 0:n.message)||"未知错误"))}}function Q(){U(),E(),u.info("已放弃更改")}function W(n){if(!z.value||!n)return{};const t=z.value[n];return t&&typeof t=="object"?t:{}}function X(){var r;const n=(r=z.value)==null?void 0:r.active_provider;if(!n)return;const t=W(n),d=({tencent:["secret_id","secret_key","app_id","app_secret_key"],aliyun:["region","prefix","scene_id","access_key_id","access_key_secret"],cloudflare:["site_key","secret_key"],geetest:["captcha_id","captcha_key"]}[n]||[]).filter(D=>!t[D]);if(d.length){u.warning(`请先填写必填字段: ${d.join(", ")}`);return}if(n==="tencent"){j(t);return}e.value=!0,o.value=null,v.value=!0,pe(()=>{Z(n,t)})}function j(n){const t="https://turing.captcha.qcloud.com/TJCaptcha.js";if(typeof window.TencentCaptcha<"u"){try{new window.TencentCaptcha(n.app_id,function(r){r.ret===0?u.success("腾讯云验证码测试成功!配置正确。"):u.warning("验证已取消。")},{userLanguage:"zh-cn"}).show()}catch(r){u.error("初始化失败: "+r.message)}return}const h=document.querySelector('script[src="'+t+'"]');if(h){h.addEventListener("load",function(){j(n)},{once:!0});return}const d=document.createElement("script");d.src=t,d.onload=function(){try{new window.TencentCaptcha(n.app_id,function(r){r.ret===0?u.success("腾讯云验证码测试成功!"):u.warning("验证已取消。")},{userLanguage:"zh-cn"}).show()}catch(r){u.error("初始化失败: "+r.message)}},d.onerror=function(){u.error("加载腾讯验证码SDK失败")},document.head.appendChild(d)}function Z(n,t){setTimeout(()=>{v.value=!1,H(n,t)},100)}function H(n,t){const h=document.getElementById("captcha-test-sdk");if(h&&h.remove(),window.__gtTestCaptcha){try{window.__gtTestCaptcha.destroy()}catch{}window.__gtTestCaptcha=null}const d=document.createElement("script");switch(d.id="captcha-test-sdk",n){case"tencent":d.src="https://turing.captcha.qcloud.com/TJCaptcha.js",d.onload=function(){try{new window.TencentCaptcha(t.app_id,function(r){o.value={success:r.ret===0,message:r.ret===0?"验证成功!":"验证已取消。"}},{userLanguage:"zh-cn"}).show()}catch(r){o.value={success:!1,message:"初始化失败: "+r.message}}},d.onerror=function(){o.value={success:!1,message:"加载SDK失败"}};break;case"cloudflare":window.onTurnstileTestLoad=function(){try{window.turnstile.render("#captcha-test-box",{sitekey:t.site_key,theme:"auto",size:t.size||"normal",callback:function(){o.value={success:!0,message:"验证成功!"},u.success("Cloudflare Turnstile 测试成功!"),setTimeout(U,1500)},"error-callback":function(){o.value={success:!1,message:"验证失败"}}})}catch(r){o.value={success:!1,message:"初始化失败: "+r.message}}},d.src="https://challenges.cloudflare.com/turnstile/v0/api.js?onload=onTurnstileTestLoad",d.onerror=function(){o.value={success:!1,message:"加载SDK失败"}};break;case"geetest":d.src="https://static.geetest.com/v4/gt4.js",d.onload=function(){try{window.initGeetest4({captchaId:t.captcha_id,product:t.product||"float"},function(r){window.__gtTestCaptcha=r;const D=function(){o.value={success:!0,message:"验证成功!"},u.success("极验 GeeTest 测试成功!"),setTimeout(U,1500)},P=function(b){o.value={success:!1,message:"出错: "+(b.msg||"?")}},w=function(){o.value||(o.value={success:!1,message:"已关闭"})};(t.product||"float")==="bind"?r.onReady(()=>r.showCaptcha()).onSuccess(D).onError(P).onClose(w):r.appendTo("#captcha-test-box").onReady(()=>{}).onSuccess(D).onError(P).onClose(w)})}catch(r){o.value={success:!1,message:"初始化失败: "+r.message}}},d.onerror=function(){o.value={success:!1,message:"加载SDK失败"}};break;case"aliyun":window.AliyunCaptchaConfig={region:t.region||"cn",prefix:t.prefix},d.src="https://o.alicdn.com/captcha-frontend/aliyunCaptcha/AliyunCaptcha.js",d.onload=function(){try{window.initAliyunCaptcha({SceneId:t.scene_id,mode:"embed",element:"#captcha-test-box",success:function(){o.value={success:!0,message:"验证成功!"},u.success("阿里云测试成功!"),setTimeout(U,1500)},fail:function(r){o.value={success:!1,message:String(r)}},getInstance:function(){},slideStyle:{width:360,height:40},language:"cn"})}catch(r){o.value={success:!1,message:"初始化失败: "+r.message}}},d.onerror=function(){o.value={success:!1,message:"加载SDK失败"}};break;default:o.value={success:!1,message:"未知服务商"};return}document.head.appendChild(d)}function U(){if(e.value=!1,o.value=null,v.value=!1,window.__gtTestCaptcha){try{window.__gtTestCaptcha.destroy()}catch{}window.__gtTestCaptcha=null}const n=document.getElementById("captcha-test-sdk");if(n&&n.remove(),window.onTurnstileTestLoad)try{delete window.onTurnstileTestLoad}catch{}}return te([m,p],([n,t],[h,d])=>{(n!==h||t!==d)&&(U(),E())}),ae(()=>{U()}),(n,t)=>{var D,P;const h=i("n-dynamic-tags"),d=i("n-button"),r=i("n-spin");return _(),K("div",be,[a(fe,{title:c.value.title,description:c.value.description,icon:c.value.icon,schema:c.value.groups,"form-data":A(z),dirty:A(G),loading:A(B),saving:A(q),"load-error":A(O),"show-search":T.showSearch,"onUpdate:formData":t[0]||(t[0]=w=>z.value=w),onSave:Y,onReload:Q},ne({_:2},[g.value?{name:"field-tencent",fn:l(({value:w,setValue:b})=>[a(ye,{"model-value":w||{},"onUpdate:modelValue":b},null,8,["model-value","onUpdate:modelValue"])]),key:"0"}:void 0,g.value?{name:"field-aliyun",fn:l(({value:w,setValue:b})=>[a(we,{"model-value":w||{},"onUpdate:modelValue":b},null,8,["model-value","onUpdate:modelValue"])]),key:"1"}:void 0,g.value?{name:"field-cloudflare",fn:l(({value:w,setValue:b})=>[a(he,{"model-value":w||{},"onUpdate:modelValue":b},null,8,["model-value","onUpdate:modelValue"])]),key:"2"}:void 0,g.value?{name:"field-geetest",fn:l(({value:w,setValue:b})=>[a(ke,{"model-value":w||{},"onUpdate:modelValue":b},null,8,["model-value","onUpdate:modelValue"])]),key:"3"}:void 0,k.value?{name:"field-geoip_block_countries",fn:l(({value:w,setValue:b})=>[a(h,{value:Array.isArray(w)?w:[],"onUpdate:value":b},null,8,["value","onUpdate:value"]),t[1]||(t[1]=C("p",{class:"aksrt-schema-page__field-hint"},"使用 ISO 国家代码,如 CN / US / RU。",-1))]),key:"4"}:void 0,le(n.$slots,(w,b)=>({name:b,fn:l(ee=>[re(n.$slots,b,ie(de(ee)),void 0,!0)])}))]),1032,["title","description","icon","schema","form-data","dirty","loading","saving","load-error","show-search"]),g.value&&!A(B)?(_(),K("div",Se,[a(d,{disabled:!((D=A(z))!=null&&D.enabled)||!((P=A(z))!=null&&P.active_provider),onClick:X},{default:l(()=>[...t[2]||(t[2]=[f(" 测试验证 ",-1)])]),_:1},8,["disabled"])])):M("",!0),e.value?(_(),K("div",{key:1,class:"captcha-test-overlay",onClick:oe(U,["self"])},[C("div",Ce,[C("div",{class:"captcha-test-header"},[t[3]||(t[3]=C("span",null,"测试验证码",-1)),C("button",{class:"captcha-test-close",onClick:U},"×")]),C("div",Te,[v.value?(_(),K("div",xe,[a(r),t[4]||(t[4]=C("p",{style:{"margin-top":"10px",color:"#999"}},"加载中...",-1))])):M("",!0),o.value&&!v.value?(_(),K("div",{key:1,style:se({color:o.value.success?"#18a058":"#d03050",textAlign:"center",padding:"20px"})},[C("p",Ue,ue(o.value.message),1)],4)):M("",!0),!v.value&&!o.value?(_(),K("div",Ae)):M("",!0)])])])):M("",!0)])}}},Le=_e(Ie,[["__scopeId","data-v-a4bec770"]]);export{Le as default}; diff --git a/assets/admin/build/SchemaPage.css b/assets/admin/build/SchemaPage.css new file mode 100644 index 00000000..ed661ac8 --- /dev/null +++ b/assets/admin/build/SchemaPage.css @@ -0,0 +1 @@ +.aksrt-schema-page[data-v-a4bec770]{max-width:1100px;margin:0 auto}.aksrt-schema-page__tool-actions[data-v-a4bec770]{display:flex;justify-content:flex-end;margin-top:16px}.aksrt-schema-page__field-hint[data-v-a4bec770]{margin:8px 0 0;font-size:12px;color:#8a909c}.captcha-test-overlay[data-v-a4bec770]{position:fixed;top:0;left:0;width:100%;height:100%;background:#00000080;display:flex;justify-content:center;align-items:center;z-index:9999}.captcha-test-panel[data-v-a4bec770]{background:#fff;border-radius:12px;width:420px;max-width:90%;box-shadow:0 8px 32px #0000002e}.captcha-test-header[data-v-a4bec770]{display:flex;justify-content:space-between;align-items:center;padding:18px 22px;border-bottom:1px solid #e8e8ec;font-size:16px;font-weight:600}.captcha-test-close[data-v-a4bec770]{background:none;border:none;font-size:24px;cursor:pointer;color:#999;padding:0;line-height:1}.captcha-test-close[data-v-a4bec770]:hover{color:#333}.captcha-test-body[data-v-a4bec770]{padding:24px;min-height:180px;display:flex;justify-content:center;align-items:center} diff --git a/assets/admin/build/ThemeAuthorizationPage.exqEspJr.js b/assets/admin/build/ThemeAuthorizationPage.exqEspJr.js new file mode 100644 index 00000000..e85684f9 --- /dev/null +++ b/assets/admin/build/ThemeAuthorizationPage.exqEspJr.js @@ -0,0 +1 @@ +import{X as k,a4 as n,a3 as o,a1 as s,_ as c,W as x,f as e}from"./vendor-vue.Bykizn0M.js";import{P as C}from"./PageHeader.Di3JTPjc.js";import"./index.js";import"./vendor-naive.BuHWlEgf.js";import"./vendor-misc.1adHN6i_.js";const b={class:"aksrt-page-container"},q={__name:"ThemeAuthorizationPage",setup(g){const d=c();function r(a){d.push(a)}return(a,t)=>{const i=s("n-button"),p=s("n-space"),_=s("n-alert"),u=s("n-card"),l=s("n-list-item"),m=s("n-list");return x(),k("div",b,[n(C,{title:"主题授权",desc:"当前版本按产品决策不实现在线授权/撤销授权,仅保留主题信息与更新能力。"},{actions:o(()=>[n(p,null,{default:o(()=>[n(i,{quaternary:"",onClick:t[0]||(t[0]=f=>r("/tools/import-export"))},{default:o(()=>[...t[2]||(t[2]=[e("兼容&工具",-1)])]),_:1}),n(i,{quaternary:"",onClick:t[1]||(t[1]=f=>r("/tools/update"))},{default:o(()=>[...t[3]||(t[3]=[e("更新中心",-1)])]),_:1})]),_:1})]),_:1}),n(u,{class:"aksrt-section-card"},{default:o(()=>[n(_,{type:"info",title:"按设计省略","show-icon":!0},{default:o(()=>[...t[4]||(t[4]=[e(" 本主题当前不实现 zibll 风格的授权码校验、域名绑定、撤销授权、本地免授权等机制。 `AKSRT_Update_Checker` 仅负责匿名版本检测与更新提示,不与授权系统耦合。 ",-1)])]),_:1})]),_:1}),n(u,{class:"aksrt-section-card",title:"当前策略",size:"small"},{default:o(()=>[n(m,{bordered:""},{default:o(()=>[n(l,null,{default:o(()=>[...t[5]||(t[5]=[e("不提供授权码输入框或“立即授权”按钮",-1)])]),_:1}),n(l,null,{default:o(()=>[...t[6]||(t[6]=[e("不提供“已授权 / 未授权 / 本地免授权”三态逻辑",-1)])]),_:1}),n(l,null,{default:o(()=>[...t[7]||(t[7]=[e("更新能力统一收口到“更新中心”与“主题信息”页",-1)])]),_:1}),n(l,null,{default:o(()=>[...t[8]||(t[8]=[e("若未来恢复授权体系,应单独立项,不与现有更新检测器混接",-1)])]),_:1})]),_:1})]),_:1})])}}};export{q as default}; diff --git a/assets/admin/build/ThemeInfoPage.CmzNxB-f.js b/assets/admin/build/ThemeInfoPage.CmzNxB-f.js new file mode 100644 index 00000000..c8558987 --- /dev/null +++ b/assets/admin/build/ThemeInfoPage.CmzNxB-f.js @@ -0,0 +1 @@ +import{P as M}from"./PageHeader.Di3JTPjc.js";import{_ as f}from"./FaIcon.CX_hGmM4.js";import{a as B}from"./shared-api.D5_fnN32.js";import{_ as P}from"./index.js";import{b as _,g as b}from"./vendor-naive.BuHWlEgf.js";import{o as T,X as z,a4 as e,F as w,a3 as a,r as V,a1 as c,W as p,N as d,f as n,Z as u,Y as m,R as N,a2 as x,a5 as S,k as C}from"./vendor-vue.Bykizn0M.js";import"./vendor-misc.1adHN6i_.js";const I={class:"aksrt-page-container"},F={key:0,class:"aksrt-theme-info__loading"},H={class:"aksrt-theme-info__modules"},E={class:"aksrt-theme-info__links"},L={__name:"ThemeInfoPage",setup(R){const g=V(!0),t=V({themeVersion:"",wpVersion:"",phpVersion:"",dbSchemaVersion:"",emailBackfillDone:!1,siteUrl:"",apiUrl:"",themeDir:"",uploadDir:"",isMultisite:!1,debugMode:!1,modules:[],tables:[]}),D=[{title:"数据表",key:"name",width:220},{title:"状态",key:"exists",width:100,render(s){return C(_,{type:s.exists?"success":"error",size:"small",bordered:!1},{default:()=>s.exists?"正常":"缺失"})}},{title:"行数",key:"rows",width:100,render(s){return s.exists?s.rows.toLocaleString():"—"}}];T(async()=>{var s,l,v,o,k;try{const r=await B.getHealthCheck(),i=(r==null?void 0:r.data)||r||{};t.value={themeVersion:((s=window.aksrtAdminData)==null?void 0:s.themeVersion)||i.theme_version||"3.4.0-dev",wpVersion:i.wp_version||"",phpVersion:i.php_version||"",dbSchemaVersion:i.db_schema_version||"",emailBackfillDone:!!i.email_backfill_done,siteUrl:i.site_url||((l=window.aksrtAdminData)==null?void 0:l.siteUrl)||"",apiUrl:i.api_url||((v=window.aksrtAdminData)==null?void 0:v.apiUrl)||"",themeDir:i.theme_dir||"",uploadDir:i.upload_dir||"",isMultisite:!!i.is_multisite,debugMode:!!i.debug_mode,modules:U(i.modules||[]),tables:A(i.tables||[])}}catch(r){console.error("[ThemeInfo] Failed to load health data:",r),t.value.themeVersion="3.4.0-dev",t.value.siteUrl=((o=window.aksrtAdminData)==null?void 0:o.siteUrl)||"",t.value.apiUrl=((k=window.aksrtAdminData)==null?void 0:k.apiUrl)||""}finally{g.value=!1}});function U(s){return Array.isArray(s)?s.map(l=>({key:l.key||l.name||"",label:l.label||l.name||l.key||"",enabled:!!l.enabled})):[]}function A(s){return Array.isArray(s)?s.map(l=>({name:l.name||"",exists:!!l.exists,rows:l.rows||0})):[]}return(s,l)=>{const v=c("n-spin"),o=c("n-descriptions-item"),k=c("n-descriptions"),r=c("n-card"),i=c("n-data-table"),h=c("router-link");return p(),z("div",I,[e(M,{title:"主题信息",desc:"主题版本、运行环境、已启用模块和关键系统信息。"}),g.value?(p(),z("div",F,[e(v,{size:"medium"})])):(p(),z(w,{key:1},[e(r,{class:"aksrt-theme-info__card",title:"版本信息",size:"small"},{default:a(()=>[e(k,{column:2,bordered:"","label-placement":"left",size:"small"},{default:a(()=>[e(o,{label:"主题版本"},{default:a(()=>[e(d(_),{type:"success",size:"small"},{default:a(()=>[n(u(t.value.themeVersion),1)]),_:1})]),_:1}),e(o,{label:"WordPress 版本"},{default:a(()=>[n(u(t.value.wpVersion),1)]),_:1}),e(o,{label:"PHP 版本"},{default:a(()=>[e(d(_),{type:t.value.phpVersion>="8.1"?"success":"warning",size:"small"},{default:a(()=>[n(u(t.value.phpVersion),1)]),_:1},8,["type"])]),_:1}),e(o,{label:"数据库 Schema"},{default:a(()=>[e(d(_),{type:"info",size:"small"},{default:a(()=>[n(u(t.value.dbSchemaVersion),1)]),_:1})]),_:1}),e(o,{label:"邮箱验证回填"},{default:a(()=>[e(d(_),{type:t.value.emailBackfillDone?"success":"default",size:"small"},{default:a(()=>[n(u(t.value.emailBackfillDone?"已完成":"未触发"),1)]),_:1},8,["type"])]),_:1})]),_:1})]),_:1}),e(r,{class:"aksrt-theme-info__card",title:"运行环境",size:"small"},{default:a(()=>[e(k,{column:2,bordered:"","label-placement":"left",size:"small"},{default:a(()=>[e(o,{label:"站点地址"},{default:a(()=>[e(d(b),{code:""},{default:a(()=>[n(u(t.value.siteUrl),1)]),_:1})]),_:1}),e(o,{label:"REST API"},{default:a(()=>[e(d(b),{code:""},{default:a(()=>[n(u(t.value.apiUrl),1)]),_:1})]),_:1}),e(o,{label:"主题目录"},{default:a(()=>[e(d(b),{code:""},{default:a(()=>[n(u(t.value.themeDir),1)]),_:1})]),_:1}),e(o,{label:"上传目录"},{default:a(()=>[e(d(b),{code:""},{default:a(()=>[n(u(t.value.uploadDir),1)]),_:1})]),_:1}),e(o,{label:"多站点"},{default:a(()=>[e(d(_),{type:t.value.isMultisite?"warning":"default",size:"small"},{default:a(()=>[n(u(t.value.isMultisite?"是":"否"),1)]),_:1},8,["type"])]),_:1}),e(o,{label:"调试模式"},{default:a(()=>[e(d(_),{type:t.value.debugMode?"warning":"default",size:"small"},{default:a(()=>[n(u(t.value.debugMode?"开启":"关闭"),1)]),_:1},8,["type"])]),_:1})]),_:1})]),_:1}),e(r,{class:"aksrt-theme-info__card",title:"已启用模块",size:"small"},{default:a(()=>[m("div",H,[(p(!0),z(w,null,N(t.value.modules,y=>(p(),x(d(_),{key:y.key,type:y.enabled?"success":"default",size:"small",class:"aksrt-theme-info__module-tag"},{default:a(()=>[e(f,{icon:y.enabled?"fas fa-check-circle":"fas fa-circle",size:10},null,8,["icon"]),n(" "+u(y.label),1)]),_:2},1032,["type"]))),128))]),t.value.modules.length?S("",!0):(p(),x(d(b),{key:0,depth:"3",style:{"font-size":"13px"}},{default:a(()=>[...l[0]||(l[0]=[n(" 暂无模块信息 ",-1)])]),_:1}))]),_:1}),e(r,{class:"aksrt-theme-info__card",title:"数据表状态",size:"small"},{default:a(()=>[e(i,{columns:D,data:t.value.tables,bordered:!0,size:"small","max-height":300},null,8,["data"])]),_:1}),e(r,{class:"aksrt-theme-info__card",title:"快速入口",size:"small"},{default:a(()=>[m("div",E,[e(h,{to:"/docs",class:"aksrt-theme-info__link"},{default:a(()=>[e(f,{icon:"fas fa-book",size:16}),l[1]||(l[1]=m("span",null,"文档中心",-1))]),_:1}),e(h,{to:"/tools/update",class:"aksrt-theme-info__link"},{default:a(()=>[e(f,{icon:"fas fa-cloud-arrow-down",size:16}),l[2]||(l[2]=m("span",null,"更新中心",-1))]),_:1}),e(h,{to:"/tools/backup",class:"aksrt-theme-info__link"},{default:a(()=>[e(f,{icon:"fas fa-box-archive",size:16}),l[3]||(l[3]=m("span",null,"数据备份",-1))]),_:1}),e(h,{to:"/tools/health",class:"aksrt-theme-info__link"},{default:a(()=>[e(f,{icon:"fas fa-heartbeat",size:16}),l[4]||(l[4]=m("span",null,"健康检查",-1))]),_:1}),e(h,{to:"/tools/import-export",class:"aksrt-theme-info__link"},{default:a(()=>[e(f,{icon:"fas fa-exchange-alt",size:16}),l[5]||(l[5]=m("span",null,"导入导出",-1))]),_:1})])]),_:1})],64))])}}},G=P(L,[["__scopeId","data-v-ded10315"]]);export{G as default}; diff --git a/assets/admin/build/ThemeInfoPage.css b/assets/admin/build/ThemeInfoPage.css new file mode 100644 index 00000000..da771f44 --- /dev/null +++ b/assets/admin/build/ThemeInfoPage.css @@ -0,0 +1 @@ +.aksrt-theme-info__loading[data-v-ded10315]{display:flex;justify-content:center;padding:60px 0}.aksrt-theme-info__card[data-v-ded10315]{margin-bottom:16px}.aksrt-theme-info__modules[data-v-ded10315]{display:flex;flex-wrap:wrap;gap:8px}.aksrt-theme-info__module-tag[data-v-ded10315]{display:inline-flex;align-items:center;gap:5px}.aksrt-theme-info__links[data-v-ded10315]{display:flex;flex-wrap:wrap;gap:12px}.aksrt-theme-info__link[data-v-ded10315]{display:inline-flex;align-items:center;gap:6px;padding:8px 16px;border-radius:6px;background:#f5f7fa;color:#333;text-decoration:none;font-size:13px;transition:background .2s}.aksrt-theme-info__link[data-v-ded10315]:hover{background:#e8eaed} diff --git a/assets/admin/build/ToolsEmailRollback.YrJUTDzS.js b/assets/admin/build/ToolsEmailRollback.YrJUTDzS.js new file mode 100644 index 00000000..e4f69b01 --- /dev/null +++ b/assets/admin/build/ToolsEmailRollback.YrJUTDzS.js @@ -0,0 +1 @@ +import{o as N,X as u,a4 as o,a3 as s,r as _,a1 as n,_ as T,W as r,f as d,Y as l,Z as i,F as V,R as q,a2 as z}from"./vendor-vue.Bykizn0M.js";import{a as y}from"./shared-api.D5_fnN32.js";import{P as A}from"./PageHeader.Di3JTPjc.js";import{_ as D}from"./index.js";import{u as F}from"./vendor-naive.BuHWlEgf.js";import"./vendor-misc.1adHN6i_.js";const P={class:"aksrt-page-container"},$={class:"aksrt-section-header"},H={key:0,class:"aksrt-rollback-list"},I={style:{margin:"6px 0 0",color:"#4b5565"}},L={style:{margin:"6px 0 0",color:"#7a7f8a","font-size":"12px"}},S={__name:"ToolsEmailRollback",setup(U){const h=T(),c=F(),m=_(!0),p=_(0),f=_([]),v=_(0);function x(t){h.push(t)}function b(t){return(t==null?void 0:t.data)??t??{}}async function g(){m.value=!0;try{const t=b(await y.getEmailRollbackUsers());f.value=Array.isArray(t.items)?t.items:[],v.value=Number(t.total||0)}catch(t){c.error(t.message||"加载邮件回滚列表失败")}finally{m.value=!1}}async function w(t){p.value=t;try{const a=await y.executeEmailRollback(t);a.code==="success"?(c.success(a.message||"回滚成功"),await g()):c.error(a.message||"回滚失败")}catch(a){c.error(a.message||"回滚失败")}finally{p.value=0}}return N(g),(t,a)=>{const k=n("n-button"),R=n("n-space"),C=n("n-tag"),E=n("n-empty"),B=n("n-card"),M=n("n-spin");return r(),u("div",P,[o(A,{title:"邮件回滚",desc:"查看 14 天邮箱变更窗口内的账号,并在必要时执行回滚。"},{actions:s(()=>[o(R,null,{default:s(()=>[o(k,{quaternary:"",onClick:a[0]||(a[0]=e=>x("/tools/health"))},{default:s(()=>[...a[1]||(a[1]=[d("健康检查",-1)])]),_:1}),o(k,{quaternary:"",onClick:g},{default:s(()=>[...a[2]||(a[2]=[d("刷新列表",-1)])]),_:1})]),_:1})]),_:1}),o(M,{show:m.value,style:{width:"100%","min-height":"200px"}},{default:s(()=>[o(B,{class:"aksrt-section-card"},{default:s(()=>[l("div",$,[a[3]||(a[3]=l("h3",null,"待处理账号",-1)),o(C,{round:"",type:"info"},{default:s(()=>[d("总计 "+i(v.value),1)]),_:1})]),f.value.length?(r(),u("div",H,[(r(!0),u(V,null,q(f.value,e=>(r(),u("div",{key:e.user_id,class:"aksrt-rollback-list__item"},[l("div",null,[l("strong",null,i(e.display_name||e.login),1),l("p",I,i(e.current_email)+" → "+i(e.previous_email),1),l("p",L," 剩余窗口:"+i(Math.max(0,Math.floor((e.expires_in||0)/3600)))+" 小时 ",1)]),o(k,{size:"small",loading:p.value===e.user_id,onClick:W=>w(e.user_id)},{default:s(()=>[...a[4]||(a[4]=[d(" 执行回滚 ",-1)])]),_:1},8,["loading","onClick"])]))),128))])):(r(),z(E,{key:1,description:"当前没有可回滚的邮箱变更记录"}))]),_:1})]),_:1},8,["show"])])}}},K=D(S,[["__scopeId","data-v-775b42f3"]]);export{K as default}; diff --git a/assets/admin/build/ToolsEmailRollback.css b/assets/admin/build/ToolsEmailRollback.css new file mode 100644 index 00000000..3e481db4 --- /dev/null +++ b/assets/admin/build/ToolsEmailRollback.css @@ -0,0 +1 @@ +.aksrt-rollback-list[data-v-775b42f3]{display:grid;gap:12px}.aksrt-rollback-list__item[data-v-775b42f3]{display:flex;justify-content:space-between;gap:16px;align-items:center;padding:14px 16px;border:1px solid #e7ebf3;border-radius:14px}@media(max-width:768px){.aksrt-rollback-list__item[data-v-775b42f3]{align-items:flex-start;flex-direction:column}} diff --git a/assets/admin/build/ToolsHealth.CoF-E7n8.js b/assets/admin/build/ToolsHealth.CoF-E7n8.js new file mode 100644 index 00000000..6416afe1 --- /dev/null +++ b/assets/admin/build/ToolsHealth.CoF-E7n8.js @@ -0,0 +1 @@ +import{o as B,X as y,a4 as n,a3 as a,r as _,a1 as i,_ as V,W as f,f as r,Y as l,Z as u,F as D,R as E,a2 as N,c as P}from"./vendor-vue.Bykizn0M.js";import{a as b}from"./shared-api.D5_fnN32.js";import{P as q}from"./PageHeader.Di3JTPjc.js";import{_ as F}from"./index.js";import{u as I}from"./vendor-naive.BuHWlEgf.js";import"./vendor-misc.1adHN6i_.js";const M={class:"aksrt-page-container"},S={class:"aksrt-health-grid"},$={class:"aksrt-section-header"},j={style:{margin:"0",color:"#4b5565"}},L={__name:"ToolsHealth",setup(O){const w=V(),x=I(),d=_(!0),p=_({}),o=_({feature_enabled:!1,pending_users:0,rest_blocking_active:!1}),H=P(()=>Object.entries(p.value||{}).map(([e,t])=>({key:e,...t||{}})));function m(e){w.push(e)}function g(e){return(e==null?void 0:e.data)??e??{}}function T(e){return e==="ok"?"success":e==="warning"?"warning":e==="error"?"error":"info"}async function C(){d.value=!0;try{const[e,t]=await Promise.all([b.getHealthCheck(),b.getHealthEmailVerification()]);p.value=g(e).checks||{},o.value=g(t)}catch(e){x.error(e.message||"加载健康检查失败")}finally{d.value=!1}}return B(C),(e,t)=>{const v=i("n-button"),h=i("n-space"),c=i("n-tag"),k=i("n-card"),R=i("n-spin");return f(),y("div",M,[n(q,{title:"健康检查",desc:"集中查看运行环境、数据库表、邮箱验证迁移和系统诊断状态。"},{actions:a(()=>[n(h,null,{default:a(()=>[n(v,{quaternary:"",onClick:t[0]||(t[0]=s=>m("/tools/import-export"))},{default:a(()=>[...t[2]||(t[2]=[r("导入导出",-1)])]),_:1}),n(v,{quaternary:"",onClick:t[1]||(t[1]=s=>m("/tools/email-rollback"))},{default:a(()=>[...t[3]||(t[3]=[r("邮件回滚",-1)])]),_:1})]),_:1})]),_:1}),n(R,{show:d.value,style:{width:"100%","min-height":"200px"}},{default:a(()=>[n(k,{class:"aksrt-section-card"},{default:a(()=>[t[4]||(t[4]=l("div",{class:"aksrt-section-header"},[l("h3",null,"邮箱验证状态")],-1)),n(h,null,{default:a(()=>[n(c,{round:"",type:o.value.feature_enabled?"success":"default"},{default:a(()=>[r(" 功能开关:"+u(o.value.feature_enabled?"已启用":"未启用"),1)]),_:1},8,["type"]),n(c,{round:"",type:o.value.rest_blocking_active?"warning":"default"},{default:a(()=>[r(" REST 阻断:"+u(o.value.rest_blocking_active?"已开启":"仅记录/关闭"),1)]),_:1},8,["type"]),n(c,{round:"",type:"info"},{default:a(()=>[r(" 待验证用户:"+u(o.value.pending_users),1)]),_:1})]),_:1})]),_:1}),l("div",S,[(f(!0),y(D,null,E(H.value,s=>(f(),N(k,{key:s.key,class:"aksrt-section-card"},{default:a(()=>[l("div",$,[l("h3",null,u(s.label),1),n(c,{round:"",type:T(s.status)},{default:a(()=>[r(u(s.status),1)]),_:2},1032,["type"])]),l("p",j,u(s.value),1)]),_:2},1024))),128))])]),_:1},8,["show"])])}}},G=F(L,[["__scopeId","data-v-485f9fd2"]]);export{G as default}; diff --git a/assets/admin/build/ToolsHealth.css b/assets/admin/build/ToolsHealth.css new file mode 100644 index 00000000..884d0c35 --- /dev/null +++ b/assets/admin/build/ToolsHealth.css @@ -0,0 +1 @@ +.aksrt-health-grid[data-v-485f9fd2]{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:16px} diff --git a/assets/admin/build/ToolsImportExport.CBVCMq0z.js b/assets/admin/build/ToolsImportExport.CBVCMq0z.js new file mode 100644 index 00000000..5b4fc82a --- /dev/null +++ b/assets/admin/build/ToolsImportExport.CBVCMq0z.js @@ -0,0 +1,3 @@ +import{X as $,a4 as a,a3 as l,a1 as c,_ as A,W as B,f as r,Y as n,Z as P,r as u}from"./vendor-vue.Bykizn0M.js";import{a as f}from"./shared-api.D5_fnN32.js";import{P as V}from"./PageHeader.Di3JTPjc.js";import{_ as q}from"./index.js";import{u as U}from"./vendor-naive.BuHWlEgf.js";import"./vendor-misc.1adHN6i_.js";const z={class:"aksrt-page-container"},H={class:"aksrt-tools-output"},M={__name:"ToolsImportExport",setup(W){const b=A(),s=U(),m=u(!1),i=u(!1),y=u(!1),g=u(!1),v=u(""),d=u(""),k=u("global"),N=[{label:"全局&功能",value:"global"},{label:"页面&显示",value:"page_display"},{label:"文章&列表",value:"post_list"},{label:"用户&互动",value:"users"},{label:"支付&付费",value:"payment"}];function w(e){b.push(e)}function C(e){return(e==null?void 0:e.data)??e??{}}function S(){try{return JSON.parse(v.value||"{}")}catch{throw new Error("导入 JSON 格式无效")}}async function O(){m.value=!0;try{const e=C(await f.exportSettings());v.value=JSON.stringify(e,null,2),d.value=`导出完成 +版本: ${e.version||"unknown"} +时间: ${e.exported||"unknown"}`,s.success("导出成功")}catch(e){s.error(e.message||"导出失败")}finally{m.value=!1}}async function J(){i.value=!0;try{const e=S(),t=await f.importSettings({...e,dry_run:!0});d.value=JSON.stringify(t,null,2),s.success("Dry Run 校验完成")}catch(e){s.error(e.message||"校验失败")}finally{i.value=!1}}async function R(){i.value=!0;try{const e=S(),t=await f.importSettings(e);d.value=JSON.stringify(t,null,2),s.success("导入完成")}catch(e){s.error(e.message||"导入失败")}finally{i.value=!1}}async function D(){y.value=!0;try{const e=await f.resetDomain(k.value);d.value=JSON.stringify(e,null,2),s.success("域设置已重置")}catch(e){s.error(e.message||"重置失败")}finally{y.value=!1}}async function E(){if(window.confirm("确认重置全部 schema 托管设置吗?系统会先自动创建一份“重置全部前快照”。")){g.value=!0;try{const e=await f.resetAllSettings();d.value=JSON.stringify(e,null,2),s.success("全部设置已重置")}catch(e){s.error(e.message||"重置全部失败")}finally{g.value=!1}}}return(e,t)=>{const o=c("n-button"),x=c("n-space"),T=c("n-input"),_=c("n-card"),I=c("n-select");return B(),$("div",z,[a(V,{title:"导入导出",desc:"导出当前设置快照、执行 dry-run 导入校验,并支持按域重置到 schema 默认值。"},{actions:l(()=>[a(x,null,{default:l(()=>[a(o,{quaternary:"",onClick:t[0]||(t[0]=p=>w("/tools/backup"))},{default:l(()=>[...t[4]||(t[4]=[r("数据备份",-1)])]),_:1}),a(o,{quaternary:"",onClick:t[1]||(t[1]=p=>w("/tools/health"))},{default:l(()=>[...t[5]||(t[5]=[r("健康检查",-1)])]),_:1})]),_:1})]),_:1}),a(_,{class:"aksrt-section-card"},{default:l(()=>[t[9]||(t[9]=n("div",{class:"aksrt-section-header"},[n("h3",null,"导出与导入")],-1)),a(x,{style:{"margin-bottom":"16px"}},{default:l(()=>[a(o,{loading:m.value,onClick:O},{default:l(()=>[...t[6]||(t[6]=[r("导出当前配置",-1)])]),_:1},8,["loading"]),a(o,{loading:i.value,onClick:J},{default:l(()=>[...t[7]||(t[7]=[r("Dry Run 校验",-1)])]),_:1},8,["loading"]),a(o,{type:"primary",loading:i.value,onClick:R},{default:l(()=>[...t[8]||(t[8]=[r("执行导入",-1)])]),_:1},8,["loading"])]),_:1}),a(T,{value:v.value,"onUpdate:value":t[2]||(t[2]=p=>v.value=p),type:"textarea",autosize:{minRows:12,maxRows:20},placeholder:"导出的 JSON 会出现在这里,也可以直接粘贴导入。"},null,8,["value"]),t[10]||(t[10]=n("p",{class:"aksrt-tools-hint"}," 正式导入前会自动创建一份“导入前自动快照”,与“数据备份”页的快照体系共用,便于回滚。 ",-1))]),_:1}),a(_,{class:"aksrt-section-card"},{default:l(()=>[t[13]||(t[13]=n("div",{class:"aksrt-section-header"},[n("h3",null,"按域重置")],-1)),a(x,{align:"center",wrap:""},{default:l(()=>[a(I,{value:k.value,"onUpdate:value":t[3]||(t[3]=p=>k.value=p),options:N,style:{width:"220px"}},null,8,["value"]),a(o,{loading:y.value,onClick:D},{default:l(()=>[...t[11]||(t[11]=[r("重置所选域",-1)])]),_:1},8,["loading"]),a(o,{type:"error",tertiary:"",loading:g.value,onClick:E},{default:l(()=>[...t[12]||(t[12]=[r("重置全部",-1)])]),_:1},8,["loading"])]),_:1}),t[14]||(t[14]=n("p",{class:"aksrt-tools-hint"},"仅支持重置 schema 托管的业务域。健康检查、迁移状态和邮件回滚属于运维面板,不参与按域回滚。",-1))]),_:1}),a(_,{class:"aksrt-section-card"},{default:l(()=>[t[15]||(t[15]=n("div",{class:"aksrt-section-header"},[n("h3",null,"最近结果")],-1)),n("pre",H,P(d.value||"尚未执行操作。"),1)]),_:1})])}}},G=q(M,[["__scopeId","data-v-9ee419ed"]]);export{G as default}; diff --git a/assets/admin/build/ToolsImportExport.css b/assets/admin/build/ToolsImportExport.css new file mode 100644 index 00000000..32fd237d --- /dev/null +++ b/assets/admin/build/ToolsImportExport.css @@ -0,0 +1 @@ +.aksrt-tools-output[data-v-9ee419ed]{margin:0;padding:14px;border-radius:12px;background:#101828;color:#d0d7e2;font-size:12px;line-height:1.7;white-space:pre-wrap;word-break:break-word}.aksrt-tools-hint[data-v-9ee419ed]{margin:12px 0 0;color:#667085;font-size:12px;line-height:1.7} diff --git a/assets/admin/build/ToolsUpdate.CTzLIO24.js b/assets/admin/build/ToolsUpdate.CTzLIO24.js new file mode 100644 index 00000000..f6db6135 --- /dev/null +++ b/assets/admin/build/ToolsUpdate.CTzLIO24.js @@ -0,0 +1 @@ +import{o as H,X as h,a4 as l,a3 as s,r as _,a1 as u,_ as M,W as c,f as o,Y as n,Z as r,a2 as N,a5 as b,F as S,R as T}from"./vendor-vue.Bykizn0M.js";import{a as w}from"./shared-api.D5_fnN32.js";import{P as q}from"./PageHeader.Di3JTPjc.js";import{_ as F}from"./index.js";import{u as L}from"./vendor-naive.BuHWlEgf.js";import"./vendor-misc.1adHN6i_.js";const Q={class:"aksrt-page-container"},R={key:0,class:"aksrt-update__changelog"},W={class:"aksrt-update__grid"},$=["href"],E={__name:"ToolsUpdate",setup(X){const C=M(),i=L(),f=_(!0),m=_(!1),g=_(!1),a=_({current_version:"0.0.0",remote_version:"",update_available:!1,download_url:"",changelog:"",last_check:0}),P=[{key:"rewrite",title:"伪静态配置",desc:"检查固定链接与重写规则",url:"/wp-admin/options-permalink.php"},{key:"docs-mode",title:"文档模式",desc:"配置文档分类与专题模板",url:"#/extensions/docs-mode"},{key:"oauth",title:"第三方登录",desc:"检查 GitHub / Gitee / QQ / Google 登录",url:"#/users/oauth"},{key:"backup",title:"设置快照",desc:"创建与恢复站点配置快照",url:"#/tools/backup"},{key:"health",title:"健康检查",desc:"查看 PHP / WP / 数据表状态",url:"#/tools/health"},{key:"meilisearch",title:"Meilisearch",desc:"配置搜索索引与同步策略",url:"#/global/search"},{key:"i18n",title:"多语言翻译",desc:"检查语言切换与术语配置",url:"#/global/i18n"},{key:"cdn",title:"静态资源与 CDN",desc:"核对前端资源地址与缓存策略",url:"#/global/common"},{key:"forum",title:"论坛体系",desc:"检查版块、话题与版主管理",url:"#/forum"},{key:"ip-geo",title:"IP 归属地",desc:"验证 IP 查询服务与密钥配置",url:"#/extensions/security"},{key:"payment",title:"支付与会员",desc:"核对网关、会员与充值配置",url:"#/payment/gateway"},{key:"credits",title:"积分与签到",desc:"检查积分规则、签到与邀请奖励",url:"#/users/signin"},{key:"badge",title:"等级与徽章",desc:"维护等级、认证与徽章体系",url:"#/users/badge"}];H(x);function D(e){C.push(e)}function I(e){if(!e)return"未检测";const t=Number(e);return!Number.isNaN(t)&&t>0?new Date(t*1e3).toLocaleString():String(e)}async function x(){f.value=!0;try{const e=await w.getUpdateInfo();a.value=(e==null?void 0:e.data)||{}}catch(e){i.error((e==null?void 0:e.message)||"加载更新状态失败")}finally{f.value=!1}}async function U(){m.value=!0;try{const e=await w.detectUpdate();a.value=(e==null?void 0:e.data)||{},i.success("更新检测完成")}catch(e){i.error((e==null?void 0:e.message)||"检测更新失败")}finally{m.value=!1}}async function B(){if(a.value.remote_version){g.value=!0;try{await w.dismissUpdate(a.value.remote_version),i.success("已忽略此版本"),await x()}catch(e){i.error((e==null?void 0:e.message)||"忽略版本失败")}finally{g.value=!1}}}return(e,t)=>{const p=u("n-button"),v=u("n-space"),k=u("n-tag"),y=u("n-card"),V=u("n-alert"),G=u("n-spin");return c(),h("div",Q,[l(q,{title:"更新中心",desc:"查看版本状态、检测更新并浏览更新日志与教程入口。"},{actions:s(()=>[l(v,null,{default:s(()=>[l(p,{quaternary:"",loading:m.value,onClick:U},{default:s(()=>[...t[1]||(t[1]=[o("检测更新",-1)])]),_:1},8,["loading"]),l(p,{quaternary:"",onClick:t[0]||(t[0]=d=>D("/docs"))},{default:s(()=>[...t[2]||(t[2]=[o("文档中心",-1)])]),_:1})]),_:1})]),_:1}),l(G,{show:f.value,style:{width:"100%","min-height":"220px"}},{default:s(()=>[l(y,{class:"aksrt-section-card"},{default:s(()=>[t[3]||(t[3]=n("div",{class:"aksrt-section-header"},[n("h3",null,"版本状态")],-1)),l(v,null,{default:s(()=>[l(k,{round:"",type:"info"},{default:s(()=>[o("当前版本:"+r(a.value.current_version||"0.0.0"),1)]),_:1}),l(k,{round:"",type:a.value.update_available?"warning":"success"},{default:s(()=>[o(r(a.value.update_available?`发现新版本 ${a.value.remote_version}`:"已是最新版本"),1)]),_:1},8,["type"]),l(k,{round:"",type:"default"},{default:s(()=>[o("上次检测:"+r(I(a.value.last_check)),1)]),_:1})]),_:1})]),_:1}),a.value.update_available?(c(),N(y,{key:0,class:"aksrt-section-card"},{default:s(()=>[t[7]||(t[7]=n("div",{class:"aksrt-section-header"},[n("h3",null,"可用更新")],-1)),l(V,{type:"warning",style:{"margin-bottom":"12px"}},{default:s(()=>[o(" 检测到新版本 "+r(a.value.remote_version)+",当前版本为 "+r(a.value.current_version)+"。 ",1)]),_:1}),l(v,null,{default:s(()=>[a.value.download_url?(c(),N(p,{key:0,type:"primary",tag:"a",href:a.value.download_url,target:"_blank"},{default:s(()=>[...t[4]||(t[4]=[o(" 下载更新 ",-1)])]),_:1},8,["href"])):b("",!0),l(p,{onClick:B,loading:g.value},{default:s(()=>[...t[5]||(t[5]=[o("忽略此版本",-1)])]),_:1},8,["loading"])]),_:1}),a.value.changelog?(c(),h("div",R,[t[6]||(t[6]=n("h4",null,"更新日志",-1)),n("pre",null,r(a.value.changelog),1)])):b("",!0)]),_:1})):b("",!0),l(y,{class:"aksrt-section-card"},{default:s(()=>[t[8]||(t[8]=n("div",{class:"aksrt-section-header"},[n("h3",null,"常用教程入口")],-1)),n("div",W,[(c(),h(S,null,T(P,d=>n("a",{key:d.key,class:"aksrt-update__guide",href:d.url,target:"_blank",rel:"noreferrer"},[n("strong",null,r(d.title),1),n("span",null,r(d.desc),1)],8,$)),64))])]),_:1})]),_:1},8,["show"])])}}},K=F(E,[["__scopeId","data-v-8fad1124"]]);export{K as default}; diff --git a/assets/admin/build/ToolsUpdate.css b/assets/admin/build/ToolsUpdate.css new file mode 100644 index 00000000..62c537c0 --- /dev/null +++ b/assets/admin/build/ToolsUpdate.css @@ -0,0 +1 @@ +.aksrt-update__changelog[data-v-8fad1124]{margin-top:16px}.aksrt-update__changelog pre[data-v-8fad1124]{margin:8px 0 0;padding:12px 14px;border-radius:12px;background:#101828;color:#d0d7e2;font-size:12px;line-height:1.7;white-space:pre-wrap;word-break:break-word}.aksrt-update__grid[data-v-8fad1124]{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px}.aksrt-update__guide[data-v-8fad1124]{display:flex;flex-direction:column;gap:4px;padding:14px;border:1px solid #eef1f6;border-radius:12px;text-decoration:none;color:inherit;background:#fafafa}.aksrt-update__guide[data-v-8fad1124]:hover{border-color:#1890ff;background:#f5faff}.aksrt-update__guide span[data-v-8fad1124]{font-size:12px;color:#667085} diff --git a/assets/admin/build/UsersBadge.BAdBIwxF.js b/assets/admin/build/UsersBadge.BAdBIwxF.js new file mode 100644 index 00000000..93245fa6 --- /dev/null +++ b/assets/admin/build/UsersBadge.BAdBIwxF.js @@ -0,0 +1,4 @@ +import{o as E,X as H,a4 as t,a3 as n,r as N,a1 as l,e as S,_ as T,W as v,f as d,Y as u,Z as _,a2 as P,a5 as R,c as W}from"./vendor-vue.Bykizn0M.js";import{a as k}from"./shared-api.D5_fnN32.js";import{P as X}from"./PageHeader.Di3JTPjc.js";import{u as Y}from"./vendor-naive.BuHWlEgf.js";import"./index.js";import"./vendor-misc.1adHN6i_.js";const Z={class:"aksrt-page-container"},j={class:"aksrt-form-actions"},O={__name:"UsersBadge",setup(A){const U=T(),m=Y(),g=N(!0),p=N(!1),a=S({user_badge_enabled:!1,user_badge_public_display:!0,user_badge_limit:3,user_badge_dictionary:`founder|创始成员|warning +staff|站务团队|info`}),y=S({dynamicBadge:!1}),h=W(()=>String(a.user_badge_dictionary||"").split(/\r?\n/).map(s=>s.trim()).filter(Boolean).length);function w(s){U.push(s)}function x(s){return(s==null?void 0:s.data)??s??{}}async function D(){g.value=!0;try{const[s,e]=await Promise.all([k.getSchemaPage("users","badge"),k.getNotificationSettings()]),o=x(s),c=x(e);a.user_badge_enabled=!!o.user_badge_enabled,a.user_badge_public_display=o.user_badge_public_display!==!1,a.user_badge_limit=Number(o.user_badge_limit||3),a.user_badge_dictionary=o.user_badge_dictionary||`founder|创始成员|warning +staff|站务团队|info`,y.dynamicBadge=!!c.user_badge_enabled}catch(s){m.error(s.message||"加载用户徽章配置失败")}finally{g.value=!1}}async function V(){p.value=!0;try{await k.saveSchemaPage("users","badge",{user_badge_enabled:a.user_badge_enabled,user_badge_public_display:a.user_badge_public_display,user_badge_limit:Number(a.user_badge_limit||3),user_badge_dictionary:a.user_badge_dictionary}),m.success("用户徽章配置已保存")}catch(s){m.error(s.message||"保存失败")}finally{p.value=!1}}return E(D),(s,e)=>{const o=l("n-button"),c=l("n-space"),i=l("n-tag"),b=l("n-card"),B=l("n-switch"),f=l("n-form-item"),q=l("n-input-number"),C=l("n-form"),M=l("n-input"),$=l("n-alert"),z=l("n-spin");return v(),H("div",Z,[t(X,{title:"用户徽章",desc:"维护公开徽章字典、展示数量和前台展示位。具体授予逻辑可以后续再接业务,但字段和展示契约已经固定。"},{actions:n(()=>[t(c,null,{default:n(()=>[t(o,{quaternary:"",onClick:e[0]||(e[0]=r=>w("/users/notifications"))},{default:n(()=>[...e[6]||(e[6]=[d("消息通知",-1)])]),_:1}),t(o,{quaternary:"",onClick:e[1]||(e[1]=r=>w("/users/level"))},{default:n(()=>[...e[7]||(e[7]=[d("用户等级",-1)])]),_:1})]),_:1})]),_:1}),t(z,{show:g.value,style:{width:"100%","min-height":"200px"}},{default:n(()=>[t(b,{class:"aksrt-section-card"},{default:n(()=>[e[8]||(e[8]=u("div",{class:"aksrt-section-header"},[u("h3",null,"当前联动摘要")],-1)),t(c,null,{default:n(()=>[t(i,{round:"",type:a.user_badge_enabled?"success":"default"},{default:n(()=>[d(" 徽章系统:"+_(a.user_badge_enabled?"已启用":"已关闭"),1)]),_:1},8,["type"]),t(i,{round:"",type:a.user_badge_public_display?"info":"default"},{default:n(()=>[d(" 公开展示:"+_(a.user_badge_public_display?"开启":"关闭"),1)]),_:1},8,["type"]),t(i,{round:"",type:"info"},{default:n(()=>[d(" 最多显示:"+_(a.user_badge_limit)+" 枚 ",1)]),_:1}),t(i,{round:"",type:y.dynamicBadge?"success":"default"},{default:n(()=>[d(" 通知红点联动:"+_(y.dynamicBadge?"启用":"关闭"),1)]),_:1},8,["type"]),t(i,{round:"",type:"info"},{default:n(()=>[d(" 字典条目:"+_(h.value),1)]),_:1})]),_:1})]),_:1}),t(b,{class:"aksrt-section-card"},{default:n(()=>[e[9]||(e[9]=u("div",{class:"aksrt-section-header"},[u("h3",null,"徽章展示")],-1)),t(C,{model:a,"label-placement":"left","label-width":"180",class:"aksrt-form"},{default:n(()=>[t(f,{label:"启用徽章系统"},{default:n(()=>[t(B,{value:a.user_badge_enabled,"onUpdate:value":e[2]||(e[2]=r=>a.user_badge_enabled=r)},null,8,["value"])]),_:1}),a.user_badge_enabled?(v(),P(f,{key:0,label:"公开页显示徽章"},{default:n(()=>[t(B,{value:a.user_badge_public_display,"onUpdate:value":e[3]||(e[3]=r=>a.user_badge_public_display=r)},null,8,["value"])]),_:1})):R("",!0),a.user_badge_enabled?(v(),P(f,{key:1,label:"最多显示数量"},{default:n(()=>[t(q,{value:a.user_badge_limit,"onUpdate:value":e[4]||(e[4]=r=>a.user_badge_limit=r),min:1,max:8,style:{width:"180px"}},null,8,["value"])]),_:1})):R("",!0)]),_:1},8,["model"])]),_:1}),t(b,{class:"aksrt-section-card"},{default:n(()=>[e[11]||(e[11]=u("div",{class:"aksrt-section-header"},[u("h3",null,"徽章字典")],-1)),t(C,{model:a,"label-placement":"left","label-width":"180",class:"aksrt-form"},{default:n(()=>[t(f,{label:"徽章列表"},{feedback:n(()=>[...e[10]||(e[10]=[u("span",{class:"aksrt-hint-text"},"每行一个徽章,格式 `slug|显示文案|色调`,色调支持 `neutral / info / success / warning / brand`。",-1)])]),default:n(()=>[t(M,{value:a.user_badge_dictionary,"onUpdate:value":e[5]||(e[5]=r=>a.user_badge_dictionary=r),type:"textarea",autosize:{minRows:5,maxRows:10},placeholder:`founder|创始成员|warning +staff|站务团队|info`,disabled:!a.user_badge_enabled},null,8,["value","disabled"])]),_:1})]),_:1},8,["model"])]),_:1}),t(b,{class:"aksrt-section-card"},{default:n(()=>[t($,{type:"info","show-icon":!1},{default:n(()=>[...e[12]||(e[12]=[d(" 前台从 `aksrt_user_badges` user meta 读取已授予徽章列表,并在公开主页和本人中心头部展示。这里只负责定义合法徽章字典和展示上限。 ",-1)])]),_:1})]),_:1}),u("div",j,[t(o,{type:"primary",loading:p.value,onClick:V},{default:n(()=>[...e[13]||(e[13]=[d("保存配置",-1)])]),_:1},8,["loading"])])]),_:1},8,["show"])])}}};export{O as default}; diff --git a/assets/admin/build/UsersFeatures.8x2S0GR6.js b/assets/admin/build/UsersFeatures.8x2S0GR6.js new file mode 100644 index 00000000..eac9fda8 --- /dev/null +++ b/assets/admin/build/UsersFeatures.8x2S0GR6.js @@ -0,0 +1 @@ +import{o as M,X as W,a4 as s,a3 as a,r as S,a1 as r,e as D,_ as $,W as j,f as l,Y as n,Z as P}from"./vendor-vue.Bykizn0M.js";import{a as v}from"./shared-api.D5_fnN32.js";import{P as E}from"./PageHeader.Di3JTPjc.js";import{u as F}from"./vendor-naive.BuHWlEgf.js";import"./index.js";import"./vendor-misc.1adHN6i_.js";const H={class:"aksrt-page-container"},X={class:"aksrt-form-actions"},L={__name:"UsersFeatures",setup(Y){const A=$(),b=F(),k=S(!0),g=S(!1),y=S(!1),m=D({tabs:[],sidebar:!0}),t=D({dynamicTabs:["posts","comments","favorites"],user_avatar_upload:!0,user_cover_upload:!0,user_social_links:!0});function T(o){A.push(o)}function w(o){return(o==null?void 0:o.data)??o??{}}function U(o){return(Array.isArray(o)?o:String(o||"").split(/[\s,]+/).filter(Boolean)).map(i=>String(i).trim()).filter(i=>["posts","comments","favorites","credits"].includes(i))}async function B(){k.value=!0;try{const[o,e,i]=await Promise.all([v.getSchemaPage("users","features"),v.getSchemaPage("page_display","user-home"),v.getPermissionsAttachmentSettings()]),d=w(o),u=w(e),f=w(i);t.dynamicTabs=U(d.user_center_tabs||"profile,posts,comments,favorites"),t.user_avatar_upload=d.user_avatar_upload!==!1,t.user_cover_upload=d.user_cover_upload!==!1,t.user_social_links=d.user_social_links!==!1,m.tabs=U(u.user_home_tabs||"posts,comments,favorites"),m.sidebar=u.user_home_sidebar!==!1,y.value=!!f.allow_background_upload}catch(o){b.error(o.message||"加载用户功能配置失败")}finally{k.value=!1}}async function R(){g.value=!0;try{await v.saveSchemaPage("users","features",{user_center_tabs:["profile",...t.dynamicTabs].join(","),user_avatar_upload:t.user_avatar_upload,user_cover_upload:t.user_cover_upload,user_social_links:t.user_social_links}),b.success("用户功能配置已保存")}catch(o){b.error(o.message||"保存失败")}finally{g.value=!1}}return M(B),(o,e)=>{const i=r("n-button"),d=r("n-space"),u=r("n-tag"),f=r("n-card"),p=r("n-form-item"),c=r("n-checkbox"),N=r("n-checkbox-group"),C=r("n-form"),x=r("n-switch"),V=r("n-alert"),q=r("n-spin");return j(),W("div",H,[s(E,{title:"用户功能",desc:"统一配置用户中心和公开主页的功能模块,让前台页面和后台字段使用同一份契约。"},{actions:a(()=>[s(d,null,{default:a(()=>[s(i,{quaternary:"",onClick:e[0]||(e[0]=_=>T("/page-display/user-home"))},{default:a(()=>[...e[6]||(e[6]=[l("公开主页",-1)])]),_:1}),s(i,{quaternary:"",onClick:e[1]||(e[1]=_=>T("/permissions/attachment"))},{default:a(()=>[...e[7]||(e[7]=[l("附件权限",-1)])]),_:1})]),_:1})]),_:1}),s(q,{show:k.value,style:{width:"100%","min-height":"200px"}},{default:a(()=>[s(f,{class:"aksrt-section-card"},{default:a(()=>[e[9]||(e[9]=n("div",{class:"aksrt-section-header"},[n("h3",null,"当前联动摘要")],-1)),s(d,null,{default:a(()=>[s(u,{type:"info",round:""},{default:a(()=>[...e[8]||(e[8]=[l("固定入口:个人信息 / 账号设置 / 消息通知",-1)])]),_:1}),s(u,{round:"",type:t.user_cover_upload?"success":"default"},{default:a(()=>[l(" 背景图编辑位:"+P(t.user_cover_upload?"已展示":"已隐藏"),1)]),_:1},8,["type"]),s(u,{round:"",type:y.value?"success":"warning"},{default:a(()=>[l(" 背景图上传权限:"+P(y.value?"已开放":"未开放"),1)]),_:1},8,["type"]),s(u,{round:"",type:m.sidebar?"success":"default"},{default:a(()=>[l(" 公开主页侧栏:"+P(m.sidebar?"开启":"关闭"),1)]),_:1},8,["type"])]),_:1})]),_:1}),s(f,{class:"aksrt-section-card"},{default:a(()=>[e[18]||(e[18]=n("div",{class:"aksrt-section-header"},[n("h3",null,"用户中心面板")],-1)),s(C,{"label-placement":"left","label-width":"170",class:"aksrt-form"},{default:a(()=>[s(p,{label:"固定面板"},{default:a(()=>[s(d,null,{default:a(()=>[s(u,{round:""},{default:a(()=>[...e[10]||(e[10]=[l("个人信息",-1)])]),_:1}),s(u,{round:""},{default:a(()=>[...e[11]||(e[11]=[l("账号设置",-1)])]),_:1}),s(u,{round:""},{default:a(()=>[...e[12]||(e[12]=[l("消息通知",-1)])]),_:1})]),_:1})]),_:1}),s(p,{label:"可切换业务面板"},{feedback:a(()=>[...e[17]||(e[17]=[n("span",{class:"aksrt-hint-text"},"“个人信息”始终保留在首位;积分面板仅在积分系统启用时显示。",-1)])]),default:a(()=>[s(N,{value:t.dynamicTabs,"onUpdate:value":e[2]||(e[2]=_=>t.dynamicTabs=_)},{default:a(()=>[s(d,{vertical:""},{default:a(()=>[s(c,{value:"posts"},{default:a(()=>[...e[13]||(e[13]=[l("我的文章",-1)])]),_:1}),s(c,{value:"comments"},{default:a(()=>[...e[14]||(e[14]=[l("我的评论",-1)])]),_:1}),s(c,{value:"favorites"},{default:a(()=>[...e[15]||(e[15]=[l("我的收藏",-1)])]),_:1}),s(c,{value:"credits"},{default:a(()=>[...e[16]||(e[16]=[l("账户余额 / 签到",-1)])]),_:1})]),_:1})]),_:1},8,["value"])]),_:1})]),_:1})]),_:1}),s(f,{class:"aksrt-section-card"},{default:a(()=>[e[22]||(e[22]=n("div",{class:"aksrt-section-header"},[n("h3",null,"公开资料编辑位")],-1)),s(C,{model:t,"label-placement":"left","label-width":"170",class:"aksrt-form"},{default:a(()=>[s(p,{label:"头像编辑入口"},{feedback:a(()=>[...e[19]||(e[19]=[n("span",{class:"aksrt-hint-text"},"开启后,用户中心会显示跳转到 WordPress 原生资料页的头像修改入口。",-1)])]),default:a(()=>[s(x,{value:t.user_avatar_upload,"onUpdate:value":e[3]||(e[3]=_=>t.user_avatar_upload=_)},null,8,["value"])]),_:1}),s(p,{label:"背景图编辑位"},{feedback:a(()=>[...e[20]||(e[20]=[n("span",{class:"aksrt-hint-text"},"这里只控制前台入口显示;真正的上传权限仍由“附件权限”页治理。",-1)])]),default:a(()=>[s(x,{value:t.user_cover_upload,"onUpdate:value":e[4]||(e[4]=_=>t.user_cover_upload=_)},null,8,["value"])]),_:1}),s(p,{label:"公开社交链接"},{feedback:a(()=>[...e[21]||(e[21]=[n("span",{class:"aksrt-hint-text"},"关闭后,用户中心联系方式编辑区和公开主页联系卡片会一起隐藏。",-1)])]),default:a(()=>[s(x,{value:t.user_social_links,"onUpdate:value":e[5]||(e[5]=_=>t.user_social_links=_)},null,8,["value"])]),_:1})]),_:1},8,["model"])]),_:1}),s(f,{class:"aksrt-section-card"},{default:a(()=>[s(V,{type:"info","show-icon":!1},{default:a(()=>[...e[23]||(e[23]=[l(" 公开主页的封面、侧栏、关注按钮和公开 Tab 仍在“页面&显示 / 用户主页”维护;本页负责“用户中心能否编辑哪些内容”。 ",-1)])]),_:1})]),_:1}),n("div",X,[s(i,{type:"primary",loading:g.value,onClick:R},{default:a(()=>[...e[24]||(e[24]=[l("保存配置",-1)])]),_:1},8,["loading"])])]),_:1},8,["show"])])}}};export{L as default}; diff --git a/assets/admin/build/UsersLevel.D9sYKZP1.js b/assets/admin/build/UsersLevel.D9sYKZP1.js new file mode 100644 index 00000000..b3d2e0cb --- /dev/null +++ b/assets/admin/build/UsersLevel.D9sYKZP1.js @@ -0,0 +1,10 @@ +import{o as E,X as H,a4 as s,a3 as a,r as U,a1 as r,e as B,_ as T,W as g,f as u,Y as _,Z as p,a2 as M,a5 as P,c as W}from"./vendor-vue.Bykizn0M.js";import{a as k}from"./shared-api.D5_fnN32.js";import{P as X}from"./PageHeader.Di3JTPjc.js";import{u as Y}from"./vendor-naive.BuHWlEgf.js";import"./index.js";import"./vendor-misc.1adHN6i_.js";const Z={class:"aksrt-page-container"},j={class:"aksrt-form-actions"},Q={__name:"UsersLevel",setup(A){const R=T(),m=Y(),b=U(!0),y=U(!1),l=B({user_level_enabled:!1,user_level_public_display:!0,user_level_source:"credits_balance",user_level_prefix:"Lv.",user_level_thresholds:`1|0 +2|30 +3|100 +4|300`}),i=B({enabled:!0,currencyName:"积分"}),D=W(()=>String(l.user_level_thresholds||"").split(/\r?\n/).map(t=>t.trim()).filter(Boolean).length);function h(t){R.push(t)}function x(t){return(t==null?void 0:t.data)??t??{}}async function L(){b.value=!0;try{const[t,e]=await Promise.all([k.getSchemaPage("users","level"),k.getCreditSettings()]),o=x(t),d=x(e);l.user_level_enabled=!!o.user_level_enabled,l.user_level_public_display=o.user_level_public_display!==!1,l.user_level_source=o.user_level_source||"credits_balance",l.user_level_prefix=o.user_level_prefix||"Lv.",l.user_level_thresholds=o.user_level_thresholds||`1|0 +2|30 +3|100 +4|300`,i.enabled=d.enabled!==!1,i.currencyName=d.currency_name||"积分"}catch(t){m.error(t.message||"加载用户等级配置失败")}finally{b.value=!1}}async function V(){y.value=!0;try{await k.saveSchemaPage("users","level",{user_level_enabled:l.user_level_enabled,user_level_public_display:l.user_level_public_display,user_level_source:l.user_level_source,user_level_prefix:l.user_level_prefix,user_level_thresholds:l.user_level_thresholds}),m.success("用户等级配置已保存")}catch(t){m.error(t.message||"保存失败")}finally{y.value=!1}}return E(L),(t,e)=>{const o=r("n-button"),d=r("n-space"),v=r("n-tag"),f=r("n-card"),w=r("n-switch"),c=r("n-form-item"),C=r("n-input"),N=r("n-form"),S=r("n-radio"),q=r("n-radio-group"),z=r("n-alert"),$=r("n-spin");return g(),H("div",Z,[s(X,{title:"用户等级",desc:"配置等级来源、展示前缀和阈值规则。前台公开主页会按照这里的规则输出等级身份芯片。"},{actions:a(()=>[s(d,null,{default:a(()=>[s(o,{quaternary:"",onClick:e[0]||(e[0]=n=>h("/users/credits"))},{default:a(()=>[...e[7]||(e[7]=[u("用户积分",-1)])]),_:1}),s(o,{quaternary:"",onClick:e[1]||(e[1]=n=>h("/users/badge"))},{default:a(()=>[...e[8]||(e[8]=[u("用户徽章",-1)])]),_:1})]),_:1})]),_:1}),s($,{show:b.value,style:{width:"100%","min-height":"200px"}},{default:a(()=>[s(f,{class:"aksrt-section-card"},{default:a(()=>[e[9]||(e[9]=_("div",{class:"aksrt-section-header"},[_("h3",null,"当前联动摘要")],-1)),s(d,null,{default:a(()=>[s(v,{round:"",type:l.user_level_enabled?"success":"default"},{default:a(()=>[u(" 等级系统:"+p(l.user_level_enabled?"已启用":"已关闭"),1)]),_:1},8,["type"]),s(v,{round:"",type:i.enabled?"info":"warning"},{default:a(()=>[u(" 积分系统:"+p(i.enabled?"已启用":"未启用"),1)]),_:1},8,["type"]),s(v,{round:"",type:"info"},{default:a(()=>[u(" 当前货币:"+p(i.currencyName),1)]),_:1}),s(v,{round:"",type:l.user_level_source==="credits_balance"?"success":"warning"},{default:a(()=>[u(" 来源:"+p(l.user_level_source==="credits_balance"?"积分余额":"手动 Meta"),1)]),_:1},8,["type"]),s(v,{round:"",type:"info"},{default:a(()=>[u(" 阈值条目:"+p(D.value),1)]),_:1})]),_:1})]),_:1}),s(f,{class:"aksrt-section-card"},{default:a(()=>[e[10]||(e[10]=_("div",{class:"aksrt-section-header"},[_("h3",null,"等级显示")],-1)),s(N,{model:l,"label-placement":"left","label-width":"180",class:"aksrt-form"},{default:a(()=>[s(c,{label:"启用等级系统"},{default:a(()=>[s(w,{value:l.user_level_enabled,"onUpdate:value":e[2]||(e[2]=n=>l.user_level_enabled=n)},null,8,["value"])]),_:1}),l.user_level_enabled?(g(),M(c,{key:0,label:"公开页显示等级"},{default:a(()=>[s(w,{value:l.user_level_public_display,"onUpdate:value":e[3]||(e[3]=n=>l.user_level_public_display=n)},null,8,["value"])]),_:1})):P("",!0),l.user_level_enabled?(g(),M(c,{key:1,label:"等级前缀"},{default:a(()=>[s(C,{value:l.user_level_prefix,"onUpdate:value":e[4]||(e[4]=n=>l.user_level_prefix=n),maxlength:"12",placeholder:"Lv."},null,8,["value"])]),_:1})):P("",!0)]),_:1},8,["model"])]),_:1}),s(f,{class:"aksrt-section-card"},{default:a(()=>[e[14]||(e[14]=_("div",{class:"aksrt-section-header"},[_("h3",null,"等级规则")],-1)),s(N,{model:l,"label-placement":"left","label-width":"180",class:"aksrt-form"},{default:a(()=>[s(c,{label:"等级来源"},{default:a(()=>[s(q,{value:l.user_level_source,"onUpdate:value":e[5]||(e[5]=n=>l.user_level_source=n),disabled:!l.user_level_enabled},{default:a(()=>[s(d,{size:"large"},{default:a(()=>[s(S,{value:"credits_balance"},{default:a(()=>[...e[11]||(e[11]=[u("积分余额",-1)])]),_:1}),s(S,{value:"manual_meta"},{default:a(()=>[...e[12]||(e[12]=[u("手动 Meta",-1)])]),_:1})]),_:1})]),_:1},8,["value","disabled"])]),_:1}),s(c,{label:"等级阈值"},{feedback:a(()=>[...e[13]||(e[13]=[_("span",{class:"aksrt-hint-text"},"每行一个等级,格式 `等级|所需积分`。手动 Meta 模式下仍建议保留完整字典,方便后续切换回自动计算。",-1)])]),default:a(()=>[s(C,{value:l.user_level_thresholds,"onUpdate:value":e[6]||(e[6]=n=>l.user_level_thresholds=n),type:"textarea",autosize:{minRows:5,maxRows:10},placeholder:`1|0 +2|30 +3|100 +4|300`,disabled:!l.user_level_enabled},null,8,["value","disabled"])]),_:1})]),_:1},8,["model"])]),_:1}),s(f,{class:"aksrt-section-card"},{default:a(()=>[s(z,{type:"info","show-icon":!1},{default:a(()=>[...e[15]||(e[15]=[u(" 手动模式读取 `aksrt_user_level` user meta;自动模式则根据当前积分余额和上方阈值表实时计算等级,不需要单独写库。 ",-1)])]),_:1})]),_:1}),_("div",j,[s(o,{type:"primary",loading:y.value,onClick:V},{default:a(()=>[...e[16]||(e[16]=[u("保存配置",-1)])]),_:1},8,["loading"])])]),_:1},8,["show"])])}}};export{Q as default}; diff --git a/assets/admin/build/UsersSignin.frRX-AHK.js b/assets/admin/build/UsersSignin.frRX-AHK.js new file mode 100644 index 00000000..c1da36e1 --- /dev/null +++ b/assets/admin/build/UsersSignin.frRX-AHK.js @@ -0,0 +1,6 @@ +import{a as C}from"./shared-api.D5_fnN32.js";import{_ as O,a1 as o,W as f,X as $,a4 as i,a3 as n,a2 as x,F,R as W,f as v,Z as p,a5 as k,l as D,o as X,r as P,e as M,Y as m,c as Y}from"./vendor-vue.Bykizn0M.js";import{P as Z}from"./PageHeader.Di3JTPjc.js";import{u as G}from"./vendor-naive.BuHWlEgf.js";import"./index.js";import"./vendor-misc.1adHN6i_.js";const J={class:"aksrt-page-container"},K={__name:"UsersSectionPage",props:{title:{type:String,required:!0},desc:{type:String,default:""},note:{type:String,default:""},links:{type:Array,default:()=>[]}},setup(w){const S=O();function U(g){S.push(g)}return(g,N)=>{const j=o("n-button"),y=o("n-space"),e=o("n-alert"),R=o("n-card");return f(),$("div",J,[i(Z,{title:w.title,desc:w.desc},{actions:n(()=>[w.links.length?(f(),x(y,{key:0},{default:n(()=>[(f(!0),$(F,null,W(w.links,h=>(f(),x(j,{key:h.path,quaternary:"",onClick:B=>U(h.path)},{default:n(()=>[v(p(h.label),1)]),_:2},1032,["onClick"]))),128))]),_:1})):k("",!0)]),_:1},8,["title","desc"]),w.note?(f(),x(R,{key:0,class:"aksrt-section-card"},{default:n(()=>[i(e,{type:"info","show-icon":!1},{default:n(()=>[v(p(w.note),1)]),_:1})]),_:1})):k("",!0),D(g.$slots,"before-form"),D(g.$slots,"default")])}}},Q={class:"aksrt-hint-text"},ee={class:"aksrt-hint-text"},te={class:"aksrt-form-actions"},oe={__name:"UsersSignin",setup(w){const S=G(),U=P(!0),g=P(!1),N=P({}),j=P({}),y=M({register:!1,signin:!1}),e=M({credits_enabled:!0,currency_name:"",signin_enabled:!0,signin_base:1,signin_streak_text:`3|2 +7|5 +30|20`,invite_enabled:!0,inviter_amount:5,invitee_amount:2,require_verify:!0,ip_daily_cap:3,invite_registration_enabled:!0,invite_code_length:6,invite_register_field:"optional",invite_reject_invalid:!0}),R=Y(()=>e.currency_name||"积分");function h(s){return(s==null?void 0:s.data)??s??{}}function B(s){return Object.entries(s||{}).map(([r,l])=>[Number(r),Number(l)]).filter(([r,l])=>Number.isFinite(r)&&r>0&&Number.isFinite(l)&&l>=0).sort((r,l)=>r[0]-l[0]).map(([r,l])=>`${r}|${l}`).join(` +`)}function V(s){const t=String(s||"").split(/\r?\n/).map(l=>l.trim()).filter(Boolean),r={};return t.forEach(l=>{const d=l.split("|").map(_=>_.trim());if(d.length!==2)return;const c=Number(d[0]),b=Number(d[1]);!Number.isFinite(c)||!Number.isFinite(b)||c<=0||b<0||(r[Math.trunc(c)]=Math.trunc(b))}),r}async function L(){U.value=!0;try{const[s,t,r]=await Promise.all([C.getCreditSettings(),C.getAuthSettings(),C.getPermissionsLoginSettings()]),l=h(s),d=h(t),c=h(r),b=l.daily_signin||{},_=l.invite_reward||{},u=Array.isArray(c.disabled_scenarios)?c.disabled_scenarios:[];N.value=l,j.value=d,e.credits_enabled=l.enabled!==!1,e.currency_name=l.currency_name||"",e.signin_enabled=b.enabled!==!1,e.signin_base=Number(b.base||0),e.signin_streak_text=B(b.streak||{3:2,7:5,30:20}),e.invite_enabled=_.enabled!==!1,e.inviter_amount=Number(_.inviter_amount||0),e.invitee_amount=Number(_.invitee_amount||0),e.require_verify=_.require_verify!==!1,e.ip_daily_cap=Number(_.ip_daily_cap||0),e.invite_registration_enabled=d.invite_registration_enabled!==!1,e.invite_code_length=Number(d.invite_code_length||6),e.invite_register_field=d.invite_register_field||"optional",e.invite_reject_invalid=d.invite_reject_invalid!==!1,y.register=!!c.enabled&&!!c.active_provider&&!u.includes("register"),y.signin=!!c.enabled&&!!c.active_provider&&!u.includes("signin")}catch(s){S.error(s.message||"加载签到奖励配置失败")}finally{U.value=!1}}async function z(){g.value=!0;try{const s={...N.value,daily_signin:{...N.value.daily_signin||{},enabled:e.signin_enabled,base:Number(e.signin_base||0),streak:V(e.signin_streak_text)},invite_reward:{...N.value.invite_reward||{},enabled:e.invite_enabled,inviter_amount:Number(e.inviter_amount||0),invitee_amount:Number(e.invitee_amount||0),require_verify:e.require_verify,ip_daily_cap:Number(e.ip_daily_cap||0),register_field:e.invite_register_field,reject_invalid:e.invite_reject_invalid}},t={...j.value,invite_registration_enabled:e.invite_registration_enabled,invite_code_length:Number(e.invite_code_length||6),invite_register_field:e.invite_register_field,invite_reject_invalid:e.invite_reject_invalid};await Promise.all([C.saveCreditSettings(s),C.saveAuthSettings(t)]),N.value=s,j.value=t,S.success("签到奖励配置已保存")}catch(s){S.error(s.message||"保存失败")}finally{g.value=!1}}return X(L),(s,t)=>{const r=o("n-tag"),l=o("n-space"),d=o("n-card"),c=o("n-alert"),b=o("n-spin"),_=o("n-switch"),u=o("n-form-item"),q=o("n-input-number"),E=o("n-input"),A=o("n-radio"),T=o("n-radio-group"),H=o("n-button"),I=o("n-form");return f(),x(K,{title:"签到奖励",desc:"直接管理签到与邀请奖励的真实运行配置,保存后会立即影响前台签到、邀请链接和注册页邀请码行为。",links:[{label:"注册登录",path:"/users/auth"},{label:"用户积分",path:"/users/credits"}]},{"before-form":n(()=>[i(b,{show:U.value,style:{width:"100%","min-height":"200px"}},{default:n(()=>[i(d,{class:"aksrt-section-card"},{default:n(()=>[t[12]||(t[12]=m("div",{class:"aksrt-section-header"},[m("h3",null,"当前联动摘要")],-1)),i(l,null,{default:n(()=>[i(r,{round:"",type:e.credits_enabled?"success":"warning"},{default:n(()=>[v(" 积分系统:"+p(e.credits_enabled?"已启用":"未启用"),1)]),_:1},8,["type"]),i(r,{round:"",type:e.signin_enabled?"success":"default"},{default:n(()=>[v(" 签到能力:"+p(e.signin_enabled?"已启用":"已关闭"),1)]),_:1},8,["type"]),i(r,{round:"",type:e.invite_enabled?"success":"default"},{default:n(()=>[v(" 邀请奖励:"+p(e.invite_enabled?"已启用":"已关闭"),1)]),_:1},8,["type"]),i(r,{round:"",type:e.invite_registration_enabled?"info":"default"},{default:n(()=>[v(" 邀请注册:"+p(e.invite_registration_enabled?"开启":"关闭"),1)]),_:1},8,["type"]),i(r,{round:"",type:y.register?"info":"default"},{default:n(()=>[v(" 注册验证码:"+p(y.register?"启用":"未启用"),1)]),_:1},8,["type"]),i(r,{round:"",type:y.signin?"info":"default"},{default:n(()=>[v(" 签到验证码:"+p(y.signin?"启用":"未启用"),1)]),_:1},8,["type"])]),_:1})]),_:1}),e.credits_enabled?k("",!0):(f(),x(d,{key:0,class:"aksrt-section-card"},{default:n(()=>[i(c,{type:"warning","show-icon":!1},{default:n(()=>[...t[13]||(t[13]=[v(" 当前积分系统处于关闭状态。即使保存签到和邀请奖励配置,前台也不会真正发放奖励,直到“用户积分”页重新启用积分系统。 ",-1)])]),_:1})]),_:1}))]),_:1},8,["show"])]),default:n(()=>[i(I,{model:e,"label-placement":"left","label-width":"180",class:"aksrt-form"},{default:n(()=>[i(d,{class:"aksrt-section-card"},{default:n(()=>[t[14]||(t[14]=m("div",{class:"aksrt-section-header"},[m("h3",null,"每日签到")],-1)),i(u,{label:"启用签到奖励"},{default:n(()=>[i(_,{value:e.signin_enabled,"onUpdate:value":t[0]||(t[0]=a=>e.signin_enabled=a)},null,8,["value"])]),_:1}),e.signin_enabled?(f(),x(u,{key:0,label:"基础奖励"},{feedback:n(()=>[m("span",Q,"每次签到基础发放 "+p(R.value)+" 数量。",1)]),default:n(()=>[i(q,{value:e.signin_base,"onUpdate:value":t[1]||(t[1]=a=>e.signin_base=a),min:0,max:1e5,style:{width:"180px"}},null,8,["value"])]),_:1})):k("",!0),e.signin_enabled?(f(),x(u,{key:1,label:"连续签到加成"},{feedback:n(()=>[m("span",ee,"每行一个周期,格式 `天数|额外奖励`。例如 `7|5` 表示连续 7 天额外获得 5 "+p(R.value)+"。",1)]),default:n(()=>[i(E,{value:e.signin_streak_text,"onUpdate:value":t[2]||(t[2]=a=>e.signin_streak_text=a),type:"textarea",autosize:{minRows:4,maxRows:8},placeholder:`3|2 +7|5 +30|20`},null,8,["value"])]),_:1})):k("",!0)]),_:1}),i(d,{class:"aksrt-section-card"},{default:n(()=>[t[20]||(t[20]=m("div",{class:"aksrt-section-header"},[m("h3",null,"邀请奖励与注册页邀请码")],-1)),i(u,{label:"启用邀请奖励"},{default:n(()=>[i(_,{value:e.invite_enabled,"onUpdate:value":t[3]||(t[3]=a=>e.invite_enabled=a)},null,8,["value"])]),_:1}),i(u,{label:"开放邀请注册"},{feedback:n(()=>[...t[15]||(t[15]=[m("span",{class:"aksrt-hint-text"},"关闭后,邀请链接入口、注册页邀请码字段和个人中心邀请模块会一起隐藏。",-1)])]),default:n(()=>[i(_,{value:e.invite_registration_enabled,"onUpdate:value":t[4]||(t[4]=a=>e.invite_registration_enabled=a)},null,8,["value"])]),_:1}),e.invite_registration_enabled?(f(),$(F,{key:0},[i(u,{label:"邀请码长度"},{default:n(()=>[i(q,{value:e.invite_code_length,"onUpdate:value":t[5]||(t[5]=a=>e.invite_code_length=a),min:4,max:12,style:{width:"180px"}},null,8,["value"])]),_:1}),i(u,{label:"注册页邀请码字段"},{default:n(()=>[i(T,{value:e.invite_register_field,"onUpdate:value":t[6]||(t[6]=a=>e.invite_register_field=a)},{default:n(()=>[i(l,{size:"large"},{default:n(()=>[i(A,{value:"hidden"},{default:n(()=>[...t[16]||(t[16]=[v("隐藏",-1)])]),_:1}),i(A,{value:"optional"},{default:n(()=>[...t[17]||(t[17]=[v("选填",-1)])]),_:1}),i(A,{value:"required"},{default:n(()=>[...t[18]||(t[18]=[v("必填",-1)])]),_:1})]),_:1})]),_:1},8,["value"])]),_:1}),e.invite_register_field==="required"?(f(),x(u,{key:0,label:"无效邀请码处理"},{feedback:n(()=>[...t[19]||(t[19]=[m("span",{class:"aksrt-hint-text"},"开启后,必填模式下无效邀请码会直接拒绝注册。关闭则忽略邀请码错误并继续注册。",-1)])]),default:n(()=>[i(_,{value:e.invite_reject_invalid,"onUpdate:value":t[7]||(t[7]=a=>e.invite_reject_invalid=a)},null,8,["value"])]),_:1})):k("",!0)],64)):k("",!0),e.invite_enabled?(f(),$(F,{key:1},[i(u,{label:"邀请人奖励"},{default:n(()=>[i(q,{value:e.inviter_amount,"onUpdate:value":t[8]||(t[8]=a=>e.inviter_amount=a),min:0,max:1e5,style:{width:"180px"}},null,8,["value"])]),_:1}),i(u,{label:"被邀请人奖励"},{default:n(()=>[i(q,{value:e.invitee_amount,"onUpdate:value":t[9]||(t[9]=a=>e.invitee_amount=a),min:0,max:1e5,style:{width:"180px"}},null,8,["value"])]),_:1}),i(u,{label:"验证邮箱后发放"},{default:n(()=>[i(_,{value:e.require_verify,"onUpdate:value":t[10]||(t[10]=a=>e.require_verify=a)},null,8,["value"])]),_:1}),i(u,{label:"同 IP 日上限"},{default:n(()=>[i(q,{value:e.ip_daily_cap,"onUpdate:value":t[11]||(t[11]=a=>e.ip_daily_cap=a),min:0,max:1e3,style:{width:"180px"}},null,8,["value"])]),_:1})],64)):k("",!0)]),_:1}),m("div",te,[i(H,{type:"primary",loading:g.value,onClick:z},{default:n(()=>[...t[21]||(t[21]=[v("保存配置",-1)])]),_:1},8,["loading"])])]),_:1},8,["model"])]),_:1})}}};export{oe as default}; diff --git a/assets/admin/build/UsersVerify.DlTUYsYd.js b/assets/admin/build/UsersVerify.DlTUYsYd.js new file mode 100644 index 00000000..ed0d3e52 --- /dev/null +++ b/assets/admin/build/UsersVerify.DlTUYsYd.js @@ -0,0 +1 @@ +import{a as C}from"./shared-api.D5_fnN32.js";import{P as ne}from"./PageHeader.Di3JTPjc.js";import{_ as ee}from"./index.js";import{u as te,h as Y,b as V,B as H}from"./vendor-naive.BuHWlEgf.js";import{w as ie,W as w,a2 as X,a3 as s,a4 as e,X as P,f,Z as v,Y as p,F as K,R as ue,a1 as i,r as g,e as S,o as oe,N as m,c as Q,k as Z}from"./vendor-vue.Bykizn0M.js";import"./vendor-misc.1adHN6i_.js";const de={class:"aksrt-verify-drawer__section"},_e={class:"aksrt-verify-drawer__section"},fe={key:0,class:"aksrt-verify-drawer__timeline"},ve={class:"aksrt-verify-drawer__timeline-head"},pe={class:"aksrt-verify-drawer__section"},ce={__name:"VerifyReviewDrawer",props:{show:{type:Boolean,default:!1},userId:{type:[Number,String],default:null}},emits:["update:show","updated"],setup(A,{emit:z}){const y=A,D=z,b=te(),U=g(!1),k=g(!1),d=g({request:null,history:[],options:{statuses:[]}}),l=S({status:"verified",note:""});ie(()=>[y.show,y.userId],async([n,r])=>{n&&r&&await h(),n||(d.value={request:null,history:[],options:{statuses:[]}},l.status="verified",l.note="")});async function h(){var n,r;if(y.userId){U.value=!0;try{const o=await C.request(`/verify/requests/${y.userId}`);d.value=(o==null?void 0:o.data)||{request:null,history:[],options:{statuses:[]}},l.status=(((r=(n=d.value)==null?void 0:n.request)==null?void 0:r.status)==="rejected","verified"),l.note=""}catch(o){b.error((o==null?void 0:o.message)||"加载认证详情失败")}finally{U.value=!1}}}async function x(){if(y.userId){k.value=!0;try{await C.request(`/verify/requests/${y.userId}/review`,{method:"POST",data:{status:l.status,note:l.note}}),b.success("认证审核已提交"),await h(),D("updated")}catch(n){b.error((n==null?void 0:n.message)||"审核失败")}finally{k.value=!1}}}return(n,r)=>{const o=i("n-descriptions-item"),F=i("n-descriptions"),O=i("n-alert"),I=i("n-empty"),B=i("n-select"),N=i("n-input"),j=i("n-button"),E=i("n-space"),q=i("n-spin"),T=i("n-drawer-content"),L=i("n-drawer");return w(),X(L,{show:A.show,width:680,"onUpdate:show":r[2]||(r[2]=R=>n.$emit("update:show",R))},{default:s(()=>[e(T,{title:"认证审核",closable:""},{default:s(()=>[e(q,{show:U.value},{default:s(()=>{var R;return[d.value.request?(w(),P(K,{key:0},[e(F,{bordered:"",column:1,size:"small","label-placement":"left"},{default:s(()=>[e(o,{label:"用户"},{default:s(()=>[f(v(d.value.request.display_name||"-"),1)]),_:1}),e(o,{label:"邮箱"},{default:s(()=>[f(v(d.value.request.email||"-"),1)]),_:1}),e(o,{label:"当前状态"},{default:s(()=>[f(v(d.value.request.status||"-"),1)]),_:1}),e(o,{label:"邮箱验证"},{default:s(()=>[f(v(d.value.request.email_verified?"已完成":"未完成"),1)]),_:1}),e(o,{label:"申请时间"},{default:s(()=>[f(v(d.value.request.requested_at||"-"),1)]),_:1}),e(o,{label:"最近处理"},{default:s(()=>[f(v(d.value.request.reviewed_at||"-"),1)]),_:1})]),_:1}),p("div",de,[r[3]||(r[3]=p("div",{class:"aksrt-verify-drawer__title"},"当前备注",-1)),e(O,{type:"info","show-icon":!1},{default:s(()=>[f(v(d.value.request.reason||"暂无备注"),1)]),_:1})]),p("div",_e,[r[4]||(r[4]=p("div",{class:"aksrt-verify-drawer__title"},"审核历史",-1)),(R=d.value.history)!=null&&R.length?(w(),P("div",fe,[(w(!0),P(K,null,ue(d.value.history,(t,a)=>(w(),P("div",{key:a,class:"aksrt-verify-drawer__timeline-item"},[p("div",ve,[p("strong",null,v(t.status||"-"),1),p("span",null,v(t.time||"-"),1)]),p("p",null,v(t.reason||"无备注"),1),p("small",null,v(t.reviewer_name||"系统"),1)]))),128))])):(w(),X(I,{key:1,description:"暂无审核历史"}))]),p("div",pe,[r[7]||(r[7]=p("div",{class:"aksrt-verify-drawer__title"},"执行审核",-1)),e(E,{vertical:"",size:12},{default:s(()=>{var t;return[e(B,{value:l.status,"onUpdate:value":r[0]||(r[0]=a=>l.status=a),options:((t=d.value.options)==null?void 0:t.statuses)||[]},null,8,["value","options"]),e(N,{value:l.note,"onUpdate:value":r[1]||(r[1]=a=>l.note=a),type:"textarea",rows:4,placeholder:"填写审核说明或驳回原因"},null,8,["value"]),e(E,null,{default:s(()=>[e(j,{type:"primary",loading:k.value,onClick:x},{default:s(()=>[...r[5]||(r[5]=[f("提交审核",-1)])]),_:1},8,["loading"]),e(j,{onClick:h},{default:s(()=>[...r[6]||(r[6]=[f("刷新详情",-1)])]),_:1})]),_:1})]}),_:1})])],64)):(w(),X(I,{key:1,description:"暂无认证详情"}))]}),_:1},8,["show"])]),_:1})]),_:1},8,["show"])}}},ye=ee(ce,[["__scopeId","data-v-84e367b4"]]),me={class:"aksrt-page-container"},ge={class:"aksrt-form-actions"},we={__name:"UsersVerify",setup(A){const z=te(),y=g(!0),D=g(!1),b=g(!1),U=g([]),k=g(!1),d=g(null),l=S({user_verify_enabled:!0,user_verify_public_display:!0,user_verify_badge_text:"已认证",user_verify_accept_email_verified:!0,user_verify_require_manual_review:!1}),h=S({emailVerificationEnabled:!1}),x=S({pending:0,verified:0,rejected:0,total:0}),n=S({keyword:"",status:"",dateRange:null}),r=S({page:1,pageSize:20,itemCount:0}),o=S({statuses:[]}),F=Q(()=>o.statuses.length?[{label:"全部状态",value:""},...o.statuses]:[{label:"全部状态",value:""},{label:"待审核",value:"pending"},{label:"已通过",value:"verified"},{label:"已驳回",value:"rejected"}]),O=Q(()=>({page:r.page,pageSize:r.pageSize,itemCount:r.itemCount,showSizePicker:!0,pageSizes:[10,20,50],onUpdatePage:t=>{r.page=t,q()},onUpdatePageSize:t=>{r.pageSize=t,r.page=1,q()}})),I=[{title:"用户",key:"display_name",width:160},{title:"邮箱",key:"email",minWidth:220,ellipsis:{tooltip:!0}},{title:"状态",key:"status",width:100,render:t=>Z(V,{size:"small",round:!0,type:{pending:"warning",verified:"success",rejected:"error"}[t.status]||"default"},()=>t.status)},{title:"邮箱验证",key:"email_verified",width:100,render:t=>t.email_verified?"已完成":"未完成"},{title:"申请时间",key:"requested_at",width:170},{title:"处理时间",key:"reviewed_at",width:170,render:t=>t.reviewed_at||"-"},{title:"历史",key:"history_count",width:80},{title:"操作",key:"actions",width:120,render:t=>Z(Y,{size:"small"},()=>[Z(H,{size:"tiny",type:"primary",quaternary:!0,onClick:()=>R(t.user_id)},()=>"审核")])}];oe(async()=>{await E()});function B(t){return(t==null?void 0:t.data)??t??{}}function N(t){const a=new Date(t),_=a.getFullYear(),c=`${a.getMonth()+1}`.padStart(2,"0"),W=`${a.getDate()}`.padStart(2,"0");return`${_}-${c}-${W}`}function j(){const t={page:r.page,per_page:r.pageSize};return n.keyword&&(t.keyword=n.keyword),n.status&&(t.status=n.status),Array.isArray(n.dateRange)&&n.dateRange.length===2&&(t.date_from=N(n.dateRange[0]),t.date_to=N(n.dateRange[1])),t}async function E(){y.value=!0;try{const[t,a]=await Promise.all([C.getSchemaPage("users","verify"),C.getAuthSettings()]),_=B(t),c=B(a);l.user_verify_enabled=_.user_verify_enabled!==!1,l.user_verify_public_display=_.user_verify_public_display!==!1,l.user_verify_badge_text=_.user_verify_badge_text||"已认证",l.user_verify_accept_email_verified=_.user_verify_accept_email_verified!==!1,l.user_verify_require_manual_review=!!_.user_verify_require_manual_review,h.emailVerificationEnabled=!!c.registration_email_verification_enabled,await q()}catch(t){z.error((t==null?void 0:t.message)||"加载身份认证页失败")}finally{y.value=!1}}async function q(){var t;b.value=!0;try{const a=await C.request("/verify/requests",{params:j()}),_=(a==null?void 0:a.data)||{};U.value=_.items||[],r.itemCount=_.total||0,Object.assign(x,_.counts||{}),o.statuses=((t=_.options)==null?void 0:t.statuses)||[]}catch(a){z.error((a==null?void 0:a.message)||"加载认证审核台失败")}finally{b.value=!1}}async function T(){D.value=!0;try{await C.saveSchemaPage("users","verify",{user_verify_enabled:l.user_verify_enabled,user_verify_public_display:l.user_verify_public_display,user_verify_badge_text:l.user_verify_badge_text,user_verify_accept_email_verified:l.user_verify_accept_email_verified,user_verify_require_manual_review:l.user_verify_require_manual_review}),z.success("身份认证配置已保存")}catch(t){z.error((t==null?void 0:t.message)||"保存失败")}finally{D.value=!1}}function L(){r.page=1,q()}function R(t){d.value=t,k.value=!0}return(t,a)=>{const _=i("n-card"),c=i("n-grid-item"),W=i("n-alert"),G=i("n-grid"),M=i("n-switch"),$=i("n-form-item"),J=i("n-input"),ae=i("n-form"),se=i("n-select"),le=i("n-date-picker"),re=i("n-data-table");return w(),P("div",me,[e(ne,{title:"身份认证",desc:"维护公开认证展示和后台审核台,统一查看待审、已通过、已驳回的人工认证记录。"}),e(G,{cols:"1 s:1 m:2","x-gap":16,"y-gap":16,responsive:"screen"},{default:s(()=>[e(c,null,{default:s(()=>[e(_,{size:"small",title:"当前状态"},{default:s(()=>[e(m(Y),{wrap:""},{default:s(()=>[e(m(V),{round:"",type:l.user_verify_enabled?"success":"default"},{default:s(()=>[f(" 认证结构:"+v(l.user_verify_enabled?"已启用":"已关闭"),1)]),_:1},8,["type"]),e(m(V),{round:"",type:h.emailVerificationEnabled?"info":"default"},{default:s(()=>[f(" 邮箱验证:"+v(h.emailVerificationEnabled?"已启用":"未启用"),1)]),_:1},8,["type"]),e(m(V),{round:"",type:"warning"},{default:s(()=>[f(" 待审核:"+v(x.pending),1)]),_:1}),e(m(V),{round:"",type:"success"},{default:s(()=>[f(" 已通过:"+v(x.verified),1)]),_:1}),e(m(V),{round:"",type:"default"},{default:s(()=>[f(" 已驳回:"+v(x.rejected),1)]),_:1})]),_:1})]),_:1})]),_:1}),e(c,null,{default:s(()=>[e(_,{size:"small",title:"审核说明"},{default:s(()=>[e(W,{type:"info","show-icon":!1},{default:s(()=>[...a[9]||(a[9]=[f(" 人工审核台读取 `aksrt_user_verify_status`、`aksrt_user_verify_reason` 和审核日志。开启“邮箱验证通过视为已认证”后,公开页仍会优先展示邮件验证结果。 ",-1)])]),_:1})]),_:1})]),_:1})]),_:1}),e(_,{class:"aksrt-verify-page__card",size:"small",title:"公开展示与审核开关"},{default:s(()=>[e(ae,{model:l,"label-placement":"left","label-width":"180",class:"aksrt-form"},{default:s(()=>[e($,{label:"启用身份认证结构"},{default:s(()=>[e(M,{value:l.user_verify_enabled,"onUpdate:value":a[0]||(a[0]=u=>l.user_verify_enabled=u)},null,8,["value"])]),_:1}),e($,{label:"公开显示认证徽标"},{default:s(()=>[e(M,{value:l.user_verify_public_display,"onUpdate:value":a[1]||(a[1]=u=>l.user_verify_public_display=u),disabled:!l.user_verify_enabled},null,8,["value","disabled"])]),_:1}),e($,{label:"认证徽标文案"},{default:s(()=>[e(J,{value:l.user_verify_badge_text,"onUpdate:value":a[2]||(a[2]=u=>l.user_verify_badge_text=u),disabled:!l.user_verify_enabled,maxlength:"20"},null,8,["value","disabled"])]),_:1}),e($,{label:"邮箱验证通过视为已认证"},{default:s(()=>[e(M,{value:l.user_verify_accept_email_verified,"onUpdate:value":a[3]||(a[3]=u=>l.user_verify_accept_email_verified=u),disabled:!l.user_verify_enabled},null,8,["value","disabled"])]),_:1}),e($,{label:"启用人工审核台"},{default:s(()=>[e(M,{value:l.user_verify_require_manual_review,"onUpdate:value":a[4]||(a[4]=u=>l.user_verify_require_manual_review=u),disabled:!l.user_verify_enabled},null,8,["value","disabled"])]),_:1}),p("div",ge,[e(m(H),{type:"primary",loading:D.value,onClick:T},{default:s(()=>[...a[10]||(a[10]=[f("保存配置",-1)])]),_:1},8,["loading"])])]),_:1},8,["model"])]),_:1}),e(_,{class:"aksrt-verify-page__card",size:"small",title:"认证审核台"},{default:s(()=>[e(m(Y),{vertical:"",size:12},{default:s(()=>[e(G,{cols:"1 s:2 m:4","x-gap":12,"y-gap":12,responsive:"screen"},{default:s(()=>[e(c,null,{default:s(()=>[e(J,{value:n.keyword,"onUpdate:value":a[5]||(a[5]=u=>n.keyword=u),clearable:"",placeholder:"搜索用户、邮箱、备注"},null,8,["value"])]),_:1}),e(c,null,{default:s(()=>[e(se,{value:n.status,"onUpdate:value":a[6]||(a[6]=u=>n.status=u),options:F.value,placeholder:"审核状态"},null,8,["value","options"])]),_:1}),e(c,null,{default:s(()=>[e(le,{value:n.dateRange,"onUpdate:value":a[7]||(a[7]=u=>n.dateRange=u),type:"daterange",clearable:"",style:{width:"100%"}},null,8,["value"])]),_:1}),e(c,null,{default:s(()=>[e(m(H),{type:"primary",block:"",onClick:L},{default:s(()=>[...a[11]||(a[11]=[f("筛选记录",-1)])]),_:1})]),_:1})]),_:1}),e(re,{columns:I,data:U.value,loading:b.value,bordered:!1,pagination:O.value,"row-key":u=>u.user_id},null,8,["data","loading","pagination","row-key"])]),_:1})]),_:1}),e(ye,{show:k.value,"onUpdate:show":a[8]||(a[8]=u=>k.value=u),"user-id":d.value,onUpdated:q},null,8,["show","user-id"])])}}},Ue=ee(we,[["__scopeId","data-v-96c64f9f"]]);export{Ue as default}; diff --git a/assets/admin/build/UsersVerify.css b/assets/admin/build/UsersVerify.css new file mode 100644 index 00000000..421596a2 --- /dev/null +++ b/assets/admin/build/UsersVerify.css @@ -0,0 +1 @@ +.aksrt-verify-drawer__section[data-v-84e367b4]{margin-top:20px}.aksrt-verify-drawer__title[data-v-84e367b4]{margin-bottom:10px;font-size:14px;font-weight:600;color:#1f2937}.aksrt-verify-drawer__timeline[data-v-84e367b4]{display:grid;gap:12px}.aksrt-verify-drawer__timeline-item[data-v-84e367b4]{padding:12px;border:1px solid #e5e7eb;border-radius:12px;background:#f8fafc}.aksrt-verify-drawer__timeline-head[data-v-84e367b4]{display:flex;justify-content:space-between;gap:12px;margin-bottom:6px}.aksrt-verify-drawer__timeline-item p[data-v-84e367b4]{margin:0 0 6px;color:#111827;white-space:pre-wrap}.aksrt-verify-drawer__timeline-item small[data-v-84e367b4]{color:#6b7280}.aksrt-verify-page__card[data-v-96c64f9f]{margin-top:16px} diff --git a/assets/admin/build/UsersWechatTemplate.BTkLtWGJ.js b/assets/admin/build/UsersWechatTemplate.BTkLtWGJ.js new file mode 100644 index 00000000..c7f4e2e1 --- /dev/null +++ b/assets/admin/build/UsersWechatTemplate.BTkLtWGJ.js @@ -0,0 +1 @@ +import{X as u,a4 as w,Y as s,L as r,Z as o,j as _,af as y,f as b,ag as p,F as g,R as x,o as T,c as S,r as f,e as D,a1 as V,W as k}from"./vendor-vue.Bykizn0M.js";import{P as I}from"./PageHeader.Di3JTPjc.js";import{a as h}from"./shared-api.D5_fnN32.js";import{_ as U}from"./index.js";import"./vendor-naive.BuHWlEgf.js";import"./vendor-misc.1adHN6i_.js";const A={name:"UsersWechatTemplate",components:{PageHeader:I},setup(){const n=f({enabled:!1,configured:!1,has_token:!1,has_template:!1,bound_users:0}),t=D({enabled:!1,app_id:"",app_secret:"",template_id:""}),d=f(!1),a=[{key:"comment_reply",desc:"评论回复通知"},{key:"system_notice",desc:"系统公告通知"},{key:"order_paid",desc:"订单支付通知"},{key:"credits_change",desc:"积分变动通知"},{key:"forum_reply",desc:"论坛回复通知"}],i=f([]),m=S(()=>a.map(e=>({...e,ready:i.value.length===0||i.value.includes(e.key)})));async function c(){try{const e=await h.request("/wechat/status");e.success&&(n.value=e.data,t.enabled=e.data.enabled||!1,t.app_id=e.data.appid||"",t.app_secret=(e.data.app_secret==="***",""),t.template_id=e.data.template_id||"",i.value=e.data.allowed_types||[])}catch(e){console.error("Load WeChat status failed:",e)}}async function l(){d.value=!0;try{const e={...t};!e.app_secret&&n.value.configured&&(e.app_secret="***");const v=await h.request("/wechat/settings",{method:"POST",data:e});v.success?(alert("设置已保存"),c()):alert(v.message||"保存失败")}catch(e){console.error("Save failed:",e),alert("保存失败: "+(e.message||"未知错误"))}finally{d.value=!1}}return T(()=>c()),{status:n,form:t,saving:d,eventTypes:m,saveSettings:l}}},C={class:"aksrt-page-container"},P={class:"aksrt-wechat__status"},W={class:"aksrt-wechat__status-card"},j={class:"aksrt-wechat__status-info"},B={class:"aksrt-wechat__status-value"},H={class:"aksrt-wechat__status-card"},L={class:"aksrt-wechat__status-info"},M={class:"aksrt-wechat__status-value"},N={class:"aksrt-wechat__status-card"},q={class:"aksrt-wechat__status-info"},F={class:"aksrt-wechat__status-value"},z={class:"aksrt-wechat__status-card"},E={class:"aksrt-wechat__status-info"},O={class:"aksrt-wechat__status-value"},R={class:"aksrt-wechat__form-card"},X={class:"aksrt-form-group"},Y={class:"aksrt-form-group"},Z={class:"aksrt-form-group"},G={class:"aksrt-form-group"},J={class:"aksrt-form-actions"},K=["disabled"],Q={class:"aksrt-wechat__form-card"},$={class:"aksrt-table aksrt-table--sm"};function ss(n,t,d,a,i,m){const c=V("PageHeader");return k(),u("div",C,[w(c,{title:"微信模板消息",desc:"配置微信公众号模板消息推送。"}),s("div",P,[s("div",W,[s("div",{class:r(["aksrt-wechat__status-icon",a.status.configured?"aksrt-wechat__status-icon--ok":"aksrt-wechat__status-icon--warn"])},[s("i",{class:r(a.status.configured?"fas fa-check":"fas fa-exclamation")},null,2)],2),s("div",j,[t[5]||(t[5]=s("div",{class:"aksrt-wechat__status-label"},"配置状态",-1)),s("div",B,o(a.status.configured?"已配置":"未配置"),1)])]),s("div",H,[s("div",{class:r(["aksrt-wechat__status-icon",a.status.has_token?"aksrt-wechat__status-icon--ok":"aksrt-wechat__status-icon--warn"])},[s("i",{class:r((a.status.has_token,"fas fa-key"))},null,2)],2),s("div",L,[t[6]||(t[6]=s("div",{class:"aksrt-wechat__status-label"},"Access Token",-1)),s("div",M,o(a.status.has_token?"已获取":"未获取"),1)])]),s("div",N,[s("div",{class:r(["aksrt-wechat__status-icon",a.status.has_template?"aksrt-wechat__status-icon--ok":"aksrt-wechat__status-icon--warn"])},[s("i",{class:r((a.status.has_template,"fas fa-file-alt"))},null,2)],2),s("div",q,[t[7]||(t[7]=s("div",{class:"aksrt-wechat__status-label"},"模板 ID",-1)),s("div",F,o(a.status.has_template?"已配置":"未配置"),1)])]),s("div",z,[t[9]||(t[9]=s("div",{class:"aksrt-wechat__status-icon aksrt-wechat__status-icon--info"},[s("i",{class:"fas fa-users"})],-1)),s("div",E,[t[8]||(t[8]=s("div",{class:"aksrt-wechat__status-label"},"绑定用户",-1)),s("div",O,o(a.status.bound_users||0)+" 人",1)])])]),s("div",R,[t[15]||(t[15]=s("h3",null,"基本配置",-1)),s("div",X,[s("label",null,[_(s("input",{type:"checkbox","onUpdate:modelValue":t[0]||(t[0]=l=>a.form.enabled=l)},null,512),[[y,a.form.enabled]]),t[10]||(t[10]=b(" 启用微信模板消息 ",-1))])]),s("div",Y,[t[11]||(t[11]=s("label",null,"AppID",-1)),_(s("input",{"onUpdate:modelValue":t[1]||(t[1]=l=>a.form.app_id=l),type:"text",class:"aksrt-input",placeholder:"微信公众号 AppID"},null,512),[[p,a.form.app_id]])]),s("div",Z,[t[12]||(t[12]=s("label",null,"AppSecret",-1)),_(s("input",{"onUpdate:modelValue":t[2]||(t[2]=l=>a.form.app_secret=l),type:"password",class:"aksrt-input",placeholder:"微信公众号 AppSecret"},null,512),[[p,a.form.app_secret]]),t[13]||(t[13]=s("p",{class:"aksrt-form-hint"},"保存后不会回显完整密钥",-1))]),s("div",G,[t[14]||(t[14]=s("label",null,"模板 ID",-1)),_(s("input",{"onUpdate:modelValue":t[3]||(t[3]=l=>a.form.template_id=l),type:"text",class:"aksrt-input",placeholder:"微信模板消息模板 ID"},null,512),[[p,a.form.template_id]])]),s("div",J,[s("button",{class:"aksrt-button aksrt-button--primary",disabled:a.saving,onClick:t[4]||(t[4]=(...l)=>a.saveSettings&&a.saveSettings(...l))},o(a.saving?"保存中...":"保存设置"),9,K)])]),s("div",Q,[t[17]||(t[17]=s("h3",null,"支持的通知类型",-1)),t[18]||(t[18]=s("p",{class:"aksrt-form-hint"},"以下事件类型可触发微信模板消息推送(需用户绑定微信且开启对应订阅):",-1)),s("table",$,[t[16]||(t[16]=s("thead",null,[s("tr",null,[s("th",null,"事件类型"),s("th",null,"说明"),s("th",null,"状态")])],-1)),s("tbody",null,[(k(!0),u(g,null,x(a.eventTypes,l=>(k(),u("tr",{key:l.key},[s("td",null,[s("code",null,o(l.key),1)]),s("td",null,o(l.desc),1),s("td",null,[s("span",{class:r(["aksrt-badge",l.ready?"aksrt-badge--success":"aksrt-badge--warning"])},o(l.ready?"可用":"待接入"),3)])]))),128))])])])])}const ns=U(A,[["render",ss],["__scopeId","data-v-cb377b9c"]]);export{ns as default}; diff --git a/assets/admin/build/UsersWechatTemplate.css b/assets/admin/build/UsersWechatTemplate.css new file mode 100644 index 00000000..ad4ce9c8 --- /dev/null +++ b/assets/admin/build/UsersWechatTemplate.css @@ -0,0 +1 @@ +.aksrt-wechat__status[data-v-cb377b9c]{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px;margin-bottom:24px}.aksrt-wechat__status-card[data-v-cb377b9c]{display:flex;align-items:center;gap:12px;padding:16px;background:#fff;border-radius:8px;border:1px solid #e8e8e8}.aksrt-wechat__status-icon[data-v-cb377b9c]{width:40px;height:40px;border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:16px}.aksrt-wechat__status-icon--ok[data-v-cb377b9c]{background:#d4edda;color:#155724}.aksrt-wechat__status-icon--warn[data-v-cb377b9c]{background:#fff3cd;color:#856404}.aksrt-wechat__status-icon--info[data-v-cb377b9c]{background:#d1ecf1;color:#0c5460}.aksrt-wechat__status-value[data-v-cb377b9c]{font-size:18px;font-weight:600;color:#1a1a2e}.aksrt-wechat__status-label[data-v-cb377b9c]{font-size:12px;color:#888}.aksrt-wechat__form-card[data-v-cb377b9c]{background:#fff;border:1px solid #e8e8e8;border-radius:8px;padding:24px;margin-bottom:16px}.aksrt-wechat__form-card h3[data-v-cb377b9c]{margin:0 0 16px;font-size:16px;font-weight:600}.aksrt-form-hint[data-v-cb377b9c]{font-size:12px;color:#888;margin-top:4px} diff --git a/assets/admin/build/index.css b/assets/admin/build/index.css new file mode 100644 index 00000000..859977f0 --- /dev/null +++ b/assets/admin/build/index.css @@ -0,0 +1 @@ +.aksrt-mobile-topbar[data-v-cdd0c306]{display:flex;align-items:center;gap:10px;height:48px;padding:0 14px;background:#fff;border-bottom:1px solid #eceff5;position:sticky;top:0;z-index:50}.aksrt-mobile-topbar__menu[data-v-cdd0c306]{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border:none;border-radius:8px;background:transparent;color:#1a1a2e;cursor:pointer;margin-left:-6px}.aksrt-mobile-topbar__menu[data-v-cdd0c306]:hover{background:#f3f5f9}.aksrt-mobile-topbar__title[data-v-cdd0c306]{flex:1 1 auto;font-size:15px;font-weight:600;color:#1a1a2e;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.aksrt-mobile-topbar__brand[data-v-cdd0c306]{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:8px;background:#18a058;color:#fff;font-size:11px;font-weight:700;letter-spacing:.06em}.aksrt-logo[data-v-06997596]{display:flex;align-items:center;justify-content:center;height:60px;gap:10px;border-bottom:1px solid var(--n-border-color, #efeff5)}.aksrt-logo--drawer[data-v-06997596]{justify-content:flex-start;padding:0 18px}.logo-icon[data-v-06997596]{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:8px;background:#18a058;color:#fff;font-size:12px;font-weight:700;letter-spacing:.08em}.logo-text[data-v-06997596]{font-size:18px;font-weight:700;color:#1a1a2e;letter-spacing:1px}.aksrt-admin-content__inner[data-v-06997596]{padding:24px 28px}.aksrt-admin-mobile[data-v-06997596]{background:#f5f7fb;min-height:100vh}.aksrt-admin-mobile__body[data-v-06997596]{padding:14px 12px 32px}.aksrt-page-wrapper[data-v-06997596]{min-height:calc(100vh - 120px)}.aksrt-error-fallback[data-v-06997596]{padding:48px 20px;text-align:center}.aksrt-error-title[data-v-06997596]{margin:0 0 10px;font-size:16px;color:#d03050}.aksrt-error-msg[data-v-06997596]{margin:0 0 16px;font-size:13px;color:#777}#aksrt-admin-app,#aksrt-admin-app *{box-sizing:border-box}#aksrt-admin-app{min-height:100%;color:#333;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans SC,sans-serif;font-size:14px;line-height:1.6}#aksrt-admin-app .n-menu .n-menu-item-content i[class*=fa-],#aksrt-admin-app .n-menu-item-content i[class*=fa-]{font-size:18px;width:18px;text-align:center;display:inline-flex;align-items:center;justify-content:center;color:inherit;opacity:.75;transition:opacity .15s}#aksrt-admin-app .n-menu-item-content--selected i[class*=fa-],#aksrt-admin-app .n-menu-item-content:hover i[class*=fa-]{opacity:1}#aksrt-admin-app .n-layout,#aksrt-admin-app .n-layout-sider{min-height:100vh}#aksrt-admin-app .aksrt-admin-layout{min-height:100vh;background:#f5f7fb}#aksrt-admin-app .aksrt-page-container,#aksrt-admin-app .content-page{max-width:1100px;margin:0 auto}#aksrt-admin-app .aksrt-page-title{margin:0 0 12px;color:#1a1a2e;font-size:22px;font-weight:700;letter-spacing:-.02em}#aksrt-admin-app .aksrt-page-desc{margin:0 0 24px;color:#7a7f8a;font-size:13px;line-height:1.7}#aksrt-admin-app .aksrt-section-card{margin-bottom:18px;border-radius:12px!important;border:1px solid #eceff5!important;box-shadow:0 1px 3px #0f172a0a}#aksrt-admin-app .aksrt-section-card .n-card__content{padding:18px 20px 20px!important}#aksrt-admin-app .aksrt-section-card .n-card-header{padding:18px 20px 0!important}#aksrt-admin-app .aksrt-section-header{display:flex;align-items:center;gap:10px;margin-bottom:14px}#aksrt-admin-app .aksrt-section-header h3{margin:0;color:#1a1a2e;font-size:15px;font-weight:600}#aksrt-admin-app .section-icon,#aksrt-admin-app .header-icon{font-size:17px;opacity:.8;display:inline-flex;align-items:center}#aksrt-admin-app .section-desc,#aksrt-admin-app .aksrt-hint-text{color:#8a909c;font-size:12px;line-height:1.6}#aksrt-admin-app .section-desc{margin:0 0 14px}#aksrt-admin-app .aksrt-form .n-form-item{margin-bottom:18px}#aksrt-admin-app .aksrt-form .n-form-item:last-child{margin-bottom:0}#aksrt-admin-app .aksrt-form .n-form-item-label{color:#555!important;font-size:13px;font-weight:500}#aksrt-admin-app .aksrt-form .n-input,#aksrt-admin-app .aksrt-form .n-select .n-base-selection,#aksrt-admin-app .aksrt-form .n-input-number{min-height:38px;--n-height: 38px !important}#aksrt-admin-app .aksrt-form .n-input--textarea textarea{min-height:84px}#aksrt-admin-app .aksrt-form .n-switch{--n-rail-height: 26px !important;--n-rail-width: 48px !important}#aksrt-admin-app .aksrt-form-actions{display:flex;justify-content:flex-end;align-items:center;gap:12px;padding:24px 0 8px;margin-top:28px;border-top:1px solid #eef1f6}#aksrt-admin-app .aksrt-form-actions .n-button{min-width:120px;height:40px;font-weight:500}#aksrt-admin-app .aksrt-tabs .n-tabs-nav{margin-bottom:20px!important}#aksrt-admin-app .aksrt-tabs .n-tabs-tab{padding:10px 20px!important;font-size:14px!important;font-weight:500}#aksrt-admin-app .n-data-table{border-radius:10px;overflow:hidden}#aksrt-admin-app .n-data-table .n-data-table-th{background:#f8fafc}#aksrt-admin-app .n-empty{padding:24px 0}#aksrt-admin-app .aksrt-card-header-row__left{display:inline-flex;align-items:center;gap:8px;min-width:0}#aksrt-admin-app .aksrt-card-header-row__title{font-weight:600}#aksrt-admin-app .aksrt-card-header-row{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;flex-wrap:wrap}#aksrt-admin-app .aksrt-card-header-row__left{display:flex;align-items:center;gap:8px;min-width:0}#aksrt-admin-app .aksrt-card-header-row__title{margin:0;font-size:15px;font-weight:600;color:#1a1a2e}.fade-slide-enter-active,.fade-slide-leave-active{transition:opacity .24s ease,transform .24s ease}.fade-slide-enter-from{opacity:0;transform:translateY(12px)}.fade-slide-leave-to{opacity:0;transform:translateY(-8px)}.aksrt-modal-card{width:100%;max-width:520px}@media(max-width:768px){#aksrt-admin-app .aksrt-page-container,#aksrt-admin-app .content-page{max-width:100%;padding:0}#aksrt-admin-app .aksrt-page-title{font-size:18px;margin-bottom:8px}#aksrt-admin-app .aksrt-page-desc{font-size:12px;margin-bottom:14px}#aksrt-admin-app .aksrt-section-card{margin-bottom:12px;border-radius:10px!important}#aksrt-admin-app .aksrt-section-card .n-card__content{padding:14px!important}#aksrt-admin-app .aksrt-section-card .n-card-header{padding:14px 14px 0!important}#aksrt-admin-app .aksrt-section-header{margin-bottom:10px}#aksrt-admin-app .aksrt-form .n-form-item{margin-bottom:14px}#aksrt-admin-app .aksrt-form .n-form-item .n-form-item-label{text-align:left!important;padding:0 0 6px!important;width:auto!important;height:auto!important;line-height:1.5!important;justify-content:flex-start!important}#aksrt-admin-app .aksrt-form .n-form-item-blank{width:100%}#aksrt-admin-app .aksrt-form .n-form-item .n-form-item-label,#aksrt-admin-app .aksrt-form .n-form-item-row{display:block!important}#aksrt-admin-app .aksrt-form .n-radio-group{width:100%}#aksrt-admin-app .aksrt-form .n-radio-group .n-space{flex-wrap:wrap!important;gap:6px 8px!important}#aksrt-admin-app .aksrt-form .n-radio-button{flex:1 1 auto;min-width:0}#aksrt-admin-app .aksrt-form .n-input-group{flex-wrap:wrap;gap:6px}#aksrt-admin-app .aksrt-form .n-input-group>.n-input,#aksrt-admin-app .aksrt-form .n-input-group>.n-button{border-radius:6px!important}#aksrt-admin-app .aksrt-form-actions{flex-direction:column-reverse;align-items:stretch;padding:16px 0 8px;margin-top:20px;gap:8px}#aksrt-admin-app .aksrt-form-actions .n-button{width:100%;min-width:0;height:42px}#aksrt-admin-app .aksrt-card-header-row{gap:8px}.n-modal-mask+.n-modal-body-wrapper .n-modal,.n-modal-body-wrapper>.n-modal{width:100vw!important;max-width:100vw!important;border-radius:0!important;margin:0!important;min-height:100vh}.aksrt-modal-card{max-width:100vw!important;width:100vw!important;min-height:100vh;border-radius:0!important}.aksrt-table-mobile-hide,#aksrt-admin-app .n-data-table .aksrt-table-mobile-hide{display:none!important}#aksrt-admin-app .n-data-table .n-data-table-td,#aksrt-admin-app .n-data-table .n-data-table-th{padding:8px 10px!important}#aksrt-admin-app .aksrt-tabs .n-tabs-tab{padding:8px 12px!important;font-size:13px!important}.n-drawer .n-menu .n-menu-item-content{padding-left:18px!important}}@media(max-width:480px){#aksrt-admin-app .aksrt-section-card .n-card__content{padding:12px!important}#aksrt-admin-app .aksrt-section-card .n-card-header{padding:12px 12px 0!important}} diff --git a/assets/admin/build/index.html b/assets/admin/build/index.html new file mode 100644 index 00000000..56bad250 --- /dev/null +++ b/assets/admin/build/index.html @@ -0,0 +1,16 @@ + + + + + + AKSRT 主题设置 + + + + + + + +
+ + diff --git a/assets/admin/build/index.js b/assets/admin/build/index.js new file mode 100644 index 00000000..80cf0a28 --- /dev/null +++ b/assets/admin/build/index.js @@ -0,0 +1,2 @@ +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./SchemaPage.CSkx936u.js","./vendor-vue.Bykizn0M.js","./shared-api.B7o7Pzvu.js","./FaIcon.CX_hGmM4.js","./vendor-misc.1adHN6i_.js","./shared-api.D5_fnN32.js","./index2.css","./vendor-naive.BuHWlEgf.js","./SchemaPage.css","./DeferredPage.DrhT6-8i.js","./DeferredPage.css","./NativeOpsRedirect.C0bocwWY.js","./NativeOpsRedirect.css","./FloatingButtonsSettings.-1uwNMV9.js","./vendor-draggable.CceJcfGJ.js","./PageHeader.Di3JTPjc.js","./PageHeader.css","./FloatingButtonsSettings.css","./FooterTabbarSettings.RLdsCbkU.js","./FooterTabbarSettings.css","./FooterSettings.pT4aCC_F.js","./media.BHNcAGK-.js","./FooterSettings.css","./HomepageSettings.iKd6UZP-.js","./HomepageSettings.css","./HeroManager.sfaSC084.js","./HeroManager.css","./BannerManager.DIeolpAQ.js","./BannerManager.css","./PostPageSettings.B1brRzY8.js","./CommentSettings.BXEQmxrU.js","./CommentPermissions.wWXEnm5v.js","./PermissionsCapabilities.DAu3e_3q.js","./PermissionsCapabilities.css","./AttachmentPermissions.NUq74TjZ.js","./AttachmentPermissions.css","./DownloadPermissions.D_4Tmrvf.js","./CmsCredits.xTl3ugX1.js","./ResourceDownload.DvRILKEZ.js","./ThemeInfoPage.CmzNxB-f.js","./ThemeInfoPage.css","./ThemeAuthorizationPage.exqEspJr.js","./DocsPage.Cef6fL12.js","./DocsPage.css","./UsersFeatures.8x2S0GR6.js","./UsersSignin.frRX-AHK.js","./UsersVerify.DlTUYsYd.js","./UsersVerify.css","./UsersLevel.D9sYKZP1.js","./UsersBadge.BAdBIwxF.js","./UsersWechatTemplate.BTkLtWGJ.js","./UsersWechatTemplate.css","./PaymentGateway.BTbqvMWf.js","./PaymentGateway.css","./ToolsImportExport.CBVCMq0z.js","./ToolsImportExport.css","./ToolsHealth.CoF-E7n8.js","./ToolsHealth.css","./ToolsEmailRollback.YrJUTDzS.js","./ToolsEmailRollback.css","./ToolsUpdate.CTzLIO24.js","./ToolsUpdate.css","./ExtensionTools.D5LShWF9.js","./ExtensionTools.css","./ExtensionSecurity.Dusc4b9q.js","./ExtensionSecurity.css","./ExtensionAI.vrglPKlb.js","./ExtensionAI.css"])))=>i.map(i=>d[i]); +import{W as v,X as L,Y as p,Z as B,r as O,k as te,_ as oe,$ as ae,o as ne,b as se,a0 as ie,a1 as D,a2 as V,a3 as y,a4 as u,a5 as F,N as w,z as M,a6 as N,f as G,c as K,p as le,a7 as re,a8 as ce,M as me,a9 as pe}from"./vendor-vue.Bykizn0M.js";import{N as ue,n as de}from"./vendor-naive.BuHWlEgf.js";import"./vendor-misc.1adHN6i_.js";(function(){const a=document.createElement("link").relList;if(a&&a.supports&&a.supports("modulepreload"))return;for(const r of document.querySelectorAll('link[rel="modulepreload"]'))c(r);new MutationObserver(r=>{for(const m of r)if(m.type==="childList")for(const d of m.addedNodes)d.tagName==="LINK"&&d.rel==="modulepreload"&&c(d)}).observe(document,{childList:!0,subtree:!0});function i(r){const m={};return r.integrity&&(m.integrity=r.integrity),r.referrerPolicy&&(m.referrerPolicy=r.referrerPolicy),r.crossOrigin==="use-credentials"?m.credentials="include":r.crossOrigin==="anonymous"?m.credentials="omit":m.credentials="same-origin",m}function c(r){if(r.ep)return;r.ep=!0;const m=i(r);fetch(r.href,m)}})();const W=(e,a)=>{const i=e.__vccOpts||e;for(const[c,r]of a)i[c]=r;return i},ye={class:"aksrt-mobile-topbar"},ge={class:"aksrt-mobile-topbar__title"},he={__name:"MobileTopBar",props:{title:{type:String,default:"AKSRT"}},emits:["toggle"],setup(e){return(a,i)=>(v(),L("header",ye,[p("button",{class:"aksrt-mobile-topbar__menu",type:"button","aria-label":"打开菜单",onClick:i[0]||(i[0]=c=>a.$emit("toggle"))},[...i[1]||(i[1]=[p("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",width:"22",height:"22",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true"},[p("line",{x1:"4",y1:"6",x2:"20",y2:"6"}),p("line",{x1:"4",y1:"12",x2:"20",y2:"12"}),p("line",{x1:"4",y1:"18",x2:"20",y2:"18"})],-1)])]),p("div",ge,B(e.title),1),i[2]||(i[2]=p("div",{class:"aksrt-mobile-topbar__brand"},"AK",-1))]))}},_e=W(he,[["__scopeId","data-v-cdd0c306"]]),q=O(null);function f(e){return()=>te("i",{class:e,style:"font-size:18px;width:18px;text-align:center"})}function j(e){return{status:"available",component:"SchemaPage",canonicalDomain:"",section:"",phase:"",dependsOn:[],reason:"",features:[],iconClass:"",...e}}function l(e){return j(e)}function t(e){return j({component:"SchemaPage",...e})}const fe={key:"global",label:"全局&功能",icon:f("fas fa-globe"),route:"/global",children:[t({key:"global-common",name:"GlobalCommon",label:"常用功能",route:"/global/common",title:"常用功能",desc:"评论、性能、头像源与备案等全局基础配置。",canonicalDomain:"global",section:"common"}),t({key:"global-logo",name:"GlobalLogo",label:"LOGO图像",route:"/global/logo",title:"LOGO图像",desc:"管理站点 Logo、站点图标和品牌标识。",canonicalDomain:"global",section:"logo"}),t({key:"global-seo",name:"GlobalSeo",label:"SEO优化",route:"/global/seo",title:"SEO优化",desc:"站点标题、描述、关键词、Sitemap 等搜索引擎优化设置。",canonicalDomain:"global",section:"seo"}),t({key:"global-layout",name:"GlobalLayout",label:"显示&布局",route:"/global/layout",title:"显示&布局",desc:"全局布局风格、颜色方案、字体设置。",canonicalDomain:"global",section:"layout"}),t({key:"global-search",name:"GlobalSearch",label:"搜索功能",route:"/global/search",title:"搜索功能",desc:"搜索页面样式、搜索建议、热门搜索配置。",canonicalDomain:"global",section:"search"}),l({key:"global-tabbar",name:"GlobalTabbar",label:"手机底部Tab",route:"/global/tabbar",title:"手机底部Tab",desc:"移动端底部导航栏配置。",component:"FooterTabbarSettings"}),l({key:"global-floating",name:"GlobalFloating",label:"右侧悬浮按钮",route:"/global/floating",title:"右侧悬浮按钮",desc:"页面右侧浮动按钮的显示与配置。",component:"FloatingButtonsSettings"}),t({key:"global-i18n",name:"GlobalI18n",label:"多语言翻译",route:"/global/i18n",title:"多语言翻译",desc:"配置站点语言、语言切换器和翻译管理。",canonicalDomain:"global",section:"i18n"}),t({key:"global-email",name:"GlobalEmail",label:"Email邮件",route:"/global/email",title:"Email邮件",desc:"SMTP 发信配置、邮件模板与测试。",canonicalDomain:"global",section:"email"}),t({key:"global-custom-code",name:"GlobalCustomCode",label:"自定义代码",route:"/global/custom-code",title:"自定义代码",desc:"自定义 CSS、JS 代码注入。",canonicalDomain:"global",section:"custom-code"})]},be={key:"page-display",label:"页面&显示",icon:f("fas fa-desktop"),route:"/page-display",children:[t({key:"page-display-header-nav",name:"PageDisplayHeaderNav",label:"顶部导航栏",route:"/page-display/header-nav",title:"顶部导航栏",desc:"导航栏布局、菜单位置、LOGO 与搜索入口配置。",canonicalDomain:"page_display",section:"header-nav"}),t({key:"page-display-background",name:"PageDisplayBackground",label:"全局背景",route:"/page-display/background",title:"全局背景",desc:"配置站点全局背景图、背景色、暗色模式背景和遮罩。",canonicalDomain:"page_display",section:"background"}),t({key:"page-display-menu-decoration",name:"PageDisplayMenuDecoration",label:"菜单装饰",route:"/page-display/menu-decoration",title:"菜单装饰",desc:"配置导航菜单的图标、徽章、下拉样式和图文卡片子菜单。",canonicalDomain:"page_display",section:"menu-decoration"}),t({key:"page-display-header-components",name:"PageDisplayHeaderComponents",label:"顶部多功能组件",route:"/page-display/header-components",title:"顶部多功能组件",desc:"配置顶部组件显示范围、轮播参数、搜索覆盖层与图标卡片。幻灯片内容见「Hero 轮播」「Banner 轮播」。",canonicalDomain:"page_display",section:"header-components"}),l({key:"page-display-hero",name:"PageDisplayHero",label:"Hero 轮播",route:"/page-display/hero",title:"Hero 轮播管理",desc:"管理首页顶部 Hero 幻灯片内容(图片/视频、文案、图层、跳转)。显示开关与搜索/卡片配置见「顶部多功能组件」。",component:"HeroManager",canonicalDomain:"page_display",section:"hero"}),l({key:"page-display-banner",name:"PageDisplayBanner",label:"Banner 轮播",route:"/page-display/banner",title:"Banner 管理",desc:"管理首页内容流 Banner 幻灯片(图片、文案、跳转、启用状态)。",component:"BannerManager",canonicalDomain:"page_display",section:"banner"}),l({key:"page-display-footer",name:"PageDisplayFooter",label:"底部页脚",route:"/page-display/footer",title:"底部页脚",desc:"页脚布局、友链、版权信息配置。",component:"FooterSettings"}),l({key:"page-display-homepage",name:"PageDisplayHomepage",label:"首页配置",route:"/page-display/homepage",title:"首页配置",desc:"首页内容模型、主列表、分类 Tab 与首页交互配置。",component:"HomepageSettings"}),t({key:"page-display-float-btn",name:"PageDisplayFloatBtn",label:"悬浮按钮",route:"/page-display/float-btn",title:"悬浮按钮",desc:"悬浮按钮的显示规则、样式与滚动隐藏设置。",canonicalDomain:"page_display",section:"float-btn"}),t({key:"page-display-category",name:"PageDisplayCategory",label:"分类页面",route:"/page-display/category",title:"分类页面",desc:"分类归档页的头图、简介、列表模式、侧栏配置。",canonicalDomain:"page_display",section:"category"}),t({key:"page-display-tag",name:"PageDisplayTag",label:"标签页面",route:"/page-display/tag",title:"标签页面",desc:"标签归档页的展示样式与配置。",canonicalDomain:"page_display",section:"tag"}),t({key:"page-display-special",name:"PageDisplaySpecial",label:"专题页面",route:"/page-display/special",title:"专题页面",desc:"配置专题聚合页的封面、摘要、布局、聚合规则和子页面展示策略。",canonicalDomain:"page_display",section:"special"}),t({key:"page-display-user-home",name:"PageDisplayUserHome",label:"用户主页",route:"/page-display/user-home",title:"用户主页",desc:"用户公开主页的布局与展示配置。",canonicalDomain:"page_display",section:"user-home"}),t({key:"page-display-other",name:"PageDisplayOther",label:"其它页面",route:"/page-display/other",title:"其它页面",desc:"404 页面、搜索结果页等其它页面配置。",canonicalDomain:"page_display",section:"other"})]},ke={key:"post-list",label:"文章&列表",icon:f("fas fa-file-alt"),route:"/post-list",children:[t({key:"post-list-list",name:"PostListList",label:"文章列表",route:"/post-list/list",title:"文章列表",desc:"列表样式、元信息开关、分页方式配置。",canonicalDomain:"post_list",section:"list"}),t({key:"post-list-thumb",name:"PostListThumb",label:"列表缩略图",route:"/post-list/thumb",title:"列表缩略图",desc:"缩略图策略、封面回退、多图模式配置。",canonicalDomain:"post_list",section:"thumb"}),t({key:"post-list-page",name:"PostListPage",label:"文章页面",route:"/post-list/page",component:"PostPageSettings",title:"文章页面",desc:"文章页布局、目录树、灯箱、版权区配置。",canonicalDomain:"post_list",section:"page"}),t({key:"post-list-filter",name:"PostListFilter",label:"高级筛选",route:"/post-list/filter",title:"高级筛选",desc:"筛选栏、排序方式、分类筛选配置。",canonicalDomain:"post_list",section:"filter"}),t({key:"post-list-feature",name:"PostListFeature",label:"文章功能",route:"/post-list/feature",title:"文章功能",desc:"收藏、分享、阅读进度、相关推荐等功能开关。",canonicalDomain:"post_list",section:"feature"}),t({key:"post-list-share",name:"PostListShare",label:"分享设置",route:"/post-list/share",title:"分享设置",desc:"配置微信分享凭据、海报分享和社交分享选项。",canonicalDomain:"post_list",section:"share"}),t({key:"post-list-comment",name:"PostListComment",label:"评论设置",route:"/post-list/comment",component:"CommentSettings",title:"评论设置",desc:"评论排序、楼层展示、登录限制、回复限制等配置。",canonicalDomain:"post_list",section:"comment"}),t({key:"post-list-submit",name:"PostListSubmit",label:"前台投稿",route:"/post-list/submit",title:"前台投稿",desc:"配置前台投稿表单字段、审核流程、附件权限和封面策略。",canonicalDomain:"post_list",section:"submit"})]},ve={key:"permissions",label:"功能&权限",icon:f("fas fa-shield-alt"),route:"/permissions",children:[l({key:"permissions-comment",name:"PermissionsComment",label:"评论权限",route:"/permissions/comment",component:"CommentPermissions",title:"评论权限",desc:"游客评论、频率限制、敏感词和审核策略。",canonicalDomain:"permissions",section:"comment"}),l({key:"permissions-attachment",name:"PermissionsAttachment",label:"附件权限",route:"/permissions/attachment",component:"AttachmentPermissions",title:"附件权限",desc:"上传角色、文件类型、大小限制和审核状态。",canonicalDomain:"permissions",section:"attachment"}),l({key:"permissions-download",name:"PermissionsDownload",label:"下载权限",route:"/permissions/download",component:"DownloadPermissions",title:"下载权限",desc:"登录要求、积分要求、角色要求和 VIP 特权。",canonicalDomain:"permissions",section:"download"}),t({key:"permissions-login",name:"PermissionsLogin",label:"登录权限",route:"/permissions/login",title:"登录权限",desc:"登录验证、人机验证、注册限制配置。",canonicalDomain:"permissions",section:"login"}),t({key:"permissions-moderation",name:"PermissionsModeration",label:"审核和风控",route:"/permissions/moderation",title:"审核和风控",desc:"评论审核、反垃圾、限流与风控配置。",canonicalDomain:"permissions",section:"moderation"}),l({key:"permissions-capabilities",name:"PermissionsCapabilities",label:"基本权限",route:"/permissions/capabilities",component:"PermissionsCapabilities",title:"基本权限 / 能力矩阵",desc:"统一管理用户治理、投稿和评论的角色能力矩阵。",canonicalDomain:"permissions",section:"capabilities"})]},Pe={key:"users",label:"用户&互动",icon:f("fas fa-users"),route:"/users",children:[t({key:"users-auth",name:"UsersAuth",label:"注册登录",route:"/users/auth",title:"注册登录",desc:"注册方式、登录限制和密码策略配置。",canonicalDomain:"users",section:"auth"}),t({key:"users-oauth",name:"UsersOauth",label:"第三方登录",route:"/users/oauth",title:"第三方登录",desc:"GitHub、Gitee、QQ、Google 等第三方登录配置。",canonicalDomain:"users",section:"oauth"}),l({key:"users-features",name:"UsersFeatures",label:"用户功能",route:"/users/features",component:"UsersFeatures",title:"用户功能",desc:"用户中心与个人主页模块配置。",canonicalDomain:"users",section:"features"}),l({key:"users-signin",name:"UsersSignin",label:"签到奖励",route:"/users/signin",component:"UsersSignin",title:"签到奖励",desc:"签到规则、连续签到奖励和签到页面配置。",canonicalDomain:"users",section:"signin"}),l({key:"users-credits",name:"UsersCredits",label:"用户积分",route:"/users/credits",title:"用户积分",desc:"积分规则、积分日志和用户积分管理。",component:"CmsCredits",canonicalDomain:"users",section:"credits"}),l({key:"users-verify",name:"UsersVerify",label:"身份认证",route:"/users/verify",component:"UsersVerify",status:"available",title:"身份认证",desc:"身份认证字段与展示配置(审核队列在 用户 → 身份认证)。",canonicalDomain:"users",section:"verify"}),l({key:"users-level",name:"UsersLevel",label:"用户等级",route:"/users/level",component:"UsersLevel",status:"available",title:"用户等级",desc:"等级规则、升级条件和权益映射。",canonicalDomain:"users",section:"level"}),l({key:"users-badge",name:"UsersBadge",label:"用户徽章",route:"/users/badge",component:"UsersBadge",status:"available",title:"用户徽章",desc:"徽章规则、授予条件和前台展示。",canonicalDomain:"users",section:"badge"}),t({key:"users-notifications",name:"UsersNotifications",label:"消息通知",route:"/users/notifications",title:"消息通知",desc:"站内通知、邮件通知和通知策略配置。",canonicalDomain:"users",section:"notifications"}),t({key:"users-sms",name:"UsersSms",label:"短信接口",route:"/users/sms",title:"短信接口",desc:"配置短信验证码和短信通知服务的供应商、模板和限流策略。",canonicalDomain:"users",section:"sms"}),t({key:"users-wechat",name:"UsersWechat",label:"微信通知",route:"/users/wechat",title:"微信通知",desc:"配置微信模板消息、订阅/解绑和站外通知策略。",canonicalDomain:"users",section:"wechat"}),l({key:"users-wechat-template",name:"UsersWechatTemplate",label:"微信模板消息",route:"/users/wechat-template",component:"UsersWechatTemplate",status:"available",title:"微信模板消息",desc:"配置微信公众号模板消息推送。",canonicalDomain:"users",section:"wechat-template"})]},De={key:"payment",label:"支付&付费",icon:f("fas fa-wallet"),route:"/payment",children:[l({key:"payment-paid",name:"PaymentPaid",label:"下载/付费内容中心",route:"/payment/paid",title:"下载/付费内容中心",desc:"资源下载门槛、付费内容策略和人工交付说明。",component:"ResourceDownload"}),t({key:"payment-recharge",name:"PaymentRecharge",label:"余额充值",route:"/payment/recharge",status:"available",title:"余额充值",desc:"余额充值策略、记录和手动确认配置。",canonicalDomain:"payment",section:"recharge"}),t({key:"payment-vip",name:"PaymentVip",label:"VIP会员",route:"/payment/vip",status:"available",title:"VIP会员",desc:"会员套餐、会员特权和免扣策略。",canonicalDomain:"payment",section:"vip"}),l({key:"payment-gateway",name:"PaymentGateway",label:"收款接口",route:"/payment/gateway",component:"PaymentGateway",status:"available",title:"收款接口",desc:"支付网关适配器、测试网关和手动确认配置。",canonicalDomain:"payment",section:"gateway"}),t({key:"payment-order",name:"PaymentOrder",label:"订单设置",route:"/payment/order",status:"available",title:"订单设置",desc:"订单前缀、有效期、展示字段和状态文案。",canonicalDomain:"payment",section:"order"}),t({key:"payment-affiliate",name:"PaymentAffiliate",label:"推广返佣",route:"/payment/affiliate",status:"available",title:"推广返佣",desc:"返佣规则、邀请链路和结算策略(返佣工单在支付中心)。",canonicalDomain:"payment",section:"affiliate"}),t({key:"payment-card-pass",name:"PaymentCardPass",label:"卡密设置",route:"/payment/card-pass",status:"available",title:"卡密设置",desc:"充值卡类型、卡号规则与兑换文案(卡密工单在支付中心)。",canonicalDomain:"payment",section:"card-pass"}),t({key:"payment-withdrawal",name:"PaymentWithdrawal",label:"提现策略",route:"/payment/withdrawal",status:"available",title:"提现策略",desc:"最低提现、手续费与说明文案(提现工单在支付中心)。",canonicalDomain:"payment",section:"withdrawal"})]},Ee={key:"shop",label:"商城&商品",icon:f("fas fa-shopping-cart"),route:"/shop",children:[t({key:"shop-basic",name:"ShopBasic",label:"商城基础",route:"/shop/basic",title:"商城基础",desc:"商城总开关、首页链接、面包屑和 URL 别名设置。",canonicalDomain:"shop",section:"basic"}),t({key:"shop-list",name:"ShopList",label:"商品列表",route:"/shop/list",title:"商品列表",desc:"商品列表排序、分页、卡片样式和销量显示配置。",canonicalDomain:"shop",section:"list"}),t({key:"shop-single",name:"ShopSingle",label:"商品详情",route:"/shop/single",title:"商品详情",desc:"商品详情页布局、相关推荐和底部内容设置。",canonicalDomain:"shop",section:"single"}),t({key:"shop-product-defaults",name:"ShopProductDefaults",label:"商品默认参数",route:"/shop/product-defaults",title:"商品默认参数",desc:"主题级商品参数默认值,作为参数继承链的根。",canonicalDomain:"shop",section:"product-defaults"}),t({key:"shop-contact",name:"ShopContact",label:"客服配置",route:"/shop/contact",title:"客服配置",desc:"商品详情页客服按钮和联系方式配置。",canonicalDomain:"shop",section:"contact"}),t({key:"shop-shipping-config",name:"ShopShippingConfig",label:"物流配置",route:"/shop/shipping-config",title:"物流配置",desc:"快递查询接口、物流公司列表和收货地址设置。",canonicalDomain:"shop",section:"shipping-config"}),t({key:"shop-timing",name:"ShopTiming",label:"时效与售后原因",route:"/shop/timing",title:"时效与售后原因",desc:"确认收货、评价、退货时效和售后原因配置。",canonicalDomain:"shop",section:"timing"})]},Ae={key:"forum",label:"社区&论坛",icon:f("fas fa-comments"),route:"/forum",children:[t({key:"forum-settings-basic",name:"ForumSettingsBasic",label:"基础设置",route:"/forum/settings",title:"论坛基础设置",desc:"论坛总开关、管理员和名称定义。",canonicalDomain:"forum",section:"basic"}),t({key:"forum-settings-names",name:"ForumSettingsNames",label:"名称定义",route:"/forum/settings/names",title:"名称定义",desc:"自定义论坛各实体的显示名称。",canonicalDomain:"forum",section:"names"}),t({key:"forum-settings-homepage",name:"ForumSettingsHomepage",label:"首页设置",route:"/forum/settings/homepage",title:"论坛首页设置",desc:"首页 Tab 引擎、快速发帖入口和移动端交互配置。",canonicalDomain:"forum",section:"homepage"}),t({key:"forum-settings-board-page",name:"ForumSettingsBoardPage",label:"版块页面",route:"/forum/settings/board-page",title:"版块页面设置",desc:"版块页布局、Tab 栏目和移动端交互配置。",canonicalDomain:"forum",section:"board_page"}),t({key:"forum-settings-post-page",name:"ForumSettingsPostPage",label:"帖子页面",route:"/forum/settings/post-page",title:"帖子页面设置",desc:"面包屑、评分、高度限制和封面配置。",canonicalDomain:"forum",section:"post_page"}),t({key:"forum-settings-reply",name:"ForumSettingsReply",label:"回复评论",route:"/forum/settings/reply",title:"回复评论设置",desc:"回复翻页方式、工具栏功能和快捷回复配置。",canonicalDomain:"forum",section:"reply"}),t({key:"forum-settings-permissions",name:"ForumSettingsPermissions",label:"权限配置",route:"/forum/settings/permissions",title:"论坛权限配置",desc:"发帖限制、帖子付费和版块付费关注。",canonicalDomain:"forum",section:"permissions"}),t({key:"forum-settings-other",name:"ForumSettingsOther",label:"其它设置",route:"/forum/settings/other",title:"论坛其它设置",desc:"投票、版主申请说明、标题字数和 URL 别名。",canonicalDomain:"forum",section:"other"}),t({key:"forum-settings-upload",name:"ForumSettingsUpload",label:"上传权限",route:"/forum/settings/upload",title:"上传权限设置",desc:"图片、视频和文件上传大小与格式限制。",canonicalDomain:"forum",section:"upload"}),t({key:"forum-settings-credits",name:"ForumSettingsCredits",label:"积分设置",route:"/forum/settings/credits",title:"论坛积分设置",desc:"论坛行为积分奖励矩阵和每日上限。",canonicalDomain:"forum",section:"credits"})]},Se={key:"extensions",label:"扩展&增强",icon:f("fas fa-puzzle-piece"),route:"/extensions",children:[t({key:"extensions-ip",name:"ExtensionsIp",label:"IP归属地",route:"/extensions/ip",title:"IP归属地",desc:"配置 IP 数据源、缓存策略和前台归属地展示。",canonicalDomain:"extensions",section:"ip"}),t({key:"extensions-audit",name:"ExtensionsAudit",label:"API内容审核",route:"/extensions/audit",title:"API内容审核",desc:"配置第三方内容审核 API 接入、审核范围和失败回退策略。",canonicalDomain:"extensions",section:"audit"}),t({key:"extensions-push",name:"ExtensionsPush",label:"百度推送",route:"/extensions/push",title:"百度推送",desc:"配置搜索引擎主动推送、批量提交和状态追踪。",canonicalDomain:"extensions",section:"push"}),t({key:"extensions-docs-mode",name:"ExtensionsDocsMode",label:"文档模式",route:"/extensions/docs-mode",title:"文档模式",desc:"文档专题内容模式与页面增强。",canonicalDomain:"extensions",section:"docs-mode"}),l({key:"extensions-security",name:"ExtensionsSecurity",label:"网站安全",route:"/extensions/security",component:"ExtensionSecurity",title:"网站安全",desc:"扩展安全策略和第三方安全集成。"}),l({key:"extensions-tools",name:"ExtensionsTools",label:"系统工具",route:"/extensions/tools",component:"ExtensionTools",title:"系统工具",desc:"额外运维工具与扩展能力。"}),l({key:"extensions-ai",name:"ExtensionAI",label:"AI 连接配置",route:"/extensions/ai",component:"ExtensionAI",status:"available",title:"AI 连接配置",desc:"配置 AI 生成连接;SEO 在文章独立 SEO 框,摘要/标签在前台投稿页。"})]},Te={key:"tools-compat",label:"兼容&工具",icon:f("fas fa-toolbox"),route:"/tools",hidden:!0,children:[l({key:"theme-info-dashboard",name:"ThemeInfoDashboard",label:"主题信息",route:"/theme-info",component:"ThemeInfoPage",title:"主题信息",desc:"主题版本、授权信息和帮助入口。"}),l({key:"theme-authorization",name:"ThemeAuthorization",label:"主题授权",route:"/theme-info/authorization",component:"ThemeAuthorizationPage",title:"主题授权",desc:"当前版本的授权策略与产品决策说明。"})]},Le={key:"tools-compat",label:"兼容&工具",icon:f("fas fa-toolbox"),route:"/tools",hidden:!0,children:[l({key:"docs-dashboard",name:"DocsDashboard",label:"文档中心",route:"/docs",component:"DocsPage",title:"文档中心",desc:"更新日志、文档链接和发布说明。"})]},xe={key:"tools-compat",label:"工具",icon:f("fas fa-toolbox"),route:"/tools",children:[l({key:"tools-import-export",name:"ToolsImportExport",label:"导入导出",route:"/tools/import-export",title:"导入导出",desc:"导出当前配置、执行 dry-run 导入并按域重置。",component:"ToolsImportExport"}),t({key:"tools-backup",name:"ToolsBackup",label:"数据备份",route:"/tools/backup",title:"数据备份",desc:"管理设置快照、创建备份并执行恢复或删除。",canonicalDomain:"tools",section:"backup"}),l({key:"tools-health",name:"ToolsHealth",label:"健康检查",route:"/tools/health",title:"健康检查",desc:"查看主题环境、数据表、邮箱验证迁移和系统诊断状态。",component:"ToolsHealth"}),l({key:"tools-email-rollback",name:"ToolsEmailRollback",label:"邮件回滚",route:"/tools/email-rollback",title:"邮件回滚",desc:"查看 14 天邮箱变更窗口内的账号并执行回滚。",component:"ToolsEmailRollback"}),l({key:"tools-update",name:"ToolsUpdate",label:"更新中心",route:"/tools/update",title:"更新中心",desc:"查看版本状态、检测更新并浏览更新日志与教程入口。",component:"ToolsUpdate",canonicalDomain:"tools",section:"update"})]},we={global:"global-common","page-display":"page-display-header-nav","post-list":"post-list-page",permissions:"permissions-comment",users:"users-auth",payment:"payment-paid",shop:"shop-basic",forum:"forum-settings-basic",extensions:"extensions-ip",tools:"tools-import-export","theme-info":"theme-info-dashboard",docs:"docs-dashboard"};function _(e){const a=we[e.key],i=(e.children||[]).find(c=>c.key===a);return i?{...e,defaultRoute:i.route}:e}const R=[_(fe),_(be),_(ke),_(ve),_(Pe),_(De),_(Ee),_(Ae),_(Se),_(xe),_(Te),_(Le)];function Re(){return R}function Ie(){const e=[];for(const a of R){if(a.placeholder){e.push({sectionKey:a.key,...a});continue}for(const i of a.children||[])e.push({sectionKey:a.key,...i})}return e}const Oe={class:"aksrt-logo"},Ce={key:0,class:"logo-text"},Ve={class:"aksrt-admin-content__inner"},Ue={key:0,class:"aksrt-error-fallback"},Fe={class:"aksrt-error-msg"},Be={key:1,class:"aksrt-admin-mobile"},He={class:"aksrt-admin-mobile__body"},Me={key:0,class:"aksrt-error-fallback"},Ne={class:"aksrt-error-msg"},Ge={__name:"App",setup(e){const a=oe(),i=ae(),c=O(!1),r=O(null),m=O(!1),d=O(!1);function h(){m.value=window.innerWidth<768}ne(()=>{h(),window.addEventListener("resize",h)}),se(()=>{window.removeEventListener("resize",h)}),le("collapsed",c),ie(n=>(console.error("[AKSRT] 组件渲染错误:",n),r.value=(n==null?void 0:n.message)||String(n),!1));const b={};for(const n of R){if(n.children)for(const o of n.children)b[o.key]=o.route;n.placeholder&&(b[n.key]=n.route)}const I=R.filter(n=>!n.hidden).map(n=>n.placeholder?{label:n.label,key:n.key,icon:n.icon}:{label:n.label,key:n.key,icon:n.icon,children:n.children.map(o=>({label:o.secondaryEntry?`${o.label} · 次级`:o.label,key:o.key,props:o.secondaryEntry?{class:"aksrt-menu-item--secondary"}:void 0}))}),g=K(()=>{var o,k,A;const n=i.path;for(const S of R){if(S.children){for(const x of S.children)if(n===x.route||n.startsWith(x.route+"/"))return x.key}if(S.placeholder&&(n===S.route||n.startsWith(S.route+"/")))return S.key}return((A=(k=(o=R[0])==null?void 0:o.children)==null?void 0:k[0])==null?void 0:A.key)||"global-common"}),E=K(()=>{var n;return((n=i.meta)==null?void 0:n.title)||"AKSRT"});function T(n){b[n]&&(a.push(b[n]),m.value&&(d.value=!1))}return(n,o)=>{const k=D("n-menu"),A=D("n-layout-sider"),S=D("router-view"),x=D("n-button"),H=D("n-layout"),J=D("n-drawer-content"),X=D("n-drawer"),Y=D("n-notification-provider"),Z=D("n-dialog-provider"),ee=D("n-message-provider");return v(),V(w(ue),{"style-mount-target":w(q)},{default:y(()=>[u(ee,null,{default:y(()=>[u(Z,null,{default:y(()=>[u(Y,null,{default:y(()=>[m.value?(v(),L("div",Be,[u(_e,{title:E.value,onToggle:o[3]||(o[3]=P=>d.value=!0)},null,8,["title"]),u(X,{show:d.value,"onUpdate:show":o[4]||(o[4]=P=>d.value=P),placement:"left",width:280},{default:y(()=>[u(J,{"native-scrollbar":!1,"body-content-style":"padding:0;"},{default:y(()=>[o[9]||(o[9]=p("div",{class:"aksrt-logo aksrt-logo--drawer"},[p("span",{class:"logo-icon"},"AK"),p("span",{class:"logo-text"},"AKSRT")],-1)),u(k,{value:g.value,options:w(I),"onUpdate:value":T},null,8,["value","options"])]),_:1})]),_:1},8,["show"]),p("div",He,[u(S,null,{default:y(({Component:P})=>[u(M,{name:"fade-slide",mode:"out-in"},{default:y(()=>[(v(),L("div",{class:"aksrt-page-wrapper",key:w(i).fullPath},[(v(),V(N(P)))]))]),_:2},1024)]),_:1}),r.value?(v(),L("div",Me,[o[11]||(o[11]=p("p",{class:"aksrt-error-title"},"页面渲染异常",-1)),p("p",Ne,B(r.value),1),u(x,{size:"small",onClick:o[5]||(o[5]=P=>r.value=null)},{default:y(()=>[...o[10]||(o[10]=[G("重试",-1)])]),_:1})])):F("",!0)])])):(v(),V(H,{key:0,class:"aksrt-admin-layout","has-sider":""},{default:y(()=>[u(A,{bordered:"","collapse-mode":"width","collapsed-width":64,width:240,"show-collapse-trigger":"",collapsed:c.value,"native-scrollbar":!1,onCollapse:o[0]||(o[0]=P=>c.value=!0),onExpand:o[1]||(o[1]=P=>c.value=!1)},{default:y(()=>[p("div",Oe,[o[6]||(o[6]=p("span",{class:"logo-icon"},"AK",-1)),c.value?F("",!0):(v(),L("span",Ce,"AKSRT"))]),u(k,{value:g.value,collapsed:c.value,"collapsed-width":64,options:w(I),"onUpdate:value":T},null,8,["value","collapsed","options"])]),_:1},8,["collapsed"]),u(H,{"native-scrollbar":!1,class:"aksrt-admin-content"},{default:y(()=>[p("div",Ve,[u(S,null,{default:y(({Component:P})=>[u(M,{name:"fade-slide",mode:"out-in"},{default:y(()=>[(v(),L("div",{class:"aksrt-page-wrapper",key:w(i).fullPath},[(v(),V(N(P)))]))]),_:2},1024)]),_:1}),r.value?(v(),L("div",Ue,[o[8]||(o[8]=p("p",{class:"aksrt-error-title"},"页面渲染异常",-1)),p("p",Fe,B(r.value),1),u(x,{size:"small",onClick:o[2]||(o[2]=P=>r.value=null)},{default:y(()=>[...o[7]||(o[7]=[G("重试",-1)])]),_:1})])):F("",!0)])]),_:1})]),_:1}))]),_:1})]),_:1})]),_:1})]),_:1},8,["style-mount-target"])}}},Ke=W(Ge,[["__scopeId","data-v-06997596"]]),$e="modulepreload",ze=function(e,a){return new URL(e,a).href},$={},s=function(a,i,c){let r=Promise.resolve();if(i&&i.length>0){let d=function(g){return Promise.all(g.map(E=>Promise.resolve(E).then(T=>({status:"fulfilled",value:T}),T=>({status:"rejected",reason:T}))))};const h=document.getElementsByTagName("link"),b=document.querySelector("meta[property=csp-nonce]"),I=(b==null?void 0:b.nonce)||(b==null?void 0:b.getAttribute("nonce"));r=d(i.map(g=>{if(g=ze(g,c),g in $)return;$[g]=!0;const E=g.endsWith(".css"),T=E?'[rel="stylesheet"]':"";if(!!c)for(let k=h.length-1;k>=0;k--){const A=h[k];if(A.href===g&&(!E||A.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${g}"]${T}`))return;const o=document.createElement("link");if(o.rel=E?"stylesheet":$e,E||(o.as="script"),o.crossOrigin="",o.href=g,I&&o.setAttribute("nonce",I),document.head.appendChild(o),E)return new Promise((k,A)=>{o.addEventListener("load",k),o.addEventListener("error",()=>A(new Error(`Unable to preload CSS for ${g}`)))})}))}function m(d){const h=new Event("vite:preloadError",{cancelable:!0});if(h.payload=d,window.dispatchEvent(h),!h.defaultPrevented)throw d}return r.then(d=>{for(const h of d||[])h.status==="rejected"&&m(h.reason);return a().catch(m)})},We={SchemaPage:()=>s(()=>import("./SchemaPage.CSkx936u.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8]),import.meta.url),DeferredPage:()=>s(()=>import("./DeferredPage.DrhT6-8i.js"),__vite__mapDeps([9,1,3,7,4,10]),import.meta.url),NativeOpsRedirect:()=>s(()=>import("./NativeOpsRedirect.C0bocwWY.js"),__vite__mapDeps([11,1,7,4,12]),import.meta.url),FloatingButtonsSettings:()=>s(()=>import("./FloatingButtonsSettings.-1uwNMV9.js"),__vite__mapDeps([13,14,1,5,15,16,7,4,17]),import.meta.url),FooterTabbarSettings:()=>s(()=>import("./FooterTabbarSettings.RLdsCbkU.js"),__vite__mapDeps([18,14,1,5,15,16,7,4,19]),import.meta.url),FooterSettings:()=>s(()=>import("./FooterSettings.pT4aCC_F.js"),__vite__mapDeps([20,5,15,1,16,21,7,4,22]),import.meta.url),HomepageSettings:()=>s(()=>import("./HomepageSettings.iKd6UZP-.js"),__vite__mapDeps([23,1,5,15,16,7,4,24]),import.meta.url),HeroManager:()=>s(()=>import("./HeroManager.sfaSC084.js"),__vite__mapDeps([25,1,5,21,15,16,7,4,26]),import.meta.url),BannerManager:()=>s(()=>import("./BannerManager.DIeolpAQ.js"),__vite__mapDeps([27,1,5,21,15,16,7,4,28]),import.meta.url),PostPageSettings:()=>s(()=>import("./PostPageSettings.B1brRzY8.js"),__vite__mapDeps([29,0,1,2,3,4,5,6,7,8]),import.meta.url),CommentSettings:()=>s(()=>import("./CommentSettings.BXEQmxrU.js"),__vite__mapDeps([30,0,1,2,3,4,5,6,7,8]),import.meta.url),CommentPermissions:()=>s(()=>import("./CommentPermissions.wWXEnm5v.js"),__vite__mapDeps([31,1,5,15,16,7,4]),import.meta.url),PermissionsCapabilities:()=>s(()=>import("./PermissionsCapabilities.DAu3e_3q.js"),__vite__mapDeps([32,5,15,1,16,7,4,33]),import.meta.url),AttachmentPermissions:()=>s(()=>import("./AttachmentPermissions.NUq74TjZ.js"),__vite__mapDeps([34,1,5,15,16,3,7,4,35]),import.meta.url),DownloadPermissions:()=>s(()=>import("./DownloadPermissions.D_4Tmrvf.js"),__vite__mapDeps([36,1,5,15,16,7,4]),import.meta.url),CmsCredits:()=>s(()=>import("./CmsCredits.xTl3ugX1.js"),__vite__mapDeps([37,5,7,4,1]),import.meta.url),ResourceDownload:()=>s(()=>import("./ResourceDownload.DvRILKEZ.js"),__vite__mapDeps([38,1,5,15,16,7,4]),import.meta.url),ThemeInfoPage:()=>s(()=>import("./ThemeInfoPage.CmzNxB-f.js"),__vite__mapDeps([39,15,1,16,3,5,7,4,40]),import.meta.url),ThemeAuthorizationPage:()=>s(()=>import("./ThemeAuthorizationPage.exqEspJr.js"),__vite__mapDeps([41,1,15,16,7,4]),import.meta.url),DocsPage:()=>s(()=>import("./DocsPage.Cef6fL12.js"),__vite__mapDeps([42,15,1,16,3,5,7,4,43]),import.meta.url)},qe={UsersFeatures:()=>s(()=>import("./UsersFeatures.8x2S0GR6.js"),__vite__mapDeps([44,1,5,15,16,7,4]),import.meta.url),UsersSignin:()=>s(()=>import("./UsersSignin.frRX-AHK.js"),__vite__mapDeps([45,5,1,15,16,7,4]),import.meta.url),UsersVerify:()=>s(()=>import("./UsersVerify.DlTUYsYd.js"),__vite__mapDeps([46,5,15,1,16,7,4,47]),import.meta.url),UsersLevel:()=>s(()=>import("./UsersLevel.D9sYKZP1.js"),__vite__mapDeps([48,1,5,15,16,7,4]),import.meta.url),UsersBadge:()=>s(()=>import("./UsersBadge.BAdBIwxF.js"),__vite__mapDeps([49,1,5,15,16,7,4]),import.meta.url),UsersWechatTemplate:()=>s(()=>import("./UsersWechatTemplate.BTkLtWGJ.js"),__vite__mapDeps([50,1,15,16,5,7,4,51]),import.meta.url)},je={PaymentGateway:()=>s(()=>import("./PaymentGateway.BTbqvMWf.js"),__vite__mapDeps([52,1,5,15,16,2,3,4,6,7,53]),import.meta.url)},Qe={ToolsImportExport:()=>s(()=>import("./ToolsImportExport.CBVCMq0z.js"),__vite__mapDeps([54,1,5,15,16,7,4,55]),import.meta.url),ToolsHealth:()=>s(()=>import("./ToolsHealth.CoF-E7n8.js"),__vite__mapDeps([56,1,5,15,16,7,4,57]),import.meta.url),ToolsEmailRollback:()=>s(()=>import("./ToolsEmailRollback.YrJUTDzS.js"),__vite__mapDeps([58,1,5,15,16,7,4,59]),import.meta.url),ToolsUpdate:()=>s(()=>import("./ToolsUpdate.CTzLIO24.js"),__vite__mapDeps([60,1,5,15,16,7,4,61]),import.meta.url)},Je={},Xe={},Ye={ExtensionTools:()=>s(()=>import("./ExtensionTools.D5LShWF9.js"),__vite__mapDeps([62,1,15,16,3,5,7,4,63]),import.meta.url),ExtensionSecurity:()=>s(()=>import("./ExtensionSecurity.Dusc4b9q.js"),__vite__mapDeps([64,1,15,16,3,5,7,4,65]),import.meta.url),ExtensionAI:()=>s(()=>import("./ExtensionAI.vrglPKlb.js"),__vite__mapDeps([66,1,15,16,5,7,4,67]),import.meta.url)},U={...We,...qe,...je,...Qe,...Je,...Xe,...Ye},Ze="/global/common";function et(e){return U[e.component]?U[e.component]:(e.component&&e.component!=="DeferredPage"&&console.warn(`[AKSRT Route] Component "${e.component}" not found in componentLoaders for route "${e.route}". Falling back to DeferredPage.`),U.DeferredPage)}function tt(e){const a={title:e.title,section:e.sectionKey||"",desc:e.desc||"",status:e.status||"available",secondaryEntry:e.secondaryEntry===!0};return e.compatSourceSection&&(a.compatSourceSection=e.compatSourceSection),e.canonicalDomain&&(a.canonicalDomain=e.canonicalDomain),e.section&&(a.section=e.section),e.component==="DeferredPage"&&(a.deferred=!0,a.deferredProps={title:e.title,description:e.desc||"",icon:e.iconClass||"fas fa-compass-drafting",phase:e.phase||"",status:e.status||"deferred",dependsOn:e.dependsOn||[],reason:e.reason||"",features:e.features||[]}),a}function ot(){const e=new Set(["/"]);return Re().filter(a=>a.defaultRoute&&a.route!==a.defaultRoute&&!e.has(a.route)).map(a=>(e.add(a.route),{path:a.route,redirect:a.defaultRoute}))}const at=[{path:"/shop/products",title:"商品管理",nativeAdminPath:"edit.php?post_type=aksrt_product"},{path:"/shop/orders",title:"订单管理",nativeAdminPath:"admin.php?page=aksrt_orders"},{path:"/shop/after-sale",title:"售后管理",nativeAdminPath:"admin.php?page=aksrt_after_sale"},{path:"/shop/shipping",title:"物流管理",nativeAdminPath:"admin.php?page=aksrt_shipping"},{path:"/shop/coupons",title:"优惠券",nativeAdminPath:"admin.php?page=aksrt_coupons"},{path:"/shop/withdrawals",title:"提现管理",nativeAdminPath:"admin.php?page=aksrt_withdraw"},{path:"/shop/dashboard",title:"商城概览",nativeAdminPath:"admin.php?page=aksrt_pay"},{path:"/forum/boards",title:"板块管理",nativeAdminPath:"edit.php?post_type=aksrt_forum_plate"},{path:"/forum/topics",title:"主题治理",nativeAdminPath:"edit.php?post_type=aksrt_forum_topic"},{path:"/forum/moderators",title:"版主管理",nativeAdminPath:"edit.php?post_type=aksrt_forum_plate"},{path:"/forum/moderator-applications",title:"版主申请",nativeAdminPath:"edit.php?post_type=aksrt_forum_plate"},{path:"/forum/dashboard",title:"论坛概览",nativeAdminPath:"edit.php?post_type=aksrt_forum_topic"},{path:"/payment/charge-card",title:"充值卡",nativeAdminPath:"admin.php?page=aksrt_charge_cards"},{path:"/payment/revenue",title:"创作分成",nativeAdminPath:"admin.php?page=aksrt_income"},{path:"/payment/rebate",title:"返佣管理",nativeAdminPath:"admin.php?page=aksrt_rebate"},{path:"/users/messages",title:"消息中心",nativeAdminPath:"users.php?page=aksrt_messages"},{path:"/users/invite-codes",title:"邀请码运营",nativeAdminPath:"users.php?page=aksrt_invite_codes"},{path:"/users/ban",title:"禁封管理",nativeAdminPath:"users.php?page=aksrt_user_ban&tab=restrictions"},{path:"/users/report",title:"禁封/举报",nativeAdminPath:"users.php?page=aksrt_user_ban&tab=reports"}],nt=[{path:"/",redirect:Ze},...ot(),...Ie().map(e=>({path:e.route,name:e.name,component:et(e),meta:tt(e)})),...at.map(e=>({path:e.path,name:`NativeRedirect_${e.path.replace(/\W+/g,"_")}`,component:U.NativeOpsRedirect,meta:{title:e.title,nativeAdminPath:e.nativeAdminPath,status:"redirect"}}))],Q=re({history:ce(),routes:nt}),C=me(Ke);C.use(pe());C.use(Q);C.use(de);C.config.errorHandler=(e,a,i)=>{console.error("[AKSRT] 全局错误:",e,i)};function st(e){e.innerHTML='

AKSRT 正在加载...

如果长时间停留在此页面,请按 F12 查看控制台错误

'}st(document.getElementById("aksrt-admin-app")||document.body.appendChild(Object.assign(document.createElement("div"),{id:"aksrt-admin-app"})));function z(){const e=document.getElementById("aksrt-admin-app");if(!e){const c=document.createElement("div");return c.id="aksrt-admin-app",document.body.appendChild(c),c}const a=e.parentNode;if(!a){const c=document.createElement("div");return c.id="aksrt-admin-app",document.body.appendChild(c),c}const i=document.createElement("div");return i.id="aksrt-admin-app",i.innerHTML=e.innerHTML||"",a.replaceChild(i,e),i}function it(e,a){e.innerHTML='

页面加载失败

'+(a.message||String(a))+'

'}Q.isReady().then(()=>{requestAnimationFrame(()=>{requestAnimationFrame(()=>{requestAnimationFrame(()=>{try{const e=z();q.value=e,C.mount(e)}catch(e){console.error("[AKSRT] Vue 挂载失败:",e),it(z(),e)}})})})}).catch(e=>{console.error("[AKSRT] Router 初始化失败:",e)});export{W as _}; diff --git a/assets/admin/build/index2.css b/assets/admin/build/index2.css new file mode 100644 index 00000000..98b17a9c --- /dev/null +++ b/assets/admin/build/index2.css @@ -0,0 +1 @@ +.aksrt-field-group[data-v-c4357731]{margin-bottom:20px;border:1px solid #eef1f6;border-radius:12px;background:#fff;overflow:hidden}.aksrt-field-group__header[data-v-c4357731]{display:flex;align-items:flex-start;justify-content:space-between;padding:18px 20px 0}.aksrt-field-group__header-left[data-v-c4357731]{display:flex;align-items:flex-start;gap:10px}.aksrt-field-group__icon[data-v-c4357731]{color:#1890ff;margin-top:2px}.aksrt-field-group__title[data-v-c4357731]{margin:0;font-size:15px;font-weight:600;color:#1a1a2e}.aksrt-field-group__desc[data-v-c4357731]{margin:4px 0 0;font-size:12px;color:#8a909c;line-height:1.5}.aksrt-field-group__actions[data-v-c4357731]{display:flex;align-items:center;gap:8px}.aksrt-field-group__toggle[data-v-c4357731]{display:flex;align-items:center;gap:6px;padding:8px 20px;cursor:pointer;color:#8a909c;font-size:12px;-webkit-user-select:none;user-select:none;transition:color .15s}.aksrt-field-group__toggle[data-v-c4357731]:hover{color:#1890ff}.aksrt-field-group__chevron[data-v-c4357731]{transition:transform .2s}.aksrt-field-group__body[data-v-c4357731]{padding:16px 20px 20px}.aksrt-collapse-enter-active[data-v-c4357731],.aksrt-collapse-leave-active[data-v-c4357731]{transition:all .2s ease;overflow:hidden}.aksrt-collapse-enter-from[data-v-c4357731],.aksrt-collapse-leave-to[data-v-c4357731]{opacity:0;max-height:0;padding-top:0;padding-bottom:0}.aksrt-icon-picker__panel[data-v-29954567]{padding:12px}.aksrt-icon-picker__search[data-v-29954567],.aksrt-icon-picker__tabs[data-v-29954567]{margin-bottom:10px}.aksrt-icon-picker__grid[data-v-29954567]{display:grid;grid-template-columns:repeat(8,1fr);gap:4px;max-height:260px;overflow-y:auto}.aksrt-icon-picker__item[data-v-29954567]{display:flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:6px;cursor:pointer;font-size:16px;color:#555;transition:all .15s}.aksrt-icon-picker__item[data-v-29954567]:hover{background:#f0f5ff;color:#1890ff}.aksrt-icon-picker__item.is-active[data-v-29954567]{background:#1890ff;color:#fff}.aksrt-icon-picker__empty[data-v-29954567]{grid-column:1 / -1;text-align:center;padding:20px;color:#999;font-size:13px}.aksrt-media-field__preview[data-v-2b281958]{position:relative;border-radius:8px;overflow:hidden;border:1px solid #eef1f6;margin-bottom:8px}.aksrt-media-field__image[data-v-2b281958]{display:block;width:100%;max-height:200px;object-fit:cover}.aksrt-media-field__file[data-v-2b281958]{display:flex;align-items:center;gap:8px;padding:16px;background:#f8fafc}.aksrt-media-field__filename[data-v-2b281958]{font-size:13px;color:#555;word-break:break-all}.aksrt-media-field__overlay[data-v-2b281958]{position:absolute;top:0;right:0;display:flex;gap:4px;padding:6px;opacity:0;transition:opacity .2s}.aksrt-media-field__preview:hover .aksrt-media-field__overlay[data-v-2b281958]{opacity:1}.aksrt-media-field__empty[data-v-2b281958]{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;padding:32px;border:2px dashed #d9dce3;border-radius:8px;cursor:pointer;color:#8a909c;font-size:13px;transition:all .2s;margin-bottom:8px}.aksrt-media-field__empty[data-v-2b281958]:hover{border-color:#1890ff;color:#1890ff;background:#f0f7ff}.aksrt-media-field__url[data-v-2b281958]{margin-top:4px}.aks-code-editor[data-v-28406ea7]{border:1px solid var(--n-border-color, #e0e0e6);border-radius:4px;overflow:hidden;min-height:calc(var(--rows, 8) * 22px)}.aks-code-editor[data-v-28406ea7] .cm-editor{font-size:13px}.aks-code-editor[data-v-28406ea7] .cm-editor.cm-focused{outline:none}.aks-code-editor.is-disabled[data-v-28406ea7]{opacity:.6;pointer-events:none}.aksrt-field[data-v-8191b70d]{margin-bottom:18px}.aksrt-field[data-v-8191b70d]:last-child{margin-bottom:0}.aksrt-field__label-row[data-v-8191b70d]{display:flex;align-items:center;gap:6px;margin-bottom:6px}.aksrt-field__label[data-v-8191b70d]{font-size:13px;font-weight:500;color:#555}.aksrt-field__required[data-v-8191b70d]{color:#d03050;margin-left:2px}.aksrt-field__help-icon[data-v-8191b70d]{color:#c0c4cc;cursor:help;transition:color .15s}.aksrt-field__help-icon[data-v-8191b70d]:hover{color:#1890ff}.aksrt-field__desc[data-v-8191b70d]{margin:-2px 0 8px;font-size:12px;color:#8a909c;line-height:1.5}.aksrt-field__error[data-v-8191b70d]{margin:4px 0 0;font-size:12px;color:#d03050}.aksrt-field--disabled[data-v-8191b70d]{opacity:.6;pointer-events:none}.aksrt-field__dimensions[data-v-8191b70d]{display:flex;align-items:center;gap:8px}.aksrt-field__dimensions-sep[data-v-8191b70d]{color:#c0c4cc;font-size:14px}.aksrt-field__spacing[data-v-8191b70d]{display:grid;grid-template-columns:auto 1fr auto 1fr auto 1fr auto 1fr;gap:8px;align-items:center}.aksrt-field__spacing-label[data-v-8191b70d]{font-size:12px;color:#8a909c;text-align:center}.aksrt-field__background[data-v-8191b70d]{display:flex;flex-direction:column;gap:12px}.aksrt-field__background-row[data-v-8191b70d]{display:flex;align-items:center;gap:12px}.aksrt-field__sublabel[data-v-8191b70d]{font-size:12px;color:#8a909c;min-width:70px}.aksrt-field__image-select[data-v-8191b70d]{display:flex;flex-wrap:wrap;gap:12px}.aksrt-field__image-select-item[data-v-8191b70d]{display:flex;flex-direction:column;align-items:center;gap:6px;padding:8px;border:2px solid #eef1f6;border-radius:8px;cursor:pointer;transition:all .2s;min-width:80px}.aksrt-field__image-select-item[data-v-8191b70d]:hover{border-color:#1890ff}.aksrt-field__image-select-item--active[data-v-8191b70d]{border-color:#1890ff;background:#e6f7ff}.aksrt-field__image-select-img[data-v-8191b70d]{width:60px;height:60px;object-fit:cover;border-radius:4px}.aksrt-field__image-select-placeholder[data-v-8191b70d]{width:60px;height:60px;display:flex;align-items:center;justify-content:center;background:#f5f7fb;border-radius:4px;color:#c0c4cc}.aksrt-field__image-select-label[data-v-8191b70d]{font-size:11px;color:#555;text-align:center}.aksrt-field__repeater[data-v-8191b70d]{display:flex;flex-direction:column;gap:12px}.aksrt-field__repeater-item[data-v-8191b70d]{border:1px solid #eef1f6;border-radius:8px;padding:12px;background:#fafbfc}.aksrt-field__repeater-header[data-v-8191b70d]{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.aksrt-field__repeater-index[data-v-8191b70d]{font-size:12px;font-weight:600;color:#1890ff}.aksrt-field__repeater-fields[data-v-8191b70d]{display:flex;flex-direction:column;gap:8px}.aksrt-field__content[data-v-8191b70d]{font-size:13px;color:#555;line-height:1.6}@media(max-width:768px){.aksrt-field__dimensions[data-v-8191b70d]{flex-wrap:wrap}.aksrt-field__spacing[data-v-8191b70d]{grid-template-columns:auto 1fr}.aksrt-field__background-row[data-v-8191b70d]{flex-direction:column;align-items:flex-start}}.aksrt-form-renderer__header[data-v-102003ef]{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:24px;gap:16px;flex-wrap:wrap}.aksrt-form-renderer__header-left[data-v-102003ef]{display:flex;align-items:flex-start;gap:12px}.aksrt-form-renderer__header-icon[data-v-102003ef]{color:#1890ff;margin-top:4px}.aksrt-form-renderer__title[data-v-102003ef]{margin:0;font-size:22px;font-weight:700;color:#1a1a2e;letter-spacing:-.02em}.aksrt-form-renderer__desc[data-v-102003ef]{margin:4px 0 0;font-size:13px;color:#7a7f8a;line-height:1.6}.aksrt-form-renderer__search[data-v-102003ef]{min-width:200px;max-width:280px}.aksrt-form-renderer__loading[data-v-102003ef]{display:flex;flex-direction:column;align-items:center;gap:12px;padding:60px 0;color:#8a909c;font-size:14px}.aksrt-form-renderer__empty[data-v-102003ef]{display:flex;flex-direction:column;align-items:center;gap:12px;padding:60px 0;color:#c0c4cc}.aksrt-form-renderer__empty p[data-v-102003ef]{margin:0;font-size:14px}.aksrt-form-renderer__save-bar[data-v-102003ef]{position:fixed;bottom:0;left:0;right:0;z-index:1000;background:#fff;border-top:1px solid #eef1f6;box-shadow:0 -4px 12px #0000000f;animation:slideUp-102003ef .2s ease}.aksrt-form-renderer__save-bar__inner[data-v-102003ef]{display:flex;align-items:center;justify-content:space-between;max-width:1100px;margin:0 auto;padding:12px 28px;gap:16px}.aksrt-form-renderer__save-bar__info[data-v-102003ef]{display:flex;align-items:center;gap:8px;color:#d48806;font-size:13px}.aksrt-form-renderer__save-bar__actions[data-v-102003ef]{display:flex;gap:8px}@keyframes slideUp-102003ef{0%{transform:translateY(100%);opacity:0}to{transform:translateY(0);opacity:1}}@media(max-width:768px){.aksrt-form-renderer__header[data-v-102003ef]{flex-direction:column;gap:10px}.aksrt-form-renderer__search[data-v-102003ef]{max-width:100%;width:100%}.aksrt-form-renderer__save-bar__inner[data-v-102003ef]{flex-direction:column;padding:10px 14px;gap:8px}.aksrt-form-renderer__save-bar__actions[data-v-102003ef]{width:100%}.aksrt-form-renderer__save-bar__actions .n-button[data-v-102003ef]{flex:1}} diff --git a/assets/admin/build/media.BHNcAGK-.js b/assets/admin/build/media.BHNcAGK-.js new file mode 100644 index 00000000..fa3b83f9 --- /dev/null +++ b/assets/admin/build/media.BHNcAGK-.js @@ -0,0 +1 @@ +function c(n={}){var r;const o=(r=window.wp)==null?void 0:r.media;if(!o)throw new Error("当前后台未加载 WordPress 媒体库。");const e=o({title:n.title||"选择图片",button:{text:n.buttonText||"使用此图片"},library:{type:n.type||"image"},multiple:!1});return new Promise((i,s)=>{e.on("select",()=>{var l;const t=(l=e.state().get("selection").first())==null?void 0:l.toJSON();if(!(t!=null&&t.url)){s(new Error("未选择有效的媒体资源。"));return}i(t)}),e.on("close",()=>{e.state().get("selection").length>0||i(null)}),e.open()})}export{c as o}; diff --git a/assets/admin/build/naive-ui.css b/assets/admin/build/naive-ui.css new file mode 100644 index 00000000..9612693e --- /dev/null +++ b/assets/admin/build/naive-ui.css @@ -0,0 +1,8260 @@ +/* Auto-extracted by extract-naive-styles.mjs */ +/* Naive UI v2 Component Styles - Build-time extraction */ +/* DO NOT EDIT MANUALLY */ + +/* _internal/scrollbar/src/styles/index.cssr.mjs */ +.n-scrollbar { + + overflow: hidden; + position: relative; + z-index: auto; + height: 100%; + width: 100%; + +} + +.n-scrollbar > .n-scrollbar-container { + + width: 100%; + overflow: scroll; + height: 100%; + min-height: inherit; + max-height: inherit; + scrollbar-width: none; + +} + +.n-scrollbar > .n-scrollbar-container::-webkit-scrollbar, .n-scrollbar > .n-scrollbar-container::-webkit-scrollbar-track-piece, .n-scrollbar > .n-scrollbar-container::-webkit-scrollbar-thumb { + + width: 0; + height: 0; + display: none; + +} + +.n-scrollbar > .n-scrollbar-container > .n-scrollbar-content { + + box-sizing: border-box; + min-width: 100%; + +} + +.n-scrollbar > .n-scrollbar-rail, .n-scrollbar + .n-scrollbar-rail { + + position: absolute; + pointer-events: none; + user-select: none; + background: var(--n-scrollbar-rail-color); + -webkit-user-select: none; + +} + +.n-scrollbar > .n-scrollbar-rail.n-scrollbar-rail--horizontal, .n-scrollbar + .n-scrollbar-rail.n-scrollbar-rail--horizontal { + + height: var(--n-scrollbar-height); + +} + +.n-scrollbar > .n-scrollbar-rail.n-scrollbar-rail--horizontal > .n-scrollbar-rail__scrollbar, .n-scrollbar + .n-scrollbar-rail.n-scrollbar-rail--horizontal > .n-scrollbar-rail__scrollbar { + + height: var(--n-scrollbar-height); + border-radius: var(--n-scrollbar-border-radius); + right: 0; + +} + +.n-scrollbar > .n-scrollbar-rail.n-scrollbar-rail--horizontal--top, .n-scrollbar + .n-scrollbar-rail.n-scrollbar-rail--horizontal--top { + + top: var(--n-scrollbar-rail-top-horizontal-top); + right: var(--n-scrollbar-rail-right-horizontal-top); + bottom: var(--n-scrollbar-rail-bottom-horizontal-top); + left: var(--n-scrollbar-rail-left-horizontal-top); + +} + +.n-scrollbar > .n-scrollbar-rail.n-scrollbar-rail--horizontal--bottom, .n-scrollbar + .n-scrollbar-rail.n-scrollbar-rail--horizontal--bottom { + + top: var(--n-scrollbar-rail-top-horizontal-bottom); + right: var(--n-scrollbar-rail-right-horizontal-bottom); + bottom: var(--n-scrollbar-rail-bottom-horizontal-bottom); + left: var(--n-scrollbar-rail-left-horizontal-bottom); + +} + +.n-scrollbar > .n-scrollbar-rail.n-scrollbar-rail--vertical, .n-scrollbar + .n-scrollbar-rail.n-scrollbar-rail--vertical { + + width: var(--n-scrollbar-width); + +} + +.n-scrollbar > .n-scrollbar-rail.n-scrollbar-rail--vertical > .n-scrollbar-rail__scrollbar, .n-scrollbar + .n-scrollbar-rail.n-scrollbar-rail--vertical > .n-scrollbar-rail__scrollbar { + + width: var(--n-scrollbar-width); + border-radius: var(--n-scrollbar-border-radius); + bottom: 0; + +} + +.n-scrollbar > .n-scrollbar-rail.n-scrollbar-rail--vertical--left, .n-scrollbar + .n-scrollbar-rail.n-scrollbar-rail--vertical--left { + + top: var(--n-scrollbar-rail-top-vertical-left); + right: var(--n-scrollbar-rail-right-vertical-left); + bottom: var(--n-scrollbar-rail-bottom-vertical-left); + left: var(--n-scrollbar-rail-left-vertical-left); + +} + +.n-scrollbar > .n-scrollbar-rail.n-scrollbar-rail--vertical--right, .n-scrollbar + .n-scrollbar-rail.n-scrollbar-rail--vertical--right { + + top: var(--n-scrollbar-rail-top-vertical-right); + right: var(--n-scrollbar-rail-right-vertical-right); + bottom: var(--n-scrollbar-rail-bottom-vertical-right); + left: var(--n-scrollbar-rail-left-vertical-right); + +} + +.n-scrollbar > .n-scrollbar-rail.n-scrollbar-rail--disabled > .n-scrollbar-rail__scrollbar, .n-scrollbar + .n-scrollbar-rail.n-scrollbar-rail--disabled > .n-scrollbar-rail__scrollbar { +pointer-events: none; +} + +.n-scrollbar > .n-scrollbar-rail > .n-scrollbar-rail__scrollbar, .n-scrollbar + .n-scrollbar-rail > .n-scrollbar-rail__scrollbar { + + z-index: 1; + position: absolute; + cursor: pointer; + pointer-events: all; + background-color: var(--n-scrollbar-color); + transition: background-color .2s var(--n-scrollbar-bezier); + +} + +.n-scrollbar > .n-scrollbar-rail > .n-scrollbar-rail__scrollbar.fade-in-transition-enter-active, .n-scrollbar + .n-scrollbar-rail > .n-scrollbar-rail__scrollbar.fade-in-transition-enter-active { + transition: all 0.2s cubic-bezier(.4, 0, .2, 1)!important; +} + +.n-scrollbar > .n-scrollbar-rail > .n-scrollbar-rail__scrollbar.fade-in-transition-leave-active, .n-scrollbar + .n-scrollbar-rail > .n-scrollbar-rail__scrollbar.fade-in-transition-leave-active { + transition: all 0.2s cubic-bezier(.4, 0, .2, 1)!important; +} + +.n-scrollbar > .n-scrollbar-rail > .n-scrollbar-rail__scrollbar.fade-in-transition-enter-from, .n-scrollbar + .n-scrollbar-rail > .n-scrollbar-rail__scrollbar.fade-in-transition-enter-from, .n-scrollbar > .n-scrollbar-rail > .n-scrollbar-rail__scrollbar.fade-in-transition-leave-to, .n-scrollbar + .n-scrollbar-rail > .n-scrollbar-rail__scrollbar.fade-in-transition-leave-to { + opacity: 0; +} + +.n-scrollbar > .n-scrollbar-rail > .n-scrollbar-rail__scrollbar.fade-in-transition-leave-from, .n-scrollbar + .n-scrollbar-rail > .n-scrollbar-rail__scrollbar.fade-in-transition-leave-from, .n-scrollbar > .n-scrollbar-rail > .n-scrollbar-rail__scrollbar.fade-in-transition-enter-to, .n-scrollbar + .n-scrollbar-rail > .n-scrollbar-rail__scrollbar.fade-in-transition-enter-to { + opacity: 1; +} + +.n-scrollbar > .n-scrollbar-rail > .n-scrollbar-rail__scrollbar:hover, .n-scrollbar + .n-scrollbar-rail > .n-scrollbar-rail__scrollbar:hover { +background-color: var(--n-scrollbar-color-hover); +} + +/* menu/src/styles/index.cssr.mjs */ +.n-menu { + + background-color: var(--n-color); + color: var(--n-item-text-color); + overflow: hidden; + transition: background-color .3s var(--n-bezier); + box-sizing: border-box; + font-size: var(--n-font-size); + padding-bottom: 6px; + +} + +.n-menu.n-menu--horizontal { + + max-width: 100%; + width: 100%; + display: flex; + overflow: hidden; + padding-bottom: 0; + +} + +.n-menu.n-menu--horizontal .n-submenu { +margin: 0; +} + +.n-menu.n-menu--horizontal .n-menu-item { +margin: 0; +} + +.n-menu.n-menu--horizontal .n-menu-item-content { + + padding: 0 20px; + border-bottom: 2px solid #0000; + +} + +.n-menu.n-menu--horizontal .n-menu-item-content::before { +display: none; +} + +.n-menu.n-menu--horizontal .n-menu-item-content.n-menu-item-content--selected { +border-bottom: 2px solid var(--n-border-color-horizontal) +} + +.n-menu.n-menu--horizontal .n-menu-item-content.n-menu-item-content--selected .n-menu-item-content__icon { +color: var(--n-item-icon-color-active-horizontal); +} + +.n-menu.n-menu--horizontal .n-menu-item-content.n-menu-item-content--selected .n-menu-item-content-header { + + color: var(--n-item-text-color-active-horizontal); + +} + +.n-menu.n-menu--horizontal .n-menu-item-content.n-menu-item-content--selected .n-menu-item-content-header a { +color: var(--n-item-text-color-active-horizontal); +} + +.n-menu.n-menu--horizontal .n-menu-item-content.n-menu-item-content--selected .n-menu-item-content-header .n-menu-item-content-header__extra { +color: var(--n-item-text-color-active-horizontal); +} + +.n-menu.n-menu--horizontal .n-menu-item-content.n-menu-item-content--child-active { + + border-bottom: 2px solid var(--n-border-color-horizontal); + +} + +.n-menu.n-menu--horizontal .n-menu-item-content.n-menu-item-content--child-active .n-menu-item-content-header { + + color: var(--n-item-text-color-child-active-horizontal); + +} + +.n-menu.n-menu--horizontal .n-menu-item-content.n-menu-item-content--child-active .n-menu-item-content-header a { + + color: var(--n-item-text-color-child-active-horizontal); + +} + +.n-menu.n-menu--horizontal .n-menu-item-content.n-menu-item-content--child-active .n-menu-item-content-header .n-menu-item-content-header__extra { + + color: var(--n-item-text-color-child-active-horizontal); + +} + +.n-menu.n-menu--horizontal .n-menu-item-content.n-menu-item-content--child-active .n-menu-item-content__icon { + + color: var(--n-item-icon-color-child-active-horizontal); + +} + +.n-menu.n-menu--horizontal .n-menu-item-content:not(.n-menu-item-content--disabled):not(.n-menu-item-content--selected, child-active):focus-within .n-menu-item-content__icon { + + color: var(--n-item-icon-color-hover-horizontal); + +} + +.n-menu.n-menu--horizontal .n-menu-item-content:not(.n-menu-item-content--disabled):not(.n-menu-item-content--selected, child-active):focus-within .n-menu-item-content-header { + + color: var(--n-item-text-color-hover-horizontal); + +} + +.n-menu.n-menu--horizontal .n-menu-item-content:not(.n-menu-item-content--disabled):not(.n-menu-item-content--selected, child-active):focus-within .n-menu-item-content-header a { + + color: var(--n-item-text-color-hover-horizontal); + +} + +.n-menu.n-menu--horizontal .n-menu-item-content:not(.n-menu-item-content--disabled):not(.n-menu-item-content--selected, child-active):focus-within .n-menu-item-content-header .n-menu-item-content-header__extra { + + color: var(--n-item-text-color-hover-horizontal); + +} + +.n-menu.n-menu--horizontal .n-menu-item-content:not(.n-menu-item-content--disabled).n-menu-item-content--selected.n-menu-item-content--hover .n-menu-item-content__icon { +color: var(--n-item-icon-color-active-hover-horizontal); +} + +.n-menu.n-menu--horizontal .n-menu-item-content:not(.n-menu-item-content--disabled).n-menu-item-content--selected.n-menu-item-content--hover .n-menu-item-content-header { + + color: var(--n-item-text-color-active-hover-horizontal); + +} + +.n-menu.n-menu--horizontal .n-menu-item-content:not(.n-menu-item-content--disabled).n-menu-item-content--selected.n-menu-item-content--hover .n-menu-item-content-header a { +color: var(--n-item-text-color-active-hover-horizontal); +} + +.n-menu.n-menu--horizontal .n-menu-item-content:not(.n-menu-item-content--disabled).n-menu-item-content--selected.n-menu-item-content--hover .n-menu-item-content-header .n-menu-item-content-header__extra { +color: var(--n-item-text-color-active-hover-horizontal); +} + +.n-menu.n-menu--horizontal .n-menu-item-content:not(.n-menu-item-content--disabled).n-menu-item-content--selected:hover .n-menu-item-content__icon { +color: var(--n-item-icon-color-active-hover-horizontal); +} + +.n-menu.n-menu--horizontal .n-menu-item-content:not(.n-menu-item-content--disabled).n-menu-item-content--selected:hover .n-menu-item-content-header { + + color: var(--n-item-text-color-active-hover-horizontal); + +} + +.n-menu.n-menu--horizontal .n-menu-item-content:not(.n-menu-item-content--disabled).n-menu-item-content--selected:hover .n-menu-item-content-header a { +color: var(--n-item-text-color-active-hover-horizontal); +} + +.n-menu.n-menu--horizontal .n-menu-item-content:not(.n-menu-item-content--disabled).n-menu-item-content--selected:hover .n-menu-item-content-header .n-menu-item-content-header__extra { +color: var(--n-item-text-color-active-hover-horizontal); +} + +.n-menu.n-menu--horizontal .n-menu-item-content:not(.n-menu-item-content--disabled).n-menu-item-content--child-active.n-menu-item-content--hover .n-menu-item-content__icon { +color: var(--n-item-icon-color-child-active-hover-horizontal); +} + +.n-menu.n-menu--horizontal .n-menu-item-content:not(.n-menu-item-content--disabled).n-menu-item-content--child-active.n-menu-item-content--hover .n-menu-item-content-header { + + color: var(--n-item-text-color-child-active-hover-horizontal); + +} + +.n-menu.n-menu--horizontal .n-menu-item-content:not(.n-menu-item-content--disabled).n-menu-item-content--child-active.n-menu-item-content--hover .n-menu-item-content-header a { +color: var(--n-item-text-color-child-active-hover-horizontal); +} + +.n-menu.n-menu--horizontal .n-menu-item-content:not(.n-menu-item-content--disabled).n-menu-item-content--child-active.n-menu-item-content--hover .n-menu-item-content-header .n-menu-item-content-header__extra { +color: var(--n-item-text-color-child-active-hover-horizontal); +} + +.n-menu.n-menu--horizontal .n-menu-item-content:not(.n-menu-item-content--disabled).n-menu-item-content--child-active:hover .n-menu-item-content__icon { +color: var(--n-item-icon-color-child-active-hover-horizontal); +} + +.n-menu.n-menu--horizontal .n-menu-item-content:not(.n-menu-item-content--disabled).n-menu-item-content--child-active:hover .n-menu-item-content-header { + + color: var(--n-item-text-color-child-active-hover-horizontal); + +} + +.n-menu.n-menu--horizontal .n-menu-item-content:not(.n-menu-item-content--disabled).n-menu-item-content--child-active:hover .n-menu-item-content-header a { +color: var(--n-item-text-color-child-active-hover-horizontal); +} + +.n-menu.n-menu--horizontal .n-menu-item-content:not(.n-menu-item-content--disabled).n-menu-item-content--child-active:hover .n-menu-item-content-header .n-menu-item-content-header__extra { +color: var(--n-item-text-color-child-active-hover-horizontal); +} + +.n-menu.n-menu--horizontal .n-menu-item-content:not(.n-menu-item-content--disabled).n-menu-item-content--hover { +border-bottom: 2px solid var(--n-border-color-horizontal); +} + +.n-menu.n-menu--horizontal .n-menu-item-content:not(.n-menu-item-content--disabled).n-menu-item-content--hover .n-menu-item-content__icon { + + color: var(--n-item-icon-color-hover-horizontal); + +} + +.n-menu.n-menu--horizontal .n-menu-item-content:not(.n-menu-item-content--disabled).n-menu-item-content--hover .n-menu-item-content-header { + + color: var(--n-item-text-color-hover-horizontal); + +} + +.n-menu.n-menu--horizontal .n-menu-item-content:not(.n-menu-item-content--disabled).n-menu-item-content--hover .n-menu-item-content-header a { + + color: var(--n-item-text-color-hover-horizontal); + +} + +.n-menu.n-menu--horizontal .n-menu-item-content:not(.n-menu-item-content--disabled).n-menu-item-content--hover .n-menu-item-content-header .n-menu-item-content-header__extra { + + color: var(--n-item-text-color-hover-horizontal); + +} + +.n-menu.n-menu--horizontal .n-menu-item-content:not(.n-menu-item-content--disabled):hover { +border-bottom: 2px solid var(--n-border-color-horizontal); +} + +.n-menu.n-menu--horizontal .n-menu-item-content:not(.n-menu-item-content--disabled):hover .n-menu-item-content__icon { + + color: var(--n-item-icon-color-hover-horizontal); + +} + +.n-menu.n-menu--horizontal .n-menu-item-content:not(.n-menu-item-content--disabled):hover .n-menu-item-content-header { + + color: var(--n-item-text-color-hover-horizontal); + +} + +.n-menu.n-menu--horizontal .n-menu-item-content:not(.n-menu-item-content--disabled):hover .n-menu-item-content-header a { + + color: var(--n-item-text-color-hover-horizontal); + +} + +.n-menu.n-menu--horizontal .n-menu-item-content:not(.n-menu-item-content--disabled):hover .n-menu-item-content-header .n-menu-item-content-header__extra { + + color: var(--n-item-text-color-hover-horizontal); + +} + +.n-menu.n-menu--horizontal .n-menu-item-content .n-menu-item-content-header a { +color: var(--n-item-text-color-horizontal); +} + +.n-menu:not(.n-menu--responsive) .n-menu-item-content-header { + + overflow: hidden; + text-overflow: ellipsis; + +} + +.n-menu.n-menu--collapsed .n-menu-item-content.n-menu-item-content--selected::before { + + background-color: var(--n-item-color-active-collapsed) !important; + +} + +.n-menu.n-menu--collapsed .n-menu-item-content .n-menu-item-content-header { +opacity: 0; +} + +.n-menu.n-menu--collapsed .n-menu-item-content .n-menu-item-content__arrow { +opacity: 0; +} + +.n-menu.n-menu--collapsed .n-menu-item-content .n-menu-item-content__icon { +color: var(--n-item-icon-color-collapsed); +} + +.n-menu .n-menu-item { + + height: var(--n-item-height); + margin-top: 6px; + position: relative; + +} + +.n-menu .n-menu-item-content { + + box-sizing: border-box; + line-height: 1.75; + height: 100%; + display: grid; + grid-template-areas: "icon content arrow"; + grid-template-columns: auto 1fr auto; + align-items: center; + cursor: pointer; + position: relative; + padding-right: 18px; + transition: + background-color .3s var(--n-bezier), + padding-left .3s var(--n-bezier), + border-color .3s var(--n-bezier); + +} + +.n-menu .n-menu-item-content > * { +z-index: 1; +} + +.n-menu .n-menu-item-content::before { + + z-index: auto; + content: ""; + background-color: #0000; + position: absolute; + left: 8px; + right: 8px; + top: 0; + bottom: 0; + pointer-events: none; + border-radius: var(--n-border-radius); + transition: background-color .3s var(--n-bezier); + +} + +.n-menu .n-menu-item-content.n-menu-item-content--disabled { + + opacity: .45; + cursor: not-allowed; + +} + +.n-menu .n-menu-item-content.n-menu-item-content--collapsed .n-menu-item-content__arrow { +transform: rotate(0); +} + +.n-menu .n-menu-item-content.n-menu-item-content--selected::before { +background-color: var(--n-item-color-active); +} + +.n-menu .n-menu-item-content.n-menu-item-content--selected .n-menu-item-content__arrow { +color: var(--n-arrow-color-active); +} + +.n-menu .n-menu-item-content.n-menu-item-content--selected .n-menu-item-content__icon { +color: var(--n-item-icon-color-active); +} + +.n-menu .n-menu-item-content.n-menu-item-content--selected .n-menu-item-content-header { + + color: var(--n-item-text-color-active); + +} + +.n-menu .n-menu-item-content.n-menu-item-content--selected .n-menu-item-content-header a { +color: var(--n-item-text-color-active); +} + +.n-menu .n-menu-item-content.n-menu-item-content--selected .n-menu-item-content-header .n-menu-item-content-header__extra { +color: var(--n-item-text-color-active); +} + +.n-menu .n-menu-item-content.n-menu-item-content--child-active .n-menu-item-content-header { + + color: var(--n-item-text-color-child-active); + +} + +.n-menu .n-menu-item-content.n-menu-item-content--child-active .n-menu-item-content-header a { + + color: var(--n-item-text-color-child-active); + +} + +.n-menu .n-menu-item-content.n-menu-item-content--child-active .n-menu-item-content-header .n-menu-item-content-header__extra { + + color: var(--n-item-text-color-child-active); + +} + +.n-menu .n-menu-item-content.n-menu-item-content--child-active .n-menu-item-content__arrow { + + color: var(--n-arrow-color-child-active); + +} + +.n-menu .n-menu-item-content.n-menu-item-content--child-active .n-menu-item-content__icon { + + color: var(--n-item-icon-color-child-active); + +} + +.n-menu .n-menu-item-content:not(.n-menu-item-content--disabled):not(.n-menu-item-content--selected, child-active):focus-within::before { +background-color: var(--n-item-color-hover); +} + +.n-menu .n-menu-item-content:not(.n-menu-item-content--disabled):not(.n-menu-item-content--selected, child-active):focus-within .n-menu-item-content__arrow { + + color: var(--n-arrow-color-hover); + +} + +.n-menu .n-menu-item-content:not(.n-menu-item-content--disabled):not(.n-menu-item-content--selected, child-active):focus-within .n-menu-item-content__icon { + + color: var(--n-item-icon-color-hover); + +} + +.n-menu .n-menu-item-content:not(.n-menu-item-content--disabled):not(.n-menu-item-content--selected, child-active):focus-within .n-menu-item-content-header { + + color: var(--n-item-text-color-hover); + +} + +.n-menu .n-menu-item-content:not(.n-menu-item-content--disabled):not(.n-menu-item-content--selected, child-active):focus-within .n-menu-item-content-header a { + + color: var(--n-item-text-color-hover); + +} + +.n-menu .n-menu-item-content:not(.n-menu-item-content--disabled):not(.n-menu-item-content--selected, child-active):focus-within .n-menu-item-content-header .n-menu-item-content-header__extra { + + color: var(--n-item-text-color-hover); + +} + +.n-menu .n-menu-item-content:not(.n-menu-item-content--disabled).n-menu-item-content--selected.n-menu-item-content--hover .n-menu-item-content__arrow { +color: var(--n-arrow-color-active-hover); +} + +.n-menu .n-menu-item-content:not(.n-menu-item-content--disabled).n-menu-item-content--selected.n-menu-item-content--hover .n-menu-item-content__icon { +color: var(--n-item-icon-color-active-hover); +} + +.n-menu .n-menu-item-content:not(.n-menu-item-content--disabled).n-menu-item-content--selected.n-menu-item-content--hover .n-menu-item-content-header { + + color: var(--n-item-text-color-active-hover); + +} + +.n-menu .n-menu-item-content:not(.n-menu-item-content--disabled).n-menu-item-content--selected.n-menu-item-content--hover .n-menu-item-content-header a { +color: var(--n-item-text-color-active-hover); +} + +.n-menu .n-menu-item-content:not(.n-menu-item-content--disabled).n-menu-item-content--selected.n-menu-item-content--hover .n-menu-item-content-header .n-menu-item-content-header__extra { +color: var(--n-item-text-color-active-hover); +} + +.n-menu .n-menu-item-content:not(.n-menu-item-content--disabled).n-menu-item-content--selected:hover .n-menu-item-content__arrow { +color: var(--n-arrow-color-active-hover); +} + +.n-menu .n-menu-item-content:not(.n-menu-item-content--disabled).n-menu-item-content--selected:hover .n-menu-item-content__icon { +color: var(--n-item-icon-color-active-hover); +} + +.n-menu .n-menu-item-content:not(.n-menu-item-content--disabled).n-menu-item-content--selected:hover .n-menu-item-content-header { + + color: var(--n-item-text-color-active-hover); + +} + +.n-menu .n-menu-item-content:not(.n-menu-item-content--disabled).n-menu-item-content--selected:hover .n-menu-item-content-header a { +color: var(--n-item-text-color-active-hover); +} + +.n-menu .n-menu-item-content:not(.n-menu-item-content--disabled).n-menu-item-content--selected:hover .n-menu-item-content-header .n-menu-item-content-header__extra { +color: var(--n-item-text-color-active-hover); +} + +.n-menu .n-menu-item-content:not(.n-menu-item-content--disabled).n-menu-item-content--child-active.n-menu-item-content--hover .n-menu-item-content__arrow { +color: var(--n-arrow-color-child-active-hover); +} + +.n-menu .n-menu-item-content:not(.n-menu-item-content--disabled).n-menu-item-content--child-active.n-menu-item-content--hover .n-menu-item-content__icon { +color: var(--n-item-icon-color-child-active-hover); +} + +.n-menu .n-menu-item-content:not(.n-menu-item-content--disabled).n-menu-item-content--child-active.n-menu-item-content--hover .n-menu-item-content-header { + + color: var(--n-item-text-color-child-active-hover); + +} + +.n-menu .n-menu-item-content:not(.n-menu-item-content--disabled).n-menu-item-content--child-active.n-menu-item-content--hover .n-menu-item-content-header a { +color: var(--n-item-text-color-child-active-hover); +} + +.n-menu .n-menu-item-content:not(.n-menu-item-content--disabled).n-menu-item-content--child-active.n-menu-item-content--hover .n-menu-item-content-header .n-menu-item-content-header__extra { +color: var(--n-item-text-color-child-active-hover); +} + +.n-menu .n-menu-item-content:not(.n-menu-item-content--disabled).n-menu-item-content--child-active:hover .n-menu-item-content__arrow { +color: var(--n-arrow-color-child-active-hover); +} + +.n-menu .n-menu-item-content:not(.n-menu-item-content--disabled).n-menu-item-content--child-active:hover .n-menu-item-content__icon { +color: var(--n-item-icon-color-child-active-hover); +} + +.n-menu .n-menu-item-content:not(.n-menu-item-content--disabled).n-menu-item-content--child-active:hover .n-menu-item-content-header { + + color: var(--n-item-text-color-child-active-hover); + +} + +.n-menu .n-menu-item-content:not(.n-menu-item-content--disabled).n-menu-item-content--child-active:hover .n-menu-item-content-header a { +color: var(--n-item-text-color-child-active-hover); +} + +.n-menu .n-menu-item-content:not(.n-menu-item-content--disabled).n-menu-item-content--child-active:hover .n-menu-item-content-header .n-menu-item-content-header__extra { +color: var(--n-item-text-color-child-active-hover); +} + +.n-menu .n-menu-item-content:not(.n-menu-item-content--disabled).n-menu-item-content--selected.n-menu-item-content--hover::before { +background-color: var(--n-item-color-active-hover); +} + +.n-menu .n-menu-item-content:not(.n-menu-item-content--disabled).n-menu-item-content--selected:hover::before { +background-color: var(--n-item-color-active-hover); +} + +.n-menu .n-menu-item-content:not(.n-menu-item-content--disabled).n-menu-item-content--hover::before { +background-color: var(--n-item-color-hover); +} + +.n-menu .n-menu-item-content:not(.n-menu-item-content--disabled).n-menu-item-content--hover .n-menu-item-content__arrow { + + color: var(--n-arrow-color-hover); + +} + +.n-menu .n-menu-item-content:not(.n-menu-item-content--disabled).n-menu-item-content--hover .n-menu-item-content__icon { + + color: var(--n-item-icon-color-hover); + +} + +.n-menu .n-menu-item-content:not(.n-menu-item-content--disabled).n-menu-item-content--hover .n-menu-item-content-header { + + color: var(--n-item-text-color-hover); + +} + +.n-menu .n-menu-item-content:not(.n-menu-item-content--disabled).n-menu-item-content--hover .n-menu-item-content-header a { + + color: var(--n-item-text-color-hover); + +} + +.n-menu .n-menu-item-content:not(.n-menu-item-content--disabled).n-menu-item-content--hover .n-menu-item-content-header .n-menu-item-content-header__extra { + + color: var(--n-item-text-color-hover); + +} + +.n-menu .n-menu-item-content:not(.n-menu-item-content--disabled):hover::before { +background-color: var(--n-item-color-hover); +} + +.n-menu .n-menu-item-content:not(.n-menu-item-content--disabled):hover .n-menu-item-content__arrow { + + color: var(--n-arrow-color-hover); + +} + +.n-menu .n-menu-item-content:not(.n-menu-item-content--disabled):hover .n-menu-item-content__icon { + + color: var(--n-item-icon-color-hover); + +} + +.n-menu .n-menu-item-content:not(.n-menu-item-content--disabled):hover .n-menu-item-content-header { + + color: var(--n-item-text-color-hover); + +} + +.n-menu .n-menu-item-content:not(.n-menu-item-content--disabled):hover .n-menu-item-content-header a { + + color: var(--n-item-text-color-hover); + +} + +.n-menu .n-menu-item-content:not(.n-menu-item-content--disabled):hover .n-menu-item-content-header .n-menu-item-content-header__extra { + + color: var(--n-item-text-color-hover); + +} + +.n-menu .n-menu-item-content .n-menu-item-content__icon { + + grid-area: icon; + color: var(--n-item-icon-color); + transition: + color .3s var(--n-bezier), + font-size .3s var(--n-bezier), + margin-right .3s var(--n-bezier); + box-sizing: content-box; + display: inline-flex; + align-items: center; + justify-content: center; + +} + +.n-menu .n-menu-item-content .n-menu-item-content__arrow { + + grid-area: arrow; + font-size: 16px; + color: var(--n-arrow-color); + transform: rotate(180deg); + opacity: 1; + transition: + color .3s var(--n-bezier), + transform 0.2s var(--n-bezier), + opacity 0.2s var(--n-bezier); + +} + +.n-menu .n-menu-item-content .n-menu-item-content-header { + + grid-area: content; + transition: + color .3s var(--n-bezier), + opacity .3s var(--n-bezier); + opacity: 1; + white-space: nowrap; + color: var(--n-item-text-color); + +} + +.n-menu .n-menu-item-content .n-menu-item-content-header a { + + outline: none; + text-decoration: none; + transition: color .3s var(--n-bezier); + color: var(--n-item-text-color); + +} + +.n-menu .n-menu-item-content .n-menu-item-content-header a::before { + + content: ""; + position: absolute; + left: 0; + right: 0; + top: 0; + bottom: 0; + +} + +.n-menu .n-menu-item-content .n-menu-item-content-header .n-menu-item-content-header__extra { + + font-size: .93em; + color: var(--n-group-text-color); + transition: color .3s var(--n-bezier); + +} + +.n-menu .n-submenu { + + cursor: pointer; + position: relative; + margin-top: 6px; + +} + +.n-menu .n-submenu .n-menu-item-content { + + height: var(--n-item-height); + +} + +.n-menu .n-submenu .n-submenu-children { + + overflow: hidden; + padding: 0; + +} + +.n-menu .n-submenu .n-submenu-children.fade-in-height-expand-transition-leave-from, .n-menu .n-submenu .n-submenu-children.fade-in-height-expand-transition-enter-to { + opacity: 1; +} + +.n-menu .n-submenu .n-submenu-children.fade-in-height-expand-transition-leave-to, .n-menu .n-submenu .n-submenu-children.fade-in-height-expand-transition-enter-from { + opacity: 0; + margin-top: 0 !important; + margin-bottom: 0 !important; +} + +.n-menu .n-submenu .n-submenu-children.fade-in-height-expand-transition-leave-active { + + overflow: hidden; + transition: + max-height .2s cubic-bezier(.4, 0, .2, 1) 0s, + opacity .2s cubic-bezier(0, 0, .2, 1) 0s, + margin-top .2s cubic-bezier(.4, 0, .2, 1) 0s, + margin-bottom .2s cubic-bezier(.4, 0, .2, 1) 0s, + padding-top .2s cubic-bezier(.4, 0, .2, 1) 0s, + padding-bottom .2s cubic-bezier(.4, 0, .2, 1) 0s + + +} + +.n-menu .n-submenu .n-submenu-children.fade-in-height-expand-transition-enter-active { + + overflow: hidden; + transition: + max-height .2s cubic-bezier(.4, 0, .2, 1), + opacity .2s cubic-bezier(.4, 0, 1, 1), + margin-top .2s cubic-bezier(.4, 0, .2, 1), + margin-bottom .2s cubic-bezier(.4, 0, .2, 1), + padding-top .2s cubic-bezier(.4, 0, .2, 1), + padding-bottom .2s cubic-bezier(.4, 0, .2, 1) + + +} + +.n-menu .n-menu-item-group .n-menu-item-group-title { + + margin-top: 6px; + color: var(--n-group-text-color); + cursor: default; + font-size: .93em; + height: 36px; + display: flex; + align-items: center; + transition: + padding-left .3s var(--n-bezier), + color .3s var(--n-bezier); + +} + +.n-menu-tooltip a { + + color: inherit; + text-decoration: none; + +} + +.n-menu-divider { + + transition: background-color .3s var(--n-bezier); + background-color: var(--n-divider-color); + height: 1px; + margin: 6px 18px; + +} + +/* breadcrumb/src/styles/index.cssr.mjs */ +.n-breadcrumb { + + white-space: nowrap; + cursor: default; + line-height: var(--n-item-line-height); + +} + +.n-breadcrumb ul { + + list-style: none; + padding: 0; + margin: 0; + +} + +.n-breadcrumb a { + + color: inherit; + text-decoration: inherit; + +} + +.n-breadcrumb .n-breadcrumb-item { + + font-size: var(--n-font-size); + transition: color .3s var(--n-bezier); + display: inline-flex; + align-items: center; + +} + +.n-breadcrumb .n-breadcrumb-item .n-icon { + + font-size: 18px; + vertical-align: -.2em; + transition: color .3s var(--n-bezier); + color: var(--n-item-text-color); + +} + +.n-breadcrumb .n-breadcrumb-item:not(:last-child).n-breadcrumb-item--clickable .n-breadcrumb-item__link { + + cursor: pointer; + +} + +.n-breadcrumb .n-breadcrumb-item:not(:last-child).n-breadcrumb-item--clickable .n-breadcrumb-item__link:hover { + + background-color: var(--n-item-color-hover); + +} + +.n-breadcrumb .n-breadcrumb-item:not(:last-child).n-breadcrumb-item--clickable .n-breadcrumb-item__link:active { + + background-color: var(--n-item-color-pressed); + +} + +.n-breadcrumb .n-breadcrumb-item .n-breadcrumb-item__link { + + padding: 4px; + border-radius: var(--n-item-border-radius); + transition: + background-color .3s var(--n-bezier), + color .3s var(--n-bezier); + color: var(--n-item-text-color); + position: relative; + +} + +.n-breadcrumb .n-breadcrumb-item .n-breadcrumb-item__link:hover { + + color: var(--n-item-text-color-hover); + +} + +.n-breadcrumb .n-breadcrumb-item .n-breadcrumb-item__link:hover .n-icon { + + color: var(--n-item-text-color-hover); + +} + +.n-breadcrumb .n-breadcrumb-item .n-breadcrumb-item__link:active { + + color: var(--n-item-text-color-pressed); + +} + +.n-breadcrumb .n-breadcrumb-item .n-breadcrumb-item__link:active .n-icon { + + color: var(--n-item-text-color-pressed); + +} + +.n-breadcrumb .n-breadcrumb-item .n-breadcrumb-item__separator { + + margin: 0 8px; + color: var(--n-separator-color); + transition: color .3s var(--n-bezier); + user-select: none; + -webkit-user-select: none; + +} + +.n-breadcrumb .n-breadcrumb-item:last-child .n-breadcrumb-item__link { + + font-weight: var(--n-font-weight-active); + cursor: unset; + color: var(--n-item-text-color-active); + +} + +.n-breadcrumb .n-breadcrumb-item:last-child .n-breadcrumb-item__link .n-icon { + + color: var(--n-item-text-color-active); + +} + +.n-breadcrumb .n-breadcrumb-item:last-child .n-breadcrumb-item__separator { + + display: none; + +} + +/* tabs/src/styles/index.cssr.mjs */ +.n-tabs { + + box-sizing: border-box; + width: 100%; + display: flex; + flex-direction: column; + transition: + background-color .3s var(--n-bezier), + border-color .3s var(--n-bezier); + +} + +.n-tabs.n-tabs--segment-type .n-tabs-rail.transition-disabled .n-tabs-capsule { + + transition: none; + +} + +.n-tabs.n-tabs--top .n-tab-pane { + + padding: var(--n-pane-padding-top) var(--n-pane-padding-right) var(--n-pane-padding-bottom) var(--n-pane-padding-left); + +} + +.n-tabs.n-tabs--left .n-tab-pane { + + padding: var(--n-pane-padding-right) var(--n-pane-padding-bottom) var(--n-pane-padding-left) var(--n-pane-padding-top); + +} + +.n-tabs.n-tabs--left, .n-tabs.n-tabs--right { + + flex-direction: row; + +} + +.n-tabs.n-tabs--left .n-tabs-bar, .n-tabs.n-tabs--right .n-tabs-bar { + + width: 2px; + right: 0; + transition: + top .2s var(--n-bezier), + max-height .2s var(--n-bezier), + background-color .3s var(--n-bezier); + +} + +.n-tabs.n-tabs--left .n-tabs-tab, .n-tabs.n-tabs--right .n-tabs-tab { + + padding: var(--n-tab-padding-vertical); + +} + +.n-tabs.n-tabs--right { + + flex-direction: row-reverse; + +} + +.n-tabs.n-tabs--right .n-tab-pane { + + padding: var(--n-pane-padding-left) var(--n-pane-padding-top) var(--n-pane-padding-right) var(--n-pane-padding-bottom); + +} + +.n-tabs.n-tabs--right .n-tabs-bar { + + left: 0; + +} + +.n-tabs.n-tabs--bottom { + + flex-direction: column-reverse; + justify-content: flex-end; + +} + +.n-tabs.n-tabs--bottom .n-tab-pane { + + padding: var(--n-pane-padding-bottom) var(--n-pane-padding-right) var(--n-pane-padding-top) var(--n-pane-padding-left); + +} + +.n-tabs.n-tabs--bottom .n-tabs-bar { + + top: 0; + +} + +.n-tabs .n-tabs-rail { + + position: relative; + padding: 3px; + border-radius: var(--n-tab-border-radius); + width: 100%; + background-color: var(--n-color-segment); + transition: background-color .3s var(--n-bezier); + display: flex; + align-items: center; + +} + +.n-tabs .n-tabs-rail .n-tabs-capsule { + + border-radius: var(--n-tab-border-radius); + position: absolute; + pointer-events: none; + background-color: var(--n-tab-color-segment); + box-shadow: 0 1px 3px 0 rgba(0, 0, 0, .08); + transition: transform 0.3s var(--n-bezier); + +} + +.n-tabs .n-tabs-rail .n-tabs-tab-wrapper { + + flex-basis: 0; + flex-grow: 1; + display: flex; + align-items: center; + justify-content: center; + +} + +.n-tabs .n-tabs-rail .n-tabs-tab-wrapper .n-tabs-tab { + + overflow: hidden; + border-radius: var(--n-tab-border-radius); + width: 100%; + display: flex; + align-items: center; + justify-content: center; + +} + +.n-tabs .n-tabs-rail .n-tabs-tab-wrapper .n-tabs-tab.n-tabs-tab--active { + + font-weight: var(--n-font-weight-strong); + color: var(--n-tab-text-color-active); + +} + +.n-tabs .n-tabs-rail .n-tabs-tab-wrapper .n-tabs-tab:hover { + + color: var(--n-tab-text-color-hover); + +} + +.n-tabs.n-tabs--flex .n-tabs-nav { + + width: 100%; + position: relative; + +} + +.n-tabs.n-tabs--flex .n-tabs-nav .n-tabs-wrapper { + + width: 100%; + +} + +.n-tabs.n-tabs--flex .n-tabs-nav .n-tabs-wrapper .n-tabs-tab { + + margin-right: 0; + +} + +.n-tabs .n-tabs-nav { + + box-sizing: border-box; + line-height: 1.5; + display: flex; + transition: border-color .3s var(--n-bezier); + +} + +.n-tabs .n-tabs-nav .n-tabs-nav__prefix, .n-tabs .n-tabs-nav .n-tabs-nav__suffix { + + display: flex; + align-items: center; + +} + +.n-tabs .n-tabs-nav .n-tabs-nav__prefix { +padding-right: 16px; +} + +.n-tabs .n-tabs-nav .n-tabs-nav__suffix { +padding-left: 16px; +} + +.n-tabs.n-tabs--top > .n-tabs-nav .n-tabs-nav-scroll-wrapper::before, .n-tabs.n-tabs--bottom > .n-tabs-nav .n-tabs-nav-scroll-wrapper::before { + + top: 0; + bottom: 0; + left: 0; + width: 20px; + +} + +.n-tabs.n-tabs--top > .n-tabs-nav .n-tabs-nav-scroll-wrapper::after, .n-tabs.n-tabs--bottom > .n-tabs-nav .n-tabs-nav-scroll-wrapper::after { + + top: 0; + bottom: 0; + right: 0; + width: 20px; + +} + +.n-tabs.n-tabs--top > .n-tabs-nav .n-tabs-nav-scroll-wrapper.n-tabs-nav-scroll-wrapper--shadow-start::before, .n-tabs.n-tabs--bottom > .n-tabs-nav .n-tabs-nav-scroll-wrapper.n-tabs-nav-scroll-wrapper--shadow-start::before { + + box-shadow: inset 10px 0 8px -8px rgba(0, 0, 0, .12); + +} + +.n-tabs.n-tabs--top > .n-tabs-nav .n-tabs-nav-scroll-wrapper.n-tabs-nav-scroll-wrapper--shadow-end::after, .n-tabs.n-tabs--bottom > .n-tabs-nav .n-tabs-nav-scroll-wrapper.n-tabs-nav-scroll-wrapper--shadow-end::after { + + box-shadow: inset -10px 0 8px -8px rgba(0, 0, 0, .12); + +} + +.n-tabs.n-tabs--left .n-tabs-nav-scroll-content, .n-tabs.n-tabs--right .n-tabs-nav-scroll-content { + + flex-direction: column; + +} + +.n-tabs.n-tabs--left > .n-tabs-nav .n-tabs-nav-scroll-wrapper::before, .n-tabs.n-tabs--right > .n-tabs-nav .n-tabs-nav-scroll-wrapper::before { + + top: 0; + left: 0; + right: 0; + height: 20px; + +} + +.n-tabs.n-tabs--left > .n-tabs-nav .n-tabs-nav-scroll-wrapper::after, .n-tabs.n-tabs--right > .n-tabs-nav .n-tabs-nav-scroll-wrapper::after { + + bottom: 0; + left: 0; + right: 0; + height: 20px; + +} + +.n-tabs.n-tabs--left > .n-tabs-nav .n-tabs-nav-scroll-wrapper.n-tabs-nav-scroll-wrapper--shadow-start::before, .n-tabs.n-tabs--right > .n-tabs-nav .n-tabs-nav-scroll-wrapper.n-tabs-nav-scroll-wrapper--shadow-start::before { + + box-shadow: inset 0 10px 8px -8px rgba(0, 0, 0, .12); + +} + +.n-tabs.n-tabs--left > .n-tabs-nav .n-tabs-nav-scroll-wrapper.n-tabs-nav-scroll-wrapper--shadow-end::after, .n-tabs.n-tabs--right > .n-tabs-nav .n-tabs-nav-scroll-wrapper.n-tabs-nav-scroll-wrapper--shadow-end::after { + + box-shadow: inset 0 -10px 8px -8px rgba(0, 0, 0, .12); + +} + +.n-tabs .n-tabs-nav-scroll-wrapper { + + flex: 1; + position: relative; + overflow: hidden; + +} + +.n-tabs .n-tabs-nav-scroll-wrapper .n-tabs-nav-y-scroll { + + height: 100%; + width: 100%; + overflow-y: auto; + scrollbar-width: none; + +} + +.n-tabs .n-tabs-nav-scroll-wrapper .n-tabs-nav-y-scroll::-webkit-scrollbar, .n-tabs .n-tabs-nav-scroll-wrapper .n-tabs-nav-y-scroll::-webkit-scrollbar-track-piece, .n-tabs .n-tabs-nav-scroll-wrapper .n-tabs-nav-y-scroll::-webkit-scrollbar-thumb { + + width: 0; + height: 0; + display: none; + +} + +.n-tabs .n-tabs-nav-scroll-wrapper::before, .n-tabs .n-tabs-nav-scroll-wrapper::after { + + transition: box-shadow .3s var(--n-bezier); + pointer-events: none; + content: ""; + position: absolute; + z-index: 1; + +} + +.n-tabs .n-tabs-nav-scroll-content { + + display: flex; + position: relative; + min-width: 100%; + min-height: 100%; + width: fit-content; + box-sizing: border-box; + +} + +.n-tabs .n-tabs-wrapper { + + display: inline-flex; + flex-wrap: nowrap; + position: relative; + +} + +.n-tabs .n-tabs-tab-wrapper { + + display: flex; + flex-wrap: nowrap; + flex-shrink: 0; + flex-grow: 0; + +} + +.n-tabs .n-tabs-tab { + + cursor: pointer; + white-space: nowrap; + flex-wrap: nowrap; + display: inline-flex; + align-items: center; + color: var(--n-tab-text-color); + font-size: var(--n-tab-font-size); + background-clip: padding-box; + padding: var(--n-tab-padding); + transition: + box-shadow .3s var(--n-bezier), + color .3s var(--n-bezier), + background-color .3s var(--n-bezier), + border-color .3s var(--n-bezier); + +} + +.n-tabs .n-tabs-tab.n-tabs-tab--disabled { + cursor: not-allowed; +} + +.n-tabs .n-tabs-tab .n-tabs-tab__close { + + margin-left: 6px; + transition: + background-color .3s var(--n-bezier), + color .3s var(--n-bezier); + +} + +.n-tabs .n-tabs-tab .n-tabs-tab__label { + + display: flex; + align-items: center; + z-index: 1; + +} + +.n-tabs .n-tabs-bar { + + position: absolute; + bottom: 0; + height: 2px; + border-radius: 1px; + background-color: var(--n-bar-color); + transition: + left .2s var(--n-bezier), + max-width .2s var(--n-bezier), + opacity .3s var(--n-bezier), + background-color .3s var(--n-bezier); + +} + +.n-tabs .n-tabs-bar.transition-disabled { + + transition: none; + +} + +.n-tabs .n-tabs-bar.n-tabs-bar--disabled { + + background-color: var(--n-tab-text-color-disabled) + +} + +.n-tabs .n-tabs-pane-wrapper { + + position: relative; + overflow: hidden; + transition: max-height .2s var(--n-bezier); + +} + +.n-tabs .n-tab-pane { + + color: var(--n-pane-text-color); + width: 100%; + transition: + color .3s var(--n-bezier), + background-color .3s var(--n-bezier), + opacity .2s var(--n-bezier); + left: 0; + right: 0; + top: 0; + +} + +.n-tabs .n-tab-pane.next-transition-leave-active, .n-tabs .n-tab-pane.prev-transition-leave-active, .n-tabs .n-tab-pane.next-transition-enter-active, .n-tabs .n-tab-pane.prev-transition-enter-active { + + transition: + color .3s var(--n-bezier), + background-color .3s var(--n-bezier), + transform .2s var(--n-bezier), + opacity .2s var(--n-bezier); + +} + +.n-tabs .n-tab-pane.next-transition-leave-active, .n-tabs .n-tab-pane.prev-transition-leave-active { + + position: absolute; + +} + +.n-tabs .n-tab-pane.next-transition-enter-from, .n-tabs .n-tab-pane.prev-transition-leave-to { + + transform: translateX(32px); + opacity: 0; + +} + +.n-tabs .n-tab-pane.next-transition-leave-to, .n-tabs .n-tab-pane.prev-transition-enter-from { + + transform: translateX(-32px); + opacity: 0; + +} + +.n-tabs .n-tab-pane.next-transition-leave-from, .n-tabs .n-tab-pane.next-transition-enter-to, .n-tabs .n-tab-pane.prev-transition-leave-from, .n-tabs .n-tab-pane.prev-transition-enter-to { + + transform: translateX(0); + opacity: 1; + +} + +.n-tabs .n-tabs-tab-pad { + + box-sizing: border-box; + width: var(--n-tab-gap); + flex-grow: 0; + flex-shrink: 0; + +} + +.n-tabs.n-tabs--line-type .n-tabs-tab, .n-tabs.n-tabs--bar-type .n-tabs-tab { + + font-weight: var(--n-tab-font-weight); + box-sizing: border-box; + vertical-align: bottom; + +} + +.n-tabs.n-tabs--line-type .n-tabs-tab:hover, .n-tabs.n-tabs--bar-type .n-tabs-tab:hover { + color: var(--n-tab-text-color-hover); +} + +.n-tabs.n-tabs--line-type .n-tabs-tab.n-tabs-tab--active, .n-tabs.n-tabs--bar-type .n-tabs-tab.n-tabs-tab--active { + + color: var(--n-tab-text-color-active); + font-weight: var(--n-tab-font-weight-active); + +} + +.n-tabs.n-tabs--line-type .n-tabs-tab.n-tabs-tab--disabled, .n-tabs.n-tabs--bar-type .n-tabs-tab.n-tabs-tab--disabled { + color: var(--n-tab-text-color-disabled); +} + +.n-tabs .n-tabs-nav.n-tabs-nav--line-type.n-tabs-nav--top .n-tabs-nav__prefix, .n-tabs .n-tabs-nav.n-tabs-nav--line-type.n-tabs-nav--top .n-tabs-nav__suffix { + + border-bottom: 1px solid var(--n-tab-border-color); + +} + +.n-tabs .n-tabs-nav.n-tabs-nav--line-type.n-tabs-nav--top .n-tabs-nav-scroll-content { + + border-bottom: 1px solid var(--n-tab-border-color); + +} + +.n-tabs .n-tabs-nav.n-tabs-nav--line-type.n-tabs-nav--top .n-tabs-bar { + + bottom: -1px; + +} + +.n-tabs .n-tabs-nav.n-tabs-nav--line-type.n-tabs-nav--left .n-tabs-nav__prefix, .n-tabs .n-tabs-nav.n-tabs-nav--line-type.n-tabs-nav--left .n-tabs-nav__suffix { + + border-right: 1px solid var(--n-tab-border-color); + +} + +.n-tabs .n-tabs-nav.n-tabs-nav--line-type.n-tabs-nav--left .n-tabs-nav-scroll-content { + + border-right: 1px solid var(--n-tab-border-color); + +} + +.n-tabs .n-tabs-nav.n-tabs-nav--line-type.n-tabs-nav--left .n-tabs-bar { + + right: -1px; + +} + +.n-tabs .n-tabs-nav.n-tabs-nav--line-type.n-tabs-nav--right .n-tabs-nav__prefix, .n-tabs .n-tabs-nav.n-tabs-nav--line-type.n-tabs-nav--right .n-tabs-nav__suffix { + + border-left: 1px solid var(--n-tab-border-color); + +} + +.n-tabs .n-tabs-nav.n-tabs-nav--line-type.n-tabs-nav--right .n-tabs-nav-scroll-content { + + border-left: 1px solid var(--n-tab-border-color); + +} + +.n-tabs .n-tabs-nav.n-tabs-nav--line-type.n-tabs-nav--right .n-tabs-bar { + + left: -1px; + +} + +.n-tabs .n-tabs-nav.n-tabs-nav--line-type.n-tabs-nav--bottom .n-tabs-nav__prefix, .n-tabs .n-tabs-nav.n-tabs-nav--line-type.n-tabs-nav--bottom .n-tabs-nav__suffix { + + border-top: 1px solid var(--n-tab-border-color); + +} + +.n-tabs .n-tabs-nav.n-tabs-nav--line-type.n-tabs-nav--bottom .n-tabs-nav-scroll-content { + + border-top: 1px solid var(--n-tab-border-color); + +} + +.n-tabs .n-tabs-nav.n-tabs-nav--line-type.n-tabs-nav--bottom .n-tabs-bar { + + top: -1px; + +} + +.n-tabs .n-tabs-nav.n-tabs-nav--line-type .n-tabs-nav__prefix, .n-tabs .n-tabs-nav.n-tabs-nav--line-type .n-tabs-nav__suffix { + + transition: border-color .3s var(--n-bezier); + +} + +.n-tabs .n-tabs-nav.n-tabs-nav--line-type .n-tabs-nav-scroll-content { + + transition: border-color .3s var(--n-bezier); + +} + +.n-tabs .n-tabs-nav.n-tabs-nav--line-type .n-tabs-bar { + + border-radius: 0; + +} + +.n-tabs .n-tabs-nav.n-tabs-nav--card-type .n-tabs-nav__prefix, .n-tabs .n-tabs-nav.n-tabs-nav--card-type .n-tabs-nav__suffix { + + transition: border-color .3s var(--n-bezier); + +} + +.n-tabs .n-tabs-nav.n-tabs-nav--card-type .n-tabs-pad { + + flex-grow: 1; + transition: border-color .3s var(--n-bezier); + +} + +.n-tabs .n-tabs-nav.n-tabs-nav--card-type .n-tabs-tab-pad { + + transition: border-color .3s var(--n-bezier); + +} + +.n-tabs .n-tabs-nav.n-tabs-nav--card-type .n-tabs-tab { + + font-weight: var(--n-tab-font-weight); + border: 1px solid var(--n-tab-border-color); + background-color: var(--n-tab-color); + box-sizing: border-box; + position: relative; + vertical-align: bottom; + display: flex; + justify-content: space-between; + font-size: var(--n-tab-font-size); + color: var(--n-tab-text-color); + +} + +.n-tabs .n-tabs-nav.n-tabs-nav--card-type .n-tabs-tab.n-tabs-tab--addable { + + padding-left: 8px; + padding-right: 8px; + font-size: 16px; + justify-content: center; + +} + +.n-tabs .n-tabs-nav.n-tabs-nav--card-type .n-tabs-tab.n-tabs-tab--addable .n-tabs-tab__height-placeholder { + + width: 0; + font-size: var(--n-tab-font-size); + +} + +.n-tabs .n-tabs-nav.n-tabs-nav--card-type .n-tabs-tab.n-tabs-tab--addable:not(.n-tabs-tab--disabled):hover { + + color: var(--n-tab-text-color-hover); + +} + +.n-tabs .n-tabs-nav.n-tabs-nav--card-type .n-tabs-tab.n-tabs-tab--closable { +padding-right: 8px; +} + +.n-tabs .n-tabs-nav.n-tabs-nav--card-type .n-tabs-tab.n-tabs-tab--active { + + background-color: #0000; + font-weight: var(--n-tab-font-weight-active); + color: var(--n-tab-text-color-active); + +} + +.n-tabs .n-tabs-nav.n-tabs-nav--card-type .n-tabs-tab.n-tabs-tab--disabled { +color: var(--n-tab-text-color-disabled); +} + +.n-tabs .n-tabs-nav.n-tabs-nav--left, .n-tabs .n-tabs-nav.n-tabs-nav--right { + + flex-direction: column; + +} + +.n-tabs .n-tabs-nav.n-tabs-nav--left .n-tabs-nav__prefix, .n-tabs .n-tabs-nav.n-tabs-nav--right .n-tabs-nav__prefix, .n-tabs .n-tabs-nav.n-tabs-nav--left .n-tabs-nav__suffix, .n-tabs .n-tabs-nav.n-tabs-nav--right .n-tabs-nav__suffix { + + padding: var(--n-tab-padding-vertical); + +} + +.n-tabs .n-tabs-nav.n-tabs-nav--left .n-tabs-wrapper, .n-tabs .n-tabs-nav.n-tabs-nav--right .n-tabs-wrapper { + + flex-direction: column; + +} + +.n-tabs .n-tabs-nav.n-tabs-nav--left .n-tabs-tab-wrapper, .n-tabs .n-tabs-nav.n-tabs-nav--right .n-tabs-tab-wrapper { + + flex-direction: column; + +} + +.n-tabs .n-tabs-nav.n-tabs-nav--left .n-tabs-tab-wrapper .n-tabs-tab-pad, .n-tabs .n-tabs-nav.n-tabs-nav--right .n-tabs-tab-wrapper .n-tabs-tab-pad { + + height: var(--n-tab-gap-vertical); + width: 100%; + +} + +.n-tabs .n-tabs-nav.n-tabs-nav--top.n-tabs-nav--card-type .n-tabs-scroll-padding { +border-bottom: 1px solid var(--n-tab-border-color); +} + +.n-tabs .n-tabs-nav.n-tabs-nav--top.n-tabs-nav--card-type .n-tabs-nav__prefix, .n-tabs .n-tabs-nav.n-tabs-nav--top.n-tabs-nav--card-type .n-tabs-nav__suffix { + + border-bottom: 1px solid var(--n-tab-border-color); + +} + +.n-tabs .n-tabs-nav.n-tabs-nav--top.n-tabs-nav--card-type .n-tabs-tab { + + border-top-left-radius: var(--n-tab-border-radius); + border-top-right-radius: var(--n-tab-border-radius); + +} + +.n-tabs .n-tabs-nav.n-tabs-nav--top.n-tabs-nav--card-type .n-tabs-tab.n-tabs-tab--active { + + border-bottom: 1px solid #0000; + +} + +.n-tabs .n-tabs-nav.n-tabs-nav--top.n-tabs-nav--card-type .n-tabs-tab-pad { + + border-bottom: 1px solid var(--n-tab-border-color); + +} + +.n-tabs .n-tabs-nav.n-tabs-nav--top.n-tabs-nav--card-type .n-tabs-pad { + + border-bottom: 1px solid var(--n-tab-border-color); + +} + +.n-tabs .n-tabs-nav.n-tabs-nav--left.n-tabs-nav--card-type .n-tabs-scroll-padding { +border-right: 1px solid var(--n-tab-border-color); +} + +.n-tabs .n-tabs-nav.n-tabs-nav--left.n-tabs-nav--card-type .n-tabs-nav__prefix, .n-tabs .n-tabs-nav.n-tabs-nav--left.n-tabs-nav--card-type .n-tabs-nav__suffix { + + border-right: 1px solid var(--n-tab-border-color); + +} + +.n-tabs .n-tabs-nav.n-tabs-nav--left.n-tabs-nav--card-type .n-tabs-tab { + + border-top-left-radius: var(--n-tab-border-radius); + border-bottom-left-radius: var(--n-tab-border-radius); + +} + +.n-tabs .n-tabs-nav.n-tabs-nav--left.n-tabs-nav--card-type .n-tabs-tab.n-tabs-tab--active { + + border-right: 1px solid #0000; + +} + +.n-tabs .n-tabs-nav.n-tabs-nav--left.n-tabs-nav--card-type .n-tabs-tab-pad { + + border-right: 1px solid var(--n-tab-border-color); + +} + +.n-tabs .n-tabs-nav.n-tabs-nav--left.n-tabs-nav--card-type .n-tabs-pad { + + border-right: 1px solid var(--n-tab-border-color); + +} + +.n-tabs .n-tabs-nav.n-tabs-nav--right.n-tabs-nav--card-type .n-tabs-scroll-padding { +border-left: 1px solid var(--n-tab-border-color); +} + +.n-tabs .n-tabs-nav.n-tabs-nav--right.n-tabs-nav--card-type .n-tabs-nav__prefix, .n-tabs .n-tabs-nav.n-tabs-nav--right.n-tabs-nav--card-type .n-tabs-nav__suffix { + + border-left: 1px solid var(--n-tab-border-color); + +} + +.n-tabs .n-tabs-nav.n-tabs-nav--right.n-tabs-nav--card-type .n-tabs-tab { + + border-top-right-radius: var(--n-tab-border-radius); + border-bottom-right-radius: var(--n-tab-border-radius); + +} + +.n-tabs .n-tabs-nav.n-tabs-nav--right.n-tabs-nav--card-type .n-tabs-tab.n-tabs-tab--active { + + border-left: 1px solid #0000; + +} + +.n-tabs .n-tabs-nav.n-tabs-nav--right.n-tabs-nav--card-type .n-tabs-tab-pad { + + border-left: 1px solid var(--n-tab-border-color); + +} + +.n-tabs .n-tabs-nav.n-tabs-nav--right.n-tabs-nav--card-type .n-tabs-pad { + + border-left: 1px solid var(--n-tab-border-color); + +} + +.n-tabs .n-tabs-nav.n-tabs-nav--bottom.n-tabs-nav--card-type .n-tabs-scroll-padding { +border-top: 1px solid var(--n-tab-border-color); +} + +.n-tabs .n-tabs-nav.n-tabs-nav--bottom.n-tabs-nav--card-type .n-tabs-nav__prefix, .n-tabs .n-tabs-nav.n-tabs-nav--bottom.n-tabs-nav--card-type .n-tabs-nav__suffix { + + border-top: 1px solid var(--n-tab-border-color); + +} + +.n-tabs .n-tabs-nav.n-tabs-nav--bottom.n-tabs-nav--card-type .n-tabs-tab { + + border-bottom-left-radius: var(--n-tab-border-radius); + border-bottom-right-radius: var(--n-tab-border-radius); + +} + +.n-tabs .n-tabs-nav.n-tabs-nav--bottom.n-tabs-nav--card-type .n-tabs-tab.n-tabs-tab--active { + + border-top: 1px solid #0000; + +} + +.n-tabs .n-tabs-nav.n-tabs-nav--bottom.n-tabs-nav--card-type .n-tabs-tab-pad { + + border-top: 1px solid var(--n-tab-border-color); + +} + +.n-tabs .n-tabs-nav.n-tabs-nav--bottom.n-tabs-nav--card-type .n-tabs-pad { + + border-top: 1px solid var(--n-tab-border-color); + +} + +/* steps/src/styles/index.cssr.mjs */ +.n-steps { + + width: 100%; + display: flex; + +} + +.n-steps .n-step { + + position: relative; + display: flex; + flex: 1; + +} + +.n-steps .n-step.n-step--disabled { +cursor: not-allowed +} + +.n-steps .n-step.n-step--clickable { + + cursor: pointer; + +} + +.n-steps .n-step:last-child .n-step-splitor { +display: none; +} + +.n-steps .n-step-splitor { + + background-color: var(--n-splitor-color); + margin-top: calc(var(--n-step-header-font-size) / 2); + height: 1px; + flex: 1; + align-self: flex-start; + margin-left: 12px; + margin-right: 12px; + transition: + color .3s var(--n-bezier), + background-color .3s var(--n-bezier); + +} + +.n-steps .n-step-content { +flex: 1; +} + +.n-steps .n-step-content .n-step-content-header { + + color: var(--n-header-text-color); + margin-top: calc(var(--n-indicator-size) / 2 - var(--n-step-header-font-size) / 2); + line-height: var(--n-step-header-font-size); + font-size: var(--n-step-header-font-size); + position: relative; + display: flex; + font-weight: var(--n-step-header-font-weight); + margin-left: 9px; + transition: + color .3s var(--n-bezier), + background-color .3s var(--n-bezier); + +} + +.n-steps .n-step-content .n-step-content-header .n-step-content-header__title { + + white-space: nowrap; + flex: 0; + +} + +.n-steps .n-step-content .n-step-content__description { + + color: var(--n-description-text-color); + margin-top: 12px; + margin-left: 9px; + transition: + color .3s var(--n-bezier), + background-color .3s var(--n-bezier); + +} + +.n-steps .n-step-indicator { + + background-color: var(--n-indicator-color); + box-shadow: 0 0 0 1px var(--n-indicator-border-color); + height: var(--n-indicator-size); + width: var(--n-indicator-size); + border-radius: 50%; + display: flex; + align-items: center; + justify-content: center; + transition: + background-color .3s var(--n-bezier), + box-shadow .3s var(--n-bezier); + +} + +.n-steps .n-step-indicator .n-step-indicator-slot { + + position: relative; + width: var(--n-indicator-icon-size); + height: var(--n-indicator-icon-size); + font-size: var(--n-indicator-icon-size); + line-height: var(--n-indicator-icon-size); + +} + +.n-steps .n-step-indicator .n-step-indicator-slot .n-step-indicator-slot__index { + + display: inline-block; + text-align: center; + position: absolute; + left: 0; + top: 0; + white-space: nowrap; + font-size: var(--n-indicator-index-font-size); + width: var(--n-indicator-icon-size); + height: var(--n-indicator-icon-size); + line-height: var(--n-indicator-icon-size); + color: var(--n-indicator-text-color); + transition: color .3s var(--n-bezier); + +} + +.n-steps .n-step-indicator .n-step-indicator-slot .n-step-indicator-slot__index.icon-switch-transition-enter-from, .n-steps .n-step-indicator .n-step-indicator-slot .n-step-indicator-slot__index.icon-switch-transition-leave-to { + transform: scale(0.75); + left: 0; + top: 0; + opacity: 0; +} + +.n-steps .n-step-indicator .n-step-indicator-slot .n-step-indicator-slot__index.icon-switch-transition-enter-to, .n-steps .n-step-indicator .n-step-indicator-slot .n-step-indicator-slot__index.icon-switch-transition-leave-from { + transform: scale(1) ; + left: 0; + top: 0; + opacity: 1; +} + +.n-steps .n-step-indicator .n-step-indicator-slot .n-step-indicator-slot__index.icon-switch-transition-enter-active, .n-steps .n-step-indicator .n-step-indicator-slot .n-step-indicator-slot__index.icon-switch-transition-leave-active { + transform-origin: center; + position: absolute; + left: 0; + top: 0; + transition: all .3s cubic-bezier(.4, 0, .2, 1) !important; +} + +.n-steps .n-step-indicator .n-step-indicator-slot .n-icon { + + color: var(--n-indicator-text-color); + transition: color .3s var(--n-bezier); + +} + +.n-steps .n-step-indicator .n-step-indicator-slot .n-icon.icon-switch-transition-enter-from, .n-steps .n-step-indicator .n-step-indicator-slot .n-icon.icon-switch-transition-leave-to { + transform: scale(0.75); + left: 0; + top: 0; + opacity: 0; +} + +.n-steps .n-step-indicator .n-step-indicator-slot .n-icon.icon-switch-transition-enter-to, .n-steps .n-step-indicator .n-step-indicator-slot .n-icon.icon-switch-transition-leave-from { + transform: scale(1) ; + left: 0; + top: 0; + opacity: 1; +} + +.n-steps .n-step-indicator .n-step-indicator-slot .n-icon.icon-switch-transition-enter-active, .n-steps .n-step-indicator .n-step-indicator-slot .n-icon.icon-switch-transition-leave-active { + transform-origin: center; + position: absolute; + left: 0; + top: 0; + transition: all .3s cubic-bezier(.4, 0, .2, 1) !important; +} + +.n-steps .n-step-indicator .n-step-indicator-slot .n-base-icon { + + color: var(--n-indicator-text-color); + transition: color .3s var(--n-bezier); + +} + +.n-steps .n-step-indicator .n-step-indicator-slot .n-base-icon.icon-switch-transition-enter-from, .n-steps .n-step-indicator .n-step-indicator-slot .n-base-icon.icon-switch-transition-leave-to { + transform: scale(0.75); + left: 0; + top: 0; + opacity: 0; +} + +.n-steps .n-step-indicator .n-step-indicator-slot .n-base-icon.icon-switch-transition-enter-to, .n-steps .n-step-indicator .n-step-indicator-slot .n-base-icon.icon-switch-transition-leave-from { + transform: scale(1) ; + left: 0; + top: 0; + opacity: 1; +} + +.n-steps .n-step-indicator .n-step-indicator-slot .n-base-icon.icon-switch-transition-enter-active, .n-steps .n-step-indicator .n-step-indicator-slot .n-base-icon.icon-switch-transition-leave-active { + transform-origin: center; + position: absolute; + left: 0; + top: 0; + transition: all .3s cubic-bezier(.4, 0, .2, 1) !important; +} + +.n-steps.n-steps--vertical { +flex-direction: column; +} + +.n-steps.n-steps--vertical:not(.n-steps--show-description) > .n-step { +padding-bottom: 8px; +} + +.n-steps.n-steps--vertical > .n-step { +margin-bottom: 16px; +} + +.n-steps.n-steps--vertical > .n-step:last-child { +margin-bottom: 0; +} + +.n-steps.n-steps--vertical > .n-step > .n-step-indicator > .n-step-splitor { + + position: absolute; + bottom: -8px; + width: 1px; + margin: 0 !important; + left: calc(var(--n-indicator-size) / 2); + height: calc(100% - var(--n-indicator-size)); + +} + +.n-steps.n-steps--vertical > .n-step > .n-step-content .n-step-content__description { +margin-top: 8px; +} + +.n-steps.n-steps--content-bottom:not(.n-steps--vertical) > .n-step { +flex-direction: column +} + +.n-steps.n-steps--content-bottom:not(.n-steps--vertical) > .n-step > .n-step-line { +display: flex; +} + +.n-steps.n-steps--content-bottom:not(.n-steps--vertical) > .n-step > .n-step-line > .n-step-splitor { + + margin-top: 0; + align-self: center; + +} + +.n-steps.n-steps--content-bottom:not(.n-steps--vertical) > .n-step > .n-step-content { +margin-top: calc(var(--n-indicator-size) / 2 - var(--n-step-header-font-size) / 2); +} + +.n-steps.n-steps--content-bottom:not(.n-steps--vertical) > .n-step > .n-step-content .n-step-content-header { + + margin-left: 0; + +} + +.n-steps.n-steps--content-bottom:not(.n-steps--vertical) > .n-step > .n-step-content .n-step-content__description { + + margin-left: 0; + +} + +/* pagination/src/styles/index.cssr.mjs */ +.n-pagination { + + display: flex; + vertical-align: middle; + font-size: var(--n-item-font-size); + flex-wrap: nowrap; + +} + +.n-pagination .n-pagination-prefix { + + display: flex; + align-items: center; + margin: var(--n-prefix-margin); + +} + +.n-pagination .n-pagination-suffix { + + display: flex; + align-items: center; + margin: var(--n-suffix-margin); + +} + +.n-pagination > *:not(:first-child) { + + margin: var(--n-item-margin); + +} + +.n-pagination .n-select { + + width: var(--n-select-width); + +} + +.n-pagination.transition-disabled .n-pagination-item { +transition: none!important; +} + +.n-pagination .n-pagination-quick-jumper { + + white-space: nowrap; + display: flex; + color: var(--n-jumper-text-color); + transition: color .3s var(--n-bezier); + align-items: center; + font-size: var(--n-jumper-font-size); + +} + +.n-pagination .n-pagination-quick-jumper .n-input { + + margin: var(--n-input-margin); + width: var(--n-input-width); + +} + +.n-pagination .n-pagination-item { + + position: relative; + cursor: pointer; + user-select: none; + -webkit-user-select: none; + display: flex; + align-items: center; + justify-content: center; + box-sizing: border-box; + min-width: var(--n-item-size); + height: var(--n-item-size); + padding: var(--n-item-padding); + background-color: var(--n-item-color); + color: var(--n-item-text-color); + border-radius: var(--n-item-border-radius); + border: var(--n-item-border); + fill: var(--n-button-icon-color); + transition: + color .3s var(--n-bezier), + border-color .3s var(--n-bezier), + background-color .3s var(--n-bezier), + fill .3s var(--n-bezier); + +} + +.n-pagination .n-pagination-item.n-pagination-item--button { + + background: var(--n-button-color); + color: var(--n-button-icon-color); + border: var(--n-button-border); + padding: 0; + +} + +.n-pagination .n-pagination-item.n-pagination-item--button .n-base-icon { + + font-size: var(--n-button-icon-size); + +} + +.n-pagination .n-pagination-item:not(.n-pagination-item--disabled).n-pagination-item--hover { + + background: var(--n-item-color-hover); + color: var(--n-item-text-color-hover); + border: var(--n-item-border-hover); + +} + +.n-pagination .n-pagination-item:not(.n-pagination-item--disabled).n-pagination-item--hover.n-pagination-item--button { + + background: var(--n-button-color-hover); + border: var(--n-button-border-hover); + color: var(--n-button-icon-color-hover); + +} + +.n-pagination .n-pagination-item:not(.n-pagination-item--disabled):hover { + + background: var(--n-item-color-hover); + color: var(--n-item-text-color-hover); + border: var(--n-item-border-hover); + +} + +.n-pagination .n-pagination-item:not(.n-pagination-item--disabled):hover.n-pagination-item--button { + + background: var(--n-button-color-hover); + border: var(--n-button-border-hover); + color: var(--n-button-icon-color-hover); + +} + +.n-pagination .n-pagination-item:not(.n-pagination-item--disabled):active { + + background: var(--n-item-color-pressed); + color: var(--n-item-text-color-pressed); + border: var(--n-item-border-pressed); + +} + +.n-pagination .n-pagination-item:not(.n-pagination-item--disabled):active.n-pagination-item--button { + + background: var(--n-button-color-pressed); + border: var(--n-button-border-pressed); + color: var(--n-button-icon-color-pressed); + +} + +.n-pagination .n-pagination-item:not(.n-pagination-item--disabled).n-pagination-item--active { + + background: var(--n-item-color-active); + color: var(--n-item-text-color-active); + border: var(--n-item-border-active); + +} + +.n-pagination .n-pagination-item:not(.n-pagination-item--disabled).n-pagination-item--active:hover { + + background: var(--n-item-color-active-hover); + +} + +.n-pagination .n-pagination-item.n-pagination-item--disabled { + + cursor: not-allowed; + color: var(--n-item-text-color-disabled); + +} + +.n-pagination .n-pagination-item.n-pagination-item--disabled.n-pagination-item--active, .n-pagination .n-pagination-item.n-pagination-item--disabled.n-pagination-item--button { + + background-color: var(--n-item-color-disabled); + border: var(--n-item-border-disabled); + +} + +.n-pagination.n-pagination--disabled { + + cursor: not-allowed; + +} + +.n-pagination.n-pagination--disabled .n-pagination-quick-jumper { + + color: var(--n-jumper-text-color-disabled); + +} + +.n-pagination.n-pagination--simple { + + display: flex; + align-items: center; + flex-wrap: nowrap; + +} + +.n-pagination.n-pagination--simple .n-pagination-quick-jumper .n-input { + + margin: 0; + +} + +/* switch/src/styles/index.cssr.mjs */ +.n-switch { + + height: var(--n-height); + min-width: var(--n-width); + vertical-align: middle; + user-select: none; + -webkit-user-select: none; + display: inline-flex; + outline: none; + justify-content: center; + align-items: center; + +} + +.n-switch .n-switch__children-placeholder { + + height: var(--n-rail-height); + display: flex; + flex-direction: column; + overflow: hidden; + pointer-events: none; + visibility: hidden; + +} + +.n-switch .n-switch__rail-placeholder { + + display: flex; + flex-wrap: none; + +} + +.n-switch .n-switch__button-placeholder { + + width: calc(1.75 * var(--n-rail-height)); + height: var(--n-rail-height); + +} + +.n-switch .n-base-loading { + + position: absolute; + top: 50%; + left: 50%; + transform: translateX(-50%) translateY(-50%); + font-size: calc(var(--n-button-width) - 4px); + color: var(--n-loading-color); + transition: color .3s var(--n-bezier); + +} + +.n-switch .n-base-loading.icon-switch-transition-enter-from, .n-switch .n-base-loading.icon-switch-transition-leave-to { + transform: translateX(-50%) translateY(-50%) scale(0.75); + left: 50%; + top: 50%; + opacity: 0; +} + +.n-switch .n-base-loading.icon-switch-transition-enter-to, .n-switch .n-base-loading.icon-switch-transition-leave-from { + transform: scale(1) translateX(-50%) translateY(-50%); + left: 50%; + top: 50%; + opacity: 1; +} + +.n-switch .n-base-loading.icon-switch-transition-enter-active, .n-switch .n-base-loading.icon-switch-transition-leave-active { + transform-origin: center; + position: absolute; + left: 50%; + top: 50%; + transition: all .3s cubic-bezier(.4, 0, .2, 1) !important; +} + +.n-switch .n-switch__checked, .n-switch .n-switch__unchecked { + + transition: color .3s var(--n-bezier); + color: var(--n-text-color); + box-sizing: border-box; + position: absolute; + white-space: nowrap; + top: 0; + bottom: 0; + display: flex; + align-items: center; + line-height: 1; + +} + +.n-switch .n-switch__checked { + + right: 0; + padding-right: calc(1.25 * var(--n-rail-height) - var(--n-offset)); + +} + +.n-switch .n-switch__unchecked { + + left: 0; + justify-content: flex-end; + padding-left: calc(1.25 * var(--n-rail-height) - var(--n-offset)); + +} + +.n-switch:focus .n-switch__rail { + + box-shadow: var(--n-box-shadow-focus); + +} + +.n-switch.n-switch--round .n-switch__rail { +border-radius: calc(var(--n-rail-height) / 2); +} + +.n-switch.n-switch--round .n-switch__rail .n-switch__button { +border-radius: calc(var(--n-button-height) / 2); +} + +.n-switch:not(.n-switch--disabled):not(.n-switch--icon).n-switch--rubber-band.n-switch--pressed .n-switch__rail .n-switch__button { +max-width: var(--n-button-width-pressed); +} + +.n-switch:not(.n-switch--disabled):not(.n-switch--icon).n-switch--rubber-band .n-switch__rail:active .n-switch__button { +max-width: var(--n-button-width-pressed); +} + +.n-switch:not(.n-switch--disabled):not(.n-switch--icon).n-switch--rubber-band.n-switch--active.n-switch--pressed .n-switch__rail .n-switch__button { +left: calc(100% - var(--n-offset) - var(--n-button-width-pressed)); +} + +.n-switch:not(.n-switch--disabled):not(.n-switch--icon).n-switch--rubber-band.n-switch--active .n-switch__rail:active .n-switch__button { +left: calc(100% - var(--n-offset) - var(--n-button-width-pressed)); +} + +.n-switch.n-switch--active .n-switch__rail .n-switch__button { +left: calc(100% - var(--n-button-width) - var(--n-offset)) +} + +.n-switch .n-switch__rail { + + overflow: hidden; + height: var(--n-rail-height); + min-width: var(--n-rail-width); + border-radius: var(--n-rail-border-radius); + cursor: pointer; + position: relative; + transition: + opacity .3s var(--n-bezier), + background .3s var(--n-bezier), + box-shadow .3s var(--n-bezier); + background-color: var(--n-rail-color); + +} + +.n-switch .n-switch__rail .n-switch__button-icon { + + color: var(--n-icon-color); + transition: color .3s var(--n-bezier); + font-size: calc(var(--n-button-height) - 4px); + position: absolute; + left: 0; + right: 0; + top: 0; + bottom: 0; + display: flex; + justify-content: center; + align-items: center; + line-height: 1; + +} + +.n-switch .n-switch__rail .n-switch__button-icon.icon-switch-transition-enter-from, .n-switch .n-switch__rail .n-switch__button-icon.icon-switch-transition-leave-to { + transform: scale(0.75); + left: 0; + top: 0; + opacity: 0; +} + +.n-switch .n-switch__rail .n-switch__button-icon.icon-switch-transition-enter-to, .n-switch .n-switch__rail .n-switch__button-icon.icon-switch-transition-leave-from { + transform: scale(1) ; + left: 0; + top: 0; + opacity: 1; +} + +.n-switch .n-switch__rail .n-switch__button-icon.icon-switch-transition-enter-active, .n-switch .n-switch__rail .n-switch__button-icon.icon-switch-transition-leave-active { + transform-origin: center; + position: absolute; + left: 0; + top: 0; + transition: all .3s cubic-bezier(.4, 0, .2, 1) !important; +} + +.n-switch .n-switch__rail .n-switch__button { + + align-items: center; + top: var(--n-offset); + left: var(--n-offset); + height: var(--n-button-height); + width: var(--n-button-width-pressed); + max-width: var(--n-button-width); + border-radius: var(--n-button-border-radius); + background-color: var(--n-button-color); + box-shadow: var(--n-button-box-shadow); + box-sizing: border-box; + cursor: inherit; + content: ""; + position: absolute; + transition: + background-color .3s var(--n-bezier), + left .3s var(--n-bezier), + opacity .3s var(--n-bezier), + max-width .3s var(--n-bezier), + box-shadow .3s var(--n-bezier); + +} + +.n-switch.n-switch--active .n-switch__rail { +background-color: var(--n-rail-color-active); +} + +.n-switch.n-switch--loading .n-switch__rail { + + cursor: wait; + +} + +.n-switch.n-switch--disabled .n-switch__rail { + + cursor: not-allowed; + opacity: .5; + +} + +/* select/src/styles/index.cssr.mjs */ +.n-select { + + z-index: auto; + outline: none; + width: 100%; + position: relative; + font-weight: var(--n-font-weight); + +} + +.n-select-menu { + + margin: 4px 0; + box-shadow: var(--n-menu-box-shadow); + +} + +.n-select-menu.fade-in-scale-up-transition-leave-active { + transform-origin: inherit; + transition: opacity .2s cubic-bezier(.4, 0, 1, 1), transform .2s cubic-bezier(.4, 0, 1, 1) ,background-color .3s var(--n-bezier), box-shadow .3s var(--n-bezier); +} + +.n-select-menu.fade-in-scale-up-transition-enter-active { + transform-origin: inherit; + transition: opacity .2s cubic-bezier(0, 0, .2, 1), transform .2s cubic-bezier(0, 0, .2, 1) ,background-color .3s var(--n-bezier), box-shadow .3s var(--n-bezier); +} + +.n-select-menu.fade-in-scale-up-transition-enter-from, .n-select-menu.fade-in-scale-up-transition-leave-to { + opacity: 0; + transform: scale(.9); +} + +.n-select-menu.fade-in-scale-up-transition-leave-from, .n-select-menu.fade-in-scale-up-transition-enter-to { + opacity: 1; + transform: scale(1); +} + +/* rate/src/styles/index.cssr.mjs */ +.n-rate { + display: inline-flex; + flex-wrap: nowrap; +} + +.n-rate:hover .n-rate__item { + + transition: + transform .1s var(--n-bezier), + color .3s var(--n-bezier); + +} + +.n-rate .n-rate__item { + + position: relative; + display: flex; + transition: + transform .1s var(--n-bezier), + color .3s var(--n-bezier); + transform: scale(1); + font-size: var(--n-item-size); + color: var(--n-item-color); + +} + +.n-rate .n-rate__item:not(:first-child) { + + margin-left: 6px; + +} + +.n-rate .n-rate__item.n-rate__item--active { + + color: var(--n-item-color-active); + +} + +.n-rate:not(.n-rate--readonly) { + + cursor: pointer; + +} + +.n-rate:not(.n-rate--readonly) .n-rate__item:hover { + + transform: scale(1.05); + +} + +.n-rate:not(.n-rate--readonly) .n-rate__item:active { + + transform: scale(0.96); + +} + +.n-rate .n-rate__half { + + display: flex; + transition: inherit; + position: absolute; + top: 0; + left: 0; + bottom: 0; + width: 50%; + overflow: hidden; + color: rgba(255, 255, 255, 0); + +} + +.n-rate .n-rate__half.n-rate__half--active { + + color: var(--n-item-color-active); + +} + +/* time-picker/src/styles/index.cssr.mjs */ +.n-time-picker { + + z-index: auto; + position: relative; + +} + +.n-time-picker .n-time-picker-icon { + + color: var(--n-icon-color-override); + transition: color .3s var(--n-bezier); + +} + +.n-time-picker.n-time-picker--disabled .n-time-picker-icon { + + color: var(--n-icon-color-disabled-override); + +} + +.n-time-picker-panel { + + transition: + box-shadow .3s var(--n-bezier), + background-color .3s var(--n-bezier); + outline: none; + font-size: var(--n-item-font-size); + border-radius: var(--n-border-radius); + margin: 4px 0; + min-width: 104px; + overflow: hidden; + background-color: var(--n-panel-color); + box-shadow: var(--n-panel-box-shadow); + +} + +.n-time-picker-panel.fade-in-scale-up-transition-leave-active { + transform-origin: inherit; + transition: opacity .2s cubic-bezier(.4, 0, 1, 1), transform .2s cubic-bezier(.4, 0, 1, 1) ; +} + +.n-time-picker-panel.fade-in-scale-up-transition-enter-active { + transform-origin: inherit; + transition: opacity .2s cubic-bezier(0, 0, .2, 1), transform .2s cubic-bezier(0, 0, .2, 1) ; +} + +.n-time-picker-panel.fade-in-scale-up-transition-enter-from, .n-time-picker-panel.fade-in-scale-up-transition-leave-to { + opacity: 0; + transform: scale(.9); +} + +.n-time-picker-panel.fade-in-scale-up-transition-leave-from, .n-time-picker-panel.fade-in-scale-up-transition-enter-to { + opacity: 1; + transform: scale(1); +} + +.n-time-picker-panel .n-time-picker-actions { + + padding: var(--n-panel-action-padding); + align-items: center; + display: flex; + justify-content: space-evenly; + +} + +.n-time-picker-panel .n-time-picker-cols { + + height: calc(var(--n-item-height) * 6); + display: flex; + position: relative; + transition: border-color .3s var(--n-bezier); + border-bottom: 1px solid var(--n-panel-divider-color); + +} + +.n-time-picker-panel .n-time-picker-col { + + flex-grow: 1; + min-width: var(--n-item-width); + height: calc(var(--n-item-height) * 6); + flex-direction: column; + transition: box-shadow .3s var(--n-bezier); + +} + +.n-time-picker-panel .n-time-picker-col.n-time-picker-col--transition-disabled .n-time-picker-col__item { +transition: none; +} + +.n-time-picker-panel .n-time-picker-col.n-time-picker-col--transition-disabled .n-time-picker-col__item::before { +transition: none; +} + +.n-time-picker-panel .n-time-picker-col .n-time-picker-col__padding { + + height: calc(var(--n-item-height) * 5); + +} + +.n-time-picker-panel .n-time-picker-col:first-child { +min-width: calc(var(--n-item-width) + 4px); +} + +.n-time-picker-panel .n-time-picker-col:first-child .n-time-picker-col__item::before { +left: 4px; +} + +.n-time-picker-panel .n-time-picker-col .n-time-picker-col__item { + + cursor: pointer; + height: var(--n-item-height); + display: flex; + align-items: center; + justify-content: center; + transition: + color .3s var(--n-bezier), + background-color .3s var(--n-bezier), + opacity .3s var(--n-bezier), + text-decoration-color .3s var(--n-bezier); + background: #0000; + text-decoration-color: #0000; + color: var(--n-item-text-color); + z-index: 0; + box-sizing: border-box; + padding-top: 4px; + position: relative; + +} + +.n-time-picker-panel .n-time-picker-col .n-time-picker-col__item::before { + + content: ""; + transition: background-color .3s var(--n-bezier); + z-index: -1; + position: absolute; + left: 0; + right: 4px; + top: 4px; + bottom: 0; + border-radius: var(--n-item-border-radius); + +} + +.n-time-picker-panel .n-time-picker-col .n-time-picker-col__item:not(.n-time-picker-col__item--disabled):hover::before { + + background-color: var(--n-item-color-hover); + +} + +.n-time-picker-panel .n-time-picker-col .n-time-picker-col__item.n-time-picker-col__item--active { + + color: var(--n-item-text-color-active); + +} + +.n-time-picker-panel .n-time-picker-col .n-time-picker-col__item.n-time-picker-col__item--active::before { + + background-color: var(--n-item-color-hover); + +} + +.n-time-picker-panel .n-time-picker-col .n-time-picker-col__item.n-time-picker-col__item--disabled { + + opacity: var(--n-item-opacity-disabled); + cursor: not-allowed; + +} + +.n-time-picker-panel .n-time-picker-col.n-time-picker-col--invalid .n-time-picker-col__item.n-time-picker-col__item--active { + + text-decoration: line-through; + text-decoration-color: var(--n-item-text-color-active); + +} + +/* tag/src/styles/index.cssr.mjs */ +.n-tag { + + --n-close-margin: var(--n-close-margin-top) var(--n-close-margin-right) var(--n-close-margin-bottom) var(--n-close-margin-left); + white-space: nowrap; + position: relative; + box-sizing: border-box; + cursor: default; + display: inline-flex; + align-items: center; + flex-wrap: nowrap; + padding: var(--n-padding); + border-radius: var(--n-border-radius); + color: var(--n-text-color); + background-color: var(--n-color); + transition: + border-color .3s var(--n-bezier), + background-color .3s var(--n-bezier), + color .3s var(--n-bezier), + box-shadow .3s var(--n-bezier), + opacity .3s var(--n-bezier); + line-height: 1; + height: var(--n-height); + font-size: var(--n-font-size); + +} + +.n-tag.n-tag--strong { + + font-weight: var(--n-font-weight-strong); + +} + +.n-tag .n-tag__border { + + pointer-events: none; + position: absolute; + left: 0; + right: 0; + top: 0; + bottom: 0; + border-radius: inherit; + border: var(--n-border); + transition: border-color .3s var(--n-bezier); + +} + +.n-tag .n-tag__icon { + + display: flex; + margin: 0 4px 0 0; + color: var(--n-text-color); + transition: color .3s var(--n-bezier); + font-size: var(--n-avatar-size-override); + +} + +.n-tag .n-tag__avatar { + + display: flex; + margin: 0 6px 0 0; + +} + +.n-tag .n-tag__close { + + margin: var(--n-close-margin); + transition: + background-color .3s var(--n-bezier), + color .3s var(--n-bezier); + +} + +.n-tag.n-tag--round { + + padding: 0 calc(var(--n-height) / 3); + border-radius: calc(var(--n-height) / 2); + +} + +.n-tag.n-tag--round .n-tag__icon { + + margin: 0 4px 0 calc((var(--n-height) - 8px) / -2); + +} + +.n-tag.n-tag--round .n-tag__avatar { + + margin: 0 6px 0 calc((var(--n-height) - 8px) / -2); + +} + +.n-tag.n-tag--round.n-tag--closable { + + padding: 0 calc(var(--n-height) / 4) 0 calc(var(--n-height) / 3); + +} + +.n-tag.n-tag--icon.n-tag--round, .n-tag.n-tag--avatar.n-tag--round { + + padding: 0 calc(var(--n-height) / 3) 0 calc(var(--n-height) / 2); + +} + +.n-tag.n-tag--disabled { + + cursor: not-allowed !important; + opacity: var(--n-opacity-disabled); + +} + +.n-tag.n-tag--checkable { + + cursor: pointer; + box-shadow: none; + color: var(--n-text-color-checkable); + background-color: var(--n-color-checkable); + +} + +.n-tag.n-tag--checkable:not(.n-tag--disabled):hover { +background-color: var(--n-color-hover-checkable); +} + +.n-tag.n-tag--checkable:not(.n-tag--disabled):hover:not(.n-tag--checked) { +color: var(--n-text-color-hover-checkable); +} + +.n-tag.n-tag--checkable:not(.n-tag--disabled):active { +background-color: var(--n-color-pressed-checkable); +} + +.n-tag.n-tag--checkable:not(.n-tag--disabled):active:not(.n-tag--checked) { +color: var(--n-text-color-pressed-checkable); +} + +.n-tag.n-tag--checkable.n-tag--checked { + + color: var(--n-text-color-checked); + background-color: var(--n-color-checked); + +} + +.n-tag.n-tag--checkable.n-tag--checked:not(.n-tag--disabled):hover { +background-color: var(--n-color-checked-hover); +} + +.n-tag.n-tag--checkable.n-tag--checked:not(.n-tag--disabled):active { +background-color: var(--n-color-checked-pressed); +} + +/* alert/src/styles/index.cssr.mjs */ +.n-alert { + + line-height: var(--n-line-height); + border-radius: var(--n-border-radius); + position: relative; + transition: background-color .3s var(--n-bezier); + background-color: var(--n-color); + text-align: start; + word-break: break-word; + +} + +.n-alert .n-alert__border { + + border-radius: inherit; + position: absolute; + left: 0; + right: 0; + top: 0; + bottom: 0; + transition: border-color .3s var(--n-bezier); + border: var(--n-border); + pointer-events: none; + +} + +.n-alert.n-alert--closable .n-alert-body .n-alert-body__title { + + padding-right: 24px; + +} + +.n-alert .n-alert__icon { + color: var(--n-icon-color); +} + +.n-alert .n-alert-body { + padding: var(--n-padding); +} + +.n-alert .n-alert-body .n-alert-body__title { + color: var(--n-title-text-color); +} + +.n-alert .n-alert-body .n-alert-body__content { + color: var(--n-content-text-color); +} + +.n-alert.fade-in-height-expand-transition-leave-from, .n-alert.fade-in-height-expand-transition-enter-to { + transform: scale(1); + opacity: 1; +} + +.n-alert.fade-in-height-expand-transition-leave-to, .n-alert.fade-in-height-expand-transition-enter-from { + transform: scale(0.9); + opacity: 0; + margin-top: 0 !important; + margin-bottom: 0 !important; +} + +.n-alert.fade-in-height-expand-transition-leave-active { + + overflow: hidden; + transition: + max-height .3s cubic-bezier(.4, 0, .2, 1) 0s, + opacity .3s cubic-bezier(0, 0, .2, 1) 0s, + margin-top .3s cubic-bezier(.4, 0, .2, 1) 0s, + margin-bottom .3s cubic-bezier(.4, 0, .2, 1) 0s, + padding-top .3s cubic-bezier(.4, 0, .2, 1) 0s, + padding-bottom .3s cubic-bezier(.4, 0, .2, 1) 0s + ,transform .3s var(--n-bezier) + +} + +.n-alert.fade-in-height-expand-transition-enter-active { + + overflow: hidden; + transition: + max-height .3s cubic-bezier(.4, 0, .2, 1), + opacity .3s cubic-bezier(.4, 0, 1, 1), + margin-top .3s cubic-bezier(.4, 0, .2, 1), + margin-bottom .3s cubic-bezier(.4, 0, .2, 1), + padding-top .3s cubic-bezier(.4, 0, .2, 1), + padding-bottom .3s cubic-bezier(.4, 0, .2, 1) + ,transform .3s var(--n-bezier) + +} + +.n-alert .n-alert__icon { + + position: absolute; + left: 0; + top: 0; + align-items: center; + justify-content: center; + display: flex; + width: var(--n-icon-size); + height: var(--n-icon-size); + font-size: var(--n-icon-size); + margin: var(--n-icon-margin); + +} + +.n-alert .n-alert__close { + + transition: + color .3s var(--n-bezier), + background-color .3s var(--n-bezier); + position: absolute; + right: 0; + top: 0; + margin: var(--n-close-margin); + +} + +.n-alert.n-alert--show-icon .n-alert-body { + padding-left: calc(var(--n-icon-margin-left) + var(--n-icon-size) + var(--n-icon-margin-right)); +} + +.n-alert.n-alert--right-adjust .n-alert-body { + padding-right: calc(var(--n-close-size) + var(--n-padding) + 2px); +} + +.n-alert .n-alert-body { + + border-radius: var(--n-border-radius); + transition: border-color .3s var(--n-bezier); + +} + +.n-alert .n-alert-body .n-alert-body__title { + + transition: color .3s var(--n-bezier); + font-size: 16px; + line-height: 19px; + font-weight: var(--n-title-font-weight); + +} + +.n-alert .n-alert-body .n-alert-body__title + .n-alert-body__content { + margin-top: 9px; +} + +.n-alert .n-alert-body .n-alert-body__content { + transition: color .3s var(--n-bezier); + font-size: var(--n-font-size); +} + +.n-alert .n-alert__icon { + transition: color .3s var(--n-bezier); +} + +/* empty/src/styles/index.cssr.mjs */ +.n-empty { + + display: flex; + flex-direction: column; + align-items: center; + font-size: var(--n-font-size); + +} + +.n-empty .n-empty__icon { + + width: var(--n-icon-size); + height: var(--n-icon-size); + font-size: var(--n-icon-size); + line-height: var(--n-icon-size); + color: var(--n-icon-color); + transition: + color .3s var(--n-bezier); + +} + +.n-empty .n-empty__icon + .n-empty__description { + + margin-top: 8px; + +} + +.n-empty .n-empty__description { + + transition: color .3s var(--n-bezier); + color: var(--n-text-color); + +} + +.n-empty .n-empty__extra { + + text-align: center; + transition: color .3s var(--n-bezier); + margin-top: 12px; + color: var(--n-extra-text-color); + +} + +/* result/src/styles/index.cssr.mjs */ +.n-result { + + color: var(--n-text-color); + line-height: var(--n-line-height); + font-size: var(--n-font-size); + transition: + color .3s var(--n-bezier); + +} + +.n-result .n-result-icon { + + display: flex; + justify-content: center; + transition: color .3s var(--n-bezier); + +} + +.n-result .n-result-icon .n-result-icon__status-image { + + font-size: var(--n-icon-size); + width: 1em; + height: 1em; + +} + +.n-result .n-result-icon .n-base-icon { + + color: var(--n-icon-color); + font-size: var(--n-icon-size); + +} + +.n-result .n-result-content { + margin-top: 24px; +} + +.n-result .n-result-footer { + + margin-top: 24px; + text-align: center; + +} + +.n-result .n-result-header .n-result-header__title { + + margin-top: 16px; + font-weight: var(--n-title-font-weight); + transition: color .3s var(--n-bezier); + text-align: center; + color: var(--n-title-text-color); + font-size: var(--n-title-font-size); + +} + +.n-result .n-result-header .n-result-header__description { + + margin-top: 4px; + text-align: center; + font-size: var(--n-font-size); + +} + +/* statistic/src/styles/index.cssr.mjs */ +.n-statistic .n-statistic__label { + + font-weight: var(--n-label-font-weight); + transition: .3s color var(--n-bezier); + font-size: var(--n-label-font-size); + color: var(--n-label-text-color); + +} + +.n-statistic .n-statistic-value { + + margin-top: 4px; + font-weight: var(--n-value-font-weight); + +} + +.n-statistic .n-statistic-value .n-statistic-value__prefix { + + margin: 0 4px 0 0; + font-size: var(--n-value-font-size); + transition: .3s color var(--n-bezier); + color: var(--n-value-prefix-text-color); + +} + +.n-statistic .n-statistic-value .n-statistic-value__prefix .n-icon { + vertical-align: -0.125em; +} + +.n-statistic .n-statistic-value .n-statistic-value__content { + + font-size: var(--n-value-font-size); + transition: .3s color var(--n-bezier); + color: var(--n-value-text-color); + +} + +.n-statistic .n-statistic-value .n-statistic-value__suffix { + + margin: 0 0 0 4px; + font-size: var(--n-value-font-size); + transition: .3s color var(--n-bezier); + color: var(--n-value-suffix-text-color); + +} + +.n-statistic .n-statistic-value .n-statistic-value__suffix .n-icon { + vertical-align: -0.125em; +} + +/* collapse/src/styles/index.cssr.mjs */ +.n-collapse { +width: 100%; +} + +.n-collapse .n-collapse-item { + + font-size: var(--n-font-size); + color: var(--n-text-color); + transition: + color .3s var(--n-bezier), + border-color .3s var(--n-bezier); + margin: var(--n-item-margin); + +} + +.n-collapse .n-collapse-item.n-collapse-item--disabled .n-collapse-item__header { +cursor: not-allowed; +} + +.n-collapse .n-collapse-item.n-collapse-item--disabled .n-collapse-item__header .n-collapse-item__header-main { + + color: var(--n-title-text-color-disabled); + +} + +.n-collapse .n-collapse-item.n-collapse-item--disabled .n-collapse-item__header .n-collapse-item-arrow { + + color: var(--n-arrow-color-disabled); + +} + +.n-collapse .n-collapse-item .n-collapse-item { +margin-left: 32px; +} + +.n-collapse .n-collapse-item:first-child { +margin-top: 0; +} + +.n-collapse .n-collapse-item:first-child > .n-collapse-item__header { +padding-top: 0; +} + +.n-collapse .n-collapse-item.n-collapse-item--left-arrow-placement .n-collapse-item__header .n-collapse-item-arrow { +margin-right: 4px; +} + +.n-collapse .n-collapse-item.n-collapse-item--right-arrow-placement .n-collapse-item__header .n-collapse-item-arrow { +margin-left: 4px; +} + +.n-collapse .n-collapse-item .n-collapse-item__content-wrapper .n-collapse-item__content-inner { +padding-top: 16px; +} + +.n-collapse .n-collapse-item .n-collapse-item__content-wrapper.fade-in-height-expand-transition-leave-from, .n-collapse .n-collapse-item .n-collapse-item__content-wrapper.fade-in-height-expand-transition-enter-to { + opacity: 1; +} + +.n-collapse .n-collapse-item .n-collapse-item__content-wrapper.fade-in-height-expand-transition-leave-to, .n-collapse .n-collapse-item .n-collapse-item__content-wrapper.fade-in-height-expand-transition-enter-from { + opacity: 0; + margin-top: 0 !important; + margin-bottom: 0 !important; +} + +.n-collapse .n-collapse-item .n-collapse-item__content-wrapper.fade-in-height-expand-transition-leave-active { + + overflow: hidden; + transition: + max-height 0.15s cubic-bezier(.4, 0, .2, 1) 0s, + opacity 0.15s cubic-bezier(0, 0, .2, 1) 0s, + margin-top 0.15s cubic-bezier(.4, 0, .2, 1) 0s, + margin-bottom 0.15s cubic-bezier(.4, 0, .2, 1) 0s, + padding-top 0.15s cubic-bezier(.4, 0, .2, 1) 0s, + padding-bottom 0.15s cubic-bezier(.4, 0, .2, 1) 0s + + +} + +.n-collapse .n-collapse-item .n-collapse-item__content-wrapper.fade-in-height-expand-transition-enter-active { + + overflow: hidden; + transition: + max-height 0.15s cubic-bezier(.4, 0, .2, 1), + opacity 0.15s cubic-bezier(.4, 0, 1, 1), + margin-top 0.15s cubic-bezier(.4, 0, .2, 1), + margin-bottom 0.15s cubic-bezier(.4, 0, .2, 1), + padding-top 0.15s cubic-bezier(.4, 0, .2, 1), + padding-bottom 0.15s cubic-bezier(.4, 0, .2, 1) + + +} + +.n-collapse .n-collapse-item.n-collapse-item--active .n-collapse-item__header.n-collapse-item__header--active .n-collapse-item-arrow { +transform: rotate(90deg); +} + +.n-collapse .n-collapse-item:not(:first-child) { +border-top: 1px solid var(--n-divider-color); +} + +.n-collapse .n-collapse-item:not(.n-collapse-item--disabled).n-collapse-item--trigger-area-main .n-collapse-item__header .n-collapse-item__header-main { +cursor: pointer; +} + +.n-collapse .n-collapse-item:not(.n-collapse-item--disabled).n-collapse-item--trigger-area-main .n-collapse-item__header .n-collapse-item-arrow { +cursor: default; +} + +.n-collapse .n-collapse-item:not(.n-collapse-item--disabled).n-collapse-item--trigger-area-arrow .n-collapse-item__header .n-collapse-item-arrow { +cursor: pointer; +} + +.n-collapse .n-collapse-item:not(.n-collapse-item--disabled).n-collapse-item--trigger-area-extra .n-collapse-item__header .n-collapse-item__header-extra { +cursor: pointer; +} + +.n-collapse .n-collapse-item .n-collapse-item__header { + + font-size: var(--n-title-font-size); + display: flex; + flex-wrap: nowrap; + align-items: center; + transition: color .3s var(--n-bezier); + position: relative; + padding: var(--n-title-padding); + color: var(--n-title-text-color); + +} + +.n-collapse .n-collapse-item .n-collapse-item__header .n-collapse-item__header-main { + + display: flex; + flex-wrap: nowrap; + align-items: center; + font-weight: var(--n-title-font-weight); + transition: color .3s var(--n-bezier); + flex: 1; + color: var(--n-title-text-color); + +} + +.n-collapse .n-collapse-item .n-collapse-item__header .n-collapse-item__header-extra { + + display: flex; + align-items: center; + transition: color .3s var(--n-bezier); + color: var(--n-text-color); + +} + +.n-collapse .n-collapse-item .n-collapse-item__header .n-collapse-item-arrow { + + display: flex; + transition: + transform .15s var(--n-bezier), + color .3s var(--n-bezier); + font-size: 18px; + color: var(--n-arrow-color); + +} + +/* timeline/src/styles/index.cssr.mjs */ +.n-timeline { + + position: relative; + width: 100%; + display: flex; + flex-direction: column; + line-height: 1.25; + +} + +.n-timeline.n-timeline--horizontal { + + flex-direction: row; + +} + +.n-timeline.n-timeline--horizontal > .n-timeline-item { + + flex-shrink: 0; + padding-right: 40px; + +} + +.n-timeline.n-timeline--horizontal > .n-timeline-item.n-timeline-item--dashed-line-type > .n-timeline-item-timeline .n-timeline-item-timeline__line { + + background-image: linear-gradient(90deg, var(--n-color-start), var(--n-color-start) 50%, transparent 50%, transparent 100%); + background-size: 10px 1px; + +} + +.n-timeline.n-timeline--horizontal > .n-timeline-item > .n-timeline-item-content { + + margin-top: calc(var(--n-icon-size) + 12px); + +} + +.n-timeline.n-timeline--horizontal > .n-timeline-item > .n-timeline-item-content > .n-timeline-item-content__meta { + + margin-top: 6px; + margin-bottom: unset; + +} + +.n-timeline.n-timeline--horizontal > .n-timeline-item > .n-timeline-item-timeline { + + width: 100%; + height: calc(var(--n-icon-size) + 12px); + +} + +.n-timeline.n-timeline--horizontal > .n-timeline-item > .n-timeline-item-timeline .n-timeline-item-timeline__line { + + left: var(--n-icon-size); + top: calc(var(--n-icon-size) / 2 - 1px); + right: 0px; + width: unset; + height: 2px; + +} + +.n-timeline.n-timeline--right-placement .n-timeline-item .n-timeline-item-content { + + text-align: right; + margin-right: calc(var(--n-icon-size) + 12px); + +} + +.n-timeline.n-timeline--right-placement .n-timeline-item .n-timeline-item-timeline { + + width: var(--n-icon-size); + right: 0; + +} + +.n-timeline.n-timeline--left-placement .n-timeline-item .n-timeline-item-content { + + margin-left: calc(var(--n-icon-size) + 12px); + +} + +.n-timeline.n-timeline--left-placement .n-timeline-item .n-timeline-item-timeline { + + left: 0; + +} + +.n-timeline .n-timeline-item { + + position: relative; + +} + +.n-timeline .n-timeline-item:last-child .n-timeline-item-timeline .n-timeline-item-timeline__line { + + display: none; + +} + +.n-timeline .n-timeline-item:last-child .n-timeline-item-content .n-timeline-item-content__meta { + + margin-bottom: 0; + +} + +.n-timeline .n-timeline-item .n-timeline-item-content .n-timeline-item-content__title { + + margin: var(--n-title-margin); + font-size: var(--n-title-font-size); + transition: color .3s var(--n-bezier); + font-weight: var(--n-title-font-weight); + color: var(--n-title-text-color); + +} + +.n-timeline .n-timeline-item .n-timeline-item-content .n-timeline-item-content__content { + + transition: color .3s var(--n-bezier); + font-size: var(--n-content-font-size); + color: var(--n-content-text-color); + +} + +.n-timeline .n-timeline-item .n-timeline-item-content .n-timeline-item-content__meta { + + transition: color .3s var(--n-bezier); + font-size: 12px; + margin-top: 6px; + margin-bottom: 20px; + color: var(--n-meta-text-color); + +} + +.n-timeline .n-timeline-item.n-timeline-item--dashed-line-type .n-timeline-item-timeline .n-timeline-item-timeline__line { + + --n-color-start: var(--n-line-color); + transition: --n-color-start .3s var(--n-bezier); + background-color: transparent; + background-image: linear-gradient(180deg, var(--n-color-start), var(--n-color-start) 50%, transparent 50%, transparent 100%); + background-size: 1px 10px; + +} + +.n-timeline .n-timeline-item .n-timeline-item-timeline { + + width: calc(var(--n-icon-size) + 12px); + position: absolute; + top: calc(var(--n-title-font-size) * 1.25 / 2 - var(--n-icon-size) / 2); + height: 100%; + +} + +.n-timeline .n-timeline-item .n-timeline-item-timeline .n-timeline-item-timeline__circle { + + border: var(--n-circle-border); + transition: + background-color .3s var(--n-bezier), + border-color .3s var(--n-bezier); + width: var(--n-icon-size); + height: var(--n-icon-size); + border-radius: var(--n-icon-size); + box-sizing: border-box; + +} + +.n-timeline .n-timeline-item .n-timeline-item-timeline .n-timeline-item-timeline__icon { + + color: var(--n-icon-color); + font-size: var(--n-icon-size); + height: var(--n-icon-size); + width: var(--n-icon-size); + display: flex; + align-items: center; + justify-content: center; + +} + +.n-timeline .n-timeline-item .n-timeline-item-timeline .n-timeline-item-timeline__line { + + transition: background-color .3s var(--n-bezier); + position: absolute; + top: var(--n-icon-size); + left: calc(var(--n-icon-size) / 2 - 1px); + bottom: 0px; + width: 2px; + background-color: var(--n-line-color); + +} + +/* button/src/styles/index.cssr.mjs */ +.n-button { + + margin: 0; + font-weight: var(--n-font-weight); + line-height: 1; + font-family: inherit; + padding: var(--n-padding); + height: var(--n-height); + font-size: var(--n-font-size); + border-radius: var(--n-border-radius); + color: var(--n-text-color); + background-color: var(--n-color); + width: var(--n-width); + white-space: nowrap; + outline: none; + position: relative; + z-index: auto; + border: none; + display: inline-flex; + flex-wrap: nowrap; + flex-shrink: 0; + align-items: center; + justify-content: center; + user-select: none; + -webkit-user-select: none; + text-align: center; + cursor: pointer; + text-decoration: none; + transition: + color .3s var(--n-bezier), + background-color .3s var(--n-bezier), + opacity .3s var(--n-bezier), + border-color .3s var(--n-bezier); + +} + +.n-button.n-button--color .n-button__border { + border-color: var(--n-border-color); +} + +.n-button.n-button--color.n-button--disabled .n-button__border { + border-color: var(--n-border-color-disabled); +} + +.n-button.n-button--color:not(.n-button--disabled):focus .n-button__state-border { + border-color: var(--n-border-color-focus); +} + +.n-button.n-button--color:not(.n-button--disabled):hover .n-button__state-border { + border-color: var(--n-border-color-hover); +} + +.n-button.n-button--color:not(.n-button--disabled):active .n-button__state-border { + border-color: var(--n-border-color-pressed); +} + +.n-button.n-button--color:not(.n-button--disabled).n-button--pressed .n-button__state-border { + border-color: var(--n-border-color-pressed); +} + +.n-button.n-button--disabled { + background-color: var(--n-color-disabled); + color: var(--n-text-color-disabled); +} + +.n-button.n-button--disabled .n-button__border { + border: var(--n-border-disabled); +} + +.n-button:not(.n-button--disabled):focus { + background-color: var(--n-color-focus); + color: var(--n-text-color-focus); +} + +.n-button:not(.n-button--disabled):focus .n-button__state-border { + border: var(--n-border-focus); +} + +.n-button:not(.n-button--disabled):hover { + background-color: var(--n-color-hover); + color: var(--n-text-color-hover); +} + +.n-button:not(.n-button--disabled):hover .n-button__state-border { + border: var(--n-border-hover); +} + +.n-button:not(.n-button--disabled):active { + background-color: var(--n-color-pressed); + color: var(--n-text-color-pressed); +} + +.n-button:not(.n-button--disabled):active .n-button__state-border { + border: var(--n-border-pressed); +} + +.n-button:not(.n-button--disabled).n-button--pressed { + background-color: var(--n-color-pressed); + color: var(--n-text-color-pressed); +} + +.n-button:not(.n-button--disabled).n-button--pressed .n-button__state-border { + border: var(--n-border-pressed); +} + +.n-button.n-button--loading { +cursor: wait; +} + +.n-button .n-base-wave { + + pointer-events: none; + top: 0; + right: 0; + bottom: 0; + left: 0; + animation-iteration-count: 1; + animation-duration: var(--n-ripple-duration); + animation-timing-function: var(--n-bezier-ease-out), var(--n-bezier-ease-out); + +} + +.n-button .n-base-wave.n-base-wave--active { + z-index: 1; + animation-name: button-wave-spread, button-wave-opacity; +} + +.n-button .n-button__border, .n-button .n-button__state-border { + + position: absolute; + left: 0; + top: 0; + right: 0; + bottom: 0; + border-radius: inherit; + transition: border-color .3s var(--n-bezier); + pointer-events: none; + +} + +.n-button .n-button__border { + + border: var(--n-border); + +} + +.n-button .n-button__state-border { + + border: var(--n-border); + border-color: #0000; + z-index: 1; + +} + +.n-button .n-button__icon { + + margin: var(--n-icon-margin); + margin-left: 0; + height: var(--n-icon-size); + width: var(--n-icon-size); + max-width: var(--n-icon-size); + font-size: var(--n-icon-size); + position: relative; + flex-shrink: 0; + +} + +.n-button .n-button__icon .n-icon-slot { + + height: var(--n-icon-size); + width: var(--n-icon-size); + position: absolute; + left: 0; + top: 50%; + transform: translateY(-50%); + display: flex; + align-items: center; + justify-content: center; + +} + +.n-button .n-button__icon .n-icon-slot.icon-switch-transition-enter-from, .n-button .n-button__icon .n-icon-slot.icon-switch-transition-leave-to { + transform: translateY(-50%) scale(0.75); + left: 0; + top: 50%; + opacity: 0; +} + +.n-button .n-button__icon .n-icon-slot.icon-switch-transition-enter-to, .n-button .n-button__icon .n-icon-slot.icon-switch-transition-leave-from { + transform: scale(1) translateY(-50%); + left: 0; + top: 50%; + opacity: 1; +} + +.n-button .n-button__icon .n-icon-slot.icon-switch-transition-enter-active, .n-button .n-button__icon .n-icon-slot.icon-switch-transition-leave-active { + transform-origin: center; + position: absolute; + left: 0; + top: 50%; + transition: all .3s cubic-bezier(.4, 0, .2, 1) !important; +} + +.n-button .n-button__icon.fade-in-width-expand-transition-leave-from, .n-button .n-button__icon.fade-in-width-expand-transition-enter-to { + opacity: 1; +} + +.n-button .n-button__icon.fade-in-width-expand-transition-leave-to, .n-button .n-button__icon.fade-in-width-expand-transition-enter-from { + + opacity: 0!important; + margin-left: 0!important; + margin-right: 0!important; + +} + +.n-button .n-button__icon.fade-in-width-expand-transition-leave-active { + + overflow: hidden; + transition: + opacity .2s cubic-bezier(.4, 0, .2, 1), + max-width .2s cubic-bezier(.4, 0, .2, 1) .1s, + margin-left .2s cubic-bezier(.4, 0, .2, 1) .1s, + margin-right .2s cubic-bezier(.4, 0, .2, 1) .1s; + +} + +.n-button .n-button__icon.fade-in-width-expand-transition-enter-active { + + overflow: hidden; + transition: + opacity .2s cubic-bezier(.4, 0, .2, 1) .1s, + max-width .2s cubic-bezier(.4, 0, .2, 1), + margin-left .2s cubic-bezier(.4, 0, .2, 1), + margin-right .2s cubic-bezier(.4, 0, .2, 1); + +} + +.n-button .n-button__content { + + display: flex; + align-items: center; + flex-wrap: nowrap; + min-width: 0; + +} + +.n-button .n-button__content ~ .n-button__icon { + margin: var(--n-icon-margin); + margin-right: 0; +} + +.n-button.n-button--block { + + display: flex; + width: 100%; + +} + +.n-button.n-button--dashed .n-button__border, .n-button.n-button--dashed .n-button__state-border { + border-style: dashed !important; +} + +.n-button.n-button--disabled { + cursor: not-allowed; + opacity: var(--n-opacity-disabled); +} + +@keyframes button-wave-spread { + from { + box-shadow: 0 0 0.5px 0 var(--n-ripple-color); + } + to { + box-shadow: 0 0 0.5px 4.5px var(--n-ripple-color); + } +} + +@keyframes button-wave-opacity { + from { + opacity: var(--n-wave-opacity); + } + to { + opacity: 0; + } +} + +/* modal/src/styles/index.cssr.mjs */ +.n-modal-container { + + position: fixed; + left: 0; + top: 0; + height: 0; + width: 0; + display: flex; + +} + +.n-modal-mask { + + position: fixed; + left: 0; + right: 0; + top: 0; + bottom: 0; + background-color: rgba(0, 0, 0, .4); + +} + +.n-modal-mask.fade-in-transition-enter-active { + transition: all .25s var(--n-bezier-ease-out)!important; +} + +.n-modal-mask.fade-in-transition-leave-active { + transition: all .25s var(--n-bezier-ease-out)!important; +} + +.n-modal-mask.fade-in-transition-enter-from, .n-modal-mask.fade-in-transition-leave-to { + opacity: 0; +} + +.n-modal-mask.fade-in-transition-leave-from, .n-modal-mask.fade-in-transition-enter-to { + opacity: 1; +} + +.n-modal-body-wrapper { + + position: fixed; + left: 0; + right: 0; + top: 0; + bottom: 0; + overflow: visible; + +} + +.n-modal-body-wrapper .n-modal-scroll-content { + + min-height: 100%; + display: flex; + position: relative; + +} + +.n-modal-body-wrapper.n-modal-body-wrapper--mask-hidden { +pointer-events: none; +} + +.n-modal-body-wrapper.n-modal-body-wrapper--mask-hidden .n-modal-scroll-content > * { + + pointer-events: all; + +} + +.n-modal { + + position: relative; + align-self: center; + color: var(--n-text-color); + margin: auto; + box-shadow: var(--n-box-shadow); + +} + +.n-modal.fade-in-scale-up-transition-leave-active { + transform-origin: inherit; + transition: opacity .25s cubic-bezier(.4, 0, 1, 1), transform .25s cubic-bezier(.4, 0, 1, 1) ; +} + +.n-modal.fade-in-scale-up-transition-enter-active { + transform-origin: inherit; + transition: opacity .25s cubic-bezier(0, 0, .2, 1), transform .25s cubic-bezier(0, 0, .2, 1) ; +} + +.n-modal.fade-in-scale-up-transition-enter-from, .n-modal.fade-in-scale-up-transition-leave-to { + opacity: 0; + transform: scale(.5); +} + +.n-modal.fade-in-scale-up-transition-leave-from, .n-modal.fade-in-scale-up-transition-enter-to { + opacity: 1; + transform: scale(1); +} + +.n-modal .n-draggable { + + cursor: move; + user-select: none; + +} + +/* message/src/styles/index.cssr.mjs */ +.n-message-wrapper { + + margin: var(--n-margin); + z-index: 0; + transform-origin: top center; + display: flex; + +} + +.n-message-wrapper.fade-in-height-expand-transition-leave-from, .n-message-wrapper.fade-in-height-expand-transition-enter-to { + transform: scale(1); + opacity: 1; +} + +.n-message-wrapper.fade-in-height-expand-transition-leave-to, .n-message-wrapper.fade-in-height-expand-transition-enter-from { + transform: scale(0.85); + opacity: 0; + margin-top: 0 !important; + margin-bottom: 0 !important; +} + +.n-message-wrapper.fade-in-height-expand-transition-leave-active { + + overflow: visible; + transition: + max-height .3s cubic-bezier(.4, 0, .2, 1) 0s, + opacity .3s cubic-bezier(0, 0, .2, 1) 0s, + margin-top .3s cubic-bezier(.4, 0, .2, 1) 0s, + margin-bottom .3s cubic-bezier(.4, 0, .2, 1) 0s, + padding-top .3s cubic-bezier(.4, 0, .2, 1) 0s, + padding-bottom .3s cubic-bezier(.4, 0, .2, 1) 0s + ,transform .3s var(--n-bezier) + +} + +.n-message-wrapper.fade-in-height-expand-transition-enter-active { + + overflow: visible; + transition: + max-height .3s cubic-bezier(.4, 0, .2, 1), + opacity .3s cubic-bezier(.4, 0, 1, 1), + margin-top .3s cubic-bezier(.4, 0, .2, 1), + margin-bottom .3s cubic-bezier(.4, 0, .2, 1), + padding-top .3s cubic-bezier(.4, 0, .2, 1), + padding-bottom .3s cubic-bezier(.4, 0, .2, 1) + ,transform .3s var(--n-bezier) + +} + +.n-message { + + box-sizing: border-box; + display: flex; + align-items: center; + transition: + color .3s var(--n-bezier), + box-shadow .3s var(--n-bezier), + background-color .3s var(--n-bezier), + opacity .3s var(--n-bezier), + transform .3s var(--n-bezier), + margin-bottom .3s var(--n-bezier); + padding: var(--n-padding); + border-radius: var(--n-border-radius); + border: var(--n-border); + flex-wrap: nowrap; + overflow: hidden; + max-width: var(--n-max-width); + color: var(--n-text-color); + background-color: var(--n-color); + box-shadow: var(--n-box-shadow); + +} + +.n-message .n-message__content { + + display: inline-block; + line-height: var(--n-line-height); + font-size: var(--n-font-size); + +} + +.n-message .n-message__icon { + + position: relative; + margin: var(--n-icon-margin); + height: var(--n-icon-size); + width: var(--n-icon-size); + font-size: var(--n-icon-size); + flex-shrink: 0; + +} + +.n-message .n-message__icon.n-message__icon--default-type > * { + + color: var(--n-icon-color-default); + transition: color .3s var(--n-bezier); + +} + +.n-message .n-message__icon.n-message__icon--info-type > * { + + color: var(--n-icon-color-info); + transition: color .3s var(--n-bezier); + +} + +.n-message .n-message__icon.n-message__icon--success-type > * { + + color: var(--n-icon-color-success); + transition: color .3s var(--n-bezier); + +} + +.n-message .n-message__icon.n-message__icon--warning-type > * { + + color: var(--n-icon-color-warning); + transition: color .3s var(--n-bezier); + +} + +.n-message .n-message__icon.n-message__icon--error-type > * { + + color: var(--n-icon-color-error); + transition: color .3s var(--n-bezier); + +} + +.n-message .n-message__icon.n-message__icon--loading-type > * { + + color: var(--n-icon-color-loading); + transition: color .3s var(--n-bezier); + +} + +.n-message .n-message__icon > * { + + position: absolute; + left: 0; + top: 0; + right: 0; + bottom: 0; + +} + +.n-message .n-message__icon > *.icon-switch-transition-enter-from, .n-message .n-message__icon > *.icon-switch-transition-leave-to { + transform: scale(0.75); + left: 0; + top: 0; + opacity: 0; +} + +.n-message .n-message__icon > *.icon-switch-transition-enter-to, .n-message .n-message__icon > *.icon-switch-transition-leave-from { + transform: scale(1) ; + left: 0; + top: 0; + opacity: 1; +} + +.n-message .n-message__icon > *.icon-switch-transition-enter-active, .n-message .n-message__icon > *.icon-switch-transition-leave-active { + transform-origin: center; + position: absolute; + left: 0; + top: 0; + transition: all .3s cubic-bezier(.4, 0, .2, 1) !important; +} + +.n-message .n-message__close { + + margin: var(--n-close-margin); + transition: + background-color .3s var(--n-bezier), + color .3s var(--n-bezier); + flex-shrink: 0; + +} + +.n-message .n-message__close:hover { + + color: var(--n-close-icon-color-hover); + +} + +.n-message .n-message__close:active { + + color: var(--n-close-icon-color-pressed); + +} + +.n-message-container { + + z-index: 6000; + position: fixed; + height: 0; + overflow: visible; + display: flex; + flex-direction: column; + align-items: center; + +} + +.n-message-container.n-message-container--top { + + top: 12px; + left: 0; + right: 0; + +} + +.n-message-container.n-message-container--top-left { + + top: 12px; + left: 12px; + right: 0; + align-items: flex-start; + +} + +.n-message-container.n-message-container--top-right { + + top: 12px; + left: 0; + right: 12px; + align-items: flex-end; + +} + +.n-message-container.n-message-container--bottom { + + bottom: 4px; + left: 0; + right: 0; + justify-content: flex-end; + +} + +.n-message-container.n-message-container--bottom-left { + + bottom: 4px; + left: 12px; + right: 0; + justify-content: flex-end; + align-items: flex-start; + +} + +.n-message-container.n-message-container--bottom-right { + + bottom: 4px; + left: 0; + right: 12px; + justify-content: flex-end; + align-items: flex-end; + +} + +/* notification/src/styles/index.cssr.mjs */ +.n-notification-container { + + z-index: 4000; + position: fixed; + overflow: visible; + display: flex; + flex-direction: column; + align-items: flex-end; + +} + +.n-notification-container > .n-scrollbar { + + width: initial; + overflow: visible; + height: -moz-fit-content !important; + height: fit-content !important; + max-height: 100vh !important; + +} + +.n-notification-container > .n-scrollbar > .n-scrollbar-container { + + height: -moz-fit-content !important; + height: fit-content !important; + max-height: 100vh !important; + +} + +.n-notification-container > .n-scrollbar > .n-scrollbar-container .n-scrollbar-content { + + padding-top: 12px; + padding-bottom: 33px; + +} + +.n-notification-container.n-notification-container--top, .n-notification-container.n-notification-container--top-right, .n-notification-container.n-notification-container--top-left { + + top: 12px; + +} + +.n-notification-container.n-notification-container--top.transitioning > .n-scrollbar > .n-scrollbar-container, .n-notification-container.n-notification-container--top-right.transitioning > .n-scrollbar > .n-scrollbar-container, .n-notification-container.n-notification-container--top-left.transitioning > .n-scrollbar > .n-scrollbar-container { + + min-height: 100vh !important; + +} + +.n-notification-container.n-notification-container--bottom, .n-notification-container.n-notification-container--bottom-right, .n-notification-container.n-notification-container--bottom-left { + + bottom: 12px; + +} + +.n-notification-container.n-notification-container--bottom > .n-scrollbar > .n-scrollbar-container .n-scrollbar-content, .n-notification-container.n-notification-container--bottom-right > .n-scrollbar > .n-scrollbar-container .n-scrollbar-content, .n-notification-container.n-notification-container--bottom-left > .n-scrollbar > .n-scrollbar-container .n-scrollbar-content { + + padding-bottom: 12px; + +} + +.n-notification-container.n-notification-container--bottom .n-notification-wrapper, .n-notification-container.n-notification-container--bottom-right .n-notification-wrapper, .n-notification-container.n-notification-container--bottom-left .n-notification-wrapper { + + display: flex; + align-items: flex-end; + margin-bottom: 0; + margin-top: 12px; + +} + +.n-notification-container.n-notification-container--top, .n-notification-container.n-notification-container--bottom { + + left: 50%; + transform: translateX(-50%); + +} + +.n-notification-container.n-notification-container--top .n-notification-wrapper.notification-transition-enter-from, .n-notification-container.n-notification-container--bottom .n-notification-wrapper.notification-transition-enter-from, .n-notification-container.n-notification-container--top .n-notification-wrapper.notification-transition-leave-to, .n-notification-container.n-notification-container--bottom .n-notification-wrapper.notification-transition-leave-to { + + transform: scale(0.85); + +} + +.n-notification-container.n-notification-container--top .n-notification-wrapper.notification-transition-leave-from, .n-notification-container.n-notification-container--bottom .n-notification-wrapper.notification-transition-leave-from, .n-notification-container.n-notification-container--top .n-notification-wrapper.notification-transition-enter-to, .n-notification-container.n-notification-container--bottom .n-notification-wrapper.notification-transition-enter-to { + + transform: scale(1); + +} + +.n-notification-container.n-notification-container--top .n-notification-wrapper { + + transform-origin: top center; + +} + +.n-notification-container.n-notification-container--bottom .n-notification-wrapper { + + transform-origin: bottom center; + +} + +.n-notification-container.n-notification-container--top-right .n-notification, .n-notification-container.n-notification-container--bottom-right .n-notification { + + margin-left: 28px; + margin-right: 16px; + +} + +.n-notification-container.n-notification-container--top-left .n-notification, .n-notification-container.n-notification-container--bottom-left .n-notification { + + margin-left: 16px; + margin-right: 28px; + +} + +.n-notification-container.n-notification-container--top-right { + + right: 0; + +} + +.n-notification-container.n-notification-container--top-right .n-notification-wrapper.notification-transition-enter-from, .n-notification-container.n-notification-container--top-right .n-notification-wrapper.notification-transition-leave-to { + + transform: translate(calc(100%), 0); + +} + +.n-notification-container.n-notification-container--top-right .n-notification-wrapper.notification-transition-leave-from, .n-notification-container.n-notification-container--top-right .n-notification-wrapper.notification-transition-enter-to { + + transform: translate(0, 0); + +} + +.n-notification-container.n-notification-container--top-left { + + left: 0; + +} + +.n-notification-container.n-notification-container--top-left .n-notification-wrapper.notification-transition-enter-from, .n-notification-container.n-notification-container--top-left .n-notification-wrapper.notification-transition-leave-to { + + transform: translate(calc(-100%), 0); + +} + +.n-notification-container.n-notification-container--top-left .n-notification-wrapper.notification-transition-leave-from, .n-notification-container.n-notification-container--top-left .n-notification-wrapper.notification-transition-enter-to { + + transform: translate(0, 0); + +} + +.n-notification-container.n-notification-container--bottom-right { + + right: 0; + +} + +.n-notification-container.n-notification-container--bottom-right .n-notification-wrapper.notification-transition-enter-from, .n-notification-container.n-notification-container--bottom-right .n-notification-wrapper.notification-transition-leave-to { + + transform: translate(calc(100%), 0); + +} + +.n-notification-container.n-notification-container--bottom-right .n-notification-wrapper.notification-transition-leave-from, .n-notification-container.n-notification-container--bottom-right .n-notification-wrapper.notification-transition-enter-to { + + transform: translate(0, 0); + +} + +.n-notification-container.n-notification-container--bottom-left { + + left: 0; + +} + +.n-notification-container.n-notification-container--bottom-left .n-notification-wrapper.notification-transition-enter-from, .n-notification-container.n-notification-container--bottom-left .n-notification-wrapper.notification-transition-leave-to { + + transform: translate(calc(-100%), 0); + +} + +.n-notification-container.n-notification-container--bottom-left .n-notification-wrapper.notification-transition-leave-from, .n-notification-container.n-notification-container--bottom-left .n-notification-wrapper.notification-transition-enter-to { + + transform: translate(0, 0); + +} + +.n-notification-container.n-notification-container--scrollable.n-notification-container--top-right { + + top: 0; + +} + +.n-notification-container.n-notification-container--scrollable.n-notification-container--top-left { + + top: 0; + +} + +.n-notification-container.n-notification-container--scrollable.n-notification-container--bottom-right { + + bottom: 0; + +} + +.n-notification-container.n-notification-container--scrollable.n-notification-container--bottom-left { + + bottom: 0; + +} + +.n-notification-container .n-notification-wrapper { + + margin-bottom: 12px; + +} + +.n-notification-container .n-notification-wrapper.notification-transition-enter-from, .n-notification-container .n-notification-wrapper.notification-transition-leave-to { + + opacity: 0; + margin-top: 0 !important; + margin-bottom: 0 !important; + +} + +.n-notification-container .n-notification-wrapper.notification-transition-leave-from, .n-notification-container .n-notification-wrapper.notification-transition-enter-to { + + opacity: 1; + +} + +.n-notification-container .n-notification-wrapper.notification-transition-leave-active { + + transition: + background-color .3s var(--n-bezier), + color .3s var(--n-bezier), + opacity .3s var(--n-bezier), + transform .3s var(--n-bezier-ease-in), + max-height .3s var(--n-bezier), + margin-top .3s linear, + margin-bottom .3s linear, + box-shadow .3s var(--n-bezier); + +} + +.n-notification-container .n-notification-wrapper.notification-transition-enter-active { + + transition: + background-color .3s var(--n-bezier), + color .3s var(--n-bezier), + opacity .3s var(--n-bezier), + transform .3s var(--n-bezier-ease-out), + max-height .3s var(--n-bezier), + margin-top .3s linear, + margin-bottom .3s linear, + box-shadow .3s var(--n-bezier); + +} + +.n-notification-container .n-notification { + + background-color: var(--n-color); + color: var(--n-text-color); + transition: + background-color .3s var(--n-bezier), + color .3s var(--n-bezier), + opacity .3s var(--n-bezier), + box-shadow .3s var(--n-bezier); + font-family: inherit; + font-size: var(--n-font-size); + font-weight: 400; + position: relative; + display: flex; + overflow: hidden; + flex-shrink: 0; + padding-left: var(--n-padding-left); + padding-right: var(--n-padding-right); + width: var(--n-width); + max-width: calc(100vw - 16px - 16px); + border-radius: var(--n-border-radius); + box-shadow: var(--n-box-shadow); + box-sizing: border-box; + opacity: 1; + +} + +.n-notification-container .n-notification .n-notification__avatar .n-icon { + + color: var(--n-icon-color); + +} + +.n-notification-container .n-notification .n-notification__avatar .n-base-icon { + + color: var(--n-icon-color); + +} + +.n-notification-container .n-notification.n-notification--show-avatar .n-notification-main { + + margin-left: 40px; + width: calc(100% - 40px); + +} + +.n-notification-container .n-notification.n-notification--closable .n-notification-main > *:first-child { + + padding-right: 20px; + +} + +.n-notification-container .n-notification.n-notification--closable .n-notification__close { + + position: absolute; + top: 0; + right: 0; + margin: var(--n-close-margin); + transition: + background-color .3s var(--n-bezier), + color .3s var(--n-bezier); + +} + +.n-notification-container .n-notification .n-notification__avatar { + + position: absolute; + top: var(--n-padding-top); + left: var(--n-padding-left); + width: 28px; + height: 28px; + font-size: 28px; + display: flex; + align-items: center; + justify-content: center; + +} + +.n-notification-container .n-notification .n-notification__avatar .n-icon { +transition: color .3s var(--n-bezier); +} + +.n-notification-container .n-notification .n-notification-main { + + padding-top: var(--n-padding-top); + padding-bottom: var(--n-padding-bottom); + box-sizing: border-box; + display: flex; + flex-direction: column; + margin-left: 8px; + width: calc(100% - 8px); + +} + +.n-notification-container .n-notification .n-notification-main .n-notification-main-footer { + + display: flex; + align-items: center; + justify-content: space-between; + margin-top: 12px; + +} + +.n-notification-container .n-notification .n-notification-main .n-notification-main-footer .n-notification-main-footer__meta { + + font-size: var(--n-meta-font-size); + transition: color .3s var(--n-bezier-ease-out); + color: var(--n-description-text-color); + +} + +.n-notification-container .n-notification .n-notification-main .n-notification-main-footer .n-notification-main-footer__action { + + cursor: pointer; + transition: color .3s var(--n-bezier-ease-out); + color: var(--n-action-text-color); + +} + +.n-notification-container .n-notification .n-notification-main .n-notification-main__header { + + font-weight: var(--n-title-font-weight); + font-size: var(--n-title-font-size); + transition: color .3s var(--n-bezier-ease-out); + color: var(--n-title-text-color); + +} + +.n-notification-container .n-notification .n-notification-main .n-notification-main__description { + + margin-top: 8px; + font-size: var(--n-description-font-size); + white-space: pre-wrap; + word-wrap: break-word; + transition: color .3s var(--n-bezier-ease-out); + color: var(--n-description-text-color); + +} + +.n-notification-container .n-notification .n-notification-main .n-notification-main__content { + + line-height: var(--n-line-height); + margin: 12px 0 0 0; + font-family: inherit; + white-space: pre-wrap; + word-wrap: break-word; + transition: color .3s var(--n-bezier-ease-out); + color: var(--n-text-color); + +} + +.n-notification-container .n-notification .n-notification-main .n-notification-main__content:first-child { +margin: 0; +} + +/* popconfirm/src/styles/index.cssr.mjs */ +.n-popconfirm .n-popconfirm__body { + + font-size: var(--n-font-size); + display: flex; + align-items: center; + flex-wrap: nowrap; + position: relative; + +} + +.n-popconfirm .n-popconfirm__body .n-popconfirm__icon { + + display: flex; + font-size: var(--n-icon-size); + color: var(--n-icon-color); + transition: color .3s var(--n-bezier); + margin: 0 8px 0 0; + +} + +.n-popconfirm .n-popconfirm__action { + + display: flex; + justify-content: flex-end; + +} + +.n-popconfirm .n-popconfirm__action:not(:first-child) { +margin-top: 8px +} + +.n-popconfirm .n-popconfirm__action .n-button:not(:last-child) { +margin-right: 8px; +} + +/* popover/src/styles/index.cssr.mjs */ +.n-popover { + + transition: + box-shadow .3s var(--n-bezier), + background-color .3s var(--n-bezier), + color .3s var(--n-bezier); + position: relative; + font-size: var(--n-font-size); + color: var(--n-text-color); + box-shadow: var(--n-box-shadow); + word-break: break-word; + +} + +.n-popover > .n-scrollbar { + + height: inherit; + max-height: inherit; + +} + +.n-popover:not(.n-popover--raw) { + + background-color: var(--n-color); + border-radius: var(--n-border-radius); + +} + +.n-popover:not(.n-popover--raw):not(.n-popover--scrollable):not(.n-popover--show-header-or-footer) { +padding: var(--n-padding); +} + +.n-popover .n-popover__header { + + padding: var(--n-padding); + border-bottom: 1px solid var(--n-divider-color); + transition: border-color .3s var(--n-bezier); + +} + +.n-popover .n-popover__footer { + + padding: var(--n-padding); + border-top: 1px solid var(--n-divider-color); + transition: border-color .3s var(--n-bezier); + +} + +.n-popover.n-popover--scrollable .n-popover__content, .n-popover.n-popover--show-header-or-footer .n-popover__content { + + padding: var(--n-padding); + +} + +.n-popover-shared { + + transform-origin: inherit; + +} + +.n-popover-shared .n-popover-arrow-wrapper { + + position: absolute; + overflow: hidden; + pointer-events: none; + +} + +.n-popover-shared .n-popover-arrow-wrapper .n-popover-arrow { + + transition: background-color .3s var(--n-bezier); + position: absolute; + display: block; + width: calc(var(--n-arrow-height) * 1.414); + height: calc(var(--n-arrow-height) * 1.414); + box-shadow: 0 0 8px 0 rgba(0, 0, 0, .12); + transform: rotate(45deg); + background-color: var(--n-color); + pointer-events: all; + +} + +.n-popover-shared.popover-transition-enter-from, .n-popover-shared.popover-transition-leave-to { + + opacity: 0; + transform: scale(.85); + +} + +.n-popover-shared.popover-transition-enter-to, .n-popover-shared.popover-transition-leave-from { + + transform: scale(1); + opacity: 1; + +} + +.n-popover-shared.popover-transition-enter-active { + + transition: + box-shadow .3s var(--n-bezier), + background-color .3s var(--n-bezier), + color .3s var(--n-bezier), + opacity .15s var(--n-bezier-ease-out), + transform .15s var(--n-bezier-ease-out); + +} + +.n-popover-shared.popover-transition-leave-active { + + transition: + box-shadow .3s var(--n-bezier), + background-color .3s var(--n-bezier), + color .3s var(--n-bezier), + opacity .15s var(--n-bezier-ease-in), + transform .15s var(--n-bezier-ease-in); + +} + +[v-placement="top-start"] > .n-popover-shared { + + margin-bottom: var(--n-space); + +} + +[v-placement="top-start"] > .n-popover-shared.n-popover-shared--show-arrow { + + margin-bottom: var(--n-space-arrow); + +} + +[v-placement="top-start"] > .n-popover-shared.n-popover-shared--overlap { + + margin: 0; + +} + +[v-placement="top-start"] > .n-popover-shared > .n-popover-arrow-wrapper { + + right: 0; + left: 0; + top: 0; + bottom: 0; + top: 100%; + bottom: auto; + height: var(--n-space-arrow); + +} + +[v-placement="top-start"] > .n-popover-shared > .n-popover-arrow-wrapper .n-popover-arrow { + + top: calc(var(--n-arrow-height) * 1.414 / -2); + left: calc(var(--n-arrow-offset) - var(--v-offset-left)); + +} + +[v-placement="top"] > .n-popover-shared { + + margin-bottom: var(--n-space); + +} + +[v-placement="top"] > .n-popover-shared.n-popover-shared--show-arrow { + + margin-bottom: var(--n-space-arrow); + +} + +[v-placement="top"] > .n-popover-shared.n-popover-shared--overlap { + + margin: 0; + +} + +[v-placement="top"] > .n-popover-shared > .n-popover-arrow-wrapper { + + right: 0; + left: 0; + top: 0; + bottom: 0; + top: 100%; + bottom: auto; + height: var(--n-space-arrow); + +} + +[v-placement="top"] > .n-popover-shared > .n-popover-arrow-wrapper .n-popover-arrow { + + top: calc(var(--n-arrow-height) * 1.414 / -2); + transform: translateX(calc(var(--n-arrow-height) * 1.414 / -2)) rotate(45deg); + left: 50%; + +} + +[v-placement="top-end"] > .n-popover-shared { + + margin-bottom: var(--n-space); + +} + +[v-placement="top-end"] > .n-popover-shared.n-popover-shared--show-arrow { + + margin-bottom: var(--n-space-arrow); + +} + +[v-placement="top-end"] > .n-popover-shared.n-popover-shared--overlap { + + margin: 0; + +} + +[v-placement="top-end"] > .n-popover-shared > .n-popover-arrow-wrapper { + + right: 0; + left: 0; + top: 0; + bottom: 0; + top: 100%; + bottom: auto; + height: var(--n-space-arrow); + +} + +[v-placement="top-end"] > .n-popover-shared > .n-popover-arrow-wrapper .n-popover-arrow { + + top: calc(var(--n-arrow-height) * 1.414 / -2); + right: calc(var(--n-arrow-offset) + var(--v-offset-left)); + +} + +[v-placement="bottom-start"] > .n-popover-shared { + + margin-top: var(--n-space); + +} + +[v-placement="bottom-start"] > .n-popover-shared.n-popover-shared--show-arrow { + + margin-top: var(--n-space-arrow); + +} + +[v-placement="bottom-start"] > .n-popover-shared.n-popover-shared--overlap { + + margin: 0; + +} + +[v-placement="bottom-start"] > .n-popover-shared > .n-popover-arrow-wrapper { + + right: 0; + left: 0; + top: 0; + bottom: 0; + bottom: 100%; + top: auto; + height: var(--n-space-arrow); + +} + +[v-placement="bottom-start"] > .n-popover-shared > .n-popover-arrow-wrapper .n-popover-arrow { + + bottom: calc(var(--n-arrow-height) * 1.414 / -2); + left: calc(var(--n-arrow-offset) - var(--v-offset-left)); + +} + +[v-placement="bottom"] > .n-popover-shared { + + margin-top: var(--n-space); + +} + +[v-placement="bottom"] > .n-popover-shared.n-popover-shared--show-arrow { + + margin-top: var(--n-space-arrow); + +} + +[v-placement="bottom"] > .n-popover-shared.n-popover-shared--overlap { + + margin: 0; + +} + +[v-placement="bottom"] > .n-popover-shared > .n-popover-arrow-wrapper { + + right: 0; + left: 0; + top: 0; + bottom: 0; + bottom: 100%; + top: auto; + height: var(--n-space-arrow); + +} + +[v-placement="bottom"] > .n-popover-shared > .n-popover-arrow-wrapper .n-popover-arrow { + + bottom: calc(var(--n-arrow-height) * 1.414 / -2); + transform: translateX(calc(var(--n-arrow-height) * 1.414 / -2)) rotate(45deg); + left: 50%; + +} + +[v-placement="bottom-end"] > .n-popover-shared { + + margin-top: var(--n-space); + +} + +[v-placement="bottom-end"] > .n-popover-shared.n-popover-shared--show-arrow { + + margin-top: var(--n-space-arrow); + +} + +[v-placement="bottom-end"] > .n-popover-shared.n-popover-shared--overlap { + + margin: 0; + +} + +[v-placement="bottom-end"] > .n-popover-shared > .n-popover-arrow-wrapper { + + right: 0; + left: 0; + top: 0; + bottom: 0; + bottom: 100%; + top: auto; + height: var(--n-space-arrow); + +} + +[v-placement="bottom-end"] > .n-popover-shared > .n-popover-arrow-wrapper .n-popover-arrow { + + bottom: calc(var(--n-arrow-height) * 1.414 / -2); + right: calc(var(--n-arrow-offset) + var(--v-offset-left)); + +} + +[v-placement="left-start"] > .n-popover-shared { + + margin-right: var(--n-space); + +} + +[v-placement="left-start"] > .n-popover-shared.n-popover-shared--show-arrow { + + margin-right: var(--n-space-arrow); + +} + +[v-placement="left-start"] > .n-popover-shared.n-popover-shared--overlap { + + margin: 0; + +} + +[v-placement="left-start"] > .n-popover-shared > .n-popover-arrow-wrapper { + + right: 0; + left: 0; + top: 0; + bottom: 0; + left: 100%; + right: auto; + width: var(--n-space-arrow); + +} + +[v-placement="left-start"] > .n-popover-shared > .n-popover-arrow-wrapper .n-popover-arrow { + + left: calc(var(--n-arrow-height) * 1.414 / -2); + top: calc(var(--n-arrow-offset-vertical) - var(--v-offset-top)); + +} + +[v-placement="left"] > .n-popover-shared { + + margin-right: var(--n-space); + +} + +[v-placement="left"] > .n-popover-shared.n-popover-shared--show-arrow { + + margin-right: var(--n-space-arrow); + +} + +[v-placement="left"] > .n-popover-shared.n-popover-shared--overlap { + + margin: 0; + +} + +[v-placement="left"] > .n-popover-shared > .n-popover-arrow-wrapper { + + right: 0; + left: 0; + top: 0; + bottom: 0; + left: 100%; + right: auto; + width: var(--n-space-arrow); + +} + +[v-placement="left"] > .n-popover-shared > .n-popover-arrow-wrapper .n-popover-arrow { + + left: calc(var(--n-arrow-height) * 1.414 / -2); + transform: translateY(calc(var(--n-arrow-height) * 1.414 / -2)) rotate(45deg); + top: 50%; + +} + +[v-placement="left-end"] > .n-popover-shared { + + margin-right: var(--n-space); + +} + +[v-placement="left-end"] > .n-popover-shared.n-popover-shared--show-arrow { + + margin-right: var(--n-space-arrow); + +} + +[v-placement="left-end"] > .n-popover-shared.n-popover-shared--overlap { + + margin: 0; + +} + +[v-placement="left-end"] > .n-popover-shared > .n-popover-arrow-wrapper { + + right: 0; + left: 0; + top: 0; + bottom: 0; + left: 100%; + right: auto; + width: var(--n-space-arrow); + +} + +[v-placement="left-end"] > .n-popover-shared > .n-popover-arrow-wrapper .n-popover-arrow { + + left: calc(var(--n-arrow-height) * 1.414 / -2); + bottom: calc(var(--n-arrow-offset-vertical) + var(--v-offset-top)); + +} + +[v-placement="right-start"] > .n-popover-shared { + + margin-left: var(--n-space); + +} + +[v-placement="right-start"] > .n-popover-shared.n-popover-shared--show-arrow { + + margin-left: var(--n-space-arrow); + +} + +[v-placement="right-start"] > .n-popover-shared.n-popover-shared--overlap { + + margin: 0; + +} + +[v-placement="right-start"] > .n-popover-shared > .n-popover-arrow-wrapper { + + right: 0; + left: 0; + top: 0; + bottom: 0; + right: 100%; + left: auto; + width: var(--n-space-arrow); + +} + +[v-placement="right-start"] > .n-popover-shared > .n-popover-arrow-wrapper .n-popover-arrow { + + right: calc(var(--n-arrow-height) * 1.414 / -2); + top: calc(var(--n-arrow-offset-vertical) - var(--v-offset-top)); + +} + +[v-placement="right"] > .n-popover-shared { + + margin-left: var(--n-space); + +} + +[v-placement="right"] > .n-popover-shared.n-popover-shared--show-arrow { + + margin-left: var(--n-space-arrow); + +} + +[v-placement="right"] > .n-popover-shared.n-popover-shared--overlap { + + margin: 0; + +} + +[v-placement="right"] > .n-popover-shared > .n-popover-arrow-wrapper { + + right: 0; + left: 0; + top: 0; + bottom: 0; + right: 100%; + left: auto; + width: var(--n-space-arrow); + +} + +[v-placement="right"] > .n-popover-shared > .n-popover-arrow-wrapper .n-popover-arrow { + + right: calc(var(--n-arrow-height) * 1.414 / -2); + transform: translateY(calc(var(--n-arrow-height) * 1.414 / -2)) rotate(45deg); + top: 50%; + +} + +[v-placement="right-end"] > .n-popover-shared { + + margin-left: var(--n-space); + +} + +[v-placement="right-end"] > .n-popover-shared.n-popover-shared--show-arrow { + + margin-left: var(--n-space-arrow); + +} + +[v-placement="right-end"] > .n-popover-shared.n-popover-shared--overlap { + + margin: 0; + +} + +[v-placement="right-end"] > .n-popover-shared > .n-popover-arrow-wrapper { + + right: 0; + left: 0; + top: 0; + bottom: 0; + right: 100%; + left: auto; + width: var(--n-space-arrow); + +} + +[v-placement="right-end"] > .n-popover-shared > .n-popover-arrow-wrapper .n-popover-arrow { + + right: calc(var(--n-arrow-height) * 1.414 / -2); + bottom: calc(var(--n-arrow-offset-vertical) + var(--v-offset-top)); + +} + +[v-placement="right-start"] > .n-popover-shared.n-popover-shared--center-arrow .n-popover-arrow { +top: calc(max(calc((var(--v-target-height, 0px) - var(--n-arrow-height) * 1.414) / 2), var(--n-arrow-offset-vertical)) - var(--v-offset-top)); +} + +[v-placement="left-start"] > .n-popover-shared.n-popover-shared--center-arrow .n-popover-arrow { +top: calc(max(calc((var(--v-target-height, 0px) - var(--n-arrow-height) * 1.414) / 2), var(--n-arrow-offset-vertical)) - var(--v-offset-top)); +} + +[v-placement="top-end"] > .n-popover-shared.n-popover-shared--center-arrow .n-popover-arrow { +right: calc(max(calc((var(--v-target-width, 0px) - var(--n-arrow-height) * 1.414) / 2), var(--n-arrow-offset)) + var(--v-offset-left)); +} + +[v-placement="bottom-end"] > .n-popover-shared.n-popover-shared--center-arrow .n-popover-arrow { +right: calc(max(calc((var(--v-target-width, 0px) - var(--n-arrow-height) * 1.414) / 2), var(--n-arrow-offset)) + var(--v-offset-left)); +} + +[v-placement="right-end"] > .n-popover-shared.n-popover-shared--center-arrow .n-popover-arrow { +bottom: calc(max(calc((var(--v-target-height, 0px) - var(--n-arrow-height) * 1.414) / 2), var(--n-arrow-offset-vertical)) + var(--v-offset-top)); +} + +[v-placement="left-end"] > .n-popover-shared.n-popover-shared--center-arrow .n-popover-arrow { +bottom: calc(max(calc((var(--v-target-height, 0px) - var(--n-arrow-height) * 1.414) / 2), var(--n-arrow-offset-vertical)) + var(--v-offset-top)); +} + +[v-placement="top-start"] > .n-popover-shared.n-popover-shared--center-arrow .n-popover-arrow { +left: calc(max(calc((var(--v-target-width, 0px) - var(--n-arrow-height) * 1.414) / 2), var(--n-arrow-offset)) - var(--v-offset-left)); +} + +[v-placement="bottom-start"] > .n-popover-shared.n-popover-shared--center-arrow .n-popover-arrow { +left: calc(max(calc((var(--v-target-width, 0px) - var(--n-arrow-height) * 1.414) / 2), var(--n-arrow-offset)) - var(--v-offset-left)); +} + +/* dropdown/src/styles/index.cssr.mjs */ +.n-dropdown-menu { + + transform-origin: var(--v-transform-origin); + background-color: var(--n-color); + border-radius: var(--n-border-radius); + box-shadow: var(--n-box-shadow); + position: relative; + transition: + background-color .3s var(--n-bezier), + box-shadow .3s var(--n-bezier); + +} + +.n-dropdown-menu.fade-in-scale-up-transition-leave-active { + transform-origin: inherit; + transition: opacity .2s cubic-bezier(.4, 0, 1, 1), transform .2s cubic-bezier(.4, 0, 1, 1) ; +} + +.n-dropdown-menu.fade-in-scale-up-transition-enter-active { + transform-origin: inherit; + transition: opacity .2s cubic-bezier(0, 0, .2, 1), transform .2s cubic-bezier(0, 0, .2, 1) ; +} + +.n-dropdown-menu.fade-in-scale-up-transition-enter-from, .n-dropdown-menu.fade-in-scale-up-transition-leave-to { + opacity: 0; + transform: scale(.9); +} + +.n-dropdown-menu.fade-in-scale-up-transition-leave-from, .n-dropdown-menu.fade-in-scale-up-transition-enter-to { + opacity: 1; + transform: scale(1); +} + +.n-dropdown-menu .n-dropdown-option { + + position: relative; + +} + +.n-dropdown-menu .n-dropdown-option a { + + text-decoration: none; + color: inherit; + outline: none; + +} + +.n-dropdown-menu .n-dropdown-option a::before { + + content: ""; + position: absolute; + left: 0; + right: 0; + top: 0; + bottom: 0; + +} + +.n-dropdown-menu .n-dropdown-option .n-dropdown-option-body { + + display: flex; + cursor: pointer; + position: relative; + height: var(--n-option-height); + line-height: var(--n-option-height); + font-size: var(--n-font-size); + color: var(--n-option-text-color); + transition: color .3s var(--n-bezier); + +} + +.n-dropdown-menu .n-dropdown-option .n-dropdown-option-body::before { + + content: ""; + position: absolute; + top: 0; + bottom: 0; + left: 4px; + right: 4px; + transition: background-color .3s var(--n-bezier); + border-radius: var(--n-border-radius); + +} + +.n-dropdown-menu .n-dropdown-option .n-dropdown-option-body:not(.n-dropdown-option-body--disabled).n-dropdown-option-body--pending { + + color: var(--n-option-text-color-hover); + +} + +.n-dropdown-menu .n-dropdown-option .n-dropdown-option-body:not(.n-dropdown-option-body--disabled).n-dropdown-option-body--pending .n-dropdown-option-body__prefix, .n-dropdown-menu .n-dropdown-option .n-dropdown-option-body:not(.n-dropdown-option-body--disabled).n-dropdown-option-body--pending .n-dropdown-option-body__suffix { + + color: var(--n-option-text-color-hover); + +} + +.n-dropdown-menu .n-dropdown-option .n-dropdown-option-body:not(.n-dropdown-option-body--disabled).n-dropdown-option-body--pending::before { +background-color: var(--n-option-color-hover); +} + +.n-dropdown-menu .n-dropdown-option .n-dropdown-option-body:not(.n-dropdown-option-body--disabled).n-dropdown-option-body--active { + + color: var(--n-option-text-color-active); + +} + +.n-dropdown-menu .n-dropdown-option .n-dropdown-option-body:not(.n-dropdown-option-body--disabled).n-dropdown-option-body--active .n-dropdown-option-body__prefix, .n-dropdown-menu .n-dropdown-option .n-dropdown-option-body:not(.n-dropdown-option-body--disabled).n-dropdown-option-body--active .n-dropdown-option-body__suffix { + + color: var(--n-option-text-color-active); + +} + +.n-dropdown-menu .n-dropdown-option .n-dropdown-option-body:not(.n-dropdown-option-body--disabled).n-dropdown-option-body--active::before { +background-color: var(--n-option-color-active); +} + +.n-dropdown-menu .n-dropdown-option .n-dropdown-option-body:not(.n-dropdown-option-body--disabled).n-dropdown-option-body--child-active { + + color: var(--n-option-text-color-child-active); + +} + +.n-dropdown-menu .n-dropdown-option .n-dropdown-option-body:not(.n-dropdown-option-body--disabled).n-dropdown-option-body--child-active .n-dropdown-option-body__prefix, .n-dropdown-menu .n-dropdown-option .n-dropdown-option-body:not(.n-dropdown-option-body--disabled).n-dropdown-option-body--child-active .n-dropdown-option-body__suffix { + + color: var(--n-option-text-color-child-active); + +} + +.n-dropdown-menu .n-dropdown-option .n-dropdown-option-body.n-dropdown-option-body--disabled { + + cursor: not-allowed; + opacity: var(--n-option-opacity-disabled); + +} + +.n-dropdown-menu .n-dropdown-option .n-dropdown-option-body.n-dropdown-option-body--group { + + font-size: calc(var(--n-font-size) - 1px); + color: var(--n-group-header-text-color); + +} + +.n-dropdown-menu .n-dropdown-option .n-dropdown-option-body.n-dropdown-option-body--group .n-dropdown-option-body__prefix { + + width: calc(var(--n-option-prefix-width) / 2); + +} + +.n-dropdown-menu .n-dropdown-option .n-dropdown-option-body.n-dropdown-option-body--group .n-dropdown-option-body__prefix.n-dropdown-option-body__prefix--show-icon { + + width: calc(var(--n-option-icon-prefix-width) / 2); + +} + +.n-dropdown-menu .n-dropdown-option .n-dropdown-option-body .n-dropdown-option-body__prefix { + + width: var(--n-option-prefix-width); + display: flex; + justify-content: center; + align-items: center; + color: var(--n-prefix-color); + transition: color .3s var(--n-bezier); + z-index: 1; + +} + +.n-dropdown-menu .n-dropdown-option .n-dropdown-option-body .n-dropdown-option-body__prefix.n-dropdown-option-body__prefix--show-icon { + + width: var(--n-option-icon-prefix-width); + +} + +.n-dropdown-menu .n-dropdown-option .n-dropdown-option-body .n-dropdown-option-body__prefix .n-icon { + + font-size: var(--n-option-icon-size); + +} + +.n-dropdown-menu .n-dropdown-option .n-dropdown-option-body .n-dropdown-option-body__label { + + white-space: nowrap; + flex: 1; + z-index: 1; + +} + +.n-dropdown-menu .n-dropdown-option .n-dropdown-option-body .n-dropdown-option-body__suffix { + + box-sizing: border-box; + flex-grow: 0; + flex-shrink: 0; + display: flex; + justify-content: flex-end; + align-items: center; + min-width: var(--n-option-suffix-width); + padding: 0 8px; + transition: color .3s var(--n-bezier); + color: var(--n-suffix-color); + z-index: 1; + +} + +.n-dropdown-menu .n-dropdown-option .n-dropdown-option-body .n-dropdown-option-body__suffix.n-dropdown-option-body__suffix--has-submenu { + + width: var(--n-option-icon-suffix-width); + +} + +.n-dropdown-menu .n-dropdown-option .n-dropdown-option-body .n-dropdown-option-body__suffix .n-icon { + + font-size: var(--n-option-icon-size); + +} + +.n-dropdown-menu .n-dropdown-option .n-dropdown-option-body .n-dropdown-menu { +pointer-events: all; +} + +.n-dropdown-menu .n-dropdown-option .n-dropdown-offset-container { + + pointer-events: none; + position: absolute; + left: 0; + right: 0; + top: -4px; + bottom: -4px; + +} + +.n-dropdown-menu .n-dropdown-divider { + + transition: background-color .3s var(--n-bezier); + background-color: var(--n-divider-color); + height: 1px; + margin: 4px 0; + +} + +.n-dropdown-menu .n-dropdown-menu-wrapper { + + transform-origin: var(--v-transform-origin); + width: fit-content; + +} + +.n-dropdown-menu > .n-scrollbar { + + height: inherit; + max-height: inherit; + +} + +.n-dropdown-menu:not(.n-dropdown-menu--scrollable) { + + padding: var(--n-padding); + +} + +.n-dropdown-menu.n-dropdown-menu--scrollable .n-dropdown-menu__content { + + padding: var(--n-padding); + +} + +/* icon/src/styles/index.cssr.mjs */ +.n-icon { + + height: 1em; + width: 1em; + line-height: 1em; + text-align: center; + display: inline-block; + position: relative; + fill: currentColor; + +} + +.n-icon.n-icon--color-transition { + transition: color .3s var(--n-bezier); +} + +.n-icon.n-icon--depth { + color: var(--n-color); +} + +.n-icon.n-icon--depth svg { + opacity: var(--n-opacity); + transition: opacity .3s var(--n-bezier); +} + +.n-icon svg { + height: 1em; + width: 1em; +} + +/* icon-wrapper/src/styles/index.cssr.mjs */ +.n-icon-wrapper { + + transition: + color .3s var(--n-bezier), + background-color .3s var(--n-bezier); + background-color: var(--n-color); + display: inline-flex; + align-items: center; + justify-content: center; + color: var(--n-icon-color); + +} + +/* divider/src/styles/index.cssr.mjs */ +.n-divider { + + position: relative; + display: flex; + width: 100%; + box-sizing: border-box; + font-size: 16px; + color: var(--n-text-color); + transition: + color .3s var(--n-bezier), + background-color .3s var(--n-bezier); + +} + +.n-divider:not(.n-divider--vertical) { + + margin-top: 24px; + margin-bottom: 24px; + +} + +.n-divider:not(.n-divider--vertical):not(.n-divider--no-title) { + + display: flex; + align-items: center; + +} + +.n-divider .n-divider__title { + + display: flex; + align-items: center; + margin-left: 12px; + margin-right: 12px; + white-space: nowrap; + font-weight: var(--n-font-weight); + +} + +.n-divider.n-divider--title-position-left .n-divider__line.n-divider__line--left { + width: 28px; +} + +.n-divider.n-divider--title-position-right .n-divider__line.n-divider__line--right { + width: 28px; +} + +.n-divider.n-divider--dashed .n-divider__line { + + background-color: #0000; + height: 0px; + width: 100%; + border-style: dashed; + border-width: 1px 0 0; + +} + +.n-divider.n-divider--vertical { + + display: inline-block; + height: 1em; + margin: 0 8px; + vertical-align: middle; + width: 1px; + +} + +.n-divider .n-divider__line { + + border: none; + transition: background-color .3s var(--n-bezier), border-color .3s var(--n-bezier); + height: 1px; + width: 100%; + margin: 0; + +} + +.n-divider:not(.n-divider--dashed) .n-divider__line { + background-color: var(--n-color); +} + +.n-divider.n-divider--dashed .n-divider__line { + border-color: var(--n-color); +} + +.n-divider.n-divider--vertical { + background-color: var(--n-color); +} + +/* gradient-text/src/styles/index.cssr.mjs */ +.n-gradient-text { + + display: inline-block; + font-weight: var(--n-font-weight); + -webkit-background-clip: text; + background-clip: text; + color: #0000; + white-space: nowrap; + background-image: linear-gradient(var(--n-rotate), var(--n-color-start) 0%, var(--n-color-end) 100%); + transition: + --n-color-start .3s var(--n-bezier), + --n-color-end .3s var(--n-bezier); + +} + +/* ellipsis/src/styles/index.cssr.mjs */ +.n-ellipsis { + overflow: hidden; +} + +.n-ellipsis:not(.n-ellipsis--line-clamp) { + + white-space: nowrap; + display: inline-block; + vertical-align: bottom; + max-width: 100%; + +} + +.n-ellipsis.n-ellipsis--line-clamp { + + display: -webkit-inline-box; + -webkit-box-orient: vertical; + +} + +.n-ellipsis.n-ellipsis--cursor-pointer { + + cursor: pointer; + +} + +/* spin/src/styles/index.cssr.mjs */ +@keyframes spin-rotate { + + from { + transform: rotate(0); + } + to { + transform: rotate(360deg); + } + +} + +.n-spin-container { + + position: relative; + +} + +.n-spin-container .n-spin-body { + + position: absolute; + top: 50%; + left: 50%; + transform: translateX(-50%) translateY(-50%); + +} + +.n-spin-container .n-spin-body.fade-in-transition-enter-active { + transition: all 0.2s cubic-bezier(.4, 0, .2, 1)!important; +} + +.n-spin-container .n-spin-body.fade-in-transition-leave-active { + transition: all 0.2s cubic-bezier(.4, 0, .2, 1)!important; +} + +.n-spin-container .n-spin-body.fade-in-transition-enter-from, .n-spin-container .n-spin-body.fade-in-transition-leave-to { + opacity: 0; +} + +.n-spin-container .n-spin-body.fade-in-transition-leave-from, .n-spin-container .n-spin-body.fade-in-transition-enter-to { + opacity: 1; +} + +.n-spin-body { + + display: inline-flex; + align-items: center; + justify-content: center; + flex-direction: column; + +} + +.n-spin { + + display: inline-flex; + height: var(--n-size); + width: var(--n-size); + font-size: var(--n-size); + color: var(--n-color); + +} + +.n-spin.n-spin--rotate { + + animation: spin-rotate 2s linear infinite; + +} + +.n-spin-description { + + display: inline-block; + font-size: var(--n-font-size); + color: var(--n-text-color); + transition: color .3s var(--n-bezier); + margin-top: 8px; + +} + +.n-spin-content { + + opacity: 1; + transition: opacity .3s var(--n-bezier); + pointer-events: all; + +} + +.n-spin-content.n-spin-content--spinning { + + user-select: none; + -webkit-user-select: none; + pointer-events: none; + opacity: var(--n-opacity-spinning); + +} + +/* loading-bar/src/styles/index.cssr.mjs */ +.n-loading-bar-container { + + z-index: 5999; + position: fixed; + top: 0; + left: 0; + right: 0; + height: 2px; + +} + +.n-loading-bar-container.fade-in-transition-enter-active { + transition: all 0.3s cubic-bezier(.4, 0, .2, 1)!important; +} + +.n-loading-bar-container.fade-in-transition-leave-active { + transition: all 0.8s cubic-bezier(.4, 0, .2, 1)!important; +} + +.n-loading-bar-container.fade-in-transition-enter-from, .n-loading-bar-container.fade-in-transition-leave-to { + opacity: 0; +} + +.n-loading-bar-container.fade-in-transition-leave-from, .n-loading-bar-container.fade-in-transition-enter-to { + opacity: 1; +} + +.n-loading-bar-container .n-loading-bar { + + width: 100%; + transition: + max-width 4s linear, + background .2s linear; + height: var(--n-height); + +} + +.n-loading-bar-container .n-loading-bar.n-loading-bar--starting { + + background: var(--n-color-loading); + +} + +.n-loading-bar-container .n-loading-bar.n-loading-bar--finishing { + + background: var(--n-color-loading); + transition: + max-width .2s linear, + background .2s linear; + +} + +.n-loading-bar-container .n-loading-bar.n-loading-bar--error { + + background: var(--n-color-error); + transition: + max-width .2s linear, + background .2s linear; + +} + +/* upload/src/styles/index.cssr.mjs */ +.n-upload { +width: 100%; +} + +.n-upload.n-upload--dragger-inside .n-upload-trigger { + + display: block; + +} + +.n-upload.n-upload--drag-over .n-upload-dragger { + + border: var(--n-dragger-border-hover); + +} + +.n-upload-dragger { + + cursor: pointer; + box-sizing: border-box; + width: 100%; + text-align: center; + border-radius: var(--n-border-radius); + padding: 24px; + opacity: 1; + transition: + opacity .3s var(--n-bezier), + border-color .3s var(--n-bezier), + background-color .3s var(--n-bezier); + background-color: var(--n-dragger-color); + border: var(--n-dragger-border); + +} + +.n-upload-dragger:hover { + + border: var(--n-dragger-border-hover); + +} + +.n-upload-dragger.n-upload-dragger--disabled { + + cursor: not-allowed; + +} + +.n-upload-trigger { + + display: inline-block; + box-sizing: border-box; + opacity: 1; + transition: opacity .3s var(--n-bezier); + +} + +.n-upload-trigger + .n-upload-file-list { +margin-top: 8px; +} + +.n-upload-trigger.n-upload-trigger--disabled { + + opacity: var(--n-item-disabled-opacity); + cursor: not-allowed; + +} + +.n-upload-trigger.n-upload-trigger--image-card { + + width: 96px; + height: 96px; + +} + +.n-upload-trigger.n-upload-trigger--image-card .n-base-icon { + + font-size: 24px; + +} + +.n-upload-trigger.n-upload-trigger--image-card .n-upload-dragger { + + padding: 0; + height: 100%; + width: 100%; + display: flex; + align-items: center; + justify-content: center; + +} + +.n-upload-file-list { + + line-height: var(--n-line-height); + opacity: 1; + transition: opacity .3s var(--n-bezier); + +} + +.n-upload-file-list a, .n-upload-file-list img { +outline: none; +} + +.n-upload-file-list.n-upload-file-list--disabled { + + opacity: var(--n-item-disabled-opacity); + cursor: not-allowed; + +} + +.n-upload-file-list.n-upload-file-list--disabled .n-upload-file { +cursor: not-allowed; +} + +.n-upload-file-list.n-upload-file-list--grid { + + display: grid; + grid-template-columns: repeat(auto-fill, 96px); + grid-gap: 8px; + margin-top: 0; + +} + +.n-upload-file-list .n-upload-file { + + display: block; + box-sizing: border-box; + cursor: default; + padding: 0px 12px 0 6px; + transition: background-color .3s var(--n-bezier); + border-radius: var(--n-border-radius); + +} + +.n-upload-file-list .n-upload-file.fade-in-height-expand-transition-leave-from, .n-upload-file-list .n-upload-file.fade-in-height-expand-transition-enter-to { + opacity: 1; +} + +.n-upload-file-list .n-upload-file.fade-in-height-expand-transition-leave-to, .n-upload-file-list .n-upload-file.fade-in-height-expand-transition-enter-from { + opacity: 0; + margin-top: 0 !important; + margin-bottom: 0 !important; +} + +.n-upload-file-list .n-upload-file.fade-in-height-expand-transition-leave-active { + + overflow: hidden; + transition: + max-height .3s cubic-bezier(.4, 0, .2, 1) 0s, + opacity .3s cubic-bezier(0, 0, .2, 1) 0s, + margin-top .3s cubic-bezier(.4, 0, .2, 1) 0s, + margin-bottom .3s cubic-bezier(.4, 0, .2, 1) 0s, + padding-top .3s cubic-bezier(.4, 0, .2, 1) 0s, + padding-bottom .3s cubic-bezier(.4, 0, .2, 1) 0s + + +} + +.n-upload-file-list .n-upload-file.fade-in-height-expand-transition-enter-active { + + overflow: hidden; + transition: + max-height .3s cubic-bezier(.4, 0, .2, 1), + opacity .3s cubic-bezier(.4, 0, 1, 1), + margin-top .3s cubic-bezier(.4, 0, .2, 1), + margin-bottom .3s cubic-bezier(.4, 0, .2, 1), + padding-top .3s cubic-bezier(.4, 0, .2, 1), + padding-bottom .3s cubic-bezier(.4, 0, .2, 1) + + +} + +.n-upload-file-list .n-upload-file .n-progress.fade-in-height-expand-transition-leave-from, .n-upload-file-list .n-upload-file .n-progress.fade-in-height-expand-transition-enter-to { + opacity: 1; +} + +.n-upload-file-list .n-upload-file .n-progress.fade-in-height-expand-transition-leave-to, .n-upload-file-list .n-upload-file .n-progress.fade-in-height-expand-transition-enter-from { + opacity: 0; + margin-top: 0 !important; + margin-bottom: 0 !important; + padding-top: 0 !important; + padding-bottom: 0 !important; +} + +.n-upload-file-list .n-upload-file .n-progress.fade-in-height-expand-transition-leave-active { + + overflow: hidden; + transition: + max-height .3s cubic-bezier(.4, 0, .2, 1) 0s, + opacity .3s cubic-bezier(0, 0, .2, 1) 0s, + margin-top .3s cubic-bezier(.4, 0, .2, 1) 0s, + margin-bottom .3s cubic-bezier(.4, 0, .2, 1) 0s, + padding-top .3s cubic-bezier(.4, 0, .2, 1) 0s, + padding-bottom .3s cubic-bezier(.4, 0, .2, 1) 0s + + +} + +.n-upload-file-list .n-upload-file .n-progress.fade-in-height-expand-transition-enter-active { + + overflow: hidden; + transition: + max-height .3s cubic-bezier(.4, 0, .2, 1), + opacity .3s cubic-bezier(.4, 0, 1, 1), + margin-top .3s cubic-bezier(.4, 0, .2, 1), + margin-bottom .3s cubic-bezier(.4, 0, .2, 1), + padding-top .3s cubic-bezier(.4, 0, .2, 1), + padding-bottom .3s cubic-bezier(.4, 0, .2, 1) + + +} + +.n-upload-file-list .n-upload-file:hover { + + background-color: var(--n-item-color-hover); + +} + +.n-upload-file-list .n-upload-file:hover .n-upload-file-info .n-upload-file-info__action { + + opacity: 1; + +} + +.n-upload-file-list .n-upload-file.n-upload-file--image-type { + + border-radius: var(--n-border-radius); + text-decoration: underline; + text-decoration-color: #0000; + +} + +.n-upload-file-list .n-upload-file.n-upload-file--image-type .n-upload-file-info { + + padding-top: 0px; + padding-bottom: 0px; + width: 100%; + height: 100%; + display: flex; + justify-content: space-between; + align-items: center; + padding: 6px 0; + +} + +.n-upload-file-list .n-upload-file.n-upload-file--image-type .n-upload-file-info .n-progress { + + padding: 2px 0; + margin-bottom: 0; + +} + +.n-upload-file-list .n-upload-file.n-upload-file--image-type .n-upload-file-info .n-upload-file-info__name { + + padding: 0 8px; + +} + +.n-upload-file-list .n-upload-file.n-upload-file--image-type .n-upload-file-info .n-upload-file-info__thumbnail { + + width: 32px; + height: 32px; + font-size: 28px; + display: flex; + justify-content: center; + align-items: center; + +} + +.n-upload-file-list .n-upload-file.n-upload-file--image-type .n-upload-file-info .n-upload-file-info__thumbnail img { + + width: 100%; + +} + +.n-upload-file-list .n-upload-file.n-upload-file--text-type .n-progress { + + box-sizing: border-box; + padding-bottom: 6px; + margin-bottom: 6px; + +} + +.n-upload-file-list .n-upload-file.n-upload-file--image-card-type { + + position: relative; + width: 96px; + height: 96px; + border: var(--n-item-border-image-card); + border-radius: var(--n-border-radius); + padding: 0; + display: flex; + align-items: center; + justify-content: center; + transition: border-color .3s var(--n-bezier), background-color .3s var(--n-bezier); + border-radius: var(--n-border-radius); + overflow: hidden; + +} + +.n-upload-file-list .n-upload-file.n-upload-file--image-card-type .n-progress { + + position: absolute; + left: 8px; + bottom: 8px; + right: 8px; + width: unset; + +} + +.n-upload-file-list .n-upload-file.n-upload-file--image-card-type .n-upload-file-info { + + padding: 0; + width: 100%; + height: 100%; + +} + +.n-upload-file-list .n-upload-file.n-upload-file--image-card-type .n-upload-file-info .n-upload-file-info__thumbnail { + + width: 100%; + height: 100%; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + font-size: 36px; + +} + +.n-upload-file-list .n-upload-file.n-upload-file--image-card-type .n-upload-file-info .n-upload-file-info__thumbnail img { + + width: 100%; + +} + +.n-upload-file-list .n-upload-file.n-upload-file--image-card-type::before { + + position: absolute; + z-index: 1; + left: 0; + right: 0; + top: 0; + bottom: 0; + border-radius: inherit; + opacity: 0; + transition: opacity .2s var(--n-bezier); + content: ""; + +} + +.n-upload-file-list .n-upload-file.n-upload-file--image-card-type:hover::before { +opacity: 1; +} + +.n-upload-file-list .n-upload-file.n-upload-file--image-card-type:hover .n-upload-file-info .n-upload-file-info__thumbnail { +opacity: .12; +} + +.n-upload-file-list .n-upload-file.n-upload-file--error-status:hover { + + background-color: var(--n-item-color-hover-error); + +} + +.n-upload-file-list .n-upload-file.n-upload-file--error-status .n-upload-file-info .n-upload-file-info__name { +color: var(--n-item-text-color-error); +} + +.n-upload-file-list .n-upload-file.n-upload-file--error-status .n-upload-file-info .n-upload-file-info__thumbnail { +color: var(--n-item-text-color-error); +} + +.n-upload-file-list .n-upload-file.n-upload-file--error-status.n-upload-file--image-card-type { + + border: var(--n-item-border-image-card-error); + +} + +.n-upload-file-list .n-upload-file.n-upload-file--with-url { + + cursor: pointer; + +} + +.n-upload-file-list .n-upload-file.n-upload-file--with-url .n-upload-file-info .n-upload-file-info__name { + + color: var(--n-item-text-color-success); + text-decoration-color: var(--n-item-text-color-success); + +} + +.n-upload-file-list .n-upload-file.n-upload-file--with-url .n-upload-file-info .n-upload-file-info__name a { + + text-decoration: underline; + +} + +.n-upload-file-list .n-upload-file .n-upload-file-info { + + position: relative; + padding-top: 6px; + padding-bottom: 6px; + display: flex; + flex-wrap: nowrap; + +} + +.n-upload-file-list .n-upload-file .n-upload-file-info .n-upload-file-info__thumbnail { + + font-size: 18px; + opacity: 1; + transition: opacity .2s var(--n-bezier); + color: var(--n-item-icon-color); + +} + +.n-upload-file-list .n-upload-file .n-upload-file-info .n-upload-file-info__thumbnail .n-base-icon { + + margin-right: 2px; + vertical-align: middle; + transition: color .3s var(--n-bezier); + +} + +.n-upload-file-list .n-upload-file .n-upload-file-info .n-upload-file-info__action { + + padding-top: inherit; + padding-bottom: inherit; + position: absolute; + right: 0; + top: 0; + bottom: 0; + width: 80px; + display: flex; + align-items: center; + transition: opacity .2s var(--n-bezier); + justify-content: flex-end; + opacity: 0; + +} + +.n-upload-file-list .n-upload-file .n-upload-file-info .n-upload-file-info__action .n-button:not(:last-child) { + margin-right: 4px; +} + +.n-upload-file-list .n-upload-file .n-upload-file-info .n-upload-file-info__action .n-button .n-base-icon svg.icon-switch-transition-enter-from, .n-upload-file-list .n-upload-file .n-upload-file-info .n-upload-file-info__action .n-button .n-base-icon svg.icon-switch-transition-leave-to { + transform: scale(0.75); + left: 0; + top: 0; + opacity: 0; +} + +.n-upload-file-list .n-upload-file .n-upload-file-info .n-upload-file-info__action .n-button .n-base-icon svg.icon-switch-transition-enter-to, .n-upload-file-list .n-upload-file .n-upload-file-info .n-upload-file-info__action .n-button .n-base-icon svg.icon-switch-transition-leave-from { + transform: scale(1) ; + left: 0; + top: 0; + opacity: 1; +} + +.n-upload-file-list .n-upload-file .n-upload-file-info .n-upload-file-info__action .n-button .n-base-icon svg.icon-switch-transition-enter-active, .n-upload-file-list .n-upload-file .n-upload-file-info .n-upload-file-info__action .n-button .n-base-icon svg.icon-switch-transition-leave-active { + transform-origin: center; + position: absolute; + left: 0; + top: 0; + transition: all .3s cubic-bezier(.4, 0, .2, 1) !important; +} + +.n-upload-file-list .n-upload-file .n-upload-file-info .n-upload-file-info__action.n-upload-file-info__action--image-type { + + position: relative; + max-width: 80px; + width: auto; + +} + +.n-upload-file-list .n-upload-file .n-upload-file-info .n-upload-file-info__action.n-upload-file-info__action--image-card-type { + + z-index: 2; + position: absolute; + width: 100%; + height: 100%; + left: 0; + right: 0; + bottom: 0; + top: 0; + display: flex; + justify-content: center; + align-items: center; + +} + +.n-upload-file-list .n-upload-file .n-upload-file-info .n-upload-file-info__name { + + color: var(--n-item-text-color); + flex: 1; + display: flex; + justify-content: center; + text-overflow: ellipsis; + overflow: hidden; + flex-direction: column; + text-decoration-color: #0000; + font-size: var(--n-font-size); + transition: + color .3s var(--n-bezier), + text-decoration-color .3s var(--n-bezier); + +} + +.n-upload-file-list .n-upload-file .n-upload-file-info .n-upload-file-info__name a { + + color: inherit; + text-decoration: underline; + +} + +.n-upload-file-input { + + display: none; + width: 0; + height: 0; + opacity: 0; + +} + +/* image/src/styles/index.cssr.mjs */ +body > .n-image-container { +position: fixed; +} + +.n-image-preview-container { + + position: fixed; + left: 0; + right: 0; + top: 0; + bottom: 0; + display: flex; + +} + +.n-image-preview-overlay { + + z-index: -1; + position: absolute; + left: 0; + right: 0; + top: 0; + bottom: 0; + background: rgba(0, 0, 0, .3); + +} + +.n-image-preview-overlay.fade-in-transition-enter-active { + transition: all 0.2s cubic-bezier(.4, 0, .2, 1)!important; +} + +.n-image-preview-overlay.fade-in-transition-leave-active { + transition: all 0.2s cubic-bezier(.4, 0, .2, 1)!important; +} + +.n-image-preview-overlay.fade-in-transition-enter-from, .n-image-preview-overlay.fade-in-transition-leave-to { + opacity: 0; +} + +.n-image-preview-overlay.fade-in-transition-leave-from, .n-image-preview-overlay.fade-in-transition-enter-to { + opacity: 1; +} + +.n-image-preview-toolbar { + + z-index: 1; + position: absolute; + left: 50%; + transform: translateX(-50%); + border-radius: var(--n-toolbar-border-radius); + height: 48px; + bottom: 40px; + padding: 0 12px; + background: var(--n-toolbar-color); + box-shadow: var(--n-toolbar-box-shadow); + color: var(--n-toolbar-icon-color); + transition: color .3s var(--n-bezier); + display: flex; + align-items: center; + +} + +.n-image-preview-toolbar .n-base-icon { + + padding: 0 8px; + font-size: 28px; + cursor: pointer; + +} + +.n-image-preview-toolbar.fade-in-transition-enter-active { + transition: all 0.2s cubic-bezier(.4, 0, .2, 1)!important; +} + +.n-image-preview-toolbar.fade-in-transition-leave-active { + transition: all 0.2s cubic-bezier(.4, 0, .2, 1)!important; +} + +.n-image-preview-toolbar.fade-in-transition-enter-from, .n-image-preview-toolbar.fade-in-transition-leave-to { + opacity: 0; +} + +.n-image-preview-toolbar.fade-in-transition-leave-from, .n-image-preview-toolbar.fade-in-transition-enter-to { + opacity: 1; +} + +.n-image-preview-wrapper { + + position: absolute; + left: 0; + right: 0; + top: 0; + bottom: 0; + display: flex; + pointer-events: none; + +} + +.n-image-preview-wrapper.fade-in-scale-up-transition-leave-active { + transform-origin: inherit; + transition: opacity .2s cubic-bezier(.4, 0, 1, 1), transform .2s cubic-bezier(.4, 0, 1, 1) ; +} + +.n-image-preview-wrapper.fade-in-scale-up-transition-enter-active { + transform-origin: inherit; + transition: opacity .2s cubic-bezier(0, 0, .2, 1), transform .2s cubic-bezier(0, 0, .2, 1) ; +} + +.n-image-preview-wrapper.fade-in-scale-up-transition-enter-from, .n-image-preview-wrapper.fade-in-scale-up-transition-leave-to { + opacity: 0; + transform: scale(.9); +} + +.n-image-preview-wrapper.fade-in-scale-up-transition-leave-from, .n-image-preview-wrapper.fade-in-scale-up-transition-enter-to { + opacity: 1; + transform: scale(1); +} + +.n-image-preview { + + user-select: none; + -webkit-user-select: none; + pointer-events: all; + margin: auto; + max-height: calc(100vh - 32px); + max-width: calc(100vw - 32px); + transition: transform .3s var(--n-bezier); + +} + +.n-image { + + display: inline-flex; + max-height: 100%; + max-width: 100%; + +} + +.n-image:not(.n-image--preview-disabled) { + + cursor: pointer; + +} + +.n-image img { + + border-radius: inherit; + +} + +/* carousel/src/styles/index.cssr.mjs */ +.n-carousel { + + position: relative; + width: 100%; + height: 100%; + touch-action: pan-y; + overflow: hidden; + +} + +.n-carousel .n-carousel__slides { + + display: flex; + width: 100%; + height: 100%; + transition-timing-function: var(--n-bezier); + transition-property: transform; + +} + +.n-carousel .n-carousel__slides .n-carousel__slide { + + flex-shrink: 0; + position: relative; + width: 100%; + height: 100%; + outline: none; + overflow: hidden; + +} + +.n-carousel .n-carousel__slides .n-carousel__slide > img { + + display: block; + +} + +.n-carousel .n-carousel__dots { + + position: absolute; + display: flex; + flex-wrap: nowrap; + +} + +.n-carousel .n-carousel__dots.n-carousel__dots--dot .n-carousel__dot { + + height: var(--n-dot-size); + width: var(--n-dot-size); + background-color: var(--n-dot-color); + border-radius: 50%; + cursor: pointer; + transition: + box-shadow .3s var(--n-bezier), + background-color .3s var(--n-bezier); + outline: none; + +} + +.n-carousel .n-carousel__dots.n-carousel__dots--dot .n-carousel__dot:focus { + + background-color: var(--n-dot-color-focus); + +} + +.n-carousel .n-carousel__dots.n-carousel__dots--dot .n-carousel__dot.n-carousel__dot--active { + + background-color: var(--n-dot-color-active); + +} + +.n-carousel .n-carousel__dots.n-carousel__dots--line .n-carousel__dot { + + border-radius: 9999px; + width: var(--n-dot-line-width); + height: 4px; + background-color: var(--n-dot-color); + cursor: pointer; + transition: + width .3s var(--n-bezier), + box-shadow .3s var(--n-bezier), + background-color .3s var(--n-bezier); + outline: none; + +} + +.n-carousel .n-carousel__dots.n-carousel__dots--line .n-carousel__dot:focus { + + background-color: var(--n-dot-color-focus); + +} + +.n-carousel .n-carousel__dots.n-carousel__dots--line .n-carousel__dot.n-carousel__dot--active { + + width: var(--n-dot-line-width-active); + background-color: var(--n-dot-color-active); + +} + +.n-carousel .n-carousel__arrow { + + transition: background-color .3s var(--n-bezier); + cursor: pointer; + height: 28px; + width: 28px; + display: flex; + align-items: center; + justify-content: center; + background-color: rgba(255, 255, 255, .2); + color: var(--n-arrow-color); + border-radius: 8px; + user-select: none; + -webkit-user-select: none; + font-size: 18px; + +} + +.n-carousel .n-carousel__arrow svg { + + height: 1em; + width: 1em; + +} + +.n-carousel .n-carousel__arrow:hover { + + background-color: rgba(255, 255, 255, .3); + +} + +.n-carousel.n-carousel--vertical { + + touch-action: pan-x; + +} + +.n-carousel.n-carousel--vertical .n-carousel__slides { + + flex-direction: column; + +} + +.n-carousel.n-carousel--vertical.n-carousel--fade .n-carousel__slide { + + top: 50%; + left: unset; + transform: translateY(-50%); + +} + +.n-carousel.n-carousel--vertical.n-carousel--card .n-carousel__slide { + + top: 50%; + left: unset; + transform: translateY(-50%) translateZ(-400px); + +} + +.n-carousel.n-carousel--vertical.n-carousel--card .n-carousel__slide.n-carousel__slide--current { + + transform: translateY(-50%) translateZ(0); + +} + +.n-carousel.n-carousel--vertical.n-carousel--card .n-carousel__slide.n-carousel__slide--prev { + + transform: translateY(-100%) translateZ(-200px); + +} + +.n-carousel.n-carousel--vertical.n-carousel--card .n-carousel__slide.n-carousel__slide--next { + + transform: translateY(0%) translateZ(-200px); + +} + +.n-carousel.n-carousel--usercontrol .n-carousel__slides > div { + + position: absolute; + top: 50%; + left: 50%; + width: 100%; + height: 100%; + transform: translate(-50%, -50%); + +} + +.n-carousel.n-carousel--left .n-carousel__dots { + + transform: translateY(-50%); + top: 50%; + left: 12px; + flex-direction: column; + +} + +.n-carousel.n-carousel--left .n-carousel__dots.n-carousel__dots--line .n-carousel__dot { + + width: 4px; + height: var(--n-dot-line-width); + margin: 4px 0; + transition: + height .3s var(--n-bezier), + box-shadow .3s var(--n-bezier), + background-color .3s var(--n-bezier); + outline: none; + +} + +.n-carousel.n-carousel--left .n-carousel__dots.n-carousel__dots--line .n-carousel__dot.n-carousel__dot--active { + + height: var(--n-dot-line-width-active); + +} + +.n-carousel.n-carousel--left .n-carousel__dot { + + margin: 4px 0; + +} + +.n-carousel .n-carousel__arrow-group { + + position: absolute; + display: flex; + flex-wrap: nowrap; + +} + +.n-carousel.n-carousel--vertical .n-carousel__arrow { + + transform: rotate(90deg); + +} + +.n-carousel.n-carousel--show-arrow.n-carousel--bottom .n-carousel__dots { + + transform: translateX(0); + bottom: 18px; + left: 18px; + +} + +.n-carousel.n-carousel--show-arrow.n-carousel--top .n-carousel__dots { + + transform: translateX(0); + top: 18px; + left: 18px; + +} + +.n-carousel.n-carousel--show-arrow.n-carousel--left .n-carousel__dots { + + transform: translateX(0); + top: 18px; + left: 18px; + +} + +.n-carousel.n-carousel--show-arrow.n-carousel--right .n-carousel__dots { + + transform: translateX(0); + top: 18px; + right: 18px; + +} + +.n-carousel.n-carousel--left .n-carousel__arrow-group { + + bottom: 12px; + left: 12px; + flex-direction: column; + +} + +.n-carousel.n-carousel--left .n-carousel__arrow-group > *:first-child { + + margin-bottom: 12px; + +} + +.n-carousel.n-carousel--right .n-carousel__dots { + + transform: translateY(-50%); + top: 50%; + right: 12px; + flex-direction: column; + +} + +.n-carousel.n-carousel--right .n-carousel__dots.n-carousel__dots--line .n-carousel__dot { + + width: 4px; + height: var(--n-dot-line-width); + margin: 4px 0; + transition: + height .3s var(--n-bezier), + box-shadow .3s var(--n-bezier), + background-color .3s var(--n-bezier); + outline: none; + +} + +.n-carousel.n-carousel--right .n-carousel__dots.n-carousel__dots--line .n-carousel__dot.n-carousel__dot--active { + + height: var(--n-dot-line-width-active); + +} + +.n-carousel.n-carousel--right .n-carousel__dot { + + margin: 4px 0; + +} + +.n-carousel.n-carousel--right .n-carousel__arrow-group { + + bottom: 12px; + right: 12px; + flex-direction: column; + +} + +.n-carousel.n-carousel--right .n-carousel__arrow-group > *:first-child { + + margin-bottom: 12px; + +} + +.n-carousel.n-carousel--top .n-carousel__dots { + + transform: translateX(-50%); + top: 12px; + left: 50%; + +} + +.n-carousel.n-carousel--top .n-carousel__dots.n-carousel__dots--line .n-carousel__dot { + + margin: 0 4px; + +} + +.n-carousel.n-carousel--top .n-carousel__dot { + + margin: 0 4px; + +} + +.n-carousel.n-carousel--top .n-carousel__arrow-group { + + top: 12px; + right: 12px; + +} + +.n-carousel.n-carousel--top .n-carousel__arrow-group > *:first-child { + + margin-right: 12px; + +} + +.n-carousel.n-carousel--bottom .n-carousel__dots { + + transform: translateX(-50%); + bottom: 12px; + left: 50%; + +} + +.n-carousel.n-carousel--bottom .n-carousel__dots.n-carousel__dots--line .n-carousel__dot { + + margin: 0 4px; + +} + +.n-carousel.n-carousel--bottom .n-carousel__dot { + + margin: 0 4px; + +} + +.n-carousel.n-carousel--bottom .n-carousel__arrow-group { + + bottom: 12px; + right: 12px; + +} + +.n-carousel.n-carousel--bottom .n-carousel__arrow-group > *:first-child { + + margin-right: 12px; + +} + +.n-carousel.n-carousel--fade .n-carousel__slide { + + position: absolute; + opacity: 0; + transition-property: opacity; + pointer-events: none; + +} + +.n-carousel.n-carousel--fade .n-carousel__slide.n-carousel__slide--current { + + opacity: 1; + pointer-events: auto; + +} + +.n-carousel.n-carousel--card .n-carousel__slides { + + perspective: 1000px; + +} + +.n-carousel.n-carousel--card .n-carousel__slide { + + position: absolute; + left: 50%; + opacity: 0; + transform: translateX(-50%) translateZ(-400px); + transition-property: opacity, transform; + +} + +.n-carousel.n-carousel--card .n-carousel__slide.n-carousel__slide--current { + + opacity: 1; + transform: translateX(-50%) translateZ(0); + z-index: 1; + +} + +.n-carousel.n-carousel--card .n-carousel__slide.n-carousel__slide--prev { + + opacity: 0.4; + transform: translateX(-100%) translateZ(-200px); + +} + +.n-carousel.n-carousel--card .n-carousel__slide.n-carousel__slide--next { + + opacity: 0.4; + transform: translateX(0%) translateZ(-200px); + +} + +/* transfer/src/styles/index.cssr.mjs */ +.n-transfer { + + width: 100%; + font-size: var(--n-font-size); + height: 300px; + display: flex; + flex-wrap: nowrap; + word-break: break-word; + +} + +.n-transfer.n-transfer--disabled .n-transfer-list .n-transfer-list-header .n-transfer-list-header__title { + + color: var(--n-header-text-color-disabled); + +} + +.n-transfer.n-transfer--disabled .n-transfer-list .n-transfer-list-header .n-transfer-list-header__extra { + + color: var(--n-header-extra-text-color-disabled); + +} + +.n-transfer .n-transfer-list { + + flex: 1; + min-width: 0; + height: inherit; + display: flex; + flex-direction: column; + background-clip: padding-box; + position: relative; + transition: background-color .3s var(--n-bezier); + background-color: var(--n-list-color); + +} + +.n-transfer .n-transfer-list.n-transfer-list--source { + + border-top-left-radius: var(--n-border-radius); + border-bottom-left-radius: var(--n-border-radius); + +} + +.n-transfer .n-transfer-list.n-transfer-list--source .n-transfer-list__border { +border-right: 1px solid var(--n-divider-color); +} + +.n-transfer .n-transfer-list.n-transfer-list--target { + + border-top-right-radius: var(--n-border-radius); + border-bottom-right-radius: var(--n-border-radius); + +} + +.n-transfer .n-transfer-list.n-transfer-list--target .n-transfer-list__border { +border-left: none; +} + +.n-transfer .n-transfer-list .n-transfer-list__border { + + padding: 0 12px; + border: 1px solid var(--n-border-color); + transition: border-color .3s var(--n-bezier); + pointer-events: none; + border-radius: inherit; + position: absolute; + left: 0; + right: 0; + top: 0; + bottom: 0; + +} + +.n-transfer .n-transfer-list .n-transfer-list-header { + + min-height: var(--n-header-height); + box-sizing: border-box; + display: flex; + padding: 12px 12px 10px 12px; + align-items: center; + background-clip: padding-box; + border-radius: inherit; + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; + line-height: 1.5; + transition: + border-color .3s var(--n-bezier), + background-color .3s var(--n-bezier); + +} + +.n-transfer .n-transfer-list .n-transfer-list-header > *:not(:first-child) { + + margin-left: 8px; + +} + +.n-transfer .n-transfer-list .n-transfer-list-header .n-transfer-list-header__title { + + flex: 1; + min-width: 0; + line-height: 1.5; + font-size: var(--n-header-font-size); + font-weight: var(--n-header-font-weight); + transition: color .3s var(--n-bezier); + color: var(--n-header-text-color); + +} + +.n-transfer .n-transfer-list .n-transfer-list-header .n-transfer-list-header__button { + + position: relative; + +} + +.n-transfer .n-transfer-list .n-transfer-list-header .n-transfer-list-header__extra { + + transition: color .3s var(--n-bezier); + font-size: var(--n-extra-font-size); + margin-right: 0; + white-space: nowrap; + color: var(--n-header-extra-text-color); + +} + +.n-transfer .n-transfer-list .n-transfer-list-body { + + flex-basis: 0; + flex-grow: 1; + box-sizing: border-box; + position: relative; + display: flex; + flex-direction: column; + border-radius: inherit; + border-top-left-radius: 0; + border-top-right-radius: 0; + +} + +.n-transfer .n-transfer-list .n-transfer-list-body .n-transfer-filter { + + padding: 4px 12px 8px 12px; + box-sizing: border-box; + transition: + border-color .3s var(--n-bezier), + background-color .3s var(--n-bezier); + +} + +.n-transfer .n-transfer-list .n-transfer-list-body .n-transfer-list-flex-container { + + flex: 1; + position: relative; + +} + +.n-transfer .n-transfer-list .n-transfer-list-body .n-transfer-list-flex-container .n-scrollbar { + + position: absolute; + left: 0; + right: 0; + top: 0; + bottom: 0; + height: unset; + +} + +.n-transfer .n-transfer-list .n-transfer-list-body .n-transfer-list-flex-container .n-empty { + + position: absolute; + left: 50%; + top: 50%; + transform: translateY(-50%) translateX(-50%); + +} + +.n-transfer .n-transfer-list .n-transfer-list-body .n-transfer-list-flex-container .n-transfer-list-content { + + padding: 0; + margin: 0; + position: relative; + +} + +.n-transfer .n-transfer-list .n-transfer-list-body .n-transfer-list-flex-container .n-transfer-list-content .n-transfer-list-item { + + padding: 0 12px; + min-height: var(--n-item-height); + display: flex; + align-items: center; + color: var(--n-item-text-color); + position: relative; + transition: color .3s var(--n-bezier); + +} + +.n-transfer .n-transfer-list .n-transfer-list-body .n-transfer-list-flex-container .n-transfer-list-content .n-transfer-list-item .n-transfer-list-item__background { + + position: absolute; + left: 4px; + right: 4px; + top: 0; + bottom: 0; + border-radius: var(--n-border-radius); + transition: background-color .3s var(--n-bezier); + +} + +.n-transfer .n-transfer-list .n-transfer-list-body .n-transfer-list-flex-container .n-transfer-list-content .n-transfer-list-item .n-transfer-list-item__checkbox { + + position: relative; + margin-right: 8px; + +} + +.n-transfer .n-transfer-list .n-transfer-list-body .n-transfer-list-flex-container .n-transfer-list-content .n-transfer-list-item .n-transfer-list-item__close { + + opacity: 0; + pointer-events: none; + position: relative; + transition: + opacity .3s var(--n-bezier), + background-color .3s var(--n-bezier), + color .3s var(--n-bezier); + +} + +.n-transfer .n-transfer-list .n-transfer-list-body .n-transfer-list-flex-container .n-transfer-list-content .n-transfer-list-item .n-transfer-list-item__label { + + position: relative; + min-width: 0; + flex-grow: 1; + +} + +.n-transfer .n-transfer-list .n-transfer-list-body .n-transfer-list-flex-container .n-transfer-list-content .n-transfer-list-item.n-transfer-list-item--source { +cursor: pointer; +} + +.n-transfer .n-transfer-list .n-transfer-list-body .n-transfer-list-flex-container .n-transfer-list-content .n-transfer-list-item.n-transfer-list-item--disabled { + + cursor: not-allowed; + color: var(--n-item-text-color-disabled); + +} + +.n-transfer .n-transfer-list .n-transfer-list-body .n-transfer-list-flex-container .n-transfer-list-content .n-transfer-list-item:not(.n-transfer-list-item--disabled):hover .n-transfer-list-item__background { +background-color: var(--n-item-color-pending); +} + +.n-transfer .n-transfer-list .n-transfer-list-body .n-transfer-list-flex-container .n-transfer-list-content .n-transfer-list-item:not(.n-transfer-list-item--disabled):hover .n-transfer-list-item__close { + + opacity: 1; + pointer-events: all; + +} + +/* tree-select/src/styles/index.cssr.mjs */ +.n-tree-select { + + z-index: auto; + outline: none; + width: 100%; + position: relative; + +} + +.n-tree-select-menu { + + position: relative; + overflow: hidden; + margin: 4px 0; + transition: box-shadow .3s var(--n-bezier), background-color .3s var(--n-bezier); + border-radius: var(--n-menu-border-radius); + box-shadow: var(--n-menu-box-shadow); + background-color: var(--n-menu-color); + outline: none; + +} + +.n-tree-select-menu .n-tree { +max-height: var(--n-menu-height); +} + +.n-tree-select-menu .n-tree-select-menu__empty { + + display: flex; + padding: 12px 32px; + flex: 1; + justify-content: center; + +} + +.n-tree-select-menu .n-tree-select-menu__header { + + padding: var(--n-header-padding); + transition: + color .3s var(--n-bezier); + border-color .3s var(--n-bezier); + border-bottom: 1px solid var(--n-header-divider-color); + color: var(--n-header-text-color); + +} + +.n-tree-select-menu .n-tree-select-menu__action { + + padding: var(--n-action-padding); + transition: + color .3s var(--n-bezier); + border-color .3s var(--n-bezier); + border-top: 1px solid var(--n-action-divider-color); + color: var(--n-action-text-color); + +} + +.n-tree-select-menu.fade-in-scale-up-transition-leave-active { + transform-origin: inherit; + transition: opacity .2s cubic-bezier(.4, 0, 1, 1), transform .2s cubic-bezier(.4, 0, 1, 1) ; +} + +.n-tree-select-menu.fade-in-scale-up-transition-enter-active { + transform-origin: inherit; + transition: opacity .2s cubic-bezier(0, 0, .2, 1), transform .2s cubic-bezier(0, 0, .2, 1) ; +} + +.n-tree-select-menu.fade-in-scale-up-transition-enter-from, .n-tree-select-menu.fade-in-scale-up-transition-leave-to { + opacity: 0; + transform: scale(.9); +} + +.n-tree-select-menu.fade-in-scale-up-transition-leave-from, .n-tree-select-menu.fade-in-scale-up-transition-enter-to { + opacity: 1; + transform: scale(1); +} + +/* tree/src/styles/index.cssr.mjs */ +.n-tree { + + font-size: var(--n-font-size); + outline: none; + +} + +.n-tree ul, .n-tree li { + + margin: 0; + padding: 0; + list-style: none; + +} + +.n-tree > .n-tree-node:first-child { +margin-top: 0; +} + +.n-tree .n-tree-motion-wrapper.n-tree-motion-wrapper--expand.fade-in-height-expand-transition-leave-from, .n-tree .n-tree-motion-wrapper.n-tree-motion-wrapper--expand.fade-in-height-expand-transition-enter-to { + opacity: 1; +} + +.n-tree .n-tree-motion-wrapper.n-tree-motion-wrapper--expand.fade-in-height-expand-transition-leave-to, .n-tree .n-tree-motion-wrapper.n-tree-motion-wrapper--expand.fade-in-height-expand-transition-enter-from { + opacity: 0; + margin-top: 0 !important; + margin-bottom: 0 !important; +} + +.n-tree .n-tree-motion-wrapper.n-tree-motion-wrapper--expand.fade-in-height-expand-transition-leave-active { + + overflow: hidden; + transition: + max-height 0.2s cubic-bezier(.4, 0, .2, 1) 0s, + opacity 0.2s cubic-bezier(0, 0, .2, 1) 0s, + margin-top 0.2s cubic-bezier(.4, 0, .2, 1) 0s, + margin-bottom 0.2s cubic-bezier(.4, 0, .2, 1) 0s, + padding-top 0.2s cubic-bezier(.4, 0, .2, 1) 0s, + padding-bottom 0.2s cubic-bezier(.4, 0, .2, 1) 0s + + +} + +.n-tree .n-tree-motion-wrapper.n-tree-motion-wrapper--expand.fade-in-height-expand-transition-enter-active { + + overflow: hidden; + transition: + max-height 0.2s cubic-bezier(.4, 0, .2, 1), + opacity 0.2s cubic-bezier(.4, 0, 1, 1), + margin-top 0.2s cubic-bezier(.4, 0, .2, 1), + margin-bottom 0.2s cubic-bezier(.4, 0, .2, 1), + padding-top 0.2s cubic-bezier(.4, 0, .2, 1), + padding-bottom 0.2s cubic-bezier(.4, 0, .2, 1) + + +} + +.n-tree .n-tree-motion-wrapper.n-tree-motion-wrapper--collapse.fade-in-height-expand-transition-enter-from, .n-tree .n-tree-motion-wrapper.n-tree-motion-wrapper--collapse.fade-in-height-expand-transition-leave-to { + opacity: 1; +} + +.n-tree .n-tree-motion-wrapper.n-tree-motion-wrapper--collapse.fade-in-height-expand-transition-enter-to, .n-tree .n-tree-motion-wrapper.n-tree-motion-wrapper--collapse.fade-in-height-expand-transition-leave-from { + opacity: 0; + margin-top: 0 !important; + margin-bottom: 0 !important; +} + +.n-tree .n-tree-motion-wrapper.n-tree-motion-wrapper--collapse.fade-in-height-expand-transition-enter-active { + + overflow: hidden; + transition: + max-height 0.2s cubic-bezier(.4, 0, .2, 1) 0s, + opacity 0.2s cubic-bezier(0, 0, .2, 1) 0s, + margin-top 0.2s cubic-bezier(.4, 0, .2, 1) 0s, + margin-bottom 0.2s cubic-bezier(.4, 0, .2, 1) 0s, + padding-top 0.2s cubic-bezier(.4, 0, .2, 1) 0s, + padding-bottom 0.2s cubic-bezier(.4, 0, .2, 1) 0s + + +} + +.n-tree .n-tree-motion-wrapper.n-tree-motion-wrapper--collapse.fade-in-height-expand-transition-leave-active { + + overflow: hidden; + transition: + max-height 0.2s cubic-bezier(.4, 0, .2, 1), + opacity 0.2s cubic-bezier(.4, 0, 1, 1), + margin-top 0.2s cubic-bezier(.4, 0, .2, 1), + margin-bottom 0.2s cubic-bezier(.4, 0, .2, 1), + padding-top 0.2s cubic-bezier(.4, 0, .2, 1), + padding-bottom 0.2s cubic-bezier(.4, 0, .2, 1) + + +} + +.n-tree .n-tree-node-wrapper { + + box-sizing: border-box; + padding: var(--n-node-wrapper-padding); + +} + +.n-tree .n-tree-node { + + position: relative; + display: flex; + border-radius: var(--n-node-border-radius); + transition: background-color .3s var(--n-bezier); + +} + +.n-tree .n-tree-node.n-tree-node--highlight .n-tree-node-content .n-tree-node-content__text { +border-bottom-color: var(--n-node-text-color-disabled); +} + +.n-tree .n-tree-node.n-tree-node--disabled .n-tree-node-content { + + color: var(--n-node-text-color-disabled); + cursor: not-allowed; + +} + +.n-tree .n-tree-node:not(.n-tree-node--disabled).n-tree-node--clickable .n-tree-node-content { + + cursor: pointer; + +} + +.n-tree.n-tree--block-node .n-tree-node-content { + + flex: 1; + min-width: 0; + +} + +.n-tree:not(.n-tree--block-line) .n-tree-node:not(.n-tree-node--disabled) .n-tree-node-content:hover { +background: var(--n-node-color-hover); +} + +.n-tree:not(.n-tree--block-line) .n-tree-node:not(.n-tree-node--disabled).n-tree-node--selectable .n-tree-node-content:active { +background: var(--n-node-color-pressed); +} + +.n-tree:not(.n-tree--block-line) .n-tree-node:not(.n-tree-node--disabled).n-tree-node--pending .n-tree-node-content { + + background: var(--n-node-color-hover); + +} + +.n-tree:not(.n-tree--block-line) .n-tree-node:not(.n-tree-node--disabled).n-tree-node--selected .n-tree-node-content { +background: var(--n-node-color-active); +} + +.n-tree:not(.n-tree--block-line) .n-tree-node.n-tree-node--selected .n-tree-node-content { +background: var(--n-node-color-active); +} + +.n-tree.n-tree--block-line .n-tree-node:not(.n-tree-node--disabled):hover { +background: var(--n-node-color-hover); +} + +.n-tree.n-tree--block-line .n-tree-node:not(.n-tree-node--disabled).n-tree-node--pending { + + background: var(--n-node-color-hover); + +} + +.n-tree.n-tree--block-line .n-tree-node:not(.n-tree-node--disabled).n-tree-node--selectable:not(.n-tree-node--selected):active { +background: var(--n-node-color-pressed); +} + +.n-tree.n-tree--block-line .n-tree-node:not(.n-tree-node--disabled).n-tree-node--selected { +background: var(--n-node-color-active); +} + +.n-tree.n-tree--block-line .n-tree-node.n-tree-node--selected { +background: var(--n-node-color-active); +} + +.n-tree.n-tree--block-line .n-tree-node.n-tree-node--disabled { + + cursor: not-allowed; + +} + +.n-tree.n-tree--ellipsis .n-tree-node .n-tree-node-content { + + overflow: hidden; + +} + +.n-tree.n-tree--ellipsis .n-tree-node .n-tree-node-content .n-tree-node-content__text { + + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; + +} + +.n-tree .n-tree-node-indent { + + flex-grow: 0; + flex-shrink: 0; + +} + +.n-tree .n-tree-node-indent.n-tree-node-indent--show-line { +position: relative +} + +.n-tree .n-tree-node-indent.n-tree-node-indent--show-line::before { + + position: absolute; + left: 50%; + border-left: 1px solid var(--n-line-color); + transition: border-color .3s var(--n-bezier); + transform: translate(-50%); + content: ""; + top: var(--n-line-offset-top); + bottom: var(--n-line-offset-bottom); + +} + +.n-tree .n-tree-node-indent.n-tree-node-indent--show-line.n-tree-node-indent--last-child::before { + + bottom: 50%; + +} + +.n-tree .n-tree-node-indent.n-tree-node-indent--show-line.n-tree-node-indent--is-leaf::after { + + position: absolute; + content: ""; + left: calc(50% + 0.5px); + right: 0; + bottom: 50%; + transition: border-color .3s var(--n-bezier); + border-bottom: 1px solid var(--n-line-color); + +} + +.n-tree .n-tree-node-indent:not(.n-tree-node-indent--show-line) { +height: 0; +} + +.n-tree .n-tree-node-switcher { + + cursor: pointer; + display: inline-flex; + flex-shrink: 0; + height: var(--n-node-content-height); + align-items: center; + justify-content: center; + transition: transform .15s var(--n-bezier); + vertical-align: bottom; + +} + +.n-tree .n-tree-node-switcher .n-tree-node-switcher__icon { + + position: relative; + height: 14px; + width: 14px; + display: flex; + color: var(--n-arrow-color); + transition: color .3s var(--n-bezier); + font-size: 14px; + +} + +.n-tree .n-tree-node-switcher .n-tree-node-switcher__icon .n-icon.icon-switch-transition-enter-from, .n-tree .n-tree-node-switcher .n-tree-node-switcher__icon .n-icon.icon-switch-transition-leave-to { + transform: scale(0.75); + left: 0; + top: 0; + opacity: 0; +} + +.n-tree .n-tree-node-switcher .n-tree-node-switcher__icon .n-icon.icon-switch-transition-enter-to, .n-tree .n-tree-node-switcher .n-tree-node-switcher__icon .n-icon.icon-switch-transition-leave-from { + transform: scale(1) ; + left: 0; + top: 0; + opacity: 1; +} + +.n-tree .n-tree-node-switcher .n-tree-node-switcher__icon .n-icon.icon-switch-transition-enter-active, .n-tree .n-tree-node-switcher .n-tree-node-switcher__icon .n-icon.icon-switch-transition-leave-active { + transform-origin: center; + position: absolute; + left: 0; + top: 0; + transition: all .3s cubic-bezier(.4, 0, .2, 1) !important; +} + +.n-tree .n-tree-node-switcher .n-tree-node-switcher__icon .n-base-loading { + + color: var(--n-loading-color); + position: absolute; + left: 0; + top: 0; + right: 0; + bottom: 0; + +} + +.n-tree .n-tree-node-switcher .n-tree-node-switcher__icon .n-base-loading.icon-switch-transition-enter-from, .n-tree .n-tree-node-switcher .n-tree-node-switcher__icon .n-base-loading.icon-switch-transition-leave-to { + transform: scale(0.75); + left: 0; + top: 0; + opacity: 0; +} + +.n-tree .n-tree-node-switcher .n-tree-node-switcher__icon .n-base-loading.icon-switch-transition-enter-to, .n-tree .n-tree-node-switcher .n-tree-node-switcher__icon .n-base-loading.icon-switch-transition-leave-from { + transform: scale(1) ; + left: 0; + top: 0; + opacity: 1; +} + +.n-tree .n-tree-node-switcher .n-tree-node-switcher__icon .n-base-loading.icon-switch-transition-enter-active, .n-tree .n-tree-node-switcher .n-tree-node-switcher__icon .n-base-loading.icon-switch-transition-leave-active { + transform-origin: center; + position: absolute; + left: 0; + top: 0; + transition: all .3s cubic-bezier(.4, 0, .2, 1) !important; +} + +.n-tree .n-tree-node-switcher .n-tree-node-switcher__icon .n-base-icon.icon-switch-transition-enter-from, .n-tree .n-tree-node-switcher .n-tree-node-switcher__icon .n-base-icon.icon-switch-transition-leave-to { + transform: scale(0.75); + left: 0; + top: 0; + opacity: 0; +} + +.n-tree .n-tree-node-switcher .n-tree-node-switcher__icon .n-base-icon.icon-switch-transition-enter-to, .n-tree .n-tree-node-switcher .n-tree-node-switcher__icon .n-base-icon.icon-switch-transition-leave-from { + transform: scale(1) ; + left: 0; + top: 0; + opacity: 1; +} + +.n-tree .n-tree-node-switcher .n-tree-node-switcher__icon .n-base-icon.icon-switch-transition-enter-active, .n-tree .n-tree-node-switcher .n-tree-node-switcher__icon .n-base-icon.icon-switch-transition-leave-active { + transform-origin: center; + position: absolute; + left: 0; + top: 0; + transition: all .3s cubic-bezier(.4, 0, .2, 1) !important; +} + +.n-tree .n-tree-node-switcher.n-tree-node-switcher--hide { +visibility: hidden; +} + +.n-tree .n-tree-node-switcher.n-tree-node-switcher--expanded { +transform: rotate(90deg); +} + +.n-tree .n-tree-node-checkbox { + + display: inline-flex; + height: var(--n-node-content-height); + vertical-align: bottom; + align-items: center; + justify-content: center; + +} + +.n-tree .n-tree-node-content { + + user-select: none; + position: relative; + display: inline-flex; + align-items: center; + min-height: var(--n-node-content-height); + box-sizing: border-box; + line-height: var(--n-line-height); + vertical-align: bottom; + padding: 0 6px 0 4px; + cursor: default; + border-radius: var(--n-node-border-radius); + color: var(--n-node-text-color); + transition: + color .3s var(--n-bezier), + background-color .3s var(--n-bezier), + border-color .3s var(--n-bezier); + +} + +.n-tree .n-tree-node-content:last-child { +margin-bottom: 0; +} + +.n-tree .n-tree-node-content .n-tree-node-content__prefix { + + display: inline-flex; + margin-right: 8px; + +} + +.n-tree .n-tree-node-content .n-tree-node-content__text { + + border-bottom: 1px solid #0000; + transition: border-color .3s var(--n-bezier); + flex-grow: 1; + max-width: 100%; + +} + +.n-tree .n-tree-node-content .n-tree-node-content__suffix { + + display: inline-flex; + +} + +.n-tree .n-tree__empty { +margin: auto; +} + +/* thing/src/styles/index.cssr.mjs */ +.n-thing { + + display: flex; + transition: color .3s var(--n-bezier); + font-size: var(--n-font-size); + color: var(--n-text-color); + +} + +.n-thing .n-thing-avatar { + + margin-right: 12px; + margin-top: 2px; + +} + +.n-thing .n-thing-avatar-header-wrapper { + + display: flex; + flex-wrap: nowrap; + +} + +.n-thing .n-thing-avatar-header-wrapper .n-thing-header-wrapper { + + flex: 1; + +} + +.n-thing .n-thing-main { + + flex-grow: 1; + +} + +.n-thing .n-thing-main .n-thing-header { + + display: flex; + margin-bottom: 4px; + justify-content: space-between; + align-items: center; + +} + +.n-thing .n-thing-main .n-thing-header .n-thing-header__title { + + font-size: 16px; + font-weight: var(--n-title-font-weight); + transition: color .3s var(--n-bezier); + color: var(--n-title-text-color); + +} + +.n-thing .n-thing-main .n-thing-main__description:not(:last-child) { + + margin-bottom: 4px; + +} + +.n-thing .n-thing-main .n-thing-main__content:not(:first-child) { + + margin-top: 12px; + +} + +.n-thing .n-thing-main .n-thing-main__footer:not(:first-child) { + + margin-top: 12px; + +} + +.n-thing .n-thing-main .n-thing-main__action:not(:first-child) { + + margin-top: 12px; + +} + +/* auto-complete/src/styles/index.cssr.mjs */ +.n-auto-complete { + + z-index: auto; + position: relative; + display: inline-flex; + width: 100%; + +} + +.n-auto-complete-menu { + + margin: 4px 0; + box-shadow: var(--n-menu-box-shadow); + +} + +.n-auto-complete-menu.fade-in-scale-up-transition-leave-active { + transform-origin: inherit; + transition: opacity .2s cubic-bezier(.4, 0, 1, 1), transform .2s cubic-bezier(.4, 0, 1, 1) ,background-color .3s var(--n-bezier), box-shadow .3s var(--n-bezier); +} + +.n-auto-complete-menu.fade-in-scale-up-transition-enter-active { + transform-origin: inherit; + transition: opacity .2s cubic-bezier(0, 0, .2, 1), transform .2s cubic-bezier(0, 0, .2, 1) ,background-color .3s var(--n-bezier), box-shadow .3s var(--n-bezier); +} + +.n-auto-complete-menu.fade-in-scale-up-transition-enter-from, .n-auto-complete-menu.fade-in-scale-up-transition-leave-to { + opacity: 0; + transform: scale(.9); +} + +.n-auto-complete-menu.fade-in-scale-up-transition-leave-from, .n-auto-complete-menu.fade-in-scale-up-transition-enter-to { + opacity: 1; + transform: scale(1); +} + +/* cascader/src/styles/index.cssr.mjs */ +.n-cascader-menu { + + outline: none; + position: relative; + margin: 4px 0; + display: flex; + flex-flow: column nowrap; + border-radius: var(--n-menu-border-radius); + overflow: hidden; + box-shadow: var(--n-menu-box-shadow); + color: var(--n-option-text-color); + background-color: var(--n-menu-color); + +} + +.n-cascader-menu.fade-in-scale-up-transition-leave-active { + transform-origin: inherit; + transition: opacity 0.2s cubic-bezier(.4, 0, 1, 1), transform 0.2s cubic-bezier(.4, 0, 1, 1) ; +} + +.n-cascader-menu.fade-in-scale-up-transition-enter-active { + transform-origin: inherit; + transition: opacity 0.2s cubic-bezier(0, 0, .2, 1), transform 0.2s cubic-bezier(0, 0, .2, 1) ; +} + +.n-cascader-menu.fade-in-scale-up-transition-enter-from, .n-cascader-menu.fade-in-scale-up-transition-leave-to { + opacity: 0; + transform: scale(.9); +} + +.n-cascader-menu.fade-in-scale-up-transition-leave-from, .n-cascader-menu.fade-in-scale-up-transition-enter-to { + opacity: 1; + transform: scale(1); +} + +.n-cascader-menu .n-cascader-menu__empty { + + display: flex; + padding: 12px 32px; + flex: 1; + justify-content: center; + +} + +.n-cascader-menu .n-scrollbar { + + width: 100%; + +} + +.n-cascader-menu .n-base-menu-mask { + + background-color: var(--n-menu-mask-color); + +} + +.n-cascader-menu .n-base-loading { + + color: var(--n-loading-color); + +} + +.n-cascader-menu .n-cascader-submenu-wrapper { + + position: relative; + display: flex; + flex-wrap: nowrap; + +} + +.n-cascader-menu .n-cascader-submenu { + + height: var(--n-menu-height); + min-width: var(--n-column-width); + position: relative; + +} + +.n-cascader-menu .n-cascader-submenu.n-cascader-submenu--virtual { + + width: var(--n-column-width); + +} + +.n-cascader-menu .n-cascader-submenu .n-scrollbar-content { + + position: relative; + +} + +.n-cascader-menu .n-cascader-submenu:first-child { + + border-top-left-radius: var(--n-menu-border-radius); + border-bottom-left-radius: var(--n-menu-border-radius); + +} + +.n-cascader-menu .n-cascader-submenu:last-child { + + border-top-right-radius: var(--n-menu-border-radius); + border-bottom-right-radius: var(--n-menu-border-radius); + +} + +.n-cascader-menu .n-cascader-submenu:not(:first-child) { + + border-left: 1px solid var(--n-menu-divider-color); + +} + +.n-cascader-menu .n-cascader-menu-action { + + box-sizing: border-box; + padding: 8px; + border-top: 1px solid var(--n-menu-divider-color); + +} + +.n-cascader-menu .n-cascader-option { + + height: var(--n-option-height); + line-height: var(--n-option-height); + font-size: var(--n-option-font-size); + padding: 0 0 0 18px; + box-sizing: border-box; + min-width: 182px; + background-color: #0000; + display: flex; + align-items: center; + white-space: nowrap; + position: relative; + cursor: pointer; + transition: + background-color .2s var(--n-bezier), + color 0.2s var(--n-bezier); + +} + +.n-cascader-menu .n-cascader-option.n-cascader-option--show-prefix { + + padding-left: 0; + +} + +.n-cascader-menu .n-cascader-option .n-cascader-option__label { + + flex: 1 0 0; + overflow: hidden; + text-overflow: ellipsis; + +} + +.n-cascader-menu .n-cascader-option .n-cascader-option__prefix { + + min-width: 32px; + display: flex; + align-items: center; + justify-content: center; + +} + +.n-cascader-menu .n-cascader-option .n-cascader-option__suffix { + + min-width: 32px; + display: flex; + align-items: center; + justify-content: center; + +} + +.n-cascader-menu .n-cascader-option .n-cascader-option-icon-placeholder { + + line-height: 0; + position: relative; + width: 16px; + height: 16px; + font-size: 16px; + +} + +.n-cascader-menu .n-cascader-option .n-cascader-option-icon-placeholder .n-cascader-option-icon.n-cascader-option-icon--checkmark { + + color: var(--n-option-check-mark-color); + +} + +.n-cascader-menu .n-cascader-option .n-cascader-option-icon-placeholder .n-cascader-option-icon.n-cascader-option-icon--checkmark.fade-in-scale-up-transition-leave-active { + transform-origin: inherit; + transition: opacity .2s cubic-bezier(.4, 0, 1, 1), transform .2s cubic-bezier(.4, 0, 1, 1) ,background-color .3s var(--n-bezier), box-shadow .3s var(--n-bezier); +} + +.n-cascader-menu .n-cascader-option .n-cascader-option-icon-placeholder .n-cascader-option-icon.n-cascader-option-icon--checkmark.fade-in-scale-up-transition-enter-active { + transform-origin: inherit; + transition: opacity .2s cubic-bezier(0, 0, .2, 1), transform .2s cubic-bezier(0, 0, .2, 1) ,background-color .3s var(--n-bezier), box-shadow .3s var(--n-bezier); +} + +.n-cascader-menu .n-cascader-option .n-cascader-option-icon-placeholder .n-cascader-option-icon.n-cascader-option-icon--checkmark.fade-in-scale-up-transition-enter-from, .n-cascader-menu .n-cascader-option .n-cascader-option-icon-placeholder .n-cascader-option-icon.n-cascader-option-icon--checkmark.fade-in-scale-up-transition-leave-to { + opacity: 0; + transform: scale(.9); +} + +.n-cascader-menu .n-cascader-option .n-cascader-option-icon-placeholder .n-cascader-option-icon.n-cascader-option-icon--checkmark.fade-in-scale-up-transition-leave-from, .n-cascader-menu .n-cascader-option .n-cascader-option-icon-placeholder .n-cascader-option-icon.n-cascader-option-icon--checkmark.fade-in-scale-up-transition-enter-to { + opacity: 1; + transform: scale(1); +} + +.n-cascader-menu .n-cascader-option .n-cascader-option-icon-placeholder .n-cascader-option-icon.n-cascader-option-icon--arrow { + + color: var(--n-option-arrow-color); + +} + +.n-cascader-menu .n-cascader-option.n-cascader-option--selected { + + color: var(--n-option-text-color-active); + +} + +.n-cascader-menu .n-cascader-option.n-cascader-option--active { + + color: var(--n-option-text-color-active); + background-color: var(--n-option-color-hover); + +} + +.n-cascader-menu .n-cascader-option.n-cascader-option--pending { + + background-color: var(--n-option-color-hover); + +} + +.n-cascader-menu .n-cascader-option:hover { + + background-color: var(--n-option-color-hover); + +} + +.n-cascader-menu .n-cascader-option.n-cascader-option--disabled { + + color: var(--n-option-text-color-disabled); + background-color: #0000; + cursor: not-allowed; + +} + +.n-cascader-menu .n-cascader-option.n-cascader-option--disabled .n-cascader-option-icon.n-cascader-option-icon--arrow { + + color: var(--n-option-text-color-disabled); + +} + +.n-cascader { + + z-index: auto; + position: relative; + width: 100%; + +} + +/* dynamic-input/src/styles/index.cssr.mjs */ +.n-dynamic-input { + width: 100%; +} + +.n-dynamic-input .n-dynamic-input-item { + + margin-bottom: 10px; + display: flex; + flex-wrap: nowrap; + +} + +.n-dynamic-input .n-dynamic-input-item .n-dynamic-input-preset-input { + flex: 1; + align-items: center; +} + +.n-dynamic-input .n-dynamic-input-item .n-dynamic-input-preset-pair { + + flex: 1; + display: flex; + align-items: center; + +} + +.n-dynamic-input .n-dynamic-input-item .n-dynamic-input-preset-pair .n-dynamic-input-pair-input:first-child { + margin-right: 12px; +} + +.n-dynamic-input .n-dynamic-input-item .n-dynamic-input-item__action { + + align-self: flex-start; + display: flex; + justify-content: flex-end; + flex-shrink: 0; + flex-grow: 0; + margin: var(--action-margin); + +} + +.n-dynamic-input .n-dynamic-input-item .n-dynamic-input-item__action.n-dynamic-input-item__action--icon { + cursor: pointer; +} + +.n-dynamic-input .n-dynamic-input-item:last-child { + margin-bottom: 0; +} + +.n-dynamic-input .n-form-item { + + padding-top: 0 !important; + margin-right: 0 !important; + +} + +.n-dynamic-input .n-form-item .n-form-item-blank { + padding-top: 0 !important; +} + +/* dynamic-tags/src/styles/index.cssr.mjs */ +.n-dynamic-tags .n-input { + min-width: var(--n-input-width); +} \ No newline at end of file diff --git a/assets/admin/build/shared-api.B7o7Pzvu.js b/assets/admin/build/shared-api.B7o7Pzvu.js new file mode 100644 index 00000000..ca0d41ad --- /dev/null +++ b/assets/admin/build/shared-api.B7o7Pzvu.js @@ -0,0 +1,55 @@ +import{_ as q}from"./FaIcon.CX_hGmM4.js";import{r as P,W as t,X as _,Y as r,a2 as y,a5 as A,Z as g,l as F,a4 as d,a3 as c,j as Ee,v as Ge,z as Re,a1 as k,f as j,F as T,R as $,L as X,c as R,o as te,w as le,b as Ve,x as Ke,ab as He,m as xe}from"./vendor-vue.Bykizn0M.js";import{_ as K}from"./index.js";import{ba as W,bb as Ne,bc as Be,bd as J,be as Je,bf as Fe,bg as Xe}from"./vendor-misc.1adHN6i_.js";import{a as ae}from"./shared-api.D5_fnN32.js";const We={class:"aksrt-field-group"},Qe={key:0,class:"aksrt-field-group__header"},Ze={class:"aksrt-field-group__header-left"},Ye={class:"aksrt-field-group__title"},ea={key:0,class:"aksrt-field-group__desc"},aa={key:0,class:"aksrt-field-group__actions"},la={class:"aksrt-field-group__toggle-text"},ta={class:"aksrt-field-group__body"},sa={__name:"AksFieldGroup",props:{title:{type:String,default:""},description:{type:String,default:""},icon:{type:String,default:""},collapsible:{type:Boolean,default:!1},defaultCollapsed:{type:Boolean,default:!1}},setup(e){const s=P(e.defaultCollapsed);function u(){s.value=!s.value}return(p,v)=>(t(),_("div",We,[e.title?(t(),_("div",Qe,[r("div",Ze,[e.icon?(t(),y(q,{key:0,icon:e.icon,size:16,class:"aksrt-field-group__icon"},null,8,["icon"])):A("",!0),r("div",null,[r("h3",Ye,g(e.title),1),e.description?(t(),_("p",ea,g(e.description),1)):A("",!0)])]),p.$slots.actions?(t(),_("div",aa,[F(p.$slots,"actions",{},void 0,!0)])):A("",!0)])):A("",!0),e.collapsible?(t(),_("div",{key:1,class:"aksrt-field-group__toggle",onClick:u},[d(q,{icon:s.value?"fas fa-chevron-right":"fas fa-chevron-down",size:12,class:"aksrt-field-group__chevron"},null,8,["icon"]),r("span",la,g(s.value?"展开":"收起")+g(e.title?` ${e.title}`:""),1)])):A("",!0),d(Re,{name:"aksrt-collapse"},{default:c(()=>[Ee(r("div",ta,[F(p.$slots,"default",{},void 0,!0)],512),[[Ge,!s.value]])]),_:3})]))}},ia=K(sa,[["__scopeId","data-v-c4357731"]]),na={class:"aksrt-fa-icon-picker"},_a={class:"aksrt-icon-picker__panel"},oa={class:"aksrt-icon-picker__search"},da={class:"aksrt-icon-picker__tabs"},ua=["title","onClick"],ra={key:0,class:"aksrt-icon-picker__empty"},pa={__name:"FaIconPicker",props:{modelValue:{type:String,default:""},placeholder:{type:String,default:"选择图标"}},emits:["update:modelValue"],setup(e,{emit:z}){const s=z,u=P(""),p=P("fas"),v=P(null),O=["fa-home","fa-cog","fa-cogs","fa-wrench","fa-sliders-h","fa-tools","fa-search","fa-filter","fa-sort","fa-sync","fa-redo","fa-undo","fa-plus","fa-minus","fa-times","fa-check","fa-exclamation","fa-info","fa-question","fa-bell","fa-envelope","fa-comment","fa-comments","fa-user","fa-users","fa-user-plus","fa-user-shield","fa-user-circle","fa-lock","fa-unlock","fa-key","fa-shield-alt","fa-fingerprint","fa-globe","fa-globe-americas","fa-link","fa-external-link-alt","fa-anchor","fa-image","fa-images","fa-camera","fa-video","fa-music","fa-file","fa-folder","fa-folder-open","fa-download","upload","fa-cloud","fa-database","fa-server","fa-hdd","fa-memory","fa-microchip","fa-desktop","fa-laptop","fa-mobile-alt","fa-tablet-alt","fa-chart-bar","fa-chart-line","fa-chart-pie","fa-chart-area","fa-tachometer-alt","fa-tasks","fa-clipboard","fa-clipboard-list","fa-list","fa-list-alt","fa-list-ol","fa-list-ul","fa-th","fa-th-large","fa-tags","fa-tag","fa-bookmark","fa-star","fa-heart","fa-thumbs-up","fa-share","fa-share-alt","fa-external-link-alt","fa-clipboard-check","fa-eye","fa-eye-slash","fa-lightbulb","fa-magic","fa-palette","fa-paint-brush","fa-font","fa-text-height","fa-bold","fa-italic","fa-code","fa-terminal","fa-bug","fa-exclamation-triangle","fa-exclamation-circle","fa-check-circle","fa-info-circle","fa-spinner","fa-circle-notch","fa-hourglass-half","fa-clock","fa-calendar","fa-calendar-alt","fa-history","fa-hourglass","fa-map-marker-alt","fa-map","fa-directions","fa-compass","fa-shopping-cart","fa-shopping-bag","fa-credit-card","fa-money-bill","fa-coins","fa-dollar-sign","fa-wallet","fa-receipt","fa-newspaper","fa-rss","fa-podcast","fa-megaphone","fa-flag","fa-trophy","fa-award","fa-medal","fa-gift","fa-fire","fa-bolt","fa-sun","fa-moon","fa-cloud-sun","fa-male","fa-female","fa-child","fa-id-card","fa-paper-plane","fa-paperclip","fa-at","fa-hashtag","fa-ellipsis-h","fa-ellipsis-v","fa-bars","fa-columns","fa-window-maximize","fa-window-minimize","fa-window-close","fa-expand","fa-compress","fa-arrows-alt","fa-crosshairs","fa-sign-in-alt","fa-sign-out-alt","fa-door-open","fa-plug","fa-power-off","fa-redo-alt","fa-sync-alt"],i={fas:O,far:["fa-heart","fa-star","fa-bookmark","fa-user","fa-envelope","fa-comment","fa-comments","fa-bell","fa-clock","fa-calendar","fa-clipboard","fa-file","fa-folder","fa-image","fa-eye","fa-thumbs-up","fa-flag","fa-share-square","fa-hand-point-right","fa-life-ring","fa-lightbulb","fa-question-circle","fa-check-circle","fa-times-circle","fa-dot-circle","fa-circle","fa-square","fa-moon","fa-sun","fa-snowflake","fa-lemon","fa-gem","fa-copy","fa-edit","fa-trash-alt","fa-save","fa-window-maximize","fa-window-minimize","fa-window-close","fa-caret-square-right","fa-address-book","fa-address-card","fa-id-badge","fa-building","fa-chart-bar","fa-newspaper","fa-map"],fab:["fa-github","fa-gitlab","fa-bitbucket","fa-google","fa-google-plus","fa-facebook","fa-facebook-f","fa-twitter","fa-x-twitter","fa-instagram","fa-linkedin","fa-linkedin-in","fa-youtube","fa-weixin","fa-qq","fa-weibo","fa-telegram","fa-telegram-plane","fa-discord","fa-slack","fa-whatsapp","fa-skype","fa-apple","fa-windows","fa-linux","fa-android","fa-chrome","fa-firefox","fa-edge","fa-safari","fa-opera","fa-html5","fa-css3-alt","fa-js","fa-js-square","fa-node","fa-react","fa-vuejs","fa-angular","fa-php","fa-python","fa-java","fa-rust","fa-golang","fa-swift","fa-docker","fa-aws","fa-digital-ocean","fa-cloudflare","fa-wordpress","fa-joomla","fa-drupal","fa-shopify","fa-paypal","fa-stripe","fa-alipay","fa-weixin","fa-tiktok","fa-snapchat","fa-pinterest","fa-reddit","fa-stack-overflow","fa-codepen","fa-npm","fa-yarn","fa-twitch","fa-spotify","fa-soundcloud","fa-music","fa-bilibili"]},o=R(()=>{const I=i[p.value]||O,f=u.value.toLowerCase().replace(/\s+/g,"");return f?I.filter(C=>C.includes(f)):I});function x(I){s("update:modelValue",`${p.value} ${I}`)}return(I,f)=>{const C=k("n-input"),m=k("n-radio-button"),w=k("n-radio-group"),D=k("n-popover");return t(),_("div",na,[d(D,{trigger:"click",placement:"bottom-start",width:360,style:{padding:0}},{trigger:c(()=>[d(C,{value:e.modelValue,placeholder:e.placeholder,readonly:"",clearable:"",onClear:f[0]||(f[0]=S=>I.$emit("update:modelValue",""))},{prefix:c(()=>[e.modelValue?(t(),y(q,{key:0,icon:e.modelValue},null,8,["icon"])):A("",!0)]),suffix:c(()=>[d(q,{icon:"fas fa-chevron-down",size:12})]),_:1},8,["value","placeholder"])]),default:c(()=>[r("div",_a,[r("div",oa,[d(C,{value:u.value,"onUpdate:value":f[1]||(f[1]=S=>u.value=S),placeholder:"搜索图标...",size:"small",clearable:""},{prefix:c(()=>[d(q,{icon:"fas fa-search",size:12})]),_:1},8,["value"])]),r("div",da,[d(w,{value:p.value,"onUpdate:value":f[2]||(f[2]=S=>p.value=S),size:"small"},{default:c(()=>[d(m,{value:"fas"},{default:c(()=>[...f[3]||(f[3]=[j("Solid",-1)])]),_:1}),d(m,{value:"far"},{default:c(()=>[...f[4]||(f[4]=[j("Regular",-1)])]),_:1}),d(m,{value:"fab"},{default:c(()=>[...f[5]||(f[5]=[j("Brands",-1)])]),_:1})]),_:1},8,["value"])]),r("div",{class:"aksrt-icon-picker__grid",ref_key:"gridRef",ref:v},[(t(!0),_(T,null,$(o.value,S=>(t(),_("div",{key:S,class:X(["aksrt-icon-picker__item",{"is-active":e.modelValue===`${p.value} ${S}`}]),title:S,onClick:L=>x(S)},[r("i",{class:X([p.value,S])},null,2)],10,ua))),128)),o.value.length===0?(t(),_("div",ra," 未找到匹配图标 ")):A("",!0)],512)])]),_:1})])}}},ya=K(pa,[["__scopeId","data-v-29954567"]]),ca={class:"aksrt-media-field"},ba={key:0,class:"aksrt-media-field__preview"},fa=["src","alt"],ma={key:1,class:"aksrt-media-field__file"},ha={class:"aksrt-media-field__filename"},ka={class:"aksrt-media-field__overlay"},va={__name:"AksMediaField",props:{modelValue:{type:String,default:""},accept:{type:String,default:"image/*"},placeholder:{type:String,default:"选择图片"}},emits:["update:modelValue"],setup(e,{emit:z}){const s=e,u=z,p=R(()=>s.modelValue?/\.(jpg|jpeg|png|gif|webp|svg|bmp|ico)(\?.*)?$/i.test(s.modelValue)||s.modelValue.startsWith("data:image/"):!1),v=R(()=>{if(!s.modelValue)return"";try{const i=new URL(s.modelValue,window.location.origin).pathname.split("/");return i[i.length-1]||s.modelValue}catch{const b=s.modelValue.split("/");return b[b.length-1]||s.modelValue}});function O(){if(typeof wp<"u"&&wp.media){const b=wp.media({title:s.placeholder,multiple:!1,library:{type:s.accept==="image/*"?"image":void 0}});b.on("select",()=>{const i=b.state().get("selection").first().toJSON();u("update:modelValue",i.url)}),b.open()}}function V(){u("update:modelValue","")}return(b,i)=>{const o=k("n-button"),x=k("n-input");return t(),_("div",ca,[e.modelValue?(t(),_("div",ba,[p.value?(t(),_("img",{key:0,src:e.modelValue,alt:e.placeholder,class:"aksrt-media-field__image"},null,8,fa)):(t(),_("div",ma,[d(q,{icon:"fas fa-file",size:24}),r("span",ha,g(v.value),1)])),r("div",ka,[d(o,{size:"tiny",quaternary:"",onClick:O},{default:c(()=>[d(q,{icon:"fas fa-exchange-alt"}),i[1]||(i[1]=j(" 更换 ",-1))]),_:1}),d(o,{size:"tiny",quaternary:"",type:"error",onClick:V},{default:c(()=>[d(q,{icon:"fas fa-trash"}),i[2]||(i[2]=j(" 移除 ",-1))]),_:1})])])):(t(),_("div",{key:1,class:"aksrt-media-field__empty",onClick:O},[d(q,{icon:"fas fa-cloud-upload-alt",size:28}),r("span",null,g(e.placeholder),1)])),d(x,{value:e.modelValue,placeholder:"或直接输入 URL",size:"small",class:"aksrt-media-field__url","onUpdate:value":i[0]||(i[0]=I=>u("update:modelValue",I))},null,8,["value"])])}}},Oe=K(va,[["__scopeId","data-v-2b281958"]]),ga={__name:"AksCodeEditor",props:{modelValue:{type:String,default:""},language:{type:String,default:"html"},disabled:{type:Boolean,default:!1},rows:{type:Number,default:8}},emits:["update:modelValue"],setup(e,{emit:z}){const s=e,u=z,p=P(null),v=Ke(null);let O=!1;function V(b){switch(b){case"css":return Xe();case"js":case"javascript":return Fe();case"html":default:return Je()}}return te(()=>{if(!p.value)return;const b=W.create({doc:s.modelValue||"",extensions:[Ne,V(s.language),Be,J.updateListener.of(i=>{if(i.docChanged&&!O){const o=i.state.doc.toString();u("update:modelValue",o)}}),J.editable.of(!s.disabled),W.readOnly.of(s.disabled)]});v.value=new J({state:b,parent:p.value})}),le(()=>s.modelValue,b=>{if(!v.value)return;const i=v.value.state.doc.toString();b!==i&&(O=!0,v.value.dispatch({changes:{from:0,to:i.length,insert:b||""}}),O=!1)}),le(()=>s.disabled,b=>{v.value&&v.value.dispatch({effects:[J.editable.reconfigure(J.editable.of(!b)),W.readOnly.reconfigure(W.readOnly.of(b))]})}),Ve(()=>{v.value&&(v.value.destroy(),v.value=null)}),(b,i)=>(t(),_("div",{ref_key:"editorRef",ref:p,class:X(["aks-code-editor",{"is-disabled":e.disabled}])},null,2))}},wa=K(ga,[["__scopeId","data-v-28406ea7"]]),xa={class:"aksrt-field__label-row"},Oa={class:"aksrt-field__label"},Sa={key:0,class:"aksrt-field__required"},za={key:0,class:"aksrt-field__desc"},Aa=["innerHTML"],Va={key:19,class:"aksrt-field__dimensions"},Ia={key:20,class:"aksrt-field__spacing"},qa={class:"aksrt-field__spacing-label"},ja={class:"aksrt-field__spacing-label"},Pa={class:"aksrt-field__spacing-label"},Ca={class:"aksrt-field__spacing-label"},La={key:21,class:"aksrt-field__background"},Ta={class:"aksrt-field__background-row"},Da={class:"aksrt-field__background-row"},Ua={class:"aksrt-field__background-row"},$a={class:"aksrt-field__background-row"},Ma={class:"aksrt-field__background-row"},Ea={key:22,class:"aksrt-field__image-select"},Ga=["onClick"],Ra=["src","alt"],Ka={key:1,class:"aksrt-field__image-select-placeholder"},Ha={class:"aksrt-field__image-select-label"},Na={key:23,class:"aksrt-field__repeater"},Ba={class:"aksrt-field__repeater-header"},Ja={class:"aksrt-field__repeater-index"},Fa={class:"aksrt-field__repeater-fields"},Xa={key:26,class:"aksrt-field__error"},Wa={__name:"AksField",props:{schema:{type:Object,required:!0},modelValue:{default:null},errorMessage:{type:String,default:""}},emits:["update:modelValue"],setup(e,{emit:z}){const s=e,u=z,p=R(()=>(s.schema.options||[]).map(a=>typeof a=="string"?{label:a,value:a}:typeof a=="object"&&a!==null?{label:a.label??a.name??a.value,value:a.value??a.label??a.name}:{label:String(a),value:a})),v=P([]),O=P(!1);async function V(){if(s.schema.taxonomy){O.value=!0;try{const n=await ae.getCategories(),a=(n==null?void 0:n.data)||n||[];v.value=(Array.isArray(a)?a:[]).map(h=>({label:h.name+(h.count?" ("+h.count+")":""),value:h.term_id}))}catch(n){console.warn("[AksField] taxonomy load failed:",n),v.value=[]}finally{O.value=!1}}}te(()=>{s.schema.type==="taxonomy_select"&&V(),s.schema.type==="user_select"&&x()});const b=P([]),i=P(!1);let o=null;async function x(){i.value=!0;try{const n=await ae.searchUsers("",20),a=(n==null?void 0:n.data)||n||[];b.value=(Array.isArray(a)?a:[]).map(h=>({label:h.display_name+" ("+h.user_login+")",value:h.id}))}catch(n){console.warn("[AksField] user load failed:",n),b.value=[]}finally{i.value=!1}}function I(n){clearTimeout(o),o=setTimeout(async()=>{i.value=!0;try{const a=await ae.searchUsers(n||"",20),h=(a==null?void 0:a.data)||a||[];b.value=(Array.isArray(h)?h:[]).map(U=>({label:U.display_name+" ("+U.user_login+")",value:U.id}))}catch{b.value=[]}finally{i.value=!1}},300)}const f=R(()=>({"aksrt-field--disabled":s.schema.disabled,"aksrt-field--inline":s.schema.inline,[`aksrt-field--${s.schema.type}`]:!!s.schema.type})),C=[{label:"px",value:"px"},{label:"%",value:"%"},{label:"em",value:"em"},{label:"rem",value:"rem"},{label:"vw",value:"vw"}];function m(n,a){const h=s.modelValue||{};u("update:modelValue",{...h,[n]:a})}function w(n,a){const h=s.modelValue||{};u("update:modelValue",{...h,[n]:a})}const D=[{label:"覆盖",value:"cover"},{label:"包含",value:"contain"},{label:"原始大小",value:"auto"}],S=[{label:"居中",value:"center center"},{label:"顶部居中",value:"top center"},{label:"底部居中",value:"bottom center"},{label:"左侧居中",value:"center left"},{label:"右侧居中",value:"center right"}],L=[{label:"不重复",value:"no-repeat"},{label:"平铺",value:"repeat"},{label:"水平平铺",value:"repeat-x"},{label:"垂直平铺",value:"repeat-y"}];function M(n,a){const h=s.modelValue||{};u("update:modelValue",{...h,[n]:a})}let H=0;function Q(){const n=Array.isArray(s.modelValue)?[...s.modelValue]:[],a={_id:`rpt_${Date.now()}_${++H}`};for(const h of s.schema.fields||[])h.default!==void 0&&(a[h.key]=h.default);n.push(a),u("update:modelValue",n)}function Z(n){const a=Array.isArray(s.modelValue)?[...s.modelValue]:[];a.splice(n,1),u("update:modelValue",a)}function Y(n,a,h){const U=Array.isArray(s.modelValue)?[...s.modelValue]:[];U[n]={...U[n],[a]:h},u("update:modelValue",U)}return(n,a)=>{var _e,oe,de,ue,re,pe,ye,ce,be,fe,me,he,ke,ve,ge,we;const h=k("n-tooltip"),U=k("n-switch"),ee=k("n-input"),E=k("n-input-number"),G=k("n-select"),Ie=k("n-radio"),se=k("n-space"),qe=k("n-radio-button"),je=k("n-radio-group"),Pe=k("n-checkbox"),Ce=k("n-checkbox-group"),ie=k("n-color-picker"),Le=k("n-slider"),Te=k("n-alert"),De=k("n-date-picker"),Ue=k("n-time-picker"),ne=k("n-button"),$e=k("AksField",!0);return t(),_("div",{class:X(["aksrt-field",f.value])},[r("div",xa,[r("label",Oa,[j(g(e.schema.label)+" ",1),e.schema.required?(t(),_("span",Sa,"*")):A("",!0)]),e.schema.help?(t(),y(h,{key:0,trigger:"hover"},{trigger:c(()=>[d(q,{icon:"fas fa-question-circle",size:13,class:"aksrt-field__help-icon"})]),default:c(()=>[j(" "+g(e.schema.help),1)]),_:1})):A("",!0)]),e.schema.description&&!e.schema.help?(t(),_("p",za,g(e.schema.description),1)):A("",!0),e.schema.type==="switch"?(t(),y(U,{key:1,value:e.modelValue,"onUpdate:value":a[0]||(a[0]=l=>u("update:modelValue",l))},null,8,["value"])):e.schema.type==="input"||e.schema.type==="text"?(t(),y(ee,{key:2,value:e.modelValue,placeholder:e.schema.placeholder||"",type:e.schema.inputType||"text",disabled:e.schema.disabled,"onUpdate:value":a[1]||(a[1]=l=>u("update:modelValue",l))},He({_:2},[e.schema.prefix?{name:"prefix",fn:c(()=>[j(g(e.schema.prefix),1)]),key:"0"}:void 0,e.schema.suffix?{name:"suffix",fn:c(()=>[j(g(e.schema.suffix),1)]),key:"1"}:void 0]),1032,["value","placeholder","type","disabled"])):e.schema.type==="textarea"?(t(),y(ee,{key:3,value:e.modelValue,type:"textarea",placeholder:e.schema.placeholder||"",rows:e.schema.rows||4,disabled:e.schema.disabled,"onUpdate:value":a[2]||(a[2]=l=>u("update:modelValue",l))},null,8,["value","placeholder","rows","disabled"])):e.schema.type==="number"?(t(),y(E,{key:4,value:e.modelValue,min:e.schema.min,max:e.schema.max,step:e.schema.step||1,placeholder:e.schema.placeholder||"",disabled:e.schema.disabled,style:{width:"100%"},"onUpdate:value":a[3]||(a[3]=l=>u("update:modelValue",l))},null,8,["value","min","max","step","placeholder","disabled"])):e.schema.type==="select"?(t(),y(G,{key:5,value:e.modelValue,options:p.value,placeholder:e.schema.placeholder||"请选择",multiple:e.schema.multiple,clearable:e.schema.clearable!==!1,disabled:e.schema.disabled,"onUpdate:value":a[4]||(a[4]=l=>u("update:modelValue",l))},null,8,["value","options","placeholder","multiple","clearable","disabled"])):e.schema.type==="taxonomy_select"?(t(),y(G,{key:6,value:e.modelValue,options:v.value,loading:O.value,placeholder:e.schema.placeholder||"请选择分类",multiple:e.schema.multiple!==!1,filterable:!0,clearable:e.schema.clearable!==!1,disabled:e.schema.disabled,"onUpdate:value":a[5]||(a[5]=l=>u("update:modelValue",l))},null,8,["value","options","loading","placeholder","multiple","clearable","disabled"])):e.schema.type==="user_select"?(t(),y(G,{key:7,value:e.modelValue,options:b.value,loading:i.value,placeholder:e.schema.placeholder||"搜索用户",multiple:e.schema.multiple===!0,filterable:!0,remote:!0,clearable:e.schema.clearable!==!1,disabled:e.schema.disabled,onSearch:I,"onUpdate:value":a[6]||(a[6]=l=>u("update:modelValue",l))},null,8,["value","options","loading","placeholder","multiple","clearable","disabled"])):e.schema.type==="radio"?(t(),y(je,{key:8,value:e.modelValue,"onUpdate:value":a[7]||(a[7]=l=>u("update:modelValue",l))},{default:c(()=>[e.schema.buttonStyle===!1?(t(),y(se,{key:0},{default:c(()=>[(t(!0),_(T,null,$(p.value,l=>(t(),y(Ie,{key:l.value,value:l.value,disabled:e.schema.disabled},{default:c(()=>[j(g(l.label),1)]),_:2},1032,["value","disabled"]))),128))]),_:1})):(t(!0),_(T,{key:1},$(p.value,l=>(t(),y(qe,{key:l.value,value:l.value,disabled:e.schema.disabled},{default:c(()=>[j(g(l.label),1)]),_:2},1032,["value","disabled"]))),128))]),_:1},8,["value"])):e.schema.type==="checkbox"?(t(),y(Ce,{key:9,value:e.modelValue||[],"onUpdate:value":a[8]||(a[8]=l=>u("update:modelValue",l))},{default:c(()=>[d(se,null,{default:c(()=>[(t(!0),_(T,null,$(p.value,l=>(t(),y(Pe,{key:l.value,value:l.value,label:l.label,disabled:e.schema.disabled},null,8,["value","label","disabled"]))),128))]),_:1})]),_:1},8,["value"])):e.schema.type==="color"?(t(),y(ie,{key:10,value:e.modelValue,modes:["hex"],"show-alpha":e.schema.showAlpha||!1,disabled:e.schema.disabled,"onUpdate:value":a[9]||(a[9]=l=>u("update:modelValue",l))},null,8,["value","show-alpha","disabled"])):e.schema.type==="icon"?(t(),y(ya,{key:11,"model-value":e.modelValue,placeholder:e.schema.placeholder||"选择图标","onUpdate:modelValue":a[10]||(a[10]=l=>u("update:modelValue",l))},null,8,["model-value","placeholder"])):e.schema.type==="media"?(t(),y(Oe,{key:12,"model-value":e.modelValue,accept:e.schema.accept,placeholder:e.schema.placeholder||"选择图片","onUpdate:modelValue":a[11]||(a[11]=l=>u("update:modelValue",l))},null,8,["model-value","accept","placeholder"])):e.schema.type==="slider"?(t(),y(Le,{key:13,value:e.modelValue,min:e.schema.min||0,max:e.schema.max||100,step:e.schema.step||1,disabled:e.schema.disabled,marks:e.schema.marks,"onUpdate:value":a[12]||(a[12]=l=>u("update:modelValue",l))},null,8,["value","min","max","step","disabled","marks"])):e.schema.type==="code"?(t(),y(wa,{key:14,"model-value":e.modelValue,language:e.schema.language||"html",disabled:e.schema.disabled,rows:e.schema.rows||12,"onUpdate:modelValue":a[13]||(a[13]=l=>u("update:modelValue",l))},null,8,["model-value","language","disabled","rows"])):e.schema.type==="alert"||e.schema.type==="notice"?(t(),y(Te,{key:15,type:e.schema.alertType||"info",title:e.schema.alertTitle,closable:!1},{default:c(()=>[j(g(e.schema.alertContent||e.modelValue),1)]),_:1},8,["type","title"])):e.schema.type==="content"?(t(),_("div",{key:16,class:"aksrt-field__content",innerHTML:e.schema.content||e.modelValue||""},null,8,Aa)):e.schema.type==="date"?(t(),y(De,{key:17,value:e.modelValue,type:e.schema.dateType||"date",disabled:e.schema.disabled,style:{width:"100%"},"onUpdate:value":a[14]||(a[14]=l=>u("update:modelValue",l))},null,8,["value","type","disabled"])):e.schema.type==="time"?(t(),y(Ue,{key:18,value:e.modelValue,disabled:e.schema.disabled,style:{width:"100%"},"onUpdate:value":a[15]||(a[15]=l=>u("update:modelValue",l))},null,8,["value","disabled"])):e.schema.type==="dimensions"?(t(),_("div",Va,[d(E,{value:(_e=e.modelValue)==null?void 0:_e.width,min:0,placeholder:e.schema.widthPlaceholder||"宽度",disabled:e.schema.disabled,style:{flex:"1"},"onUpdate:value":a[16]||(a[16]=l=>m("width",l))},null,8,["value","placeholder","disabled"]),a[29]||(a[29]=r("span",{class:"aksrt-field__dimensions-sep"},"×",-1)),d(E,{value:(oe=e.modelValue)==null?void 0:oe.height,min:0,placeholder:e.schema.heightPlaceholder||"高度",disabled:e.schema.disabled,style:{flex:"1"},"onUpdate:value":a[17]||(a[17]=l=>m("height",l))},null,8,["value","placeholder","disabled"]),e.schema.unit?(t(),y(G,{key:0,value:(de=e.modelValue)==null?void 0:de.unit,options:C,disabled:e.schema.disabled,style:{width:"80px"},"onUpdate:value":a[18]||(a[18]=l=>m("unit",l))},null,8,["value","disabled"])):A("",!0)])):e.schema.type==="spacing"?(t(),_("div",Ia,[r("div",qa,g(((ue=e.schema.spacingLabels)==null?void 0:ue[0])||"上"),1),d(E,{value:(re=e.modelValue)==null?void 0:re.top,min:0,disabled:e.schema.disabled,"onUpdate:value":a[19]||(a[19]=l=>w("top",l))},null,8,["value","disabled"]),r("div",ja,g(((pe=e.schema.spacingLabels)==null?void 0:pe[1])||"右"),1),d(E,{value:(ye=e.modelValue)==null?void 0:ye.right,min:0,disabled:e.schema.disabled,"onUpdate:value":a[20]||(a[20]=l=>w("right",l))},null,8,["value","disabled"]),r("div",Pa,g(((ce=e.schema.spacingLabels)==null?void 0:ce[2])||"下"),1),d(E,{value:(be=e.modelValue)==null?void 0:be.bottom,min:0,disabled:e.schema.disabled,"onUpdate:value":a[21]||(a[21]=l=>w("bottom",l))},null,8,["value","disabled"]),r("div",Ca,g(((fe=e.schema.spacingLabels)==null?void 0:fe[3])||"左"),1),d(E,{value:(me=e.modelValue)==null?void 0:me.left,min:0,disabled:e.schema.disabled,"onUpdate:value":a[22]||(a[22]=l=>w("left",l))},null,8,["value","disabled"])])):e.schema.type==="background"?(t(),_("div",La,[r("div",Ta,[a[30]||(a[30]=r("label",{class:"aksrt-field__sublabel"},"背景颜色",-1)),d(ie,{value:(he=e.modelValue)==null?void 0:he.color,"show-alpha":!0,disabled:e.schema.disabled,"onUpdate:value":a[23]||(a[23]=l=>M("color",l))},null,8,["value","disabled"])]),r("div",Da,[a[31]||(a[31]=r("label",{class:"aksrt-field__sublabel"},"背景图片",-1)),d(Oe,{"model-value":(ke=e.modelValue)==null?void 0:ke.image,accept:"image/*",disabled:e.schema.disabled,"onUpdate:modelValue":a[24]||(a[24]=l=>M("image",l))},null,8,["model-value","disabled"])]),r("div",Ua,[a[32]||(a[32]=r("label",{class:"aksrt-field__sublabel"},"图片尺寸",-1)),d(G,{value:(ve=e.modelValue)==null?void 0:ve.size,options:D,disabled:e.schema.disabled,"onUpdate:value":a[25]||(a[25]=l=>M("size",l))},null,8,["value","disabled"])]),r("div",$a,[a[33]||(a[33]=r("label",{class:"aksrt-field__sublabel"},"图片位置",-1)),d(G,{value:(ge=e.modelValue)==null?void 0:ge.position,options:S,disabled:e.schema.disabled,"onUpdate:value":a[26]||(a[26]=l=>M("position",l))},null,8,["value","disabled"])]),r("div",Ma,[a[34]||(a[34]=r("label",{class:"aksrt-field__sublabel"},"图片重复",-1)),d(G,{value:(we=e.modelValue)==null?void 0:we.repeat,options:L,disabled:e.schema.disabled,"onUpdate:value":a[27]||(a[27]=l=>M("repeat",l))},null,8,["value","disabled"])])])):e.schema.type==="image_select"?(t(),_("div",Ea,[(t(!0),_(T,null,$(p.value,l=>(t(),_("div",{key:l.value,class:X(["aksrt-field__image-select-item",{"aksrt-field__image-select-item--active":e.modelValue===l.value}]),onClick:N=>!e.schema.disabled&&u("update:modelValue",l.value)},[l.image?(t(),_("img",{key:0,src:l.image,alt:l.label,class:"aksrt-field__image-select-img"},null,8,Ra)):(t(),_("div",Ka,[d(q,{icon:l.icon||"fas fa-image",size:20},null,8,["icon"])])),r("span",Ha,g(l.label),1)],10,Ga))),128))])):e.schema.type==="repeater"?(t(),_("div",Na,[(t(!0),_(T,null,$(e.modelValue||[],(l,N)=>(t(),_("div",{key:l._id||N,class:"aksrt-field__repeater-item"},[r("div",Ba,[r("span",Ja,"#"+g(N+1),1),d(ne,{size:"tiny",type:"error",text:"",disabled:e.schema.disabled,onClick:B=>Z(N)},{default:c(()=>[d(q,{icon:"fas fa-trash",size:12})]),_:1},8,["disabled","onClick"])]),r("div",Fa,[(t(!0),_(T,null,$(e.schema.fields||[],B=>(t(),y($e,{key:B.key,schema:B,"model-value":l[B.key],disabled:e.schema.disabled,"onUpdate:modelValue":Me=>Y(N,B.key,Me)},null,8,["schema","model-value","disabled","onUpdate:modelValue"]))),128))])]))),128)),d(ne,{size:"small",dashed:"",disabled:e.schema.disabled,onClick:Q},{default:c(()=>[d(q,{icon:"fas fa-plus",size:12,style:{"margin-right":"6px"}}),j(" "+g(e.schema.addText||"添加一项"),1)]),_:1},8,["disabled"])])):e.schema.type==="custom"?F(n.$slots,"default",{key:24},void 0,!0):(t(),y(ee,{key:25,value:e.modelValue,placeholder:e.schema.placeholder||"","onUpdate:value":a[28]||(a[28]=l=>u("update:modelValue",l))},null,8,["value","placeholder"])),e.errorMessage?(t(),_("p",Xa,g(e.errorMessage),1)):A("",!0)],2)}}},Se=K(Wa,[["__scopeId","data-v-8191b70d"]]),Qa={class:"aksrt-form-renderer"},Za={key:0,class:"aksrt-form-renderer__header"},Ya={class:"aksrt-form-renderer__header-left"},el={class:"aksrt-form-renderer__title"},al={key:0,class:"aksrt-form-renderer__desc"},ll={key:0,class:"aksrt-form-renderer__search"},tl={key:1,class:"aksrt-form-renderer__loading"},sl={key:4,class:"aksrt-form-renderer__empty"},il={key:5,class:"aksrt-form-renderer__save-bar"},nl={class:"aksrt-form-renderer__save-bar__inner"},_l={class:"aksrt-form-renderer__save-bar__info"},ol={class:"aksrt-form-renderer__save-bar__actions"},dl={__name:"AksFormRenderer",props:{title:{type:String,default:""},description:{type:String,default:""},icon:{type:String,default:""},schema:{type:Array,default:()=>[]},formData:{type:Object,default:()=>({})},dirty:{type:Boolean,default:!1},loading:{type:Boolean,default:!1},saving:{type:Boolean,default:!1},loadError:{type:String,default:""},showSearch:{type:Boolean,default:!0},errors:{type:Object,default:()=>({})}},emits:["update:formData","save","reload"],setup(e,{emit:z}){const s=e,u=z,p=P("");function v(i){if(!i.dependsOn)return!0;if(typeof i.dependsOn=="string")return!!s.formData[i.dependsOn];if(typeof i.dependsOn=="object"){const{key:o,value:x,not:I}=i.dependsOn,f=s.formData[o];return I?f!==x:f===x}return!0}function O(i){var o;return(o=s.formData)==null?void 0:o[i]}function V(i,o){const x={...s.formData,[i]:o};u("update:formData",x)}const b=R(()=>{var o;const i=(o=p.value)==null?void 0:o.toLowerCase().trim();return i?s.schema.map(x=>{if(!x.fields)return null;const I=(x.title||"").toLowerCase().includes(i)||(x.description||"").toLowerCase().includes(i),f=x.fields.filter(C=>I?!0:(C.label||"").toLowerCase().includes(i)||(C.key||"").toLowerCase().includes(i)||(C.help||"").toLowerCase().includes(i)||(C.description||"").toLowerCase().includes(i));return f.length===0?null:{...x,fields:I?x.fields:f}}).filter(Boolean):s.schema});return(i,o)=>{const x=k("n-input"),I=k("n-spin"),f=k("n-button"),C=k("n-alert");return t(),_("div",Qa,[e.title?(t(),_("div",Za,[r("div",Ya,[e.icon?(t(),y(q,{key:0,icon:e.icon,size:22,class:"aksrt-form-renderer__header-icon"},null,8,["icon"])):A("",!0),r("div",null,[r("h1",el,g(e.title),1),e.description?(t(),_("p",al,g(e.description),1)):A("",!0)])]),e.showSearch?(t(),_("div",ll,[d(x,{value:p.value,"onUpdate:value":o[0]||(o[0]=m=>p.value=m),placeholder:"搜索设置项...",size:"small",clearable:""},{prefix:c(()=>[d(q,{icon:"fas fa-search",size:12})]),_:1},8,["value"])])):A("",!0)])):A("",!0),e.loading?(t(),_("div",tl,[d(I,{size:"medium"}),o[4]||(o[4]=r("span",null,"加载中...",-1))])):e.loadError?(t(),y(C,{key:2,type:"error",title:"加载失败",style:{marginBottom:"16px"}},{footer:c(()=>[d(f,{size:"small",onClick:o[1]||(o[1]=m=>i.$emit("reload"))},{default:c(()=>[...o[5]||(o[5]=[j("重试",-1)])]),_:1})]),default:c(()=>[j(g(e.loadError)+" ",1)]),_:1})):e.schema&&e.schema.length?(t(!0),_(T,{key:3},$(b.value,m=>(t(),y(ia,{key:m.key||m.title,title:m.title,description:m.description,icon:m.icon,collapsible:m.collapsible,"default-collapsed":m.defaultCollapsed},{default:c(()=>[m.fields?(t(!0),_(T,{key:0},$(m.fields,w=>{var D;return t(),_(T,{key:w.key},[v(w)?(t(),_(T,{key:0},[w.type==="custom"?F(i.$slots,`field-${w.key}`,xe({key:0,ref_for:!0},{field:w,value:O(w.key),setValue:S=>V(w.key,S),formData:e.formData}),()=>{var S;return[d(Se,{schema:w,"model-value":O(w.key),"error-message":(S=e.errors)==null?void 0:S[w.key],"onUpdate:modelValue":L=>V(w.key,L)},null,8,["schema","model-value","error-message","onUpdate:modelValue"])]},!0):(t(),y(Se,{key:1,schema:w,"model-value":O(w.key),"error-message":(D=e.errors)==null?void 0:D[w.key],"onUpdate:modelValue":S=>V(w.key,S)},null,8,["schema","model-value","error-message","onUpdate:modelValue"]))],64)):A("",!0)],64)}),128)):A("",!0),F(i.$slots,`group-${m.key}`,xe({ref_for:!0},{group:m,formData:e.formData}),void 0,!0)]),_:2},1032,["title","description","icon","collapsible","default-collapsed"]))),128)):(t(),_("div",sl,[d(q,{icon:"fas fa-cog",size:32}),o[6]||(o[6]=r("p",null,"暂无配置项",-1))])),e.dirty?(t(),_("div",il,[r("div",nl,[r("div",_l,[d(q,{icon:"fas fa-exclamation-circle",size:14}),o[7]||(o[7]=r("span",null,"您有未保存的更改",-1))]),r("div",ol,[d(f,{size:"small",onClick:o[2]||(o[2]=m=>i.$emit("reload"))},{default:c(()=>[...o[8]||(o[8]=[j("放弃更改",-1)])]),_:1}),d(f,{size:"small",type:"primary",loading:e.saving,onClick:o[3]||(o[3]=m=>i.$emit("save"))},{default:c(()=>[e.saving?A("",!0):(t(),y(q,{key:0,icon:"fas fa-save",size:12})),o[9]||(o[9]=j(" 保存设置 ",-1))]),_:1},8,["loading"])])])])):A("",!0)])}}},Gt=K(dl,[["__scopeId","data-v-102003ef"]]);function ul(){const e=P(!1),z=P(0);function s(){e.value=!0}function u(){e.value=!1,z.value++}function p(){e.value=!1}function v(){return e.value?window.confirm("您有未保存的更改,确定要离开此页面吗?"):!0}return{isDirty:R(()=>e.value),markDirty:s,markClean:u,reset:p,confirmLeave:v,saveCount:z}}function Rt(e){const{fetch:z,submit:s,defaults:u={},onLoaded:p,onSaved:v,transform:O}=e,V=P({...u}),b=P(""),i=P(!1),o=P(!1),x=P(null),{isDirty:I,markDirty:f,markClean:C,reset:m,confirmLeave:w}=ul();function D(){b.value=JSON.stringify(V.value)}function S(){JSON.stringify(V.value)!==b.value?f():m()}let L=null;function M(){L&&L(),L=le(V,S,{deep:!0})}async function H(){i.value=!0,x.value=null;try{const n=await z(),a=(n==null?void 0:n.data)??n??{},h={...u,...O?O(a):a};V.value=h,D(),M(),p==null||p(h)}catch(n){x.value=(n==null?void 0:n.message)||"加载失败",console.error("[useSectionForm] load error:",n)}finally{i.value=!1}}async function Q(){o.value=!0;try{await s(V.value),D(),C(),v==null||v(V.value)}catch(n){throw console.error("[useSectionForm] save error:",n),n}finally{o.value=!1}}async function Z(){L&&L(),m(),await H()}function Y(){L&&L(),V.value={...u},D(),M(),m()}return te(H),Ve(()=>{L&&L()}),{formData:V,loading:i,saving:o,loadError:x,dirty:I,load:H,save:Q,reload:Z,resetToDefaults:Y,confirmLeave:w}}const rl={key:"global.logo",title:"LOGO & 品牌",icon:"fas fa-image",description:"管理站点 Logo、站点图标和品牌标识。",defaults:{site_logo:"",site_logo_dark:"",site_favicon:"",site_icon:"",logo_width:150,logo_text:""},groups:[{key:"logo",title:"Logo 设置",icon:"fas fa-image",fields:[{key:"site_logo",label:"站点 Logo",type:"media",help:"建议尺寸 300x80,支持 PNG/SVG 透明背景"},{key:"site_logo_dark",label:"暗色模式 Logo",type:"media",help:"暗色模式下显示的 Logo,留空则使用默认 Logo"},{key:"logo_width",label:"Logo 宽度 (px)",type:"number",min:50,max:400,step:10,help:"导航栏中 Logo 显示宽度"},{key:"logo_text",label:"Logo 文字",type:"input",placeholder:"当无 Logo 图片时显示的文字",help:"同时作为首页标题和 alt 文本使用"}]},{key:"favicon",title:"站点图标",icon:"fas fa-fingerprint",fields:[{key:"site_favicon",label:"浏览器图标 (Favicon)",type:"media",help:"建议 32x32 或 16x16 的 ICO/PNG 文件"},{key:"site_icon",label:"移动端图标",type:"media",help:"建议 192x192 的 PNG,用于移动端添加到桌面"}]}]},pl={key:"global.common",title:"常用功能",icon:"fas fa-cog",description:"管理站点常用开关、懒加载、头像源与备案信息等基础配置。",defaults:{comment_enabled:!0,lazyload_enabled:!0,lazyload_animation:"blur",lazyload_placeholder:"",lazyload_blur:!0,lazyload_avatar:!0,lazyload_content:!1,lazyload_comment:!0,lazyload_private:!0,lazyload_slider:!0,lazyload_cover:!0,lazyload_other:!0,lazyload_widget:!0,avatar_source:"cn.cravatar.com",icp_filing:"",footer_text:""},groups:[{key:"comment",title:"评论功能",icon:"fas fa-comment",fields:[{key:"comment_enabled",label:"开启评论",type:"switch",default:!0,help:"全局评论开关,关闭后所有文章不再显示评论区"}]},{key:"performance",title:"性能优化",icon:"fas fa-tachometer-alt",fields:[{key:"lazyload_enabled",label:"图片懒加载",type:"switch",default:!0,help:"开启后页面中的图片将在滚动到可见区域时才加载"},{key:"lazyload_animation",label:"懒加载动画",type:"select",default:"blur",options:[{label:"模糊渐显",value:"blur"},{label:"淡入",value:"fade"},{label:"缩放",value:"scale"}],dependsOn:{key:"lazyload_enabled",value:!0}},{key:"lazyload_placeholder",label:"预载图",type:"media",default:"",dependsOn:{key:"lazyload_enabled",value:!0},help:"自定义占位图,留空使用内置默认"},{key:"lazyload_blur",label:"模糊预览",type:"switch",default:!0,dependsOn:{key:"lazyload_enabled",value:!0},help:"加载前显示低分辨率模糊预览"}]},{key:"lazyload-scope",title:"懒加载范围",icon:"fas fa-layer-group",fields:[{key:"lazyload_avatar",label:"头像懒加载",type:"switch",default:!0,dependsOn:{key:"lazyload_enabled",value:!0}},{key:"lazyload_content",label:"文章内容图片懒加载",type:"switch",default:!1,dependsOn:{key:"lazyload_enabled",value:!0}},{key:"lazyload_comment",label:"评论内容图片懒加载",type:"switch",default:!0,dependsOn:{key:"lazyload_enabled",value:!0}},{key:"lazyload_private",label:"私信聊天图片懒加载",type:"switch",default:!0,dependsOn:{key:"lazyload_enabled",value:!0}},{key:"lazyload_slider",label:"幻灯片图片懒加载",type:"switch",default:!0,dependsOn:{key:"lazyload_enabled",value:!0}},{key:"lazyload_cover",label:"封面图片懒加载",type:"switch",default:!0,dependsOn:{key:"lazyload_enabled",value:!0}},{key:"lazyload_other",label:"其它图片懒加载",type:"switch",default:!0,dependsOn:{key:"lazyload_enabled",value:!0}},{key:"lazyload_widget",label:"小工具图片懒加载",type:"switch",default:!0,dependsOn:{key:"lazyload_enabled",value:!0}}]},{key:"avatar",title:"头像服务",icon:"fas fa-user-circle",fields:[{key:"avatar_source",label:"头像源",type:"select",default:"cn.cravatar.com",options:[{label:"Cravatar (推荐)",value:"cn.cravatar.com"},{label:"Gravatar 中国",value:"cn.gravatar.com"},{label:"Gravatar 国际",value:"gravatar.com"}],help:"Cravatar 是国内最快的头像服务,推荐使用"}]},{key:"filing",title:"备案信息",icon:"fas fa-shield-alt",fields:[{key:"icp_filing",label:"ICP 备案号",type:"input",placeholder:"例如:京ICP备12345678号",help:"显示在页脚的备案信息"},{key:"footer_text",label:"页脚附加文字",type:"input",placeholder:"自定义页脚文字",help:"显示在版权信息下方"}]}]},yl={key:"global.layout",title:"显示 & 布局",icon:"fas fa-desktop",description:"全局布局风格、颜色方案、字体设置。",defaults:{theme_mode:"time-auto",theme_mode_button:["pc_nav","m_menu"],primary_color:"#1890ff",theme_skin:"f04494",dark_primary_color:"",border_radius:8,theme_main_radius:12,container_max_width:1200,sidebar_enabled:!0,sidebar_position:"right",sidebar_width:311,sidebar_home_enabled:!0,sidebar_category_enabled:!0,sidebar_tag_enabled:!0,sidebar_single_enabled:!0,sidebar_page_enabled:!0,sidebar_search_enabled:!0,font_family:"system",qj_loading:!1,qj_dh_xs:"no1"},groups:[{key:"loading-animation",title:"加载动画",icon:"fas fa-spinner",fields:[{key:"qj_loading",label:"全站加载动画",type:"switch",default:!1,help:"开启后页面加载时显示全屏加载动画覆盖层"},{key:"qj_dh_xs",label:"加载动画样式",type:"select",default:"no1",dependsOn:{key:"qj_loading",value:!0},options:[{label:"样式 1",value:"no1"},{label:"样式 2",value:"no2"},{label:"样式 3",value:"no3"},{label:"样式 4",value:"no4"},{label:"样式 5",value:"no5"},{label:"样式 6",value:"no6"},{label:"样式 7",value:"no7"},{label:"样式 8",value:"no8"},{label:"样式 9",value:"no9"},{label:"样式 10",value:"no10"}],help:"10 种加载动画样式可选"}]},{key:"color",title:"色彩方案",icon:"fas fa-palette",fields:[{key:"theme_mode",label:"默认主题模式",type:"radio",default:"time-auto",options:[{label:"浅色",value:"white-theme"},{label:"深色",value:"dark-theme"},{label:"跟随系统",value:"time-auto"}]},{key:"theme_mode_button",label:"主题切换按钮位置",type:"checkbox",default:["pc_nav","m_menu"],options:[{label:"PC 顶部导航",value:"pc_nav"},{label:"移动端菜单",value:"m_menu"}],help:"控制主题切换按钮在哪些位置显示"},{key:"primary_color",label:"主题色",type:"color",default:"#f04494",help:"按钮、链接和强调元素的主色调"},{key:"theme_skin",label:"预设主题色",type:"palette",default:"f04494",options:[{label:"玫红",value:"ff1856"},{label:"粉色",value:"f04494"},{label:"紫色",value:"ae53f3"},{label:"靛蓝",value:"627bf5"},{label:"天蓝",value:"00a2e3"},{label:"青绿",value:"16b597"},{label:"翠绿",value:"36af18"},{label:"黄绿",value:"8fb107"},{label:"棕金",value:"b18c07"},{label:"橘橙",value:"e06711"},{label:"朱红",value:"f74735"}],help:"选择预设主题色,将覆盖上方自定义主题色"},{key:"dark_primary_color",label:"暗色模式主题色",type:"color",default:"",help:"暗色模式下独立的主题色,留空则跟随浅色模式"},{key:"border_radius",label:"全局圆角 (px)",type:"slider",min:0,max:20,step:1,default:8},{key:"theme_main_radius",label:"卡片圆角 (px)",type:"number",min:0,max:30,default:12,help:"独立卡片圆角,留空则使用全局圆角 +4"}]},{key:"layout",title:"布局设置",icon:"fas fa-columns",fields:[{key:"container_max_width",label:"内容最大宽度 (px)",type:"select",default:1200,options:[{label:"1200px",value:1200},{label:"1320px",value:1320},{label:"1440px",value:1440},{label:"1600px",value:1600},{label:"1800px",value:1800},{label:"2000px",value:2e3},{label:"2200px",value:2200},{label:"全宽",value:0}]},{key:"sidebar_enabled",label:"开启侧边栏",type:"switch",default:!0},{key:"sidebar_position",label:"侧边栏位置",type:"radio",default:"right",dependsOn:{key:"sidebar_enabled",value:!0},options:[{label:"左侧",value:"left"},{label:"右侧",value:"right"}]},{key:"sidebar_width",label:"侧边栏宽度 (px)",type:"number",default:300,min:200,max:400,step:10,dependsOn:{key:"sidebar_enabled",value:!0}}]},{key:"sidebar-scope",title:"侧边栏显示范围",icon:"fas fa-th-list",fields:[{key:"sidebar_home_enabled",label:"首页侧边栏",type:"switch",default:!0,dependsOn:{key:"sidebar_enabled",value:!0}},{key:"sidebar_category_enabled",label:"分类页侧边栏",type:"switch",default:!0,dependsOn:{key:"sidebar_enabled",value:!0}},{key:"sidebar_tag_enabled",label:"标签页侧边栏",type:"switch",default:!0,dependsOn:{key:"sidebar_enabled",value:!0}},{key:"sidebar_single_enabled",label:"文章页侧边栏",type:"switch",default:!0,dependsOn:{key:"sidebar_enabled",value:!0}},{key:"sidebar_page_enabled",label:"页面侧边栏",type:"switch",default:!0,dependsOn:{key:"sidebar_enabled",value:!0}},{key:"sidebar_search_enabled",label:"搜索页侧边栏",type:"switch",default:!0,dependsOn:{key:"sidebar_enabled",value:!0}}]},{key:"typography",title:"字体设置",icon:"fas fa-font",fields:[{key:"font_family",label:"正文字体",type:"select",default:"system",options:[{label:"系统默认",value:"system"},{label:"思源黑体",value:"noto-sans-sc"},{label:"思源宋体",value:"noto-serif-sc"},{label:"自定义",value:"custom"}]}]}]},cl={key:"global.search",title:"搜索功能",icon:"fas fa-search",description:"搜索模式、内容类型切换、搜索建议、热门搜索配置。",defaults:{search_mode:"default",search_type:"default",search_history_enabled:!0,hot_search_enabled:!0,hot_search_keywords:"",search_placeholder:"开启精彩搜索",search_suggestions_enabled:!1,search_posts:!0,search_no_page:!0,search_exclude_cats:"",search_cat:!0,search_cat_in:"",search_more_cat_obj:!0,search_custom_key_s:!0,search_custom_key:"title,content",search_facets:!1,search_facets_order:`category +tag`,search_type_post:!0,search_type_user:!1,search_type_category:!0,search_type_tag:!0,search_type_product:!1,search_type_topic:!1,search_default_type:"post",search_ms_enabled:!1,search_ms_api_url:"",search_ms_api_key:"",search_ms_index_prefix:"aksrt",search_ms_synonyms:""},groups:[{key:"basic",title:"搜索基础",icon:"fas fa-search",fields:[{key:"search_mode",label:"搜索模式",type:"radio",default:"default",options:[{label:"默认搜索",value:"default"},{label:"AJAX 实时搜索",value:"ajax"},{label:"跳转搜索",value:"redirect"}]},{key:"search_placeholder",label:"搜索框提示文字",type:"input",placeholder:"开启精彩搜索"}]},{key:"content-types",title:"搜索内容类型",icon:"fas fa-layer-group",fields:[{key:"search_type_post",label:"文章",type:"switch",default:!0},{key:"search_type_user",label:"用户",type:"switch",default:!1},{key:"search_type_category",label:"分类",type:"switch",default:!0},{key:"search_type_tag",label:"标签",type:"switch",default:!0},{key:"search_type_product",label:"商品",type:"switch",default:!1},{key:"search_type_topic",label:"帖子",type:"switch",default:!1},{key:"search_default_type",label:"默认类型",type:"select",default:"post",options:[{label:"文章",value:"post"},{label:"用户",value:"user"},{label:"分类",value:"category"},{label:"标签",value:"tag"},{label:"商品",value:"product"},{label:"帖子",value:"topic"}]}]},{key:"features",title:"搜索功能",icon:"fas fa-magic",fields:[{key:"search_history_enabled",label:"搜索历史",type:"switch",default:!0,help:"记录用户最近的搜索关键词"},{key:"hot_search_enabled",label:"热门搜索",type:"switch",default:!0,help:"在搜索框下方展示热门搜索词"},{key:"hot_search_keywords",label:"热门搜索关键词",type:"textarea",placeholder:"每行一个关键词",dependsOn:{key:"hot_search_enabled",value:!0},rows:3,help:"手动设置热门搜索关键词,留空则自动统计"},{key:"search_suggestions_enabled",label:"搜索建议",type:"switch",default:!1,help:"输入时显示搜索建议(需要 AJAX 搜索模式)"},{key:"search_posts",label:"搜索框热门文章",type:"switch",default:!0,help:"在搜索面板中显示热门文章列表"},{key:"search_no_page",label:"排除页面",type:"switch",default:!0,help:"搜索结果中排除页面(仅显示文章)"},{key:"search_exclude_cats",label:"排除分类",type:"textarea",placeholder:"分类 ID,逗号分隔",rows:2,default:"",help:"搜索结果中排除的分类 ID(逗号分隔)"},{key:"search_custom_key_s",label:"自定义匹配范围",type:"switch",default:!0,help:"启用后可配置搜索匹配字段范围"},{key:"search_custom_key",label:"匹配字段",type:"textarea",placeholder:"title,content,excerpt,category,tag,author",rows:2,default:"title,content",dependsOn:{key:"search_custom_key_s",value:!0},help:"搜索匹配字段(逗号分隔:title/content/excerpt/category/tag/author)"},{key:"search_facets",label:"搜索结果筛选",type:"switch",default:!1,help:"启用搜索结果 taxonomy 筛选面板"},{key:"search_facets_order",label:"筛选排序",type:"textarea",rows:3,default:`category +tag`,dependsOn:{key:"search_facets",value:!0},help:"筛选 fieldset 显示顺序(每行一个 taxonomy slug)"}]},{key:"category-search",title:"分类搜索",icon:"fas fa-folder-open",fields:[{key:"search_cat",label:"启用分类搜索",type:"switch",default:!0,help:"在搜索框旁显示分类选择器"},{key:"search_cat_in",label:"默认分类",type:"input",default:"",help:"默认搜索的分类 ID(留空为全部分类)"},{key:"search_more_cat_obj",label:"显示更多分类",type:"switch",default:!0,help:"展开显示全部分类列表"}]},{key:"popular",title:"热门搜索",icon:"fas fa-fire",fields:[{key:"search_popular_title",label:"标题",type:"input",default:"热门搜索",help:"热门搜索区域标题,留空使用默认"},{key:"search_popular_key_num",label:"显示数量",type:"number",default:20,min:1,max:50,help:"热门搜索显示条数"},{key:"search_popular_sticky",label:"置顶词(每行一个)",type:"textarea",rows:3,default:"",help:"置顶搜索词始终显示在最前面"}]},{key:"meilisearch",title:"Meilisearch 集成",icon:"fas fa-bolt",fields:[{key:"search_ms_enabled",label:"启用 Meilisearch",type:"switch",default:!1,help:"启用后搜索请求将发送至 Meilisearch 服务器"},{key:"search_ms_api_url",label:"API 地址",type:"input",default:"",help:"Meilisearch 服务器 URL(如 http://localhost:7700)"},{key:"search_ms_api_key",label:"API Key",type:"input",default:"",help:"Meilisearch Search API Key(只读密钥)"},{key:"search_ms_index_prefix",label:"索引前缀",type:"input",default:"aksrt",help:"索引名称前缀(实际索引名为 {prefix}_posts)"},{key:"search_ms_synonyms",label:"同义词(JSON)",type:"textarea",rows:3,default:"",help:'Meilisearch 同义词配置,JSON 格式(如 {"手机": ["phone","mobile"]})'}]}]},bl={key:"global.email",title:"邮件配置",icon:"fas fa-envelope",description:"SMTP 发信配置、邮件事件开关与模板自定义。",defaults:{email_footer_text:"",email_site_branding:!0,email_template_mode:"plain",email_private_receive_limit:"all",email_reg_verify_link_enabled:!0,email_reg_verify_code_enabled:!0,email_reg_success_enabled:!0,email_password_reset_enabled:!0,email_change_code_enabled:!0,email_change_notice_enabled:!0},groups:[{key:"global",title:"全局设置",icon:"fas fa-cog",fields:[{key:"email_footer_text",label:"邮件页脚文字",type:"textarea",rows:2,placeholder:"留空则使用站点名称",help:"附加在每封邮件底部的文字"},{key:"email_site_branding",label:"显示站点品牌",type:"switch",default:!0,help:"在邮件开头显示「[站点名]」前缀"},{key:"email_template_mode",label:"邮件格式",type:"radio",default:"plain",options:[{label:"纯文本",value:"plain"},{label:"HTML",value:"html"}]},{key:"email_private_receive_limit",label:"私信邮件接收组",type:"select",default:"all",options:[{label:"所有用户",value:"all"},{label:"VIP 及以上",value:"vip"},{label:"VIP2 及以上",value:"vip2"},{label:"仅管理员",value:"admin"}],help:"限制哪些用户组可以收到私信邮件通知"}]},{key:"branding",title:"邮件品牌",icon:"fas fa-signature",fields:[{key:"mail_showname",label:"发件人名称",type:"input",default:"",help:"覆盖系统默认发件人名称"},{key:"mail_title_prefix",label:"主题前缀",type:"input",default:"",help:"自动添加在所有邮件主题前面,如【站点名】"},{key:"mail_description",label:"邮件底部说明",type:"textarea",rows:3,default:"",help:"附加在邮件页脚文字之后,留空不显示"},{key:"mail_more_content",label:"邮件附加内容",type:"textarea",rows:4,default:"",help:"附加在邮件内容末尾的补充说明"}]},{key:"reg_verify_link",title:"注册验证链接",icon:"fas fa-link",fields:[{key:"email_reg_verify_link_enabled",label:"启用",type:"switch",default:!0,help:"注册后发送验证链接邮件"},{key:"email_reg_verify_link_subject",label:"主题(留空使用默认)",type:"input",placeholder:"验证你的邮箱地址"},{key:"email_reg_verify_link_content",label:"内容模板(留空使用默认)",type:"textarea",rows:4,placeholder:"支持 {username} {site_name} {url}",help:"可用占位符:{username} 用户名、{site_name} 站点名、{url} 验证链接"},{key:"email_reg_verify_link_html",label:"HTML 格式",type:"switch",default:!1}]},{key:"reg_verify_code",title:"注册验证码",icon:"fas fa-keyboard",fields:[{key:"email_reg_verify_code_enabled",label:"启用",type:"switch",default:!0,help:"注册后发送 6 位验证码邮件"},{key:"email_reg_verify_code_subject",label:"主题(留空使用默认)",type:"input",placeholder:"邮箱验证码"},{key:"email_reg_verify_code_content",label:"内容模板(留空使用默认)",type:"textarea",rows:4,placeholder:"支持 {username} {site_name} {code}",help:"可用占位符:{username} 用户名、{site_name} 站点名、{code} 验证码"},{key:"email_reg_verify_code_html",label:"HTML 格式",type:"switch",default:!1}]},{key:"reg_success",title:"注册成功通知",icon:"fas fa-check-circle",fields:[{key:"email_reg_success_enabled",label:"启用",type:"switch",default:!0,help:"邮箱验证成功后发送通知邮件"},{key:"email_reg_success_subject",label:"主题(留空使用默认)",type:"input",placeholder:"邮箱验证成功"},{key:"email_reg_success_content",label:"内容模板(留空使用默认)",type:"textarea",rows:4,placeholder:"支持 {username} {site_name}",help:"可用占位符:{username} 用户名、{site_name} 站点名"},{key:"email_reg_success_html",label:"HTML 格式",type:"switch",default:!1}]},{key:"password_reset",title:"密码重置",icon:"fas fa-unlock-alt",fields:[{key:"email_password_reset_enabled",label:"启用",type:"switch",default:!0,help:"发送密码重置链接邮件"},{key:"email_password_reset_subject",label:"主题(留空使用默认)",type:"input",placeholder:"重置密码"},{key:"email_password_reset_content",label:"内容模板(留空使用默认)",type:"textarea",rows:4,placeholder:"支持 {username} {site_name} {url}",help:"可用占位符:{username} 用户名、{site_name} 站点名、{url} 重置链接"},{key:"email_password_reset_html",label:"HTML 格式",type:"switch",default:!1}]},{key:"change_code",title:"邮箱变更验证码",icon:"fas fa-shield-alt",fields:[{key:"email_change_code_enabled",label:"启用",type:"switch",default:!0,help:"变更邮箱时发送验证码邮件"},{key:"email_change_code_subject",label:"主题(留空使用默认)",type:"input",placeholder:"邮箱验证码"},{key:"email_change_code_content",label:"内容模板(留空使用默认)",type:"textarea",rows:4,placeholder:"支持 {username} {site_name} {code}",help:"可用占位符:{username} 用户名、{site_name} 站点名、{code} 验证码"},{key:"email_change_code_html",label:"HTML 格式",type:"switch",default:!1}]},{key:"change_notice",title:"邮箱变更通知",icon:"fas fa-bell",fields:[{key:"email_change_notice_enabled",label:"启用",type:"switch",default:!0,help:"邮箱变更成功后向旧邮箱发送通知"},{key:"email_change_notice_subject",label:"主题(留空使用默认)",type:"input",placeholder:"账号邮箱已变更"},{key:"email_change_notice_content",label:"内容模板(留空使用默认)",type:"textarea",rows:4,placeholder:"支持 {username} {site_name} {new_email}",help:"可用占位符:{username} 用户名、{site_name} 站点名、{new_email} 新邮箱"},{key:"email_change_notice_html",label:"HTML 格式",type:"switch",default:!1}]}]},fl={key:"global.tabbar",title:"手机底部Tab",icon:"fas fa-mobile-alt",description:"移动端底部导航栏配置。",defaults:{},groups:[]},ml={key:"global.floating",title:"右侧悬浮按钮",icon:"fas fa-ellipsis-v",description:"页面右侧浮动按钮的显示与配置。",defaults:{},groups:[]},hl={key:"global.i18n",title:"多语言翻译",icon:"fas fa-language",description:"配置站点语言、语言切换器和翻译管理。",defaults:{i18n_enabled:!1,i18n_default_lang:"zh-CN",i18n_switcher_position:"footer",i18n_auto_detect:!0,i18n_available_langs:`zh-CN|简体中文 +en|English +zh-TW|繁體中文 +ja|日本語 +ko|한국어 +fr|Français +de|Deutsch +es|Español +ru|Русский`,i18n_nomenclature:"",i18n_url_strategy:"query"},groups:[{key:"basic",title:"基础配置",icon:"fas fa-globe",fields:[{key:"i18n_enabled",label:"启用多语言",type:"switch",default:!1,help:"开启后站点将支持多语言切换"},{key:"i18n_default_lang",label:"默认语言",type:"select",default:"zh-CN",options:[{label:"简体中文",value:"zh-CN"},{label:"English",value:"en"},{label:"繁體中文",value:"zh-TW"},{label:"日本語",value:"ja"},{label:"한국어",value:"ko"},{label:"Français",value:"fr"},{label:"Deutsch",value:"de"},{label:"Español",value:"es"},{label:"Русский",value:"ru"}],dependsOn:{key:"i18n_enabled",value:!0}},{key:"i18n_auto_detect",label:"自动检测浏览器语言",type:"switch",default:!0,dependsOn:{key:"i18n_enabled",value:!0},help:"基于浏览器 Accept-Language 自动切换(AKSRT 方案,区别于 zibll IP 定位方案)"}]},{key:"languages",title:"语言管理",icon:"fas fa-language",fields:[{key:"i18n_available_langs",label:"可用语言列表",type:"textarea",default:`zh-CN|简体中文 +en|English +zh-TW|繁體中文 +ja|日本語 +ko|한국어 +fr|Français +de|Deutsch +es|Español +ru|Русский`,dependsOn:{key:"i18n_enabled",value:!0},help:"每行一个语言:语言代码|显示名称(9 种内置语言)"},{key:"i18n_nomenclature",label:"自定义术语",type:"code",default:"",dependsOn:{key:"i18n_enabled",value:!0},help:"JSON 格式自定义翻译术语(key => 翻译),对齐 zibll nomenclature"}]},{key:"display",title:"展示设置",icon:"fas fa-eye",fields:[{key:"i18n_switcher_position",label:"语言切换器位置",type:"radio",default:"footer",options:[{label:"导航栏",value:"header"},{label:"页脚",value:"footer"},{label:"导航栏+页脚",value:"both"},{label:"隐藏",value:"none"}],dependsOn:{key:"i18n_enabled",value:!0}},{key:"i18n_url_strategy",label:"URL 策略",type:"radio",default:"query",options:[{label:"查询参数 (?lang=en)",value:"query"},{label:"路径前缀 (/en/page)",value:"path"},{label:"子域名 (en.site.com)",value:"subdomain"}],dependsOn:{key:"i18n_enabled",value:!0}}]}]},kl={key:"global.custom-code",title:"自定义代码",icon:"fas fa-code",description:"自定义 CSS、JS 代码注入。",defaults:{custom_css:"",head_code:"",foot_code:"",trackcode:""},groups:[{key:"css",title:"自定义 CSS",icon:"fab fa-css3-alt",fields:[{key:"custom_css",label:"自定义 CSS",type:"code",language:"css",placeholder:"/* 在此输入自定义 CSS */",rows:10,help:"将在页面 中加载"}]},{key:"code",title:"头部 & 底部代码",icon:"fas fa-code",fields:[{key:"head_code",label:"头部 HTML 代码",type:"code",placeholder:"",rows:6,help:"在 中输出,支持 meta/link/style/script 等任意 HTML"},{key:"foot_code",label:"底部 HTML 代码",type:"code",placeholder:"",rows:6,help:"在页面底部 前输出,支持任意 HTML"}]},{key:"stats",title:"统计代码",icon:"fas fa-chart-bar",fields:[{key:"trackcode",label:"统计代码",type:"code",placeholder:"",rows:6,help:"百度统计、Google Analytics、CNZZ、51la 等统计代码,自动在 head 中输出"}]}]},vl={key:"global.seo",title:"SEO 优化",icon:"fas fa-search",description:"站点标题、描述、关键词与 AI SEO。AI 生成入口在文章「独立 SEO」框;连接配置在「扩展 → AI 连接配置」。优先使用 WordPress AI Connectors。",defaults:{seo_enabled:!0,seo_ai_enabled:!1,seo_connector:"-",seo_title:"",seo_keywords:"",seo_description:"",ai_seo_title_prompt:"",ai_seo_keywords_prompt:"",ai_seo_description_prompt:"",seo_baidu_push:!1,seo_baidu_normal:!1,seo_baidu_fast:!1,seo_baidu_token:"",seo_image_optimize:!0,seo_image_default:"",seo_image_always_default:!1,seo_auto_alt:!0,seo_go_link:!0,seo_go_link_nonce:!0,seo_go_link_post:!0,seo_go_link_exclude:"",seo_no_category:!1,seo_jsonld:!0,seo_jsonld_single:!0,seo_jsonld_page:!0},groups:[{key:"basic",title:"SEO 基础",icon:"fas fa-globe",fields:[{key:"seo_enabled",label:"启用核心 SEO 优化",type:"switch",default:!0,help:"关闭后主题不再输出 SEO title/description/keywords 等 head 标签。"},{key:"seo_ai_enabled",label:"启用 AI SEO 生成",type:"switch",default:!1,help:"开启后文章/分类「独立 SEO」框显示「AI 生成 SEO」按钮。需先配置 AI 连接(WP Connectors 或扩展 → AI 连接配置)。",dependsOn:{key:"seo_enabled",value:!0}},{key:"seo_connector",label:"标题连接符",type:"input",default:"-",placeholder:"例如:- 或 |",help:"AI 生成标题时会用此连接符追加站点名。"},{key:"seo_title",label:"站点 SEO 标题",type:"textarea",rows:2,default:""},{key:"seo_keywords",label:"站点 SEO 关键词",type:"textarea",rows:3,default:""},{key:"seo_description",label:"站点 SEO 描述",type:"textarea",rows:4,default:""}]},{key:"ai-seo",title:"AI SEO 提示词",icon:"fas fa-robot",description:"留空则使用内置 Zibll 风格默认提示词。填写后作为 system instruction 覆盖默认。",fields:[{key:"ai_seo_title_prompt",label:"标题提示词",type:"textarea",rows:5,default:"",dependsOn:{key:"seo_ai_enabled",value:!0},placeholder:"你是一名资深的网站 SEO 编辑……直接输出标题文本本身,不要任何前缀、引号或解释。",help:"控制 AI 如何生成 SEO 标题。留空使用主题内置默认。"},{key:"ai_seo_keywords_prompt",label:"关键词提示词",type:"textarea",rows:5,default:"",dependsOn:{key:"seo_ai_enabled",value:!0},placeholder:"你是一名资深 SEO 编辑……使用英文逗号分隔,直接输出关键词列表。",help:"控制 AI 如何生成 meta keywords。留空使用主题内置默认。"},{key:"ai_seo_description_prompt",label:"描述提示词",type:"textarea",rows:5,default:"",dependsOn:{key:"seo_ai_enabled",value:!0},placeholder:"你是一名资深的中文 SEO 编辑……字数控制在 80 至 150 个汉字之间。",help:"控制 AI 如何生成 meta description。留空使用主题内置默认。"}]},{key:"baidu",title:"百度推送",icon:"fas fa-paper-plane",fields:[{key:"seo_baidu_push",label:"启用百度自动推送",type:"switch",default:!1},{key:"seo_baidu_normal",label:"普通收录推送",type:"switch",default:!1},{key:"seo_baidu_fast",label:"快速收录推送",type:"switch",default:!1},{key:"seo_baidu_token",label:"百度推送 Token",type:"input",default:"",placeholder:"百度资源平台 Token"}]},{key:"image",title:"图片 SEO",icon:"fas fa-image",fields:[{key:"seo_image_optimize",label:"优化搜索引擎图片展示",type:"switch",default:!0},{key:"seo_image_default",label:"默认分享图 / SEO 图",type:"media",default:""},{key:"seo_image_always_default",label:"固定使用默认图",type:"switch",default:!1},{key:"seo_auto_alt",label:"自动补全图片 alt",type:"switch",default:!0}]},{key:"redirect",title:"外链重定向",icon:"fas fa-external-link-alt",fields:[{key:"seo_go_link",label:"启用外链重定向",type:"switch",default:!0},{key:"seo_go_link_nonce",label:"启用外链鉴权",type:"switch",default:!0},{key:"seo_go_link_post",label:"文章内容链接走重定向",type:"switch",default:!0},{key:"seo_go_link_exclude",label:"重定向排除域名",type:"textarea",rows:4,default:"",placeholder:"每行一个域名"}]},{key:"advanced",title:"高级 SEO",icon:"fas fa-sliders-h",fields:[{key:"seo_no_category",label:"分类 URL 去掉 category",type:"switch",default:!1},{key:"seo_jsonld",label:"启用 JSON-LD",type:"switch",default:!0},{key:"seo_jsonld_single",label:"文章页输出 JSON-LD",type:"switch",default:!0},{key:"seo_jsonld_page",label:"页面输出 JSON-LD",type:"switch",default:!0}]}]},gl={key:"global.code-highlight",title:"代码高亮",icon:"fas fa-code",description:"代码块语法高亮主题、行号、最大高度等配置。",defaults:{highlight_kg:!0,highlight_hh:!1,highlight_btn:!0,highlight_maxheight:400,highlight_zt:"enlighter",highlight_dark_zt:"monokai"},groups:[{key:"basic",title:"代码高亮设置",icon:"fas fa-highlighter",fields:[{key:"highlight_kg",label:"代码高亮开关",type:"switch",default:!0},{key:"highlight_hh",label:"显示行号",type:"switch",default:!1},{key:"highlight_btn",label:"显示扩展按钮",type:"switch",default:!0,help:"控制原始代码 / 信息 / 新窗口按钮的显示"},{key:"highlight_maxheight",label:"最大高度(px,0=不限)",type:"number",default:400,min:0,max:2e3,help:"代码块最大高度,超出滚动显示。0 表示不限制"}]},{key:"theme",title:"主题设置",icon:"fas fa-palette",fields:[{key:"highlight_zt",label:"日间默认主题",type:"select",default:"enlighter",options:[{label:"Enlighter",value:"enlighter"},{label:"Bootstrap 4",value:"bootstrap4"},{label:"Classic",value:"classic"},{label:"Beyond",value:"beyond"},{label:"Mowtwo",value:"mowtwo"},{label:"Eclipse",value:"eclipse"},{label:"Droide",value:"droide"},{label:"Minimal",value:"minimal"},{label:"Rowhammer",value:"rowhammer"},{label:"Godzilla",value:"godzilla"},{label:"Dracula",value:"dracula"},{label:"Atomic",value:"atomic"},{label:"Monokai",value:"monokai"}]},{key:"highlight_dark_zt",label:"暗色默认主题",type:"select",default:"monokai",options:[{label:"Dracula",value:"dracula"},{label:"Atomic",value:"atomic"},{label:"Monokai",value:"monokai"},{label:"Enlighter",value:"enlighter"},{label:"Bootstrap 4",value:"bootstrap4"}]}]}]},wl={key:"global.system-notice",title:"弹窗通知",icon:"fas fa-bullhorn",description:"全站弹窗公告配置,支持按用户身份定向、多按钮组、弹窗尺寸与过期周期。",defaults:{system_notice_enabled:!0,system_notice_policy:"",system_notice_title:"",system_notice_content:"",system_notice_btn1_text:"",system_notice_btn1_link:"",system_notice_btn1_color:"primary",system_notice_btn2_text:"",system_notice_btn2_link:"",system_notice_btn2_color:"primary",system_notice_btn3_text:"",system_notice_btn3_link:"",system_notice_btn3_color:"primary",system_notice_btn4_text:"",system_notice_btn4_link:"",system_notice_btn4_color:"primary",system_notice_size:"",system_notice_radius:!1,system_notice_class:"",system_notice_title_icon:"",system_notice_title_class:"",system_notice_title_style:"",system_notice_expires:24},groups:[{key:"basic",title:"公告设置",icon:"fas fa-bullhorn",fields:[{key:"system_notice_enabled",label:"启用系统公告",type:"switch",default:!0},{key:"system_notice_policy",label:"显示对象",type:"select",default:"",options:[{label:"所有访客",value:""},{label:"仅登录用户",value:"signin"},{label:"仅 VIP 会员",value:"vip"},{label:"仅非 VIP",value:"free"},{label:"仅认证用户",value:"auth"}],dependsOn:{key:"system_notice_enabled",value:!0}},{key:"system_notice_title",label:"公告标题",type:"input",default:"",dependsOn:{key:"system_notice_enabled",value:!0}},{key:"system_notice_content",label:"公告内容",type:"textarea",default:"",rows:5,dependsOn:{key:"system_notice_enabled",value:!0},help:"支持 HTML 标签"}]},{key:"buttons",title:"按钮组(留空则不显示)",icon:"fas fa-th-large",fields:[{key:"system_notice_btn1_text",label:"按钮 1 文案",type:"input",default:"",dependsOn:{key:"system_notice_enabled",value:!0}},{key:"system_notice_btn1_link",label:"按钮 1 链接",type:"input",default:"",dependsOn:{key:"system_notice_enabled",value:!0},help:"可选,填写后按钮变为链接"},{key:"system_notice_btn1_color",label:"按钮 1 颜色",type:"select",default:"primary",options:[{label:"主题色",value:"primary"},{label:"成功绿",value:"success"},{label:"警告橙",value:"warning"},{label:"危险红",value:"danger"},{label:"信息蓝",value:"info"},{label:"深紫",value:"purple"},{label:"深灰",value:"dark"}],dependsOn:{key:"system_notice_enabled",value:!0}},{key:"system_notice_btn2_text",label:"按钮 2 文案",type:"input",default:"",dependsOn:{key:"system_notice_enabled",value:!0}},{key:"system_notice_btn2_link",label:"按钮 2 链接",type:"input",default:"",dependsOn:{key:"system_notice_enabled",value:!0}},{key:"system_notice_btn2_color",label:"按钮 2 颜色",type:"select",default:"primary",options:[{label:"主题色",value:"primary"},{label:"成功绿",value:"success"},{label:"警告橙",value:"warning"},{label:"危险红",value:"danger"},{label:"信息蓝",value:"info"},{label:"深紫",value:"purple"},{label:"深灰",value:"dark"}],dependsOn:{key:"system_notice_enabled",value:!0}},{key:"system_notice_btn3_text",label:"按钮 3 文案",type:"input",default:"",dependsOn:{key:"system_notice_enabled",value:!0}},{key:"system_notice_btn3_link",label:"按钮 3 链接",type:"input",default:"",dependsOn:{key:"system_notice_enabled",value:!0}},{key:"system_notice_btn3_color",label:"按钮 3 颜色",type:"select",default:"primary",options:[{label:"主题色",value:"primary"},{label:"成功绿",value:"success"},{label:"警告橙",value:"warning"},{label:"危险红",value:"danger"},{label:"信息蓝",value:"info"},{label:"深紫",value:"purple"},{label:"深灰",value:"dark"}],dependsOn:{key:"system_notice_enabled",value:!0}},{key:"system_notice_btn4_text",label:"按钮 4 文案",type:"input",default:"",dependsOn:{key:"system_notice_enabled",value:!0}},{key:"system_notice_btn4_link",label:"按钮 4 链接",type:"input",default:"",dependsOn:{key:"system_notice_enabled",value:!0}},{key:"system_notice_btn4_color",label:"按钮 4 颜色",type:"select",default:"primary",options:[{label:"主题色",value:"primary"},{label:"成功绿",value:"success"},{label:"警告橙",value:"warning"},{label:"危险红",value:"danger"},{label:"信息蓝",value:"info"},{label:"深紫",value:"purple"},{label:"深灰",value:"dark"}],dependsOn:{key:"system_notice_enabled",value:!0}}]},{key:"style",title:"样式设置",icon:"fas fa-paint-brush",fields:[{key:"system_notice_size",label:"弹窗尺寸",type:"select",default:"",options:[{label:"默认",value:""},{label:"迷你",value:"modal-mini"},{label:"小号",value:"modal-sm"},{label:"大号",value:"modal-lg"}],dependsOn:{key:"system_notice_enabled",value:!0}},{key:"system_notice_radius",label:"按钮圆角",type:"switch",default:!1,dependsOn:{key:"system_notice_enabled",value:!0},help:"开启后弹窗按钮使用圆角样式"},{key:"system_notice_class",label:"公告样式类",type:"input",default:"",dependsOn:{key:"system_notice_enabled",value:!0}},{key:"system_notice_title_icon",label:"标题图标",type:"input",default:"",dependsOn:{key:"system_notice_enabled",value:!0},help:"如 fas fa-bullhorn"},{key:"system_notice_title_class",label:"标题背景配色",type:"select",default:"",dependsOn:{key:"system_notice_enabled",value:!0},options:[{label:"无",value:""},{label:"炫彩黄",value:"jb-yellow"},{label:"炫彩蓝",value:"jb-blue"},{label:"炫彩绿",value:"jb-green"},{label:"炫彩紫",value:"jb-purple"},{label:"炫彩红",value:"jb-red"},{label:"炫彩橙",value:"jb-orange"}],help:"弹窗标题区域的背景配色方案"},{key:"system_notice_title_style",label:"标题样式",type:"input",default:"",dependsOn:{key:"system_notice_enabled",value:!0}}]},{key:"expire",title:"过期设置",icon:"fas fa-clock",fields:[{key:"system_notice_expires",label:"弹窗周期(小时)",type:"number",default:24,min:0,max:720,dependsOn:{key:"system_notice_enabled",value:!0},help:"0 表示永不过期"}]}]},xl={logo:rl,common:pl,layout:yl,search:cl,email:bl,tabbar:fl,floating:ml,i18n:hl,"custom-code":kl,seo:vl,"code-highlight":gl,"system-notice":wl},ze=[{label:"最近更新",value:"modified"},{label:"发布时间",value:"date"},{label:"浏览量",value:"views"},{label:"点赞数",value:"likes"},{label:"评论数",value:"comments"},{label:"收藏数",value:"favorites"},{label:"下载量",value:"downloads"},{label:"随机",value:"rand"}],Ol={"header-nav":{key:"page_display.header-nav",title:"顶部导航栏",icon:"fas fa-bars",description:"配置导航栏布局、菜单结构、搜索入口和用户入口。",defaults:{header_fixed:!0,header_search_enabled:!0,header_user_menu:!0,header_publish_btn:!0,header_mobile_drawer:!0,header_nav_style:"default",header_max_width:1200,header_scroll_down_hide:!1,header_layout:"1",mobile_header_layout:"center",mobile_navbar_align:"left",header_newposts_enabled:!0,header_newposts_text:' 发布',header_newposts_radius:20,header_newposts_class:"",header_theme_custom:!1,header_theme_bg_custom:"",header_theme_bg:"",header_theme_color_custom:""},groups:[{key:"layout",title:"导航栏布局",icon:"fas fa-th-large",fields:[{key:"header_fixed",label:"固定导航栏",type:"switch",default:!0,help:"页面滚动时导航栏保持在顶部"},{key:"header_nav_style",label:"导航栏风格",type:"radio",default:"default",options:[{label:"默认",value:"default"},{label:"透明",value:"transparent"},{label:"毛玻璃",value:"blur"}]},{key:"header_max_width",label:"导航栏最大宽度",type:"select",default:1200,options:[{label:"跟随内容",value:0},{label:"1080px",value:1080},{label:"1200px",value:1200},{label:"1320px",value:1320}]},{key:"header_scroll_down_hide",label:"下滑隐藏导航",type:"switch",default:!1,help:"页面向下滑动时自动隐藏导航栏"}]},{key:"layout-type",title:"布局类型",icon:"fas fa-columns",fields:[{key:"header_layout",label:"电脑端布局",type:"radio",default:"2",options:[{label:"布局 1(经典)",value:"1"},{label:"布局 2(内联搜索)",value:"2"},{label:"布局 3(紧凑)",value:"3"}],help:"不同布局切换导航 DOM 结构"},{key:"mobile_header_layout",label:"移动端布局",type:"radio",default:"center",options:[{label:"居中(含搜索按钮)",value:"center"},{label:"靠左",value:"left"}]},{key:"mobile_navbar_align",label:"移动端菜单方向",type:"radio",default:"left",options:[{label:"顶部(关闭手势)",value:"top"},{label:"左侧滑出",value:"left"},{label:"右侧滑出",value:"right"}]}]},{key:"newposts",title:"发布按钮",icon:"fas fa-pen",fields:[{key:"header_newposts_enabled",label:"启用发布按钮",type:"switch",default:!0,help:"导航栏显示前台发布入口"},{key:"header_newposts_text",label:"按钮文案",type:"input",default:' 发布',dependsOn:{key:"header_newposts_enabled",value:!0}},{key:"header_newposts_radius",label:"圆角 (px)",type:"number",default:20,min:0,max:30,dependsOn:{key:"header_newposts_enabled",value:!0}},{key:"header_newposts_class",label:"自定义 CSS 类",type:"input",default:"",dependsOn:{key:"header_newposts_enabled",value:!0}}]},{key:"color",title:"导航配色",icon:"fas fa-palette",fields:[{key:"header_theme_custom",label:"自定义导航配色",type:"switch",default:!1,help:"启用后覆盖导航栏默认配色"},{key:"header_theme_bg_custom",label:"导航背景色",type:"color",default:"",dependsOn:{key:"header_theme_custom",value:!0}},{key:"header_theme_bg",label:"导航背景色(备选)",type:"color",default:"",dependsOn:{key:"header_theme_custom",value:!0}},{key:"header_theme_color_custom",label:"导航文字色",type:"color",default:"",dependsOn:{key:"header_theme_custom",value:!0}}]},{key:"components",title:"导航组件",icon:"fas fa-puzzle-piece",fields:[{key:"header_search_enabled",label:"搜索入口",type:"switch",default:!0},{key:"header_user_menu",label:"用户菜单",type:"switch",default:!0},{key:"header_publish_btn",label:"发布按钮",type:"switch",default:!0,help:"管理员可见的前台发布入口"},{key:"header_mobile_drawer",label:"移动端抽屉导航",type:"switch",default:!0}]}]},category:{key:"page_display.category",title:"分类页面",icon:"fas fa-folder-open",description:"为分类归档页配置头图、简介、列表模式、筛选条和侧边栏。",defaults:{category_cover_enabled:!0,category_desc_enabled:!0,category_header_style:"cover",category_list_mode:"grid",category_filter_bar:!0,category_sidebar:!0,category_per_page:12,category_default_cover:"",category_post_count:!0,category_orderby:"modified"},groups:[{key:"header",title:"分类头图",icon:"fas fa-image",fields:[{key:"category_header_style",label:"头部风格",type:"radio",default:"cover",options:[{label:"封面图",value:"cover"},{label:"简洁标题",value:"simple"},{label:"隐藏",value:"none"}]},{key:"category_cover_enabled",label:"显示封面图",type:"switch",default:!0,dependsOn:{key:"category_header_style",value:"cover"}},{key:"category_desc_enabled",label:"显示分类简介",type:"switch",default:!0},{key:"category_default_cover",label:"默认封面图",type:"upload",default:"",help:"未设置分类封面时使用的默认图片"}]},{key:"list",title:"列表设置",icon:"fas fa-list",fields:[{key:"category_list_mode",label:"列表模式",type:"radio",default:"grid",options:[{label:"网格",value:"grid"},{label:"列表",value:"list"},{label:"紧凑",value:"compact"}]},{key:"category_per_page",label:"每页文章数",type:"number",default:12,min:4,max:48},{key:"category_filter_bar",label:"筛选条",type:"switch",default:!0,help:"子分类筛选和排序"},{key:"category_sidebar",label:"侧边栏",type:"switch",default:!0},{key:"category_post_count",label:"显示文章数",type:"switch",default:!0,help:"在分类列表中显示每篇文章的浏览次数"}]},{key:"orderby",title:"排序设置",icon:"fas fa-sort",fields:[{key:"category_orderby",label:"默认排序",type:"select",default:"modified",options:[{label:"最近更新",value:"modified"},{label:"发布时间",value:"date"},{label:"浏览数",value:"views"},{label:"评论数",value:"comments"},{label:"点赞数",value:"likes"}]}]}]},tag:{key:"page_display.tag",title:"标签页面",icon:"fas fa-tags",description:"为标签归档页配置展示样式和布局。",defaults:{tag_header_style:"simple",tag_default_cover:"",tag_list_mode:"grid",tag_sidebar:!0,tag_per_page:12,tag_post_count:!0,tag_orderby:"count"},groups:[{key:"header",title:"标签头图",icon:"fas fa-tag",fields:[{key:"tag_header_style",label:"头部风格",type:"radio",default:"simple",options:[{label:"简洁标题",value:"simple"},{label:"封面图",value:"cover"},{label:"隐藏",value:"none"}]},{key:"tag_default_cover",label:"默认封面图",type:"upload",default:""}]},{key:"list",title:"列表设置",icon:"fas fa-list",fields:[{key:"tag_list_mode",label:"列表模式",type:"radio",default:"grid",options:[{label:"网格",value:"grid"},{label:"列表",value:"list"}]},{key:"tag_per_page",label:"每页文章数",type:"number",default:12,min:4,max:48},{key:"tag_sidebar",label:"侧边栏",type:"switch",default:!0},{key:"tag_post_count",label:"显示文章数",type:"switch",default:!0}]},{key:"orderby",title:"排序设置",icon:"fas fa-sort",fields:[{key:"tag_orderby",label:"默认排序",type:"select",default:"count",options:[{label:"文章数",value:"count"},{label:"名称",value:"name"},{label:"最近更新",value:"modified"}]}]}]},"user-home":{key:"page_display.user-home",title:"用户主页",icon:"fas fa-user-circle",description:"配置用户公开主页的布局、Tab 展示和互动功能。",defaults:{user_home_tabs:"posts,comments,favorites,credits,product,plate,forum,follow",user_home_tabs_order:"posts,comments,favorites,credits,product,plate,forum,follow",user_home_tabs_pc_hide:"",user_home_tabs_mobile_hide:"",user_home_sidebar:!0,user_home_cover:!0,user_home_follow:!0,user_home_posts_per_page:10,user_home_avatar:!0,user_home_name:!0,user_home_desc:!0,user_home_stats:!0,user_home_social:!0,author_main_tab_swiper:!1,user_home_message:!0,user_home_private:!0,user_home_paging_ajax:!0},groups:[{key:"layout",title:"主页布局",icon:"fas fa-th-large",fields:[{key:"user_home_cover",label:"封面区域",type:"switch",default:!0,help:"用户主页顶部封面图"},{key:"user_home_sidebar",label:"侧边栏",type:"switch",default:!0},{key:"user_home_follow",label:"关注按钮",type:"switch",default:!0},{key:"user_home_posts_per_page",label:"每页文章数",type:"number",default:10,min:5,max:50},{key:"user_home_paging_ajax",label:"AJAX 翻页",type:"switch",default:!0,help:"使用 AJAX 加载替代传统翻页"}]},{key:"tabs",title:"Tab 配置",icon:"fas fa-columns",fields:[{key:"user_home_tabs",label:"显示的 Tab",type:"input",default:"posts,comments,favorites,credits,product,plate,forum,follow",help:"逗号分隔: posts, comments, favorites, credits, product, plate, forum, follow"},{key:"user_home_tabs_order",label:"Tab 显示顺序",type:"input",default:"posts,comments,favorites,credits,product,plate,forum,follow",help:"逗号分隔,拖拽排列栏目顺序"},{key:"user_home_tabs_pc_hide",label:"PC 端隐藏",type:"input",default:"",help:"逗号分隔要在 PC 端隐藏的栏目"},{key:"user_home_tabs_mobile_hide",label:"移动端隐藏",type:"input",default:"",help:"逗号分隔要在移动端隐藏的栏目"},{key:"author_main_tab_swiper",label:"移动端滑动切换",type:"switch",default:!1,help:"移动端左右滑动切换栏目"}]},{key:"display",title:"展示设置",icon:"fas fa-eye",fields:[{key:"user_home_avatar",label:"显示头像",type:"switch",default:!0},{key:"user_home_name",label:"显示用户名",type:"switch",default:!0},{key:"user_home_desc",label:"显示个人简介",type:"switch",default:!0},{key:"user_home_stats",label:"显示统计数据",type:"switch",default:!0},{key:"user_home_social",label:"显示社交链接",type:"switch",default:!0},{key:"user_home_message",label:"私信按钮",type:"switch",default:!0,help:"在用户主页显示发送私信按钮"},{key:"user_home_private",label:"留言按钮",type:"switch",default:!0,help:"在用户主页显示留言入口"}]}]},other:{key:"page_display.other",title:"其它页面",icon:"fas fa-file",description:"配置 404 页面、搜索结果页等特殊页面的展示。",defaults:{page_header_style:"1",page_header_cover_img:"",page_404_search:!0,page_404_popular:!0,page_404_message:"页面未找到",page_404_back:!0,page_search_sidebar:!0,page_search_per_page:12,page_author_cover:!0,page_author_sidebar:!0,page_author_posts_per_page:12},groups:[{key:"page-header",title:"统一页头",icon:"fas fa-heading",fields:[{key:"page_header_style",label:"页面标题样式",type:"select",default:"1",options:[{label:"不显示",value:""},{label:"简单",value:"1"},{label:"卡片",value:"2"},{label:"封面",value:"3"}],help:"控制归档/搜索/页面的页头样式,单页可通过 post meta 覆盖"},{key:"page_header_cover_img",label:"默认封面图",type:"upload",default:"",help:"封面样式(样式3)的默认背景图,单页可覆盖"}]},{key:"page_404",title:"404 页面",icon:"fas fa-exclamation-triangle",fields:[{key:"page_404_message",label:"404 提示文字",type:"input",default:"页面未找到"},{key:"page_404_search",label:"显示搜索框",type:"switch",default:!0},{key:"page_404_popular",label:"显示热门文章",type:"switch",default:!0},{key:"page_404_back",label:"显示返回首页",type:"switch",default:!0}]},{key:"search_results",title:"搜索结果页",icon:"fas fa-search",fields:[{key:"page_search_sidebar",label:"搜索结果侧边栏",type:"switch",default:!0},{key:"page_search_per_page",label:"每页结果数",type:"number",default:12,min:4,max:48}]},{key:"author",title:"作者页面",icon:"fas fa-user-edit",fields:[{key:"page_author_cover",label:"显示封面",type:"switch",default:!0},{key:"page_author_sidebar",label:"显示侧边栏",type:"switch",default:!0},{key:"page_author_posts_per_page",label:"每页文章数",type:"number",default:12,min:4,max:48}]}]},background:{key:"page_display.background",title:"全局背景",icon:"fas fa-image",description:"配置站点全局背景图、背景色、暗色模式背景和遮罩。",defaults:{bg_color:"",bg_image:"",bg_size:"100%",bg_position:"center center",bg_repeat:"no-repeat",bg_attachment:"fixed",bg_dark_color:"",bg_dark_image:"",bg_overlay:!1,bg_overlay_color:"rgba(0, 0, 0, 0.3)",page_bg_color:"",page_bg_image:""},groups:[{key:"light",title:"亮色背景",icon:"fas fa-sun",fields:[{key:"bg_color",label:"背景颜色",type:"color",default:"",help:"留空则使用主题默认背景色"},{key:"bg_image",label:"背景图片",type:"media",help:"推荐使用高分辨率图片"},{key:"bg_size",label:"图片尺寸",type:"select",default:"cover",options:[{label:"覆盖 (Cover)",value:"cover"},{label:"包含 (Contain)",value:"contain"},{label:"原始大小",value:"auto"},{label:"拉伸填充",value:"100% 100%"},{label:"100% 宽度(旧版兼容)",value:"100%"}]},{key:"bg_position",label:"图片位置",type:"select",default:"center center",options:[{label:"居中",value:"center center"},{label:"顶部居中",value:"top center"},{label:"底部居中",value:"bottom center"}]},{key:"bg_repeat",label:"图片重复",type:"select",default:"no-repeat",options:[{label:"不重复",value:"no-repeat"},{label:"平铺",value:"repeat"},{label:"水平平铺",value:"repeat-x"},{label:"垂直平铺",value:"repeat-y"}]},{key:"bg_attachment",label:"固定方式",type:"select",default:"fixed",options:[{label:"固定 (视差)",value:"fixed"},{label:"随内容滚动",value:"scroll"}]}]},{key:"dark",title:"暗色背景",icon:"fas fa-moon",fields:[{key:"bg_dark_color",label:"暗色背景颜色",type:"color",default:"",help:"留空则使用主题默认暗色背景"},{key:"bg_dark_image",label:"暗色背景图片",type:"media",help:"暗色模式下显示的背景图"}]},{key:"overlay",title:"遮罩设置",icon:"fas fa-layer-group",fields:[{key:"bg_overlay",label:"启用背景遮罩",type:"switch",default:!1,help:"在背景图上方叠加半透明遮罩,提升文字可读性"},{key:"bg_overlay_color",label:"遮罩颜色",type:"input",default:"rgba(0, 0, 0, 0.3)",dependsOn:{key:"bg_overlay",value:!0},help:"支持 rgba/hex 色值"}]},{key:"page",title:"页面背景",icon:"fas fa-file",fields:[{key:"page_bg_color",label:"内容区背景色",type:"color",default:"",help:"主内容区域的背景色"},{key:"page_bg_image",label:"内容区背景图",type:"media"}]}]},"menu-decoration":{key:"page_display.menu-decoration",title:"菜单装饰",icon:"fas fa-bars",description:"配置导航菜单的图标、徽章、下拉样式和图文卡片子菜单。",defaults:{menu_icon_enabled:!0,menu_badge_enabled:!0,menu_submenu_style:"dropdown",menu_submenu_columns:1,menu_submenu_width:220,menu_mobile_style:"drawer",menu_item_padding:12,menu_hover_effect:"underline"},groups:[{key:"icon",title:"菜单图标",icon:"fas fa-icons",fields:[{key:"menu_icon_enabled",label:"显示菜单图标",type:"switch",default:!0,help:"在菜单项文字前显示图标(需在菜单管理中设置 CSS 类)"},{key:"menu_badge_enabled",label:"显示菜单徽章",type:"switch",default:!0,help:'在菜单项上显示 "新"、"热" 等徽章标记'}]},{key:"submenu",title:"下拉子菜单",icon:"fas fa-caret-square-down",fields:[{key:"menu_submenu_style",label:"子菜单样式",type:"radio",default:"dropdown",options:[{label:"普通下拉",value:"dropdown"},{label:"多列下拉",value:"mega"},{label:"图文卡片",value:"cards"}]},{key:"menu_submenu_columns",label:"多列列数",type:"number",default:1,min:1,max:5,dependsOn:{key:"menu_submenu_style",value:"mega"}},{key:"menu_submenu_width",label:"子菜单宽度 (px)",type:"number",default:220,min:160,max:800,dependsOn:{key:"menu_submenu_style",value:"mega"}}]},{key:"effect",title:"交互效果",icon:"fas fa-magic",fields:[{key:"menu_hover_effect",label:"Hover 效果",type:"radio",default:"underline",options:[{label:"下划线",value:"underline"},{label:"背景色",value:"background"},{label:"文字变色",value:"color"},{label:"无效果",value:"none"}]},{key:"menu_item_padding",label:"菜单项内边距 (px)",type:"number",default:12,min:4,max:32}]},{key:"mobile",title:"移动端菜单",icon:"fas fa-mobile-alt",fields:[{key:"menu_mobile_style",label:"移动端菜单样式",type:"radio",default:"drawer",options:[{label:"抽屉",value:"drawer"},{label:"全屏",value:"fullscreen"},{label:"下拉",value:"dropdown"}]}]}]},"header-components":{key:"page_display.header-components",title:"顶部多功能组件",icon:"fas fa-th",description:"配置顶部组件的显示范围、设备规则、轮播参数、搜索覆盖层与图标卡片。幻灯片图片/文案内容请到「Hero 轮播」「Banner 轮播」管理。",defaults:{header_components_search_enabled:!0,header_components_cards_enabled:!1,header_components_nav_color:"#ffffff",header_components_show_on:["home"],header_components_device_visibility:"",header_components_filter_blur_devices:[],header_components_card_show_devices:["pc","mobile"],header_components_card_shared_bg:!1,header_components_card_blur:!0,header_components_card_icon_shape:"circle",header_components_icon_cards:[],header_components_search_pc:!0,header_components_search_mobile:!0,header_components_search_show_keywords:!1,header_components_search_popular_limit:5,header_components_search_show_input_cat:!1,header_components_search_show_type:!1,slider_config_direction:"horizontal",slider_config_speed:300,slider_config_button:!0,slider_config_scale_height:!1,slider_config_scale:!1,slider_config_max_height:"",slider_config_min_height:""},groups:[{key:"visibility",title:"显示规则",icon:"fas fa-eye",fields:[{key:"header_components_search_enabled",label:"启用搜索覆盖层",type:"switch",default:!0,help:"在顶部组件区域显示搜索条覆盖层"},{key:"header_components_cards_enabled",label:"启用图标卡片",type:"switch",default:!1,help:"在顶部组件区域显示图标卡片入口"},{key:"header_components_show_on",label:"按页面类型启用",type:"checkbox",default:["home"],options:[{label:"首页",value:"home"},{label:"文章",value:"single"},{label:"页面",value:"page"},{label:"分类",value:"category"},{label:"标签",value:"tag"},{label:"搜索",value:"search"},{label:"归档",value:"archive"},{label:"专题",value:"special"}],help:"选择哪些页面类型显示顶部组件,不选则关闭"},{key:"header_components_device_visibility",label:"设备显示规则",type:"radio",default:"",options:[{label:"全部",value:""},{label:"仅电脑",value:"only_pc"},{label:"仅移动",value:"only_sm"}]}]},{key:"nav-color",title:"导航栏配色",icon:"fas fa-palette",fields:[{key:"header_components_nav_color",label:"导航栏文字颜色",type:"color",default:"#ffffff",help:"顶部组件叠加时固定导航的文字颜色"}]},{key:"slider-config",title:"幻灯片配置",icon:"fas fa-sliders-h",fields:[{key:"slider_config_direction",label:"滑动方向",type:"radio",default:"horizontal",options:[{label:"水平",value:"horizontal"},{label:"垂直",value:"vertical"}]},{key:"slider_config_speed",label:"切换速度 (ms)",type:"number",default:300,min:100,max:3e3},{key:"slider_config_button",label:"显示前进后退按钮",type:"switch",default:!0},{key:"slider_config_scale_height",label:"缩放高度",type:"switch",default:!1},{key:"slider_config_scale",label:"缩放效果",type:"switch",default:!1},{key:"slider_config_max_height",label:"最大高度",type:"input",default:""},{key:"slider_config_min_height",label:"最小高度",type:"input",default:""}]},{key:"search",title:"搜索组件",icon:"fas fa-search",fields:[{key:"header_components_search_pc",label:"PC 端显示搜索",type:"switch",default:!0,dependsOn:{key:"header_components_search_enabled",value:!0}},{key:"header_components_search_mobile",label:"移动端显示搜索",type:"switch",default:!0,dependsOn:{key:"header_components_search_enabled",value:!0}},{key:"header_components_search_show_keywords",label:"显示热门搜索词",type:"switch",default:!1,dependsOn:{key:"header_components_search_enabled",value:!0}},{key:"header_components_search_popular_limit",label:"热词数量",type:"number",default:5,min:1,max:20,dependsOn:{key:"header_components_search_show_keywords",value:!0}},{key:"header_components_search_show_input_cat",label:"显示分类搜索",type:"switch",default:!1,dependsOn:{key:"header_components_search_enabled",value:!0},help:"搜索框内显示分类选择下拉"},{key:"header_components_search_show_type",label:"显示类型切换",type:"switch",default:!1,dependsOn:{key:"header_components_search_enabled",value:!0},help:"搜索框内显示内容类型切换"}]},{key:"cards",title:"图标卡片样式",icon:"fas fa-th-large",fields:[{key:"header_components_filter_blur_devices",label:"容器模糊设备",type:"checkbox",default:[],dependsOn:{key:"header_components_cards_enabled",value:!0},options:[{label:"PC",value:"pc"},{label:"移动端",value:"mobile"}]},{key:"header_components_card_show_devices",label:"卡片显示设备",type:"checkbox",default:["pc","mobile"],dependsOn:{key:"header_components_cards_enabled",value:!0},options:[{label:"PC",value:"pc"},{label:"移动端",value:"mobile"}]},{key:"header_components_card_shared_bg",label:"共享卡片背景",type:"switch",default:!1,dependsOn:{key:"header_components_cards_enabled",value:!0},help:"开启后所有图标卡片共用背景模式"},{key:"header_components_card_blur",label:"启用卡片模糊效果",type:"switch",default:!0,dependsOn:{key:"header_components_cards_enabled",value:!0}},{key:"header_components_card_icon_shape",label:"图标形状",type:"radio",default:"circle",dependsOn:{key:"header_components_cards_enabled",value:!0},options:[{label:"圆形",value:"circle"},{label:"方形",value:"square"}]}]},{key:"icon-cards",title:"图标卡片列表",icon:"fas fa-list",fields:[{key:"header_components_icon_cards",label:"图标卡片",type:"repeater",sanitize_type:"array",default:[],dependsOn:{key:"header_components_cards_enabled",value:!0},addText:"添加卡片",fields:[{key:"icon",label:"图标类名",type:"input",default:"fas fa-star",placeholder:"fas fa-star"},{key:"custom_icon",label:"自定义图标 HTML",type:"textarea",default:"",rows:2,placeholder:"..."},{key:"icon_class",label:"图标配色",type:"select",default:"c-blue",options:[{label:"Blue",value:"c-blue"},{label:"Yellow",value:"c-yellow"},{label:"Green",value:"c-green"},{label:"Red",value:"c-red"},{label:"Orange",value:"c-orange"},{label:"Cyan",value:"c-cyan"},{label:"Pink",value:"c-pink"},{label:"Gradient Cyan",value:"jb-cyan"},{label:"Gradient Green",value:"jb-green"},{label:"Gradient Orange",value:"jb-orange"}]},{key:"title",label:"标题",type:"input",default:""},{key:"desc",label:"描述",type:"input",default:""},{key:"url",label:"链接 URL",type:"input",default:"",placeholder:"https://example.com"},{key:"target",label:"打开方式",type:"radio",default:"_self",options:[{label:"当前标签页",value:"_self"},{label:"新标签页",value:"_blank"}]}]}]}]},"float-btn":{key:"page_display.float-btn",title:"悬浮按钮",icon:"fas fa-circle-chevron-up",description:"配置页面悬浮按钮的显示规则、样式和滚动隐藏行为。",defaults:{float_btn_style:"round",float_btn_position:"bottom",float_btn_scroll_hide:!1,float_btn_scroll_down_hide:!0,float_btn_max:5,float_btn_size:44,float_btn_spacing:10,float_btn_shadow:!0,float_btn_animation:!0,float_btn_opacity:100,float_btn_active_color:"",float_btn_bg_color:"",float_btn_pc_s:!0,float_btn_m_s:!0,float_btn_filter_css:""},groups:[{key:"basic",title:"悬浮按钮设置",icon:"fas fa-circle-notch",fields:[{key:"float_btn_style",label:"按钮风格",type:"radio",default:"round",options:[{label:"圆形",value:"round"},{label:"方形",value:"square"}]},{key:"float_btn_position",label:"按钮位置",type:"radio",default:"bottom",options:[{label:"底部",value:"bottom"},{label:"居中",value:"center"}]},{key:"float_btn_scroll_hide",label:"滚动时隐藏",type:"switch",default:!1},{key:"float_btn_scroll_down_hide",label:"下滑时隐藏",type:"switch",default:!0},{key:"float_btn_max",label:"最大显示数",type:"number",default:5,min:1,max:10},{key:"float_btn_size",label:"按钮尺寸",type:"number",default:44,min:32,max:64},{key:"float_btn_spacing",label:"按钮间距",type:"number",default:10,min:4,max:24},{key:"float_btn_shadow",label:"显示阴影",type:"switch",default:!0},{key:"float_btn_animation",label:"悬停动画",type:"switch",default:!0},{key:"float_btn_opacity",label:"按钮透明度",type:"number",default:100,min:30,max:100},{key:"float_btn_active_color",label:"激活颜色",type:"color",default:""},{key:"float_btn_bg_color",label:"背景颜色",type:"color",default:""},{key:"float_btn_pc_s",label:"PC端显示",type:"switch",default:!0},{key:"float_btn_m_s",label:"移动端显示",type:"switch",default:!0},{key:"float_btn_filter_css",label:"过滤 CSS",type:"textarea",default:""}]}]},footer:{key:"page_display.footer",title:"底部页脚",icon:"fas fa-shoe-prints",description:"页脚布局、友链、版权信息配置。实际编辑界面在 FooterSettings.vue(customPage),此处为 REST 聚合描述。",defaults:{footer_columns:3,footer_copyright:!0,footer_icp:!0,icp_number:"",footer_police:!0,police_number:"",footer_theme_custom:!1,footer_theme_bg_custom:"",footer_theme_bg:"",footer_theme_color_custom:"",footer_contact_wechat_img:"",footer_contact_qq:"",footer_contact_weibo:"",footer_contact_email:"",footer_t1_m_s:["pc","mobile"],footer_t1_img:"",footer_t1_img_dark:"",footer_t1_t:"",fcode_t1_code:"",footer_contact_m_s:["pc","mobile"],footer_contact_more:"",fcode_t2_code_1:"",fcode_t2_code_2:"",footer_mini_img_m_s:["pc","mobile"],footer_mini_img:"",fcode_customize_code:""},groups:[{key:"layout",title:"页脚布局",icon:"fas fa-columns",fields:[{key:"footer_columns",label:"页脚列数",type:"number",default:3,min:1,max:4},{key:"footer_copyright",label:"显示版权信息",type:"switch",default:!0},{key:"footer_icp",label:"显示ICP备案",type:"switch",default:!0},{key:"icp_number",label:"ICP备案号",type:"input",default:""},{key:"footer_police",label:"显示公安备案",type:"switch",default:!0},{key:"police_number",label:"公安备案号",type:"input",default:""}]},{key:"color",title:"页脚颜色",icon:"fas fa-palette",fields:[{key:"footer_theme_custom",label:"自定义页脚颜色",type:"switch",default:!1},{key:"footer_theme_bg_custom",label:"自定义背景色",type:"color",default:""},{key:"footer_theme_bg",label:"背景图片",type:"media",default:""},{key:"footer_theme_color_custom",label:"自定义文字颜色",type:"color",default:""}]},{key:"contact",title:"联系方式",icon:"fas fa-address-book",fields:[{key:"footer_contact_wechat_img",label:"微信二维码",type:"media",default:""},{key:"footer_contact_qq",label:"QQ",type:"input",default:""},{key:"footer_contact_weibo",label:"微博",type:"input",default:""},{key:"footer_contact_email",label:"邮箱",type:"input",default:""}]},{key:"brand",title:"品牌列(第一列)",icon:"fas fa-building",fields:[{key:"footer_t1_m_s",label:"显示设备",type:"checkbox",default:["pc","mobile"]},{key:"footer_t1_img",label:"页脚 Logo(日间)",type:"media",default:""},{key:"footer_t1_img_dark",label:"页脚 Logo(夜间)",type:"media",default:""},{key:"footer_t1_t",label:"品牌标题",type:"input",default:""},{key:"fcode_t1_code",label:"品牌列自定义代码",type:"textarea",default:""}]},{key:"contact_ext",title:"联系方式扩展",icon:"fas fa-phone-alt",fields:[{key:"footer_contact_m_s",label:"显示设备",type:"checkbox",default:["pc","mobile"]},{key:"footer_contact_more",label:"更多联系项",type:"textarea",default:""},{key:"fcode_t2_code_1",label:"链接 HTML(fcode_t2_code_1)",type:"textarea",default:""},{key:"fcode_t2_code_2",label:"链接下方自定义代码",type:"textarea",default:""}]},{key:"mini_qr",title:"二维码图片组(第三列)",icon:"fas fa-qrcode",fields:[{key:"footer_mini_img_m_s",label:"显示设备",type:"checkbox",default:["pc","mobile"]},{key:"footer_mini_img",label:"二维码组",type:"textarea",default:""}]},{key:"custom",title:"底部自定义",icon:"fas fa-code",fields:[{key:"fcode_customize_code",label:"底部自定义代码",type:"textarea",default:""}]}]},homepage:{key:"page_display.homepage",title:"首页配置",icon:"fas fa-home",description:"配置首页主列表、分类 Tab、卡片样式与首页交互。实际编辑界面在 HomepageSettings.vue(customPage),此处补齐 page_display 的 schema 契约。",defaults:{homepage_tabs:[],homepage_card_style:"default",homepage_multi_thumb_enabled:!1,homepage_multi_thumb_min_images:3,homepage_sidebar_mini_enabled:!0,homepage_default_sort:"date",homepage_default_view:"list",homepage_sort_ajax_enabled:!0,homepage_sticky_tabs_enabled:!0,home_posts_list_s:!0,home_list_title:"最新发布",home_list_sort_enabled:!0,home_list_sort_options:["modified","date","views","likes","comments"],home_list_sort_dropdown:!1,home_exclude_post_ids:[],home_exclude_category_ids:[],homepage_tab_posts_per_page:6,homepage_tab_limit:4},groups:[{key:"main-stream",title:"主列表",icon:"fas fa-list",fields:[{key:"home_posts_list_s",label:"启用主列表",type:"switch",default:!0},{key:"index_list_title",label:"区块标题",type:"input",default:"最新发布",dependsOn:{key:"home_posts_list_s",value:!0}},{key:"home_list1_orderby_option.orderby",label:"默认排序",type:"select",default:"date",dependsOn:{key:"home_posts_list_s",value:!0},options:ze},{key:"home_list1_orderby_s",label:"启用排序栏",type:"switch",default:!0,dependsOn:{key:"home_posts_list_s",value:!0}},{key:"home_list_sort_dropdown",label:"排序栏下拉模式",type:"switch",default:!1,dependsOn:{key:"home_list1_orderby_s",value:!0}},{key:"home_list1_orderby_option",label:"可用排序选项",type:"checkbox",default:["modified","date","views","likes","comments"],dependsOn:{key:"home_list1_orderby_s",value:!0},options:ze}]},{key:"exclude",title:"排除规则",icon:"fas fa-filter",fields:[{key:"home_exclude_posts",label:"排除文章 ID",type:"array",default:[],help:"主列表和 Tab 查询均排除这些文章。"},{key:"home_exclude_cats",label:"排除分类 ID",type:"array",default:[],help:"主列表排除这些分类。"}]},{key:"tabs",title:"首页 Tab",icon:"fas fa-tags",fields:[{key:"home_lists",label:"首页 Tab",type:"array",default:[],help:"分类 Tab 由 HomepageSettings.vue 中的可视化编辑器维护。"},{key:"homepage_tab_limit",label:"Tab 数量上限",type:"number",default:4,min:1,max:12},{key:"homepage_tab_posts_per_page",label:"每 Tab 文章数",type:"number",default:6,min:1,max:20},{key:"homepage_sticky_tabs_enabled",label:"Tab 吸顶",type:"switch",default:!0}]},{key:"cards-sidebar",title:"卡片与侧栏",icon:"fas fa-columns",fields:[{key:"homepage_card_style",label:"卡片风格(已弃用)",type:"radio",default:"default",options:[{label:"默认",value:"default"},{label:"风格 2",value:"style2"},{label:"风格 3",value:"style3"}],help:"已弃用:请改用「文章列表」中的列表/卡片样式设置。"},{key:"homepage_multi_thumb_enabled",label:"多图卡片(已弃用)",type:"switch",default:!0,help:"请改用文章列表缩略图/多图设置。"},{key:"homepage_multi_thumb_min_images",label:"最少图片数(已弃用)",type:"number",default:3,min:2,max:4},{key:"homepage_default_view",label:"默认视图(已弃用)",type:"radio",default:"list",options:[{label:"列表",value:"list"},{label:"卡片",value:"card"}],help:"SSR 以文章列表全局设置为准;此字段仅作兼容保留。"},{key:"homepage_sidebar_mini_enabled",label:"迷你侧栏列表",type:"switch",default:!0},{key:"homepage_sort_ajax_enabled",label:"排序栏 AJAX",type:"switch",default:!0}]}]},special:{key:"page_display.special",title:"专题页面",icon:"fas fa-layer-group",description:"配置专题聚合页的封面、摘要、布局、聚合规则和子页面展示策略。",defaults:{special_cover_enabled:!0,special_summary_enabled:!0,special_summary_length:200,special_default_cover:"",special_layout:"grid",special_columns:2,special_source_type:"category",special_source_ids:"",special_subpage_display:"cards",special_subpage_count:6,special_sidebar:!0,special_pagination:"numeric",special_per_page:12,special_post_count:!1,special_orderby:"date"},groups:[{key:"header",title:"专题头部",icon:"fas fa-image",fields:[{key:"special_cover_enabled",label:"显示专题封面",type:"switch",default:!0,help:"在专题页顶部展示封面图"},{key:"special_summary_enabled",label:"显示专题摘要",type:"switch",default:!0},{key:"special_summary_length",label:"摘要最大长度",type:"number",default:200,min:50,max:500,dependsOn:{key:"special_summary_enabled",value:!0}},{key:"special_default_cover",label:"默认封面图",type:"upload",default:"",help:"未设置专题封面时使用的默认图片"}]},{key:"layout",title:"布局设置",icon:"fas fa-th-large",fields:[{key:"special_layout",label:"内容布局",type:"radio",default:"grid",options:[{label:"网格",value:"grid"},{label:"列表",value:"list"},{label:"瀑布流",value:"masonry"}]},{key:"special_columns",label:"网格列数",type:"number",default:2,min:1,max:4,dependsOn:{key:"special_layout",value:"grid"}},{key:"special_sidebar",label:"侧边栏",type:"switch",default:!0},{key:"special_post_count",label:"显示文章数",type:"switch",default:!1,help:"在专题列表中显示每篇文章的浏览次数"}]},{key:"aggregation",title:"聚合规则",icon:"fas fa-database",fields:[{key:"special_source_type",label:"内容来源",type:"radio",default:"category",options:[{label:"分类",value:"category"},{label:"标签",value:"tag"},{label:"手动选择",value:"manual"},{label:"最新文章",value:"latest"}]},{key:"special_source_ids",label:"来源 ID 列表",type:"input",default:"",placeholder:"逗号分隔分类/标签 ID",help:"填写分类或标签的 ID,逗号分隔"}]},{key:"subpage",title:"子页面展示",icon:"fas fa-clone",fields:[{key:"special_subpage_display",label:"子页面样式",type:"radio",default:"cards",options:[{label:"卡片",value:"cards"},{label:"列表",value:"list"},{label:"时间线",value:"timeline"}]},{key:"special_subpage_count",label:"每页子页面数",type:"number",default:6,min:1,max:24}]},{key:"pagination",title:"分页设置",icon:"fas fa-ellipsis-h",fields:[{key:"special_pagination",label:"分页模式",type:"radio",default:"numeric",options:[{label:"数字分页",value:"numeric"},{label:"加载更多",value:"load_more"},{label:"无限滚动",value:"infinite"}]},{key:"special_per_page",label:"每页文章数",type:"number",default:12,min:4,max:48}]},{key:"orderby",title:"排序设置",icon:"fas fa-sort",fields:[{key:"special_orderby",label:"默认排序",type:"select",default:"date",options:[{label:"发布时间",value:"date"},{label:"最近更新",value:"modified"},{label:"浏览数",value:"views"},{label:"评论数",value:"comments"}]}]}]}},Sl={key:"post_list.list",title:"文章列表",icon:"fas fa-list",description:"对齐 Zibll 文章列表:默认排序、置顶范围、翻页模式(数字/AJAX/自动加载)与列表显示部件。",defaults:{list_orderby:"modified",sticky_s:["home","cat"],target_blank:!1,item_heading_bold:!1,post_list_author:!0,post_list_time:!0,list_meta_show:"like",list_badge_show:["pay","tag","topics","cat"],paging_ajax_s:"1",paging_ajax_ias_s:!0,ias_max:3,ajax_trigger:"加载更多",ajax_nomore:"没有更多了",post_card_style:"thumb",post_excerpt_length:120,post_list_per_page:12,list_show_type:"separate",list_list_style:"",list_list_img_position:"left",list_list_scale:70,list_card_style:"",list_card_scale:70,list_card_home:!1,list_card_cat:[],list_card_tag:!1,list_card_topics:!1,list_card_author:!1},groups:[{key:"order",title:"默认排序与置顶",icon:"fas fa-sort",fields:[{key:"list_orderby",label:"默认排序方式",type:"radio",default:"modified",options:[{label:"发布时间",value:"date"},{label:"更新时间",value:"modified"},{label:"WP默认",value:"default"}],help:"文章列表全局默认排序(Zibll list_orderby)"},{key:"sticky_s",label:"显示置顶文章",type:"checkbox",default:["home","cat"],options:[{label:"首页",value:"home"},{label:"分类页",value:"cat"},{label:"标签页",value:"tag"},{label:"专题页",value:"topics"}]}]},{key:"display",title:"列表显示",icon:"fas fa-eye",fields:[{key:"target_blank",label:"新窗口打开文章",type:"switch",default:!1},{key:"item_heading_bold",label:"列表标题粗体显示",type:"switch",default:!1},{key:"post_list_author",label:"显示文章作者",type:"switch",default:!0},{key:"post_list_time",label:"显示文章时间",type:"switch",default:!0,help:"建议作者与时间至少开启一项"},{key:"list_meta_show",label:"列表小部件(移动端优先)",type:"radio",default:"like",options:[{label:"阅读量",value:"view"},{label:"点赞数",value:"like"},{label:"评论",value:"comm"}]},{key:"list_badge_show",label:"列表徽章",type:"checkbox",default:["pay","tag","topics","cat"],options:[{label:"付费",value:"pay"},{label:"分类",value:"cat"},{label:"专题",value:"topics"},{label:"标签",value:"tag"}]}]},{key:"paging",title:"列表翻页",icon:"fas fa-ellipsis-h",fields:[{key:"paging_ajax_s",label:"列表翻页模式",type:"radio",default:"1",options:[{label:"AJAX 追加列表翻页",value:"1"},{label:"数字翻页按钮",value:"0"}],help:"对齐 Zibll paging_ajax_s"},{key:"paging_ajax_ias_s",label:"AJAX 自动加载",type:"switch",default:!0,dependsOn:{key:"paging_ajax_s",value:"1"},help:"滚动到列表尽头时自动加载下一页"},{key:"ias_max",label:"自动加载页数",type:"number",default:3,min:0,max:10,dependsOn:{key:"paging_ajax_s",value:"1"},help:"0 表示不限制"},{key:"ajax_trigger",label:"加载更多文案",type:"input",default:"加载更多",dependsOn:{key:"paging_ajax_s",value:"1"}},{key:"ajax_nomore",label:"没有更多文案",type:"input",default:"没有更多了",dependsOn:{key:"paging_ajax_s",value:"1"}}]},{key:"card",title:"卡片与布局",icon:"fas fa-th-large",fields:[{key:"post_card_style",label:"默认列表模式",type:"select",default:"thumb",options:[{label:"列表图文模式",value:"thumb"},{label:"列表文字模式",value:"text"},{label:"列表自动图文",value:"thumb_if_has"},{label:"卡片模式",value:"card"},{label:"紧凑列表",value:"compact"},{label:"大图列表",value:"large_thumb"},{label:"多图列表",value:"multi_thumb"}],help:"对齐 Zibll list_type:thumb/text/thumb_if_has 为列表,card 为卡片网格。首页可用下方「首页卡片模式」单独强制卡片。"},{key:"post_excerpt_length",label:"摘要长度",type:"number",default:120,min:20,max:500},{key:"post_list_per_page",label:"每页文章数",type:"number",default:12,min:4,max:48},{key:"list_show_type",label:"列表间距样式",type:"radio",default:"separate",options:[{label:"分隔卡片",value:"separate"},{label:"无间距",value:"no_margin"}]},{key:"list_list_style",label:"列表样式变体",type:"radio",default:"",options:[{label:"默认",value:""},{label:"样式2",value:"style2"}]},{key:"list_list_img_position",label:"列表缩略图位置",type:"radio",default:"left",options:[{label:"左侧",value:"left"},{label:"右侧",value:"right"}]},{key:"list_list_scale",label:"列表缩略图比例 (%)",type:"number",default:70,min:50,max:200},{key:"list_card_style",label:"卡片样式变体",type:"radio",default:"",options:[{label:"默认",value:""},{label:"样式3",value:"style3"}]},{key:"list_card_scale",label:"卡片缩略图比例 (%)",type:"number",default:70,min:20,max:200},{key:"list_card_home",label:"首页卡片模式",type:"switch",default:!1,help:"当默认模式不为卡片时,单独将首页列表强制为卡片(Zibll list_card_home)",dependsOn:{key:"post_card_style",operator:"!=",value:"card"}},{key:"list_card_cat",label:"分类卡片模式",type:"taxonomy_select",taxonomy:"category",multiple:!0,default:[]},{key:"list_card_tag",label:"标签页卡片模式",type:"switch",default:!1},{key:"list_card_topics",label:"专题页卡片模式",type:"switch",default:!1},{key:"list_card_author",label:"用户页卡片模式",type:"switch",default:!1}]}]},zl={key:"post_list.thumb",title:"列表缩略图",icon:"fas fa-images",description:"配置缩略图来源优先级、尺寸、占位图和多图模式。",defaults:{thumb_priority:"featured,attachment,resource,custom",thumb_fallback:"placeholder",thumb_spare_images:[],thumb_lazy:!0,thumb_aspect_ratio:"16:9",list_thumb_fit:"cover",thumb_multi_enabled:!1,thumb_multi_count:3,list_thumb_slides_s:!0,list_thumb_video_s:!0,list_thumb_video_mute_s:!0,thumb_postfirstimg_s:!0,thumb_catimg_s:!0,mult_thumb_cat:[]},groups:[{key:"source",title:"图片来源",icon:"fas fa-image",fields:[{key:"thumb_priority",label:"图片优先级",type:"input",default:"featured,attachment,resource,custom",help:"逗号分隔: featured(特色图), attachment(附件), resource(资源封面), custom(自定义), post_first_img(文章首图), category_cover(分类封面)"},{key:"thumb_fallback",label:"无图时处理",type:"radio",default:"placeholder",options:[{label:"显示占位图",value:"placeholder"},{label:"隐藏缩略图",value:"hide"},{label:"随机封面",value:"random"}]},{key:"thumb_spare_images",label:"备用缩略图",type:"gallery",default:[],help:'当无图处理选择"随机封面"时从此图库随机选取',dependsOn:{key:"thumb_fallback",value:"random"}},{key:"thumb_aspect_ratio",label:"图片比例",type:"select",default:"16:9",options:[{label:"16:9 宽屏",value:"16:9"},{label:"4:3 标准",value:"4:3"},{label:"1:1 正方形",value:"1:1"},{label:"自适应",value:"auto"}]},{key:"list_thumb_fit",label:"缩略图填充方式",type:"radio",default:"cover",options:[{label:"填充裁剪",value:"cover"},{label:"完整显示",value:"contain"}]},{key:"list_thumb_slides_s",label:"幻灯片缩略图",type:"switch",default:!0,help:"允许幻灯片作为列表缩略图"},{key:"list_thumb_video_s",label:"视频缩略图",type:"switch",default:!0,help:"鼠标悬停时自动播放视频缩略图"},{key:"list_thumb_video_mute_s",label:"视频缩略图静音",type:"switch",default:!0,dependsOn:{key:"list_thumb_video_s",value:!0},help:"视频缩略图播放时静音"},{key:"thumb_postfirstimg_s",label:"自动获取文章首图",type:"switch",default:!0,help:"自动从文章内容中提取第一张图片作为缩略图"},{key:"thumb_postfirstimg_size",label:"首图尺寸",type:"select",default:"medium",options:[{label:"缩略图",value:"thumbnail"},{label:"中等",value:"medium"},{label:"大",value:"large"},{label:"原始",value:"full"}],dependsOn:{key:"thumb_postfirstimg_s",value:!0},help:"自动获取文章首图时使用的 WP 图片尺寸"},{key:"thumb_catimg_s",label:"自动获取分类封面",type:"switch",default:!0,help:"无特色图时使用分类封面图作为缩略图"}]},{key:"multi",title:"多图模式",icon:"fas fa-images",fields:[{key:"thumb_multi_enabled",label:"多图卡片",type:"switch",default:!1,help:"当文章有多张图片时,在列表中展示多图预览"},{key:"thumb_multi_count",label:"最多显示几张",type:"number",default:3,min:2,max:6,dependsOn:{key:"thumb_multi_enabled",value:!0}},{key:"mult_thumb_cat",label:"按分类多图显示",type:"taxonomy_select",taxonomy:"category",multiple:!0,default:[],help:"选择的分类下所有文章自动显示多张缩略图"},{key:"thumb_lazy",label:"懒加载",type:"switch",default:!0}]}]},Al={key:"post_list.page",title:"文章页面",icon:"fas fa-file-alt",description:"配置单篇文章页面的布局、目录树、图片灯箱、版权区和互动功能。",defaults:{post_toc_enabled:!0,post_toc_depth:3,article_nav_mobile_nav_s:!0,post_reading_progress:!0,breadcrumbs_single_s:!0,breadcrumbs_home_text:"首页",post_prevnext_s:!0,post_authordesc_s:!0,post_single_hide_time_s:!1,post_lightbox:!0,post_lightbox_thumbs:!0,post_lightbox_zoom:!0,post_lightbox_full:!0,post_lightbox_down:!1,post_lightbox_play:!1,post_related_enabled:!0,post_related_count:6,post_related_style:"img",post_related_source:"category",post_related_type:"category",post_related_orderby:"views",post_related_title:"相关推荐",breadcrumbs_single_text:!0,post_copyright_enabled:!0,post_copyright_text:"",share_s:!0,post_like_enabled:!0,post_favorite_enabled:!0,post_front_content:"",post_after_content:"",post_yiyan_header:!1,post_yiyan_footer:!1,post_yiyan_box:!1,post_default_views_min:20,post_default_views_max:50,post_default_likes_min:5,post_default_likes_max:15,post_article_image_cover:!0,post_article_image_cover_scale:35,post_article_slide_cover:!0,post_article_video_cover:!0,post_article_video_cover_scale:56,item_heading_bold:!1,post_button_toptext:"喜欢就支持一下吧",post_rewards_enabled:!1,post_rewards_text:"",post_rewards_image:"",post_rewards_btn_text:"赞赏",article_maxheight_kg:!1,article_maxheight:1e3},groups:[{key:"navigation",title:"文章导航",icon:"fas fa-compass",fields:[{key:"post_toc_enabled",label:"目录树导航",type:"switch",default:!0,help:"自动生成文章目录树"},{key:"post_toc_depth",label:"目录深度",type:"number",default:3,min:1,max:6,dependsOn:{key:"post_toc_enabled",value:!0}},{key:"article_nav_mobile_nav_s",label:"移动端弹出菜单",type:"switch",default:!0,dependsOn:{key:"post_toc_enabled",value:!0},help:"在移动端弹出菜单中显示目录导航"},{key:"post_reading_progress",label:"阅读进度条",type:"switch",default:!0},{key:"breadcrumbs_single_s",label:"面包屑导航",type:"switch",default:!0},{key:"breadcrumbs_home_text",label:"面包屑首页文字",type:"input",default:"首页",dependsOn:{key:"breadcrumbs_single_s",value:!0}},{key:"breadcrumbs_single_text",label:"末项显示「正文」",type:"switch",default:!0,dependsOn:{key:"breadcrumbs_single_s",value:!0},help:"关闭后末项显示文章标题"},{key:"post_prevnext_s",label:"上一篇/下一篇",type:"switch",default:!0},{key:"post_authordesc_s",label:"作者简介",type:"switch",default:!0},{key:"post_single_hide_time_s",label:"隐藏文章时间",type:"switch",default:!1}]},{key:"cover",title:"封面展示",icon:"fas fa-image",fields:[{key:"post_article_image_cover",label:"图片封面",type:"switch",default:!0,help:"文章有特色图时自动展示封面"},{key:"post_article_image_cover_scale",label:"封面高度比例(%)",type:"number",default:35,min:10,max:100,dependsOn:{key:"post_article_image_cover",value:!0}},{key:"post_article_slide_cover",label:"幻灯片封面",type:"switch",default:!0,help:"文章有图集时以轮播形式展示封面"},{key:"post_article_video_cover",label:"视频封面",type:"switch",default:!0,help:"文章有视频时以视频播放器作为封面"},{key:"post_article_video_cover_scale",label:"视频封面高度比例(%)",type:"number",default:56,min:20,max:100,dependsOn:{key:"post_article_video_cover",value:!0}}]},{key:"media",title:"媒体功能",icon:"fas fa-photo-video",fields:[{key:"post_lightbox",label:"图片灯箱",type:"switch",default:!0,help:"点击图片放大查看"},{key:"post_lightbox_thumbs",label:"灯箱缩略图",type:"switch",default:!0,dependsOn:{key:"post_lightbox",value:!0},help:"灯箱底部显示缩略图导航"},{key:"post_lightbox_zoom",label:"灯箱缩放",type:"switch",default:!0,dependsOn:{key:"post_lightbox",value:!0},help:"灯箱显示缩放按钮"},{key:"post_lightbox_full",label:"灯箱全屏",type:"switch",default:!0,dependsOn:{key:"post_lightbox",value:!0},help:"灯箱显示全屏按钮"},{key:"post_lightbox_down",label:"灯箱下载",type:"switch",default:!1,dependsOn:{key:"post_lightbox",value:!0},help:"灯箱显示下载按钮"},{key:"post_lightbox_play",label:"灯箱播放",type:"switch",default:!1,dependsOn:{key:"post_lightbox",value:!0},help:"灯箱显示播放按钮(自动轮播)"}]},{key:"related",title:"相关推荐",icon:"fas fa-random",fields:[{key:"post_related_enabled",label:"显示相关推荐",type:"switch",default:!0},{key:"post_related_count",label:"推荐数量",type:"number",default:6,min:1,max:20,dependsOn:{key:"post_related_enabled",value:!0}},{key:"post_related_style",label:"展示样式",type:"radio",default:"img",options:[{label:"图文卡片",value:"img"},{label:"列表",value:"list"},{label:"纯文字",value:"text"}],dependsOn:{key:"post_related_enabled",value:!0},help:"对齐 Zibll 相关文章三种样式"},{key:"post_related_source",label:"推荐来源",type:"radio",default:"category",options:[{label:"同分类/标签/专题",value:"category"},{label:"同标签",value:"tag"},{label:"随机",value:"random"}],dependsOn:{key:"post_related_enabled",value:!0}},{key:"post_related_orderby",label:"推荐排序",type:"select",default:"views",options:[{label:"浏览量",value:"views"},{label:"随机",value:"rand"},{label:"相关度",value:"relevance"},{label:"时间",value:"date"},{label:"更新时间",value:"modified"}],dependsOn:{key:"post_related_enabled",value:!0}},{key:"post_related_title",label:"推荐标题",type:"input",default:"相关推荐",dependsOn:{key:"post_related_enabled",value:!0}}]},{key:"interactions",title:"互动功能",icon:"fas fa-heart",fields:[{key:"post_like_enabled",label:"点赞",type:"switch",default:!0},{key:"post_favorite_enabled",label:"收藏",type:"switch",default:!0},{key:"share_s",label:"分享按钮",type:"switch",default:!0},{key:"post_copyright_enabled",label:"版权信息",type:"switch",default:!0},{key:"post_copyright_text",label:"版权默认文案",type:"textarea",default:"",help:'留空则自动生成"本文由 XX 原创发布"'},{key:"post_button_toptext",label:"按钮上方文案",type:"input",default:"喜欢就支持一下吧",help:"显示在点赞/打赏/分享按钮上方"},{key:"post_rewards_enabled",label:"打赏",type:"switch",default:!1},{key:"post_rewards_btn_text",label:"打赏按钮文案",type:"input",default:"赞赏",dependsOn:{key:"post_rewards_enabled",value:!0}},{key:"post_rewards_text",label:"打赏说明",type:"input",default:"",dependsOn:{key:"post_rewards_enabled",value:!0}},{key:"post_rewards_image",label:"打赏二维码 URL",type:"input",default:"",dependsOn:{key:"post_rewards_enabled",value:!0}},{key:"article_maxheight_kg",label:"正文限高",type:"switch",default:!1,help:"开启后长文默认折叠,可展开全文"},{key:"article_maxheight",label:"限高像素",type:"number",default:1e3,min:200,max:5e3,dependsOn:{key:"article_maxheight_kg",value:!0}}]},{key:"content",title:"内容插入",icon:"fas fa-pen-square",fields:[{key:"post_front_content",label:"文章头部内容",type:"textarea",default:"",help:"显示在所有文章正文前方(支持 HTML)"},{key:"post_after_content",label:"文章底部内容",type:"textarea",default:"",help:"显示在所有文章正文后方(支持 HTML)"}]},{key:"yiyan",title:"一言",icon:"fas fa-quote-left",fields:[{key:"post_yiyan_header",label:"文章头部一言",type:"switch",default:!1,help:"在文章标题下方显示一言"},{key:"post_yiyan_footer",label:"文章底部一言",type:"switch",default:!1,help:"在文章内容底部显示一言"},{key:"post_yiyan_box",label:"一言盒子",type:"switch",default:!1,help:"在相关文章前显示一言盒子"}]},{key:"meta",title:"默认数值",icon:"fas fa-chart-bar",fields:[{key:"post_default_views_min",label:"默认浏览最小值",type:"number",default:20,min:0,max:9999},{key:"post_default_views_max",label:"默认浏览最大值",type:"number",default:50,min:1,max:9999},{key:"post_default_likes_min",label:"默认点赞最小值",type:"number",default:5,min:0,max:9999},{key:"post_default_likes_max",label:"默认点赞最大值",type:"number",default:15,min:1,max:9999}]}]},Vl={key:"post_list.filter",title:"高级筛选",icon:"fas fa-filter",description:"为文章列表配置筛选栏、排序方式和分类筛选功能。",defaults:{filter_enabled:!1,filter_categories:!0,filter_tags:!1,filter_sort:!0,filter_ajax_enabled:!0,filter_cat_show_cat:!0,filter_cat_show_tag:!1,filter_tag_show_cat:!0,filter_tag_show_tag:!1,filter_topics_show_cat:!0,filter_topics_show_tag:!1,custom_filter_show:["cat","tag"],custom_filter:[],cat_custom_filter:[]},groups:[{key:"basic",title:"筛选基础",icon:"fas fa-filter",fields:[{key:"filter_enabled",label:"启用筛选栏",type:"switch",default:!1},{key:"custom_filter_show",label:"筛选显示页面",type:"checkbox",default:["cat","tag"],options:[{label:"分类页",value:"cat"},{label:"标签页",value:"tag"},{label:"专题页",value:"topics"}],help:"选择在哪些页面显示筛选栏",dependsOn:{key:"filter_enabled",value:!0}},{key:"filter_categories",label:"分类筛选",type:"switch",default:!0,dependsOn:{key:"filter_enabled",value:!0}},{key:"filter_tags",label:"标签筛选",type:"switch",default:!1,dependsOn:{key:"filter_enabled",value:!0}},{key:"filter_sort",label:"排序选项",type:"switch",default:!0,dependsOn:{key:"filter_enabled",value:!0}},{key:"filter_ajax_enabled",label:"AJAX 无刷新筛选",type:"switch",default:!0,help:"启用后分类/标签/排序切换将通过 AJAX 加载,无需刷新页面",dependsOn:{key:"filter_enabled",value:!0}}]},{key:"ajax",title:"AJAX 筛选维度",icon:"fas fa-layer-group",fields:[{key:"filter_cat_show_cat",label:"分类页:显示分类筛选",type:"switch",default:!0},{key:"filter_cat_show_tag",label:"分类页:显示标签筛选",type:"switch",default:!1},{key:"filter_tag_show_cat",label:"标签页:显示分类筛选",type:"switch",default:!0},{key:"filter_tag_show_tag",label:"标签页:显示标签筛选",type:"switch",default:!1},{key:"filter_topics_show_cat",label:"专题页:显示分类筛选",type:"switch",default:!0},{key:"filter_topics_show_tag",label:"专题页:显示标签筛选",type:"switch",default:!1}]},{key:"custom_filter",title:"自定义筛选维度",icon:"fas fa-sliders-h",fields:[{key:"custom_filter",label:"筛选维度定义",type:"repeater",default:[],addText:"添加筛选维度",help:'每项定义一个筛选维度(如"类型""地区""年份"),及其可选值列表',fields:[{key:"name",label:"维度名称",type:"input",default:"",placeholder:"如:类型"},{key:"key",label:"维度标识",type:"input",default:"",placeholder:"如:type(英文下划线)"},{key:"vals",label:"可选值",type:"repeater",default:[],addText:"添加可选值",fields:[{key:"key",label:"标识",type:"input",default:"",placeholder:"如:action"},{key:"name",label:"显示名",type:"input",default:"",placeholder:"如:动作"}]}]}]},{key:"cat_custom_filter",title:"按分类绑定筛选",icon:"fas fa-object-group",fields:[{key:"cat_custom_filter",label:"分类筛选绑定",type:"repeater",default:[],addText:"添加绑定规则",help:"为指定分类绑定不同的筛选维度组合,实现分类级别的差异化筛选",fields:[{key:"cats",label:"绑定分类",type:"taxonomy_select",taxonomy:"category",multiple:!0,default:[]},{key:"cat_s",label:"显示分类筛选",type:"switch",default:!1},{key:"tag_s",label:"显示标签筛选",type:"switch",default:!1},{key:"topics_s",label:"显示专题筛选",type:"switch",default:!1},{key:"orderby_s",label:"显示排序按钮",type:"switch",default:!0},{key:"custom_filters",label:"启用的自定义维度",type:"input",default:"",placeholder:"逗号分隔维度标识,如:type,region,year",help:"留空表示使用全部已定义的筛选维度"}]}]}]},Il={key:"post_list.feature",title:"文章功能",icon:"fas fa-magic",description:"配置文章页的互动功能开关。",defaults:{feature_pdf_export:!1,feature_print:!0,feature_word_count:!0,feature_reading_time:!0},groups:[{key:"tools",title:"工具功能",icon:"fas fa-tools",fields:[{key:"feature_print",label:"打印文章",type:"switch",default:!0},{key:"feature_word_count",label:"字数统计",type:"switch",default:!0},{key:"feature_reading_time",label:"预计阅读时间",type:"switch",default:!0},{key:"feature_pdf_export",label:"PDF 导出",type:"switch",default:!1,help:"实验性功能"}]}]},ql={key:"post_list.pay",title:"付费内容",icon:"fas fa-yen-sign",description:"配置文章付费阅读、下载功能和购买用户显示。",defaults:{post_pay_enable:!1,post_pay_price_default:0,post_pay_free_logged_show:!1,post_pay_box_position:"content",post_pay_mark:"付费",post_pay_show_user:!1,post_download_enable:!1,post_download_remote_s:!1,post_download_verify_nonce:!0,post_download_user_log:!0,post_download_post_log:!0},groups:[{key:"basic",title:"付费设置",icon:"fas fa-coins",fields:[{key:"post_pay_enable",label:"启用付费内容",type:"switch",default:!1},{key:"post_pay_price_default",label:"默认价格",type:"number",default:0,min:0,max:9999,dependsOn:{key:"post_pay_enable",value:!0}},{key:"post_pay_free_logged_show",label:"登录用户显示免费",type:"switch",default:!1,dependsOn:{key:"post_pay_enable",value:!0}},{key:"post_pay_box_position",label:"付费框位置",type:"radio",default:"content",options:[{label:"内容前",value:"content"},{label:"全文遮罩",value:"mask"}],dependsOn:{key:"post_pay_enable",value:!0}},{key:"post_pay_mark",label:"付费标记",type:"input",default:"付费",dependsOn:{key:"post_pay_enable",value:!0}},{key:"post_pay_show_user",label:"显示购买用户",type:"switch",default:!1,dependsOn:{key:"post_pay_enable",value:!0}}]},{key:"download",title:"下载设置",icon:"fas fa-download",fields:[{key:"post_download_enable",label:"启用下载功能",type:"switch",default:!1},{key:"post_download_remote_s",label:"远程文件下载",type:"switch",default:!1,dependsOn:{key:"post_download_enable",value:!0}},{key:"post_download_verify_nonce",label:"下载鉴权",type:"switch",default:!0,dependsOn:{key:"post_download_enable",value:!0}},{key:"post_download_user_log",label:"用户下载日志",type:"switch",default:!0,dependsOn:{key:"post_download_enable",value:!0}},{key:"post_download_post_log",label:"文章下载日志",type:"switch",default:!0,dependsOn:{key:"post_download_enable",value:!0}}]}]},jl={key:"post_list.share",title:"分享设置",icon:"fas fa-share-alt",description:"配置微信分享凭据、海报分享和社交分享选项。",defaults:{share_wechat_s:!1,share_wechat_appid:"",share_wechat_app_secret:"",share_only_logo:!1,share_img_compatible_s:!1,share_img_byimg:"",share_logo:"",share_img:"",share_desc:"扫一扫 立即查看"},groups:[{key:"wechat",title:"微信分享",icon:"fab fa-weixin",fields:[{key:"share_wechat_s",label:"启用微信分享",type:"switch",default:!1,help:"启用后文章页将支持微信 JSAPI 分享"},{key:"share_wechat_appid",label:"AppID",type:"input",default:"",dependsOn:{key:"share_wechat_s",value:!0},help:"微信公众号 AppID"},{key:"share_wechat_app_secret",label:"AppSecret",type:"input",default:"",dependsOn:{key:"share_wechat_s",value:!0},help:"微信公众号 AppSecret(请确保 JS 安全域名已配置)"},{key:"share_only_logo",label:"仅显示 Logo",type:"switch",default:!1,help:"分享时仅显示站点 Logo"}]},{key:"poster",title:"海报分享",icon:"fas fa-image",fields:[{key:"share_img_compatible_s",label:"兼容模式",type:"switch",default:!1,help:"启用后使用兼容模式生成分享海报"},{key:"share_img_byimg",label:"海报默认图",type:"media",default:"",help:"海报分享使用的默认背景图"},{key:"share_logo",label:"海报 LOGO",type:"media",default:"",help:"海报上叠加的站点 LOGO"},{key:"share_img",label:"分享图片",type:"media",default:"",help:"社交平台分享预览图"},{key:"share_desc",label:"分享描述",type:"textarea",default:"扫一扫 立即查看",help:"海报或分享卡片的描述文案"}]}]},Pl={key:"post_list.comment",title:"评论设置",icon:"fas fa-comment-dots",description:"配置评论区的排序、分页、权限、工具栏与互动方式。",defaults:{comment_order:"asc",comment_per_page:20,comment_pagination_type:"numbered",comment_paging_ajax_ias_s:!0,comment_paging_ajax_ias_max:3,comment_nested_depth:3,comment_avatar_size:48,comment_require_login:!1,comment_allow_reply:!0,comment_close_comments:!1,comment_edit_window:10,comment_smilie:!0,comment_code:!0,comment_img:!0,comment_upload_img:!1,comment_like_s:!0,comment_quick_s:!0,comment_city_s:!0,comment_author_tag:!0,comment_corderby:!0,comment_empty_text:"暂无评论,来做第一个评论的人吧~",comment_title:"评论",comment_submit_text:"提交评论",comment_text:"欢迎您留下宝贵的见解!"},groups:[{key:"display",title:"评论展示",icon:"fas fa-comment",fields:[{key:"comment_order",label:"评论排序",type:"radio",default:"asc",options:[{label:"正序 (旧→新)",value:"asc"},{label:"倒序 (新→旧)",value:"desc"}]},{key:"comment_per_page",label:"每页评论数",type:"number",default:20,min:5,max:100},{key:"comment_pagination_type",label:"分页方式",type:"radio",default:"numbered",options:[{label:"翻页",value:"numbered"},{label:"加载更多",value:"load_more"},{label:"无限滚动",value:"infinite"}]},{key:"comment_paging_ajax_ias_s",label:"评论自动加载",type:"switch",default:!0,help:"评论无限滚动时自动触发加载"},{key:"comment_paging_ajax_ias_max",label:"评论最大加载页数",type:"number",default:3,min:0,max:10,help:"0 = 不限"},{key:"comment_nested_depth",label:"回复嵌套深度",type:"number",default:3,min:1,max:10},{key:"comment_avatar_size",label:"头像大小 (px)",type:"number",default:48,min:24,max:96}]},{key:"permissions",title:"评论权限",icon:"fas fa-lock",fields:[{key:"comment_require_login",label:"评论需要登录",type:"switch",default:!1},{key:"comment_allow_reply",label:"允许回复",type:"switch",default:!0},{key:"comment_close_comments",label:"关闭评论",type:"switch",default:!1},{key:"comment_edit_window",label:"作者自助编辑时限 (分钟)",type:"number",default:10,min:0,max:1440}]},{key:"toolbar",title:"评论工具栏",icon:"fas fa-toolbox",fields:[{key:"comment_smilie",label:"Emoji 表情",type:"switch",default:!0},{key:"comment_code",label:"代码插入",type:"switch",default:!0},{key:"comment_img",label:"图片按钮",type:"switch",default:!0},{key:"comment_upload_img",label:"评论图片上传",type:"switch",default:!1}]},{key:"interaction",title:"互动功能",icon:"fas fa-heart",fields:[{key:"comment_like_s",label:"评论点赞",type:"switch",default:!0},{key:"comment_quick_s",label:"快捷回复",type:"switch",default:!0},{key:"comment_city_s",label:"评论城市",type:"switch",default:!0},{key:"comment_author_tag",label:"作者标签",type:"switch",default:!0},{key:"comment_corderby",label:"评论排序切换",type:"switch",default:!0,help:"前台显示最新/最早/最热切换按钮"}]},{key:"text",title:"文案配置",icon:"fas fa-font",fields:[{key:"comment_empty_text",label:"空评论提示",type:"input",default:"暂无评论,来做第一个评论的人吧~"},{key:"comment_title",label:"评论区标题",type:"input",default:"评论"},{key:"comment_submit_text",label:"提交按钮文案",type:"input",default:"提交评论"},{key:"comment_text",label:"评论框提示",type:"input",default:"欢迎您留下宝贵的见解!"}]}]},Cl={key:"post_list.submit",title:"前台投稿",icon:"fas fa-paper-plane",description:"配置前台投稿表单字段、审核流程、附件权限和封面策略。",defaults:{front_submit_enabled:!0,front_submit_roles:"author,editor,administrator",front_submit_title:!0,front_submit_content:!0,front_submit_excerpt:!0,front_submit_cover:!0,front_submit_category:!0,post_article_cat:[],front_submit_tags:!0,post_article_topics_s:!1,post_article_custom_filter_s:!0,front_submit_custom_fields:"",front_submit_review_mode:"pending",front_submit_cover_required:!1,front_submit_max_images:5,front_submit_editor_mode:"rich",front_submit_draft_save:!0,front_submit_leave_warning:!0,post_article_btn_txte:"发布文章",post_article_title_strlen_limit_min:5,post_article_title_strlen_limit_max:30,post_article_user:0,post_article_pay_free_s:!0,post_article_pay_price_min:0,post_article_pay_price_max:100,post_article_pay_vip_price_s:!0,post_article_pay_vip_1_discount:80,post_article_pay_vip_2_discount:50},groups:[{key:"basic",title:"基础配置",icon:"fas fa-cog",fields:[{key:"front_submit_enabled",label:"开启前台投稿",type:"switch",default:!0,help:"允许用户在前台提交文章"},{key:"front_submit_roles",label:"允许投稿的角色",type:"input",default:"author,editor,administrator",dependsOn:{key:"front_submit_enabled",value:!0},help:"逗号分隔角色标识"},{key:"post_article_btn_txte",label:"投稿按钮文案",type:"input",default:"发布文章",dependsOn:{key:"front_submit_enabled",value:!0},help:"前台投稿按钮显示的文字"},{key:"post_article_title_strlen_limit_min",label:"标题最少字数",type:"number",default:5,min:1,max:100,dependsOn:{key:"front_submit_enabled",value:!0}},{key:"post_article_title_strlen_limit_max",label:"标题最多字数",type:"number",default:30,min:5,max:200,dependsOn:{key:"front_submit_enabled",value:!0}},{key:"post_t_placeholder",label:"标题占位符",type:"input",default:"",placeholder:"请输入标题",dependsOn:{key:"front_submit_enabled",value:!0}},{key:"post_c_placeholder",label:"内容占位符",type:"textarea",default:"",placeholder:"请输入内容",dependsOn:{key:"front_submit_enabled",value:!0}}]},{key:"fields",title:"表单字段",icon:"fas fa-list-alt",fields:[{key:"front_submit_title",label:"标题",type:"switch",default:!0,dependsOn:{key:"front_submit_enabled",value:!0}},{key:"front_submit_content",label:"正文",type:"switch",default:!0,dependsOn:{key:"front_submit_enabled",value:!0}},{key:"front_submit_excerpt",label:"摘要",type:"switch",default:!0,dependsOn:{key:"front_submit_enabled",value:!0}},{key:"front_submit_cover",label:"封面图",type:"switch",default:!0,dependsOn:{key:"front_submit_enabled",value:!0}},{key:"front_submit_category",label:"分类选择",type:"switch",default:!0,dependsOn:{key:"front_submit_enabled",value:!0}},{key:"post_article_cat",label:"允许投稿分类",type:"taxonomy_select",taxonomy:"category",multiple:!0,default:[],help:"为空则允许全部分类",dependsOn:{key:"front_submit_enabled",value:!0}},{key:"post_article_user",label:"免登录归属用户",type:"user_select",default:0,help:"免登录投稿时文章归属的用户,搜索选择",dependsOn:{key:"front_submit_enabled",value:!0}},{key:"front_submit_tags",label:"标签输入",type:"switch",default:!0,dependsOn:{key:"front_submit_enabled",value:!0}},{key:"post_article_topics_s",label:"专题选择",type:"switch",default:!1,help:"投稿时可选择专题分类",dependsOn:{key:"front_submit_enabled",value:!0}},{key:"post_article_custom_filter_s",label:"高级筛选选择",type:"switch",default:!0,help:"投稿时可选择自定义筛选维度值",dependsOn:{key:"front_submit_enabled",value:!0}},{key:"front_submit_custom_fields",label:"自定义字段",type:"textarea",default:"",placeholder:"每行一个:field_key|字段名称|类型(input/textarea/select)",dependsOn:{key:"front_submit_enabled",value:!0}}]},{key:"review",title:"审核策略",icon:"fas fa-tasks",fields:[{key:"front_submit_review_mode",label:"审核模式",type:"radio",default:"pending",options:[{label:"待审核",value:"pending"},{label:"直接发布",value:"publish"},{label:"自动草稿",value:"draft"}],dependsOn:{key:"front_submit_enabled",value:!0}},{key:"front_submit_cover_required",label:"封面图必填",type:"switch",default:!1,dependsOn:{key:"front_submit_cover",value:!0}},{key:"front_submit_max_images",label:"正文最大图片数",type:"number",default:5,min:0,max:50,dependsOn:{key:"front_submit_enabled",value:!0}}]},{key:"editor",title:"编辑器设置",icon:"fas fa-edit",fields:[{key:"front_submit_editor_mode",label:"编辑器模式",type:"radio",default:"rich",options:[{label:"富文本",value:"rich"},{label:"Markdown",value:"markdown"},{label:"纯文本",value:"plain"}],dependsOn:{key:"front_submit_content",value:!0}},{key:"front_submit_draft_save",label:"自动保存草稿",type:"switch",default:!0,dependsOn:{key:"front_submit_enabled",value:!0}},{key:"front_submit_leave_warning",label:"离开页面提醒",type:"switch",default:!0,dependsOn:{key:"front_submit_enabled",value:!0}}]},{key:"paid",title:"付费投稿权限",icon:"fas fa-coins",fields:[{key:"post_article_pay_free_s",label:"允许设置免费",type:"switch",default:!0,dependsOn:{key:"front_submit_enabled",value:!0}},{key:"post_article_pay_price_min",label:"最低价格",type:"number",default:0,min:0,max:9999,help:"投稿可设置的最低付费金额",dependsOn:{key:"front_submit_enabled",value:!0}},{key:"post_article_pay_price_max",label:"最高价格",type:"number",default:100,min:0,max:9999,help:"投稿可设置的最高付费金额",dependsOn:{key:"front_submit_enabled",value:!0}},{key:"post_article_pay_vip_price_s",label:"允许设置会员价",type:"switch",default:!0,dependsOn:{key:"front_submit_enabled",value:!0}},{key:"post_article_pay_vip_1_discount",label:"VIP1 折扣(%)",type:"number",default:80,min:0,max:100,help:"VIP1 会员折扣百分比,80 即 8 折",dependsOn:{key:"front_submit_enabled",value:!0}},{key:"post_article_pay_vip_2_discount",label:"VIP2 折扣(%)",type:"number",default:50,min:0,max:100,help:"VIP2 会员折扣百分比,50 即 5 折",dependsOn:{key:"front_submit_enabled",value:!0}}]}]},Ll={list:Sl,thumb:zl,page:Al,filter:Vl,feature:Il,pay:ql,share:jl,comment:Pl,submit:Cl},Tl={login:{key:"permissions.login",title:"登录权限",icon:"fas fa-shield-alt",description:"管理登录、注册、评论等场景的人机验证与访问限制。",defaults:{enabled:!1,active_provider:"",mode:"always",disabled_scenarios:[],tencent:{},aliyun:{},cloudflare:{},geetest:{}},groups:[{key:"basic",title:"基础设置",icon:"fas fa-cog",fields:[{key:"enabled",label:"启用人机验证",type:"switch",help:"开启后将在指定场景要求用户完成人机验证"},{key:"active_provider",label:"当前服务商",type:"radio",buttonStyle:!1,options:[{label:"关闭",value:""},{label:"腾讯云 Captcha",value:"tencent"},{label:"阿里云 CAPTCHA 2.0",value:"aliyun"},{label:"Cloudflare Turnstile",value:"cloudflare"},{label:"极验 GeeTest",value:"geetest"}],dependsOn:{key:"enabled",value:!0}},{key:"mode",label:"触发模式",type:"radio",buttonStyle:!1,options:[{label:"始终显示",value:"always"}],dependsOn:{key:"enabled",value:!0}},{key:"disabled_scenarios",label:"停用场景",type:"checkbox",help:"勾选后表示该场景不启用人机验证;未勾选的场景会启用。",dependsOn:{key:"enabled",value:!0},options:[{label:"发表评论",value:"comment"},{label:"用户登录",value:"login"},{label:"用户注册",value:"register"},{label:"绑定第三方",value:"bind"},{label:"绑定手机",value:"bind_phone"},{label:"找回密码",value:"lostpassword"},{label:"修改密码",value:"change_password"},{label:"更改邮箱",value:"change_email"},{label:"邮箱验证",value:"verify_email"},{label:"资源下载",value:"download"},{label:"每日签到",value:"signin"}]}]},{key:"providers",title:"服务商配置",icon:"fas fa-server",description:"按当前选择的服务商填写对应密钥。",fields:[{key:"provider_hint",label:"配置说明",type:"notice",alertType:"info",alertContent:"下方会渲染当前验证码服务商的专属配置面板。保存仍通过统一 schema contract 进行。",dependsOn:{key:"enabled",value:!0}},{key:"tencent",label:"腾讯云配置",type:"custom",dependsOn:{key:"active_provider",value:"tencent"}},{key:"aliyun",label:"阿里云配置",type:"custom",dependsOn:{key:"active_provider",value:"aliyun"}},{key:"cloudflare",label:"Cloudflare 配置",type:"custom",dependsOn:{key:"active_provider",value:"cloudflare"}},{key:"geetest",label:"极验配置",type:"custom",dependsOn:{key:"active_provider",value:"geetest"}}]}]},capabilities:{key:"permissions.capabilities",title:"基本权限",icon:"fas fa-user-shield",description:"统一管理用户、投稿和评论的角色权限。",defaults:{},groups:[]},moderation:{key:"permissions.moderation",title:"内容审核",icon:"fas fa-gavel",description:"管理评论审核、反垃圾、限流与拦截配置。",defaults:{enabled:!1,akismet_enabled:!1,akismet_site_url:"",akismet_blog_lang:"zh-CN",akismet_api_key:"",ai_enabled:!1,ai_moderate_comments:!0,ai_moderate_background:!0,auto_approve_low_risk:!1,auto_reject_high_risk:!1,low_risk_max_score:35,high_risk_min_score:80,blocked_keywords:"",rate_limit_enabled:!1,rate_limit_min_interval:8,rate_limit_max_per_hour:15,geoip_enabled:!1,geoip_block_countries:[]},groups:[{key:"basic",title:"审核总开关",icon:"fas fa-power-off",fields:[{key:"enabled",label:"启用审核系统",type:"switch",help:"关闭后评论将不经过主题审核链路。"}]},{key:"akismet",title:"Akismet",icon:"fas fa-filter",fields:[{key:"akismet_enabled",label:"启用 Akismet",type:"switch",dependsOn:{key:"enabled",value:!0}},{key:"akismet_site_url",label:"Site URL",type:"input",placeholder:"https://your-site.com",dependsOn:{key:"akismet_enabled",value:!0}},{key:"akismet_blog_lang",label:"博客语言",type:"input",placeholder:"zh-CN",dependsOn:{key:"akismet_enabled",value:!0}},{key:"akismet_api_key",label:"API Key",type:"input",inputType:"password",placeholder:"Akismet API Key",dependsOn:{key:"akismet_enabled",value:!0}}]},{key:"ai",title:"AI 审核",icon:"fas fa-robot",fields:[{key:"ai_enabled",label:"启用 AI 审核",type:"switch",dependsOn:{key:"enabled",value:!0}},{key:"ai_api_hint",label:"审核 API 配置",type:"notice",alertType:"info",alertContent:"API 接入(百度/阿里云等)在「扩展 → API内容审核」中统一配置,此处仅控制审核范围和策略。",dependsOn:{key:"ai_enabled",value:!0}},{key:"ai_moderate_comments",label:"用户评论",type:"switch",dependsOn:{key:"ai_enabled",value:!0}},{key:"ai_moderate_background",label:"用户资料背景",type:"switch",dependsOn:{key:"ai_enabled",value:!0}},{key:"auto_approve_low_risk",label:"低风险自动通过",type:"switch",dependsOn:{key:"ai_enabled",value:!0}},{key:"auto_reject_high_risk",label:"高风险自动拒绝",type:"switch",dependsOn:{key:"ai_enabled",value:!0}},{key:"low_risk_max_score",label:"低风险上限",type:"number",min:0,max:100,dependsOn:{key:"ai_enabled",value:!0}},{key:"high_risk_min_score",label:"高风险下限",type:"number",min:0,max:100,dependsOn:{key:"ai_enabled",value:!0}}]},{key:"keywords",title:"关键词拦截",icon:"fas fa-ban",fields:[{key:"blocked_keywords",label:"屏蔽关键词列表",type:"textarea",rows:4,placeholder:"每行一个关键词,也支持 /regex/i 格式。命中后会进入待审核并记录原因。",dependsOn:{key:"enabled",value:!0}}]},{key:"rate-limit",title:"频率限制",icon:"fas fa-stopwatch",fields:[{key:"rate_limit_enabled",label:"启用频率限制",type:"switch",dependsOn:{key:"enabled",value:!0}},{key:"rate_limit_min_interval",label:"最小间隔(秒)",type:"number",min:1,max:300,dependsOn:{key:"rate_limit_enabled",value:!0}},{key:"rate_limit_max_per_hour",label:"每小时上限",type:"number",min:1,max:200,dependsOn:{key:"rate_limit_enabled",value:!0}}]},{key:"geoip",title:"GeoIP 拦截",icon:"fas fa-globe-asia",fields:[{key:"geoip_enabled",label:"启用 GeoIP 拦截",type:"switch",dependsOn:{key:"enabled",value:!0}},{key:"geoip_hint",label:"IP 数据源",type:"notice",alertType:"info",alertContent:"复用「扩展 → IP归属地」中配置的数据源和 API Key。",dependsOn:{key:"geoip_enabled",value:!0}},{key:"geoip_block_countries",label:"屏蔽国家/地区",type:"custom",dependsOn:{key:"geoip_enabled",value:!0}}]}]},comment:{key:"permissions.comment",title:"评论权限",icon:"fas fa-comment-dots",description:"控制评论功能的开关和权限要求。",defaults:{comment_allow:!0,comment_require_login:!1,comment_nested_depth:3,comment_allow_reply:!0},groups:[{key:"basic",title:"评论基础",icon:"fas fa-cog",fields:[{key:"comment_allow",label:"允许评论",type:"switch",help:"全局开启评论功能"},{key:"comment_require_login",label:"需登录评论",type:"switch",help:"只有登录用户才能评论"},{key:"comment_nested_depth",label:"嵌套层级",type:"slider",min:1,max:5,default:3},{key:"comment_allow_reply",label:"允许回复",type:"switch"}]}]},attachment:{key:"permissions.attachment",title:"附件权限",icon:"fas fa-paperclip",description:"控制文件上传和附件下载权限。",defaults:{allow_avatar_upload:!0,allow_cover_upload:!0,allow_background_upload:!1,avatar_max_size:2,allow_submit_images:!0,submit_image_max_size:5,allow_comment_images:!1,comment_image_max_size:2,allow_resource_upload:!0,resource_max_size:50},groups:[{key:"profile",title:"头像与封面",icon:"fas fa-user-circle",fields:[{key:"allow_avatar_upload",label:"允许用户上传头像",type:"switch"},{key:"allow_cover_upload",label:"允许用户上传封面图",type:"switch"},{key:"allow_background_upload",label:"允许用户上传背景图",type:"switch"},{key:"avatar_max_size",label:"头像/封面大小上限 (MB)",type:"number",min:1,max:10}]},{key:"content",title:"内容上传",icon:"fas fa-images",fields:[{key:"allow_submit_images",label:"允许投稿插入图片",type:"switch"},{key:"submit_image_max_size",label:"投稿图片大小上限 (MB)",type:"number",min:1,max:20},{key:"allow_comment_images",label:"允许评论插入图片",type:"switch"},{key:"comment_image_max_size",label:"评论图片大小上限 (MB)",type:"number",min:1,max:10}]},{key:"resource",title:"资源附件",icon:"fas fa-file-archive",fields:[{key:"allow_resource_upload",label:"允许资源附件上传",type:"switch"},{key:"resource_max_size",label:"资源附件大小上限 (MB)",type:"number",min:1,max:200}]}]},download:{key:"permissions.download",title:"下载权限",icon:"fas fa-download",description:"下载门槛由 DownloadPermissions 页维护(cms_features);人机验证服务商在登录权限页。",defaults:{},groups:[]}},Dl={key:"users.auth",title:"注册登录",icon:"fas fa-sign-in-alt",description:"注册方式、登录限制、密码策略配置。",defaults:{close_sign:!1,user_close_signup:!1,close_signin:!1,user_agreement_s:!0,user_agreement_page:"",user_privacy_s:!0,user_privacy_page:"",user_agreement_check:!0,no_repetition_name:!1,user_nickname_out:"赌博,博彩,代发,代理,刷单,六合彩,admin,test,管理员,客服",user_email_limit_type:"black",user_email_out:`@tempmail.com +@throwaway.email +@guerrillamail.com`,user_close_login:!1,user_sign_type:"page",sign_modal_auto_s:!1,sign_modal_auto_waiting_time:5,sign_modal_auto_expires:1,replace_wp_login:!0,admin_sign_key:"",user_signin_phone_s:!1,user_signin_nopas_s:!1,user_signin_nopas_type:"email",user_signin_nopas_active:"nopas_first",user_signup_captch:!0,captch_type:"email",user_signup_no_repas:!0,user_repas_captch_type:"email",bind_phone:!1,bind_reminder:"close",bind_reminder_text:"请绑定手机号以正常使用",bind_reminder_expires:24,mandatory_bind:"close",email_set_captch:!0,invit_code_s:!1,invit_code_mode:"open",invit_code_open_desc:"邀请码为选填,没有邀请码也可以注册",invit_code_must_desc:"请输入邀请码",sign_page_background:[],sign_theme_mode:"default",sign_show_header:!0,sign_card_position:"center",sign_show_logo:!0,sign_page_footer:"",sign_modal_background:[],sign_modal_show_logo:!0,user_logo:[],user_logo_dark:[]},groups:[{key:"register",title:"注册设置",icon:"fas fa-user-plus",fields:[{key:"close_sign",label:"一键禁用登录注册",type:"switch",default:!1,help:"开启后前台禁用全部注册/登录入口(含社交登录),不影响后台登录"},{key:"user_close_signup",label:"关闭注册",type:"switch",default:!1},{key:"close_signin",label:"禁用账密登录",type:"switch",default:!1,help:"仅允许社交账号登录"},{key:"user_agreement_s",label:"用户协议",type:"switch",default:!0},{key:"user_agreement_page",label:"协议页面",type:"input",default:""},{key:"user_privacy_s",label:"隐私政策",type:"switch",default:!0},{key:"user_privacy_page",label:"隐私页面",type:"input",default:""},{key:"user_agreement_check",label:"强制勾选协议",type:"switch",default:!0},{key:"no_repetition_name",label:"禁止重复昵称",type:"switch",default:!1},{key:"user_nickname_out",label:"昵称黑名单关键词",type:"textarea",default:"赌博,博彩,代发,代理,刷单,六合彩,admin,test,管理员,客服",help:"一行一个关键词,注册昵称包含关键词将被拒绝"},{key:"user_email_limit_type",label:"邮箱限制类型",type:"radio",default:"black",options:[{label:"黑名单(拒绝以下后缀)",value:"black"},{label:"白名单(仅允许以下后缀)",value:"white"}]},{key:"user_email_out",label:"邮箱限制后缀",type:"textarea",default:`@tempmail.com +@throwaway.email +@guerrillamail.com`,help:"一行一个邮箱后缀,如 @tempmail.com"}]},{key:"login",title:"登录设置",icon:"fas fa-sign-in-alt",fields:[{key:"user_close_login",label:"关闭登录",type:"switch",default:!1},{key:"user_sign_type",label:"登录注册样式",type:"radio",default:"page",options:[{label:"弹窗",value:"modal"},{label:"跳转页面",value:"page"}]},{key:"sign_modal_auto_s",label:"自动弹出登录窗",type:"switch",default:!1,help:"仅在 user_sign_type=modal 时生效"},{key:"sign_modal_auto_waiting_time",label:"弹窗等待秒数",type:"number",default:5,min:0,max:60,dependsOn:{key:"sign_modal_auto_s",value:!0}},{key:"sign_modal_auto_expires",label:"弹窗周期(小时)",type:"number",default:1,min:0,max:720,dependsOn:{key:"sign_modal_auto_s",value:!0}},{key:"replace_wp_login",label:"替换WP登录页",type:"switch",default:!0},{key:"admin_sign_key",label:"应急登录 Key",type:"input",default:"",help:"留空为禁用。管理员可通过 /wp-login.php?aksrt_bypass= 绕过前台替换"},{key:"user_signin_phone_s",label:"手机号登录",type:"switch",default:!1,help:"允许用手机号作为用户名登录"},{key:"user_signin_nopas_s",label:"免密登录",type:"switch",default:!1},{key:"user_signin_nopas_type",label:"免密登录方式",type:"radio",default:"email",options:[{label:"邮箱验证码",value:"email"},{label:"手机验证码",value:"phone"},{label:"邮箱或手机",value:"email_phone"}],dependsOn:{key:"user_signin_nopas_s",value:!0}},{key:"user_signin_nopas_active",label:"免密显示模式",type:"radio",default:"nopas_first",options:[{label:"优先免密",value:"nopas_first"},{label:"优先密码",value:"password_first"},{label:"仅免密",value:"nopas_only"}],dependsOn:{key:"user_signin_nopas_s",value:!0}}]},{key:"signup_captcha",title:"注册验证",icon:"fas fa-user-shield",fields:[{key:"user_signup_captch",label:"注册需验证",type:"switch",default:!0,help:"注册时需完成邮箱或手机验证"},{key:"captch_type",label:"验证方式",type:"radio",default:"email",options:[{label:"邮箱",value:"email"},{label:"手机",value:"phone"},{label:"邮箱或手机",value:"email_phone"}],dependsOn:{key:"user_signup_captch",value:!0}},{key:"user_signup_no_repas",label:"无需重复密码",type:"switch",default:!0,help:"注册时不要求二次确认密码"},{key:"user_repas_captch_type",label:"找回密码验证方式",type:"radio",default:"email",options:[{label:"邮箱",value:"email"},{label:"手机",value:"phone"},{label:"邮箱或手机",value:"email_phone"}]}]},{key:"bind",title:"绑定设置",icon:"fas fa-link",fields:[{key:"bind_phone",label:"绑定手机",type:"switch",default:!1},{key:"bind_reminder",label:"绑定提醒",type:"radio",default:"close",options:[{label:"提醒绑定邮箱",value:"email"},{label:"提醒绑定手机",value:"phone"},{label:"提醒绑定邮箱和手机",value:"email_phone"},{label:"关闭",value:"close"}]},{key:"bind_reminder_text",label:"提醒文案",type:"input",default:"请绑定手机号以正常使用"},{key:"bind_reminder_expires",label:"提醒周期(小时)",type:"number",default:24,min:1,max:720,help:"用户关闭提醒后多少小时内不再提醒"},{key:"mandatory_bind",label:"强制绑定",type:"radio",default:"close",options:[{label:"强制绑定邮箱",value:"email"},{label:"强制绑定手机",value:"phone"},{label:"强制绑定邮箱和手机",value:"email_phone"},{label:"关闭",value:"close"}]},{key:"email_set_captch",label:"绑定邮箱需验证",type:"switch",default:!0,help:"绑定邮箱时需发送验证码确认"}]},{key:"invite_inline",title:"邀请码注册",icon:"fas fa-ticket-alt",fields:[{key:"invit_code_s",label:"启用邀请码",type:"switch",default:!1,help:"与「邀请码」子页联动,此处开关控制注册表单是否显示邀请码字段"},{key:"invit_code_mode",label:"邀请模式",type:"select",default:"open",options:[{label:"开放注册(邀请码选填)",value:"open"},{label:"必须邀请码",value:"must"}],dependsOn:{key:"invit_code_s",value:!0}},{key:"invit_code_open_desc",label:"开放注册提示",type:"input",default:"邀请码为选填,没有邀请码也可以注册",dependsOn:{key:"invit_code_s",value:!0}},{key:"invit_code_must_desc",label:"必填提示",type:"input",default:"请输入邀请码",dependsOn:{key:"invit_code_s",value:!0}}]},{key:"sign_page_ui",title:"页面 UI 配置",icon:"fas fa-palette",fields:[{key:"sign_page_background",label:"页面背景图",type:"gallery",default:[],help:"登录注册页背景图,多图随机"},{key:"sign_theme_mode",label:"主题模式",type:"radio",default:"default",options:[{label:"默认",value:"default"},{label:"亮色",value:"light"},{label:"暗色",value:"dark"}]},{key:"sign_show_header",label:"显示顶部导航",type:"switch",default:!0},{key:"sign_card_position",label:"卡片位置",type:"radio",default:"center",options:[{label:"靠左",value:"left"},{label:"居中",value:"center"},{label:"靠右",value:"right"}]},{key:"sign_show_logo",label:"显示 LOGO",type:"switch",default:!0},{key:"sign_page_footer",label:"页脚 HTML",type:"textarea",default:"",help:"登录注册页自定义页脚内容,支持 HTML"}]},{key:"modal_ui",title:"弹窗 UI 配置",icon:"fas fa-window-restore",fields:[{key:"sign_modal_background",label:"弹窗背景图",type:"gallery",default:[],help:"弹窗左侧背景图,多图随机"},{key:"sign_modal_show_logo",label:"弹窗显示 LOGO",type:"switch",default:!0}]},{key:"sign_logo",title:"登录框 LOGO",icon:"fas fa-image",fields:[{key:"user_logo",label:"日间 LOGO",type:"gallery",default:[],help:"登录框专用日间 LOGO,留空使用站点全局 LOGO"},{key:"user_logo_dark",label:"夜间 LOGO",type:"gallery",default:[],help:"登录框专用夜间 LOGO,留空使用站点全局夜间 LOGO"}]}]},Ul={key:"users.oauth",title:"第三方登录",icon:"fas fa-share-alt",description:"GitHub、Gitee、QQ、Google 等第三方登录配置。",defaults:{oauth_s:!1,oauth_proxy_mode:"close",oauth_proxy_secret:"",oauth_proxy_server_url:"",oauth_proxy_server_providers:["github","gitee","qq","google"],oauth_proxy_client_providers:["github","gitee","qq","google"],oauth_proxy_gzh_type:"service",oauth_bind_type:"auto",oauth_button_lg:!1,weixingzh_priority:!1,weixingzh_auto:!1,weixingzh_auto_expires:3600,oauth_github_s:!1,oauth_gitee_s:!1,oauth_qq_s:!1,oauth_weixingzh_s:!1,oauth_weixin_s:!1,oauth_weibo_s:!1,oauth_baidu_s:!1,oauth_alipay_s:!1,github_appid:"",github_appkey:"",gitee_appid:"",gitee_appkey:"",qq_appid:"",qq_appkey:"",weixin_appid:"",weixin_appsecret:"",weixingzh_gzh_type:"service",weixingzh_token:"",weixingzh_token_nocheck:!1,weixingzh_encoding_aes_key:"",weixingzh_appid:"",weixingzh_appsecret:"",weixingzh_code_qrcode:"",weixingzh_code_keyword:"登录",weixingzh_code_reply:"您的验证码是:%s,有效期 %d 分钟。",weixingzh_code_subscribe_reply:"欢迎关注!回复「%s」获取登录验证码。",weixingzh_subscribe_msg:"",weixingzh_new_subscribe_msg:"",weixingzh_scan_msg:"",weixingzh_auto_reply_text:"",weixingzh_auto_reply_search:"",weixingzh_auto_reply_image:"",weixingzh_auto_reply_voice:"",weixingzh_auto_reply_default:"暂不支持此类型的消息",weixingzh_gzh_menu:"",weibo_appid:"",weibo_appkey:"",baidu_appid:"",baidu_appkey:"",alipay_appid:"",alipay_privatekey:"",alipay_publickey:""},groups:[{key:"basic",title:"基础设置",icon:"fas fa-cog",fields:[{key:"oauth_s",label:"启用第三方登录",type:"switch",default:!1},{key:"oauth_proxy_mode",label:"代理登录模式",type:"radio",default:"close",options:[{label:"关闭",value:"close"},{label:"服务端",value:"server"},{label:"客户端",value:"client"}]},{key:"oauth_proxy_secret",label:"代理 HMAC 密钥",type:"input",default:"",dependsOn:{key:"oauth_proxy_mode",not:"close"}},{key:"oauth_proxy_server_url",label:"服务端地址",type:"input",default:"",dependsOn:{key:"oauth_proxy_mode",value:"client"}},{key:"oauth_proxy_server_providers",label:"服务端允许平台",type:"checkbox",default:["github","gitee","qq","google"],options:[{label:"GitHub",value:"github"},{label:"Gitee",value:"gitee"},{label:"QQ",value:"qq"},{label:"Google",value:"google"},{label:"微博",value:"weibo"},{label:"微信",value:"weixin"},{label:"百度",value:"baidu"},{label:"支付宝",value:"alipay"}],dependsOn:{key:"oauth_proxy_mode",value:"server"}},{key:"oauth_proxy_client_providers",label:"客户端启用平台",type:"checkbox",default:["github","gitee","qq","google"],options:[{label:"GitHub",value:"github"},{label:"Gitee",value:"gitee"},{label:"QQ",value:"qq"},{label:"Google",value:"google"},{label:"微博",value:"weibo"},{label:"微信",value:"weixin"},{label:"百度",value:"baidu"},{label:"支付宝",value:"alipay"}],dependsOn:{key:"oauth_proxy_mode",value:"client"}},{key:"oauth_proxy_gzh_type",label:"代理公众号类型",type:"radio",default:"service",options:[{label:"服务号",value:"service"},{label:"订阅号",value:"subscribe"}],dependsOn:{key:"oauth_proxy_mode",not:"close"}},{key:"oauth_bind_type",label:"绑定方式",type:"radio",default:"auto",options:[{label:"自动绑定",value:"auto"},{label:"手动绑定",value:"manual"}]},{key:"oauth_button_lg",label:"大按钮样式",type:"switch",default:!1},{key:"weixingzh_priority",label:"PC端优先微信扫码",type:"switch",default:!1,help:"开启后 PC 端登录框优先显示微信公众号扫码"},{key:"weixingzh_auto",label:"微信APP内自动登录",type:"switch",default:!1,help:"在微信内置浏览器中自动使用公众号授权登录"},{key:"weixingzh_auto_expires",label:"自动登录频率限制 (秒)",type:"number",default:3600,min:0,max:86400,dependsOn:{key:"weixingzh_auto",value:!0}}]},{key:"providers",title:"登录提供商",icon:"fas fa-th",fields:[{key:"oauth_github_s",label:"GitHub登录",type:"switch",default:!1},{key:"oauth_gitee_s",label:"Gitee登录",type:"switch",default:!1},{key:"oauth_qq_s",label:"QQ登录",type:"switch",default:!1},{key:"oauth_weixingzh_s",label:"微信公众号登录",type:"switch",default:!1},{key:"oauth_weixin_s",label:"微信开放平台登录",type:"switch",default:!1},{key:"oauth_weibo_s",label:"微博登录",type:"switch",default:!1},{key:"oauth_baidu_s",label:"百度登录",type:"switch",default:!1},{key:"oauth_alipay_s",label:"支付宝登录",type:"switch",default:!1}]},{key:"github",title:"GitHub配置",icon:"fab fa-github",fields:[{key:"github_appid",label:"Client ID",type:"input",default:""},{key:"github_appkey",label:"Client Secret",type:"input",default:""}]},{key:"gitee",title:"Gitee配置",icon:"fas fa-code-branch",fields:[{key:"gitee_appid",label:"Client ID",type:"input",default:""},{key:"gitee_appkey",label:"Client Secret",type:"input",default:""}]},{key:"qq",title:"QQ配置",icon:"fab fa-qq",fields:[{key:"qq_appid",label:"App ID",type:"input",default:""},{key:"qq_appkey",label:"App Key",type:"input",default:""}]},{key:"weixin",title:"微信开放平台配置",icon:"fab fa-weixin",fields:[{key:"weixin_appid",label:"AppID",type:"input",default:""},{key:"weixin_appsecret",label:"AppSecret",type:"input",default:""}]},{key:"weixingzh",title:"微信公众号配置",icon:"fab fa-weixin",fields:[{key:"weixingzh_gzh_type",label:"公众号类型",type:"radio",default:"service",options:[{label:"服务号",value:"service"},{label:"订阅号",value:"subscribe"}]},{key:"weixingzh_token",label:"Token",type:"input",default:""},{key:"weixingzh_token_nocheck",label:"不验证Token",type:"switch",default:!1,help:"开发调试时可跳过 Token 验证"},{key:"weixingzh_encoding_aes_key",label:"EncodingAESKey",type:"input",default:""},{key:"weixingzh_appid",label:"AppID",type:"input",default:""},{key:"weixingzh_appsecret",label:"AppSecret",type:"input",default:""},{key:"weixingzh_code_qrcode",label:"公众号二维码",type:"media",default:"",help:"引导用户扫码关注登录的二维码图片"},{key:"weixingzh_code_keyword",label:"登录回复关键词",type:"input",default:"登录",help:"用户在公众号内回复此关键词触发登录验证码"},{key:"weixingzh_code_reply",label:"验证码回复模板",type:"textarea",default:"您的验证码是:%s,有效期 %d 分钟。",help:"%s=验证码,%d=有效分钟数"},{key:"weixingzh_code_subscribe_reply",label:"新关注回复模板",type:"textarea",default:"欢迎关注!回复「%s」获取登录验证码。",help:"%s=登录关键词"},{key:"weixingzh_subscribe_msg",label:"关注后回复",type:"textarea",default:"",help:"用户关注公众号后的自动回复文案"},{key:"weixingzh_new_subscribe_msg",label:"新用户关注回复",type:"textarea",default:"",help:"首次关注用户的专属回复文案,留空使用通用回复"},{key:"weixingzh_scan_msg",label:"扫码回复",type:"textarea",default:"",help:"用户扫码关注公众号后的回复文案"},{key:"weixingzh_auto_reply_text",label:"文本自动回复",type:"textarea",default:"",help:"收到文本消息的自动回复"},{key:"weixingzh_auto_reply_search",label:"搜索回复",type:"textarea",default:"",help:"未匹配关键词时的搜索提示回复"},{key:"weixingzh_auto_reply_image",label:"图片回复",type:"textarea",default:"",help:"收到图片消息的自动回复"},{key:"weixingzh_auto_reply_voice",label:"语音回复",type:"textarea",default:"",help:"收到语音消息的自动回复"},{key:"weixingzh_auto_reply_default",label:"默认回复",type:"textarea",default:"暂不支持此类型的消息",help:"其他未匹配消息类型的兜底回复"},{key:"weixingzh_gzh_menu",label:"自定义菜单 JSON",type:"textarea",default:"",help:"微信公众号自定义菜单 JSON 配置,留空不创建菜单"}]},{key:"weibo",title:"微博配置",icon:"fab fa-weibo",fields:[{key:"weibo_appid",label:"App Key",type:"input",default:""},{key:"weibo_appkey",label:"App Secret",type:"input",default:""}]},{key:"baidu",title:"百度配置",icon:"fas fa-paw",fields:[{key:"baidu_appid",label:"API Key",type:"input",default:""},{key:"baidu_appkey",label:"Secret Key",type:"input",default:""}]},{key:"alipay",title:"支付宝配置",icon:"fab fa-alipay",fields:[{key:"alipay_appid",label:"AppID",type:"input",default:""},{key:"alipay_privatekey",label:"应用私钥",type:"input",default:""},{key:"alipay_publickey",label:"支付宝公钥",type:"input",default:""}]}]},$l={key:"users.notifications",title:"消息通知",icon:"fas fa-bell",description:"站内通知、私信、通知策略配置。",defaults:{message_s:!0,msg_center_rewrite_slug:"message",message_icon_show:["nav_menu"],message_paginate_type:"ajax_lists",message_user_set:!0,message_close_msg_type:[],message_auto_clear_s:!0,message_auto_clear_time:365,message_auto_clear_types:["posts","comment","favorite","like","hot","followed","system"],private_s:!0,private_smilie_s:!0,private_code_s:!1,private_image_s:!0,private_upload_img:!1,private_quick_s:!0,private_quick_often:`你好,请问有什么可以帮你的? +感谢你的反馈 +已处理,请查收`,private_submit_text:"发送",private_placeholder:"请输入消息..."},groups:[{key:"basic",title:"基础设置",icon:"fas fa-cog",fields:[{key:"message_s",label:"站内通知总开关",type:"switch",default:!0},{key:"msg_center_rewrite_slug",label:"消息中心 URL 别名",type:"input",default:"message"},{key:"message_icon_show",label:"通知图标位置",type:"checkbox",default:["nav_menu"],options:[{label:"导航菜单",value:"nav_menu"},{label:"用户头像",value:"avatar"},{label:"移动端底部",value:"mobile_bar"}]},{key:"message_paginate_type",label:"列表翻页模式",type:"radio",default:"ajax_lists",options:[{label:"AJAX 翻页",value:"ajax_lists"},{label:"传统翻页",value:"default"}]},{key:"message_user_set",label:"允许用户设置推送",type:"switch",default:!0,help:"允许用户在前台自行设置通知推送偏好"}]},{key:"types",title:"通知类型",icon:"fas fa-list-check",fields:[{key:"message_close_msg_type",label:"关闭部分推送",type:"checkbox",default:[],options:[{label:"文章通知",value:"posts"},{label:"评论回复",value:"comment"},{label:"收藏通知",value:"favorite"},{label:"点赞通知",value:"like"},{label:"热门通知",value:"hot"},{label:"关注通知",value:"followed"},{label:"系统通知",value:"system"},{label:"支付通知",value:"pay"},{label:"提现回复",value:"withdraw_reply"},{label:"勋章通知",value:"medal"},{label:"认证回复",value:"auth_apply_reply"}],help:"勾选的类型将不向用户推送通知"}]},{key:"auto_clear",title:"自动清理",icon:"fas fa-broom",fields:[{key:"message_auto_clear_s",label:"自动清理已读消息",type:"switch",default:!0},{key:"message_auto_clear_time",label:"过期天数",type:"number",default:365,min:1,max:3650,help:"已读消息超过此天数将被自动清理",dependsOn:{key:"message_auto_clear_s",value:!0}},{key:"message_auto_clear_types",label:"清理类型",type:"checkbox",default:["posts","comment","favorite","like","hot","followed","system"],options:[{label:"文章通知",value:"posts"},{label:"评论回复",value:"comment"},{label:"收藏通知",value:"favorite"},{label:"点赞通知",value:"like"},{label:"热门通知",value:"hot"},{label:"关注通知",value:"followed"},{label:"系统通知",value:"system"},{label:"支付通知",value:"pay"},{label:"提现回复",value:"withdraw_reply"},{label:"勋章通知",value:"medal"},{label:"认证回复",value:"auth_apply_reply"},{label:"下载通知",value:"download"},{label:"积分变动",value:"credits"},{label:"私信",value:"private"},{label:"举报反馈",value:"report"}],dependsOn:{key:"message_auto_clear_s",value:!0}}]},{key:"private",title:"私信设置",icon:"fas fa-envelope",fields:[{key:"private_s",label:"启用私信功能",type:"switch",default:!0},{key:"private_smilie_s",label:"支持表情",type:"switch",default:!0,dependsOn:{key:"private_s",value:!0}},{key:"private_code_s",label:"支持代码",type:"switch",default:!1,dependsOn:{key:"private_s",value:!0}},{key:"private_image_s",label:"支持图片",type:"switch",default:!0,dependsOn:{key:"private_s",value:!0}},{key:"private_upload_img",label:"支持上传图片",type:"switch",default:!1,dependsOn:{key:"private_s",value:!0}},{key:"private_quick_s",label:"快捷回复",type:"switch",default:!0,dependsOn:{key:"private_s",value:!0}},{key:"private_quick_often",label:"常用快捷回复",type:"textarea",default:`你好,请问有什么可以帮你的? +感谢你的反馈 +已处理,请查收`,help:"一行一条快捷回复文案",dependsOn:{key:"private_s",value:!0}},{key:"private_submit_text",label:"发送按钮文案",type:"input",default:"发送",dependsOn:{key:"private_s",value:!0}},{key:"private_placeholder",label:"输入占位符",type:"input",default:"请输入消息...",dependsOn:{key:"private_s",value:!0}}]}]},Ml={key:"users.credits",title:"用户积分",icon:"fas fa-coins",description:"积分规则、积分日志、用户积分管理。",defaults:{points_s:!0,points_pay_s:!1,points_rate:100,points_name:"积分",points_decimal:2,points_earn_comment:1,points_earn_post:5,points_earn_login:1,points_earn_like_received:1,points_earn_invite:10,points_earn_daily_limit:50,points_spend_comment:0,points_spend_download:0,points_spend_view_hidden:0,points_transfer_s:!1,points_service_charge:0,points_transfer_min:1,points_deduction_s:!1,points_deduction_rate:100,points_deduction_max:50,points_pass_exchange_s:!1,points_pass_exchange_desc:"",points_pass_exchange_only_password:!0,points_show_balance:!0,points_show_log:!0,points_expire_days:0},groups:[{key:"basic",title:"积分基础",icon:"fas fa-coins",fields:[{key:"points_s",label:"启用积分系统",type:"switch",default:!0},{key:"points_pay_s",label:"积分支付",type:"switch",default:!1},{key:"points_rate",label:"积分兑换比例",type:"number",default:100,min:1,max:1e4},{key:"points_name",label:"积分名称",type:"input",default:"积分"},{key:"points_decimal",label:"积分小数位数",type:"number",default:2,min:0,max:4}]},{key:"earn",title:"积分获取",icon:"fas fa-arrow-up",fields:[{key:"points_earn_comment",label:"评论奖励",type:"number",default:1,min:0,max:100},{key:"points_earn_post",label:"发布文章奖励",type:"number",default:5,min:0,max:100},{key:"points_earn_login",label:"每日登录奖励",type:"number",default:1,min:0,max:100},{key:"points_earn_like_received",label:"收到点赞奖励",type:"number",default:1,min:0,max:100},{key:"points_earn_invite",label:"邀请注册奖励",type:"number",default:10,min:0,max:1e3},{key:"points_earn_daily_limit",label:"每日获取上限",type:"number",default:50,min:0,max:9999,help:"0为不限制"}]},{key:"spend",title:"积分消费",icon:"fas fa-arrow-down",fields:[{key:"points_spend_comment",label:"评论消耗",type:"number",default:0,min:0,max:100},{key:"points_spend_download",label:"下载消耗",type:"number",default:0,min:0,max:100},{key:"points_spend_view_hidden",label:"查看隐藏内容消耗",type:"number",default:0,min:0,max:100}]},{key:"transfer",title:"积分转账",icon:"fas fa-exchange-alt",fields:[{key:"points_transfer_s",label:"启用积分转账",type:"switch",default:!1},{key:"points_service_charge",label:"转账手续费(%)",type:"number",default:0,min:0,max:50,dependsOn:{key:"points_transfer_s",value:!0}},{key:"points_transfer_min",label:"最低转账金额",type:"number",default:1,min:1,max:9999,dependsOn:{key:"points_transfer_s",value:!0}}]},{key:"deduction",title:"积分抵扣(预留)",icon:"fas fa-percent",fields:[{key:"points_deduction_s",label:"启用积分抵扣",type:"switch",default:!1,help:"对齐 zibll:运行时暂未启用(zibpay_is_allow_points_deduction 恒为 false)。字段保留供后续接收银台现金单抵扣。"},{key:"points_deduction_rate",label:"积分换算比例",type:"number",default:100,min:1,max:1e4,dependsOn:{key:"points_deduction_s",value:!0},help:"zibll 语义:points_deduction_rate = 多少积分抵 1 元(示例 30 表示 30 积分=1 元)。当前未参与下单计算。"},{key:"points_deduction_max",label:"最大抵扣比例(%)",type:"number",default:50,min:1,max:100,dependsOn:{key:"points_deduction_s",value:!0},help:"预留:最多可抵订单金额的百分比。当前未参与下单计算。"}]},{key:"card_pass",title:"积分卡密兑换",icon:"fas fa-ticket-alt",fields:[{key:"points_pass_exchange_s",label:"启用积分卡密兑换",type:"switch",default:!1,help:"对齐 zibll points_pass_exchange_s。后台充值卡可生成积分卡,用户中心兑换入账。"},{key:"points_pass_exchange_desc",label:"兑换说明",type:"textarea",default:"",dependsOn:{key:"points_pass_exchange_s",value:!0}},{key:"points_pass_exchange_only_password",label:"仅密码兑换",type:"switch",default:!0,dependsOn:{key:"points_pass_exchange_s",value:!0},help:"开启后只需输入卡密;关闭则需卡号+卡密。"}]},{key:"display",title:"展示设置",icon:"fas fa-eye",fields:[{key:"points_show_balance",label:"导航栏显示余额",type:"switch",default:!0},{key:"points_show_log",label:"显示积分记录",type:"switch",default:!0},{key:"points_expire_days",label:"积分有效期(天)",type:"number",default:0,min:0,help:"0为永久有效"}]}]},El={key:"users.invite",title:"邀请码",icon:"fas fa-ticket-alt",description:"邀请码生成、管理、奖励配置。",defaults:{invit_code_s:!1,invit_code_open_desc:"邀请码为选填,没有邀请码也可以注册",invit_code_must_desc:"请输入邀请码",invit_code_mode:"open",invit_code_length:8,invit_code_prefix:"",invit_code_max_use:1,invit_code_expiry:0,invit_code_batch:20,invit_reward_points:0,invit_reward_level:0,invit_reward_vip_days:0,invit_invitee_reward:!1,invit_code_show_count:!0,invit_code_show_remain:!0},groups:[{key:"basic",title:"邀请设置",icon:"fas fa-cog",fields:[{key:"invit_code_s",label:"启用邀请码",type:"switch",default:!1},{key:"invit_code_open_desc",label:"开放注册提示",type:"input",default:"邀请码为选填,没有邀请码也可以注册"},{key:"invit_code_must_desc",label:"必填提示",type:"input",default:"请输入邀请码"},{key:"invit_code_mode",label:"邀请模式",type:"select",default:"open",options:[{label:"开放注册(邀请码选填)",value:"open"},{label:"必须邀请码",value:"must"}]}]},{key:"format",title:"码面设置",icon:"fas fa-barcode",fields:[{key:"invit_code_length",label:"邀请码长度",type:"number",default:8,min:4,max:32},{key:"invit_code_prefix",label:"邀请码前缀",type:"input",default:""},{key:"invit_code_max_use",label:"单码最大使用次数",type:"number",default:1,min:1,max:9999},{key:"invit_code_expiry",label:"有效期(天)",type:"number",default:0,min:0,help:"0为永久有效"},{key:"invit_code_batch",label:"批量生成数量",type:"number",default:20,min:1,max:500}]},{key:"reward",title:"邀请奖励",icon:"fas fa-gift",fields:[{key:"invit_reward_points",label:"邀请奖励积分",type:"number",default:0,min:0,max:1e3},{key:"invit_reward_level",label:"邀请奖励等级",type:"number",default:0,min:0,max:10},{key:"invit_reward_vip_days",label:"奖励VIP天数",type:"number",default:0,min:0,max:3650},{key:"invit_invitee_reward",label:"被邀请人奖励",type:"switch",default:!1}]},{key:"display",title:"展示设置",icon:"fas fa-eye",fields:[{key:"invit_code_show_count",label:"显示已使用次数",type:"switch",default:!0},{key:"invit_code_show_remain",label:"显示剩余次数",type:"switch",default:!0}]}]},Gl={key:"users.features",title:"用户功能",icon:"fas fa-user-cog",description:"配置用户中心和个人主页的功能模块。",defaults:{user_center_tabs:"profile,posts,comments,credits,favorites",user_avatar_upload:!0,user_cover_upload:!0,user_social_links:!0,user_desc_std:"这家伙很懒…",user_city_s:!1,user_join_day_my_name:"本站",user_avatar_default:"",user_cover_img:"",user_rewrite_slug:"user",user_follow_s:!0,user_message_s:!0,user_online_s:!0,user_last_active_s:!0},groups:[{key:"center",title:"用户中心",icon:"fas fa-user-shield",fields:[{key:"user_center_tabs",label:"用户中心 Tab",type:"input",default:"profile,posts,comments,credits,favorites",help:"逗号分隔"},{key:"user_avatar_upload",label:"头像上传",type:"switch",default:!0},{key:"user_cover_upload",label:"封面上传",type:"switch",default:!0},{key:"user_social_links",label:"社交链接",type:"switch",default:!0},{key:"user_desc_std",label:"默认签名",type:"input",default:"这家伙很懒…",help:"用户未设置个人简介时显示的默认文案"},{key:"user_city_s",label:"显示城市",type:"switch",default:!1},{key:"user_join_day_my_name",label:"站名",type:"input",default:"本站",help:"用于「已加入 X 天」显示中的站点名称"},{key:"user_avatar_default",label:"默认头像",type:"media",default:""},{key:"user_cover_img",label:"默认封面",type:"media",default:""},{key:"user_rewrite_slug",label:"用户页 slug",type:"input",default:"user"},{key:"user_follow_s",label:"启用关注功能",type:"switch",default:!0},{key:"user_message_s",label:"启用私信功能",type:"switch",default:!0},{key:"user_online_s",label:"显示在线状态",type:"switch",default:!0},{key:"user_last_active_s",label:"显示最后活跃",type:"switch",default:!0}]}]},Rl={key:"users.signin",title:"签到奖励",icon:"fas fa-calendar-check",description:"配置签到规则、连续签到奖励和签到页面。",defaults:{signin_enabled:!0,signin_reward:1,signin_consecutive_bonus:!0,signin_consecutive_days:7,signin_bonus_reward:5},groups:[{key:"rules",title:"签到规则",icon:"fas fa-calendar-alt",fields:[{key:"signin_enabled",label:"启用签到",type:"switch",default:!0},{key:"signin_reward",label:"每日签到奖励",type:"number",default:1,min:0,max:100,dependsOn:{key:"signin_enabled",value:!0}},{key:"signin_consecutive_bonus",label:"连续签到加成",type:"switch",default:!0,dependsOn:{key:"signin_enabled",value:!0}},{key:"signin_consecutive_days",label:"加成周期 (天)",type:"number",default:7,min:2,max:30,dependsOn:{key:"signin_consecutive_bonus",value:!0}},{key:"signin_bonus_reward",label:"周期奖励",type:"number",default:5,min:1,max:100,dependsOn:{key:"signin_consecutive_bonus",value:!0}}]}]},Kl={key:"users.verify",title:"身份认证",icon:"fas fa-id-card",description:"配置公开认证徽标、审核策略,以及是否复用现有邮箱验证状态。",defaults:{user_verify_enabled:!0,user_verify_public_display:!0,user_verify_badge_text:"已认证",user_verify_accept_email_verified:!0,user_verify_require_manual_review:!1},groups:[{key:"display",title:"公开展示",icon:"fas fa-eye",fields:[{key:"user_verify_enabled",label:"启用身份认证结构",type:"switch",default:!0},{key:"user_verify_public_display",label:"公开页显示认证徽标",type:"switch",default:!0,dependsOn:{key:"user_verify_enabled",value:!0}},{key:"user_verify_badge_text",label:"认证徽标文案",type:"input",default:"已认证",dependsOn:{key:"user_verify_public_display",value:!0}}]},{key:"workflow",title:"审核流程",icon:"fas fa-tasks",fields:[{key:"user_verify_accept_email_verified",label:"邮箱验证通过视为已认证",type:"switch",default:!0,dependsOn:{key:"user_verify_enabled",value:!0}},{key:"user_verify_require_manual_review",label:"保留人工审核位",type:"switch",default:!1,dependsOn:{key:"user_verify_enabled",value:!0}}]}]},Hl={key:"users.level",title:"用户等级",icon:"fas fa-level-up-alt",description:"配置等级展示前缀和等级阈值,当前可基于积分余额自动计算。",defaults:{user_level_enabled:!1,user_level_public_display:!0,user_level_source:"credits_balance",user_level_prefix:"Lv.",user_level_thresholds:`1|0 +2|30 +3|100 +4|300`},groups:[{key:"display",title:"等级显示",icon:"fas fa-signal",fields:[{key:"user_level_enabled",label:"启用等级系统",type:"switch",default:!1},{key:"user_level_public_display",label:"公开页显示等级",type:"switch",default:!0,dependsOn:{key:"user_level_enabled",value:!0}},{key:"user_level_prefix",label:"等级前缀",type:"input",default:"Lv.",dependsOn:{key:"user_level_enabled",value:!0}}]},{key:"rules",title:"等级规则",icon:"fas fa-list-ol",fields:[{key:"user_level_source",label:"等级来源",type:"radio",default:"credits_balance",options:[{label:"积分余额",value:"credits_balance"},{label:"手动 Meta",value:"manual_meta"}],dependsOn:{key:"user_level_enabled",value:!0}},{key:"user_level_thresholds",label:"等级阈值",type:"textarea",default:`1|0 +2|30 +3|100 +4|300`,help:"每行一个等级,格式:等级|所需积分,例如 3|100",dependsOn:{key:"user_level_enabled",value:!0}}]}]},Nl={key:"users.badge",title:"用户徽章",icon:"fas fa-award",description:"配置徽章字典、公开展示数量和前台挂点,具体授予逻辑后续扩展。",defaults:{user_badge_enabled:!1,user_badge_public_display:!0,user_badge_limit:3,user_badge_dictionary:`founder|创始成员|warning +staff|站务团队|info`},groups:[{key:"display",title:"徽章展示",icon:"fas fa-medal",fields:[{key:"user_badge_enabled",label:"启用徽章系统",type:"switch",default:!1},{key:"user_badge_public_display",label:"公开页显示徽章",type:"switch",default:!0,dependsOn:{key:"user_badge_enabled",value:!0}},{key:"user_badge_limit",label:"最多显示数量",type:"number",default:3,min:1,max:8,dependsOn:{key:"user_badge_enabled",value:!0}}]},{key:"dictionary",title:"徽章字典",icon:"fas fa-bookmark",fields:[{key:"user_badge_dictionary",label:"徽章列表",type:"textarea",default:`founder|创始成员|warning +staff|站务团队|info`,help:"每行一个徽章:slug|显示文案|色调(neutral/info/success/warning/brand)",dependsOn:{key:"user_badge_enabled",value:!0}}]}]},Bl={key:"users.wechat",title:"微信通知",icon:"fab fa-weixin",description:"配置微信模板消息、订阅/解绑和站外通知策略。",defaults:{wechat_notify_enabled:!1,wechat_app_id:"",wechat_app_secret:"",wechat_template_id:"",wechat_token:"",wechat_encoding_aes_key:"",wechat_notify_comment:!0,wechat_notify_reply:!0,wechat_notify_system:!0,wechat_bind_entry:!0},groups:[{key:"account",title:"公众号配置",icon:"fab fa-weixin",fields:[{key:"wechat_notify_enabled",label:"启用微信通知",type:"switch",default:!1,help:"开启后用户可绑定微信接收通知"},{key:"wechat_app_id",label:"AppID",type:"input",default:"",dependsOn:{key:"wechat_notify_enabled",value:!0}},{key:"wechat_app_secret",label:"AppSecret",type:"input",default:"",dependsOn:{key:"wechat_notify_enabled",value:!0}},{key:"wechat_template_id",label:"模板消息 ID",type:"input",default:"",dependsOn:{key:"wechat_notify_enabled",value:!0},help:"在微信公众平台申请的模板消息 ID"}]},{key:"verify",title:"服务器验证",icon:"fas fa-check-circle",fields:[{key:"wechat_token",label:"Token",type:"input",default:"",dependsOn:{key:"wechat_notify_enabled",value:!0},help:"微信公众平台服务器配置中的 Token"},{key:"wechat_encoding_aes_key",label:"EncodingAESKey",type:"input",default:"",dependsOn:{key:"wechat_notify_enabled",value:!0}}]},{key:"triggers",title:"通知触发器",icon:"fas fa-bell",fields:[{key:"wechat_notify_comment",label:"新评论通知",type:"switch",default:!0,dependsOn:{key:"wechat_notify_enabled",value:!0}},{key:"wechat_notify_reply",label:"评论回复通知",type:"switch",default:!0,dependsOn:{key:"wechat_notify_enabled",value:!0}},{key:"wechat_notify_system",label:"系统通知",type:"switch",default:!0,dependsOn:{key:"wechat_notify_enabled",value:!0}},{key:"wechat_bind_entry",label:"显示绑定入口",type:"switch",default:!0,dependsOn:{key:"wechat_notify_enabled",value:!0},help:"在用户中心显示微信绑定/解绑按钮"}]}]},Jl={key:"users.report",title:"禁封/举报",icon:"fas fa-flag",description:"配置举报入口、公开限制提示和后续治理分类,为封禁/举报流程预留稳定结构。",defaults:{user_report_enabled:!1,user_report_public_entry:!0,user_report_public_notice:!0,user_report_ban_notice_text:"当前账号处于限制状态,部分互动能力已关闭。",user_report_categories:`spam|垃圾信息 +abuse|人身攻击 +copyright|版权投诉`,ban_preset_reason:`spam|垃圾信息 +abuse|人身攻击 +violation|违规操作`,ban_appeal_desc:"",ban_appeal_keys:"",user_report_img_s:!0,user_report_desc:""},groups:[{key:"entry",title:"前台入口",icon:"fas fa-door-open",fields:[{key:"user_report_enabled",label:"启用举报/禁封结构",type:"switch",default:!1},{key:"user_report_public_entry",label:"公开主页展示举报入口",type:"switch",default:!0,dependsOn:{key:"user_report_enabled",value:!0}},{key:"user_report_public_notice",label:"公开显示限制提示",type:"switch",default:!0,dependsOn:{key:"user_report_enabled",value:!0}},{key:"user_report_ban_notice_text",label:"限制提示文案",type:"input",default:"当前账号处于限制状态,部分互动能力已关闭。",dependsOn:{key:"user_report_public_notice",value:!0}}]},{key:"taxonomy",title:"举报分类",icon:"fas fa-list",fields:[{key:"user_report_categories",label:"举报分类",type:"textarea",default:`spam|垃圾信息 +abuse|人身攻击 +copyright|版权投诉`,help:"每行一个分类:slug|显示名称",dependsOn:{key:"user_report_enabled",value:!0}}]},{key:"ban",title:"禁封设置",icon:"fas fa-ban",fields:[{key:"ban_preset_reason",label:"预设封禁原因",type:"textarea",default:`spam|垃圾信息 +abuse|人身攻击 +violation|违规操作`,help:"每行一条:slug|显示名称",dependsOn:{key:"user_report_enabled",value:!0}},{key:"ban_appeal_desc",label:"申诉说明",type:"textarea",default:"",dependsOn:{key:"user_report_enabled",value:!0}},{key:"ban_appeal_keys",label:"申诉关键词",type:"input",default:"",help:"逗号分隔",dependsOn:{key:"user_report_enabled",value:!0}}]},{key:"image",title:"图片举报",icon:"fas fa-image",fields:[{key:"user_report_img_s",label:"启用图片举报",type:"switch",default:!0,dependsOn:{key:"user_report_enabled",value:!0}},{key:"user_report_desc",label:"举报说明",type:"textarea",default:"",dependsOn:{key:"user_report_img_s",value:!0}}]}]},Fl={key:"users.sms",title:"短信接口",icon:"fas fa-sms",description:"配置短信验证码和短信通知服务的供应商、模板和限流策略。",defaults:{sms_enabled:!1,sms_provider:"aliyun",sms_number_limit_ch:!0,sms_access_key:"",sms_access_secret:"",sms_sign_name:"",sms_template_code:"",sms_code_length:6,sms_code_expire:300,sms_rate_limit:60,sms_daily_limit:10,sms_notify_bind:!0,sms_notify_login:!1,sms_notify_register:!0,sms_notify_reset_password:!0,sms_ali_api_type:"sms",sms_region_id:"cn-hangzhou",sms_tencent_app_id:"",sms_tencent_app_key:"",sms_tencent_secret_id:"",sms_tencent_secret_key:"",sms_tencent_region:"ap-guangzhou",sms_huawei_sender:"",sms_huawei_signature:"",sms_huawei_endpoint:"",sms_custom_url:"",sms_custom_method:"POST",sms_custom_auth_type:"header",sms_custom_auth_key:"",sms_custom_auth_value:"",sms_custom_headers:"",sms_custom_body:"",sms_custom_success_rule:""},groups:[{key:"provider",title:"供应商配置",icon:"fas fa-plug",fields:[{key:"sms_enabled",label:"启用短信服务",type:"switch",default:!1,help:"开启后支持短信验证码和短信通知"},{key:"sms_provider",label:"短信供应商",type:"select",default:"aliyun",options:[{label:"阿里云短信",value:"aliyun"},{label:"腾讯云短信",value:"tencent"},{label:"华为云短信",value:"huawei"},{label:"自定义接口",value:"custom"}],dependsOn:{key:"sms_enabled",value:!0}},{key:"sms_number_limit_ch",label:"仅发国内",type:"switch",default:!0,dependsOn:{key:"sms_enabled",value:!0},help:"开启后仅支持发送国内短信,关闭后可发送港澳台及国际短信"},{key:"sms_access_key",label:"AccessKey / SecretId / AppKey",type:"input",default:"",dependsOn:{key:"sms_enabled",value:!0},help:"阿里云填 AccessKey,腾讯云填 SecretId,华为云填 AppKey"},{key:"sms_access_secret",label:"AccessSecret / SecretKey / AppSecret",type:"input",inputType:"password",default:"",dependsOn:{key:"sms_enabled",value:!0}}]},{key:"aliyun",title:"阿里云配置",icon:"fas fa-cloud",fields:[{key:"sms_ali_api_type",label:"接口类型",type:"radio",default:"sms",options:[{label:"短信服务",value:"sms"},{label:"号码认证",value:"verify"}],dependsOn:{key:"sms_provider",value:"aliyun"}},{key:"sms_region_id",label:"RegionId",type:"input",default:"cn-hangzhou",dependsOn:{key:"sms_provider",value:"aliyun"}}]},{key:"tencent",title:"腾讯云配置",icon:"fas fa-cloud",fields:[{key:"sms_tencent_app_id",label:"SdkAppId",type:"input",default:"",dependsOn:{key:"sms_provider",value:"tencent"},help:"腾讯云短信应用 ID"},{key:"sms_tencent_app_key",label:"AppKey",type:"input",inputType:"password",default:"",dependsOn:{key:"sms_provider",value:"tencent"}},{key:"sms_tencent_secret_id",label:"SecretId",type:"input",default:"",dependsOn:{key:"sms_provider",value:"tencent"}},{key:"sms_tencent_secret_key",label:"SecretKey",type:"input",inputType:"password",default:"",dependsOn:{key:"sms_provider",value:"tencent"}},{key:"sms_tencent_region",label:"地域",type:"input",default:"ap-guangzhou",dependsOn:{key:"sms_provider",value:"tencent"}}]},{key:"huawei",title:"华为云配置",icon:"fas fa-cloud",fields:[{key:"sms_huawei_sender",label:"通道号 (sender)",type:"input",default:"",dependsOn:{key:"sms_provider",value:"huawei"}},{key:"sms_huawei_signature",label:"短信签名",type:"input",default:"",dependsOn:{key:"sms_provider",value:"huawei"},help:"华为云短信签名内容"},{key:"sms_huawei_endpoint",label:"API Endpoint",type:"input",default:"",dependsOn:{key:"sms_provider",value:"huawei"},help:"留空使用默认 endpoint"}]},{key:"custom",title:"自定义接口配置",icon:"fas fa-plug",fields:[{key:"sms_custom_url",label:"请求 URL",type:"input",default:"",dependsOn:{key:"sms_provider",value:"custom"},help:"支持 {phone} {code} {time} 变量"},{key:"sms_custom_method",label:"请求方法",type:"select",default:"POST",options:[{label:"POST",value:"POST"},{label:"GET",value:"GET"},{label:"PUT",value:"PUT"}],dependsOn:{key:"sms_provider",value:"custom"}},{key:"sms_custom_auth_type",label:"鉴权方式",type:"select",default:"header",options:[{label:"Header",value:"header"}],dependsOn:{key:"sms_provider",value:"custom"}},{key:"sms_custom_auth_key",label:"鉴权 Header 名",type:"input",default:"",dependsOn:{key:"sms_provider",value:"custom"}},{key:"sms_custom_auth_value",label:"鉴权 Header 值",type:"input",inputType:"password",default:"",dependsOn:{key:"sms_provider",value:"custom"},help:"支持 {phone} {code} {time} 变量"},{key:"sms_custom_headers",label:"自定义 Headers",type:"textarea",default:"",dependsOn:{key:"sms_provider",value:"custom"},help:"每行一个,格式:Key: Value"},{key:"sms_custom_body",label:"请求 Body",type:"textarea",default:"",dependsOn:{key:"sms_provider",value:"custom"},help:"JSON 格式,支持 {phone} {code} {time} 变量"},{key:"sms_custom_success_rule",label:"成功判定规则",type:"input",default:"",dependsOn:{key:"sms_provider",value:"custom"},help:"格式:status:200 或 json:code=0 或 contains:success"}]},{key:"template",title:"短信模板",icon:"fas fa-sms",fields:[{key:"sms_sign_name",label:"短信签名",type:"input",default:"",dependsOn:{key:"sms_enabled",value:!0},help:"在短信服务商申请的短信签名(所有供应商共用此字段)"},{key:"sms_template_code",label:"验证码模板 ID",type:"input",default:"",dependsOn:{key:"sms_enabled",value:!0},help:"所有供应商共用此模板 ID"},{key:"sms_code_length",label:"验证码长度",type:"number",default:6,min:4,max:8,dependsOn:{key:"sms_enabled",value:!0}},{key:"sms_code_expire",label:"验证码有效期 (秒)",type:"number",default:300,min:60,max:600,dependsOn:{key:"sms_enabled",value:!0}}]},{key:"rate_limit",title:"限流策略",icon:"fas fa-shield-alt",fields:[{key:"sms_rate_limit",label:"发送间隔 (秒)",type:"number",default:60,min:10,max:300,dependsOn:{key:"sms_enabled",value:!0},help:"同一手机号两次发送的最小间隔"},{key:"sms_daily_limit",label:"每日发送上限",type:"number",default:10,min:1,max:100,dependsOn:{key:"sms_enabled",value:!0},help:"同一手机号每天最多发送条数"}]},{key:"triggers",title:"通知场景",icon:"fas fa-bell",fields:[{key:"sms_notify_bind",label:"绑定手机时验证",type:"switch",default:!0,dependsOn:{key:"sms_enabled",value:!0}},{key:"sms_notify_login",label:"短信登录",type:"switch",default:!1,dependsOn:{key:"sms_enabled",value:!0}},{key:"sms_notify_register",label:"注册验证",type:"switch",default:!0,dependsOn:{key:"sms_enabled",value:!0}},{key:"sms_notify_reset_password",label:"找回密码",type:"switch",default:!0,dependsOn:{key:"sms_enabled",value:!0}}]}]},Xl={auth:Dl,oauth:Ul,notifications:$l,credits:Ml,invite:El,features:Gl,signin:Rl,verify:Kl,level:Hl,badge:Nl,wechat:Bl,report:Jl,sms:Fl},Wl={key:"payment.paid",title:"下载/付费内容中心",icon:"fas fa-download",description:"统一管理资源下载、付费内容、角色免扣和人工交付说明。",defaults:{payment_paid_post_types:"post",payment_vip_free_download:!1,payment_vip_exempt_roles:"",payment_paid_catalog_note:"",payment_manual_delivery_note:"付费或人工确认内容请在订单备注中记录交付方式。",pay_mark:"付费",payment_currency_symbol:"¥",pay_show_user:!0,pay_show_paycount:!0,pay_box_position:"top",payment_download_enable:!1,payment_down_alone_page:!1,pay_free_logged_show:!1,payment_download_remote_s:!0,payment_download_verify_nonce:!0,payment_download_user_log:50,payment_download_post_log:50,payment_download_remote_size:2048,payment_download_remote_ext:"zip,rar,7z",coupon_post_s:!1,coupon_desc:""},groups:[{key:"strategy",title:"付费内容策略",icon:"fas fa-layer-group",fields:[{key:"payment_paid_post_types",label:"受管内容类型",type:"input",default:"post",help:"逗号分隔,例如 post,course,doc"},{key:"payment_vip_free_download",label:"角色白名单免扣下载",type:"switch",default:!1},{key:"payment_vip_exempt_roles",label:"免扣角色列表",type:"input",default:"",help:"逗号分隔的 WordPress role slug,例如 administrator,editor,vip"}]},{key:"delivery",title:"交付说明",icon:"fas fa-receipt",fields:[{key:"payment_paid_catalog_note",label:"前台付费提示",type:"textarea",default:"",help:"显示在资源/付费内容页的运营说明。"},{key:"payment_manual_delivery_note",label:"人工交付备注",type:"textarea",default:"付费或人工确认内容请在订单备注中记录交付方式。",help:"人工确认或离线交付流程的标准说明。"}]},{key:"display",title:"展示设置",icon:"fas fa-eye",fields:[{key:"pay_mark",label:"付费标记",type:"input",default:"付费"},{key:"payment_currency_symbol",label:"货币符号",type:"input",default:"¥",help:"商品价格前缀,如 ¥、$、¥"},{key:"pay_show_user",label:"显示购买用户",type:"switch",default:!0},{key:"pay_show_paycount",label:"显示购买次数",type:"switch",default:!0},{key:"pay_box_position",label:"付费框位置",type:"radio",default:"top",options:[{label:"文章框顶部(封面后)",value:"box_top"},{label:"正文顶部",value:"top"},{label:"正文底部",value:"bottom"},{label:"文章框底部(相关前)",value:"box_bottom"}]},{key:"pay_free_logged_show",label:"免费资源需登录后下载",type:"switch",default:!1,help:"开启后,价格为 0 的下载资源也要求登录才可下载(对齐 zibll pay_free_logged_show)。"}]},{key:"download",title:"下载设置",icon:"fas fa-cloud-download-alt",fields:[{key:"payment_download_enable",label:"启用下载功能",type:"switch",default:!1},{key:"payment_down_alone_page",label:"独立下载页面",type:"switch",default:!1,help:"开启后,已获权限的下载入口跳转到独立下载页(模板:单篇资源下载),而不是在正文内联显示全部下载按钮。",dependsOn:{key:"payment_download_enable",value:!0}},{key:"payment_download_remote_s",label:"远程文件下载",type:"switch",default:!0,dependsOn:{key:"payment_download_enable",value:!0}},{key:"payment_download_verify_nonce",label:"下载鉴权",type:"switch",default:!0,dependsOn:{key:"payment_download_enable",value:!0}},{key:"payment_download_user_log",label:"用户下载记录条数",type:"number",default:50,min:0,max:9999,help:"0 为不保存",dependsOn:{key:"payment_download_enable",value:!0}},{key:"payment_download_post_log",label:"文章下载记录条数",type:"number",default:50,min:0,max:9999,help:"0 为不保存",dependsOn:{key:"payment_download_enable",value:!0}},{key:"payment_download_remote_size",label:"远程文件大小限制(KB)",type:"number",default:2048,min:1,max:999999,dependsOn:{key:"payment_download_remote_s",value:!0}},{key:"payment_download_remote_ext",label:"远程文件格式限制",type:"input",default:"zip,rar,7z",help:"逗号分隔扩展名",dependsOn:{key:"payment_download_remote_s",value:!0}}]},{key:"coupon",title:"内容优惠码",icon:"fas fa-ticket-alt",fields:[{key:"coupon_post_s",label:"全站内容允许优惠码",type:"switch",default:!1,help:"开启后所有付费内容收银台可用优惠码;关闭时仅单篇勾选「允许优惠码」的文章可用。"},{key:"coupon_desc",label:"优惠码说明",type:"textarea",default:"",dependsOn:{key:"coupon_post_s",value:!0},help:"展示在内容收银台优惠码输入框下方。"}]}]},Ql={key:"payment.recharge",title:"余额充值",icon:"fas fa-charging-station",description:"配置余额充值套餐、转账与积分兑换。",defaults:{pay_balance_s:!0,pay_balance_desc:"",pay_auto_to_balance:!0,pay_balance_product:`30|30|入门包 +98|108|推荐包`,pay_balance_product_name:"",pay_balance_price:0,pay_balance_tag:"元",pay_balance_tag_class:"",pay_balance_product_custom_s:!0,pay_balance_product_custom_limit:9999,pay_balance_transfer_s:!1,pay_balance_transfer_service_charge:0,pay_balance_transfer_desc:"",pay_balance_pass_charge_s:!1,pay_balance_pass_charge_desc:"",pay_balance_pass_charge_only_password:!1,pay_balance_exchange_s:!1,pay_balance_exchange_rate:100,pay_balance_exchange_desc:""},groups:[{key:"basic",title:"充值开关",icon:"fas fa-wallet",fields:[{key:"pay_balance_s",label:"启用余额功能",type:"switch",default:!0},{key:"pay_balance_desc",label:"充值说明",type:"textarea",default:"",dependsOn:{key:"pay_balance_s",value:!0}},{key:"pay_auto_to_balance",label:"自动到账到余额",type:"switch",default:!0,dependsOn:{key:"pay_balance_s",value:!0}}]},{key:"packages",title:"充值套餐",icon:"fas fa-box-open",fields:[{key:"pay_balance_product",label:"套餐列表",type:"textarea",default:`30|30|入门包 +98|108|推荐包`,help:"每行一个套餐:支付金额|到账金额|标题",dependsOn:{key:"pay_balance_s",value:!0}}]},{key:"product",title:"充值产品",icon:"fas fa-box",fields:[{key:"pay_balance_product_name",label:"充值产品",type:"input",default:"",dependsOn:{key:"pay_balance_s",value:!0}},{key:"pay_balance_price",label:"充值价格",type:"number",default:0,min:0,max:99999,dependsOn:{key:"pay_balance_s",value:!0}},{key:"pay_balance_tag",label:"价格标签",type:"input",default:"元",dependsOn:{key:"pay_balance_s",value:!0}},{key:"pay_balance_tag_class",label:"标签样式",type:"input",default:"",dependsOn:{key:"pay_balance_s",value:!0}},{key:"pay_balance_product_custom_s",label:"自定义金额",type:"switch",default:!0,dependsOn:{key:"pay_balance_s",value:!0}},{key:"pay_balance_product_custom_limit",label:"自定义金额限制",type:"number",default:9999,min:1,max:99999,dependsOn:{key:"pay_balance_s",value:!0}}]},{key:"transfer",title:"余额转账",icon:"fas fa-exchange-alt",fields:[{key:"pay_balance_transfer_s",label:"启用余额转账",type:"switch",default:!1},{key:"pay_balance_transfer_service_charge",label:"转账手续费(%)",type:"number",default:0,min:0,max:50,dependsOn:{key:"pay_balance_transfer_s",value:!0}},{key:"pay_balance_transfer_desc",label:"转账说明",type:"textarea",default:"",dependsOn:{key:"pay_balance_transfer_s",value:!0}}]},{key:"pass-charge",title:"充值卡免扣",icon:"fas fa-ticket-alt",fields:[{key:"pay_balance_pass_charge_s",label:"启用余额卡密兑换",type:"switch",default:!1},{key:"pay_balance_pass_charge_desc",label:"卡密兑换说明",type:"textarea",default:"",dependsOn:{key:"pay_balance_pass_charge_s",value:!0}},{key:"pay_balance_pass_charge_only_password",label:"仅密码兑换",type:"switch",default:!1,dependsOn:{key:"pay_balance_pass_charge_s",value:!0}}]},{key:"exchange",title:"积分兑换",icon:"fas fa-coins",fields:[{key:"pay_balance_exchange_s",label:"启用积分兑换",type:"switch",default:!1},{key:"pay_balance_exchange_rate",label:"兑换比例",type:"number",default:100,min:1,max:1e4,help:"N 积分 = 1 元",dependsOn:{key:"pay_balance_exchange_s",value:!0}},{key:"pay_balance_exchange_desc",label:"兑换说明",type:"textarea",default:"",dependsOn:{key:"pay_balance_exchange_s",value:!0}}]}]},Zl={key:"payment.vip",title:"VIP会员",icon:"fas fa-crown",description:"对齐 Zibll 双级会员:pay_user_vip_1 / pay_user_vip_2 与下载权益。",defaults:{pay_user_vip_1_s:!0,pay_user_vip_1_name:"一级会员",pay_user_vip_2_s:!0,pay_user_vip_2_name:"二级会员",pay_user_vip_desc:"",payment_vip_packages:`30|30|月卡 +365|365|年卡`,pay_download_limit:0,pay_download_speed:0,pay_download_limit_vip_1:0,pay_download_speed_vip_1:0,pay_download_limit_vip_2:0,pay_download_speed_vip_2:0,pay_vip_pass_charge_s:!1,pay_vip_pass_charge_desc:"",pay_vip_pass_charge_only_password:!0,vip_renew:!0,vip_renew_desc:"",vip_renew_price_type:"discount",vip_renew_discount:8,vip_renew_reduce:20,vip_upgrade:!0,vip_upgrade_desc:"",vip_upgrade_product:""},groups:[{key:"basic",title:"会员等级",icon:"fas fa-user-shield",fields:[{key:"pay_user_vip_1_s",label:"启用一级会员",type:"switch",default:!0},{key:"pay_user_vip_1_name",label:"一级会员名称",type:"input",default:"一级会员",dependsOn:{key:"pay_user_vip_1_s",value:!0}},{key:"pay_user_vip_2_s",label:"启用二级会员",type:"switch",default:!0},{key:"pay_user_vip_2_name",label:"二级会员名称",type:"input",default:"二级会员",dependsOn:{key:"pay_user_vip_2_s",value:!0}},{key:"pay_user_vip_desc",label:"会员说明",type:"textarea",default:""}]},{key:"packages",title:"会员套餐",icon:"fas fa-gem",fields:[{key:"payment_vip_packages",label:"套餐列表",type:"textarea",default:`30|30|月卡 +365|365|年卡`,help:"每行一个套餐:价格|时长(天)|标题"}]},{key:"benefit",title:"下载权益",icon:"fas fa-gift",fields:[{key:"pay_download_limit",label:"普通用户下载限制",type:"number",default:0,min:0,max:9999,help:"0为不限制"},{key:"pay_download_speed",label:"普通用户下载速度(KB/s)",type:"number",default:0,min:0,max:99999,help:"0为不限制"},{key:"pay_download_limit_vip_1",label:"一级会员下载限制",type:"number",default:0,min:0,max:9999,dependsOn:{key:"pay_user_vip_1_s",value:!0}},{key:"pay_download_speed_vip_1",label:"一级会员下载速度(KB/s)",type:"number",default:0,min:0,max:99999,dependsOn:{key:"pay_user_vip_1_s",value:!0}},{key:"pay_download_limit_vip_2",label:"二级会员下载限制",type:"number",default:0,min:0,max:9999,dependsOn:{key:"pay_user_vip_2_s",value:!0}},{key:"pay_download_speed_vip_2",label:"二级会员下载速度(KB/s)",type:"number",default:0,min:0,max:99999,dependsOn:{key:"pay_user_vip_2_s",value:!0}},{key:"pay_vip_pass_charge_s",label:"会员卡密兑换",type:"switch",default:!1},{key:"pay_vip_pass_charge_desc",label:"卡密兑换说明",type:"textarea",default:"",dependsOn:{key:"pay_vip_pass_charge_s",value:!0}},{key:"pay_vip_pass_charge_only_password",label:"仅密码兑换",type:"switch",default:!0,dependsOn:{key:"pay_vip_pass_charge_s",value:!0},help:"开启后只需输入卡密;关闭则需卡号+卡密。"}]},{key:"renew",title:"续费设置",icon:"fas fa-sync-alt",fields:[{key:"vip_renew",label:"允许续费",type:"switch",default:!0},{key:"vip_renew_desc",label:"续费说明",type:"textarea",default:"",dependsOn:{key:"vip_renew",value:!0}},{key:"vip_renew_price_type",label:"续费价格类型",type:"radio",default:"discount",options:[{label:"相同价格",value:"same"},{label:"折扣价格",value:"discount"},{label:"优惠立减",value:"reduce"}],dependsOn:{key:"vip_renew",value:!0}},{key:"vip_renew_discount",label:"续费折扣(%)",type:"number",default:8,min:1,max:100,dependsOn:{key:"vip_renew_price_type",value:"discount"}},{key:"vip_renew_reduce",label:"续费减免金额",type:"number",default:20,min:0,max:9999,dependsOn:{key:"vip_renew_price_type",value:"reduce"}}]},{key:"upgrade",title:"升级设置",icon:"fas fa-arrow-up",fields:[{key:"vip_upgrade",label:"允许升级",type:"switch",default:!0},{key:"vip_upgrade_desc",label:"升级说明",type:"textarea",default:"",dependsOn:{key:"vip_upgrade",value:!0}},{key:"vip_upgrade_product",label:"升级产品",type:"textarea",default:"",dependsOn:{key:"vip_upgrade",value:!0},help:"每行一条。永久VIP1升级:permanent|价格|标题;按剩余天:unit|每日单价|标题;限时跳转永久:jump|价格|标题;兼容旧格式:价格|天数|标题"}]}]},Yl={key:"payment.revenue",title:"创作分成",icon:"fas fa-chart-line",description:"配置作者分成比例、结算门槛和结算周期。",defaults:{pay_income_s:!1,payment_revenue_share_ratio:70,ratio_vip_1:0,ratio_vip_2:0,payment_revenue_settlement_threshold:100,payment_revenue_cycle_days:30,payment_revenue_points_rule:"",payment_revenue_note:"分成规则已就绪,订单入账后自动按比例结算。",pay_income_desc_details:"",pay_income_desc_page:""},groups:[{key:"policy",title:"分成策略",icon:"fas fa-percentage",fields:[{key:"pay_income_s",label:"启用创作分成结构",type:"switch",default:!1},{key:"payment_revenue_share_ratio",label:"作者分成比例(%)",type:"number",default:70,min:0,max:100,dependsOn:{key:"pay_income_s",value:!0}},{key:"ratio_vip_1",label:"VIP1分成比例(%)",type:"number",default:0,min:0,max:100,dependsOn:{key:"pay_income_s",value:!0}},{key:"ratio_vip_2",label:"VIP2分成比例(%)",type:"number",default:0,min:0,max:100,dependsOn:{key:"pay_income_s",value:!0}},{key:"payment_revenue_settlement_threshold",label:"最小结算金额",type:"number",default:100,min:0,max:1e5,dependsOn:{key:"pay_income_s",value:!0}},{key:"payment_revenue_cycle_days",label:"结算周期(天)",type:"number",default:30,min:1,max:365,dependsOn:{key:"pay_income_s",value:!0}},{key:"payment_revenue_points_rule",label:"积分规则",type:"textarea",default:"",dependsOn:{key:"pay_income_s",value:!0}},{key:"payment_revenue_note",label:"结算备注",type:"textarea",default:"分成策略和台账结构已就绪,订单入账后自动按比例结算。",dependsOn:{key:"pay_income_s",value:!0}}]},{key:"display",title:"展示设置",icon:"fas fa-file-alt",fields:[{key:"pay_income_desc_details",label:"收益明细文案",type:"textarea",default:"",dependsOn:{key:"pay_income_s",value:!0}},{key:"pay_income_desc_page",label:"收益说明页",type:"input",default:"",dependsOn:{key:"pay_income_s",value:!0}}]}]},et={key:"payment.affiliate",title:"推广返佣",icon:"fas fa-share-alt",description:"配置返佣比例、归因窗口和结算说明。",defaults:{pay_rebate_s:!1,pay_rebate_ratio:10,payment_affiliate_window_days:30,payment_affiliate_require_paid_order:!0,pay_rebate_self_s:!0,pay_rebate_show_users:!0,payment_affiliate_user_ratio:10,pay_rebate_ratio_vip_1:0,pay_rebate_ratio_vip_2:0,pay_rebate_poster_s:!0,pay_rebate_poster_img:"",pay_rebate_poster_title:"",pay_rebate_poster_desc:"",pay_rebate_text_desc:"",pay_rebate_text_details_title:"",pay_rebate_text_details:"",pay_rebate_text_discount:""},groups:[{key:"policy",title:"返佣策略",icon:"fas fa-project-diagram",fields:[{key:"pay_rebate_s",label:"启用推广返佣结构",type:"switch",default:!1},{key:"pay_rebate_ratio",label:"返佣比例(%)",type:"number",default:10,min:0,max:100,dependsOn:{key:"pay_rebate_s",value:!0}},{key:"payment_affiliate_window_days",label:"归因窗口(天)",type:"number",default:30,min:1,max:365,dependsOn:{key:"pay_rebate_s",value:!0}},{key:"payment_affiliate_require_paid_order",label:"仅对已支付订单返佣",type:"switch",default:!0,dependsOn:{key:"pay_rebate_s",value:!0}},{key:"pay_rebate_self_s",label:"自购返佣",type:"switch",default:!0,dependsOn:{key:"pay_rebate_s",value:!0}},{key:"pay_rebate_show_users",label:"显示推广用户",type:"switch",default:!0,dependsOn:{key:"pay_rebate_s",value:!0}}]},{key:"user-ratio",title:"用户返佣比例",icon:"fas fa-users-cog",fields:[{key:"payment_affiliate_user_ratio",label:"普通用户比例(%)",type:"number",default:10,min:0,max:100,dependsOn:{key:"pay_rebate_s",value:!0}},{key:"pay_rebate_ratio_vip_1",label:"VIP1比例(%)",type:"number",default:0,min:0,max:100,dependsOn:{key:"pay_rebate_s",value:!0}},{key:"pay_rebate_ratio_vip_2",label:"VIP2比例(%)",type:"number",default:0,min:0,max:100,dependsOn:{key:"pay_rebate_s",value:!0}}]},{key:"poster",title:"推广海报",icon:"fas fa-image",fields:[{key:"pay_rebate_poster_s",label:"启用推广海报",type:"switch",default:!0,dependsOn:{key:"pay_rebate_s",value:!0}},{key:"pay_rebate_poster_img",label:"海报背景图",type:"media",default:"",dependsOn:{key:"pay_rebate_s",value:!0}},{key:"pay_rebate_poster_title",label:"海报标题",type:"input",default:"",dependsOn:{key:"pay_rebate_s",value:!0}},{key:"pay_rebate_poster_desc",label:"海报描述",type:"input",default:"",dependsOn:{key:"pay_rebate_s",value:!0}}]},{key:"text",title:"文案设置",icon:"fas fa-pen-fancy",fields:[{key:"pay_rebate_text_desc",label:"返佣说明",type:"textarea",default:"",dependsOn:{key:"pay_rebate_s",value:!0}},{key:"pay_rebate_text_details_title",label:"明细标题",type:"input",default:"",dependsOn:{key:"pay_rebate_s",value:!0}},{key:"pay_rebate_text_details",label:"明细说明",type:"textarea",default:"",dependsOn:{key:"pay_rebate_s",value:!0}},{key:"pay_rebate_text_discount",label:"折扣文案",type:"input",default:"",dependsOn:{key:"pay_rebate_s",value:!0}}]}]},at={key:"payment.gateway",title:"收款接口",icon:"fas fa-credit-card",description:"配置支付网关凭据、回调校验口令与运行模式。填写凭据后对应网关即变为”可用”。",defaults:{payment_gateway_mode:"manual_review",payment_gateway_test_enabled:!0,payment_gateway_manual_review:!0,payment_gateway_callback_secret:"",payment_gateway_help:"未接真实支付网关时,建议使用测试网关或人工确认模式完成联调。",payment_wechat_enabled:!1,payment_alipay_enabled:!1,payment_paypal_enabled:!1,payment_balance_enabled:!1,payment_card_pass_enabled:!1,payment_xunhupay_enabled:!1,payment_xhpay_enabled:!1,payment_payjs_enabled:!1,payment_epay_enabled:!1,payment_vmq_enabled:!1,payment_codepay_enabled:!1,payment_stripe_enabled:!1,wechat_merchantid:"",wechat_jsapi:"",wechat_appsecret:"",wechat_cert_path:"",wechat_key_path:"",alipay_appid:"",alipay_privatekey:"",alipay_publickey:"",alipay_return_url:"",alipay_notify_url:"",paypal_client_id:"",paypal_client_secret:"",paypal_currency:"USD",paypal_sandbox:!0,xunhupay_appid:"",xunhupay_appsecret:"",xhpay_mchid:"",xhpay_alipay_v2:"",xhpay_wx_h5:"",payjs_mchid:"",payjs_key:"",epay_apiurl:"",epay_pid:"",epay_key:"",stripe_secret_key:"",stripe_publishable_key:"",stripe_webhook_secret:"",stripe_currency:"usd",stripe_test_mode:!0},groups:[{key:"adapter",title:"网关适配器",icon:"fas fa-plug",fields:[{key:"payment_gateway_mode",label:"运行模式",type:"radio",default:"manual_review",options:[{label:"人工确认",value:"manual_review"},{label:"测试网关",value:"test_gateway"},{label:"适配器就绪",value:"adapter_ready"}]},{key:"payment_gateway_test_enabled",label:"启用测试网关",type:"switch",default:!0},{key:"payment_gateway_manual_review",label:"保留人工复核",type:"switch",default:!0},{key:"payment_gateway_callback_secret",label:"回调校验口令",type:"input",default:"",help:"真实网关接入时可直接复用该口令字段。"},{key:"payment_gateway_help",label:"运维说明",type:"textarea",default:"未接真实支付网关时,建议使用测试网关或人工确认模式完成联调。"}]},{key:"gateways",title:"支付网关",icon:"fas fa-toggle-on",fields:[{key:"payment_wechat_enabled",label:"微信支付",type:"switch",default:!1},{key:"payment_alipay_enabled",label:"支付宝",type:"switch",default:!1},{key:"payment_paypal_enabled",label:"PayPal",type:"switch",default:!1},{key:"payment_stripe_enabled",label:"Stripe",type:"switch",default:!1},{key:"payment_balance_enabled",label:"余额支付",type:"switch",default:!1},{key:"payment_card_pass_enabled",label:"卡密充值",type:"switch",default:!1},{key:"payment_xunhupay_enabled",label:"虎皮椒",type:"switch",default:!1},{key:"payment_xhpay_enabled",label:"小火付",type:"switch",default:!1},{key:"payment_payjs_enabled",label:"PayJS",type:"switch",default:!1},{key:"payment_epay_enabled",label:"易支付",type:"switch",default:!1},{key:"payment_vmq_enabled",label:"V免签",type:"switch",default:!1},{key:"payment_codepay_enabled",label:"Codepay",type:"switch",default:!1}]},{key:"wechat",title:"微信支付配置",icon:"fab fa-weixin",fields:[{key:"wechat_merchantid",label:"商户号",type:"input",default:""},{key:"wechat_jsapi",label:"JSAPI密钥",type:"input",default:""},{key:"wechat_appsecret",label:"AppSecret",type:"input",default:""},{key:"wechat_cert_path",label:"证书路径",type:"input",default:"",help:"退款等接口需要,绝对路径。"},{key:"wechat_key_path",label:"密钥路径",type:"input",default:""}]},{key:"alipay",title:"支付宝配置",icon:"fab fa-alipay",fields:[{key:"alipay_appid",label:"AppID",type:"input",default:""},{key:"alipay_privatekey",label:"应用私钥",type:"textarea",rows:3,default:""},{key:"alipay_publickey",label:"支付宝公钥",type:"textarea",rows:3,default:""},{key:"alipay_return_url",label:"同步回调地址",type:"input",default:""},{key:"alipay_notify_url",label:"异步回调地址",type:"input",default:""}]},{key:"paypal",title:"PayPal 配置",icon:"fab fa-paypal",fields:[{key:"paypal_client_id",label:"Client ID",type:"input",default:""},{key:"paypal_client_secret",label:"Client Secret",type:"input",default:""},{key:"paypal_currency",label:"货币",type:"input",default:"USD"},{key:"paypal_sandbox",label:"沙箱模式",type:"switch",default:!0}]},{key:"xunhupay",title:"虎皮椒配置",icon:"fas fa-pepper-hot",fields:[{key:"xunhupay_appid",label:"AppID",type:"input",default:""},{key:"xunhupay_appsecret",label:"AppSecret",type:"input",default:""}]},{key:"xhpay",title:"小火付配置",icon:"fas fa-fire",fields:[{key:"xhpay_mchid",label:"商户号",type:"input",default:""},{key:"xhpay_alipay_v2",label:"支付宝V2",type:"input",default:""},{key:"xhpay_wx_h5",label:"微信H5",type:"input",default:""}]},{key:"payjs",title:"PayJS 配置",icon:"fab fa-js",fields:[{key:"payjs_mchid",label:"商户号",type:"input",default:""},{key:"payjs_key",label:"通信密钥",type:"input",default:""}]},{key:"epay",title:"易支付配置",icon:"fas fa-university",fields:[{key:"epay_apiurl",label:"接口地址",type:"input",default:""},{key:"epay_pid",label:"商户ID",type:"input",default:""},{key:"epay_key",label:"商户密钥",type:"input",default:""}]},{key:"stripe",title:"Stripe 配置",icon:"fab fa-stripe",fields:[{key:"stripe_secret_key",label:"Secret Key",type:"input",default:""},{key:"stripe_publishable_key",label:"Publishable Key",type:"input",default:""},{key:"stripe_webhook_secret",label:"Webhook Secret",type:"input",default:"",help:"Stripe Dashboard 配置 Webhook 后获得,用于验签。"},{key:"stripe_currency",label:"货币",type:"input",default:"usd"},{key:"stripe_test_mode",label:"测试模式",type:"switch",default:!0}]}]},lt={key:"payment.order",title:"订单设置",icon:"fas fa-file-invoice",description:"配置订单前缀、有效期、展示字段和状态文案。",defaults:{payment_order_prefix:"AKSRT",payment_order_expiry:30,pay_show_user:!0,pay_show_paycount:!0,pay_no_logged_in:!0,pay_cookie_day:15,pay_no_logged_remind:"您当前未登录!建议登陆后购买,可保存购买订单",pay_wait_float_s:!0,payment_order_max_minutes:30,pay_mark:"付费",pay_box_position:"top",pay_free_logged_show:!1,payment_show_ip:!1,payment_show_device:!1,payment_show_order_no:!0,payment_show_create_time:!0,payment_show_pay_time:!0,payment_order_status_pending:"待支付",payment_order_status_paid:"已支付",payment_order_status_completed:"已完成",payment_order_status_cancelled:"已取消",payment_order_status_refunded:"已退款",payment_order_status_refunding:"退款中",payment_order_status_processing:"处理中",pay_service:"",pay_service_icon:"",pay_service_value:"",pay_service_qq:"",pay_service_wechat:""},groups:[{key:"basic",title:"订单基础",icon:"fas fa-cog",fields:[{key:"payment_order_prefix",label:"订单前缀",type:"input",default:"AKSRT"},{key:"payment_order_expiry",label:"订单有效期(分钟)",type:"number",default:30,min:5,max:1440},{key:"pay_show_user",label:"显示用户信息",type:"switch",default:!0},{key:"pay_show_paycount",label:"显示购买次数",type:"switch",default:!0},{key:"pay_no_logged_in",label:"未登录提示",type:"switch",default:!0},{key:"pay_cookie_day",label:"Cookie有效期(天)",type:"number",default:15,min:1,max:31,help:"未登录购买 Cookie 有效时间,1-31 天"},{key:"pay_no_logged_remind",label:"未登录提醒文案",type:"textarea",default:"您当前未登录!建议登陆后购买,可保存购买订单",help:"未登录用户查看付费内容时的提醒文案"},{key:"pay_wait_float_s",label:"订单等待浮动",type:"switch",default:!0},{key:"payment_order_max_minutes",label:"订单最大支付时间(分钟)",type:"number",default:30,min:5,max:1440}]},{key:"display",title:"展示设置",icon:"fas fa-eye",fields:[{key:"pay_mark",label:"付费标记",type:"input",default:"付费"},{key:"pay_box_position",label:"付费框位置",type:"radio",default:"top",options:[{label:"文章框顶部(封面后)",value:"box_top"},{label:"正文顶部",value:"top"},{label:"正文底部",value:"bottom"},{label:"文章框底部(相关前)",value:"box_bottom"}]},{key:"pay_free_logged_show",label:"登录用户显示免费",type:"switch",default:!1},{key:"payment_show_ip",label:"显示用户IP",type:"switch",default:!1},{key:"payment_show_device",label:"显示设备信息",type:"switch",default:!1},{key:"payment_show_order_no",label:"显示订单号",type:"switch",default:!0},{key:"payment_show_create_time",label:"显示创建时间",type:"switch",default:!0},{key:"payment_show_pay_time",label:"显示支付时间",type:"switch",default:!0}]},{key:"status",title:"状态设置",icon:"fas fa-tags",fields:[{key:"payment_order_status_pending",label:"待支付状态文案",type:"input",default:"待支付"},{key:"payment_order_status_paid",label:"已支付状态文案",type:"input",default:"已支付"},{key:"payment_order_status_completed",label:"已完成状态文案",type:"input",default:"已完成"},{key:"payment_order_status_cancelled",label:"已取消状态文案",type:"input",default:"已取消"},{key:"payment_order_status_refunded",label:"已退款状态文案",type:"input",default:"已退款"},{key:"payment_order_status_refunding",label:"退款中状态文案",type:"input",default:"退款中"},{key:"payment_order_status_processing",label:"处理中状态文案",type:"input",default:"处理中"}]},{key:"service",title:"服务设置",icon:"fas fa-headset",fields:[{key:"pay_service",label:"客服设置",type:"textarea",default:""},{key:"pay_service_icon",label:"客服图标",type:"icon",default:""},{key:"pay_service_value",label:"客服内容",type:"input",default:""},{key:"pay_service_qq",label:"QQ客服",type:"input",default:""},{key:"pay_service_wechat",label:"微信客服",type:"media",default:""}]}]},Ae={key:"payment.card-pass",title:"充值卡",icon:"fas fa-ticket-alt",description:"配置充值卡类型、卡号规则、批量生成和兑换逻辑。",defaults:{card_pass_enabled:!1,card_pass_desc:"",card_pass_type:"balance",card_pass_prefix:"AK",card_pass_length:16,card_pass_batch_size:50,card_pass_max_redeem:1,card_pass_expiry:0,card_pass_amount:10,card_pass_vip_days:30,card_pass_credits:0,card_pass_redeem_page:"",card_pass_success_msg:"兑换成功!",card_pass_fail_msg:"卡号无效或已过期"},groups:[{key:"basic",title:"充值卡设置",icon:"fas fa-id-card",fields:[{key:"card_pass_enabled",label:"启用充值卡",type:"switch",default:!1},{key:"card_pass_desc",label:"充值卡说明",type:"textarea",default:"",dependsOn:{key:"card_pass_enabled",value:!0}},{key:"card_pass_type",label:"充值卡类型",type:"select",default:"balance",options:[{label:"余额卡",value:"balance"},{label:"VIP卡",value:"vip"},{label:"积分卡",value:"credits"}],dependsOn:{key:"card_pass_enabled",value:!0}},{key:"card_pass_prefix",label:"卡号前缀",type:"input",default:"AK",dependsOn:{key:"card_pass_enabled",value:!0}},{key:"card_pass_length",label:"卡号长度",type:"number",default:16,min:8,max:32,dependsOn:{key:"card_pass_enabled",value:!0}},{key:"card_pass_batch_size",label:"批量生成数量",type:"number",default:50,min:1,max:500,dependsOn:{key:"card_pass_enabled",value:!0}}]},{key:"redeem",title:"兑换设置",icon:"fas fa-exchange-alt",fields:[{key:"card_pass_max_redeem",label:"单卡最大兑换次数",type:"number",default:1,min:1,max:100,dependsOn:{key:"card_pass_enabled",value:!0}},{key:"card_pass_expiry",label:"有效期(天)",type:"number",default:0,min:0,help:"0为永久有效",dependsOn:{key:"card_pass_enabled",value:!0}},{key:"card_pass_amount",label:"面额(元)",type:"number",default:10,min:1,max:9999,dependsOn:{key:"card_pass_enabled",value:!0}},{key:"card_pass_vip_days",label:"VIP天数",type:"number",default:30,min:1,max:3650,dependsOn:{key:"card_pass_enabled",value:!0}},{key:"card_pass_credits",label:"赠送积分",type:"number",default:0,min:0,max:99999,dependsOn:{key:"card_pass_enabled",value:!0}}]},{key:"display",title:"展示设置",icon:"fas fa-desktop",fields:[{key:"card_pass_redeem_page",label:"兑换页面",type:"input",default:"",dependsOn:{key:"card_pass_enabled",value:!0}},{key:"card_pass_success_msg",label:"兑换成功提示",type:"input",default:"兑换成功!",dependsOn:{key:"card_pass_enabled",value:!0}},{key:"card_pass_fail_msg",label:"兑换失败提示",type:"input",default:"卡号无效或已过期",dependsOn:{key:"card_pass_enabled",value:!0}}]}]},tt={key:"payment.withdrawal",title:"提现管理",icon:"fas fa-hand-holding-usd",description:"配置提现门槛、手续费比例和提现说明。",defaults:{pay_rebate_withdraw_lowest_money:50,withdraw_service_charge:0,pay_rebate_withdraw_text_details:`
可提现金额达到50元后即可发起提现
+
申请提现需后台人工处理,一般2-3小时,请耐心等待
+
如有其它疑问,请与客服联系
`},groups:[{key:"basic",title:"提现设置",icon:"fas fa-sliders-h",fields:[{key:"pay_rebate_withdraw_lowest_money",label:"最低提现金额",type:"number",default:50,min:1,max:99999},{key:"withdraw_service_charge",label:"提现手续费(%)",type:"number",default:0,min:0,max:50},{key:"pay_rebate_withdraw_text_details",label:"提现说明",type:"textarea",default:`
可提现金额达到50元后即可发起提现
+
申请提现需后台人工处理,一般2-3小时,请耐心等待
+
如有其它疑问,请与客服联系
`}]}]},st={paid:Wl,recharge:Ql,vip:Zl,revenue:Yl,affiliate:et,gateway:at,order:lt,"card-pass":Ae,cardPass:Ae,withdrawal:tt},it={key:"extensions.ip",title:"IP归属地",icon:"fas fa-map-marker-alt",description:"配置 IP 数据源、缓存策略和前台归属地展示。",defaults:{ip_geo_enabled:!1,ip_addr_sdk:"null",ip_geo_cache_ttl:86400,ip_geo_display:["comment"],ip_geo_format:"province_city",ip_geo_fallback_text:"",ip_addr_sdk_qq_appkey:"",ip_addr_sdk_qq_secretkey:"",ip_addr_sdk_amap_appkey:"",ip_addr_sdk_amap_secretkey:""},groups:[{key:"basic",title:"基础配置",icon:"fas fa-globe",fields:[{key:"ip_geo_enabled",label:"启用 IP 归属地",type:"switch",default:!1,help:"开启后将在评论、用户主页等位置显示 IP 归属地信息"},{key:"ip_addr_sdk",label:"IP 接口服务商",type:"radio",default:"null",options:[{label:"轮流查询",value:"polling"},{label:"腾讯位置服务",value:"qq"},{label:"高德位置服务",value:"amap"},{label:"太平洋公共接口",value:"null"}],dependsOn:{key:"ip_geo_enabled",value:!0},help:"优先使用国内接口,轮流查询会按腾讯→高德→公共接口顺序回退。"},{key:"ip_geo_cache_ttl",label:"缓存时间 (秒)",type:"number",default:86400,min:3600,max:604800,dependsOn:{key:"ip_geo_enabled",value:!0},help:"IP 查询结果缓存时长,避免频繁请求外部接口"}]},{key:"providers",title:"接口凭据",icon:"fas fa-key",fields:[{key:"ip_addr_sdk_qq_appkey",label:"腾讯 AppKey",type:"input",default:"",dependsOn:{key:"ip_addr_sdk",value:"qq"}},{key:"ip_addr_sdk_qq_secretkey",label:"腾讯 SecretKey",type:"input",default:"",dependsOn:{key:"ip_addr_sdk",value:"qq"}},{key:"ip_addr_sdk_amap_appkey",label:"高德 AppKey",type:"input",default:"",dependsOn:{key:"ip_addr_sdk",value:"amap"}},{key:"ip_addr_sdk_amap_secretkey",label:"高德 SecretKey",type:"input",default:"",dependsOn:{key:"ip_addr_sdk",value:"amap"}}]},{key:"display",title:"展示设置",icon:"fas fa-eye",fields:[{key:"ip_geo_display",label:"展示位置",type:"checkbox",default:["comment"],options:[{label:"评论区",value:"comment"},{label:"用户主页",value:"user_home"},{label:"文章页",value:"post"}],dependsOn:{key:"ip_geo_enabled",value:!0}},{key:"ip_geo_format",label:"显示格式",type:"radio",default:"province_city",options:[{label:"省份+城市",value:"province_city"},{label:"仅省份",value:"province"},{label:"国家+省份",value:"country_province"}],dependsOn:{key:"ip_geo_enabled",value:!0}},{key:"ip_geo_fallback_text",label:"查询失败时文案",type:"input",default:"",placeholder:"留空则不显示",dependsOn:{key:"ip_geo_enabled",value:!0}}]}]},nt={key:"extensions.audit",title:"API内容审核",icon:"fas fa-shield-virus",description:"配置第三方内容审核 API 接入、审核范围和失败回退策略。",defaults:{content_audit_enabled:!1,content_audit_provider:"baidu",content_audit_api_key:"",content_audit_api_secret:"",content_audit_text_enabled:!0,content_audit_image_enabled:!1,content_audit_on_failure:"allow",content_audit_log_enabled:!0},groups:[{key:"provider",title:"审核接口",icon:"fas fa-plug",fields:[{key:"content_audit_enabled",label:"启用内容审核",type:"switch",default:!1,help:"开启后将对接第三方内容审核 API"},{key:"content_audit_provider",label:"审核服务商",type:"radio",default:"baidu",options:[{label:"百度内容审核",value:"baidu"},{label:"关闭审核接口",value:"null"}],dependsOn:{key:"content_audit_enabled",value:!0}},{key:"content_audit_api_key",label:"API Key",type:"input",default:"",dependsOn:{key:"content_audit_enabled",value:!0},help:"百度智能云 API Key"},{key:"content_audit_api_secret",label:"Secret Key",type:"input",default:"",dependsOn:{key:"content_audit_enabled",value:!0},help:"百度智能云 Secret Key"}]},{key:"scope",title:"审核范围",icon:"fas fa-check-double",fields:[{key:"content_audit_text_enabled",label:"文本审核",type:"switch",default:!0,dependsOn:{key:"content_audit_enabled",value:!0}},{key:"content_audit_image_enabled",label:"图片审核",type:"switch",default:!1,dependsOn:{key:"content_audit_enabled",value:!0}},{key:"audit_bbs_term",label:"审核论坛分类",type:"switch",default:!1,dependsOn:{key:"content_audit_enabled",value:!0}}]},{key:"fallback",title:"失败策略",icon:"fas fa-exclamation-triangle",fields:[{key:"content_audit_on_failure",label:"审核失败时",type:"radio",default:"allow",options:[{label:"放行",value:"allow"},{label:"拦截",value:"block"}],dependsOn:{key:"content_audit_enabled",value:!0}},{key:"content_audit_log_enabled",label:"记录审核日志",type:"switch",default:!0,dependsOn:{key:"content_audit_enabled",value:!0}}]}]},_t={key:"extensions.push",title:"百度推送",icon:"fas fa-paper-plane",description:"配置搜索引擎主动推送、批量提交和状态追踪。",defaults:{baidu_push_enabled:!1,baidu_push_token:"",baidu_push_auto:!0,baidu_push_on_publish:!0,baidu_push_on_update:!1,baidu_push_batch_size:50,baidu_push_log_enabled:!0,xzh_on:!1,xzh_appid:"",xzh_render_tail:!0,xzh_jsonld_single:!0,xzh_jsonld_page:!1,xzh_jsonld_img:!1},groups:[{key:"basic",title:"推送配置",icon:"fas fa-rocket",fields:[{key:"baidu_push_enabled",label:"启用百度推送",type:"switch",default:!1,help:"开启后将自动向百度搜索推送页面链接"},{key:"baidu_push_token",label:"推送 Token",type:"input",default:"",dependsOn:{key:"baidu_push_enabled",value:!0},help:"在百度搜索资源平台获取的推送准入 Token"}]},{key:"trigger",title:"触发规则",icon:"fas fa-bolt",fields:[{key:"baidu_push_auto",label:"自动推送 (页面加载时)",type:"switch",default:!0,dependsOn:{key:"baidu_push_enabled",value:!0},help:"在前台页面中嵌入百度自动推送 JS 代码"},{key:"baidu_push_on_publish",label:"发布时主动推送",type:"switch",default:!0,dependsOn:{key:"baidu_push_enabled",value:!0}},{key:"baidu_push_on_update",label:"更新时推送",type:"switch",default:!1,dependsOn:{key:"baidu_push_enabled",value:!0}}]},{key:"xzh",title:"熊掌号 / JSON-LD",icon:"fas fa-paw",fields:[{key:"xzh_on",label:"启用熊掌号",type:"switch",default:!1},{key:"xzh_appid",label:"百度 AppID",type:"input",default:"",dependsOn:{key:"xzh_on",value:!0}},{key:"xzh_render_tail",label:"文章底部显示熊掌号尾部",type:"switch",default:!0,dependsOn:{key:"xzh_on",value:!0}},{key:"xzh_jsonld_single",label:"文章页 JSON-LD",type:"switch",default:!0,dependsOn:{key:"xzh_on",value:!0}},{key:"xzh_jsonld_page",label:"页面 JSON-LD",type:"switch",default:!1,dependsOn:{key:"xzh_on",value:!0}},{key:"xzh_jsonld_img",label:"不添加图片",type:"switch",default:!1,dependsOn:{key:"xzh_on",value:!0}}]},{key:"advanced",title:"高级设置",icon:"fas fa-cog",fields:[{key:"baidu_push_batch_size",label:"批量推送条数",type:"number",default:50,min:1,max:500,dependsOn:{key:"baidu_push_enabled",value:!0}},{key:"baidu_push_log_enabled",label:"记录推送日志",type:"switch",default:!0,dependsOn:{key:"baidu_push_enabled",value:!0}}]}]},ot={key:"extensions.docs-mode",title:"文档模式",icon:"fas fa-book-open",description:"启用文档专题内容模式,配置文档导航页面和文档站式体验。",defaults:{docs_mode_enabled:!1,docs_mode_default_template:"documentnav",docs_mode_toc_enabled:!0,docs_mode_chapter_nav_enabled:!0,docs_mode_default_order:"menu_order",docs_mode_cats:[],docs_mode_exclude:!0,docs_mode_toc_depth:3,docs_mode_chapter_title:"",docs_mode_style:"default",docs_mode_icon:!0,docs_mode_count:!0},groups:[{key:"basic",title:"基础配置",icon:"fas fa-cog",fields:[{key:"docs_mode_enabled",label:"启用文档模式",type:"switch",default:!1,help:"开启后将激活文档导航页面模板和文档站式侧边栏"},{key:"docs_mode_default_template",label:"文档首页模板",type:"select",default:"documentnav",options:[{label:"文档导航页",value:"documentnav"},{label:"专题聚合页",value:"special"}],dependsOn:{key:"docs_mode_enabled",value:!0}}]},{key:"navigation",title:"导航设置",icon:"fas fa-compass",fields:[{key:"docs_mode_toc_enabled",label:"显示目录树",type:"switch",default:!0,dependsOn:{key:"docs_mode_enabled",value:!0},help:"在文档页面侧边栏显示章节目录树"},{key:"docs_mode_chapter_nav_enabled",label:"显示章节导航",type:"switch",default:!0,dependsOn:{key:"docs_mode_enabled",value:!0},help:"在文档底部显示上一章/下一章导航"},{key:"docs_mode_default_order",label:"默认排序",type:"radio",default:"menu_order",options:[{label:"按菜单顺序",value:"menu_order"},{label:"按发布时间",value:"date"},{label:"按标题排序",value:"title"}],dependsOn:{key:"docs_mode_enabled",value:!0}},{key:"docs_mode_toc_depth",label:"目录深度",type:"number",default:3,min:1,max:6,dependsOn:{key:"docs_mode_enabled",value:!0}},{key:"docs_mode_chapter_title",label:"章节标题",type:"input",default:"",dependsOn:{key:"docs_mode_enabled",value:!0}}]},{key:"filter",title:"筛选设置",icon:"fas fa-filter",fields:[{key:"docs_mode_cats",label:"文档分类",type:"taxonomy_select",taxonomy:"category",multiple:!0,clearable:!0,default:[],placeholder:"选择用于文档模式的分类",dependsOn:{key:"docs_mode_enabled",value:!0}},{key:"docs_mode_exclude",label:"在首页排除此类内容",type:"switch",default:!0,dependsOn:{key:"docs_mode_enabled",value:!0},help:"开启后,所选文档分类的内容不会出现在首页常规文章流中。"}]},{key:"style",title:"样式设置",icon:"fas fa-palette",fields:[{key:"docs_mode_style",label:"文档样式",type:"select",default:"default",options:[{label:"默认",value:"default"},{label:"简洁",value:"simple"},{label:"卡片",value:"card"}],dependsOn:{key:"docs_mode_enabled",value:!0}},{key:"docs_mode_icon",label:"显示图标",type:"switch",default:!0,dependsOn:{key:"docs_mode_enabled",value:!0}},{key:"docs_mode_count",label:"显示文章数",type:"switch",default:!0,dependsOn:{key:"docs_mode_enabled",value:!0}}]}]},dt={ip:it,audit:nt,push:_t,"docs-mode":ot},ut={key:"tools.import-export",title:"导入导出",icon:"fas fa-exchange-alt",description:"主题配置的导入和导出。",defaults:{},groups:[{key:"export",title:"导出配置",icon:"fas fa-file-export",fields:[{key:"export_settings",label:"导出主题设置",type:"button",help:"导出当前所有主题配置为 JSON 文件"},{key:"export_options",label:"导出 WordPress 选项",type:"button",help:"导出 aksrt_settings 等选项"}]},{key:"import",title:"导入配置",icon:"fas fa-file-import",fields:[{key:"import_settings",label:"导入主题设置",type:"file",accept:".json",help:"导入主题配置文件(将覆盖当前设置)"}]}]},rt={key:"tools.health",title:"健康检查",icon:"fas fa-heartbeat",description:"检查主题运行环境和依赖状态。",defaults:{},groups:[{key:"check",title:"环境检查",icon:"fas fa-stethoscope",fields:[{key:"php_version",label:"PHP 版本",type:"display",help:"建议 7.4+"},{key:"wp_version",label:"WordPress 版本",type:"display",help:"建议 5.8+"},{key:"memory_limit",label:"内存限制",type:"display",help:"建议 256M+"},{key:"upload_max_size",label:"上传限制",type:"display"},{key:"extensions",label:"必要扩展",type:"display",help:"curl, mbstring, json, gd"}]}]},pt={key:"tools.email-rollback",title:"邮件回滚",icon:"fas fa-undo",description:"批量回滚已发送的通知邮件。",defaults:{},groups:[{key:"rollback",title:"邮件回滚",icon:"fas fa-envelope-open",fields:[{key:"rollback_type",label:"回滚类型",type:"select",options:[{label:"按时间范围",value:"date_range"},{label:"按邮件类型",value:"email_type"},{label:"全部回滚",value:"all"}]},{key:"rollback_date_from",label:"开始日期",type:"date"},{key:"rollback_date_to",label:"结束日期",type:"date"},{key:"rollback_execute",label:"执行回滚",type:"button",danger:!0,help:"此操作不可逆"}]}]},yt={key:"tools.backup",title:"数据备份",icon:"fas fa-cloud-download-alt",description:"站点数据备份与恢复。",defaults:{},groups:[{key:"backup",title:"备份设置",icon:"fas fa-save",fields:[{key:"backup_auto",label:"自动备份",type:"switch",help:"启用自动定时备份"},{key:"backup_frequency",label:"备份频率",type:"select",options:[{label:"每天",value:"daily"},{label:"每周",value:"weekly"},{label:"每月",value:"monthly"}]},{key:"backup_retain",label:"保留份数",type:"number",min:3,max:20,default:7},{key:"backup_now",label:"立即备份",type:"button",help:"手动触发一次完整备份"}]}]},ct={"import-export":ut,health:rt,"email-rollback":pt,backup:yt},bt={key:"shop.basic",title:"商城基础",icon:"fas fa-store",description:"商城总开关、首页链接、面包屑和 URL 别名设置。",defaults:{shop_s:!0,shop_home_url:"",shop_breadcrumbs_s:!0,shop_breadcrumbs_home:!0,shop_breadcrumbs_shop_home:!1,shop_breadcrumbs_shop_home_name:"商城首页",shop_product_rewrite_slug:"product",shop_cart_rewrite_slug:"cart",shop_rewrite_suffix_html_s:!0},groups:[{key:"general",title:"商城开关",icon:"fas fa-power-off",fields:[{key:"shop_s",label:"启用商城",type:"switch",default:!0},{key:"shop_home_url",label:"商城首页链接",type:"input",default:"",help:"留空使用默认商城页面",dependsOn:{key:"shop_s",value:!0}}]},{key:"breadcrumbs",title:"面包屑",icon:"fas fa-angle-double-right",fields:[{key:"shop_breadcrumbs_s",label:"显示面包屑",type:"switch",default:!0,dependsOn:{key:"shop_s",value:!0}},{key:"shop_breadcrumbs_home",label:"显示首页链接",type:"switch",default:!0,dependsOn:{key:"shop_breadcrumbs_s",value:!0}},{key:"shop_breadcrumbs_shop_home",label:"显示商城首页",type:"switch",default:!1,dependsOn:{key:"shop_breadcrumbs_s",value:!0}},{key:"shop_breadcrumbs_shop_home_name",label:"商城首页名称",type:"input",default:"商城首页",dependsOn:{key:"shop_breadcrumbs_s",value:!0}}]},{key:"rewrite",title:"URL 别名",icon:"fas fa-link",fields:[{key:"shop_product_rewrite_slug",label:"商品 URL 别名",type:"input",default:"product",dependsOn:{key:"shop_s",value:!0}},{key:"shop_cart_rewrite_slug",label:"购物车 URL 别名",type:"input",default:"cart",dependsOn:{key:"shop_s",value:!0}},{key:"shop_rewrite_suffix_html_s",label:".html 伪静态后缀",type:"switch",default:!0,dependsOn:{key:"shop_s",value:!0}}]}]},ft={key:"shop.list",title:"商品列表",icon:"fas fa-th-list",description:"商品列表排序、分页、卡片样式和销量显示配置。",defaults:{shop_list_orderby:"date",shop_list_count:12,shop_list_paging:"number",shop_list_ias_s:!1,shop_list_ias_max:5,shop_list_style:"default",shop_sales_show:"show",shop_sales_show_min:10},groups:[{key:"pagination",title:"列表分页",icon:"fas fa-layer-group",fields:[{key:"shop_list_orderby",label:"默认排序",type:"select",default:"date",options:[{label:"最新发布",value:"date"},{label:"销量最高",value:"sales"},{label:"价格最低",value:"price_asc"},{label:"价格最高",value:"price_desc"},{label:"评价最多",value:"comments"}]},{key:"shop_list_count",label:"每页数量",type:"number",default:12,min:4,max:100},{key:"shop_list_paging",label:"翻页模式",type:"radio",default:"number",options:[{label:"数字翻页",value:"number"},{label:"AJAX 加载",value:"ajax"}]},{key:"shop_list_ias_s",label:"滚动自动加载",type:"switch",default:!1,dependsOn:{key:"shop_list_paging",value:"ajax"}},{key:"shop_list_ias_max",label:"自动加载页数",type:"number",default:5,min:1,max:50,dependsOn:{key:"shop_list_ias_s",value:!0}}]},{key:"style",title:"列表样式",icon:"fas fa-palette",fields:[{key:"shop_list_style",label:"卡片样式",type:"select",default:"default",options:[{label:"默认",value:"default"},{label:"竖向大卡片",value:"card-lg"},{label:"横向小卡片",value:"card-sm"}]},{key:"shop_sales_show",label:"销量显示",type:"select",default:"show",options:[{label:"显示",value:"show"},{label:"不显示",value:"hide"},{label:"超量显示",value:"threshold"}]},{key:"shop_sales_show_min",label:"起显阈值",type:"number",default:10,min:0,max:99999,help:"销量超过此数字才显示",dependsOn:{key:"shop_sales_show",value:"threshold"}}]}]},mt={key:"shop.contact",title:"客服配置",icon:"fas fa-headset",description:"商品详情页客服按钮和联系方式配置。",defaults:{shop_contact_msg_s:!0,shop_contact_name:"联系客服",shop_contact_note:"",shop_contact_more:""},groups:[{key:"button",title:"客服按钮",icon:"fas fa-comment-dots",fields:[{key:"shop_contact_msg_s",label:"显示客服按钮",type:"switch",default:!0},{key:"shop_contact_name",label:"按钮文案",type:"input",default:"联系客服",dependsOn:{key:"shop_contact_msg_s",value:!0}},{key:"shop_contact_note",label:"客服备注",type:"textarea",default:"",dependsOn:{key:"shop_contact_msg_s",value:!0}}]},{key:"channels",title:"联系方式",icon:"fas fa-address-book",fields:[{key:"shop_contact_more",label:"多客服联系方式",type:"textarea",default:"",help:"每行一个:名称|图标|链接|二维码图片 URL"}]}]},ht={key:"shop.single",title:"商品详情",icon:"fas fa-box-open",description:"商品详情页布局、相关推荐和底部内容设置。",defaults:{shop_content_layout:"adapt",shop_content_show_bg:!1,shop_single_tab:"",shop_content_after:"",shop_single_related_s:!0,shop_single_related_opt:"",shop_main_image_default:""},groups:[{key:"layout",title:"详情页布局",icon:"fas fa-columns",fields:[{key:"shop_content_layout",label:"内容布局",type:"select",default:"adapt",options:[{label:"适应宽度",value:"adapt"},{label:"全屏",value:"full"},{label:"适应宽度+侧栏",value:"sidebar"}]},{key:"shop_content_show_bg",label:"详情背景盒子",type:"switch",default:!1},{key:"shop_single_tab",label:"自定义 TAB 栏目",type:"textarea",default:"",help:"每行一个 TAB:标题|内容 HTML"},{key:"shop_content_after",label:"详情页底部内容",type:"textarea",default:"",help:"追加在每个商品详情页底部的 HTML 内容"}]},{key:"related",title:"相关推荐",icon:"fas fa-th",fields:[{key:"shop_single_related_s",label:"显示相关推荐",type:"switch",default:!0},{key:"shop_single_related_opt",label:"推荐配置",type:"textarea",default:"",help:"标题|关联类型(cat/discount/tag)|排序|数量|翻页|样式",dependsOn:{key:"shop_single_related_s",value:!0}}]},{key:"image",title:"商品图片",icon:"fas fa-image",fields:[{key:"shop_main_image_default",label:"默认商品主图",type:"media",default:""}]}]},kt={key:"shop.product-defaults",title:"商品默认参数",icon:"fas fa-sliders-h",description:"主题级商品参数默认值,作为「商品→分类→主题设置」参数继承链的根。",defaults:{shop_limit_buy:-1,shop_shipping_fee:"free",shop_guest_buy:!1,shop_email_fill:!1,shop_rebate:!0,shop_after_sale:"refund_return",shop_service:"",shop_product_params_default:""},groups:[{key:"policy",title:"购买策略",icon:"fas fa-shopping-bag",fields:[{key:"shop_limit_buy",label:"默认限购",type:"number",default:-1,min:-1,max:9999,help:"-1 不限,0 禁购,正数为限购数量"},{key:"shop_guest_buy",label:"免登录购买",type:"switch",default:!1},{key:"shop_email_fill",label:"邮箱必留",type:"switch",default:!1},{key:"shop_rebate",label:"允许返佣",type:"switch",default:!0}]},{key:"shipping",title:"运费默认",icon:"fas fa-truck",fields:[{key:"shop_shipping_fee",label:"默认运费类型",type:"select",default:"free",options:[{label:"包邮",value:"free"},{label:"固定运费",value:"fixed"},{label:"按金额计算",value:"amount"}]}]},{key:"afterSale",title:"售后与服务",icon:"fas fa-undo",fields:[{key:"shop_after_sale",label:"默认售后政策",type:"select",default:"refund_return",options:[{label:"仅退款",value:"refund"},{label:"退货退款",value:"refund_return"},{label:"不支持售后",value:"none"}]},{key:"shop_service",label:"服务保障",type:"textarea",default:"",help:"每行一项:名称|说明|图标图片 URL"}]},{key:"params",title:"默认参数模板",icon:"fas fa-list-alt",fields:[{key:"shop_product_params_default",label:"商品参数模板",type:"textarea",default:"",help:"每行一个参数:参数名|参数值,新建商品自动带入"}]}]},vt={key:"shop.shipping-config",title:"物流配置",icon:"fas fa-shipping-fast",description:"快递查询接口、物流公司列表和收货地址设置。",defaults:{shop_manual_address:!1,shop_express_api_sdk:"kuaidi100",shop_express_query_interval:60,shop_express_kdniao_opt:"",shop_express_kuaidi100_opt:"",shop_express_aliyun_opt:"",shop_shipping_company:""},groups:[{key:"address",title:"收货地址",icon:"fas fa-map-marker-alt",fields:[{key:"shop_manual_address",label:"手动填写收货地址",type:"switch",default:!1,help:"开启后用户可手动输入地址而非选择地址簿"}]},{key:"express",title:"快递查询",icon:"fas fa-search",fields:[{key:"shop_express_api_sdk",label:"快递查询接口",type:"select",default:"kuaidi100",options:[{label:"快递100",value:"kuaidi100"},{label:"阿里云",value:"aliyun"},{label:"快递鸟",value:"kdniao"}]},{key:"shop_express_query_interval",label:"查询刷新间隔(分钟)",type:"number",default:60,min:30,max:240}]},{key:"credentials",title:"接口凭据",icon:"fas fa-key",fields:[{key:"shop_express_kdniao_opt",label:"快递鸟凭据",type:"textarea",default:"",help:"AppID|APIKey",dependsOn:{key:"shop_express_api_sdk",value:"kdniao"}},{key:"shop_express_kuaidi100_opt",label:"快递100凭据",type:"textarea",default:"",help:"Key|Customer",dependsOn:{key:"shop_express_api_sdk",value:"kuaidi100"}},{key:"shop_express_aliyun_opt",label:"阿里云凭据",type:"textarea",default:"",help:"AppCode",dependsOn:{key:"shop_express_api_sdk",value:"aliyun"}}]},{key:"companies",title:"物流公司",icon:"fas fa-building",fields:[{key:"shop_shipping_company",label:"物流公司列表",type:"textarea",default:"",help:"每行一个:编码|名称,如 SF|顺丰速运"}]}]},gt={key:"shop.timing",title:"时效与售后原因",icon:"fas fa-clock",description:"确认收货、评价、退货时效和售后原因配置。",defaults:{shop_order_receipt_max_day:15,shop_comment_max_day:7,shop_comment_placeholder:"",shop_comment_img_num:3,shop_after_sale_return_express_max_day:7,shop_after_sale_reason_refund:"",shop_after_sale_reason_return:"",shop_author_show:!0},groups:[{key:"receipt",title:"确认收货",icon:"fas fa-check-circle",fields:[{key:"shop_order_receipt_max_day",label:"自动确认收货(天)",type:"number",default:15,min:1,max:60,help:"发货后超过此天数自动确认收货"}]},{key:"comment",title:"评价时效",icon:"fas fa-star",fields:[{key:"shop_comment_max_day",label:"评价时效(天)",type:"number",default:7,min:1,max:60,help:"确认收货后超过此天数自动好评"},{key:"shop_comment_placeholder",label:"评价占位文案",type:"input",default:""},{key:"shop_comment_img_num",label:"评价图片数",type:"number",default:3,min:0,max:9}]},{key:"afterSale",title:"售后退货",icon:"fas fa-undo-alt",fields:[{key:"shop_after_sale_return_express_max_day",label:"退货快递时效(天)",type:"number",default:7,min:1,max:30},{key:"shop_after_sale_reason_refund",label:"仅退款原因",type:"textarea",default:"",help:"每行一个可选原因"},{key:"shop_after_sale_reason_return",label:"退货退款原因",type:"textarea",default:"",help:"每行一个可选原因"}]},{key:"author",title:"商家信息",icon:"fas fa-user-tie",fields:[{key:"shop_author_show",label:"显示商家信息",type:"switch",default:!0}]}]},wt={basic:bt,list:ft,contact:mt,single:ht,productDefaults:kt,shippingConfig:vt,timing:gt},xt={key:"forum.basic",title:"基础设置",icon:"fas fa-power-off",description:"论坛总开关与管理员配置。",defaults:{bbs_s:!0,bbs_admin_users:[]},groups:[{key:"switch",title:"功能开关",icon:"fas fa-toggle-on",fields:[{key:"bbs_s",label:"启用论坛",type:"switch",default:!0,help:"关闭后论坛页面将返回 404"}]},{key:"admin",title:"论坛管理",icon:"fas fa-user-shield",fields:[{key:"bbs_admin_users",label:"论坛管理员",type:"user_select",multiple:!0,default:[],help:"拥有跨版块全部治理权限,绕过 ban"}]}]},Ot={key:"forum.names",title:"名称定义",icon:"fas fa-language",description:"自定义论坛各实体的显示名称(12 词条)。",defaults:{bbs_forum_display_name:"论坛",bbs_plate_display_name:"版块",bbs_posts_display_name:"帖子",bbs_topic_display_name:"话题",bbs_tag_display_name:"标签",bbs_comment_display_name:"回复",bbs_question_badge_name:"提问",bbs_question_ok_badge_name:"已解决",bbs_cat_moderator_name:"分区版主",bbs_plate_author_name:"超级版主",bbs_plate_moderator_name:"版主",bbs_plate_follow_name:"关注"},groups:[{key:"display_names",title:"名词自定义",icon:"fas fa-tags",fields:[{key:"bbs_forum_display_name",label:"论坛",type:"input",default:"论坛"},{key:"bbs_plate_display_name",label:"版块",type:"input",default:"版块"},{key:"bbs_posts_display_name",label:"帖子",type:"input",default:"帖子"},{key:"bbs_topic_display_name",label:"话题",type:"input",default:"话题"},{key:"bbs_tag_display_name",label:"标签",type:"input",default:"标签"},{key:"bbs_comment_display_name",label:"回复",type:"input",default:"回复"},{key:"bbs_question_badge_name",label:"提问徽章",type:"input",default:"提问"},{key:"bbs_question_ok_badge_name",label:"已解决徽章",type:"input",default:"已解决"},{key:"bbs_cat_moderator_name",label:"分区版主",type:"input",default:"分区版主"},{key:"bbs_plate_author_name",label:"超级版主",type:"input",default:"超级版主"},{key:"bbs_plate_moderator_name",label:"版主",type:"input",default:"版主"},{key:"bbs_plate_follow_name",label:"关注",type:"input",default:"关注"}]}]},St={key:"forum.homepage",title:"首页设置",icon:"fas fa-home",description:"论坛首页 Tab 引擎、快速发帖入口和移动端交互配置。",defaults:{bbs_home_tab:[{type:"follow",label:"关注"},{type:"synthesis",label:"综合"},{type:"plate",label:"版块"}],bbs_home_tab_active_index:1,bbs_home_tab_quick_posts_s:!0,bbs_home_tab_swiper:!0},groups:[{key:"tabs",title:"首页 Tab",icon:"fas fa-columns",fields:[{key:"bbs_home_tab",label:"首页栏目",type:"group",default:[{type:"follow",label:"关注"},{type:"synthesis",label:"综合"},{type:"plate",label:"版块"}],help:"可拖拽排序,支持 follow / synthesis / plate / tabs 类型"},{key:"bbs_home_tab_active_index",label:"默认选中 Tab",type:"number",default:1,min:0},{key:"bbs_home_tab_quick_posts_s",label:"快速发帖",type:"switch",default:!0,help:"首页顶部显示快速发帖入口"},{key:"bbs_home_tab_swiper",label:"移动端滑动切换",type:"switch",default:!0}]}]},zt={key:"forum.board_page",title:"版块页面",icon:"fas fa-th-large",description:"版块页布局、Tab 栏目和移动端交互配置。",defaults:{bbs_plate_top_info_s:!0,bbs_plate_tab:[{label:"全部",sort:"date"},{label:"推荐",sort:"featured"},{label:"最新回复",sort:"last_reply"},{label:"热门",sort:"hot"},{label:"精华",sort:"essence"}],bbs_plate_tab_active_index:0,bbs_plate_tab_swiper:!0},groups:[{key:"layout",title:"版块页布局",icon:"fas fa-layer-group",fields:[{key:"bbs_plate_top_info_s",label:"版块信息卡",type:"switch",default:!0,help:"版块页顶部显示版块详情卡片"},{key:"bbs_plate_tab",label:"版块栏目",type:"group",default:[{label:"全部",sort:"date"},{label:"推荐",sort:"featured"},{label:"最新回复",sort:"last_reply"},{label:"热门",sort:"hot"},{label:"精华",sort:"essence"}]},{key:"bbs_plate_tab_active_index",label:"默认选中 Tab",type:"number",default:0,min:0},{key:"bbs_plate_tab_swiper",label:"移动端滑动切换",type:"switch",default:!0}]}]},At={key:"forum.post_page",title:"帖子页面",icon:"fas fa-file-alt",description:"帖子页面包屑、评分、高度限制、封面比例和视频静音配置。",defaults:{bbs_breadcrumbs_s:!0,bbs_breadcrumbs_home:!0,bbs_breadcrumbs_bbs_home:!0,bbs_breadcrumbs_bbs_home_name:"论坛",bbs_breadcrumbs_plate_cat:!0,bbs_score_extra_max:5,bbs_score_deduct_max:3,bbs_posts_maxheight_s:!1,bbs_posts_maxheight:800,bbs_posts_cover_ratio:"16:9",bbs_posts_cover_video_mute:!0},groups:[{key:"breadcrumbs",title:"面包屑",icon:"fas fa-angle-double-right",fields:[{key:"bbs_breadcrumbs_s",label:"显示面包屑",type:"switch",default:!0},{key:"bbs_breadcrumbs_home",label:"显示首页",type:"switch",default:!0,dependsOn:{key:"bbs_breadcrumbs_s",value:!0}},{key:"bbs_breadcrumbs_bbs_home",label:"显示论坛首页",type:"switch",default:!0,dependsOn:{key:"bbs_breadcrumbs_s",value:!0}},{key:"bbs_breadcrumbs_bbs_home_name",label:"论坛首页名称",type:"input",default:"论坛",dependsOn:{key:"bbs_breadcrumbs_bbs_home",value:!0}},{key:"bbs_breadcrumbs_plate_cat",label:"显示分区",type:"switch",default:!0,dependsOn:{key:"bbs_breadcrumbs_s",value:!0}}]},{key:"score",title:"评分设置",icon:"fas fa-star",fields:[{key:"bbs_score_extra_max",label:"加分上限",type:"number",default:5,min:1,max:50},{key:"bbs_score_deduct_max",label:"扣分上限",type:"number",default:3,min:1,max:50}]},{key:"display",title:"内容显示",icon:"fas fa-expand-arrows-alt",fields:[{key:"bbs_posts_maxheight_s",label:"内容高度限制",type:"switch",default:!1},{key:"bbs_posts_maxheight",label:"最大高度 (px)",type:"number",default:800,min:300,max:3e3,dependsOn:{key:"bbs_posts_maxheight_s",value:!0}}]},{key:"cover",title:"封面设置",icon:"fas fa-image",fields:[{key:"bbs_posts_cover_ratio",label:"封面比例",type:"select",default:"16:9",options:[{label:"16:9",value:"16:9"},{label:"4:3",value:"4:3"},{label:"1:1",value:"1:1"},{label:"3:4",value:"3:4"}]},{key:"bbs_posts_cover_video_mute",label:"视频封面静音",type:"switch",default:!0}]}]},Vt={key:"forum.reply",title:"回复评论",icon:"fas fa-reply-all",description:"回复翻页、工具栏功能、表情、代码和快捷回复配置。",defaults:{bbs_reply_paginate_type:"ajax",bbs_reply_paginate_ias_s:!0,bbs_reply_paginate_ias_max:3,bbs_comment_smilie:!0,bbs_comment_code:!0,bbs_comment_img:!0,bbs_comment_upload_img:!0,bbs_comment_quick_s:!0,bbs_comment_quick_often:`不错,学习了 +感谢分享 +期待更新`,bbs_comment_placeholder:"写下你的回复…"},groups:[{key:"paginate",title:"翻页",icon:"fas fa-chevron-circle-right",fields:[{key:"bbs_reply_paginate_type",label:"翻页方式",type:"select",default:"ajax",options:[{label:"AJAX 加载",value:"ajax"},{label:"传统翻页",value:"page"}]},{key:"bbs_reply_paginate_ias_s",label:"无限滚动",type:"switch",default:!0},{key:"bbs_reply_paginate_ias_max",label:"自动加载页数",type:"number",default:3,min:0,max:10,dependsOn:{key:"bbs_reply_paginate_ias_s",value:!0}}]},{key:"toolbar",title:"回复工具栏",icon:"fas fa-toolbox",fields:[{key:"bbs_comment_smilie",label:"表情",type:"switch",default:!0},{key:"bbs_comment_code",label:"代码",type:"switch",default:!0},{key:"bbs_comment_img",label:"插图",type:"switch",default:!0},{key:"bbs_comment_upload_img",label:"上传图片",type:"switch",default:!0},{key:"bbs_comment_quick_s",label:"快捷回复",type:"switch",default:!0},{key:"bbs_comment_quick_often",label:"预设短语",type:"textarea",default:`不错,学习了 +感谢分享 +期待更新`,help:"每行一条",dependsOn:{key:"bbs_comment_quick_s",value:!0}},{key:"bbs_comment_placeholder",label:"回复占位符",type:"input",default:"写下你的回复…"}]}]},It={key:"forum.permissions",title:"权限配置",icon:"fas fa-lock",description:"发帖限制、按钮显示、帖子付费和版块付费关注配置。",defaults:{bbs_posts_add_limit_opt_max:10,bbs_plate_add_limit_opt_max:3,bbs_show_new_plate:!0,bbs_show_new_topic:!0,bbs_show_apply_moderator:!0,bbs_post_pay_hide_type_s:!0,bbs_post_pay_vip_price_s:!0,bbs_post_pay_vip_1_discount:80,bbs_post_pay_vip_2_discount:50,bbs_post_pay_price_limit:1e3,bbs_plate_follow_pay_s:!1,bbs_plate_follow_pay_price:10,bbs_plate_follow_pay_type:"money"},groups:[{key:"posting",title:"发帖限制",icon:"fas fa-ban",fields:[{key:"bbs_posts_add_limit_opt_max",label:"每日发帖上限",type:"number",default:10,min:0,help:"0 = 不限"},{key:"bbs_plate_add_limit_opt_max",label:"建版数量上限",type:"number",default:3,min:0}]},{key:"display_btns",title:"按钮显示",icon:"fas fa-eye",fields:[{key:"bbs_show_new_plate",label:"始终显示建版按钮",type:"switch",default:!0},{key:"bbs_show_new_topic",label:"始终显示发帖按钮",type:"switch",default:!0},{key:"bbs_show_apply_moderator",label:"始终显示申请版主",type:"switch",default:!0}]},{key:"paid_content",title:"帖子付费",icon:"fas fa-money-bill-wave",fields:[{key:"bbs_post_pay_hide_type_s",label:"启用付费内容",type:"switch",default:!0},{key:"bbs_post_pay_vip_price_s",label:"VIP 特价",type:"switch",default:!0,dependsOn:{key:"bbs_post_pay_hide_type_s",value:!0}},{key:"bbs_post_pay_vip_1_discount",label:"一级 VIP 折扣 (%)",type:"number",default:80,min:0,max:100,dependsOn:{key:"bbs_post_pay_vip_price_s",value:!0}},{key:"bbs_post_pay_vip_2_discount",label:"二级 VIP 折扣 (%)",type:"number",default:50,min:0,max:100,dependsOn:{key:"bbs_post_pay_vip_price_s",value:!0}},{key:"bbs_post_pay_price_limit",label:"最高定价",type:"number",default:1e3,min:1,dependsOn:{key:"bbs_post_pay_hide_type_s",value:!0}}]},{key:"plate_follow",title:"版块付费关注",icon:"fas fa-heart",fields:[{key:"bbs_plate_follow_pay_s",label:"启用付费关注",type:"switch",default:!1},{key:"bbs_plate_follow_pay_price",label:"关注价格",type:"number",default:10,min:0,dependsOn:{key:"bbs_plate_follow_pay_s",value:!0}},{key:"bbs_plate_follow_pay_type",label:"支付方式",type:"select",default:"money",options:[{label:"现金",value:"money"},{label:"积分",value:"points"}],dependsOn:{key:"bbs_plate_follow_pay_s",value:!0}}]}]},qt={key:"forum.other",title:"其它设置",icon:"fas fa-cog",description:"投票、版主申请说明、标题字数限制和 URL 别名配置。",defaults:{bbs_vote_number_type:"percent",bbs_vote_max:8,bbs_apply_moderator_desc:"欢迎有热情的用户申请成为版主,协助管理社区秩序。",bbs_term_thumb:"",bbs_post_lists_hide_pay_s:!1,bbs_post_title_strlen_limit:30,bbs_t_placeholder:"请输入标题",bbs_c_placeholder:"请输入内容",bbs_rewrite_suffix_html_s:!0,bbs_plate_rewrite_slug:"board",bbs_posts_rewrite_slug:"topic",bbs_posts_edit_rewrite_slug:"topic-edit",bbs_posts_show_in_rest_s:!1},groups:[{key:"vote",title:"投票",icon:"fas fa-poll",fields:[{key:"bbs_vote_number_type",label:"投票显示",type:"select",default:"percent",options:[{label:"百分比",value:"percent"},{label:"票数",value:"number"}]},{key:"bbs_vote_max",label:"选项上限",type:"number",default:8,min:2,max:20}]},{key:"moderator_apply",title:"版主申请",icon:"fas fa-user-plus",fields:[{key:"bbs_apply_moderator_desc",label:"申请说明",type:"textarea",default:"欢迎有热情的用户申请成为版主,协助管理社区秩序。"}]},{key:"misc",title:"杂项",icon:"fas fa-sliders-h",fields:[{key:"bbs_term_thumb",label:"标签默认缩略图",type:"media",default:""},{key:"bbs_post_lists_hide_pay_s",label:"列表隐藏付费标记",type:"switch",default:!1},{key:"bbs_post_title_strlen_limit",label:"标题字数限制",type:"number",default:30,min:5,max:100,help:"最小 5,最大 100"},{key:"bbs_t_placeholder",label:"标题占位符",type:"input",default:"请输入标题"},{key:"bbs_c_placeholder",label:"内容占位符",type:"input",default:"请输入内容"}]},{key:"url",title:"URL / 别名",icon:"fas fa-link",fields:[{key:"bbs_rewrite_suffix_html_s",label:".html 后缀",type:"switch",default:!0},{key:"bbs_plate_rewrite_slug",label:"版块别名",type:"input",default:"board"},{key:"bbs_posts_rewrite_slug",label:"帖子别名",type:"input",default:"topic"},{key:"bbs_posts_edit_rewrite_slug",label:"编辑别名",type:"input",default:"topic-edit"},{key:"bbs_posts_show_in_rest_s",label:"古腾堡编辑器",type:"switch",default:!1,help:"开启后帖子可使用 Gutenberg"}]}]},jt={key:"forum.upload",title:"上传权限",icon:"fas fa-cloud-upload-alt",description:"论坛帖子图片、视频和文件的上传大小与格式限制。",defaults:{bbs_upload_img_size:2048,bbs_image_upload_multiple:9,bbs_upload_video_size:20480,bbs_upload_file_size:10240,bbs_upload_file_mimes:"jpg,jpeg,png,gif,mp4,zip,rar,pdf"},groups:[{key:"limits",title:"上传限制",icon:"fas fa-weight-hanging",fields:[{key:"bbs_upload_img_size",label:"图片大小 (KB)",type:"number",default:2048,min:100},{key:"bbs_image_upload_multiple",label:"批量上传数",type:"number",default:9,min:1,max:20},{key:"bbs_upload_video_size",label:"视频大小 (KB)",type:"number",default:20480,min:1024},{key:"bbs_upload_file_size",label:"文件大小 (KB)",type:"number",default:10240,min:100},{key:"bbs_upload_file_mimes",label:"允许格式",type:"input",default:"jpg,jpeg,png,gif,mp4,zip,rar,pdf",help:"逗号分隔"}]}]},Pt={key:"forum.credits",title:"积分设置",icon:"fas fa-coins",description:"论坛行为积分奖励矩阵和每日积分上限。",defaults:{bbs_credits_post_new:5,bbs_credits_plate_new:10,bbs_credits_comment_new:2,bbs_credits_comment_like:1,bbs_credits_score_extra:3,bbs_credits_essence:10,bbs_credits_posts_hot:5,bbs_credits_adopted:20,bbs_credits_daily_max:50},groups:[{key:"earn",title:"积分奖励",icon:"fas fa-gift",fields:[{key:"bbs_credits_post_new",label:"发帖奖励",type:"number",default:5,min:0},{key:"bbs_credits_plate_new",label:"建版奖励",type:"number",default:10,min:0},{key:"bbs_credits_comment_new",label:"回复奖励",type:"number",default:2,min:0},{key:"bbs_credits_comment_like",label:"评论被赞",type:"number",default:1,min:0},{key:"bbs_credits_score_extra",label:"被加分",type:"number",default:3,min:0},{key:"bbs_credits_essence",label:"被设精华",type:"number",default:10,min:0},{key:"bbs_credits_posts_hot",label:"成为热帖",type:"number",default:5,min:0},{key:"bbs_credits_adopted",label:"被采纳",type:"number",default:20,min:0},{key:"bbs_credits_daily_max",label:"每日积分上限",type:"number",default:50,min:0,help:"0 = 不限"}]}]},Ct={basic:xt,names:Ot,homepage:St,board_page:zt,post_page:At,reply:Vt,permissions:It,other:qt,upload:jt,credits:Pt};function Lt(e=""){const z=String(e).trim();return z?z.replace(/-/g,"_"):"global"}const Tt=Object.freeze({global:xl,page_display:Ol,post_list:Ll,permissions:Tl,users:Xl,payment:st,extensions:dt,tools:ct,shop:wt,forum:Ct});function Kt(e,z){const s=Tt[Lt(e)];return s&&s[z]||null}export{Gt as A,Kt as g,Lt as n,Rt as u}; diff --git a/assets/admin/build/shared-api.D5_fnN32.js b/assets/admin/build/shared-api.D5_fnN32.js new file mode 100644 index 00000000..dd4615e0 --- /dev/null +++ b/assets/admin/build/shared-api.D5_fnN32.js @@ -0,0 +1 @@ +const q={getMailSettings(){return this.request("/settings/mail")},saveMailSettings(e){return this.request("/settings/mail",{method:"POST",body:JSON.stringify(e)})},testMail(e){return this.request("/mail/test",{method:"POST",body:JSON.stringify({to:e})})},getFooterSettings(){return this.request("/settings/footer")},saveFooterSettings(e){return this.request("/settings/footer",{method:"POST",body:JSON.stringify(e)})},getFooterTabbarSettings(){return this.request("/settings/footer-tabbar")},saveFooterTabbarSettings(e){return this.request("/settings/footer-tabbar",{method:"POST",body:JSON.stringify(e)})},reorderFooterTabbar(e){return this.request("/settings/footer-tabbar/reorder",{method:"POST",body:JSON.stringify({ids:e})})},getFloatingButtons(){return this.request("/settings/floating-buttons")},saveFloatingButtons(e){return this.request("/settings/floating-buttons",{method:"POST",body:JSON.stringify(e)})},reorderFloatingButtons(e){return this.request("/settings/floating-buttons/reorder",{method:"POST",body:JSON.stringify({ids:e})})},getFriendLinks(){return this.request("/friend-links")},addFriendLink(e){return this.request("/friend-links",{method:"POST",body:JSON.stringify(e)})},deleteFriendLink(e){return this.request(`/friend-links/${e}`,{method:"DELETE"})},reorderFriendLinks(e){return this.request("/friend-links/reorder",{method:"POST",body:JSON.stringify({ids:e})})},getCmsFeatures(){return this.request("/settings/cms-features")},saveCmsFeatures(e){return this.request("/settings/cms-features",{method:"POST",body:JSON.stringify({cms_features:e})})}},O={getHomepageSettings(){return this.request("/settings/homepage")},saveHomepageSettings(e){return this.request("/settings/homepage",{method:"POST",body:JSON.stringify(e)})},getHomepageCategories(){return this.request("/homepage/categories")},getCategoryRecommendSettings(){return this.request("/settings/category-recommend")},saveCategoryRecommendSettings(e){return this.request("/settings/category-recommend",{method:"POST",body:JSON.stringify(e)})},getCategories(){return this.request("/categories")},updateCategoryMeta(e,t){return this.request(`/categories/${e}/meta`,{method:"POST",body:JSON.stringify(t)})},searchUsers(e="",t=20){return this.request(`/users/search?search=${encodeURIComponent(e)}&number=${t}`)},getBanners(e="hero"){return this.request(`/banners?kind=${encodeURIComponent(e)}`)},createBanner(e){return this.request("/banners",{method:"POST",body:JSON.stringify(e)})},updateBanner(e,t){return this.request(`/banners/${e}`,{method:"PUT",body:JSON.stringify(t)})},deleteBanner(e){return this.request(`/banners/${e}`,{method:"DELETE"})},getHeroes(){return this.getBanners("hero")},createHero(e){return this.createBanner({...e,kind:"hero"})},updateHero(e,t){return this.updateBanner(e,{...t,kind:"hero"})},deleteHero(e){return this.deleteBanner(e)},getHomepageBanners(){return this.getBanners("banner")},createHomepageBanner(e){return this.createBanner({...e,kind:"banner"})},updateHomepageBanner(e,t){return this.updateBanner(e,{...t,kind:"banner"})},deleteHomepageBanner(e){return this.deleteBanner(e)}},P={getPermissionsAttachmentSettings(){return this.getSchemaPage("permissions","attachment")},savePermissionsAttachmentSettings(e){return this.saveSchemaPage("permissions","attachment",e)},getPermissionsLoginSettings(){return this.getSchemaPage("permissions","login")},savePermissionsLoginSettings(e){return this.saveSchemaPage("permissions","login",e)},getPermissionsModerationSettings(){return this.getSchemaPage("permissions","moderation")},savePermissionsModerationSettings(e){return this.saveSchemaPage("permissions","moderation",e)},getCapabilities(){return this.request("/permissions/capabilities")},saveCapabilities(e){return this.request("/permissions/capabilities",{method:"POST",body:JSON.stringify({user_caps:e})})}},T={getAuthSettings(){return this.request("/settings/auth")},saveAuthSettings(e){return this.request("/settings/auth",{method:"POST",body:JSON.stringify(e)})},getOAuthSettings(){return this.request("/settings/oauth")},saveOAuthSettings(e){return this.request("/settings/oauth",{method:"POST",body:JSON.stringify(e)})},getNotificationSettings(){return this.request("/settings/notifications")},saveNotificationSettings(e){return this.request("/settings/notifications",{method:"POST",body:JSON.stringify(e)})},getNotificationOverview(e={}){const t=new URLSearchParams(e).toString();return this.request("/notifications/overview"+(t?`?${t}`:""))},markNotificationRead(e){return this.request("/notifications/mark-read",{method:"POST",body:JSON.stringify({id:e})})},markAllNotificationsRead(){return this.request("/notifications/mark-read",{method:"POST",body:JSON.stringify({mark_all:!0})})},deleteNotification(e){return this.request(`/notifications/${e}`,{method:"DELETE"})},runNotificationCleanup(){return this.request("/notifications/cleanup",{method:"POST",body:JSON.stringify({})})},getCreditSettings(){return this.request("/credits/settings")},saveCreditSettings(e){return this.request("/credits/settings",{method:"POST",body:JSON.stringify(e)})},listCreditUsers(e={}){const t=new URLSearchParams(e).toString();return this.request("/credits/users"+(t?`?${t}`:""))},adjustUserCredits(e,t,n){return this.request(`/credits/users/${e}/adjust`,{method:"POST",body:JSON.stringify({delta:t,reason:n})})},getCreditLog(e={}){const t=new URLSearchParams(e).toString();return this.request("/credits/log"+(t?`?${t}`:""))}},N={getPaymentOverview(){return this.request("/payment/overview")}},k={testIpGeo(e){return this.request("/extensions/ip-test",{method:"POST",data:{ip:e}})},testContentAudit(e){return this.request("/extensions/audit-test",{method:"POST",data:{text:e}})},getAiStatus(){return this.request("/ai/status")},updateAiSettings(e){return this.request("/ai/settings",{method:"POST",data:e})},generateSeo(e){return this.request("/ai/seo-generate",{method:"POST",data:e})},suggestSummary(e){return this.request("/ai/summary-suggest",{method:"POST",data:e})},suggestTags(e){return this.request("/ai/tags-suggest",{method:"POST",data:e})}},v={getHealthEmailVerification(){return this.request("/health/email-verification")},getUpdateInfo(){return this.request("/tools/update-info")},detectUpdate(){return this.request("/tools/update-check",{method:"POST",body:JSON.stringify({})})},dismissUpdate(e){return this.request("/tools/update-dismiss",{method:"POST",body:JSON.stringify({version:e})})},getEmailRollbackUsers(){return this.request("/email-rollback/users")},executeEmailRollback(e){return this.request(`/email-rollback/users/${e}/rollback`,{method:"POST"})},exportSettings(){return this.request("/settings/export")},importSettings(e){return this.request("/settings/import",{method:"POST",body:JSON.stringify(e)})},listSettingBackups(){return this.request("/settings/backups")},createSettingBackup(e={}){return this.request("/settings/backups",{method:"POST",body:JSON.stringify(e)})},restoreSettingBackup(e){return this.request(`/settings/backups/${e}/restore`,{method:"POST"})},deleteSettingBackup(e){return this.request(`/settings/backups/${e}`,{method:"DELETE"})},resetDomain(e){return this.request(`/settings/reset/${e}`,{method:"POST"})},resetAllSettings(){return this.request("/settings/reset-all",{method:"POST"})},getHealthCheck(){return this.request("/settings/health")}},J={getSchema(e){return this.request(`/settings/schema/${e}`)},getSchemaPage(e,t){return this.request(`/settings/schema/${this.normalizeDomainKey(e)}/${encodeURIComponent(t)}`)},saveSchemaPage(e,t,n,r="1.0.0"){return this.request(`/settings/schema/${this.normalizeDomainKey(e)}/${encodeURIComponent(t)}`,{method:"POST",body:JSON.stringify({domain:this.normalizeDomainKey(e),section:t,data:n,version:r})})}},$={...q,...O,...P,...T,...N,...k,...v,...J};var p;const A=((p=window.aksrtAdminData)==null?void 0:p.apiUrl)||"/wp-json/aksrt/v1";var f;const w=((f=window.aksrtAdminData)==null?void 0:f.nonce)||"";function B(e){return String(e||"global").trim().replace(/-/g,"_")}class b{constructor(){this.baseUrl=A}normalizeDomainKey(t){return B(t)}async request(t,n={}){var l;let r,h,d,o,a,i;if(typeof t=="object"&&t!==null){const s=t;r=s.url||s.endpoint||"",h=s.method||"GET",o=s.params,a=s.data,d=s.headers,i={...s},delete i.url,delete i.endpoint,delete i.method,delete i.params,delete i.data,delete i.headers}else r=t,h=n.method||"GET",o=n.params,a=n.body!==void 0?n.body:n.data,d=n.headers,i={...n},delete i.method,delete i.params,delete i.body,delete i.data,delete i.headers;r.startsWith("/wp-json/aksrt/v1")?r=r.replace("/wp-json/aksrt/v1","")||"/":r.startsWith("/aksrt/v1")&&(r=r.replace("/aksrt/v1","")||"/");let g=`${this.baseUrl}${r}`;if(o&&typeof o=="object"){const s=new URLSearchParams(o).toString();s&&(g+=(g.includes("?")?"&":"?")+s)}let m=a;a!==void 0&&typeof a=="object"&&!(a instanceof FormData)&&(m=JSON.stringify(a));const S={method:h,headers:{"Content-Type":"application/json","X-WP-Nonce":w,...d},...i};m!==void 0&&h!=="GET"&&(S.body=m);try{const s=await fetch(g,S),c=await s.text();let u={};try{u=c?JSON.parse(c):{}}catch{throw new Error(`REST 返回非 JSON,endpoint=${r},status=${s.status},body=${c.slice(0,160)}`)}if(!s.ok||u.success===!1){const y=u.message||((l=u.data)==null?void 0:l.message)||`HTTP ${s.status}`;throw(s.status===403||s.status===401)&&console.warn(`[API Auth] ${r}: ${y} — 可能需要刷新页面重新登录`),new Error(y)}return u}catch(s){throw console.error(`[API Error] ${r}:`,s),s}}}Object.assign(b.prototype,$);const E=new b;export{E as a}; diff --git a/assets/admin/build/vendor-draggable.CceJcfGJ.js b/assets/admin/build/vendor-draggable.CceJcfGJ.js new file mode 100644 index 00000000..3f523708 --- /dev/null +++ b/assets/admin/build/vendor-draggable.CceJcfGJ.js @@ -0,0 +1,10 @@ +import{S as Kr,U as Br,V as Hr}from"./vendor-vue.Bykizn0M.js";var we={exports:{}};/**! + * Sortable 1.14.0 + * @author RubaXa + * @author owenm + * @license MIT + */function gr(l,r){var n=Object.keys(l);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(l);r&&(i=i.filter(function(e){return Object.getOwnPropertyDescriptor(l,e).enumerable})),n.push.apply(n,i)}return n}function Bt(l){for(var r=1;r=0)&&(n[e]=l[e]);return n}function Vr(l,r){if(l==null)return{};var n=Xr(l,r),i,e;if(Object.getOwnPropertySymbols){var f=Object.getOwnPropertySymbols(l);for(e=0;e=0)&&Object.prototype.propertyIsEnumerable.call(l,i)&&(n[i]=l[i])}return n}function Yr(l){return zr(l)||Jr(l)||Qr(l)||Zr()}function zr(l){if(Array.isArray(l))return lr(l)}function Jr(l){if(typeof Symbol<"u"&&l[Symbol.iterator]!=null||l["@@iterator"]!=null)return Array.from(l)}function Qr(l,r){if(l){if(typeof l=="string")return lr(l,r);var n=Object.prototype.toString.call(l).slice(8,-1);if(n==="Object"&&l.constructor&&(n=l.constructor.name),n==="Map"||n==="Set")return Array.from(l);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return lr(l,r)}}function lr(l,r){(r==null||r>l.length)&&(r=l.length);for(var n=0,i=new Array(r);n"&&(r=r.substring(1)),l)try{if(l.matches)return l.matches(r);if(l.msMatchesSelector)return l.msMatchesSelector(r);if(l.webkitMatchesSelector)return l.webkitMatchesSelector(r)}catch{return!1}return!1}}function _r(l){return l.host&&l!==document&&l.host.nodeType?l.host:l.parentNode}function wt(l,r,n,i){if(l){n=n||document;do{if(r!=null&&(r[0]===">"?l.parentNode===n&&We(l,r):We(l,r))||i&&l===n)return l;if(l===n)break}while(l=_r(l))}return null}var yr=/\s+/g;function lt(l,r,n){if(l&&r)if(l.classList)l.classList[n?"add":"remove"](r);else{var i=(" "+l.className+" ").replace(yr," ").replace(" "+r+" "," ");l.className=(i+(n?" "+r:"")).replace(yr," ")}}function L(l,r,n){var i=l&&l.style;if(i){if(n===void 0)return document.defaultView&&document.defaultView.getComputedStyle?n=document.defaultView.getComputedStyle(l,""):l.currentStyle&&(n=l.currentStyle),r===void 0?n:n[r];!(r in i)&&r.indexOf("webkit")===-1&&(r="-webkit-"+r),i[r]=n+(typeof n=="string"?"":"px")}}function ee(l,r){var n="";if(typeof l=="string")n=l;else do{var i=L(l,"transform");i&&i!=="none"&&(n=i+" "+n)}while(!r&&(l=l.parentNode));var e=window.DOMMatrix||window.WebKitCSSMatrix||window.CSSMatrix||window.MSCSSMatrix;return e&&new e(n)}function Rr(l,r,n){if(l){var i=l.getElementsByTagName(r),e=0,f=i.length;if(n)for(;e=f,!t)return i;if(i===Kt())break;i=Qt(i,!1)}return!1}function se(l,r,n,i){for(var e=0,f=0,t=l.children;f2&&arguments[2]!==void 0?arguments[2]:{},e=i.evt,f=Vr(i,ln);Ce.pluginEvent.bind(B)(r,n,Bt({dragEl:A,parentEl:ut,ghostEl:z,rootEl:ot,nextEl:te,lastDownEl:Ge,cloneEl:ct,cloneHidden:Jt,dragStarted:Se,putSortable:Et,activeSortable:B.active,originalEvent:e,oldIndex:le,oldDraggableIndex:Te,newIndex:$t,newDraggableIndex:zt,hideGhostForTarget:Lr,unhideGhostForTarget:wr,cloneNowHidden:function(){Jt=!0},cloneNowShown:function(){Jt=!1},dispatchSortableEvent:function(o){It({sortable:n,name:o,originalEvent:e})}},f))};function It(l){ye(Bt({putSortable:Et,cloneEl:ct,targetEl:A,rootEl:ot,oldIndex:le,oldDraggableIndex:Te,newIndex:$t,newDraggableIndex:zt},l))}var A,ut,z,ot,te,Ge,ct,Jt,le,$t,Te,zt,$e,Et,ie=!1,Xe=!1,Ve=[],qt,Ft,tr,er,xr,Or,Se,oe,Ie,Pe=!1,Ne=!1,Ke,xt,rr=[],sr=!1,Ye=[],Je=typeof document<"u",Me=Cr,Tr=De||Wt?"cssFloat":"float",sn=Je&&!qr&&!Cr&&"draggable"in document.createElement("div"),Mr=(function(){if(Je){if(Wt)return!1;var l=document.createElement("x");return l.style.cssText="pointer-events:auto",l.style.pointerEvents==="auto"}})(),jr=function(r,n){var i=L(r),e=parseInt(i.width)-parseInt(i.paddingLeft)-parseInt(i.paddingRight)-parseInt(i.borderLeftWidth)-parseInt(i.borderRightWidth),f=se(r,0,n),t=se(r,1,n),o=f&&L(f),a=t&&L(t),s=o&&parseInt(o.marginLeft)+parseInt(o.marginRight)+at(f).width,c=a&&parseInt(a.marginLeft)+parseInt(a.marginRight)+at(t).width;if(i.display==="flex")return i.flexDirection==="column"||i.flexDirection==="column-reverse"?"vertical":"horizontal";if(i.display==="grid")return i.gridTemplateColumns.split(" ").length<=1?"vertical":"horizontal";if(f&&o.float&&o.float!=="none"){var u=o.float==="left"?"left":"right";return t&&(a.clear==="both"||a.clear===u)?"vertical":"horizontal"}return f&&(o.display==="block"||o.display==="flex"||o.display==="table"||o.display==="grid"||s>=e&&i[Tr]==="none"||t&&i[Tr]==="none"&&s+c>e)?"vertical":"horizontal"},fn=function(r,n,i){var e=i?r.left:r.top,f=i?r.right:r.bottom,t=i?r.width:r.height,o=i?n.left:n.top,a=i?n.right:n.bottom,s=i?n.width:n.height;return e===o||f===a||e+t/2===o+s/2},un=function(r,n){var i;return Ve.some(function(e){var f=e[Ot].options.emptyInsertThreshold;if(!(!f||dr(e))){var t=at(e),o=r>=t.left-f&&r<=t.right+f,a=n>=t.top-f&&n<=t.bottom+f;if(o&&a)return i=e}}),i},Fr=function(r){function n(f,t){return function(o,a,s,c){var u=o.options.group.name&&a.options.group.name&&o.options.group.name===a.options.group.name;if(f==null&&(t||u))return!0;if(f==null||f===!1)return!1;if(t&&f==="clone")return f;if(typeof f=="function")return n(f(o,a,s,c),t)(o,a,s,c);var d=(t?o:a).options.group.name;return f===!0||typeof f=="string"&&f===d||f.join&&f.indexOf(d)>-1}}var i={},e=r.group;(!e||Ue(e)!="object")&&(e={name:e}),i.name=e.name,i.checkPull=n(e.pull,!0),i.checkPut=n(e.put),i.revertClone=e.revertClone,r.group=i},Lr=function(){!Mr&&z&&L(z,"display","none")},wr=function(){!Mr&&z&&L(z,"display","")};Je&&document.addEventListener("click",function(l){if(Xe)return l.preventDefault(),l.stopPropagation&&l.stopPropagation(),l.stopImmediatePropagation&&l.stopImmediatePropagation(),Xe=!1,!1},!0);var _t=function(r){if(A){r=r.touches?r.touches[0]:r;var n=un(r.clientX,r.clientY);if(n){var i={};for(var e in r)r.hasOwnProperty(e)&&(i[e]=r[e]);i.target=i.rootEl=n,i.preventDefault=void 0,i.stopPropagation=void 0,n[Ot]._onDragOver(i)}}},cn=function(r){A&&A.parentNode[Ot]._isOutsideThisEl(r.target)};function B(l,r){if(!(l&&l.nodeType&&l.nodeType===1))throw"Sortable: `el` must be an HTMLElement, not ".concat({}.toString.call(l));this.el=l,this.options=r=Mt({},r),l[Ot]=this;var n={group:null,sort:!0,disabled:!1,store:null,handle:null,draggable:/^[uo]l$/i.test(l.nodeName)?">li":">*",swapThreshold:1,invertSwap:!1,invertedSwapThreshold:null,removeCloneOnHide:!0,direction:function(){return jr(l,this.options)},ghostClass:"sortable-ghost",chosenClass:"sortable-chosen",dragClass:"sortable-drag",ignore:"a, img",filter:null,preventOnFilter:!0,animation:0,easing:null,setData:function(t,o){t.setData("Text",o.textContent)},dropBubble:!1,dragoverBubble:!1,dataIdAttr:"data-id",delay:0,delayOnTouchOnly:!1,touchStartThreshold:(Number.parseInt?Number:window).parseInt(window.devicePixelRatio,10)||1,forceFallback:!1,fallbackClass:"sortable-fallback",fallbackOnBody:!1,fallbackTolerance:0,fallbackOffset:{x:0,y:0},supportPointer:B.supportPointer!==!1&&"PointerEvent"in window&&!xe,emptyInsertThreshold:5};Ce.initializePlugins(this,l,n);for(var i in n)!(i in r)&&(r[i]=n[i]);Fr(r);for(var e in this)e.charAt(0)==="_"&&typeof this[e]=="function"&&(this[e]=this[e].bind(this));this.nativeDraggable=r.forceFallback?!1:sn,this.nativeDraggable&&(this.options.touchStartThreshold=1),r.supportPointer?Z(l,"pointerdown",this._onTapStart):(Z(l,"mousedown",this._onTapStart),Z(l,"touchstart",this._onTapStart)),this.nativeDraggable&&(Z(l,"dragover",this),Z(l,"dragenter",this)),Ve.push(this.el),r.store&&r.store.get&&this.sort(r.store.get(this)||[]),Mt(this,nn())}B.prototype={constructor:B,_isOutsideThisEl:function(r){!this.el.contains(r)&&r!==this.el&&(oe=null)},_getDirection:function(r,n){return typeof this.options.direction=="function"?this.options.direction.call(this,r,n,A):this.options.direction},_onTapStart:function(r){if(r.cancelable){var n=this,i=this.el,e=this.options,f=e.preventOnFilter,t=r.type,o=r.touches&&r.touches[0]||r.pointerType&&r.pointerType==="touch"&&r,a=(o||r).target,s=r.target.shadowRoot&&(r.path&&r.path[0]||r.composedPath&&r.composedPath()[0])||a,c=e.filter;if(Sn(i),!A&&!(/mousedown|pointerdown/.test(t)&&r.button!==0||e.disabled)&&!s.isContentEditable&&!(!this.nativeDraggable&&xe&&a&&a.tagName.toUpperCase()==="SELECT")&&(a=wt(a,e.draggable,i,!1),!(a&&a.animated)&&Ge!==a)){if(le=dt(a),Te=dt(a,e.draggable),typeof c=="function"){if(c.call(this,r,a,this)){It({sortable:n,rootEl:s,name:"filter",targetEl:a,toEl:i,fromEl:i}),Dt("filter",n,{evt:r}),f&&r.cancelable&&r.preventDefault();return}}else if(c&&(c=c.split(",").some(function(u){if(u=wt(s,u.trim(),i,!1),u)return It({sortable:n,rootEl:u,name:"filter",targetEl:a,fromEl:i,toEl:i}),Dt("filter",n,{evt:r}),!0}),c)){f&&r.cancelable&&r.preventDefault();return}e.handle&&!wt(s,e.handle,i,!1)||this._prepareDragStart(r,o,a)}}},_prepareDragStart:function(r,n,i){var e=this,f=e.el,t=e.options,o=f.ownerDocument,a;if(i&&!A&&i.parentNode===f){var s=at(i);if(ot=f,A=i,ut=A.parentNode,te=A.nextSibling,Ge=i,$e=t.group,B.dragged=A,qt={target:A,clientX:(n||r).clientX,clientY:(n||r).clientY},xr=qt.clientX-s.left,Or=qt.clientY-s.top,this._lastX=(n||r).clientX,this._lastY=(n||r).clientY,A.style["will-change"]="all",a=function(){if(Dt("delayEnded",e,{evt:r}),B.eventCanceled){e._onDrop();return}e._disableDelayedDragEvents(),!mr&&e.nativeDraggable&&(A.draggable=!0),e._triggerDragStart(r,n),It({sortable:e,name:"choose",originalEvent:r}),lt(A,t.chosenClass,!0)},t.ignore.split(",").forEach(function(c){Rr(A,c.trim(),nr)}),Z(o,"dragover",_t),Z(o,"mousemove",_t),Z(o,"touchmove",_t),Z(o,"mouseup",e._onDrop),Z(o,"touchend",e._onDrop),Z(o,"touchcancel",e._onDrop),mr&&this.nativeDraggable&&(this.options.touchStartThreshold=4,A.draggable=!0),Dt("delayStart",this,{evt:r}),t.delay&&(!t.delayOnTouchOnly||n)&&(!this.nativeDraggable||!(De||Wt))){if(B.eventCanceled){this._onDrop();return}Z(o,"mouseup",e._disableDelayedDrag),Z(o,"touchend",e._disableDelayedDrag),Z(o,"touchcancel",e._disableDelayedDrag),Z(o,"mousemove",e._delayedDragTouchMoveHandler),Z(o,"touchmove",e._delayedDragTouchMoveHandler),t.supportPointer&&Z(o,"pointermove",e._delayedDragTouchMoveHandler),e._dragStartTimer=setTimeout(a,t.delay)}else a()}},_delayedDragTouchMoveHandler:function(r){var n=r.touches?r.touches[0]:r;Math.max(Math.abs(n.clientX-this._lastX),Math.abs(n.clientY-this._lastY))>=Math.floor(this.options.touchStartThreshold/(this.nativeDraggable&&window.devicePixelRatio||1))&&this._disableDelayedDrag()},_disableDelayedDrag:function(){A&&nr(A),clearTimeout(this._dragStartTimer),this._disableDelayedDragEvents()},_disableDelayedDragEvents:function(){var r=this.el.ownerDocument;Q(r,"mouseup",this._disableDelayedDrag),Q(r,"touchend",this._disableDelayedDrag),Q(r,"touchcancel",this._disableDelayedDrag),Q(r,"mousemove",this._delayedDragTouchMoveHandler),Q(r,"touchmove",this._delayedDragTouchMoveHandler),Q(r,"pointermove",this._delayedDragTouchMoveHandler)},_triggerDragStart:function(r,n){n=n||r.pointerType=="touch"&&r,!this.nativeDraggable||n?this.options.supportPointer?Z(document,"pointermove",this._onTouchMove):n?Z(document,"touchmove",this._onTouchMove):Z(document,"mousemove",this._onTouchMove):(Z(A,"dragend",this),Z(ot,"dragstart",this._onDragStart));try{document.selection?Be(function(){document.selection.empty()}):window.getSelection().removeAllRanges()}catch{}},_dragStarted:function(r,n){if(ie=!1,ot&&A){Dt("dragStarted",this,{evt:n}),this.nativeDraggable&&Z(document,"dragover",cn);var i=this.options;!r&<(A,i.dragClass,!1),lt(A,i.ghostClass,!0),B.active=this,r&&this._appendGhost(),It({sortable:this,name:"start",originalEvent:n})}else this._nulling()},_emulateDragOver:function(){if(Ft){this._lastX=Ft.clientX,this._lastY=Ft.clientY,Lr();for(var r=document.elementFromPoint(Ft.clientX,Ft.clientY),n=r;r&&r.shadowRoot&&(r=r.shadowRoot.elementFromPoint(Ft.clientX,Ft.clientY),r!==n);)n=r;if(A.parentNode[Ot]._isOutsideThisEl(r),n)do{if(n[Ot]){var i=void 0;if(i=n[Ot]._onDragOver({clientX:Ft.clientX,clientY:Ft.clientY,target:r,rootEl:n}),i&&!this.options.dragoverBubble)break}r=n}while(n=n.parentNode);wr()}},_onTouchMove:function(r){if(qt){var n=this.options,i=n.fallbackTolerance,e=n.fallbackOffset,f=r.touches?r.touches[0]:r,t=z&&ee(z,!0),o=z&&t&&t.a,a=z&&t&&t.d,s=Me&&xt&&br(xt),c=(f.clientX-qt.clientX+e.x)/(o||1)+(s?s[0]-rr[0]:0)/(o||1),u=(f.clientY-qt.clientY+e.y)/(a||1)+(s?s[1]-rr[1]:0)/(a||1);if(!B.active&&!ie){if(i&&Math.max(Math.abs(f.clientX-this._lastX),Math.abs(f.clientY-this._lastY))=0&&(It({rootEl:ut,name:"add",toEl:ut,fromEl:ot,originalEvent:r}),It({sortable:this,name:"remove",toEl:ut,originalEvent:r}),It({rootEl:ut,name:"sort",toEl:ut,fromEl:ot,originalEvent:r}),It({sortable:this,name:"sort",toEl:ut,originalEvent:r})),Et&&Et.save()):$t!==le&&$t>=0&&(It({sortable:this,name:"update",toEl:ut,originalEvent:r}),It({sortable:this,name:"sort",toEl:ut,originalEvent:r})),B.active&&(($t==null||$t===-1)&&($t=le,zt=Te),It({sortable:this,name:"end",toEl:ut,originalEvent:r}),this.save()))),this._nulling()},_nulling:function(){Dt("nulling",this),ot=A=ut=z=te=ct=Ge=Jt=qt=Ft=Se=$t=zt=le=Te=oe=Ie=Et=$e=B.dragged=B.ghost=B.clone=B.active=null,Ye.forEach(function(r){r.checked=!0}),Ye.length=tr=er=0},handleEvent:function(r){switch(r.type){case"drop":case"dragend":this._onDrop(r);break;case"dragenter":case"dragover":A&&(this._onDragOver(r),dn(r));break;case"selectstart":r.preventDefault();break}},toArray:function(){for(var r=[],n,i=this.el.children,e=0,f=i.length,t=this.options;ei.right+e||l.clientX<=i.right&&l.clientY>i.bottom&&l.clientX>=i.left:l.clientX>i.right&&l.clientY>i.top||l.clientX<=i.right&&l.clientY>i.bottom+e}function gn(l,r,n,i,e,f,t,o){var a=i?l.clientY:l.clientX,s=i?n.height:n.width,c=i?n.top:n.left,u=i?n.bottom:n.right,d=!1;if(!t){if(o&&Kec+s*f/2:au-Ke)return-Ie}else if(a>c+s*(1-e)/2&&au-s*f/2)?a>c+s/2?1:-1:0}function mn(l){return dt(A)1&&(Y.forEach(function(o){f.addAnimationState({target:o,rect:Ct?at(o):t}),qe(o),o.fromRect=t,i.removeAnimationState(o)}),Ct=!1,Tn(!this.options.removeCloneOnHide,e))},dragOverCompleted:function(n){var i=n.sortable,e=n.isOwner,f=n.insertion,t=n.activeSortable,o=n.parentEl,a=n.putSortable,s=this.options;if(f){if(e&&t._hideClone(),ge=!1,s.animation&&Y.length>1&&(Ct||!e&&!t.options.sort&&!a)){var c=at(et,!1,!0,!0);Y.forEach(function(d){d!==et&&(Er(d,c),o.appendChild(d))}),Ct=!0}if(!e)if(Ct||Le(),Y.length>1){var u=Fe;t._showClone(i),t.options.animation&&!Fe&&u&&Rt.forEach(function(d){t.addAnimationState({target:d,rect:me}),d.fromRect=me,d.thisAnimationDuration=null})}else t._showClone(i)}},dragOverAnimationCapture:function(n){var i=n.dragRect,e=n.isOwner,f=n.activeSortable;if(Y.forEach(function(o){o.thisAnimationDuration=null}),f.options.animation&&!e&&f.multiDrag.isMultiDrag){me=Mt({},i);var t=ee(et,!0);me.top-=t.f,me.left-=t.e}},dragOverAnimationComplete:function(){Ct&&(Ct=!1,Le())},drop:function(n){var i=n.originalEvent,e=n.rootEl,f=n.parentEl,t=n.sortable,o=n.dispatchSortableEvent,a=n.oldIndex,s=n.putSortable,c=s||this.sortable;if(i){var u=this.options,d=f.children;if(!ae)if(u.multiDragKey&&!this.multiDragKeyDown&&this._deselectMultiDrag(),lt(et,u.selectedClass,!~Y.indexOf(et)),~Y.indexOf(et))Y.splice(Y.indexOf(et),1),pe=null,ye({sortable:t,rootEl:e,name:"deselect",targetEl:et});else{if(Y.push(et),ye({sortable:t,rootEl:e,name:"select",targetEl:et}),i.shiftKey&&pe&&t.el.contains(pe)){var v=dt(pe),h=dt(et);if(~v&&~h&&v!==h){var p,g;for(h>v?(g=v,p=h):(g=h,p=v+1);g1){var S=at(et),b=dt(et,":not(."+this.options.selectedClass+")");if(!ge&&u.animation&&(et.thisAnimationDuration=null),c.captureAnimationState(),!ge&&(u.animation&&(et.fromRect=S,Y.forEach(function(x){if(x.thisAnimationDuration=null,x!==et){var P=Ct?at(x):S;x.fromRect=P,c.addAnimationState({target:x,rect:P})}})),Le(),Y.forEach(function(x){d[b]?f.insertBefore(x,d[b]):f.appendChild(x),b++}),a===dt(et))){var I=!1;Y.forEach(function(x){if(x.sortableIndex!==dt(x)){I=!0;return}}),I&&o("update")}Y.forEach(function(x){qe(x)}),c.animateAll()}Lt=c}(e===f||s&&s.lastPutMode!=="clone")&&Rt.forEach(function(x){x.parentNode&&x.parentNode.removeChild(x)})}},nullingGlobal:function(){this.isMultiDrag=ae=!1,Rt.length=0},destroyGlobal:function(){this._deselectMultiDrag(),Q(document,"pointerup",this._deselectMultiDrag),Q(document,"mouseup",this._deselectMultiDrag),Q(document,"touchend",this._deselectMultiDrag),Q(document,"keydown",this._checkKeyDown),Q(document,"keyup",this._checkKeyUp)},_deselectMultiDrag:function(n){if(!(typeof ae<"u"&&ae)&&Lt===this.sortable&&!(n&&wt(n.target,this.options.draggable,this.sortable.el,!1))&&!(n&&n.button!==0))for(;Y.length;){var i=Y[0];lt(i,this.options.selectedClass,!1),Y.shift(),ye({sortable:this.sortable,rootEl:this.sortable.el,name:"deselect",targetEl:i})}},_checkKeyDown:function(n){n.key===this.options.multiDragKey&&(this.multiDragKeyDown=!0)},_checkKeyUp:function(n){n.key===this.options.multiDragKey&&(this.multiDragKeyDown=!1)}},Mt(l,{pluginName:"multiDrag",utils:{select:function(n){var i=n.parentNode[Ot];!i||!i.options.multiDrag||~Y.indexOf(n)||(Lt&&Lt!==i&&(Lt.multiDrag._deselectMultiDrag(),Lt=i),lt(n,i.options.selectedClass,!0),Y.push(n))},deselect:function(n){var i=n.parentNode[Ot],e=Y.indexOf(n);!i||!i.options.multiDrag||!~e||(lt(n,i.options.selectedClass,!1),Y.splice(e,1))}},eventProperties:function(){var n=this,i=[],e=[];return Y.forEach(function(f){i.push({multiDragElement:f,index:f.sortableIndex});var t;Ct&&f!==et?t=-1:Ct?t=dt(f,":not(."+n.options.selectedClass+")"):t=dt(f),e.push({multiDragElement:f,index:t})}),{items:Yr(Y),clones:[].concat(Rt),oldIndicies:i,newIndicies:e}},optionListeners:{multiDragKey:function(n){return n=n.toLowerCase(),n==="ctrl"?n="Control":n.length>1&&(n=n.charAt(0).toUpperCase()+n.substr(1)),n}}})}function Tn(l,r){Y.forEach(function(n,i){var e=r.children[n.sortableIndex+(l?Number(i):0)];e?r.insertBefore(n,e):r.appendChild(n)})}function Pr(l,r){Rt.forEach(function(n,i){var e=r.children[n.sortableIndex+(l?Number(i):0)];e?r.insertBefore(n,e):r.appendChild(n)})}function Le(){Y.forEach(function(l){l!==et&&l.parentNode&&l.parentNode.removeChild(l)})}B.mount(new bn);B.mount(pr,hr);const In=Object.freeze(Object.defineProperty({__proto__:null,MultiDrag:On,Sortable:B,Swap:En,default:B},Symbol.toStringTag,{value:"Module"})),Pn=Kr(In);var Dn=we.exports,Dr;function Cn(){return Dr||(Dr=1,(function(l,r){(function(i,e){l.exports=e(Br(),Pn)})(typeof self<"u"?self:Dn,function(n,i){return(function(e){var f={};function t(o){if(f[o])return f[o].exports;var a=f[o]={i:o,l:!1,exports:{}};return e[o].call(a.exports,a,a.exports,t),a.l=!0,a.exports}return t.m=e,t.c=f,t.d=function(o,a,s){t.o(o,a)||Object.defineProperty(o,a,{enumerable:!0,get:s})},t.r=function(o){typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(o,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(o,"__esModule",{value:!0})},t.t=function(o,a){if(a&1&&(o=t(o)),a&8||a&4&&typeof o=="object"&&o&&o.__esModule)return o;var s=Object.create(null);if(t.r(s),Object.defineProperty(s,"default",{enumerable:!0,value:o}),a&2&&typeof o!="string")for(var c in o)t.d(s,c,(function(u){return o[u]}).bind(null,c));return s},t.n=function(o){var a=o&&o.__esModule?function(){return o.default}:function(){return o};return t.d(a,"a",a),a},t.o=function(o,a){return Object.prototype.hasOwnProperty.call(o,a)},t.p="",t(t.s="fb15")})({"00ee":(function(e,f,t){var o=t("b622"),a=o("toStringTag"),s={};s[a]="z",e.exports=String(s)==="[object z]"}),"0366":(function(e,f,t){var o=t("1c0b");e.exports=function(a,s,c){if(o(a),s===void 0)return a;switch(c){case 0:return function(){return a.call(s)};case 1:return function(u){return a.call(s,u)};case 2:return function(u,d){return a.call(s,u,d)};case 3:return function(u,d,v){return a.call(s,u,d,v)}}return function(){return a.apply(s,arguments)}}}),"057f":(function(e,f,t){var o=t("fc6a"),a=t("241c").f,s={}.toString,c=typeof window=="object"&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],u=function(d){try{return a(d)}catch{return c.slice()}};e.exports.f=function(v){return c&&s.call(v)=="[object Window]"?u(v):a(o(v))}}),"06cf":(function(e,f,t){var o=t("83ab"),a=t("d1e7"),s=t("5c6c"),c=t("fc6a"),u=t("c04e"),d=t("5135"),v=t("0cfb"),h=Object.getOwnPropertyDescriptor;f.f=o?h:function(g,S){if(g=c(g),S=u(S,!0),v)try{return h(g,S)}catch{}if(d(g,S))return s(!a.f.call(g,S),g[S])}}),"0cfb":(function(e,f,t){var o=t("83ab"),a=t("d039"),s=t("cc12");e.exports=!o&&!a(function(){return Object.defineProperty(s("div"),"a",{get:function(){return 7}}).a!=7})}),"13d5":(function(e,f,t){var o=t("23e7"),a=t("d58f").left,s=t("a640"),c=t("ae40"),u=s("reduce"),d=c("reduce",{1:0});o({target:"Array",proto:!0,forced:!u||!d},{reduce:function(h){return a(this,h,arguments.length,arguments.length>1?arguments[1]:void 0)}})}),"14c3":(function(e,f,t){var o=t("c6b6"),a=t("9263");e.exports=function(s,c){var u=s.exec;if(typeof u=="function"){var d=u.call(s,c);if(typeof d!="object")throw TypeError("RegExp exec method returned something other than an Object or null");return d}if(o(s)!=="RegExp")throw TypeError("RegExp#exec called on incompatible receiver");return a.call(s,c)}}),"159b":(function(e,f,t){var o=t("da84"),a=t("fdbc"),s=t("17c2"),c=t("9112");for(var u in a){var d=o[u],v=d&&d.prototype;if(v&&v.forEach!==s)try{c(v,"forEach",s)}catch{v.forEach=s}}}),"17c2":(function(e,f,t){var o=t("b727").forEach,a=t("a640"),s=t("ae40"),c=a("forEach"),u=s("forEach");e.exports=!c||!u?function(v){return o(this,v,arguments.length>1?arguments[1]:void 0)}:[].forEach}),"1be4":(function(e,f,t){var o=t("d066");e.exports=o("document","documentElement")}),"1c0b":(function(e,f){e.exports=function(t){if(typeof t!="function")throw TypeError(String(t)+" is not a function");return t}}),"1c7e":(function(e,f,t){var o=t("b622"),a=o("iterator"),s=!1;try{var c=0,u={next:function(){return{done:!!c++}},return:function(){s=!0}};u[a]=function(){return this},Array.from(u,function(){throw 2})}catch{}e.exports=function(d,v){if(!v&&!s)return!1;var h=!1;try{var p={};p[a]=function(){return{next:function(){return{done:h=!0}}}},d(p)}catch{}return h}}),"1d80":(function(e,f){e.exports=function(t){if(t==null)throw TypeError("Can't call method on "+t);return t}}),"1dde":(function(e,f,t){var o=t("d039"),a=t("b622"),s=t("2d00"),c=a("species");e.exports=function(u){return s>=51||!o(function(){var d=[],v=d.constructor={};return v[c]=function(){return{foo:1}},d[u](Boolean).foo!==1})}}),"23cb":(function(e,f,t){var o=t("a691"),a=Math.max,s=Math.min;e.exports=function(c,u){var d=o(c);return d<0?a(d+u,0):s(d,u)}}),"23e7":(function(e,f,t){var o=t("da84"),a=t("06cf").f,s=t("9112"),c=t("6eeb"),u=t("ce4e"),d=t("e893"),v=t("94ca");e.exports=function(h,p){var g=h.target,S=h.global,b=h.stat,I,x,P,O,F,w;if(S?x=o:b?x=o[g]||u(g,{}):x=(o[g]||{}).prototype,x)for(P in p){if(F=p[P],h.noTargetGet?(w=a(x,P),O=w&&w.value):O=x[P],I=v(S?P:g+(b?".":"#")+P,h.forced),!I&&O!==void 0){if(typeof F==typeof O)continue;d(F,O)}(h.sham||O&&O.sham)&&s(F,"sham",!0),c(x,P,F,h)}}}),"241c":(function(e,f,t){var o=t("ca84"),a=t("7839"),s=a.concat("length","prototype");f.f=Object.getOwnPropertyNames||function(u){return o(u,s)}}),"25f0":(function(e,f,t){var o=t("6eeb"),a=t("825a"),s=t("d039"),c=t("ad6d"),u="toString",d=RegExp.prototype,v=d[u],h=s(function(){return v.call({source:"a",flags:"b"})!="/a/b"}),p=v.name!=u;(h||p)&&o(RegExp.prototype,u,function(){var S=a(this),b=String(S.source),I=S.flags,x=String(I===void 0&&S instanceof RegExp&&!("flags"in d)?c.call(S):I);return"/"+b+"/"+x},{unsafe:!0})}),"2ca0":(function(e,f,t){var o=t("23e7"),a=t("06cf").f,s=t("50c4"),c=t("5a34"),u=t("1d80"),d=t("ab13"),v=t("c430"),h="".startsWith,p=Math.min,g=d("startsWith"),S=!v&&!g&&!!(function(){var b=a(String.prototype,"startsWith");return b&&!b.writable})();o({target:"String",proto:!0,forced:!S&&!g},{startsWith:function(I){var x=String(u(this));c(I);var P=s(p(arguments.length>1?arguments[1]:void 0,x.length)),O=String(I);return h?h.call(x,O,P):x.slice(P,P+O.length)===O}})}),"2d00":(function(e,f,t){var o=t("da84"),a=t("342f"),s=o.process,c=s&&s.versions,u=c&&c.v8,d,v;u?(d=u.split("."),v=d[0]+d[1]):a&&(d=a.match(/Edge\/(\d+)/),(!d||d[1]>=74)&&(d=a.match(/Chrome\/(\d+)/),d&&(v=d[1]))),e.exports=v&&+v}),"342f":(function(e,f,t){var o=t("d066");e.exports=o("navigator","userAgent")||""}),"35a1":(function(e,f,t){var o=t("f5df"),a=t("3f8c"),s=t("b622"),c=s("iterator");e.exports=function(u){if(u!=null)return u[c]||u["@@iterator"]||a[o(u)]}}),"37e8":(function(e,f,t){var o=t("83ab"),a=t("9bf2"),s=t("825a"),c=t("df75");e.exports=o?Object.defineProperties:function(d,v){s(d);for(var h=c(v),p=h.length,g=0,S;p>g;)a.f(d,S=h[g++],v[S]);return d}}),"3bbe":(function(e,f,t){var o=t("861d");e.exports=function(a){if(!o(a)&&a!==null)throw TypeError("Can't set "+String(a)+" as a prototype");return a}}),"3ca3":(function(e,f,t){var o=t("6547").charAt,a=t("69f3"),s=t("7dd0"),c="String Iterator",u=a.set,d=a.getterFor(c);s(String,"String",function(v){u(this,{type:c,string:String(v),index:0})},function(){var h=d(this),p=h.string,g=h.index,S;return g>=p.length?{value:void 0,done:!0}:(S=o(p,g),h.index+=S.length,{value:S,done:!1})})}),"3f8c":(function(e,f){e.exports={}}),4160:(function(e,f,t){var o=t("23e7"),a=t("17c2");o({target:"Array",proto:!0,forced:[].forEach!=a},{forEach:a})}),"428f":(function(e,f,t){var o=t("da84");e.exports=o}),"44ad":(function(e,f,t){var o=t("d039"),a=t("c6b6"),s="".split;e.exports=o(function(){return!Object("z").propertyIsEnumerable(0)})?function(c){return a(c)=="String"?s.call(c,""):Object(c)}:Object}),"44d2":(function(e,f,t){var o=t("b622"),a=t("7c73"),s=t("9bf2"),c=o("unscopables"),u=Array.prototype;u[c]==null&&s.f(u,c,{configurable:!0,value:a(null)}),e.exports=function(d){u[c][d]=!0}}),"44e7":(function(e,f,t){var o=t("861d"),a=t("c6b6"),s=t("b622"),c=s("match");e.exports=function(u){var d;return o(u)&&((d=u[c])!==void 0?!!d:a(u)=="RegExp")}}),4930:(function(e,f,t){var o=t("d039");e.exports=!!Object.getOwnPropertySymbols&&!o(function(){return!String(Symbol())})}),"4d64":(function(e,f,t){var o=t("fc6a"),a=t("50c4"),s=t("23cb"),c=function(u){return function(d,v,h){var p=o(d),g=a(p.length),S=s(h,g),b;if(u&&v!=v){for(;g>S;)if(b=p[S++],b!=b)return!0}else for(;g>S;S++)if((u||S in p)&&p[S]===v)return u||S||0;return!u&&-1}};e.exports={includes:c(!0),indexOf:c(!1)}}),"4de4":(function(e,f,t){var o=t("23e7"),a=t("b727").filter,s=t("1dde"),c=t("ae40"),u=s("filter"),d=c("filter");o({target:"Array",proto:!0,forced:!u||!d},{filter:function(h){return a(this,h,arguments.length>1?arguments[1]:void 0)}})}),"4df4":(function(e,f,t){var o=t("0366"),a=t("7b0b"),s=t("9bdd"),c=t("e95a"),u=t("50c4"),d=t("8418"),v=t("35a1");e.exports=function(p){var g=a(p),S=typeof this=="function"?this:Array,b=arguments.length,I=b>1?arguments[1]:void 0,x=I!==void 0,P=v(g),O=0,F,w,T,$,M,V;if(x&&(I=o(I,b>2?arguments[2]:void 0,2)),P!=null&&!(S==Array&&c(P)))for($=P.call(g),M=$.next,w=new S;!(T=M.call($)).done;O++)V=x?s($,I,[T.value,O],!0):T.value,d(w,O,V);else for(F=u(g.length),w=new S(F);F>O;O++)V=x?I(g[O],O):g[O],d(w,O,V);return w.length=O,w}}),"4fad":(function(e,f,t){var o=t("23e7"),a=t("6f53").entries;o({target:"Object",stat:!0},{entries:function(c){return a(c)}})}),"50c4":(function(e,f,t){var o=t("a691"),a=Math.min;e.exports=function(s){return s>0?a(o(s),9007199254740991):0}}),5135:(function(e,f){var t={}.hasOwnProperty;e.exports=function(o,a){return t.call(o,a)}}),5319:(function(e,f,t){var o=t("d784"),a=t("825a"),s=t("7b0b"),c=t("50c4"),u=t("a691"),d=t("1d80"),v=t("8aa5"),h=t("14c3"),p=Math.max,g=Math.min,S=Math.floor,b=/\$([$&'`]|\d\d?|<[^>]*>)/g,I=/\$([$&'`]|\d\d?)/g,x=function(P){return P===void 0?P:String(P)};o("replace",2,function(P,O,F,w){var T=w.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE,$=w.REPLACE_KEEPS_$0,M=T?"$":"$0";return[function(R,X){var N=d(this),G=R==null?void 0:R[P];return G!==void 0?G.call(R,N,X):O.call(String(N),R,X)},function(C,R){if(!T&&$||typeof R=="string"&&R.indexOf(M)===-1){var X=F(O,C,this,R);if(X.done)return X.value}var N=a(C),G=String(this),_=typeof R=="function";_||(R=String(R));var rt=N.global;if(rt){var yt=N.unicode;N.lastIndex=0}for(var st=[];;){var ft=h(N,G);if(ft===null||(st.push(ft),!rt))break;var gt=String(ft[0]);gt===""&&(N.lastIndex=v(G,c(N.lastIndex),yt))}for(var mt="",ht=0,nt=0;nt=ht&&(mt+=G.slice(ht,At)+St,ht=At+it.length)}return mt+G.slice(ht)}];function V(C,R,X,N,G,_){var rt=X+C.length,yt=N.length,st=I;return G!==void 0&&(G=s(G),st=b),O.call(_,st,function(ft,gt){var mt;switch(gt.charAt(0)){case"$":return"$";case"&":return C;case"`":return R.slice(0,X);case"'":return R.slice(rt);case"<":mt=G[gt.slice(1,-1)];break;default:var ht=+gt;if(ht===0)return ft;if(ht>yt){var nt=S(ht/10);return nt===0?ft:nt<=yt?N[nt-1]===void 0?gt.charAt(1):N[nt-1]+gt.charAt(1):ft}mt=N[ht-1]}return mt===void 0?"":mt})}})}),5692:(function(e,f,t){var o=t("c430"),a=t("c6cd");(e.exports=function(s,c){return a[s]||(a[s]=c!==void 0?c:{})})("versions",[]).push({version:"3.6.5",mode:o?"pure":"global",copyright:"© 2020 Denis Pushkarev (zloirock.ru)"})}),"56ef":(function(e,f,t){var o=t("d066"),a=t("241c"),s=t("7418"),c=t("825a");e.exports=o("Reflect","ownKeys")||function(d){var v=a.f(c(d)),h=s.f;return h?v.concat(h(d)):v}}),"5a34":(function(e,f,t){var o=t("44e7");e.exports=function(a){if(o(a))throw TypeError("The method doesn't accept regular expressions");return a}}),"5c6c":(function(e,f){e.exports=function(t,o){return{enumerable:!(t&1),configurable:!(t&2),writable:!(t&4),value:o}}}),"5db7":(function(e,f,t){var o=t("23e7"),a=t("a2bf"),s=t("7b0b"),c=t("50c4"),u=t("1c0b"),d=t("65f0");o({target:"Array",proto:!0},{flatMap:function(h){var p=s(this),g=c(p.length),S;return u(h),S=d(p,0),S.length=a(S,p,p,g,0,1,h,arguments.length>1?arguments[1]:void 0),S}})}),6547:(function(e,f,t){var o=t("a691"),a=t("1d80"),s=function(c){return function(u,d){var v=String(a(u)),h=o(d),p=v.length,g,S;return h<0||h>=p?c?"":void 0:(g=v.charCodeAt(h),g<55296||g>56319||h+1===p||(S=v.charCodeAt(h+1))<56320||S>57343?c?v.charAt(h):g:c?v.slice(h,h+2):(g-55296<<10)+(S-56320)+65536)}};e.exports={codeAt:s(!1),charAt:s(!0)}}),"65f0":(function(e,f,t){var o=t("861d"),a=t("e8b5"),s=t("b622"),c=s("species");e.exports=function(u,d){var v;return a(u)&&(v=u.constructor,typeof v=="function"&&(v===Array||a(v.prototype))?v=void 0:o(v)&&(v=v[c],v===null&&(v=void 0))),new(v===void 0?Array:v)(d===0?0:d)}}),"69f3":(function(e,f,t){var o=t("7f9a"),a=t("da84"),s=t("861d"),c=t("9112"),u=t("5135"),d=t("f772"),v=t("d012"),h=a.WeakMap,p,g,S,b=function(T){return S(T)?g(T):p(T,{})},I=function(T){return function($){var M;if(!s($)||(M=g($)).type!==T)throw TypeError("Incompatible receiver, "+T+" required");return M}};if(o){var x=new h,P=x.get,O=x.has,F=x.set;p=function(T,$){return F.call(x,T,$),$},g=function(T){return P.call(x,T)||{}},S=function(T){return O.call(x,T)}}else{var w=d("state");v[w]=!0,p=function(T,$){return c(T,w,$),$},g=function(T){return u(T,w)?T[w]:{}},S=function(T){return u(T,w)}}e.exports={set:p,get:g,has:S,enforce:b,getterFor:I}}),"6eeb":(function(e,f,t){var o=t("da84"),a=t("9112"),s=t("5135"),c=t("ce4e"),u=t("8925"),d=t("69f3"),v=d.get,h=d.enforce,p=String(String).split("String");(e.exports=function(g,S,b,I){var x=I?!!I.unsafe:!1,P=I?!!I.enumerable:!1,O=I?!!I.noTargetGet:!1;if(typeof b=="function"&&(typeof S=="string"&&!s(b,"name")&&a(b,"name",S),h(b).source=p.join(typeof S=="string"?S:"")),g===o){P?g[S]=b:c(S,b);return}else x?!O&&g[S]&&(P=!0):delete g[S];P?g[S]=b:a(g,S,b)})(Function.prototype,"toString",function(){return typeof this=="function"&&v(this).source||u(this)})}),"6f53":(function(e,f,t){var o=t("83ab"),a=t("df75"),s=t("fc6a"),c=t("d1e7").f,u=function(d){return function(v){for(var h=s(v),p=a(h),g=p.length,S=0,b=[],I;g>S;)I=p[S++],(!o||c.call(h,I))&&b.push(d?[I,h[I]]:h[I]);return b}};e.exports={entries:u(!0),values:u(!1)}}),"73d9":(function(e,f,t){var o=t("44d2");o("flatMap")}),7418:(function(e,f){f.f=Object.getOwnPropertySymbols}),"746f":(function(e,f,t){var o=t("428f"),a=t("5135"),s=t("e538"),c=t("9bf2").f;e.exports=function(u){var d=o.Symbol||(o.Symbol={});a(d,u)||c(d,u,{value:s.f(u)})}}),7839:(function(e,f){e.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]}),"7b0b":(function(e,f,t){var o=t("1d80");e.exports=function(a){return Object(o(a))}}),"7c73":(function(e,f,t){var o=t("825a"),a=t("37e8"),s=t("7839"),c=t("d012"),u=t("1be4"),d=t("cc12"),v=t("f772"),h=">",p="<",g="prototype",S="script",b=v("IE_PROTO"),I=function(){},x=function(T){return p+S+h+T+p+"/"+S+h},P=function(T){T.write(x("")),T.close();var $=T.parentWindow.Object;return T=null,$},O=function(){var T=d("iframe"),$="java"+S+":",M;return T.style.display="none",u.appendChild(T),T.src=String($),M=T.contentWindow.document,M.open(),M.write(x("document.F=Object")),M.close(),M.F},F,w=function(){try{F=document.domain&&new ActiveXObject("htmlfile")}catch{}w=F?P(F):O();for(var T=s.length;T--;)delete w[g][s[T]];return w()};c[b]=!0,e.exports=Object.create||function($,M){var V;return $!==null?(I[g]=o($),V=new I,I[g]=null,V[b]=$):V=w(),M===void 0?V:a(V,M)}}),"7dd0":(function(e,f,t){var o=t("23e7"),a=t("9ed3"),s=t("e163"),c=t("d2bb"),u=t("d44e"),d=t("9112"),v=t("6eeb"),h=t("b622"),p=t("c430"),g=t("3f8c"),S=t("ae93"),b=S.IteratorPrototype,I=S.BUGGY_SAFARI_ITERATORS,x=h("iterator"),P="keys",O="values",F="entries",w=function(){return this};e.exports=function(T,$,M,V,C,R,X){a(M,$,V);var N=function(nt){if(nt===C&&st)return st;if(!I&&nt in rt)return rt[nt];switch(nt){case P:return function(){return new M(this,nt)};case O:return function(){return new M(this,nt)};case F:return function(){return new M(this,nt)}}return function(){return new M(this)}},G=$+" Iterator",_=!1,rt=T.prototype,yt=rt[x]||rt["@@iterator"]||C&&rt[C],st=!I&&yt||N(C),ft=$=="Array"&&rt.entries||yt,gt,mt,ht;if(ft&&(gt=s(ft.call(new T)),b!==Object.prototype&>.next&&(!p&&s(gt)!==b&&(c?c(gt,b):typeof gt[x]!="function"&&d(gt,x,w)),u(gt,G,!0,!0),p&&(g[G]=w))),C==O&&yt&&yt.name!==O&&(_=!0,st=function(){return yt.call(this)}),(!p||X)&&rt[x]!==st&&d(rt,x,st),g[$]=st,C)if(mt={values:N(O),keys:R?st:N(P),entries:N(F)},X)for(ht in mt)(I||_||!(ht in rt))&&v(rt,ht,mt[ht]);else o({target:$,proto:!0,forced:I||_},mt);return mt}}),"7f9a":(function(e,f,t){var o=t("da84"),a=t("8925"),s=o.WeakMap;e.exports=typeof s=="function"&&/native code/.test(a(s))}),"825a":(function(e,f,t){var o=t("861d");e.exports=function(a){if(!o(a))throw TypeError(String(a)+" is not an object");return a}}),"83ab":(function(e,f,t){var o=t("d039");e.exports=!o(function(){return Object.defineProperty({},1,{get:function(){return 7}})[1]!=7})}),8418:(function(e,f,t){var o=t("c04e"),a=t("9bf2"),s=t("5c6c");e.exports=function(c,u,d){var v=o(u);v in c?a.f(c,v,s(0,d)):c[v]=d}}),"861d":(function(e,f){e.exports=function(t){return typeof t=="object"?t!==null:typeof t=="function"}}),8875:(function(e,f,t){var o,a,s;(function(c,u){a=[],o=u,s=typeof o=="function"?o.apply(f,a):o,s!==void 0&&(e.exports=s)})(typeof self<"u"?self:this,function(){function c(){var u=Object.getOwnPropertyDescriptor(document,"currentScript");if(!u&&"currentScript"in document&&document.currentScript||u&&u.get!==c&&document.currentScript)return document.currentScript;try{throw new Error}catch(F){var d=/.*at [^(]*\((.*):(.+):(.+)\)$/ig,v=/@([^@]*):(\d+):(\d+)\s*$/ig,h=d.exec(F.stack)||v.exec(F.stack),p=h&&h[1]||!1,g=h&&h[2]||!1,S=document.location.href.replace(document.location.hash,""),b,I,x,P=document.getElementsByTagName("script");p===S&&(b=document.documentElement.outerHTML,I=new RegExp("(?:[^\\n]+?\\n){0,"+(g-2)+"}[^<]* + + diff --git a/assets/admin/src/router/component-loaders/core.js b/assets/admin/src/router/component-loaders/core.js index e35b5325..ce03ba10 100644 --- a/assets/admin/src/router/component-loaders/core.js +++ b/assets/admin/src/router/component-loaders/core.js @@ -1,6 +1,7 @@ export const corePageLoaders = { SchemaPage: () => import('@/pages/SchemaPage.vue'), DeferredPage: () => import('@/components/DeferredPage.vue'), + NativeOpsRedirect: () => import('@/pages/placeholder/NativeOpsRedirect.vue'), FloatingButtonsSettings: () => import('@/pages/content/FloatingButtonsSettings.vue'), FooterTabbarSettings: () => import('@/pages/content/FooterTabbarSettings.vue'), FooterSettings: () => import('@/pages/content/FooterSettings.vue'), diff --git a/assets/admin/src/router/component-loaders/forum.js b/assets/admin/src/router/component-loaders/forum.js index 733a8a59..d938fc9d 100644 --- a/assets/admin/src/router/component-loaders/forum.js +++ b/assets/admin/src/router/component-loaders/forum.js @@ -1,7 +1,2 @@ -export const forumPageLoaders = { - ForumDashboard: () => import('@/pages/forum/ForumDashboard.vue'), - ForumBoards: () => import('@/pages/forum/ForumBoards.vue'), - ForumTopics: () => import('@/pages/forum/ForumTopics.vue'), - ForumModerators: () => import('@/pages/forum/ForumModerators.vue'), - ForumModeratorApplications: () => import('@/pages/forum/ForumModeratorApplications.vue'), -} +// Forum ops Vue pages removed (Phase 4). Config uses SchemaPage. +export const forumPageLoaders = {} diff --git a/assets/admin/src/router/component-loaders/payment.js b/assets/admin/src/router/component-loaders/payment.js index 91d9c6f3..bef47b42 100644 --- a/assets/admin/src/router/component-loaders/payment.js +++ b/assets/admin/src/router/component-loaders/payment.js @@ -1,6 +1,3 @@ export const paymentPageLoaders = { - PaymentRevenue: () => import('@/pages/payment/PaymentRevenue.vue'), PaymentGateway: () => import('@/pages/payment/PaymentGateway.vue'), - PaymentChargeCard: () => import('@/pages/payment/PaymentChargeCard.vue'), - PaymentRebate: () => import('@/pages/payment/PaymentRebate.vue'), } diff --git a/assets/admin/src/router/component-loaders/shop.js b/assets/admin/src/router/component-loaders/shop.js index 246eee49..1ec6c4e6 100644 --- a/assets/admin/src/router/component-loaders/shop.js +++ b/assets/admin/src/router/component-loaders/shop.js @@ -1,9 +1,2 @@ -export const shopPageLoaders = { - ShopDashboard: () => import('@/pages/shop/ShopDashboard.vue'), - ShopProducts: () => import('@/pages/shop/ShopProducts.vue'), - ShopOrders: () => import('@/pages/shop/ShopOrders.vue'), - ShopWithdrawals: () => import('@/pages/shop/ShopWithdrawals.vue'), - ShopCoupons: () => import('@/pages/shop/ShopCoupons.vue'), - ShopAfterSale: () => import('@/pages/shop/ShopAfterSale.vue'), - ShopShipping: () => import('@/pages/shop/ShopShipping.vue'), -} +// Shop ops Vue pages removed (Phase 4). Config uses SchemaPage. +export const shopPageLoaders = {} diff --git a/assets/admin/src/router/component-loaders/users.js b/assets/admin/src/router/component-loaders/users.js index 54b2583d..f5e91037 100644 --- a/assets/admin/src/router/component-loaders/users.js +++ b/assets/admin/src/router/component-loaders/users.js @@ -1,12 +1,8 @@ export const usersPageLoaders = { UsersFeatures: () => import('@/pages/users/UsersFeatures.vue'), UsersSignin: () => import('@/pages/users/UsersSignin.vue'), - UsersInviteCodes: () => import('@/pages/users/UsersInviteCodes.vue'), UsersVerify: () => import('@/pages/users/UsersVerify.vue'), UsersLevel: () => import('@/pages/users/UsersLevel.vue'), UsersBadge: () => import('@/pages/users/UsersBadge.vue'), - UsersReport: () => import('@/pages/users/UsersReport.vue'), - UsersMessages: () => import('@/pages/users/UsersMessages.vue'), - UsersBan: () => import('@/pages/users/UsersBan.vue'), UsersWechatTemplate: () => import('@/pages/users/UsersWechatTemplate.vue'), } diff --git a/assets/admin/src/router/index.js b/assets/admin/src/router/index.js index d1bac765..cea75960 100644 --- a/assets/admin/src/router/index.js +++ b/assets/admin/src/router/index.js @@ -71,6 +71,32 @@ function createSectionRedirectRoutes() { }) } +/** + * Old SPA ops routes → native WP admin pages (Phase 4 transition). + * Bookmarks under #/shop/products etc. land on NativeOpsRedirect. + */ +const NATIVE_OPS_REDIRECTS = [ + { path: '/shop/products', title: '商品管理', nativeAdminPath: 'edit.php?post_type=aksrt_product' }, + { path: '/shop/orders', title: '订单管理', nativeAdminPath: 'admin.php?page=aksrt_orders' }, + { path: '/shop/after-sale', title: '售后管理', nativeAdminPath: 'admin.php?page=aksrt_after_sale' }, + { path: '/shop/shipping', title: '物流管理', nativeAdminPath: 'admin.php?page=aksrt_shipping' }, + { path: '/shop/coupons', title: '优惠券', nativeAdminPath: 'admin.php?page=aksrt_coupons' }, + { path: '/shop/withdrawals', title: '提现管理', nativeAdminPath: 'admin.php?page=aksrt_withdraw' }, + { path: '/shop/dashboard', title: '商城概览', nativeAdminPath: 'admin.php?page=aksrt_pay' }, + { path: '/forum/boards', title: '板块管理', nativeAdminPath: 'edit.php?post_type=aksrt_forum_plate' }, + { path: '/forum/topics', title: '主题治理', nativeAdminPath: 'edit.php?post_type=aksrt_forum_topic' }, + { path: '/forum/moderators', title: '版主管理', nativeAdminPath: 'edit.php?post_type=aksrt_forum_plate' }, + { path: '/forum/moderator-applications', title: '版主申请', nativeAdminPath: 'edit.php?post_type=aksrt_forum_plate' }, + { path: '/forum/dashboard', title: '论坛概览', nativeAdminPath: 'edit.php?post_type=aksrt_forum_topic' }, + { path: '/payment/charge-card', title: '充值卡', nativeAdminPath: 'admin.php?page=aksrt_charge_cards' }, + { path: '/payment/revenue', title: '创作分成', nativeAdminPath: 'admin.php?page=aksrt_income' }, + { path: '/payment/rebate', title: '返佣管理', nativeAdminPath: 'admin.php?page=aksrt_rebate' }, + { path: '/users/messages', title: '消息中心', nativeAdminPath: 'users.php?page=aksrt_messages' }, + { path: '/users/invite-codes', title: '邀请码运营', nativeAdminPath: 'users.php?page=aksrt_invite_codes' }, + { path: '/users/ban', title: '禁封管理', nativeAdminPath: 'users.php?page=aksrt_user_ban&tab=restrictions' }, + { path: '/users/report', title: '禁封/举报', nativeAdminPath: 'users.php?page=aksrt_user_ban&tab=reports' }, +] + const routes = [ { path: '/', redirect: ADMIN_DEFAULT_ROUTE }, ...createSectionRedirectRoutes(), @@ -80,6 +106,16 @@ const routes = [ component: resolveComponent(page), meta: createRouteMeta(page), })), + ...NATIVE_OPS_REDIRECTS.map((item) => ({ + path: item.path, + name: `NativeRedirect_${item.path.replace(/\W+/g, '_')}`, + component: componentLoaders.NativeOpsRedirect, + meta: { + title: item.title, + nativeAdminPath: item.nativeAdminPath, + status: 'redirect', + }, + })), ] export default createRouter({ diff --git a/docs/zibll-gap-matrix.md b/docs/zibll-gap-matrix.md index 1e391e93..72ed3a70 100644 --- a/docs/zibll-gap-matrix.md +++ b/docs/zibll-gap-matrix.md @@ -98,7 +98,7 @@ Note: zibll「商品管理」`zibpay_product_page` is **paid article sales**, no | 2a Pay menu + orders/withdraw/cards | done | | 2b Shipping/after-sale/coupons/income/rebate | done | | 3 users.php submenus | done | -| 4 SPA strip | pending (after 1–3) | +| 4 SPA strip | done (ops routes redirect to native) | | 5+ behavior parity | backlog | ## Dual-UI rule