@plumix/admin 0.6.0 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/-errors-RB-rEi-I.js +1 -0
- package/dist/assets/{_-C6mMIz3l.js → _-DngjjFK4.js} +1 -1
- package/dist/assets/{_-CljmxTlS.js → _-h-_izgKQ.js} +2 -2
- package/dist/assets/_authenticated-Bgi03W1b.js +1 -0
- package/dist/assets/{_authenticated-kVO_-7Sn.js → _authenticated-CH4N_cSi.js} +2 -2
- package/dist/assets/{_authenticated-BYa_DMSE.js → _authenticated-E1SDZnP9.js} +1 -1
- package/dist/assets/{_name-aKYVqU32.js → _name-BEnhsrWI.js} +2 -2
- package/dist/assets/{_name-BGOHegOZ.js → _name-DQVev0AG.js} +1 -1
- package/dist/assets/_page-D0l1kYXx.js +1 -0
- package/dist/assets/_page-wrWlHYyD.js +2 -0
- package/dist/assets/{_slug-Bdb7jL1l.js → _slug-BfC_rJhz.js} +1 -1
- package/dist/assets/{_slug-DWmiGCz6.js → _slug-Bztim-i3.js} +2 -2
- package/dist/assets/{_token-s0TefqyQ.js → _token-D-j4VVVI.js} +1 -1
- package/dist/assets/{_token-DVnFp6Xw.js → _token-Dsc9zTxr.js} +2 -2
- package/dist/assets/{allowed-domains-CQYTKIje.js → allowed-domains-B6oGNO8i.js} +1 -1
- package/dist/assets/{ar-Dh1_Madu.js → ar-D0lPKYVq.js} +1 -1
- package/dist/assets/{bootstrap-DAMkwOTO.js → bootstrap-Dbv-AIOo.js} +2 -2
- package/dist/assets/{bootstrap-oBDU-2AF.js → bootstrap-jj58lGRM.js} +1 -1
- package/dist/assets/breadcrumb-Di_E7s51.js +1 -0
- package/dist/assets/{create-CaxQlu5L.js → create-CXFn-yel.js} +1 -1
- package/dist/assets/{create-DQ5AIyqG.js → create-Cvo5wKBV.js} +2 -2
- package/dist/assets/{create-DgEbjT-H.js → create-CylSqfDG.js} +1 -1
- package/dist/assets/create-Dg10UEnK.js +1 -0
- package/dist/assets/{create-CICYrKqG.js → create-DnLK3SmI.js} +2 -2
- package/dist/assets/{de-BDyIkMJC.js → de-ByPNuZ6R.js} +1 -1
- package/dist/assets/{device-COTq1gdI.js → device-CxnTgMZ6.js} +1 -1
- package/dist/assets/{device-Ae_X8x7B.js → device-vY_uxsCV.js} +2 -2
- package/dist/assets/{edit-BAIuOGAs.js → edit-2aEJRHSG.js} +3 -3
- package/dist/assets/edit-BPw2fZ5B.js +1 -0
- package/dist/assets/{edit-BskWld1E.js → edit-BRhq3mGx.js} +2 -2
- package/dist/assets/{edit-DtsKHyYT.js → edit-Cc5hxhM7.js} +2 -2
- package/dist/assets/{edit-DLcsu05p.js → edit-Cu_XtYMX.js} +1 -1
- package/dist/assets/edit-D9-iSIWu.js +2 -0
- package/dist/assets/edit-DOoYH9tG.js +1 -0
- package/dist/assets/{en-DYui4aSX.js → en-LRPc5lfW.js} +1 -1
- package/dist/assets/form-CY307HEl.js +1 -0
- package/dist/assets/index-B9lFt9M4.css +1 -0
- package/dist/assets/{index-MLqJwsKQ.js → index-D7rrOihJ.js} +3 -3
- package/dist/assets/json-code-editor-9PGQwSkN.js +12 -0
- package/dist/assets/{login-DU7y_Ylt.js → login-0-PQLYlS.js} +2 -2
- package/dist/assets/{login-Bify50W1.js → login-Dk-LKP1e.js} +1 -1
- package/dist/assets/{mailer-DoyD5gWW.js → mailer-BemLhNOI.js} +1 -1
- package/dist/assets/{mailer-DeygotUf.js → mailer-CTVZRBU2.js} +2 -2
- package/dist/assets/manifest-2YUNz_ML.js +1 -0
- package/dist/assets/meta-box-CwZHh0Nj.js +1 -0
- package/dist/assets/meta-field-errors-Za3ulViR.js +1 -0
- package/dist/assets/{palette-commands-DX18c0wH.js → palette-commands-Di6Dnj4z.js} +2 -2
- package/dist/assets/{plugin-registry-nSDhEMki.js → plugin-registry-DLDusPOA.js} +1 -1
- package/dist/assets/{register-core-blocks-Bh6u65qH.js → register-core-blocks-CVavxPiP.js} +1 -1
- package/dist/assets/rich-text-field-DGgpOqHQ.js +123 -0
- package/dist/assets/{search-input-BG9KotQw.js → search-input-B7zZp8UE.js} +2 -2
- package/dist/assets/{settings-CXPqdjqb.js → settings-199pUzJn.js} +1 -1
- package/dist/assets/{settings-BtTviWkj.js → settings-DZyJ36D2.js} +2 -2
- package/dist/assets/{toast-CWtRg47-.js → toast-26daCjvR.js} +1 -1
- package/dist/assets/{uk-Cq7H12wQ.js → uk-CTQT1XuD.js} +1 -1
- package/dist/assets/use-visible-fields-C0FKrnz6.js +2 -0
- package/dist/assets/{users-DzXByAic.js → users-BmZY207i.js} +1 -1
- package/dist/assets/{users-CMJAWmSV.js → users-ZRNKnWGa.js} +2 -2
- package/dist/assets/{utils-kFAy0YTP.js → utils-RSNxndzY.js} +2 -2
- package/dist/assets/{valibot-DO4fmSyX.js → valibot-CHirPb_E.js} +1 -1
- package/dist/assets/w3c-keyname-BOAvb0qz.js +1 -0
- package/dist/assets/{zh-CN-YIfV5Hug.js → zh-CN-g4V81dTW.js} +1 -1
- package/dist/index.html +23 -23
- package/package.json +9 -5
- package/dist/assets/-errors-CapunOga.js +0 -1
- package/dist/assets/_authenticated-Dcp2Ynic.js +0 -1
- package/dist/assets/_page--PcGMzdu.js +0 -2
- package/dist/assets/_page-Be9sR1G2.js +0 -1
- package/dist/assets/breadcrumb-x0qfIbU9.js +0 -1
- package/dist/assets/create-3wo13Gal.js +0 -1
- package/dist/assets/edit-DU82eAhY.js +0 -1
- package/dist/assets/edit-Ds4B6Pmi.js +0 -2
- package/dist/assets/edit-evcBUaDE.js +0 -1
- package/dist/assets/form-B_PPIck3.js +0 -1
- package/dist/assets/index-BtnQdcjJ.css +0 -1
- package/dist/assets/manifest-Bdiv3Qyq.js +0 -1
- package/dist/assets/meta-box-B-hP57rw.js +0 -1
- package/dist/assets/meta-box-field-BTDudxyS.js +0 -1
- package/dist/assets/meta-box-grid-CoW6o7O7.js +0 -1
- package/dist/assets/rich-text-field-CS-OOttw.js +0 -123
|
@@ -1 +1 @@
|
|
|
1
|
-
var e=JSON.parse(`{"admin.slug.format":["Slug must be lowercase letters, numbers, and dashes."],"allowedDomains.add.defaultRole.label":["默认角色"],"allowedDomains.add.description":["仅使用裸域名 — 不含协议,不含路径。"],"allowedDomains.add.domain.invalid":["输入有效的主机名(例如 example.com)。"],"allowedDomains.add.domain.label":["域名"],"allowedDomains.add.placeholder":["example.com"],"allowedDomains.add.submit.idle":["添加"],"allowedDomains.add.submit.pending":["添加中…"],"allowedDomains.add.title":["添加域名"],"allowedDomains.description":["OAuth 注册允许的电子邮箱域名。新 OAuth 账户将使用此处设置的角色创建。已停用的行会拒绝注册,但保留其角色映射。"],"allowedDomains.error.domainExists":["此域名已配置。"],"allowedDomains.error.fallback":["无法保存域名。请重试。"],"allowedDomains.list.empty":["未配置域名。OAuth 注册将关闭,直到至少添加一个已启用的域名。"],"allowedDomains.list.loading":["加载中…"],"allowedDomains.list.title":["已配置的域名"],"allowedDomains.row.deleteAria":["删除 ",["domain"]],"allowedDomains.row.deleteCancel":["取消"],"allowedDomains.row.deleteConfirm":["确认删除"],"allowedDomains.row.disabled":["已停用"],"allowedDomains.row.enabled":["已启用"],"allowedDomains.title":["允许的域名"],"apiTokens.col.actions":["操作"],"apiTokens.col.expires":["过期"],"apiTokens.col.lastUsed":["上次使用"],"apiTokens.col.name":["名称"],"apiTokens.col.prefix":["前缀"],"apiTokens.col.scopes":["权限"],"apiTokens.create.capabilities":["权限"],"apiTokens.create.capabilities.help":["每行一个权限。令牌的权限永远不能超过您角色的权限 — 这是一个额外的限制。"],"apiTokens.create.capabilities.placeholder":["entry:post:read\\nentry:post:edit_own"],"apiTokens.create.expires":["过期"],"apiTokens.create.name":["名称"],"apiTokens.create.namePlaceholder":["github-actions / claude-code / mcp-prod"],"apiTokens.create.nameRequired":["名称为必填项。"],"apiTokens.create.nameTooLong":["名称不能超过 64 个字符。"],"apiTokens.create.permissions":["权限"],"apiTokens.create.scope.inherit":["继承您的所有权限"],"apiTokens.create.scope.restrict":["限制为特定权限"],"apiTokens.create.submit.idle":["创建令牌"],"apiTokens.create.submit.pending":["创建中…"],"apiTokens.description.admin":["此用户创建的令牌。您可以撤销其中任何一个 — 创建需要所有者经过身份验证的浏览器会话。"],"apiTokens.description.self":["为 CLI、MCP 服务器、CI 机器人或其他非浏览器客户端提供的个人访问令牌。完整密钥仅在创建时显示一次。"],"apiTokens.empty.description.admin":["此用户未创建任何 API 令牌。"],"apiTokens.empty.description.self":["在上方为您的 CLI / MCP 服务器 / CI 机器人创建一个。"],"apiTokens.empty.title":["暂无令牌"],"apiTokens.expiry.30":["30 天"],"apiTokens.expiry.7":["7 天"],"apiTokens.expiry.90":["90 天"],"apiTokens.expiry.never":["永不"],"apiTokens.loading":["正在加载令牌…"],"apiTokens.mint.fallback":["无法创建令牌。请重试。"],"apiTokens.never":["永不"],"apiTokens.revoke.button":["撤销"],"apiTokens.revoke.cancel":["取消"],"apiTokens.revoke.confirm":["撤销"],"apiTokens.revoke.description":["令牌将立即停止工作。任何使用它的客户端下次请求时将获得 401。"],"apiTokens.revoke.fallback":["撤销失败。请重试。"],"apiTokens.revoke.pending":["撤销中…"],"apiTokens.revoke.title":["撤销 \\"",["name"],"\\"?"],"apiTokens.scope.empty":["无权限"],"apiTokens.scope.inheritRole":["继承角色"],"apiTokens.secret.copyAria":["复制令牌"],"apiTokens.secret.description":["立即复制密钥。我们不会再次显示 — 如果遗失,您必须撤销并重新创建。"],"apiTokens.secret.done":["完成"],"apiTokens.secret.title":["令牌 \\"",["name"],"\\" 已创建"],"apiTokens.title":["API 令牌"],"auth.acceptInvite.description":["设置 Passkey 以完成账户创建。您的浏览器或设备会引导您完成此过程。"],"auth.acceptInvite.name":["姓名"],"auth.acceptInvite.submit.idle":["创建 Passkey"],"auth.acceptInvite.submit.pending":["设置中…"],"auth.acceptInvite.title":["接受邀请"],"auth.bootstrap.description":["设置您的站点 — 此电子邮箱将成为管理员账户。"],"auth.bootstrap.email":["电子邮箱"],"auth.bootstrap.name":["姓名"],"auth.bootstrap.submit.idle":["使用 Passkey 创建账户"],"auth.bootstrap.submit.pending":["创建账户中…"],"auth.bootstrap.title":["创建管理员账户"],"auth.device.approve.confirmTitle":["确认 \\"",["userCode"],"\\""],"auth.device.approve.description":["将为您的账户创建一个新的 API 令牌并交给 CLI。给它起个名字以便日后在您的个人资料中查找,并可选择限制其能执行的操作。"],"auth.device.approve.error.alreadyApproved":["此代码已在其他标签页中被批准。"],"auth.device.approve.error.alreadyDenied":["此代码已被拒绝。"],"auth.device.approve.error.expired":["此代码在您完成之前已过期 — 请重新启动您的 CLI。"],"auth.device.approve.error.fallback":["无法完成请求。请重试。"],"auth.device.approve.idle":["批准"],"auth.device.approve.pending":["批准中…"],"auth.device.approved":["已批准。您的 CLI 将在数秒内收到令牌 — 您可以关闭此标签页。"],"auth.device.cancel":["取消"],"auth.device.denied":["已拒绝。CLI 将收到 access_denied 响应并停止轮询。"],"auth.device.deny.idle":["拒绝"],"auth.device.deny.pending":["拒绝中…"],"auth.device.description":["某个 CLI 正请求您账户的 API 令牌。在同意之前,请确认您的 CLI 显示的代码与下方代码一致。"],"auth.device.lookup.description":["CLI 显示一个 8 字符、由连字符分隔的代码 — \\"ABCD-EFGH\\"。仅字母和数字,没有零或 1。"],"auth.device.lookup.error.alreadyApproved":["此代码已被批准。如果您的 CLI 未收到令牌,请重新启动。"],"auth.device.lookup.error.alreadyDenied":["此代码已被拒绝。"],"auth.device.lookup.error.expired":["此代码已过期。请重新启动您的 CLI 以获取新的代码。"],"auth.device.lookup.error.fallback":["无法查找此代码。请重试。"],"auth.device.lookup.error.notFound":["未找到代码。请检查它是否与您的 CLI 打印的相符。"],"auth.device.lookup.submit.idle":["继续"],"auth.device.lookup.submit.pending":["检查中…"],"auth.device.lookup.title":["从您的 CLI 输入代码"],"auth.device.lookup.userCode.label":["用户代码"],"auth.device.scopeMode.inherit":["继承我的所有权限"],"auth.device.scopeMode.label":["权限"],"auth.device.scopeMode.restrict":["限制为特定权限"],"auth.device.scopes.label":["权限"],"auth.device.scopes.placeholder":["entry:post:read\\nentry:post:edit_own"],"auth.device.title":["授权 CLI 访问"],"auth.device.tokenName.default":["CLI"],"auth.device.tokenName.label":["令牌名称"],"auth.device.tokenName.placeholder":["claude-code / github-actions / mcp-prod"],"auth.device.tokenName.required":["名称为必填项。"],"auth.device.tokenName.tooLong":["名称不能超过 64 个字符。"],"auth.device.userCode.placeholder":["ABCD-EFGH"],"blockActions.copyJson":["复制 JSON"],"blockActions.delete":["删除"],"blockActions.duplicate":["复制"],"blockActions.empty":["选择一个区块以查看操作。"],"blockActions.transformTo":["转换为"],"blockScopePicker.cancel":["取消"],"blockScopePicker.description":["选择要插入的布局,或取消以从空白 ",["blockTitle"]," 开始。"],"blockScopePicker.title":["为 ",["blockTitle"]," 选择布局"],"breadcrumb.addNew":["新建"],"breadcrumb.admin":["管理"],"breadcrumb.create":["创建"],"breadcrumb.createTerm":["Create ",["singular"]],"breadcrumb.dashboard":["仪表板"],"breadcrumb.edit":["编辑"],"breadcrumb.editTerm":["Edit ",["singular"]],"breadcrumb.editUser":["编辑用户"],"breadcrumb.entries":["条目"],"breadcrumb.profile":["个人资料"],"breadcrumb.settings":["设置"],"breadcrumb.terms":["术语"],"breadcrumb.users":["用户"],"core.adminNav.content":["内容"],"core.adminNav.item.allowedDomains":["允许的域名"],"core.adminNav.item.dashboard":["仪表板"],"core.adminNav.item.mailer":["邮件发送器"],"core.adminNav.item.settings":["设置"],"core.adminNav.item.users":["用户"],"core.adminNav.keyword.accounts":["accounts"],"core.adminNav.keyword.configuration":["configuration"],"core.adminNav.keyword.domains":["domains"],"core.adminNav.keyword.email":["email"],"core.adminNav.keyword.home":["home"],"core.adminNav.keyword.options":["options"],"core.adminNav.keyword.overview":["overview"],"core.adminNav.keyword.people":["people"],"core.adminNav.keyword.preferences":["preferences"],"core.adminNav.keyword.signups":["signups"],"core.adminNav.keyword.smtp":["smtp"],"core.adminNav.keyword.team":["team"],"core.adminNav.management":["管理"],"core.adminNav.overview":["概览"],"core.adminNav.termTaxonomies":["分类法"],"core.settings.general.description":["核心站点标识与元数据。"],"core.settings.general.label":["常规"],"core.settings.site.default_og_image":["Default social image URL"],"core.settings.site.description":["对外展示的名称、标语和社交链接。"],"core.settings.site.github":["GitHub 链接"],"core.settings.site.label":["站点标识"],"core.settings.site.mastodon":["Mastodon 链接"],"core.settings.site.public":["Allow search engines to index this site"],"core.settings.site.tagline":["标语"],"core.settings.site.title":["站点标题"],"core.settings.site.twitter":["X(Twitter)链接"],"dashboard.count.draft":[["count","plural",{"other":["草稿 ","#"]}]],"dashboard.count.published":[["count","plural",{"other":["已发布 ","#"]}]],"dashboard.empty.description":["添加一个注册文章类型的插件(例如 <0>@plumix/plugin-blog</0>)即可在此处看到它。"],"dashboard.empty.title":["暂无内容类型"],"dashboard.recent.empty":["暂无内容。"],"dashboard.recent.title":["最近活动"],"dashboard.tagline":["今天想做些什么?"],"dashboard.tile.browse":["Browse ",["labelLower"]],"dashboard.tile.browse.generic":["浏览"],"dashboard.tile.description":["Write, edit, and publish ",["labelLower"],"."],"dashboard.tile.description.generic":["写作、编辑和发布。"],"dashboard.welcome":["欢迎,",["greeting"]],"dataTable.emptyState":["没有结果。"],"dataTable.loading":["加载中"],"editor.autosave.error":["保存失败"],"editor.autosave.saved":["已保存"],"editor.autosave.saving":["保存中..."],"editor.coAuthorIndicator.activeAriaLabel":["活跃的协作者"],"editor.coAuthorIndicator.presenceAriaLabel":[["display"]," · 最近活跃 ",["lastSeen"]],"editor.copyPattern.untitled":["Untitled"],"editor.device.desktop":["桌面"],"editor.device.mobile":["移动设备"],"editor.device.tablet":["平板"],"editor.document.excerpt":["Excerpt"],"editor.document.parent":["Parent"],"editor.document.parent.none":["(no parent)"],"editor.document.slug":["Slug"],"editor.document.template":["Template"],"editor.document.template.default":["(theme default)"],"editor.document.title":["Title"],"editor.entry.create.failed":["Something went wrong while creating a draft. Try again."],"editor.entry.create.failedTitle":["Couldn't create the entry"],"editor.entry.create.pending":["Creating new ",["singular"],"…"],"editor.entry.create.pending.generic":["创建中…"],"editor.entry.create.retry":["Try again"],"editor.entry.create.untitled":["无标题"],"editor.entry.edit.headline":["Edit ",["singular"]],"editor.entry.edit.headline.generic":["Edit"],"editor.entry.edit.loadFailed":["无法加载此条目。"],"editor.entry.edit.loadFailedTitle":["无法加载此条目"],"editor.entry.edit.loading":["正在加载文章…"],"editor.entry.edit.restore.conflict":["其他编辑者已修改此条目。请重新加载并重试。"],"editor.entry.edit.saveFailed":["保存失败。"],"editor.entry.edit.stale.loading":["加载中…"],"editor.entry.edit.toast.discardFailed":["无法放弃草稿,请重试。"],"editor.entry.edit.toast.draftDiscarded":["已放弃草稿。"],"editor.entry.edit.toast.publishFailed":["无法发布,请重试。"],"editor.entry.edit.toast.published":["已发布。"],"editor.headingAudit.empty":["未检测到标题结构问题。"],"editor.headingAudit.emptyHeading":["空标题。添加文本或移除该区块。"],"editor.headingAudit.multipleH1":["页面上有多个 <h1>(发现 ",["count"]," 个)。只保留一个顶级标题。"],"editor.headingAudit.skippedLevel":["标题从 h",["from"]," 跳到 h",["to"],"。请在中间插入 h",["between"],"。"],"editor.headingAudit.warningPrefix":["警告:"],"editor.layout.canvas.copyAsPatternSource":["复制为图案源"],"editor.layout.canvas.pickStarter":["选择模板…"],"editor.layout.canvas.zoomIn":["放大"],"editor.layout.canvas.zoomOut":["缩小"],"editor.layout.characterCount":[["characters","plural",{"other":["#"," 个字符"]}]],"editor.layout.copy.copied":["Copied to clipboard"],"editor.layout.copy.failed":["Couldn't copy to clipboard"],"editor.layout.copyAsPattern.untitledFallback":["无标题"],"editor.layout.draft.discard":["丢弃"],"editor.layout.draft.discarding":["丢弃中…"],"editor.layout.draft.publish":["发布"],"editor.layout.draft.publishing":["发布中…"],"editor.layout.draft.save":["保存草稿"],"editor.layout.draft.saving":["保存中…"],"editor.layout.draftBanner.body":["点击「发布」使其上线,或点击「丢弃」恢复。"],"editor.layout.draftBanner.title":["您有未发布的草稿更改。"],"editor.layout.header.backToList":["返回列表"],"editor.layout.header.titlePlaceholder":["无标题"],"editor.layout.mobile.blocksSheetDescription":["此文章的可插入区块、大纲和标题审计。"],"editor.layout.mobile.blocksSheetTitle":["区块"],"editor.layout.mobile.blocksTrigger":["区块"],"editor.layout.mobile.inspectorSheetDescription":["所选区块的操作、字段和样式控件。"],"editor.layout.mobile.inspectorSheetTitle":["检查器"],"editor.layout.mobile.inspectorTrigger":["检查器"],"editor.layout.publish":["发布"],"editor.layout.slashMenu.description":["按标题或关键字搜索区块和图案,然后按 Enter 键插入。"],"editor.layout.slashMenu.title":["插入区块或图案"],"editor.layout.tab.audit":["审计"],"editor.layout.tab.block":["区块"],"editor.layout.tab.blocks":["区块"],"editor.layout.tab.document":["Document"],"editor.layout.tab.outline":["大纲"],"editor.layout.tab.style":["样式"],"editor.layout.titleAriaLabel":["文章标题"],"editor.layout.wordCount":[["words","plural",{"other":["#"," 个词"]}]],"editor.loading":["Opening the editor…"],"editor.patternRef.detach":["分离"],"editor.patternRef.openSource":["打开源"],"editor.patternRef.unresolved":["图案未注册:<code>",["slug"],"</code>"],"editor.plainForm.publish":["发布"],"editor.plainForm.save":["保存"],"editor.plainForm.status.error":["保存失败"],"editor.plainForm.status.saved":["已保存"],"editor.plainForm.status.saving":["保存中..."],"editor.plainForm.titleAriaLabel":["文章标题"],"editor.plainForm.titlePlaceholder":["无标题"],"editor.preview.more":["More preview options"],"editor.preview.open":["Preview"],"editor.preview.tooltip":["Open a preview in a new tab"],"editor.previewFailed":["Couldn't open this entry in the editor."],"editor.previewFailedTitle":["Couldn't open the editor"],"editor.previewLink.copied":["预览链接已复制到剪贴板"],"editor.previewLink.copy":["复制预览链接"],"editor.previewLink.failed":["无法创建预览链接"],"editor.revision.conflict":["This entry changed since the preview loaded — reload and retry."],"editor.revisions.diff.empty":["无变更。"],"editor.revisions.diff.field.excerpt":["摘要"],"editor.revisions.diff.field.slug":["别名"],"editor.revisions.diff.field.title":["标题"],"editor.revisions.diff.tab.json":["原始 JSON"],"editor.revisions.diff.tab.visual":["可视化"],"editor.revisions.diffDialog.description":["并排:此修订版本(左)与当前条目(右)。"],"editor.revisions.diffDialog.pane.current":["当前"],"editor.revisions.diffDialog.pane.error":["无法加载快照。"],"editor.revisions.diffDialog.pane.thisRevision":["此修订版本"],"editor.revisions.diffDialog.title":["修订版本 JSON 差异"],"editor.revisions.preview.backToLive":["← 返回当前版本"],"editor.revisions.preview.restore":["恢复此修订版本"],"editor.revisions.preview.restoring":["恢复中…"],"editor.revisions.preview.subtitle":[["when"]," 由 ",["author"]],"editor.revisions.preview.title":["预览修订版本"],"editor.revisions.sheet.autosavesEmpty":["一旦有可用的「已发布的草稿」版本,自动保存将出现在这里。"],"editor.revisions.sheet.commentCancel":["取消"],"editor.revisions.sheet.commentPlaceholder":["描述此修订版本…"],"editor.revisions.sheet.commentSave":["保存"],"editor.revisions.sheet.commentSaving":["…"],"editor.revisions.sheet.description":["每次保存都会创建一个新的修订版本。最新的在前。"],"editor.revisions.sheet.diffAriaLabel":["查看 JSON 差异"],"editor.revisions.sheet.empty":["暂无修订版本。"],"editor.revisions.sheet.error":["无法加载修订版本。"],"editor.revisions.sheet.loadMore":["加载更多"],"editor.revisions.sheet.loadingAria":["正在加载修订版本"],"editor.revisions.sheet.loadingMore":["加载中…"],"editor.revisions.sheet.tab.all":["全部"],"editor.revisions.sheet.tab.autosaves":["自动保存"],"editor.revisions.sheet.tab.publishes":["发布"],"editor.revisions.sheet.title":["修订版本"],"editor.revisions.sheet.trigger":["修订版本"],"editor.revisions.sheet.unknownAuthor":["未知"],"editor.stale.loading":["Loading…"],"editor.staleDraft.compare":["比较"],"editor.staleDraft.description":["在您有待保存的更改时,其他人对此条目发布了更改。请选择要保留哪个版本再继续。"],"editor.staleDraft.discarding":["丢弃中…"],"editor.staleDraft.hideComparison":["隐藏对比"],"editor.staleDraft.liveNow":["当前版本"],"editor.staleDraft.title":["您的草稿已过时"],"editor.staleDraft.useMine":["使用我的"],"editor.staleDraft.useTheirs":["使用他们的"],"editor.staleDraft.yourDraft":["您的草稿"],"editor.styleTab.activeBucket":["正在编辑:",["device"]],"editor.styleTab.empty":["选择一个区块以应用样式。"],"editor.styleTab.section.background":["背景"],"editor.styleTab.section.fontSize":["字号"],"editor.styleTab.section.padding":["内边距"],"editor.styleTab.section.textColor":["文本颜色"],"editor.styleTab.select.none":["无"],"editor.toast.autosaveFailed":["Couldn't save your changes — they may contain invalid content."],"editor.toast.discardFailed":["Couldn't discard the draft — try again."],"editor.toast.discarded":["Draft discarded."],"editor.toast.publishFailed":["Couldn't publish — try again."],"editor.toast.published":["Published."],"emailChange.error.accountDisabled":["此确认所属的账户已停用。"],"emailChange.error.emailTaken":["在您请求和点击之间,其他人已认领了此电子邮箱。请请求更改到其他地址。"],"emailChange.error.fallback":["无法确认电子邮箱更改。请重试。"],"emailChange.error.missingToken":["此确认链接缺少令牌。请请求新的电子邮箱更改。"],"emailChange.error.tokenExpired":["此确认链接已过期。请请求新的电子邮箱更改。"],"emailChange.error.tokenInvalid":["此确认链接无效。可能已被使用。"],"emailChange.error.userNotFound":["此确认所属的账户已被移除。"],"entries.list.authorFilter.all":["所有作者"],"entries.list.authorFilter.mine":["我的"],"entries.list.bulk.cancel":["取消"],"entries.list.bulk.confirm":["确认"],"entries.list.bulk.delete":["永久删除"],"entries.list.bulk.deleteBody":["这将永久删除所选条目及其修订版本,且无法撤销。"],"entries.list.bulk.deleteTitle":[["count","plural",{"other":["永久删除 ","#"," 个条目?"]}]],"entries.list.bulk.restore":["恢复"],"entries.list.bulk.selected":[["count","plural",{"other":["已选择 ","#"," 个条目"]}]],"entries.list.bulk.toastDeleted":[["count","plural",{"other":["已删除 ","#"," 个条目。"]}]],"entries.list.bulk.toastFailed":["操作失败,请重试。"],"entries.list.bulk.toastRestored":[["count","plural",{"other":["已恢复 ","#"," 个条目。"]}]],"entries.list.bulk.toastTrashed":[["count","plural",{"other":["已将 ","#"," 个条目移至回收站。"]}]],"entries.list.bulk.trash":["移至回收站"],"entries.list.bulk.trashTitle":[["count","plural",{"other":["将 ","#"," 个条目移至回收站?"]}]],"entries.list.column.status":["状态"],"entries.list.column.title":["标题"],"entries.list.column.updated":["更新于"],"entries.list.deleteDialog.cancel":["取消"],"entries.list.deleteDialog.confirm":["永久删除"],"entries.list.deleteDialog.deleting":["删除中…"],"entries.list.deleteDialog.description":["这将永久删除该条目及其所有修订版本,且无法撤销。"],"entries.list.deleteDialog.title":["永久删除?"],"entries.list.empty.cta":["New ",["singularLower"]],"entries.list.empty.description":["创建一个即可在此处看到它。"],"entries.list.empty.title":["No ",["pluralLower"]," yet"],"entries.list.filterAuthorAria":["按作者筛选"],"entries.list.filterStatusAria":["按状态筛选"],"entries.list.loadError":["Couldn't load ",["pluralLower"],". Try again."],"entries.list.loadingLabel":["Loading ",["pluralLower"]],"entries.list.newButton":["New ",["singularLower"]],"entries.list.noTitle":["(无标题)"],"entries.list.row.deletePermanently":["永久删除"],"entries.list.row.duplicate":["复制"],"entries.list.row.duplicating":["复制中…"],"entries.list.row.edit":["编辑"],"entries.list.row.restore":["恢复"],"entries.list.row.restoring":["恢复中…"],"entries.list.row.trash":["移至回收站"],"entries.list.row.trashing":["移至回收站中…"],"entries.list.searchPlaceholder":["Search ",["pluralLower"],"…"],"entries.list.selectAllAria":["选择本页所有条目"],"entries.list.selectRowAria":["选择条目"],"entries.list.sortAria":["按 ",["label"]," 排序(",["direction"],")"],"entries.list.statusFilter.all":["全部"],"entries.list.statusFilter.draft":["草稿"],"entries.list.statusFilter.published":["已发布"],"entries.list.statusFilter.scheduled":["已计划"],"entries.list.statusFilter.trash":["回收站"],"entries.list.taxonomyFilter.all":["All ",["pluralLower"]],"entries.list.taxonomyFilter.empty":["No ",["pluralLower"]," match."],"entries.list.taxonomyFilter.search":["Search ",["pluralLower"],"…"],"entries.list.toast.deleted":["已永久删除。"],"entries.list.toast.duplicated":["已复制为草稿。"],"entries.list.toast.failed":["操作失败,请重试。"],"entries.list.toast.restored":["已恢复为草稿。"],"entries.list.toast.trashed":["已移至回收站。"],"entries.list.trashDialog.cancel":["取消"],"entries.list.trashDialog.confirm":["移至回收站"],"entries.list.trashDialog.description":["您可以稍后从回收站视图中恢复。"],"entries.list.trashDialog.moving":["移动中…"],"entries.list.trashDialog.title":["Move ",["singularLower"]," to trash?"],"errorBoundary.hideError":["隐藏错误"],"errorBoundary.showError":["显示错误"],"errorBoundary.title":["出错了"],"fieldTypes.boolean.no":["否"],"fieldTypes.boolean.yes":["是"],"form.multiSelect.empty":["无匹配项。"],"form.multiSelect.placeholder":["选择…"],"form.multiSelect.search":["搜索…"],"form.multiSelect.selectedCount":["已选 ",["count"]," 项"],"listPagination.next.aria":["下一页"],"listPagination.next.label":["下一页"],"listPagination.page":["第 ",["page"]," 页"],"listPagination.prev.aria":["上一页"],"listPagination.prev.label":["上一页"],"login.description":["使用 Passkey、获取一次性邮件链接,或使用提供商继续。"],"login.email.invalid":["输入有效的电子邮箱地址。"],"login.email.label":["电子邮箱"],"login.emailChange.success":["电子邮箱已确认。使用新地址登录。"],"login.locale.aria":["语言"],"login.magicLink.back":["返回"],"login.magicLink.emailRequired":["请先在上方输入您的电子邮箱。"],"login.magicLink.pending":["发送中…"],"login.magicLink.sent.description":["如果此电子邮箱有账户,我们已发送登录链接。链接将在 15 分钟后过期。"],"login.magicLink.sent.title":["请查收邮件"],"login.magicLink.submit":["通过电子邮件发送链接"],"login.oauth.continueWith":["使用 ",["label"]," 继续"],"login.oauth.separator":["或"],"login.passkey.pending":["登录中…"],"login.passkey.submit":["使用 Passkey 登录"],"login.title":["登录"],"magicLink.error.accountDisabled":["此账户已停用。"],"magicLink.error.domainNotAllowed":["您的电子邮箱域名不在白名单中。请要求管理员添加。"],"magicLink.error.fallback":["登录失败。请重试。"],"magicLink.error.missingToken":["此登录链接缺少令牌。请请求新的链接并重试。"],"magicLink.error.registrationClosed":["在管理员完成设置之前,自助注册不可用。"],"magicLink.error.tokenExpired":["此登录链接已过期。请请求新的链接。"],"magicLink.error.tokenInvalid":["此登录链接无效。可能已被使用。请请求新的链接。"],"magicLinkRequest.error.invalidInput":["输入有效的电子邮箱地址。"],"magicLinkRequest.error.network":["无法发送链接。请重试。"],"magicLinkRequest.error.notConfigured":["此站点未配置 Magic Link 登录。"],"mailer.description":["测试已配置的出站电子邮件传输是否真正送达。由 Magic Link 登录、邀请邮件以及任何使用共享邮件发送器的插件使用。"],"mailer.test.description":["通过 Magic Link 使用的同一传输发送一次性消息。错误将原样显示在此处 — 与 Magic Link 请求流程不同,后者会刻意吞下邮件错误,以免响应形态泄露电子邮箱是否已注册。"],"mailer.test.error.fallback":["无法发送测试消息。请重试。"],"mailer.test.error.notConfigured":["未配置邮件发送器适配器。请向 \`plumix({...})\` 传入 \`mailer:\`(例如 consoleMailer() 用于开发,或您的 Resend/Postmark/SES 封装)。"],"mailer.test.error.sendFailed":["邮件发送器适配器在发送时抛出错误。请检查 Worker 日志中的底层错误。"],"mailer.test.feedback.ok":["测试消息已发送至 ",["to"],"。如果一分钟内未送达,请检查您的传输适配器日志。"],"mailer.test.recipient.invalid":["输入有效的电子邮箱地址。"],"mailer.test.recipient.label":["收件人"],"mailer.test.recipient.placeholder":["ops@example.com"],"mailer.test.submit.idle":["发送测试"],"mailer.test.submit.pending":["发送中…"],"mailer.test.title":["发送测试消息"],"mailer.title":["邮件发送器"],"menu.profile":["个人资料"],"menu.settings":["设置"],"menu.signOut":["登出"],"menu.signOut.pending":["登出中…"],"metaBox.field.json.invalid":["无效的 JSON"],"metaBox.multiReference.addMore":["添加"],"metaBox.multiReference.dialogDescription":["搜索并选择 ",["kind"]," 条目"],"metaBox.multiReference.emptyValue":["未选择任何项"],"metaBox.multiReference.loading":["加载中…"],"metaBox.multiReference.noMatches":["无匹配项"],"metaBox.multiReference.orphan":["引用缺失 — 移除或重新选择"],"metaBox.multiReference.resolveError":["无法加载所选项目 — 刷新以重试。"],"metaBox.multiReference.searchPlaceholder":["搜索 ",["kind"],"…"],"metaBox.multiReference.selectIdle":["选择"],"metaBox.pluginField.crashed":["此字段渲染失败。详细信息见浏览器控制台。"],"metaBox.reference.clear":["清除"],"metaBox.reference.dialogDescription":["搜索并选择 ",["kind"]],"metaBox.reference.emptyValue":["未选择任何项"],"metaBox.reference.loading":["加载中…"],"metaBox.reference.noMatches":["无匹配项"],"metaBox.reference.orphan":["引用缺失 — 重新选择或清除"],"metaBox.reference.searchPlaceholder":["搜索 ",["kind"],"…"],"metaBox.reference.selectChange":["更改"],"metaBox.reference.selectIdle":["选择"],"metaBox.reference.untitled":["Untitled"],"metaBox.repeater.addAnother":["再添加一个"],"metaBox.repeater.addFirst":["添加行"],"metaBox.repeater.countSuffixBoth":[" / 最少 ",["min"]," / 最多 ",["max"]],"metaBox.repeater.countSuffixMax":[" / 最多 ",["max"]],"metaBox.repeater.countSuffixMin":[" / 最少 ",["min"]],"metaBox.repeater.empty":["无行"],"notFound.description":["您寻找的页面不存在,或资源未注册。请检查 URL 并重试。"],"notFound.title":["未找到"],"oauth.error.accountDisabled":["此账户已停用。"],"oauth.error.codeExchangeFailed":["无法访问提供商。请重试。"],"oauth.error.domainNotAllowed":["您的电子邮箱域名不在白名单中。请要求管理员添加。"],"oauth.error.emailMissing":["提供商未返回电子邮箱地址。"],"oauth.error.emailUnverified":["提供商尚未验证您的电子邮箱。请在该处验证后重试。"],"oauth.error.fallback":["登录失败。请重试。"],"oauth.error.linkBroken":["此账户无法访问。请联系管理员重新链接。"],"oauth.error.profileFetchFailed":["无法读取您的个人资料。请重试。"],"oauth.error.providerNotConfigured":["此提供商未配置。"],"oauth.error.registrationClosed":["OAuth 注册在管理员完成设置之前不可用。"],"oauth.error.stateExpired":["登录已过期。请重试。"],"oauth.error.stateInvalid":["登录已过期或无效。请重试。"],"palette.command.profile":["Edit profile"],"palette.command.settings":["Settings"],"palette.description":["Search to navigate the admin."],"palette.empty":["No results found."],"palette.group.commands":["Commands"],"palette.group.navigation":["Navigation"],"palette.group.recent":["Recent"],"palette.hint.close":["Close"],"palette.hint.navigate":["Navigate"],"palette.hint.select":["Select"],"palette.loading":["Searching…"],"palette.placeholder":["Search…"],"palette.title":["Command palette"],"passkey.error.challengeMismatch":["Passkey 是为另一邀请创建的。请重新加载并重试。"],"passkey.error.challengeNotBoundToUser":["登录尝试已过期。请重试。"],"passkey.error.challengeNotFound":["登录尝试已过期。请重试。"],"passkey.error.counterReplay":["您的 Passkey 似乎已在其他设备上使用。请重新注册。"],"passkey.error.credentialAlreadyRegistered":["此 Passkey 已在此站点注册。"],"passkey.error.credentialLimitReached":["您已达到此账户的 Passkey 上限。"],"passkey.error.credentialNotFound":["此 Passkey 未在此站点注册。请尝试其他 Passkey。"],"passkey.error.credentialStorageCorrupt":["您存储的 Passkey 数据已损坏。请注册新的 Passkey。"],"passkey.error.emailMismatch":["此电子邮箱与您当前登录的账户不匹配。"],"passkey.error.invalidClientData":["您的设备返回了意外响应。请重试。"],"passkey.error.invalidInput":["表单出了问题。请重新加载并重试。"],"passkey.error.invalidOrigin":["此 Passkey 不能在此站点使用。"],"passkey.error.invalidResponse":["您的设备返回了意外响应。请重试。"],"passkey.error.invalidRpId":["此 Passkey 不能在此站点使用。"],"passkey.error.invalidSignature":["无法验证您的设备的签名。请重试。"],"passkey.error.invalidToken":["此邀请链接无效。请要求管理员发送新的邀请。"],"passkey.error.networkError":["无法访问服务器。请检查您的连接并重试。"],"passkey.error.noAuthenticator":["此设备上没有可用的 Passkey。请尝试在注册它的设备上登录。"],"passkey.error.registrationClosed":["此站点的注册未开放。"],"passkey.error.tokenExpired":["此邀请链接已过期。请要求管理员发送新的邀请。"],"passkey.error.unknown":["出错了。请重试。"],"passkey.error.unsupportedAlgorithm":["不支持您的设备的签名算法。"],"passkey.error.unsupportedAttestationFormat":["不支持您的设备的响应格式。"],"passkey.error.userCancelled":["已取消登录。"],"passkey.error.userNotFound":["未找到此电子邮箱对应的账户。"],"passkey.error.userPresenceMissing":["您的设备未确认您的存在。请重试。"],"patternsSection.heading":["图案"],"patternsSection.uncategorized":["未分类"],"plugin.errorBoundary.iconAria":["插件图标渲染失败"],"plugin.errorBoundary.inlineStub":[["label"]," ",["kind"]," 失败"],"plugin.errorBoundary.pageBody":[["label"]," 在渲染时抛出错误。管理后台的其余部分不受影响。"],"plugin.errorBoundary.pageTitle":["插件页面渲染失败"],"plugin.errorBoundary.unknownPlugin":["此插件"],"plugin.errorBoundary.widgetBody":[["label"]," 渲染失败。"],"pluginPage.loading.aria":["正在加载 ",["label"]],"pluginPage.notLoaded.body":["管理后台清单在 <code>",["path"],"</code> 处声明了页面,但未注册其 React 组件。"],"pluginPage.notLoaded.title":["插件未加载"],"profile.language.aria":["语言"],"profile.language.description":["管理后台将以此语言显示。切换后页面将重新加载,以便新翻译应用到各处。"],"profile.language.error":["无法切换语言。请重试。"],"profile.language.title":["语言"],"profile.passkeys.added":["添加于 ",["date"]],"profile.passkeys.delete.button":["删除"],"profile.passkeys.delete.cancel":["取消"],"profile.passkeys.delete.confirm":["删除 Passkey"],"profile.passkeys.delete.description":["注册 \\"",["name"],"\\" 的设备将无法再登录。您可以稍后重新注册。"],"profile.passkeys.delete.fallback":["无法删除 Passkey。请重试。"],"profile.passkeys.delete.pending":["删除中…"],"profile.passkeys.delete.title":["删除此 Passkey?"],"profile.passkeys.description":["可以登录此账户的设备。删除旧设备前请先添加新设备 — 至少需要保留一个 Passkey。"],"profile.passkeys.empty":["未注册 Passkey。添加一个以启用登录。"],"profile.passkeys.enroll.alreadyRegistered":["此 Passkey 已在此账户中注册。"],"profile.passkeys.enroll.cancelled":["已取消。准备好后请点击「添加 Passkey」。"],"profile.passkeys.enroll.emailMismatch":["注册失败 — 请重新登录后再试。"],"profile.passkeys.enroll.fallback":["无法注册 Passkey。请重试。"],"profile.passkeys.enroll.idle":["添加 Passkey"],"profile.passkeys.enroll.networkError":["网络错误。请检查您的连接并重试。"],"profile.passkeys.enroll.noAuthenticator":["此设备不支持 Passkey。"],"profile.passkeys.enroll.pending":["添加中…"],"profile.passkeys.lastCredential":["您不能删除最后一个 Passkey。请先添加另一个。"],"profile.passkeys.lastUsed":["上次使用 ",["date"]],"profile.passkeys.loadFailed":["无法加载您的 Passkey。请刷新并重试。"],"profile.passkeys.loading":["加载中…"],"profile.passkeys.notFound":["此 Passkey 不再存在。请刷新列表。"],"profile.passkeys.rename.button":["重命名"],"profile.passkeys.rename.cancel":["取消"],"profile.passkeys.rename.fallback":["无法重命名 Passkey。请重试。"],"profile.passkeys.rename.label":["重命名 Passkey"],"profile.passkeys.rename.nameEmpty":["名称不能为空。"],"profile.passkeys.rename.pending":["保存中…"],"profile.passkeys.rename.save":["保存"],"profile.passkeys.synced":["已同步"],"profile.passkeys.title":["Passkey"],"profile.passkeys.transport.hybrid":["跨设备"],"profile.passkeys.transport.internal":["此设备"],"profile.passkeys.transport.securityKey":["安全密钥"],"profile.passkeys.unnamed":["未命名 Passkey"],"profile.sessions.description":["已登录此账户的设备。撤销您不认识的会话,或在怀疑泄露时登出除当前浏览器以外的所有会话。"],"profile.sessions.device.browserOnOs":[["browser"],"(",["os"],")"],"profile.sessions.empty":["没有由 plumix 管理的会话。您的登录由外部身份提供商处理。"],"profile.sessions.loadFailed":["无法加载您的会话。请刷新并重试。"],"profile.sessions.loading":["加载中…"],"profile.sessions.revoke.button":["登出"],"profile.sessions.revoke.cancel":["取消"],"profile.sessions.revoke.confirm":["登出设备"],"profile.sessions.revoke.current":["您不能登出当前正在使用的会话。"],"profile.sessions.revoke.description":[["device"]," 于 ",["when"]," 登录。该设备下次需要重新登录。"],"profile.sessions.revoke.descriptionWithIp":[["device"]," 于 ",["when"]," 从 ",["ip"]," 登录。该设备下次需要重新登录。"],"profile.sessions.revoke.fallback":["无法登出会话。请重试。"],"profile.sessions.revoke.notFound":["此会话不再存在。请刷新列表。"],"profile.sessions.revoke.pending":["登出中…"],"profile.sessions.revoke.title":["登出此设备?"],"profile.sessions.revokeAll.count":[["revoked","plural",{"0":["没有其他会话需要登出。"],"other":["已登出 ","#"," 个其他会话。"]}]],"profile.sessions.revokeAll.fallback":["无法登出会话。请重试。"],"profile.sessions.revokeAll.idle":["登出其他设备"],"profile.sessions.revokeAll.pending":["登出中…"],"profile.sessions.signedIn":[["when"]," 登录"],"profile.sessions.thisDevice":["此设备"],"profile.sessions.title":["活跃会话"],"profile.sessions.unknownDevice":["未知设备"],"settings.empty.description":["核心刻意不提供设置 — 插件(或您自己的 plumix.config)通过 <0>ctx.registerSettingsPage</0> 和 <1>ctx.registerSettingsGroup</1> 声明页面和分组。已注册的页面将在此显示,每页一张卡片。"],"settings.empty.title":["暂未注册设置"],"settings.page.empty.description":["此设置页面尚未指向已注册的分组。插件使用 registerSettingsPage 辅助函数创建页面:"],"settings.page.empty.title":["此页面没有分组"],"settings.page.loadFailed":["无法加载此设置。请重试。"],"settings.page.loading":["正在加载设置"],"settings.page.notFound.title":["未找到"],"settings.page.saveFailed":["无法保存设置。"],"settings.page.saved":["已保存。"],"settings.page.submit.idle":["保存更改"],"settings.page.submit.pending":["保存中…"],"settings.pageSummary":[["count","plural",{"other":["#"," 个分组"]}]],"settings.title":["设置"],"slashMenu.empty":["无匹配项"],"slashMenu.searchAria":["搜索区块和图案"],"slashMenu.uncategorized":["其他"],"starterModal.description":["选择一个起始布局或从空白画布开始。"],"starterModal.startBlank":["从空白开始"],"starterModal.title":["从图案开始"],"termForm.cancel":["取消"],"termForm.description":["描述"],"termForm.name":["名称"],"termForm.parent":["父项"],"termForm.parent.rootOption":["— 根 —"],"termForm.slug":["别名"],"termForm.slug.format":["别名只能包含小写字母、数字和连字符。"],"termForm.submitting":["保存中…"],"terms.create.backLink":["Back to ",["pluralLower"]],"terms.create.description.flat":["通过添加新术语来对内容进行分组。"],"terms.create.description.hierarchical":["选择父术语将此术语嵌套其下,或留空以创建根级别术语。"],"terms.create.error.createFallback":["无法创建术语。请重试。"],"terms.create.error.emptySlug":["无法从此名称生成别名 — 请手动输入。"],"terms.create.heading":["New ",["singularLower"]],"terms.create.submit":["Create ",["singularLower"]],"terms.edit.backLink":["Back to ",["pluralLower"]],"terms.edit.delete.button":["删除术语"],"terms.edit.delete.cancel":["取消"],"terms.edit.delete.cardDescription":["删除此术语并解除使用它的所有文章的关联。子项将提升到根级别(其文章保留其他术语分配)。"],"terms.edit.delete.cardTitle":["删除术语"],"terms.edit.delete.confirm":["永久删除"],"terms.edit.delete.deleting":["删除中…"],"terms.edit.delete.dialogDescription":["将移除文章对此术语的分配。如果此术语有子项,它们将自动提升为根级别。"],"terms.edit.delete.dialogTitle":["删除 ",["termName"],"?"],"terms.edit.descendantsHint":[" — 子项无法被选为父项。"],"terms.edit.error.deleteFallback":["无法删除术语。请重试。"],"terms.edit.error.saveFallback":["无法保存更改。请重试。"],"terms.edit.heading":["Edit ",["singularLower"]],"terms.edit.loadingAria":["正在加载术语"],"terms.edit.notFound.message":["无法加载此术语。它可能已被删除。"],"terms.edit.notFound.title":["未找到"],"terms.edit.submit":["保存更改"],"terms.error.parentMismatch":["所选父项属于其他分类法。"],"terms.error.parentSelfOrCycle":["一个术语不能是其自身的祖先 — 请选择其他父项。"],"terms.error.slugTaken":["该分类法中已存在使用此别名的术语。"],"terms.list.column.description":["描述"],"terms.list.column.name":["名称"],"terms.list.empty.cta":["New ",["singularLower"]],"terms.list.empty.description":["创建一个即可在此处看到它。"],"terms.list.empty.title":["No ",["singularLower"]," yet"],"terms.list.loadError":["Couldn't load ",["pluralLower"],". Try again."],"terms.list.loadingLabel":["Loading ",["pluralLower"]],"terms.list.newButton":["New ",["singularLower"]],"terms.list.searchPlaceholder":["Search ",["pluralLower"],"…"],"tokenSwatch.none":["无"],"type.generic.addNew":["新增"],"type.generic.addNewItem":["添加"],"type.generic.allItems":["全部"],"type.generic.editItem":["编辑"],"type.generic.filterItemsList":["筛选列表"],"type.generic.itemPublished":["已发布"],"type.generic.itemPublishedPrivately":["已私密发布"],"type.generic.itemRevertedToDraft":["已还原为草稿"],"type.generic.itemScheduled":["已计划"],"type.generic.itemTrashed":["已移至回收站"],"type.generic.itemUpdated":["已更新"],"type.generic.itemsList":["列表"],"type.generic.itemsListNavigation":["列表导航"],"type.generic.loadErrorItems":["加载失败。请重试。"],"type.generic.loadingItems":["加载中…"],"type.generic.moveToTrash":["移至回收站?"],"type.generic.newItem":["新建"],"type.generic.noMatch":["无匹配项"],"type.generic.notFound":["暂无内容"],"type.generic.notFoundInTrash":["回收站为空"],"type.generic.parentItem":["父项"],"type.generic.parentItemColon":["父项:"],"type.generic.plural":["项目"],"type.generic.searchItems":["搜索…"],"type.generic.singular":["项目"],"type.generic.taxonomy.addOrRemoveItems":["添加或移除"],"type.generic.taxonomy.backToItems":["← 返回"],"type.generic.taxonomy.filterByItem":["筛选"],"type.generic.taxonomy.newItemName":["新名称"],"type.generic.taxonomy.noTerms":["—"],"type.generic.taxonomy.plural":["术语"],"type.generic.taxonomy.separateItemsWithCommas":["用逗号分隔"],"type.generic.taxonomy.singular":["术语"],"type.generic.taxonomy.updateItem":["更新"],"type.generic.untitledItem":["无标题"],"type.generic.viewItem":["查看"],"type.generic.viewItems":["查看"],"userEdit.backToList":["返回用户"],"userEdit.cancel":["取消"],"userEdit.delete.button":["删除用户"],"userEdit.delete.confirm.description":["如果此用户撰写了任何文章,下一步将重新分配它们。如果没有,请保留「保持文章原状」。"],"userEdit.delete.confirm.idle":["永久删除"],"userEdit.delete.confirm.pending":["删除中…"],"userEdit.delete.confirm.title":["确认删除:",["email"]],"userEdit.delete.description":["永久删除。文章会保留,但您可以选择由谁继承所有权。"],"userEdit.delete.reassign.keepAsIs":["保持文章原状(无需重新分配)"],"userEdit.delete.reassign.label":["将文章重新分配给"],"userEdit.delete.title":["删除用户"],"userEdit.description.other":["更新此账户的详细信息。角色更改会立即使现有会话失效。"],"userEdit.description.self":["更新您的显示名称。角色和账户状态由管理员管理。"],"userEdit.email.cancelPending.idle":["取消"],"userEdit.email.cancelPending.pending":["取消中…"],"userEdit.email.changeButton":["更改电子邮箱"],"userEdit.email.confirmationSent":["确认邮件已发送至 ",["email"],"。点击链接后更改生效。"],"userEdit.email.dialog.cancel":["取消"],"userEdit.email.dialog.currentLabel":["当前电子邮箱"],"userEdit.email.dialog.description":["我们将向新地址发送确认链接。点击链接后更改生效。此账户的会话将在此时被登出 — 重新登录使用新电子邮箱。"],"userEdit.email.dialog.newLabel":["新电子邮箱"],"userEdit.email.dialog.submit.idle":["发送确认"],"userEdit.email.dialog.submit.pending":["发送中…"],"userEdit.email.dialog.title":["更改电子邮箱地址"],"userEdit.email.error.accountDisabled":["此账户已停用。"],"userEdit.email.error.mailerNotConfigured":["电子邮箱更改需要服务器端配置 Magic Link 邮件发送器。请向 \`plumix({...})\` 传入 \`auth.magicLink\` 和 \`mailer:\` 以启用。"],"userEdit.email.error.requestFallback":["无法请求更改。请重试。"],"userEdit.email.error.taken":["此电子邮箱已被另一个账户使用。"],"userEdit.email.invalid":["输入有效的电子邮箱地址。"],"userEdit.email.label":["电子邮箱"],"userEdit.email.pending":["待更改为 <code>",["newEmail"],"</code> — ",["expiresAt"]," 过期"],"userEdit.email.placeholder":["new@example.com"],"userEdit.error.deleteFallback":["无法删除用户。请重试。"],"userEdit.error.emailTaken":["已存在使用此电子邮箱的用户。"],"userEdit.error.hasEntries":["此用户撰写了文章。请在上方选择要将文章重新分配给谁。"],"userEdit.error.lastAdmin.delete":["无法删除最后一个管理员。请先提升其他人。"],"userEdit.error.lastAdmin.status":["无法停用最后一个管理员。请先提升其他人。"],"userEdit.error.lastAdmin.update":["无法执行此操作 — 这是最后一个管理员。请先提升其他人。"],"userEdit.error.reassignToSelf":["无法将内容重新分配给正在删除的用户。"],"userEdit.error.slugTaken":["That author slug is already taken. Choose a different one."],"userEdit.error.statusFallback":["无法更新账户状态。请重试。"],"userEdit.error.updateFallback":["无法保存更改。请重试。"],"userEdit.loadFailed":["无法加载此用户。可能已被删除。"],"userEdit.loading.aria":["正在加载用户"],"userEdit.name.label":["姓名"],"userEdit.notFound.title":["未找到"],"userEdit.role.label":["角色"],"userEdit.role.selfReadonly":["只有其他管理员可以更改您的角色。"],"userEdit.slug.description":["Used in this author's archive URL under /authors/. Changing it breaks existing links to the old address."],"userEdit.slug.format":["Slug must be lowercase letters, numbers, and dashes."],"userEdit.slug.label":["Author slug"],"userEdit.status.description.active":["停用将立即登出用户并阻止未来登录。已发布的文章会保留。"],"userEdit.status.description.disabled":["停用的账户无法登录。重新激活会恢复访问权限;Passkey 仍保持已注册。"],"userEdit.status.title":["账户状态"],"userEdit.status.toggle.disable":["停用用户"],"userEdit.status.toggle.disabling":["停用中…"],"userEdit.status.toggle.enable":["重新激活用户"],"userEdit.status.toggle.enabling":["启用中…"],"userEdit.submit.idle":["保存更改"],"userEdit.submit.pending":["保存中…"],"userEdit.title.other":["编辑 ",["email"]],"userEdit.title.self":["您的个人资料"],"userInvite.backToList":["返回用户"],"userInvite.cancel":["取消"],"userInvite.copy.aria":["复制邀请链接"],"userInvite.copy.copied":["已复制"],"userInvite.copy.idle":["复制"],"userInvite.description":["首次打开邀请链接时,他们会注册一个 Passkey。无需密码。"],"userInvite.email.invalid":["输入有效的电子邮箱地址"],"userInvite.email.label":["电子邮箱"],"userInvite.error.emailTaken":["已存在使用此电子邮箱的用户。"],"userInvite.error.fallback":["无法发送邀请。请重试。"],"userInvite.name.label":["姓名"],"userInvite.role.label":["角色"],"userInvite.submit.idle":["发送邀请"],"userInvite.submit.pending":["邀请中…"],"userInvite.success.another":["邀请另一位"],"userInvite.success.backToList":["返回用户"],"userInvite.success.description":["与 ",["email"]," 分享下方链接。他们首次打开时会注册一个 Passkey。链接将在 7 天后过期。"],"userInvite.success.link.label":["邀请链接"],"userInvite.success.title":["邀请已就绪"],"userInvite.title":["邀请用户"],"userRole.admin":["管理员"],"userRole.author":["作者"],"userRole.contributor":["贡献者"],"userRole.editor":["编辑"],"userRole.long.admin":["管理员 — 完全控制"],"userRole.long.author":["作者 — 发布自己的文章"],"userRole.long.contributor":["贡献者 — 草稿,不发布"],"userRole.long.editor":["编辑 — 发布并编辑所有文章"],"userRole.long.subscriber":["订阅者 — 仅可读"],"userRole.subscriber":["订阅者"],"users.list.column.created":["创建于"],"users.list.column.lastSignIn":["上次登录"],"users.list.column.role":["角色"],"users.list.column.status":["状态"],"users.list.column.user":["用户"],"users.list.empty.description":["清除筛选条件或邀请新成员。"],"users.list.empty.invite":["邀请用户"],"users.list.empty.title":["没有匹配您筛选条件的用户"],"users.list.invite":["添加"],"users.list.loadFailed":["无法加载用户。请重试。"],"users.list.loading":["正在加载用户"],"users.list.roleFilter.all":["所有角色"],"users.list.roleFilter.aria":["按角色筛选"],"users.list.row.active":["活跃"],"users.list.row.disabled":["已停用"],"users.list.row.lastSignIn.never":["从未"],"users.list.row.noName":["(无姓名)"],"users.list.row.you":["您"],"users.list.searchPlaceholder":["按电子邮箱搜索…"],"users.list.title":["用户"],"validate.email.invalid":["输入有效的电子邮箱地址。"],"validate.email.maxLength":["电子邮箱过长。"],"validate.email.required":["请输入电子邮箱地址。"],"validate.id.format":["id 必须为正整数"],"validate.name.maxLength":["名称过长。"]}`);export{e as messages};
|
|
1
|
+
var e=JSON.parse(`{"admin.slug.format":["Slug must be lowercase letters, numbers, and dashes."],"allowedDomains.add.defaultRole.label":["默认角色"],"allowedDomains.add.description":["仅使用裸域名 — 不含协议,不含路径。"],"allowedDomains.add.domain.invalid":["输入有效的主机名(例如 example.com)。"],"allowedDomains.add.domain.label":["域名"],"allowedDomains.add.placeholder":["example.com"],"allowedDomains.add.submit.idle":["添加"],"allowedDomains.add.submit.pending":["添加中…"],"allowedDomains.add.title":["添加域名"],"allowedDomains.description":["OAuth 注册允许的电子邮箱域名。新 OAuth 账户将使用此处设置的角色创建。已停用的行会拒绝注册,但保留其角色映射。"],"allowedDomains.error.domainExists":["此域名已配置。"],"allowedDomains.error.fallback":["无法保存域名。请重试。"],"allowedDomains.list.empty":["未配置域名。OAuth 注册将关闭,直到至少添加一个已启用的域名。"],"allowedDomains.list.loading":["加载中…"],"allowedDomains.list.title":["已配置的域名"],"allowedDomains.row.deleteAria":["删除 ",["domain"]],"allowedDomains.row.deleteCancel":["取消"],"allowedDomains.row.deleteConfirm":["确认删除"],"allowedDomains.row.disabled":["已停用"],"allowedDomains.row.enabled":["已启用"],"allowedDomains.title":["允许的域名"],"apiTokens.col.actions":["操作"],"apiTokens.col.expires":["过期"],"apiTokens.col.lastUsed":["上次使用"],"apiTokens.col.name":["名称"],"apiTokens.col.prefix":["前缀"],"apiTokens.col.scopes":["权限"],"apiTokens.create.capabilities":["权限"],"apiTokens.create.capabilities.help":["每行一个权限。令牌的权限永远不能超过您角色的权限 — 这是一个额外的限制。"],"apiTokens.create.capabilities.placeholder":["entry:post:read\\nentry:post:edit_own"],"apiTokens.create.expires":["过期"],"apiTokens.create.name":["名称"],"apiTokens.create.namePlaceholder":["github-actions / claude-code / mcp-prod"],"apiTokens.create.nameRequired":["名称为必填项。"],"apiTokens.create.nameTooLong":["名称不能超过 64 个字符。"],"apiTokens.create.permissions":["权限"],"apiTokens.create.scope.inherit":["继承您的所有权限"],"apiTokens.create.scope.restrict":["限制为特定权限"],"apiTokens.create.submit.idle":["创建令牌"],"apiTokens.create.submit.pending":["创建中…"],"apiTokens.description.admin":["此用户创建的令牌。您可以撤销其中任何一个 — 创建需要所有者经过身份验证的浏览器会话。"],"apiTokens.description.self":["为 CLI、MCP 服务器、CI 机器人或其他非浏览器客户端提供的个人访问令牌。完整密钥仅在创建时显示一次。"],"apiTokens.empty.description.admin":["此用户未创建任何 API 令牌。"],"apiTokens.empty.description.self":["在上方为您的 CLI / MCP 服务器 / CI 机器人创建一个。"],"apiTokens.empty.title":["暂无令牌"],"apiTokens.expiry.30":["30 天"],"apiTokens.expiry.7":["7 天"],"apiTokens.expiry.90":["90 天"],"apiTokens.expiry.never":["永不"],"apiTokens.loading":["正在加载令牌…"],"apiTokens.mint.fallback":["无法创建令牌。请重试。"],"apiTokens.never":["永不"],"apiTokens.revoke.button":["撤销"],"apiTokens.revoke.cancel":["取消"],"apiTokens.revoke.confirm":["撤销"],"apiTokens.revoke.description":["令牌将立即停止工作。任何使用它的客户端下次请求时将获得 401。"],"apiTokens.revoke.fallback":["撤销失败。请重试。"],"apiTokens.revoke.pending":["撤销中…"],"apiTokens.revoke.title":["撤销 \\"",["name"],"\\"?"],"apiTokens.scope.empty":["无权限"],"apiTokens.scope.inheritRole":["继承角色"],"apiTokens.secret.copyAria":["复制令牌"],"apiTokens.secret.description":["立即复制密钥。我们不会再次显示 — 如果遗失,您必须撤销并重新创建。"],"apiTokens.secret.done":["完成"],"apiTokens.secret.title":["令牌 \\"",["name"],"\\" 已创建"],"apiTokens.title":["API 令牌"],"auth.acceptInvite.description":["设置 Passkey 以完成账户创建。您的浏览器或设备会引导您完成此过程。"],"auth.acceptInvite.name":["姓名"],"auth.acceptInvite.submit.idle":["创建 Passkey"],"auth.acceptInvite.submit.pending":["设置中…"],"auth.acceptInvite.title":["接受邀请"],"auth.bootstrap.description":["设置您的站点 — 此电子邮箱将成为管理员账户。"],"auth.bootstrap.email":["电子邮箱"],"auth.bootstrap.name":["姓名"],"auth.bootstrap.submit.idle":["使用 Passkey 创建账户"],"auth.bootstrap.submit.pending":["创建账户中…"],"auth.bootstrap.title":["创建管理员账户"],"auth.device.approve.confirmTitle":["确认 \\"",["userCode"],"\\""],"auth.device.approve.description":["将为您的账户创建一个新的 API 令牌并交给 CLI。给它起个名字以便日后在您的个人资料中查找,并可选择限制其能执行的操作。"],"auth.device.approve.error.alreadyApproved":["此代码已在其他标签页中被批准。"],"auth.device.approve.error.alreadyDenied":["此代码已被拒绝。"],"auth.device.approve.error.expired":["此代码在您完成之前已过期 — 请重新启动您的 CLI。"],"auth.device.approve.error.fallback":["无法完成请求。请重试。"],"auth.device.approve.idle":["批准"],"auth.device.approve.pending":["批准中…"],"auth.device.approved":["已批准。您的 CLI 将在数秒内收到令牌 — 您可以关闭此标签页。"],"auth.device.cancel":["取消"],"auth.device.denied":["已拒绝。CLI 将收到 access_denied 响应并停止轮询。"],"auth.device.deny.idle":["拒绝"],"auth.device.deny.pending":["拒绝中…"],"auth.device.description":["某个 CLI 正请求您账户的 API 令牌。在同意之前,请确认您的 CLI 显示的代码与下方代码一致。"],"auth.device.lookup.description":["CLI 显示一个 8 字符、由连字符分隔的代码 — \\"ABCD-EFGH\\"。仅字母和数字,没有零或 1。"],"auth.device.lookup.error.alreadyApproved":["此代码已被批准。如果您的 CLI 未收到令牌,请重新启动。"],"auth.device.lookup.error.alreadyDenied":["此代码已被拒绝。"],"auth.device.lookup.error.expired":["此代码已过期。请重新启动您的 CLI 以获取新的代码。"],"auth.device.lookup.error.fallback":["无法查找此代码。请重试。"],"auth.device.lookup.error.notFound":["未找到代码。请检查它是否与您的 CLI 打印的相符。"],"auth.device.lookup.submit.idle":["继续"],"auth.device.lookup.submit.pending":["检查中…"],"auth.device.lookup.title":["从您的 CLI 输入代码"],"auth.device.lookup.userCode.label":["用户代码"],"auth.device.scopeMode.inherit":["继承我的所有权限"],"auth.device.scopeMode.label":["权限"],"auth.device.scopeMode.restrict":["限制为特定权限"],"auth.device.scopes.label":["权限"],"auth.device.scopes.placeholder":["entry:post:read\\nentry:post:edit_own"],"auth.device.title":["授权 CLI 访问"],"auth.device.tokenName.default":["CLI"],"auth.device.tokenName.label":["令牌名称"],"auth.device.tokenName.placeholder":["claude-code / github-actions / mcp-prod"],"auth.device.tokenName.required":["名称为必填项。"],"auth.device.tokenName.tooLong":["名称不能超过 64 个字符。"],"auth.device.userCode.placeholder":["ABCD-EFGH"],"blockActions.copyJson":["复制 JSON"],"blockActions.delete":["删除"],"blockActions.duplicate":["复制"],"blockActions.empty":["选择一个区块以查看操作。"],"blockActions.transformTo":["转换为"],"blockScopePicker.cancel":["取消"],"blockScopePicker.description":["选择要插入的布局,或取消以从空白 ",["blockTitle"]," 开始。"],"blockScopePicker.title":["为 ",["blockTitle"]," 选择布局"],"breadcrumb.addNew":["新建"],"breadcrumb.admin":["管理"],"breadcrumb.create":["创建"],"breadcrumb.createTerm":["Create ",["singular"]],"breadcrumb.dashboard":["仪表板"],"breadcrumb.edit":["编辑"],"breadcrumb.editTerm":["Edit ",["singular"]],"breadcrumb.editUser":["编辑用户"],"breadcrumb.entries":["条目"],"breadcrumb.profile":["个人资料"],"breadcrumb.settings":["设置"],"breadcrumb.terms":["术语"],"breadcrumb.users":["用户"],"core.adminNav.content":["内容"],"core.adminNav.item.allowedDomains":["允许的域名"],"core.adminNav.item.dashboard":["仪表板"],"core.adminNav.item.mailer":["邮件发送器"],"core.adminNav.item.settings":["设置"],"core.adminNav.item.users":["用户"],"core.adminNav.keyword.accounts":["accounts"],"core.adminNav.keyword.configuration":["configuration"],"core.adminNav.keyword.domains":["domains"],"core.adminNav.keyword.email":["email"],"core.adminNav.keyword.home":["home"],"core.adminNav.keyword.options":["options"],"core.adminNav.keyword.overview":["overview"],"core.adminNav.keyword.people":["people"],"core.adminNav.keyword.preferences":["preferences"],"core.adminNav.keyword.signups":["signups"],"core.adminNav.keyword.smtp":["smtp"],"core.adminNav.keyword.team":["team"],"core.adminNav.management":["管理"],"core.adminNav.overview":["概览"],"core.adminNav.termTaxonomies":["分类法"],"core.settings.general.description":["核心站点标识与元数据。"],"core.settings.general.label":["常规"],"core.settings.site.default_og_image":["Default social image URL"],"core.settings.site.description":["对外展示的名称、标语和社交链接。"],"core.settings.site.github":["GitHub 链接"],"core.settings.site.label":["站点标识"],"core.settings.site.mastodon":["Mastodon 链接"],"core.settings.site.public":["Allow search engines to index this site"],"core.settings.site.tagline":["标语"],"core.settings.site.title":["站点标题"],"core.settings.site.twitter":["X(Twitter)链接"],"dashboard.count.draft":[["count","plural",{"other":["草稿 ","#"]}]],"dashboard.count.published":[["count","plural",{"other":["已发布 ","#"]}]],"dashboard.empty.description":["添加一个注册文章类型的插件(例如 <0>@plumix/plugin-blog</0>)即可在此处看到它。"],"dashboard.empty.title":["暂无内容类型"],"dashboard.recent.empty":["暂无内容。"],"dashboard.recent.title":["最近活动"],"dashboard.tagline":["今天想做些什么?"],"dashboard.tile.browse":["Browse ",["labelLower"]],"dashboard.tile.browse.generic":["浏览"],"dashboard.tile.description":["Write, edit, and publish ",["labelLower"],"."],"dashboard.tile.description.generic":["写作、编辑和发布。"],"dashboard.welcome":["欢迎,",["greeting"]],"dataTable.emptyState":["没有结果。"],"dataTable.loading":["加载中"],"editor.autosave.error":["保存失败"],"editor.autosave.saved":["已保存"],"editor.autosave.saving":["保存中..."],"editor.coAuthorIndicator.activeAriaLabel":["活跃的协作者"],"editor.coAuthorIndicator.presenceAriaLabel":[["display"]," · 最近活跃 ",["lastSeen"]],"editor.copyPattern.untitled":["Untitled"],"editor.device.desktop":["桌面"],"editor.device.mobile":["移动设备"],"editor.device.tablet":["平板"],"editor.document.excerpt":["Excerpt"],"editor.document.parent":["Parent"],"editor.document.parent.none":["(no parent)"],"editor.document.slug":["Slug"],"editor.document.template":["Template"],"editor.document.template.default":["(theme default)"],"editor.document.title":["Title"],"editor.entry.create.failed":["Something went wrong while creating a draft. Try again."],"editor.entry.create.failedTitle":["Couldn't create the entry"],"editor.entry.create.pending":["Creating new ",["singular"],"…"],"editor.entry.create.pending.generic":["创建中…"],"editor.entry.create.retry":["Try again"],"editor.entry.create.untitled":["无标题"],"editor.entry.edit.headline":["Edit ",["singular"]],"editor.entry.edit.headline.generic":["Edit"],"editor.entry.edit.loadFailed":["无法加载此条目。"],"editor.entry.edit.loadFailedTitle":["无法加载此条目"],"editor.entry.edit.loading":["正在加载文章…"],"editor.entry.edit.restore.conflict":["其他编辑者已修改此条目。请重新加载并重试。"],"editor.entry.edit.saveFailed":["保存失败。"],"editor.entry.edit.stale.loading":["加载中…"],"editor.entry.edit.toast.discardFailed":["无法放弃草稿,请重试。"],"editor.entry.edit.toast.draftDiscarded":["已放弃草稿。"],"editor.entry.edit.toast.publishFailed":["无法发布,请重试。"],"editor.entry.edit.toast.published":["已发布。"],"editor.headingAudit.empty":["未检测到标题结构问题。"],"editor.headingAudit.emptyHeading":["空标题。添加文本或移除该区块。"],"editor.headingAudit.multipleH1":["页面上有多个 <h1>(发现 ",["count"]," 个)。只保留一个顶级标题。"],"editor.headingAudit.skippedLevel":["标题从 h",["from"]," 跳到 h",["to"],"。请在中间插入 h",["between"],"。"],"editor.headingAudit.warningPrefix":["警告:"],"editor.layout.canvas.copyAsPatternSource":["复制为图案源"],"editor.layout.canvas.pickStarter":["选择模板…"],"editor.layout.canvas.zoomIn":["放大"],"editor.layout.canvas.zoomOut":["缩小"],"editor.layout.characterCount":[["characters","plural",{"other":["#"," 个字符"]}]],"editor.layout.copy.copied":["Copied to clipboard"],"editor.layout.copy.failed":["Couldn't copy to clipboard"],"editor.layout.copyAsPattern.untitledFallback":["无标题"],"editor.layout.draft.discard":["丢弃"],"editor.layout.draft.discarding":["丢弃中…"],"editor.layout.draft.publish":["发布"],"editor.layout.draft.publishing":["发布中…"],"editor.layout.draft.save":["保存草稿"],"editor.layout.draft.saving":["保存中…"],"editor.layout.draftBanner.body":["点击「发布」使其上线,或点击「丢弃」恢复。"],"editor.layout.draftBanner.title":["您有未发布的草稿更改。"],"editor.layout.header.backToList":["返回列表"],"editor.layout.header.titlePlaceholder":["无标题"],"editor.layout.mobile.blocksSheetDescription":["此文章的可插入区块、大纲和标题审计。"],"editor.layout.mobile.blocksSheetTitle":["区块"],"editor.layout.mobile.blocksTrigger":["区块"],"editor.layout.mobile.inspectorSheetDescription":["所选区块的操作、字段和样式控件。"],"editor.layout.mobile.inspectorSheetTitle":["检查器"],"editor.layout.mobile.inspectorTrigger":["检查器"],"editor.layout.publish":["发布"],"editor.layout.slashMenu.description":["按标题或关键字搜索区块和图案,然后按 Enter 键插入。"],"editor.layout.slashMenu.title":["插入区块或图案"],"editor.layout.tab.audit":["审计"],"editor.layout.tab.block":["区块"],"editor.layout.tab.blocks":["区块"],"editor.layout.tab.document":["Document"],"editor.layout.tab.outline":["大纲"],"editor.layout.tab.style":["样式"],"editor.layout.titleAriaLabel":["文章标题"],"editor.layout.wordCount":[["words","plural",{"other":["#"," 个词"]}]],"editor.loading":["Opening the editor…"],"editor.patternRef.detach":["分离"],"editor.patternRef.openSource":["打开源"],"editor.patternRef.unresolved":["图案未注册:<code>",["slug"],"</code>"],"editor.plainForm.publish":["发布"],"editor.plainForm.save":["保存"],"editor.plainForm.status.error":["保存失败"],"editor.plainForm.status.saved":["已保存"],"editor.plainForm.status.saving":["保存中..."],"editor.plainForm.titleAriaLabel":["文章标题"],"editor.plainForm.titlePlaceholder":["无标题"],"editor.preview.more":["More preview options"],"editor.preview.open":["Preview"],"editor.preview.tooltip":["Open a preview in a new tab"],"editor.previewFailed":["Couldn't open this entry in the editor."],"editor.previewFailedTitle":["Couldn't open the editor"],"editor.previewLink.copied":["预览链接已复制到剪贴板"],"editor.previewLink.copy":["复制预览链接"],"editor.previewLink.failed":["无法创建预览链接"],"editor.revision.conflict":["This entry changed since the preview loaded — reload and retry."],"editor.revisions.diff.empty":["无变更。"],"editor.revisions.diff.field.excerpt":["摘要"],"editor.revisions.diff.field.slug":["别名"],"editor.revisions.diff.field.title":["标题"],"editor.revisions.diff.tab.json":["原始 JSON"],"editor.revisions.diff.tab.visual":["可视化"],"editor.revisions.diffDialog.description":["并排:此修订版本(左)与当前条目(右)。"],"editor.revisions.diffDialog.pane.current":["当前"],"editor.revisions.diffDialog.pane.error":["无法加载快照。"],"editor.revisions.diffDialog.pane.thisRevision":["此修订版本"],"editor.revisions.diffDialog.title":["修订版本 JSON 差异"],"editor.revisions.preview.backToLive":["← 返回当前版本"],"editor.revisions.preview.restore":["恢复此修订版本"],"editor.revisions.preview.restoring":["恢复中…"],"editor.revisions.preview.subtitle":[["when"]," 由 ",["author"]],"editor.revisions.preview.title":["预览修订版本"],"editor.revisions.sheet.autosavesEmpty":["一旦有可用的「已发布的草稿」版本,自动保存将出现在这里。"],"editor.revisions.sheet.commentCancel":["取消"],"editor.revisions.sheet.commentPlaceholder":["描述此修订版本…"],"editor.revisions.sheet.commentSave":["保存"],"editor.revisions.sheet.commentSaving":["…"],"editor.revisions.sheet.description":["每次保存都会创建一个新的修订版本。最新的在前。"],"editor.revisions.sheet.diffAriaLabel":["查看 JSON 差异"],"editor.revisions.sheet.empty":["暂无修订版本。"],"editor.revisions.sheet.error":["无法加载修订版本。"],"editor.revisions.sheet.loadMore":["加载更多"],"editor.revisions.sheet.loadingAria":["正在加载修订版本"],"editor.revisions.sheet.loadingMore":["加载中…"],"editor.revisions.sheet.tab.all":["全部"],"editor.revisions.sheet.tab.autosaves":["自动保存"],"editor.revisions.sheet.tab.publishes":["发布"],"editor.revisions.sheet.title":["修订版本"],"editor.revisions.sheet.trigger":["修订版本"],"editor.revisions.sheet.unknownAuthor":["未知"],"editor.stale.loading":["Loading…"],"editor.staleDraft.compare":["比较"],"editor.staleDraft.description":["在您有待保存的更改时,其他人对此条目发布了更改。请选择要保留哪个版本再继续。"],"editor.staleDraft.discarding":["丢弃中…"],"editor.staleDraft.hideComparison":["隐藏对比"],"editor.staleDraft.liveNow":["当前版本"],"editor.staleDraft.title":["您的草稿已过时"],"editor.staleDraft.useMine":["使用我的"],"editor.staleDraft.useTheirs":["使用他们的"],"editor.staleDraft.yourDraft":["您的草稿"],"editor.styleTab.activeBucket":["正在编辑:",["device"]],"editor.styleTab.empty":["选择一个区块以应用样式。"],"editor.styleTab.section.background":["背景"],"editor.styleTab.section.fontSize":["字号"],"editor.styleTab.section.padding":["内边距"],"editor.styleTab.section.textColor":["文本颜色"],"editor.styleTab.select.none":["无"],"editor.toast.autosaveFailed":["Couldn't save your changes — they may contain invalid content."],"editor.toast.discardFailed":["Couldn't discard the draft — try again."],"editor.toast.discarded":["Draft discarded."],"editor.toast.publishFailed":["Couldn't publish — try again."],"editor.toast.published":["Published."],"emailChange.error.accountDisabled":["此确认所属的账户已停用。"],"emailChange.error.emailTaken":["在您请求和点击之间,其他人已认领了此电子邮箱。请请求更改到其他地址。"],"emailChange.error.fallback":["无法确认电子邮箱更改。请重试。"],"emailChange.error.missingToken":["此确认链接缺少令牌。请请求新的电子邮箱更改。"],"emailChange.error.tokenExpired":["此确认链接已过期。请请求新的电子邮箱更改。"],"emailChange.error.tokenInvalid":["此确认链接无效。可能已被使用。"],"emailChange.error.userNotFound":["此确认所属的账户已被移除。"],"entries.list.authorFilter.all":["所有作者"],"entries.list.authorFilter.mine":["我的"],"entries.list.bulk.cancel":["取消"],"entries.list.bulk.confirm":["确认"],"entries.list.bulk.delete":["永久删除"],"entries.list.bulk.deleteBody":["这将永久删除所选条目及其修订版本,且无法撤销。"],"entries.list.bulk.deleteTitle":[["count","plural",{"other":["永久删除 ","#"," 个条目?"]}]],"entries.list.bulk.restore":["恢复"],"entries.list.bulk.selected":[["count","plural",{"other":["已选择 ","#"," 个条目"]}]],"entries.list.bulk.toastDeleted":[["count","plural",{"other":["已删除 ","#"," 个条目。"]}]],"entries.list.bulk.toastFailed":["操作失败,请重试。"],"entries.list.bulk.toastRestored":[["count","plural",{"other":["已恢复 ","#"," 个条目。"]}]],"entries.list.bulk.toastTrashed":[["count","plural",{"other":["已将 ","#"," 个条目移至回收站。"]}]],"entries.list.bulk.trash":["移至回收站"],"entries.list.bulk.trashTitle":[["count","plural",{"other":["将 ","#"," 个条目移至回收站?"]}]],"entries.list.column.status":["状态"],"entries.list.column.title":["标题"],"entries.list.column.updated":["更新于"],"entries.list.deleteDialog.cancel":["取消"],"entries.list.deleteDialog.confirm":["永久删除"],"entries.list.deleteDialog.deleting":["删除中…"],"entries.list.deleteDialog.description":["这将永久删除该条目及其所有修订版本,且无法撤销。"],"entries.list.deleteDialog.title":["永久删除?"],"entries.list.empty.cta":["New ",["singularLower"]],"entries.list.empty.description":["创建一个即可在此处看到它。"],"entries.list.empty.title":["No ",["pluralLower"]," yet"],"entries.list.filterAuthorAria":["按作者筛选"],"entries.list.filterStatusAria":["按状态筛选"],"entries.list.loadError":["Couldn't load ",["pluralLower"],". Try again."],"entries.list.loadingLabel":["Loading ",["pluralLower"]],"entries.list.newButton":["New ",["singularLower"]],"entries.list.noTitle":["(无标题)"],"entries.list.row.deletePermanently":["永久删除"],"entries.list.row.duplicate":["复制"],"entries.list.row.duplicating":["复制中…"],"entries.list.row.edit":["编辑"],"entries.list.row.restore":["恢复"],"entries.list.row.restoring":["恢复中…"],"entries.list.row.trash":["移至回收站"],"entries.list.row.trashing":["移至回收站中…"],"entries.list.searchPlaceholder":["Search ",["pluralLower"],"…"],"entries.list.selectAllAria":["选择本页所有条目"],"entries.list.selectRowAria":["选择条目"],"entries.list.sortAria":["按 ",["label"]," 排序(",["direction"],")"],"entries.list.statusFilter.all":["全部"],"entries.list.statusFilter.draft":["草稿"],"entries.list.statusFilter.published":["已发布"],"entries.list.statusFilter.scheduled":["已计划"],"entries.list.statusFilter.trash":["回收站"],"entries.list.taxonomyFilter.all":["All ",["pluralLower"]],"entries.list.taxonomyFilter.empty":["No ",["pluralLower"]," match."],"entries.list.taxonomyFilter.search":["Search ",["pluralLower"],"…"],"entries.list.toast.deleted":["已永久删除。"],"entries.list.toast.duplicated":["已复制为草稿。"],"entries.list.toast.failed":["操作失败,请重试。"],"entries.list.toast.restored":["已恢复为草稿。"],"entries.list.toast.trashed":["已移至回收站。"],"entries.list.trashDialog.cancel":["取消"],"entries.list.trashDialog.confirm":["移至回收站"],"entries.list.trashDialog.description":["您可以稍后从回收站视图中恢复。"],"entries.list.trashDialog.moving":["移动中…"],"entries.list.trashDialog.title":["Move ",["singularLower"]," to trash?"],"errorBoundary.hideError":["隐藏错误"],"errorBoundary.showError":["显示错误"],"errorBoundary.title":["出错了"],"fieldTypes.boolean.no":["否"],"fieldTypes.boolean.yes":["是"],"form.multiSelect.empty":["无匹配项。"],"form.multiSelect.placeholder":["选择…"],"form.multiSelect.search":["搜索…"],"form.multiSelect.selectedCount":["已选 ",["count"]," 项"],"listPagination.next.aria":["下一页"],"listPagination.next.label":["下一页"],"listPagination.page":["第 ",["page"]," 页"],"listPagination.prev.aria":["上一页"],"listPagination.prev.label":["上一页"],"login.description":["使用 Passkey、获取一次性邮件链接,或使用提供商继续。"],"login.email.invalid":["输入有效的电子邮箱地址。"],"login.email.label":["电子邮箱"],"login.emailChange.success":["电子邮箱已确认。使用新地址登录。"],"login.locale.aria":["语言"],"login.magicLink.back":["返回"],"login.magicLink.emailRequired":["请先在上方输入您的电子邮箱。"],"login.magicLink.pending":["发送中…"],"login.magicLink.sent.description":["如果此电子邮箱有账户,我们已发送登录链接。链接将在 15 分钟后过期。"],"login.magicLink.sent.title":["请查收邮件"],"login.magicLink.submit":["通过电子邮件发送链接"],"login.oauth.continueWith":["使用 ",["label"]," 继续"],"login.oauth.separator":["或"],"login.passkey.pending":["登录中…"],"login.passkey.submit":["使用 Passkey 登录"],"login.title":["登录"],"magicLink.error.accountDisabled":["此账户已停用。"],"magicLink.error.domainNotAllowed":["您的电子邮箱域名不在白名单中。请要求管理员添加。"],"magicLink.error.fallback":["登录失败。请重试。"],"magicLink.error.missingToken":["此登录链接缺少令牌。请请求新的链接并重试。"],"magicLink.error.registrationClosed":["在管理员完成设置之前,自助注册不可用。"],"magicLink.error.tokenExpired":["此登录链接已过期。请请求新的链接。"],"magicLink.error.tokenInvalid":["此登录链接无效。可能已被使用。请请求新的链接。"],"magicLinkRequest.error.invalidInput":["输入有效的电子邮箱地址。"],"magicLinkRequest.error.network":["无法发送链接。请重试。"],"magicLinkRequest.error.notConfigured":["此站点未配置 Magic Link 登录。"],"mailer.description":["测试已配置的出站电子邮件传输是否真正送达。由 Magic Link 登录、邀请邮件以及任何使用共享邮件发送器的插件使用。"],"mailer.test.description":["通过 Magic Link 使用的同一传输发送一次性消息。错误将原样显示在此处 — 与 Magic Link 请求流程不同,后者会刻意吞下邮件错误,以免响应形态泄露电子邮箱是否已注册。"],"mailer.test.error.fallback":["无法发送测试消息。请重试。"],"mailer.test.error.notConfigured":["未配置邮件发送器适配器。请向 \`plumix({...})\` 传入 \`mailer:\`(例如 consoleMailer() 用于开发,或您的 Resend/Postmark/SES 封装)。"],"mailer.test.error.sendFailed":["邮件发送器适配器在发送时抛出错误。请检查 Worker 日志中的底层错误。"],"mailer.test.feedback.ok":["测试消息已发送至 ",["to"],"。如果一分钟内未送达,请检查您的传输适配器日志。"],"mailer.test.recipient.invalid":["输入有效的电子邮箱地址。"],"mailer.test.recipient.label":["收件人"],"mailer.test.recipient.placeholder":["ops@example.com"],"mailer.test.submit.idle":["发送测试"],"mailer.test.submit.pending":["发送中…"],"mailer.test.title":["发送测试消息"],"mailer.title":["邮件发送器"],"menu.profile":["个人资料"],"menu.settings":["设置"],"menu.signOut":["登出"],"menu.signOut.pending":["登出中…"],"metaBox.field.json.invalid":["无效的 JSON"],"metaBox.link.dialogDescription":["搜索并选择要链接的条目"],"metaBox.link.loading":["加载中…"],"metaBox.link.newTab":["在新标签页中打开"],"metaBox.link.noMatches":["无匹配项"],"metaBox.link.pick":["选择条目"],"metaBox.link.searchPlaceholder":["搜索条目…"],"metaBox.link.text":["链接文字"],"metaBox.link.url":["URL"],"metaBox.multiReference.addMore":["添加"],"metaBox.multiReference.dialogDescription":["搜索并选择 ",["kind"]," 条目"],"metaBox.multiReference.emptyValue":["未选择任何项"],"metaBox.multiReference.loading":["加载中…"],"metaBox.multiReference.noMatches":["无匹配项"],"metaBox.multiReference.orphan":["引用缺失 — 移除或重新选择"],"metaBox.multiReference.resolveError":["无法加载所选项目 — 刷新以重试。"],"metaBox.multiReference.searchPlaceholder":["搜索 ",["kind"],"…"],"metaBox.multiReference.selectIdle":["选择"],"metaBox.pluginField.crashed":["此字段渲染失败。详细信息见浏览器控制台。"],"metaBox.reference.clear":["清除"],"metaBox.reference.dialogDescription":["搜索并选择 ",["kind"]],"metaBox.reference.emptyValue":["未选择任何项"],"metaBox.reference.loading":["加载中…"],"metaBox.reference.noMatches":["无匹配项"],"metaBox.reference.orphan":["引用缺失 — 重新选择或清除"],"metaBox.reference.searchPlaceholder":["搜索 ",["kind"],"…"],"metaBox.reference.selectChange":["更改"],"metaBox.reference.selectIdle":["选择"],"metaBox.reference.untitled":["Untitled"],"metaBox.repeater.addAnother":["再添加一个"],"metaBox.repeater.addFirst":["添加行"],"metaBox.repeater.countSuffixBoth":[" / 最少 ",["min"]," / 最多 ",["max"]],"metaBox.repeater.countSuffixMax":[" / 最多 ",["max"]],"metaBox.repeater.countSuffixMin":[" / 最少 ",["min"]],"metaBox.repeater.done":["Done"],"metaBox.repeater.editRow":["Edit row ",["n"]],"metaBox.repeater.editRow.button":["Edit row ",["n"]],"metaBox.repeater.empty":["无行"],"metaBox.repeater.rowError":["This row has an error"],"metaBox.repeater.rowSummaryEmpty":["Row ",["n"]],"metaField.invalid":["Invalid value."],"metaField.invalidEmail":["Enter a valid email address."],"metaField.invalidOption":["Select a valid option."],"metaField.invalidUrl":["Enter a valid URL."],"metaField.max":["Must be at most ",["max"],"."],"metaField.maxItems":["Select at most ",["max"],"."],"metaField.maxLength":["Must be at most ",["max"]," characters."],"metaField.maxRows":["Use at most ",["max"]," row(s)."],"metaField.maxTemporal":["Must be on or before ",["max"],"."],"metaField.min":["Must be at least ",["min"],"."],"metaField.minRows":["Add at least ",["min"]," row(s)."],"metaField.minTemporal":["Must be on or after ",["min"],"."],"metaField.required":["This field is required."],"notFound.description":["您寻找的页面不存在,或资源未注册。请检查 URL 并重试。"],"notFound.title":["未找到"],"oauth.error.accountDisabled":["此账户已停用。"],"oauth.error.codeExchangeFailed":["无法访问提供商。请重试。"],"oauth.error.domainNotAllowed":["您的电子邮箱域名不在白名单中。请要求管理员添加。"],"oauth.error.emailMissing":["提供商未返回电子邮箱地址。"],"oauth.error.emailUnverified":["提供商尚未验证您的电子邮箱。请在该处验证后重试。"],"oauth.error.fallback":["登录失败。请重试。"],"oauth.error.linkBroken":["此账户无法访问。请联系管理员重新链接。"],"oauth.error.profileFetchFailed":["无法读取您的个人资料。请重试。"],"oauth.error.providerNotConfigured":["此提供商未配置。"],"oauth.error.registrationClosed":["OAuth 注册在管理员完成设置之前不可用。"],"oauth.error.stateExpired":["登录已过期。请重试。"],"oauth.error.stateInvalid":["登录已过期或无效。请重试。"],"palette.command.profile":["Edit profile"],"palette.command.settings":["Settings"],"palette.description":["Search to navigate the admin."],"palette.empty":["No results found."],"palette.group.commands":["Commands"],"palette.group.navigation":["Navigation"],"palette.group.recent":["Recent"],"palette.hint.close":["Close"],"palette.hint.navigate":["Navigate"],"palette.hint.select":["Select"],"palette.loading":["Searching…"],"palette.placeholder":["Search…"],"palette.title":["Command palette"],"passkey.error.challengeMismatch":["Passkey 是为另一邀请创建的。请重新加载并重试。"],"passkey.error.challengeNotBoundToUser":["登录尝试已过期。请重试。"],"passkey.error.challengeNotFound":["登录尝试已过期。请重试。"],"passkey.error.counterReplay":["您的 Passkey 似乎已在其他设备上使用。请重新注册。"],"passkey.error.credentialAlreadyRegistered":["此 Passkey 已在此站点注册。"],"passkey.error.credentialLimitReached":["您已达到此账户的 Passkey 上限。"],"passkey.error.credentialNotFound":["此 Passkey 未在此站点注册。请尝试其他 Passkey。"],"passkey.error.credentialStorageCorrupt":["您存储的 Passkey 数据已损坏。请注册新的 Passkey。"],"passkey.error.emailMismatch":["此电子邮箱与您当前登录的账户不匹配。"],"passkey.error.invalidClientData":["您的设备返回了意外响应。请重试。"],"passkey.error.invalidInput":["表单出了问题。请重新加载并重试。"],"passkey.error.invalidOrigin":["此 Passkey 不能在此站点使用。"],"passkey.error.invalidResponse":["您的设备返回了意外响应。请重试。"],"passkey.error.invalidRpId":["此 Passkey 不能在此站点使用。"],"passkey.error.invalidSignature":["无法验证您的设备的签名。请重试。"],"passkey.error.invalidToken":["此邀请链接无效。请要求管理员发送新的邀请。"],"passkey.error.networkError":["无法访问服务器。请检查您的连接并重试。"],"passkey.error.noAuthenticator":["此设备上没有可用的 Passkey。请尝试在注册它的设备上登录。"],"passkey.error.registrationClosed":["此站点的注册未开放。"],"passkey.error.tokenExpired":["此邀请链接已过期。请要求管理员发送新的邀请。"],"passkey.error.unknown":["出错了。请重试。"],"passkey.error.unsupportedAlgorithm":["不支持您的设备的签名算法。"],"passkey.error.unsupportedAttestationFormat":["不支持您的设备的响应格式。"],"passkey.error.userCancelled":["已取消登录。"],"passkey.error.userNotFound":["未找到此电子邮箱对应的账户。"],"passkey.error.userPresenceMissing":["您的设备未确认您的存在。请重试。"],"patternsSection.heading":["图案"],"patternsSection.uncategorized":["未分类"],"plugin.errorBoundary.iconAria":["插件图标渲染失败"],"plugin.errorBoundary.inlineStub":[["label"]," ",["kind"]," 失败"],"plugin.errorBoundary.pageBody":[["label"]," 在渲染时抛出错误。管理后台的其余部分不受影响。"],"plugin.errorBoundary.pageTitle":["插件页面渲染失败"],"plugin.errorBoundary.unknownPlugin":["此插件"],"plugin.errorBoundary.widgetBody":[["label"]," 渲染失败。"],"pluginPage.loading.aria":["正在加载 ",["label"]],"pluginPage.notLoaded.body":["管理后台清单在 <code>",["path"],"</code> 处声明了页面,但未注册其 React 组件。"],"pluginPage.notLoaded.title":["插件未加载"],"profile.language.aria":["语言"],"profile.language.description":["管理后台将以此语言显示。切换后页面将重新加载,以便新翻译应用到各处。"],"profile.language.error":["无法切换语言。请重试。"],"profile.language.title":["语言"],"profile.passkeys.added":["添加于 ",["date"]],"profile.passkeys.delete.button":["删除"],"profile.passkeys.delete.cancel":["取消"],"profile.passkeys.delete.confirm":["删除 Passkey"],"profile.passkeys.delete.description":["注册 \\"",["name"],"\\" 的设备将无法再登录。您可以稍后重新注册。"],"profile.passkeys.delete.fallback":["无法删除 Passkey。请重试。"],"profile.passkeys.delete.pending":["删除中…"],"profile.passkeys.delete.title":["删除此 Passkey?"],"profile.passkeys.description":["可以登录此账户的设备。删除旧设备前请先添加新设备 — 至少需要保留一个 Passkey。"],"profile.passkeys.empty":["未注册 Passkey。添加一个以启用登录。"],"profile.passkeys.enroll.alreadyRegistered":["此 Passkey 已在此账户中注册。"],"profile.passkeys.enroll.cancelled":["已取消。准备好后请点击「添加 Passkey」。"],"profile.passkeys.enroll.emailMismatch":["注册失败 — 请重新登录后再试。"],"profile.passkeys.enroll.fallback":["无法注册 Passkey。请重试。"],"profile.passkeys.enroll.idle":["添加 Passkey"],"profile.passkeys.enroll.networkError":["网络错误。请检查您的连接并重试。"],"profile.passkeys.enroll.noAuthenticator":["此设备不支持 Passkey。"],"profile.passkeys.enroll.pending":["添加中…"],"profile.passkeys.lastCredential":["您不能删除最后一个 Passkey。请先添加另一个。"],"profile.passkeys.lastUsed":["上次使用 ",["date"]],"profile.passkeys.loadFailed":["无法加载您的 Passkey。请刷新并重试。"],"profile.passkeys.loading":["加载中…"],"profile.passkeys.notFound":["此 Passkey 不再存在。请刷新列表。"],"profile.passkeys.rename.button":["重命名"],"profile.passkeys.rename.cancel":["取消"],"profile.passkeys.rename.fallback":["无法重命名 Passkey。请重试。"],"profile.passkeys.rename.label":["重命名 Passkey"],"profile.passkeys.rename.nameEmpty":["名称不能为空。"],"profile.passkeys.rename.pending":["保存中…"],"profile.passkeys.rename.save":["保存"],"profile.passkeys.synced":["已同步"],"profile.passkeys.title":["Passkey"],"profile.passkeys.transport.hybrid":["跨设备"],"profile.passkeys.transport.internal":["此设备"],"profile.passkeys.transport.securityKey":["安全密钥"],"profile.passkeys.unnamed":["未命名 Passkey"],"profile.sessions.description":["已登录此账户的设备。撤销您不认识的会话,或在怀疑泄露时登出除当前浏览器以外的所有会话。"],"profile.sessions.device.browserOnOs":[["browser"],"(",["os"],")"],"profile.sessions.empty":["没有由 plumix 管理的会话。您的登录由外部身份提供商处理。"],"profile.sessions.loadFailed":["无法加载您的会话。请刷新并重试。"],"profile.sessions.loading":["加载中…"],"profile.sessions.revoke.button":["登出"],"profile.sessions.revoke.cancel":["取消"],"profile.sessions.revoke.confirm":["登出设备"],"profile.sessions.revoke.current":["您不能登出当前正在使用的会话。"],"profile.sessions.revoke.description":[["device"]," 于 ",["when"]," 登录。该设备下次需要重新登录。"],"profile.sessions.revoke.descriptionWithIp":[["device"]," 于 ",["when"]," 从 ",["ip"]," 登录。该设备下次需要重新登录。"],"profile.sessions.revoke.fallback":["无法登出会话。请重试。"],"profile.sessions.revoke.notFound":["此会话不再存在。请刷新列表。"],"profile.sessions.revoke.pending":["登出中…"],"profile.sessions.revoke.title":["登出此设备?"],"profile.sessions.revokeAll.count":[["revoked","plural",{"0":["没有其他会话需要登出。"],"other":["已登出 ","#"," 个其他会话。"]}]],"profile.sessions.revokeAll.fallback":["无法登出会话。请重试。"],"profile.sessions.revokeAll.idle":["登出其他设备"],"profile.sessions.revokeAll.pending":["登出中…"],"profile.sessions.signedIn":[["when"]," 登录"],"profile.sessions.thisDevice":["此设备"],"profile.sessions.title":["活跃会话"],"profile.sessions.unknownDevice":["未知设备"],"settings.empty.description":["核心刻意不提供设置 — 插件(或您自己的 plumix.config)通过 <0>ctx.registerSettingsPage</0> 和 <1>ctx.registerSettingsGroup</1> 声明页面和分组。已注册的页面将在此显示,每页一张卡片。"],"settings.empty.title":["暂未注册设置"],"settings.page.empty.description":["此设置页面尚未指向已注册的分组。插件使用 registerSettingsPage 辅助函数创建页面:"],"settings.page.empty.title":["此页面没有分组"],"settings.page.loadFailed":["无法加载此设置。请重试。"],"settings.page.loading":["正在加载设置"],"settings.page.notFound.title":["未找到"],"settings.page.saveFailed":["无法保存设置。"],"settings.page.saved":["已保存。"],"settings.page.submit.idle":["保存更改"],"settings.page.submit.pending":["保存中…"],"settings.pageSummary":[["count","plural",{"other":["#"," 个分组"]}]],"settings.title":["设置"],"slashMenu.empty":["无匹配项"],"slashMenu.searchAria":["搜索区块和图案"],"slashMenu.uncategorized":["其他"],"starterModal.description":["选择一个起始布局或从空白画布开始。"],"starterModal.startBlank":["从空白开始"],"starterModal.title":["从图案开始"],"termForm.cancel":["取消"],"termForm.description":["描述"],"termForm.name":["名称"],"termForm.parent":["父项"],"termForm.parent.rootOption":["— 根 —"],"termForm.slug":["别名"],"termForm.slug.format":["别名只能包含小写字母、数字和连字符。"],"termForm.submitting":["保存中…"],"terms.create.backLink":["Back to ",["pluralLower"]],"terms.create.description.flat":["通过添加新术语来对内容进行分组。"],"terms.create.description.hierarchical":["选择父术语将此术语嵌套其下,或留空以创建根级别术语。"],"terms.create.error.createFallback":["无法创建术语。请重试。"],"terms.create.error.emptySlug":["无法从此名称生成别名 — 请手动输入。"],"terms.create.heading":["New ",["singularLower"]],"terms.create.submit":["Create ",["singularLower"]],"terms.edit.backLink":["Back to ",["pluralLower"]],"terms.edit.delete.button":["删除术语"],"terms.edit.delete.cancel":["取消"],"terms.edit.delete.cardDescription":["删除此术语并解除使用它的所有文章的关联。子项将提升到根级别(其文章保留其他术语分配)。"],"terms.edit.delete.cardTitle":["删除术语"],"terms.edit.delete.confirm":["永久删除"],"terms.edit.delete.deleting":["删除中…"],"terms.edit.delete.dialogDescription":["将移除文章对此术语的分配。如果此术语有子项,它们将自动提升为根级别。"],"terms.edit.delete.dialogTitle":["删除 ",["termName"],"?"],"terms.edit.descendantsHint":[" — 子项无法被选为父项。"],"terms.edit.error.deleteFallback":["无法删除术语。请重试。"],"terms.edit.error.saveFallback":["无法保存更改。请重试。"],"terms.edit.heading":["Edit ",["singularLower"]],"terms.edit.loadingAria":["正在加载术语"],"terms.edit.notFound.message":["无法加载此术语。它可能已被删除。"],"terms.edit.notFound.title":["未找到"],"terms.edit.submit":["保存更改"],"terms.error.parentMismatch":["所选父项属于其他分类法。"],"terms.error.parentSelfOrCycle":["一个术语不能是其自身的祖先 — 请选择其他父项。"],"terms.error.slugTaken":["该分类法中已存在使用此别名的术语。"],"terms.list.column.description":["描述"],"terms.list.column.name":["名称"],"terms.list.empty.cta":["New ",["singularLower"]],"terms.list.empty.description":["创建一个即可在此处看到它。"],"terms.list.empty.title":["No ",["singularLower"]," yet"],"terms.list.loadError":["Couldn't load ",["pluralLower"],". Try again."],"terms.list.loadingLabel":["Loading ",["pluralLower"]],"terms.list.newButton":["New ",["singularLower"]],"terms.list.searchPlaceholder":["Search ",["pluralLower"],"…"],"tokenSwatch.none":["无"],"type.generic.addNew":["新增"],"type.generic.addNewItem":["添加"],"type.generic.allItems":["全部"],"type.generic.editItem":["编辑"],"type.generic.filterItemsList":["筛选列表"],"type.generic.itemPublished":["已发布"],"type.generic.itemPublishedPrivately":["已私密发布"],"type.generic.itemRevertedToDraft":["已还原为草稿"],"type.generic.itemScheduled":["已计划"],"type.generic.itemTrashed":["已移至回收站"],"type.generic.itemUpdated":["已更新"],"type.generic.itemsList":["列表"],"type.generic.itemsListNavigation":["列表导航"],"type.generic.loadErrorItems":["加载失败。请重试。"],"type.generic.loadingItems":["加载中…"],"type.generic.moveToTrash":["移至回收站?"],"type.generic.newItem":["新建"],"type.generic.noMatch":["无匹配项"],"type.generic.notFound":["暂无内容"],"type.generic.notFoundInTrash":["回收站为空"],"type.generic.parentItem":["父项"],"type.generic.parentItemColon":["父项:"],"type.generic.plural":["项目"],"type.generic.searchItems":["搜索…"],"type.generic.singular":["项目"],"type.generic.taxonomy.addOrRemoveItems":["添加或移除"],"type.generic.taxonomy.backToItems":["← 返回"],"type.generic.taxonomy.filterByItem":["筛选"],"type.generic.taxonomy.newItemName":["新名称"],"type.generic.taxonomy.noTerms":["—"],"type.generic.taxonomy.plural":["术语"],"type.generic.taxonomy.separateItemsWithCommas":["用逗号分隔"],"type.generic.taxonomy.singular":["术语"],"type.generic.taxonomy.updateItem":["更新"],"type.generic.untitledItem":["无标题"],"type.generic.viewItem":["查看"],"type.generic.viewItems":["查看"],"userEdit.backToList":["返回用户"],"userEdit.cancel":["取消"],"userEdit.delete.button":["删除用户"],"userEdit.delete.confirm.description":["如果此用户撰写了任何文章,下一步将重新分配它们。如果没有,请保留「保持文章原状」。"],"userEdit.delete.confirm.idle":["永久删除"],"userEdit.delete.confirm.pending":["删除中…"],"userEdit.delete.confirm.title":["确认删除:",["email"]],"userEdit.delete.description":["永久删除。文章会保留,但您可以选择由谁继承所有权。"],"userEdit.delete.reassign.keepAsIs":["保持文章原状(无需重新分配)"],"userEdit.delete.reassign.label":["将文章重新分配给"],"userEdit.delete.title":["删除用户"],"userEdit.description.other":["更新此账户的详细信息。角色更改会立即使现有会话失效。"],"userEdit.description.self":["更新您的显示名称。角色和账户状态由管理员管理。"],"userEdit.email.cancelPending.idle":["取消"],"userEdit.email.cancelPending.pending":["取消中…"],"userEdit.email.changeButton":["更改电子邮箱"],"userEdit.email.confirmationSent":["确认邮件已发送至 ",["email"],"。点击链接后更改生效。"],"userEdit.email.dialog.cancel":["取消"],"userEdit.email.dialog.currentLabel":["当前电子邮箱"],"userEdit.email.dialog.description":["我们将向新地址发送确认链接。点击链接后更改生效。此账户的会话将在此时被登出 — 重新登录使用新电子邮箱。"],"userEdit.email.dialog.newLabel":["新电子邮箱"],"userEdit.email.dialog.submit.idle":["发送确认"],"userEdit.email.dialog.submit.pending":["发送中…"],"userEdit.email.dialog.title":["更改电子邮箱地址"],"userEdit.email.error.accountDisabled":["此账户已停用。"],"userEdit.email.error.mailerNotConfigured":["电子邮箱更改需要服务器端配置 Magic Link 邮件发送器。请向 \`plumix({...})\` 传入 \`auth.magicLink\` 和 \`mailer:\` 以启用。"],"userEdit.email.error.requestFallback":["无法请求更改。请重试。"],"userEdit.email.error.taken":["此电子邮箱已被另一个账户使用。"],"userEdit.email.invalid":["输入有效的电子邮箱地址。"],"userEdit.email.label":["电子邮箱"],"userEdit.email.pending":["待更改为 <code>",["newEmail"],"</code> — ",["expiresAt"]," 过期"],"userEdit.email.placeholder":["new@example.com"],"userEdit.error.deleteFallback":["无法删除用户。请重试。"],"userEdit.error.emailTaken":["已存在使用此电子邮箱的用户。"],"userEdit.error.hasEntries":["此用户撰写了文章。请在上方选择要将文章重新分配给谁。"],"userEdit.error.lastAdmin.delete":["无法删除最后一个管理员。请先提升其他人。"],"userEdit.error.lastAdmin.status":["无法停用最后一个管理员。请先提升其他人。"],"userEdit.error.lastAdmin.update":["无法执行此操作 — 这是最后一个管理员。请先提升其他人。"],"userEdit.error.reassignToSelf":["无法将内容重新分配给正在删除的用户。"],"userEdit.error.slugTaken":["That author slug is already taken. Choose a different one."],"userEdit.error.statusFallback":["无法更新账户状态。请重试。"],"userEdit.error.updateFallback":["无法保存更改。请重试。"],"userEdit.loadFailed":["无法加载此用户。可能已被删除。"],"userEdit.loading.aria":["正在加载用户"],"userEdit.name.label":["姓名"],"userEdit.notFound.title":["未找到"],"userEdit.role.label":["角色"],"userEdit.role.selfReadonly":["只有其他管理员可以更改您的角色。"],"userEdit.slug.description":["Used in this author's archive URL under /authors/. Changing it breaks existing links to the old address."],"userEdit.slug.format":["Slug must be lowercase letters, numbers, and dashes."],"userEdit.slug.label":["Author slug"],"userEdit.status.description.active":["停用将立即登出用户并阻止未来登录。已发布的文章会保留。"],"userEdit.status.description.disabled":["停用的账户无法登录。重新激活会恢复访问权限;Passkey 仍保持已注册。"],"userEdit.status.title":["账户状态"],"userEdit.status.toggle.disable":["停用用户"],"userEdit.status.toggle.disabling":["停用中…"],"userEdit.status.toggle.enable":["重新激活用户"],"userEdit.status.toggle.enabling":["启用中…"],"userEdit.submit.idle":["保存更改"],"userEdit.submit.pending":["保存中…"],"userEdit.title.other":["编辑 ",["email"]],"userEdit.title.self":["您的个人资料"],"userInvite.backToList":["返回用户"],"userInvite.cancel":["取消"],"userInvite.copy.aria":["复制邀请链接"],"userInvite.copy.copied":["已复制"],"userInvite.copy.idle":["复制"],"userInvite.description":["首次打开邀请链接时,他们会注册一个 Passkey。无需密码。"],"userInvite.email.invalid":["输入有效的电子邮箱地址"],"userInvite.email.label":["电子邮箱"],"userInvite.error.emailTaken":["已存在使用此电子邮箱的用户。"],"userInvite.error.fallback":["无法发送邀请。请重试。"],"userInvite.name.label":["姓名"],"userInvite.role.label":["角色"],"userInvite.submit.idle":["发送邀请"],"userInvite.submit.pending":["邀请中…"],"userInvite.success.another":["邀请另一位"],"userInvite.success.backToList":["返回用户"],"userInvite.success.description":["与 ",["email"]," 分享下方链接。他们首次打开时会注册一个 Passkey。链接将在 7 天后过期。"],"userInvite.success.link.label":["邀请链接"],"userInvite.success.title":["邀请已就绪"],"userInvite.title":["邀请用户"],"userRole.admin":["管理员"],"userRole.author":["作者"],"userRole.contributor":["贡献者"],"userRole.editor":["编辑"],"userRole.long.admin":["管理员 — 完全控制"],"userRole.long.author":["作者 — 发布自己的文章"],"userRole.long.contributor":["贡献者 — 草稿,不发布"],"userRole.long.editor":["编辑 — 发布并编辑所有文章"],"userRole.long.subscriber":["订阅者 — 仅可读"],"userRole.subscriber":["订阅者"],"users.list.column.created":["创建于"],"users.list.column.lastSignIn":["上次登录"],"users.list.column.role":["角色"],"users.list.column.status":["状态"],"users.list.column.user":["用户"],"users.list.empty.description":["清除筛选条件或邀请新成员。"],"users.list.empty.invite":["邀请用户"],"users.list.empty.title":["没有匹配您筛选条件的用户"],"users.list.invite":["添加"],"users.list.loadFailed":["无法加载用户。请重试。"],"users.list.loading":["正在加载用户"],"users.list.roleFilter.all":["所有角色"],"users.list.roleFilter.aria":["按角色筛选"],"users.list.row.active":["活跃"],"users.list.row.disabled":["已停用"],"users.list.row.lastSignIn.never":["从未"],"users.list.row.noName":["(无姓名)"],"users.list.row.you":["您"],"users.list.searchPlaceholder":["按电子邮箱搜索…"],"users.list.title":["用户"],"validate.email.invalid":["输入有效的电子邮箱地址。"],"validate.email.maxLength":["电子邮箱过长。"],"validate.email.required":["请输入电子邮箱地址。"],"validate.id.format":["id 必须为正整数"],"validate.name.maxLength":["名称过长。"]}`);export{e as messages};
|
package/dist/index.html
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
6
6
|
<meta name="robots" content="noindex, nofollow" />
|
|
7
7
|
<title>Plumix Admin</title>
|
|
8
|
-
<script type="module" crossorigin src="./assets/index-
|
|
8
|
+
<script type="module" crossorigin src="./assets/index-D7rrOihJ.js"></script>
|
|
9
9
|
<link rel="modulepreload" crossorigin href="./assets/jsx-runtime-DUAcabCT.js">
|
|
10
10
|
<link rel="modulepreload" crossorigin href="./assets/react-DbyrFoBd.js">
|
|
11
11
|
<link rel="modulepreload" crossorigin href="./assets/react-dom-i-Mcm3wj.js">
|
|
@@ -29,20 +29,20 @@
|
|
|
29
29
|
<link rel="modulepreload" crossorigin href="./assets/style-emitter-CDGtTiRG.js">
|
|
30
30
|
<link rel="modulepreload" crossorigin href="./assets/headings-B7oI9nfr.js">
|
|
31
31
|
<link rel="modulepreload" crossorigin href="./assets/errors-BDz8PxwA.js">
|
|
32
|
-
<link rel="modulepreload" crossorigin href="./assets/plugin-registry-
|
|
33
|
-
<link rel="modulepreload" crossorigin href="./assets/register-core-blocks-
|
|
34
|
-
<link rel="modulepreload" crossorigin href="./assets/manifest-
|
|
32
|
+
<link rel="modulepreload" crossorigin href="./assets/plugin-registry-DLDusPOA.js">
|
|
33
|
+
<link rel="modulepreload" crossorigin href="./assets/register-core-blocks-CVavxPiP.js">
|
|
34
|
+
<link rel="modulepreload" crossorigin href="./assets/manifest-2YUNz_ML.js">
|
|
35
35
|
<link rel="modulepreload" crossorigin href="./assets/dist-ClOzYsk5.js">
|
|
36
36
|
<link rel="modulepreload" crossorigin href="./assets/vmessage-CRX68a8a.js">
|
|
37
37
|
<link rel="modulepreload" crossorigin href="./assets/validation-Cl_jr4SS.js">
|
|
38
|
-
<link rel="modulepreload" crossorigin href="./assets/edit-
|
|
38
|
+
<link rel="modulepreload" crossorigin href="./assets/edit-2aEJRHSG.js">
|
|
39
39
|
<link rel="modulepreload" crossorigin href="./assets/dist-DKhWWf1L.js">
|
|
40
40
|
<link rel="modulepreload" crossorigin href="./assets/useMutation-vgMtqBOX.js">
|
|
41
41
|
<link rel="modulepreload" crossorigin href="./assets/useSuspenseQuery-9GLTSYHf.js">
|
|
42
42
|
<link rel="modulepreload" crossorigin href="./assets/Match-Dr0Ejexl.js">
|
|
43
43
|
<link rel="modulepreload" crossorigin href="./assets/session-Y-9LAiv-.js">
|
|
44
44
|
<link rel="modulepreload" crossorigin href="./assets/caps-SYhabp1B.js">
|
|
45
|
-
<link rel="modulepreload" crossorigin href="./assets/palette-commands-
|
|
45
|
+
<link rel="modulepreload" crossorigin href="./assets/palette-commands-Di6Dnj4z.js">
|
|
46
46
|
<link rel="modulepreload" crossorigin href="./assets/dist-DWZq3eNY.js">
|
|
47
47
|
<link rel="modulepreload" crossorigin href="./assets/dist-RxmsRBXP.js">
|
|
48
48
|
<link rel="modulepreload" crossorigin href="./assets/dist-Cz1zPiFe.js">
|
|
@@ -56,33 +56,33 @@
|
|
|
56
56
|
<link rel="modulepreload" crossorigin href="./assets/empty-p3QKoEqD.js">
|
|
57
57
|
<link rel="modulepreload" crossorigin href="./assets/triangle-alert-BpzHmkii.js">
|
|
58
58
|
<link rel="modulepreload" crossorigin href="./assets/error-placeholder-ULkA-k6_.js">
|
|
59
|
-
<link rel="modulepreload" crossorigin href="./assets/_authenticated-
|
|
60
|
-
<link rel="modulepreload" crossorigin href="./assets/login-
|
|
59
|
+
<link rel="modulepreload" crossorigin href="./assets/_authenticated-CH4N_cSi.js">
|
|
60
|
+
<link rel="modulepreload" crossorigin href="./assets/login-0-PQLYlS.js">
|
|
61
61
|
<link rel="modulepreload" crossorigin href="./assets/-schemas-Cbs_-MW6.js">
|
|
62
|
-
<link rel="modulepreload" crossorigin href="./assets/bootstrap-
|
|
62
|
+
<link rel="modulepreload" crossorigin href="./assets/bootstrap-Dbv-AIOo.js">
|
|
63
63
|
<link rel="modulepreload" crossorigin href="./assets/-constants-D2aYlJ-p.js">
|
|
64
64
|
<link rel="modulepreload" crossorigin href="./assets/use-label-CykSHq9A.js">
|
|
65
|
-
<link rel="modulepreload" crossorigin href="./assets/users-
|
|
66
|
-
<link rel="modulepreload" crossorigin href="./assets/settings-
|
|
67
|
-
<link rel="modulepreload" crossorigin href="./assets/mailer-
|
|
65
|
+
<link rel="modulepreload" crossorigin href="./assets/users-ZRNKnWGa.js">
|
|
66
|
+
<link rel="modulepreload" crossorigin href="./assets/settings-DZyJ36D2.js">
|
|
67
|
+
<link rel="modulepreload" crossorigin href="./assets/mailer-CTVZRBU2.js">
|
|
68
68
|
<link rel="modulepreload" crossorigin href="./assets/_page-Rj3wR-yR.js">
|
|
69
69
|
<link rel="modulepreload" crossorigin href="./assets/card-L2-kK5VK.js">
|
|
70
70
|
<link rel="modulepreload" crossorigin href="./assets/skeleton-BnBM1862.js">
|
|
71
71
|
<link rel="modulepreload" crossorigin href="./assets/edit-skeleton-oIsvepSM.js">
|
|
72
|
-
<link rel="modulepreload" crossorigin href="./assets/_page
|
|
73
|
-
<link rel="modulepreload" crossorigin href="./assets/_-
|
|
74
|
-
<link rel="modulepreload" crossorigin href="./assets/device-
|
|
75
|
-
<link rel="modulepreload" crossorigin href="./assets/_token-
|
|
76
|
-
<link rel="modulepreload" crossorigin href="./assets/_name-
|
|
77
|
-
<link rel="modulepreload" crossorigin href="./assets/_slug-
|
|
78
|
-
<link rel="modulepreload" crossorigin href="./assets/create-
|
|
72
|
+
<link rel="modulepreload" crossorigin href="./assets/_page-wrWlHYyD.js">
|
|
73
|
+
<link rel="modulepreload" crossorigin href="./assets/_-h-_izgKQ.js">
|
|
74
|
+
<link rel="modulepreload" crossorigin href="./assets/device-vY_uxsCV.js">
|
|
75
|
+
<link rel="modulepreload" crossorigin href="./assets/_token-Dsc9zTxr.js">
|
|
76
|
+
<link rel="modulepreload" crossorigin href="./assets/_name-BEnhsrWI.js">
|
|
77
|
+
<link rel="modulepreload" crossorigin href="./assets/_slug-Bztim-i3.js">
|
|
78
|
+
<link rel="modulepreload" crossorigin href="./assets/create-DnLK3SmI.js">
|
|
79
79
|
<link rel="modulepreload" crossorigin href="./assets/edit-2tkUFGA0.js">
|
|
80
|
-
<link rel="modulepreload" crossorigin href="./assets/edit-
|
|
80
|
+
<link rel="modulepreload" crossorigin href="./assets/edit-BRhq3mGx.js">
|
|
81
81
|
<link rel="modulepreload" crossorigin href="./assets/-constants-GNK7OFwu.js">
|
|
82
|
-
<link rel="modulepreload" crossorigin href="./assets/create-
|
|
82
|
+
<link rel="modulepreload" crossorigin href="./assets/create-Cvo5wKBV.js">
|
|
83
83
|
<link rel="modulepreload" crossorigin href="./assets/edit-DE8yiDG7.js">
|
|
84
|
-
<link rel="modulepreload" crossorigin href="./assets/edit-
|
|
85
|
-
<link rel="stylesheet" crossorigin href="./assets/index-
|
|
84
|
+
<link rel="modulepreload" crossorigin href="./assets/edit-Cc5hxhM7.js">
|
|
85
|
+
<link rel="stylesheet" crossorigin href="./assets/index-B9lFt9M4.css">
|
|
86
86
|
</head>
|
|
87
87
|
<body>
|
|
88
88
|
<div id="root"></div>
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@plumix/admin",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.7.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Plumix admin application (prebuilt SPA assets)",
|
|
6
6
|
"license": "MIT",
|
|
@@ -28,6 +28,10 @@
|
|
|
28
28
|
"access": "public",
|
|
29
29
|
"provenance": true
|
|
30
30
|
},
|
|
31
|
+
"dependencies": {
|
|
32
|
+
"@codemirror/lang-json": "^6.0.2",
|
|
33
|
+
"@uiw/react-codemirror": "^4.25.11"
|
|
34
|
+
},
|
|
31
35
|
"devDependencies": {
|
|
32
36
|
"@axe-core/playwright": "^4.12.1",
|
|
33
37
|
"@babel/core": "^8.0.1",
|
|
@@ -77,10 +81,10 @@
|
|
|
77
81
|
"valibot": "^1.4.2",
|
|
78
82
|
"vite": "^8.1.4",
|
|
79
83
|
"vitest": "^4.1.10",
|
|
80
|
-
"@plumix/admin-editor": "0.
|
|
81
|
-
"@plumix/admin-ui": "0.
|
|
82
|
-
"@plumix/blocks": "0.
|
|
83
|
-
"@plumix/core": "0.
|
|
84
|
+
"@plumix/admin-editor": "0.7.0",
|
|
85
|
+
"@plumix/admin-ui": "0.7.0",
|
|
86
|
+
"@plumix/blocks": "0.7.0",
|
|
87
|
+
"@plumix/core": "0.7.0",
|
|
84
88
|
"@plumix/eslint-config": "0.0.0",
|
|
85
89
|
"@plumix/lingui-config": "0.0.0",
|
|
86
90
|
"@plumix/prettier-config": "0.0.0",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{i as e,t}from"./jsx-runtime-DUAcabCT.js";import{n}from"./dist-BL2bKHuR.js";import{a as r,i,n as a,r as o,t as s}from"./select-D3kIVy0H.js";import{t as c}from"./button-DG1Ca1S5.js";import{t as l}from"./textarea-iIsBg5jH.js";import{t as u}from"./use-label-CykSHq9A.js";import{D as d,b as f,d as p,h as m,k as h,l as g,p as _,w as v,x as y,y as b}from"./dist-ClOzYsk5.js";import{n as x}from"./vmessage-CRX68a8a.js";import{n as S}from"./validation-Cl_jr4SS.js";import{t as C}from"./input-xYuLUQID.js";import{a as w,f as T,i as E,n as D,o as O,s as k,t as A}from"./form-B_PPIck3.js";import{n as j,t as M}from"./alert-cwX3fWUu.js";import{t as N}from"./valibot-DO4fmSyX.js";import{t as P}from"./meta-box-B-hP57rw.js";var F=e(t(),1),I={slugFormat:{id:`termForm.slug.format`},rootOption:{id:`termForm.parent.rootOption`}},L=`__root__`,R=m({name:b(v(),d(),p(1),g(200)),slug:b(v(),d(),g(200),y(/^[a-z0-9-]*$/,x(I.slugFormat))),description:b(v(),d(),g(2e3)),parentId:_(S),meta:f(v(),h())});function z({initialValues:e,isHierarchical:t,parentOptions:d,isSubmitting:f,serverError:p,submitLabel:m,metaBoxes:h,onSubmit:g,onCancel:_}){let v=u(),y=T({resolver:N(R),defaultValues:e}),b=y.handleSubmit(e=>{g(e)});return(0,F.jsx)(A,{...y,children:(0,F.jsxs)(`form`,{className:`flex flex-col gap-4`,onSubmit:b,children:[(0,F.jsx)(E,{control:y.control,name:`name`,render:({field:e})=>(0,F.jsxs)(w,{children:[(0,F.jsx)(O,{children:(0,F.jsx)(n,{id:`termForm.name`,message:`Name`})}),(0,F.jsx)(D,{children:(0,F.jsx)(C,{type:`text`,required:!0,disabled:f,"data-testid":`term-form-name-input`,...e})}),(0,F.jsx)(k,{})]})}),(0,F.jsx)(E,{control:y.control,name:`slug`,render:({field:e})=>(0,F.jsxs)(w,{children:[(0,F.jsx)(O,{children:(0,F.jsx)(n,{id:`termForm.slug`,message:`Slug`})}),(0,F.jsx)(D,{children:(0,F.jsx)(C,{type:`text`,autoComplete:`off`,disabled:f,"data-testid":`term-form-slug-input`,...e})}),(0,F.jsx)(k,{})]})}),(0,F.jsx)(E,{control:y.control,name:`description`,render:({field:e})=>(0,F.jsxs)(w,{children:[(0,F.jsx)(O,{children:(0,F.jsx)(n,{id:`termForm.description`,message:`Description`})}),(0,F.jsx)(D,{children:(0,F.jsx)(l,{...e,disabled:f,rows:3,"data-testid":`term-form-description-input`,className:`min-h-20`})}),(0,F.jsx)(k,{})]})}),t?(0,F.jsx)(E,{control:y.control,name:`parentId`,render:({field:e})=>(0,F.jsxs)(w,{children:[(0,F.jsx)(O,{children:(0,F.jsx)(n,{id:`termForm.parent`,message:`Parent`})}),(0,F.jsxs)(s,{value:e.value==null?L:String(e.value),onValueChange:t=>{e.onChange(t===L?null:Number(t))},disabled:f,children:[(0,F.jsx)(D,{children:(0,F.jsx)(i,{className:`w-full`,onBlur:e.onBlur,"data-testid":`term-form-parent-select`,children:(0,F.jsx)(r,{})})}),(0,F.jsxs)(a,{children:[(0,F.jsx)(o,{value:L,"data-testid":`term-form-parent-select-option-root`,children:v(I.rootOption)}),d.map(e=>(0,F.jsx)(o,{value:String(e.id),"data-testid":`term-form-parent-select-option-${e.id}`,children:e.label},e.id))]})]}),(0,F.jsx)(k,{})]})}):null,h.map(e=>(0,F.jsx)(P,{box:e,basePath:`meta`,disabled:f},e.id)),p?(0,F.jsx)(M,{variant:`destructive`,"data-testid":`term-form-server-error`,children:(0,F.jsx)(j,{children:v(p)})}):null,(0,F.jsxs)(`div`,{className:`flex justify-end gap-2`,children:[(0,F.jsx)(c,{type:`button`,variant:`outline`,onClick:_,disabled:f,children:(0,F.jsx)(n,{id:`termForm.cancel`,message:`Cancel`})}),(0,F.jsx)(c,{type:`submit`,disabled:f,"data-testid":`term-form-submit`,children:f?(0,F.jsx)(n,{id:`termForm.submitting`,message:`Saving…`}):v(m)})]})]})})}var B={slug_taken:{id:`terms.error.slugTaken`},parent_mismatch:{id:`terms.error.parentMismatch`},parent_self_or_cycle:{id:`terms.error.parentSelfOrCycle`}};function V(){let e=u();return(t,n)=>{let r=H(t);return r===`slug_taken`?e(B.slug_taken):r===`parent_mismatch`?e(B.parent_mismatch):r===`parent_is_self`||r===`parent_cycle`?e(B.parent_self_or_cycle):t instanceof Error?t.message:n}}function H(e){if(e&&typeof e==`object`&&`data`in e)return e.data?.reason}export{z as n,V as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{i as e,t}from"./jsx-runtime-DUAcabCT.js";import{t as n}from"./react-DbyrFoBd.js";import{i as r,n as i}from"./dist-BL2bKHuR.js";import{s as a,t as o}from"./orpc-CmtRGLtZ.js";import{t as ee}from"./useQuery-QAYxQfCx.js";import{t as s}from"./useMutation-vgMtqBOX.js";import{n as c}from"./useStore-Vo4KhxPy.js";import{n as l}from"./Match-Dr0Ejexl.js";import{o as te,t as u}from"./link-CI3qhqYu.js";import{a as d,i as f,o as p,r as ne,t as re}from"./palette-commands-DX18c0wH.js";import{t as m}from"./createLucideIcon-C0O-yxZG.js";import{A as h,B as g,C as _,D as v,E as y,H as b,I as ie,L as x,M as ae,N as oe,O as S,P as se,R as C,S as w,T,V as ce,a as le,b as ue,d as de,f as E,g as fe,h as pe,i as me,j as he,k as ge,l as D,m as O,n as k,o as A,p as j,r as M,s as N,t as P,u as F,v as I,w as L,x as _e,y as ve,z as R}from"./breadcrumb-x0qfIbU9.js";import{t as ye}from"./chevrons-up-down-DmmG8bmI.js";import{n as z,t as B}from"./puzzle-CkL6fcG1.js";import{t as be}from"./image-CYG4gQQy.js";import{t as V}from"./settings-K6TF73jB.js";import{t as H}from"./use-label-CykSHq9A.js";import{m as U,n as W}from"./manifest-Bdiv3Qyq.js";import{t as xe}from"./session-Y-9LAiv-.js";import{i as Se}from"./passkey-DN4QfROE.js";import{t as Ce}from"./separator-DzRLZTkg.js";import{r as we}from"./tooltip-Bf2rZUeB.js";var G=m(`calendar`,[[`path`,{d:`M8 2v4`,key:`1cmpym`}],[`path`,{d:`M16 2v4`,key:`4m81vk`}],[`rect`,{width:`18`,height:`18`,x:`3`,y:`4`,rx:`2`,key:`1hopcy`}],[`path`,{d:`M3 10h18`,key:`8toen8`}]]),Te=m(`folder`,[[`path`,{d:`M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z`,key:`1kt360`}]]),Ee=m(`key`,[[`path`,{d:`m15.5 7.5 2.3 2.3a1 1 0 0 0 1.4 0l2.1-2.1a1 1 0 0 0 0-1.4L19 4`,key:`g0fldk`}],[`path`,{d:`m21 2-9.6 9.6`,key:`1j0ho8`}],[`circle`,{cx:`7.5`,cy:`15.5`,r:`5.5`,key:`yqb3hr`}]]),De=m(`layout-dashboard`,[[`rect`,{width:`7`,height:`9`,x:`3`,y:`3`,rx:`1`,key:`10lvy0`}],[`rect`,{width:`7`,height:`5`,x:`14`,y:`3`,rx:`1`,key:`16une8`}],[`rect`,{width:`7`,height:`9`,x:`14`,y:`12`,rx:`1`,key:`1hutg5`}],[`rect`,{width:`7`,height:`5`,x:`3`,y:`16`,rx:`1`,key:`ldoo1y`}]]),Oe=m(`log-out`,[[`path`,{d:`m16 17 5-5-5-5`,key:`1bji2h`}],[`path`,{d:`M21 12H9`,key:`dn1m92`}],[`path`,{d:`M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4`,key:`1uf3rs`}]]),ke=m(`mail`,[[`path`,{d:`m22 7-8.991 5.727a2 2 0 0 1-2.009 0L2 7`,key:`132q7q`}],[`rect`,{x:`2`,y:`4`,width:`20`,height:`16`,rx:`2`,key:`izxlao`}]]),Ae=m(`panels-top-left`,[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,key:`afitv7`}],[`path`,{d:`M3 9h18`,key:`1pudct`}],[`path`,{d:`M9 21V9`,key:`1oto5p`}]]),je=m(`tag`,[[`path`,{d:`M12.586 2.586A2 2 0 0 0 11.172 2H4a2 2 0 0 0-2 2v7.172a2 2 0 0 0 .586 1.414l8.704 8.704a2.426 2.426 0 0 0 3.42 0l6.58-6.58a2.426 2.426 0 0 0 0-3.42z`,key:`vktsd0`}],[`circle`,{cx:`7.5`,cy:`7.5`,r:`.5`,fill:`currentColor`,key:`kqv944`}]]),Me=m(`user`,[[`path`,{d:`M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2`,key:`975kel`}],[`circle`,{cx:`12`,cy:`7`,r:`4`,key:`17ys0d`}]]),Ne=m(`users`,[[`path`,{d:`M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2`,key:`1yyitq`}],[`path`,{d:`M16 3.128a4 4 0 0 1 0 7.744`,key:`16gr8j`}],[`path`,{d:`M22 21v-2a4 4 0 0 0-3-3.87`,key:`kshegd`}],[`circle`,{cx:`9`,cy:`7`,r:`4`,key:`nufk8`}]]),K=e(t(),1),Pe={dashboard:De,content:z,"file-text":z,layout:Ae,image:be,calendar:G,tag:je,folder:Te,users:Ne,settings:V,puzzle:B,mail:ke,key:Ee};function q({name:e}){return(0,K.jsx)(e?Pe[e]:B,{})}function Fe({user:e}){let{isMobile:t}=b(),n=c(),r=s({mutationFn:Se,onSettled:async e=>{if(await n.invalidate(),n.options.context.queryClient.removeQueries({queryKey:xe}),e?.redirectTo){window.location.assign(e.redirectTo);return}await n.navigate({to:`/login`})}}),a=e.name??e.email,o=a.slice(0,2).toUpperCase();return(0,K.jsxs)(ue,{children:[(0,K.jsx)(y,{asChild:!0,children:(0,K.jsxs)(C,{size:`lg`,"data-testid":`user-menu-trigger`,className:`data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground`,children:[(0,K.jsx)(v,{className:`size-8`,children:(0,K.jsx)(S,{className:`bg-sidebar-accent text-sidebar-accent-foreground text-xs font-semibold`,children:o})}),(0,K.jsxs)(`div`,{className:`grid flex-1 text-start text-sm leading-tight`,children:[(0,K.jsx)(`span`,{className:`truncate font-medium`,children:a}),(0,K.jsx)(`span`,{className:`text-muted-foreground truncate text-xs`,children:e.email})]}),(0,K.jsx)(ye,{className:`ms-auto size-4`})]})}),(0,K.jsxs)(_e,{className:`w-(--radix-dropdown-menu-trigger-width) min-w-56 rounded-lg`,side:t?`bottom`:`right`,align:`end`,sideOffset:4,children:[(0,K.jsx)(L,{className:`p-0 font-normal`,children:(0,K.jsxs)(`div`,{className:`flex items-center gap-2 px-1 py-1.5 text-start text-sm`,children:[(0,K.jsx)(`div`,{"aria-hidden":!0,className:`bg-sidebar-accent text-sidebar-accent-foreground flex size-8 items-center justify-center rounded-md text-xs font-semibold`,children:o}),(0,K.jsxs)(`div`,{className:`grid flex-1 text-start text-sm leading-tight`,children:[(0,K.jsx)(`span`,{className:`truncate font-medium`,children:a}),(0,K.jsx)(`span`,{className:`text-muted-foreground truncate text-xs`,children:e.email})]})]})}),(0,K.jsx)(T,{}),(0,K.jsxs)(w,{children:[(0,K.jsx)(_,{asChild:!0,children:(0,K.jsxs)(u,{to:`/profile`,"data-testid":`user-menu-profile-link`,children:[(0,K.jsx)(Me,{className:`size-4`}),(0,K.jsx)(i,{id:`menu.profile`,message:`Profile`})]})}),(0,K.jsxs)(_,{disabled:!0,children:[(0,K.jsx)(V,{className:`size-4`}),(0,K.jsx)(i,{id:`menu.settings`,message:`Settings`})]})]}),(0,K.jsx)(T,{}),(0,K.jsxs)(_,{onSelect:()=>r.mutate(),disabled:r.isPending,"data-testid":`user-menu-sign-out`,children:[(0,K.jsx)(Oe,{className:`size-4`}),r.isPending?(0,K.jsx)(i,{id:`menu.signOut.pending`,message:`Signing out…`}):(0,K.jsx)(i,{id:`menu.signOut`,message:`Sign out`})]})]})]})}function Ie({user:e,capabilities:t}){let n=U(t),r=H();return(0,K.jsxs)(ge,{collapsible:`icon`,variant:`inset`,children:[(0,K.jsx)(h,{children:n.map(e=>(0,K.jsxs)(ae,{children:[(0,K.jsx)(se,{children:r(e.label)}),(0,K.jsx)(oe,{children:(0,K.jsx)(x,{children:e.items.map(e=>(0,K.jsx)(R,{children:(0,K.jsx)(C,{asChild:!0,tooltip:r(e.label),children:(0,K.jsxs)(u,{to:e.to,activeProps:{"data-active":`true`},activeOptions:{exact:e.exact??!1},children:[(0,K.jsx)(q,{name:e.coreIcon}),(0,K.jsx)(`span`,{children:r(e.label)})]})})},e.to))})})]},e.id))}),(0,K.jsx)(he,{children:(0,K.jsx)(x,{children:(0,K.jsx)(R,{children:(0,K.jsx)(Fe,{user:e})})})})]})}var J=e(n(),1);function Le(e,t){return U(e,t).flatMap(e=>e.items.map(e=>({to:e.to,label:e.label,...e.coreIcon?{coreIcon:e.coreIcon}:{},...e.keywords?{keywords:e.keywords}:{}})))}function Re(e,t,n){let r=t.trim().toLowerCase();return r.length===0?e:e.filter(e=>[e.label,...e.keywords??[]].map(n).join(` `).toLowerCase().includes(r))}function Y(e){let t=e.indexOf(`:`);return t===-1?{domain:e,name:``}:{domain:e.slice(0,t),name:e.slice(t+1)}}function ze(e,t,n){let{domain:r,name:i}=Y(e),o=encodeURIComponent(t);switch(r){case`entry`:return`${a}/entries/${encodeURIComponent(n(i))}/${o}/edit`;case`term`:return`${a}/terms/${encodeURIComponent(i)}/${o}/edit`;case`users`:return`${a}/users/${o}/edit`;default:return null}}function Be(e){return e.metaKey||e.ctrlKey}var X=`plumix.v2.palette.recent`,Ve=8;function He(e){try{let t=[e,...Z().filter(t=>t!==e)].slice(0,Ve);localStorage.setItem(X,JSON.stringify(t))}catch{}}function Z(){try{let e=localStorage.getItem(X);if(e===null)return[];let t=JSON.parse(e);return Array.isArray(t)?t.filter(e=>typeof e==`string`):[]}catch{return[]}}function Ue(e,t,n){let r=new Map(e.map(e=>[e.to,e])),i=[];for(let e of t){let t=r.get(e);if(t&&i.push(t),i.length>=n)break}return i}var Q=2,We=250,Ge=5,$={title:{id:`palette.title`},description:{id:`palette.description`},placeholder:{id:`palette.placeholder`},empty:{id:`palette.empty`},navigation:{id:`palette.group.navigation`},recent:{id:`palette.group.recent`},commands:{id:`palette.group.commands`},loading:{id:`palette.loading`},hintNavigate:{id:`palette.hint.navigate`},hintSelect:{id:`palette.hint.select`},hintClose:{id:`palette.hint.close`}},Ke=[{id:`core:profile`,title:{id:`palette.command.profile`},coreIcon:`users`,run:({navigate:e})=>void e({to:`/profile`})},{id:`core:settings`,title:{id:`palette.command.settings`},coreIcon:`settings`,capability:`settings:manage`,run:({navigate:e})=>void e({to:`/settings`})}];function qe(e,t){let[n,r]=(0,J.useState)(e);return(0,J.useEffect)(()=>{let n=setTimeout(()=>{r(e)},t);return()=>{clearTimeout(n)}},[e,t]),n}function Je({capabilities:e}){let[t,n]=(0,J.useState)(!1),[r,i]=(0,J.useState)(``),a=te(),s=H(),c=(0,J.useRef)(!1);(0,J.useEffect)(()=>{function e(e){e.key===`k`&&(e.metaKey||e.ctrlKey)&&(e.preventDefault(),n(e=>!e))}return document.addEventListener(`keydown`,e),()=>{document.removeEventListener(`keydown`,e)}},[]);let l=r.trim(),u=qe(l,We),d=ee(o.search.query.queryOptions({input:{query:u},enabled:t&&u.length>=Q})),f=ne([...Ke,...re()],e,l,s),p=Re(Le(e),l,s),m=t&&l.length===0?Ue(p,Z(),Ge):[],h=l.length>=Q?d.data??[]:[],g=l.length>=Q&&(l!==u||d.isFetching);function _(){n(!1),i(``)}function v(e){He(e),_(),a({to:e})}function y(e,t){let n=c.current;if(c.current=!1,_(),n){let n=ze(e,t,e=>W(e)?.adminSlug??e);n&&window.open(n,`_blank`,`noopener,noreferrer`);return}let{domain:r,name:i}=Y(e);switch(r){case`entry`:{let e=W(i)?.adminSlug??i;a({to:`/entries/$slug/$id/edit`,params:{slug:e,id:Number(t)}});return}case`term`:a({to:`/terms/$name/$id/edit`,params:{name:i,id:Number(t)}});return;case`users`:a({to:`/users/$id/edit`,params:{id:Number(t)}});return}}function b(e){c.current=Be(e)}return(0,K.jsxs)(O,{open:t,onOpenChange:e=>{n(e),e||i(``)},children:[(0,K.jsxs)(I,{className:`sr-only`,children:[(0,K.jsx)(ve,{children:s($.title)}),(0,K.jsx)(fe,{children:s($.description)})]}),(0,K.jsx)(pe,{className:`overflow-hidden p-0`,children:(0,K.jsxs)(N,{shouldFilter:!1,onClickCapture:b,onKeyDown:e=>{e.key===`Enter`&&b(e)},children:[(0,K.jsx)(de,{value:r,onValueChange:i,"data-testid":`command-palette-input`,placeholder:s($.placeholder)}),(0,K.jsxs)(j,{children:[g?(0,K.jsx)(`div`,{"data-testid":`command-palette-loading`,className:`text-muted-foreground px-3 py-2 text-sm`,children:s($.loading)}):(0,K.jsx)(D,{children:s($.empty)}),m.length>0?(0,K.jsx)(F,{heading:s($.recent),children:m.map(e=>(0,K.jsxs)(E,{value:`recent:${e.to}`,"data-testid":`command-palette-recent-${e.to}`,onSelect:()=>{v(e.to)},children:[(0,K.jsx)(q,{name:e.coreIcon}),(0,K.jsx)(`span`,{children:s(e.label)})]},`recent:${e.to}`))}):null,f.length>0?(0,K.jsx)(F,{heading:s($.commands),children:f.map(e=>(0,K.jsxs)(E,{value:e.id,"data-testid":`command-palette-command-${e.id}`,onSelect:()=>{_(),e.run({navigate:a})},children:[e.coreIcon?(0,K.jsx)(q,{name:e.coreIcon}):null,(0,K.jsx)(`span`,{children:s(e.title)})]},e.id))}):null,p.length>0?(0,K.jsx)(F,{heading:s($.navigation),children:p.map(e=>(0,K.jsxs)(E,{value:e.to,"data-testid":`command-palette-nav-${e.to}`,onSelect:()=>{v(e.to)},children:[(0,K.jsx)(q,{name:e.coreIcon}),(0,K.jsx)(`span`,{children:s(e.label)})]},e.to))}):null,h.map(e=>(0,K.jsx)(F,{heading:s(e.label),children:e.items.map(t=>(0,K.jsx)(E,{value:`${e.key}:${t.id}`,"data-testid":`command-palette-result-${e.key}:${t.id}`,onSelect:()=>{y(e.key,t.id)},children:(0,K.jsx)(`span`,{children:t.title})},`${e.key}:${t.id}`))},e.key))]}),(0,K.jsxs)(`div`,{"data-testid":`command-palette-footer`,className:`text-muted-foreground flex items-center gap-4 border-t px-3 py-2 text-xs`,children:[(0,K.jsxs)(`span`,{className:`flex items-center gap-1`,children:[(0,K.jsx)(A,{children:`↑↓`}),s($.hintNavigate)]}),(0,K.jsxs)(`span`,{className:`flex items-center gap-1`,children:[(0,K.jsx)(A,{children:`↵`}),s($.hintSelect)]}),(0,K.jsxs)(`span`,{className:`flex items-center gap-1`,children:[(0,K.jsx)(A,{children:`⎋`}),s($.hintClose)]})]})]})})]})}function Ye(){return d(p({select:e=>e.location.pathname}))}function Xe(){let e=Ye(),{i18n:t}=r(),n=e=>typeof e.label==`string`?e.label:t._(e.label.id,e.values,{message:e.label.message});return(0,K.jsxs)(`header`,{className:`flex h-14 shrink-0 items-center gap-2 border-b px-4`,children:[(0,K.jsx)(ce,{className:`-ms-1`}),(0,K.jsx)(Ce,{orientation:`vertical`,className:`me-2 h-4`}),(0,K.jsx)(P,{children:(0,K.jsx)(M,{children:e.map((t,r)=>{let i=r===e.length-1,a=n(t);return(0,K.jsxs)(J.Fragment,{children:[r>0?(0,K.jsx)(le,{}):null,(0,K.jsx)(k,{children:i?(0,K.jsx)(me,{children:a}):t.to===void 0?(0,K.jsx)(`span`,{className:`text-muted-foreground`,children:a}):(0,K.jsx)(u,{to:t.to,className:`text-muted-foreground hover:text-foreground transition-colors`,children:a})})]},`${String(r)}-${a}`)})})})]})}function Ze(){let{user:e}=f.useRouteContext();return(0,K.jsx)(we,{delayDuration:100,children:(0,K.jsxs)(g,{children:[(0,K.jsx)(Je,{capabilities:e.capabilities}),(0,K.jsx)(Ie,{user:e,capabilities:e.capabilities}),(0,K.jsxs)(ie,{children:[(0,K.jsx)(Xe,{}),(0,K.jsx)(`main`,{className:`flex-1 overflow-y-auto p-6`,children:(0,K.jsx)(l,{})})]})]})})}export{Ze as component};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./_page-BSBKYWFe.js","./jsx-runtime-DUAcabCT.js","./dist-BL2bKHuR.js","./react-DbyrFoBd.js","./error-placeholder-ULkA-k6_.js","./empty-p3QKoEqD.js","./utils-DKOQrNEG.js","./dist-B66OmIyr.js","./triangle-alert-BpzHmkii.js","./createLucideIcon-C0O-yxZG.js","./_page-Rj3wR-yR.js","./_page-Be9sR1G2.js","./orpc-CmtRGLtZ.js","./useMutation-vgMtqBOX.js","./useSuspenseQuery-9GLTSYHf.js","./useQuery-QAYxQfCx.js","./button-DG1Ca1S5.js","./dist-Dgy1ZZMQ.js","./use-label-CykSHq9A.js","./manifest-Bdiv3Qyq.js","./style-emitter-CDGtTiRG.js","./card-L2-kK5VK.js","./form-B_PPIck3.js","./alert-cwX3fWUu.js","./meta-box-field-BTDudxyS.js","./select-D3kIVy0H.js","./react-dom-i-Mcm3wj.js","./dist-C4yHjFuP.js","./dist-BbwCNMFC.js","./dist-vYFq1OyT.js","./es2015-Di0DqwZ-.js","./dist-BP9v0gZx.js","./breadcrumb-x0qfIbU9.js","./dist-RxmsRBXP.js","./dist-DWZq3eNY.js","./skeleton-BnBM1862.js","./input-xYuLUQID.js","./separator-DzRLZTkg.js","./dist-BaNJ6JYm.js","./tooltip-Bf2rZUeB.js","./dist-BreUs1Gf.js","./textarea-iIsBg5jH.js","./dist-hUh7dFZi.js","./utils-kFAy0YTP.js","./sonner-1kBVu4ZN.js","./dist-Cz1zPiFe.js","./popover-BoiNmQB7.js","./dist-CFgtqwWs.js","./toggle-M64NT8hi.js","./type-labels-DEpt0nSb.js","./plugin-registry-nSDhEMki.js","./errors-BDz8PxwA.js","./meta-box-grid-CoW6o7O7.js"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{i as e,t}from"./jsx-runtime-DUAcabCT.js";import{i as n}from"./dist-BL2bKHuR.js";import{t as r}from"./orpc-CmtRGLtZ.js";import{T as i,a,t as o}from"./lazyRouteComponent-CQbKoKTD.js";import{s}from"./matchContext-DKtpdvCQ.js";import{a as c,u as l}from"./manifest-Bdiv3Qyq.js";import{t as u}from"./caps-SYhabp1B.js";import{t as d}from"./_page-Rj3wR-yR.js";import{t as f}from"./edit-skeleton-oIsvepSM.js";var p=e(t(),1),m=a(`/_authenticated/settings/$page`)({beforeLoad:({context:e,params:t})=>{let n=c(t.page);if(!n||!u(e.user.capabilities,`settings:manage`))throw s();return{page:n}},loader:({context:e})=>{let t=l(e.page);return Promise.all(t.map(t=>e.queryClient.ensureQueryData(r.settings.get.queryOptions({input:{group:t.name}}))))},pendingComponent:h,errorComponent:o(()=>i(()=>import(`./_page-BSBKYWFe.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10]),import.meta.url),`errorComponent`),component:o(()=>i(()=>import(`./_page-Be9sR1G2.js`),__vite__mapDeps([11,1,3,2,12,13,14,15,16,17,6,7,5,18,19,20,10,21,22,23,24,25,26,27,28,29,30,31,9,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52]),import.meta.url),`component`)});function h(){let{i18n:e}=n();return(0,p.jsx)(f,{ariaLabel:e._(d.loadingAria.id,void 0,{message:d.loadingAria.message}),testId:`settings-page-loading`})}export{m as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{i as e,t}from"./jsx-runtime-DUAcabCT.js";import{t as n}from"./react-DbyrFoBd.js";import{i as r,n as i}from"./dist-BL2bKHuR.js";import{t as a,u as o}from"./orpc-CmtRGLtZ.js";import{t as s}from"./useMutation-vgMtqBOX.js";import{t as c}from"./useSuspenseQuery-9GLTSYHf.js";import{t as l}from"./button-DG1Ca1S5.js";import{i as u,o as d,r as f,t as p}from"./empty-p3QKoEqD.js";import{t as m}from"./use-label-CykSHq9A.js";import{b as h,u as g}from"./manifest-Bdiv3Qyq.js";import{t as _}from"./_page-Rj3wR-yR.js";import{a as v,i as y,n as b,r as x,t as S}from"./card-L2-kK5VK.js";import{t as C}from"./_page--PcGMzdu.js";import{f as w,t as T}from"./form-B_PPIck3.js";import{n as E,t as D}from"./alert-cwX3fWUu.js";import{t as O}from"./meta-box-field-BTDudxyS.js";import{t as k}from"./meta-box-grid-CoW6o7O7.js";var A=e(n()),j=e(t()),M=`ctx.registerSettingsPage(name, { groups: [...] })`;function N(){let{page:e}=C.useRouteContext(),t=g(e),n=m();return(0,j.jsxs)(`div`,{className:`mx-auto flex w-full max-w-2xl flex-col gap-6`,children:[(0,j.jsxs)(`header`,{className:`flex flex-col gap-1`,children:[(0,j.jsx)(`h1`,{className:`text-2xl font-semibold`,"data-testid":`settings-page-heading`,children:n(e.label)}),e.description?(0,j.jsx)(`p`,{className:`text-muted-foreground text-sm`,children:n(e.description)}):null]}),t.length===0?(0,j.jsx)(F,{}):t.map(e=>(0,j.jsx)(P,{group:e},e.name))]})}function P({group:e}){let{i18n:t}=r(),n=m(),u=o(),[d,f]=(0,A.useState)(null),[p,g]=(0,A.useState)(null),{data:C}=c(a.settings.get.queryOptions({input:{group:e.name}})),M=w({defaultValues:h([e],C)}),N=s({mutationFn:t=>a.settings.upsert.call({group:e.name,values:t}),onMutate:()=>{f(null),g(null)},onSuccess:async t=>{M.reset(h([e],t)),await u.invalidateQueries({queryKey:a.settings.get.queryOptions({input:{group:e.name}}).queryKey}),g(_.saved)},onError:e=>{f(e instanceof Error?e.message:_.saveFailed)}}),P=M.handleSubmit(e=>{N.mutate(e)});return(0,j.jsx)(S,{className:`@container`,"data-testid":`settings-group-card-${e.name}`,children:(0,j.jsx)(T,{...M,children:(0,j.jsxs)(`form`,{onSubmit:P,children:[(0,j.jsxs)(y,{children:[(0,j.jsx)(v,{children:(0,j.jsx)(`h2`,{className:`text-lg font-semibold`,"data-testid":`settings-group-heading-${e.name}`,children:n(e.label)})}),e.description?(0,j.jsx)(x,{children:n(e.description)}):null]}),(0,j.jsxs)(b,{className:`flex flex-col gap-4`,children:[(0,j.jsx)(`div`,{className:`grid grid-cols-12 gap-4`,children:e.fields.map(e=>(0,j.jsx)(O,{field:e,name:e.key,disabled:N.isPending,className:k(e.span)},e.key))}),d?(0,j.jsx)(D,{variant:`destructive`,role:`alert`,"data-testid":`settings-server-error-${e.name}`,children:(0,j.jsx)(E,{children:typeof d==`string`?d:t._(d.id,void 0,{message:d.message})})}):null,p?(0,j.jsx)(D,{role:`status`,"aria-live":`polite`,"data-testid":`settings-save-notice-${e.name}`,children:(0,j.jsx)(E,{children:t._(p.id,void 0,{message:p.message})})}):null]}),(0,j.jsx)(`div`,{className:`flex justify-end px-6 pb-6`,children:(0,j.jsx)(l,{type:`submit`,disabled:N.isPending,"data-testid":`settings-submit-${e.name}`,children:N.isPending?(0,j.jsx)(i,{id:`settings.page.submit.pending`,message:`Saving…`}):(0,j.jsx)(i,{id:`settings.page.submit.idle`,message:`Save changes`})})})]})})})}function F(){return(0,j.jsx)(S,{children:(0,j.jsx)(p,{children:(0,j.jsxs)(u,{children:[(0,j.jsx)(d,{children:(0,j.jsx)(i,{id:`settings.page.empty.title`,message:`No groups on this page`})}),(0,j.jsxs)(f,{children:[(0,j.jsx)(i,{id:`settings.page.empty.description`,message:`This settings page doesn't reference any registered groups yet. Plugins compose pages with the registerSettingsPage helper:`}),` `,(0,j.jsx)(`code`,{className:`font-mono text-xs`,children:M})]})]})})})}export{N as component};
|