@oktis-works/admin 0.19.1 → 0.23.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (124) hide show
  1. package/dist/client/_astro/{ActivityWidget.9T9D1Dwq.js → ActivityWidget.Dzoi-bq3.js} +1 -1
  2. package/dist/client/_astro/{AdminBar.uZX_VBFr.js → AdminBar.eT1ch_B6.js} +1 -1
  3. package/dist/client/_astro/{ApiKeysManager.BeZosAcl.js → ApiKeysManager.kbTE1CPk.js} +1 -1
  4. package/dist/client/_astro/{AtGlanceWidget.B6FKmL7A.js → AtGlanceWidget.w23IIv06.js} +1 -1
  5. package/dist/client/_astro/{BaseLayout.Cp-O10m_.css → BaseLayout.Rpr86VwM.css} +1 -1
  6. package/dist/client/_astro/{CommentsManager.9iktJziN.js → CommentsManager.BN7i1RHa.js} +1 -1
  7. package/dist/client/_astro/ContentEditor.BlsJ2bwD.js +1 -0
  8. package/dist/client/_astro/ContentTypeWorkspace.BPVuQgzA.js +1 -0
  9. package/dist/client/_astro/{DashboardHome.CBTZuAbN.js → DashboardHome.DXzu_IXZ.js} +1 -1
  10. package/dist/client/_astro/{DashboardLayout.astro_astro_type_script_index_0_lang.ohczxyNy.js → DashboardLayout.astro_astro_type_script_index_0_lang.DmNSzErX.js} +1 -1
  11. package/dist/client/_astro/FieldGroupEditor.DsqphEgt.js +69 -0
  12. package/dist/client/_astro/{FieldGroupList.DwHwSB-m.js → FieldGroupList.pW2Um9om.js} +1 -1
  13. package/dist/client/_astro/FieldRenderer.AYtSBfHZ.js +3 -0
  14. package/dist/client/_astro/{Footer.ZmhGZsX_.js → Footer.5Lcn2VXz.js} +1 -1
  15. package/dist/client/_astro/GeneralSettings.B-H8Rzy7.js +1 -0
  16. package/dist/client/_astro/{LogsManager.VmsL1Y_c.js → LogsManager.Crd8q2te.js} +1 -1
  17. package/dist/client/_astro/{MediaLibrary.BPA5KcoT.js → MediaLibrary.Cv6Ry3u9.js} +1 -1
  18. package/dist/client/_astro/{MenuManager.-kATOHiC.js → MenuManager.D25ika09.js} +1 -1
  19. package/dist/client/_astro/{Modal.6YIPt-vQ.js → Modal.572hmVvb.js} +1 -1
  20. package/dist/client/_astro/{PluginManager.ezr27PG_.js → PluginManager.DLfgQFPF.js} +1 -1
  21. package/dist/client/_astro/{PostTypesManager.D4rhu5qf.js → PostTypesManager.C3RbmOZT.js} +1 -1
  22. package/dist/client/_astro/{QuickDraftWidget.tEoK6vHH.js → QuickDraftWidget.BtSGzhKq.js} +1 -1
  23. package/dist/client/_astro/{ReadingSettings.BhxqtNjo.js → ReadingSettings.ZFDaeo5U.js} +1 -1
  24. package/dist/client/_astro/{ResourceHubs.Bjng1UYH.js → ResourceHubs.Cx9fbCv1.js} +1 -1
  25. package/dist/client/_astro/{TaxonomiesManager.C12F1EN1.js → TaxonomiesManager.BLsvmjaL.js} +1 -1
  26. package/dist/client/_astro/TaxonomyTermsManager.C_xEh8Ab.js +1 -0
  27. package/dist/client/_astro/ThemeCustomizer.yx8rEKcL.js +577 -0
  28. package/dist/client/_astro/{ThemeManager.D28v1eyx.js → ThemeManager.BpS3m7Qc.js} +2 -2
  29. package/dist/client/_astro/{UserCreateForm.Bh_H8pJN.js → UserCreateForm.BYwgAqKk.js} +1 -1
  30. package/dist/client/_astro/{UsersManager.Ds7__cY5.js → UsersManager.DODMr48D.js} +1 -1
  31. package/dist/client/_astro/{WebhooksManager.2IVxZFIV.js → WebhooksManager.DmWIW272.js} +1 -1
  32. package/dist/client/_astro/ar.BCtMLfbL.js +1 -0
  33. package/dist/client/_astro/clone.oDfZEkVn.js +1 -0
  34. package/dist/client/_astro/es-ES.BfYd3kCv.js +1 -0
  35. package/dist/client/_astro/he.pQFPO6hc.js +1 -0
  36. package/dist/client/_astro/i18n.A82w5XQu.js +1 -0
  37. package/dist/client/_astro/it.ZpeUogpB.js +1 -0
  38. package/dist/client/_astro/ja.Ch5X4gaR.js +1 -0
  39. package/dist/client/_astro/pl.DDgkAPXr.js +1 -0
  40. package/dist/client/_astro/pt-BR.zZcF2v3X.js +1 -0
  41. package/dist/client/_astro/ru.CAjJz8Cj.js +1 -0
  42. package/dist/client/_astro/sw.CehAEkRN.js +1 -0
  43. package/dist/client/_astro/tr.Sf1XkPHa.js +1 -0
  44. package/dist/client/_astro/uk.-2u2eOOq.js +1 -0
  45. package/dist/client/_astro/yo.os9m69tq.js +1 -0
  46. package/dist/client/_astro/zh-CN.Bt1lpQQu.js +1 -0
  47. package/dist/server/chunks/{404_CtVqPqLh.mjs → 404_BjHJCErQ.mjs} +1 -1
  48. package/dist/server/chunks/{BaseLayout_CH8MQ3No.mjs → BaseLayout_DrIrAANk.mjs} +1 -1
  49. package/dist/server/chunks/{ContentEditor_6J53ebJ2.mjs → ContentEditor_BhXk6xd0.mjs} +42 -7
  50. package/dist/server/chunks/{DashboardLayout_DGbCn1gh.mjs → DashboardLayout_DxMWAFCu.mjs} +12 -12
  51. package/dist/server/chunks/{FbIcon_7YixzwO3.mjs → FbIcon_D0f6QiFJ.mjs} +1 -1
  52. package/dist/server/chunks/{FieldRenderer_DowQgtDc.mjs → FieldRenderer_CD8prpXz.mjs} +173 -131
  53. package/dist/server/chunks/{FloatingPanel_BtB-nNBT.mjs → FloatingPanel_DI2CdUZK.mjs} +1 -1
  54. package/dist/server/chunks/{MediaLibrary_DuxnoiMa.mjs → MediaLibrary_BY9b_CPa.mjs} +3 -3
  55. package/dist/server/chunks/{Modal_CkrRnNzN.mjs → Modal_BmuvdwoB.mjs} +2 -2
  56. package/dist/server/chunks/{PageHeader_CRpzf5xU.mjs → PageHeader_CBOioOjo.mjs} +1 -1
  57. package/dist/server/chunks/{TimezoneSelect_Cj-oxeeA.mjs → TimezoneSelect_D6o-2_7b.mjs} +2 -2
  58. package/dist/server/chunks/{_id__DfQqu18v.mjs → _id__BeIHLdfs.mjs} +79 -67
  59. package/dist/server/chunks/{_slug__CPv34VnT.mjs → _slug__Dsz2U4cu.mjs} +2 -2
  60. package/dist/server/chunks/{access_B-f0fZwc.mjs → access_ClmMoH40.mjs} +8 -8
  61. package/dist/server/chunks/{api-keys_BSvI1g4B.mjs → api-keys_DLbrSM4U.mjs} +6 -6
  62. package/dist/server/chunks/{ar_DObFFdrO.mjs → ar_Cgz1nkYN.mjs} +30 -3
  63. package/dist/server/chunks/clone_FT3Zf-Bf.mjs +59 -0
  64. package/dist/server/chunks/{comments_D3X5nFKK.mjs → comments_Cg1jrxti.mjs} +3 -3
  65. package/dist/server/chunks/{custom-fields_Cue8nhbd.mjs → custom-fields_CVJsfyk6.mjs} +5 -5
  66. package/dist/server/chunks/customize_BW-P44BY.mjs +1549 -0
  67. package/dist/server/chunks/{edit_5CwEtymP.mjs → edit_DdmQd4K3.mjs} +3 -3
  68. package/dist/server/chunks/{es-ES_D6jd6T7H.mjs → es-ES_Bw0g3h9x.mjs} +30 -3
  69. package/dist/server/chunks/{he_DwGJwonL.mjs → he_BcJYW2q8.mjs} +30 -3
  70. package/dist/server/chunks/{i18n_RELfVLel.mjs → i18n_C-sgJSi1.mjs} +34 -19
  71. package/dist/server/chunks/{index_BzgdFBMP.mjs → index_BSQio-Py.mjs} +4 -4
  72. package/dist/server/chunks/{index_C594fLur.mjs → index_BktteRMy.mjs} +6 -17
  73. package/dist/server/chunks/{index_CJVbaexl.mjs → index_Bv2fgBnE.mjs} +6 -6
  74. package/dist/server/chunks/{index_DW0-epn4.mjs → index_Bw0pBVRv.mjs} +4 -4
  75. package/dist/server/chunks/{index_CvbZ6goO.mjs → index_DxNPNwIw.mjs} +5 -5
  76. package/dist/server/chunks/{it_CMLpQyoj.mjs → it_CgOxhoxy.mjs} +30 -3
  77. package/dist/server/chunks/{ja_CYRz0pHv.mjs → ja_0swn1wUm.mjs} +30 -3
  78. package/dist/server/chunks/{login_BAhzxnXF.mjs → login_BCRPUCQz.mjs} +1 -1
  79. package/dist/server/chunks/{logs_iVt0OMQv.mjs → logs_DlzM1kpI.mjs} +5 -5
  80. package/dist/server/chunks/{menus_zRwS15d7.mjs → menus_pMKatAHX.mjs} +4 -4
  81. package/dist/server/chunks/{new_DKOOAiqy.mjs → new_B3cNZZO2.mjs} +3 -3
  82. package/dist/server/chunks/{new_CWejzb4K.mjs → new_C9JrPY2y.mjs} +5 -5
  83. package/dist/server/chunks/{pl_BuXVPvU1.mjs → pl_eLBKfEwP.mjs} +30 -3
  84. package/dist/server/chunks/{plugins_BpPZxAK2.mjs → plugins_BTPNe18c.mjs} +3 -3
  85. package/dist/server/chunks/{post-types_C_JULYq5.mjs → post-types_DIYWDXCR.mjs} +7 -7
  86. package/dist/server/chunks/{pt-BR_B2PJHiOg.mjs → pt-BR_AVNE88MZ.mjs} +16 -1
  87. package/dist/server/chunks/{reading_fhgI8X3-.mjs → reading_BBV5Dsg0.mjs} +4 -4
  88. package/dist/server/chunks/{ru_C56ltukG.mjs → ru_Dt3fMzac.mjs} +30 -3
  89. package/dist/server/chunks/{sw_Dhw0GAgD.mjs → sw_oPyQwKSK.mjs} +30 -3
  90. package/dist/server/chunks/{taxonomies_Bb8DwbNZ.mjs → taxonomies_G6ROt7Dn.mjs} +5 -5
  91. package/dist/server/chunks/{taxonomy_BXM2ubYg.mjs → taxonomy_B59mViQc.mjs} +5 -4
  92. package/dist/server/chunks/{themes_BPlBocEN.mjs → themes_CygkZJbP.mjs} +7 -5
  93. package/dist/server/chunks/{tr_zELRy7A-.mjs → tr_DG1ipiJ0.mjs} +30 -3
  94. package/dist/server/chunks/{uk_DVOqp1x6.mjs → uk_DCWgX6k4.mjs} +30 -3
  95. package/dist/server/chunks/{upload_BWA1htvi.mjs → upload_BOPk3diJ.mjs} +4 -4
  96. package/dist/server/chunks/{webhooks_CzjbYgHf.mjs → webhooks_BiHf1cMk.mjs} +5 -5
  97. package/dist/server/chunks/{yo_BqgZcoxs.mjs → yo_DsFzhH21.mjs} +30 -3
  98. package/dist/server/chunks/{zh-CN_Dz2D1XUc.mjs → zh-CN_OaG8XYVK.mjs} +30 -3
  99. package/dist/server/entry.mjs +28 -28
  100. package/dist/server/virtual_astro_middleware.mjs +3 -3
  101. package/package.json +1 -1
  102. package/dist/client/_astro/ContentEditor.BqDPU74P.js +0 -1
  103. package/dist/client/_astro/ContentEditor.DVKohXM-.js +0 -3
  104. package/dist/client/_astro/ContentTypeWorkspace.DqoBUPpT.js +0 -1
  105. package/dist/client/_astro/FieldGroupEditor.DBT985JP.js +0 -69
  106. package/dist/client/_astro/FieldRenderer.BxkMD5Kl.js +0 -1
  107. package/dist/client/_astro/GeneralSettings.B1f0Zpzs.js +0 -1
  108. package/dist/client/_astro/TaxonomyTermsManager.2V-JSC-7.js +0 -1
  109. package/dist/client/_astro/ThemeCustomizer.CGY-3Jl4.js +0 -49
  110. package/dist/client/_astro/ar.BeEmOTlL.js +0 -1
  111. package/dist/client/_astro/es-ES.C0DI0CK6.js +0 -1
  112. package/dist/client/_astro/he.RF4swhtn.js +0 -1
  113. package/dist/client/_astro/i18n.DnYRsWBJ.js +0 -1
  114. package/dist/client/_astro/it.DhCR9YsW.js +0 -1
  115. package/dist/client/_astro/ja.DPrxHQvU.js +0 -1
  116. package/dist/client/_astro/pl.6VCoPa7y.js +0 -1
  117. package/dist/client/_astro/pt-BR.CeCNYyhv.js +0 -1
  118. package/dist/client/_astro/ru.Cv0Z6X2y.js +0 -1
  119. package/dist/client/_astro/sw.BBMIgY-Y.js +0 -1
  120. package/dist/client/_astro/tr.BWEmWhCE.js +0 -1
  121. package/dist/client/_astro/uk.DDXJXOmn.js +0 -1
  122. package/dist/client/_astro/yo.DNoEBLJd.js +0 -1
  123. package/dist/client/_astro/zh-CN.CVKBB6Ky.js +0 -1
  124. package/dist/server/chunks/customize_CSP8B-As.mjs +0 -233
@@ -1 +0,0 @@
1
- var e={appName:`OkCMS`,admin:`管理后台`,nav:{dashboard:`仪表盘`,content:`内容`,media:`媒体库`,users:`用户`,menus:`菜单`,settings:`设置`,plugins:`插件`,themes:`主题`},actions:{logout:`退出`,newPost:`新建文章`,uploadMedia:`上传媒体`,addUser:`添加用户`,openSettings:`设置`}},t={title:`仪表盘`,stats:{totalContent:`内容总数`,published:`已发布`,drafts:`草稿`,mediaFiles:`媒体文件`,users:`用户数`},recent:{title:`最近内容`,viewAll:`查看全部`,empty:`暂无内容 — 创建第一篇!`,columns:{title:`标题`,type:`类型`,status:`状态`,updated:`更新时间`}},widgets:{atGlance:`概览`,posts:`文章`,postsDesc:`已发布 / 草稿 / 回收站`,pages:`页面`,pagesDesc:`已发布 / 草稿 / 回收站`,media:`媒体`,mediaDesc:`库中的文件`,users:`用户`,usersDesc:`总计 / 活跃 / 未激活`,version:`版本`,storage:`存储`,quickDraft:{title:`快速草稿`,heading:`标题`,headingPlaceholder:`为草稿起个标题`,content:`内容`,contentPlaceholder:`你在想什么?`,save:`保存草稿`,yourDrafts:`你的草稿`,noDrafts:`暂无草稿。`},activity:{title:`活动`,empty:`暂无活动。`}}},n={list:{title:`内容管理`,description:`搜索、筛选、编辑和发布您的内容。`,columns:{title:`标题`,type:`类型`,status:`状态`,updated:`更新时间`},actions:{edit:`编辑`,publish:`发布`,unpublish:`取消发布`,delete:`删除`},filters:{search:`搜索内容…`,allTypes:`所有类型`,allStatus:`所有状态`},buttons:{new:`+ 新建内容`,search:`搜索`},empty:`未找到内容。`,statuses:{draft:`草稿`,published:`已发布`,archived:`已归档`},confirmDelete:`确定删除 "{title}"?`,toasts:{published:`内容已发布 ✓`,unpublished:`已取消发布 ✓`}},editor:{type:`类型`,title:`标题`,slug:`别名`,excerpt:`摘要`,featuredImage:`特色图片 (媒体ID)`,status:`状态`,statusOptions:{draft:`草稿`,published:`已发布`,archived:`已归档`},layout:`布局`,layoutAuto:`自动 (主题层级)`,customFields:`自定义字段`,inspectTypes:`查看可用类型`,save:`保存`,saved:`内容保存成功。`},taxonomy:{editTerm:`编辑术语`}},r={title:`菜单`,description:`创建和管理网站使用的导航菜单。`,hint:`菜单独立于内容类型,可由主题进行渲染。`,new:`新建菜单`,create:`创建菜单`,edit:`编辑菜单`,name:`名称`,slug:`别名`,items:`菜单项 (JSON)`,itemsHint:`使用菜单项对象组成的 JSON 数组。`,invalidItems:`菜单项必须是有效的 JSON 数组。`,saved:`菜单已保存。`,deleted:`菜单已删除。`,empty:`暂无菜单。`,confirmDelete:`删除菜单“{name}”?`},i={title:`媒体库`,description:"上传和管理图片、视频和文档。文件存储在 `uploads/` 并公开访问。",upload:{dropzone:`拖拽文件到这里或`,select:`选择文件`,uploading:`上传中…`,hint:`图片、视频、音频和文档 · 单文件最大 25MB`},toolbar:{search:`按名称或 alt 搜索…`,allTypes:`所有类型`,searchBtn:`搜索`},mimeTypes:{png:`PNG`,jpeg:`JPEG`,gif:`GIF`,webp:`WebP`,svg:`SVG`,pdf:`PDF`,mp4:`MP4`,mp3:`MP3`},empty:`暂无文件。上传第一个!`,details:{title:`详情`,file:`文件`,type:`类型`,size:`大小`,url:`链接`,copy:`复制`,alt:`替代文本`,caption:`说明`,save:`保存详情`,delete:`删除`,close:`关闭`,confirmDelete:`确定删除 "{filename}"? 文件将从磁盘移除。`,saved:`详情已保存 ✓`,copied:`链接已复制 ✓`,copyError:`无法复制链接`},toasts:{uploaded:`已上传 {count} 个文件 ✓`}},a={title:`用户管理`,description:`管理账户、角色和项目访问权限。`,new:`新用户`,toolbar:{search:`按姓名或邮箱搜索…`,allStatus:`所有状态`,active:`激活`,inactive:`未激活`,newBtn:`+ 新用户`,searchBtn:`搜索`},table:{name:`姓名`,email:`邮箱`,role:`角色`,status:`状态`,lastAccess:`最后访问`,actions:{manage:`管理`,delete:`删除`}},empty:`未找到用户。`,noRole:`无角色`,detail:{title:`管理用户`,fields:{name:`姓名`,email:`邮箱`,status:`状态`,role:`角色`,password:`密码`},statusOptions:{active:`激活`,inactive:`未激活`},rolePlaceholder:`— 无角色 —`,meta:`创建于 {created} · 最后访问 {lastAccess}`,actions:{save:`保存`,resetPassword:`重置密码`,close:`关闭`},passwordPrompt:`为 {email} 设置新密码 (最少 8 字符):`,passwordError:`密码至少需要 8 个字符`,toasts:{roleUpdated:`{name} 的角色已更新 ✓`,passwordChanged:`{name} 的密码已修改 ✓`,saved:`用户 {name} 已保存 ✓`,deleted:`用户 {name} 已删除 ✓`},confirmDelete:`确定删除用户 {email}?`}},o={general:{title:`常规`,description:`网站显示的基本信息。`,back:`← 所有设置`,fields:{siteTitle:`网站标题`,siteTitlePlaceholder:`我的网站`,siteDescription:`描述`,siteDescriptionPlaceholder:`基于 OkCMS 的新网站`,language:`语言`,timezone:`时区`,timezonePlaceholder:`Asia/Shanghai`},saved:`设置已保存 ✓`,loading:`加载中…`,save:`保存`},postTypes:{title:`内容类型`,description:`创建自定义内容类型 (CPT),除文章和页面外。`,form:{title:`创建内容类型`,slug:`别名 (单数,例:portfolio)`,slugHint:`仅限小写字母、数字和下划线`,singular:`单数名称`,plural:`复数名称`,supports:`支持功能`,supportsOptions:{title:`标题`,editor:`编辑器`,thumbnail:`特色图片`,excerpt:`摘要`,revisions:`版本控制`},hasArchive:`拥有公开归档页 (/slug)`,create:`创建`},table:{slug:`别名`,singular:`单数`,plural:`复数`,source:`来源`,supports:`支持功能`,archive:`归档`,actions:{remove:`移除`}},sources:{admin:`后台`,core:`核心`}},taxonomies:{title:`分类法`,description:`创建自定义分类法并关联到内容类型。`,form:{title:`创建分类法`,name:`名称 (例:类型)`,slug:`别名 (可选,从名称生成)`,slugHint:`仅限小写字母、数字和下划线`,hierarchical:`层级化 (允许父/子术语)`,attachTo:`关联到内容类型`,create:`创建`},table:{taxonomy:`分类法`,hierarchical:`层级化`,attachedTypes:`关联的内容类型`,actions:{remove:`移除`}}}},s={title:`页面未找到`,description:`地址可能已过期,或页面已被移动。请检查网址,或访问以下栏目之一。`,requestedPath:`您尝试打开的地址`,suggestionsLabel:`或访问以下栏目`,goHome:`返回首页`,goBack:`返回`},c={title:`登录`,subtitle:`登录您的账户`,email:`邮箱`,password:`密码`,submit:`登录`,failed:`邮箱或密码无效`},l={save:`保存`,cancel:`取消`,delete:`删除`,edit:`编辑`,close:`关闭`,confirm:`确认`,loading:`加载中…`,yes:`是`,no:`否`,search:`搜索`,filter:`筛选`,create:`创建`,update:`更新`,remove:`移除`,viewAll:`查看全部`,back:`返回`,next:`下一页`,previous:`上一页`,page:`页`,of:`/`,items:`项`,item:`项`,empty:`未找到 {items}。`,toast:{success:`✓`,error:`错误: {message}`},status:{active:`激活`,inactive:`未激活`,draft:`草稿`,published:`已发布`,archived:`已归档`,locked:`已锁定`},language:`语言`},u={justNow:`刚刚`,minAgo:`分钟前`,ago:`前`,published:`已发布`,updated:`已更新`,newUser:`新用户:{name}`},d={mainMenu:`主菜单`,notifications:`通知`,notificationsEmpty:`暂无最新活动`,settings:`设置`,toggleSidebar:`切换侧边栏`,userMenu:`用户菜单`},f={copyright:`© 2026 OkCMS。保留所有权利。`,links:`链接`,website:`网站`,github:`GitHub`,docs:`文档`,community:`社区`,poweredBy:`由 Oktis Works 驱动`},p={title:`帮助`,label:`帮助`,tabs:`帮助主题`,topics:{overview:{label:`概览`,content:`<h4>欢迎使用 OkCMS 控制台</h4><p>此控制台让您可以概览网站的内容和活动。</p><h4>可用小工具</h4><ul><li><strong>概览:</strong>文章、页面、媒体和用户的总览</li><li><strong>快速草稿:</strong>从控制台快速保存草稿</li><li><strong>活动:</strong>最近的网站活动和更新</li></ul>`},content:{label:`内容管理`,content:`<h4>管理内容</h4><p>在“内容”部分创建、编辑和发布内容。</p><h4>快捷操作</h4><ul><li>点击“新建内容”创建新文章或页面</li><li>使用筛选器查找特定内容</li><li>可对多个项目执行批量操作</li></ul>`},media:{label:`媒体库`,content:`<h4>管理媒体</h4><p>上传和管理图片、视频及文档。</p><h4>提示</h4><ul><li>拖放文件即可上传</li><li>添加替代文本以提升可访问性</li><li>用文件夹整理(即将推出)</li></ul>`}}},m={title:`屏幕选项`,label:`屏幕选项`,showOnScreen:`在屏幕上显示`},h={layout:e,dashboard:t,content:n,menus:r,media:i,users:a,settings:o,notFound:s,login:c,common:l,activity:u,adminBar:d,footer:f,helpTabs:p,screenOptions:m};export{u as activity,d as adminBar,l as common,n as content,t as dashboard,h as default,f as footer,p as helpTabs,e as layout,c as login,i as media,r as menus,s as notFound,m as screenOptions,o as settings,a as users};
@@ -1,233 +0,0 @@
1
- import { r as __exportAll } from "./rolldown-runtime_BMI-E3GI.mjs";
2
- import { S as createAstro, i as renderComponent, u as renderTemplate } from "./server_B5N27szj.mjs";
3
- import { t as createComponent$1 } from "./compiler_O7J1rlsi.mjs";
4
- import { n as useTranslation, r as apiClient } from "./i18n_RELfVLel.mjs";
5
- import { t as $$DashboardLayout } from "./DashboardLayout_DGbCn1gh.mjs";
6
- import { t as PageHeader } from "./PageHeader_CRpzf5xU.mjs";
7
- import { createComponent, escape, ssr, ssrAttribute, ssrHydrationKey } from "solid-js/web";
8
- import { For, Show, createMemo, createSignal, onMount } from "solid-js";
9
- //#region src/components/apps/themes/ThemeCustomizer.tsx
10
- var _tmpl$ = [
11
- "<p",
12
- " class=\"muted\">",
13
- "</p>"
14
- ];
15
- var _tmpl$2 = [
16
- "<span",
17
- " class=\"customizer__saved\">",
18
- "</span>"
19
- ];
20
- var _tmpl$3 = [
21
- "<div",
22
- " class=\"alert alert-error\">",
23
- "</div>"
24
- ];
25
- var _tmpl$4 = [
26
- "<div",
27
- " class=\"customizer__layout\"><aside class=\"customizer__panel\"><h3><!--$-->",
28
- "<!--/--> · <!--$-->",
29
- "<!--/--></h3><!--$-->",
30
- "<!--/--><!--$-->",
31
- "<!--/--><div class=\"customizer__actions\"><button class=\"btn btn-primary\"",
32
- ">",
33
- "</button><button class=\"btn btn-secondary\"",
34
- ">",
35
- "</button><button class=\"btn btn-secondary\">",
36
- "</button></div><!--$-->",
37
- "<!--/--><!--$-->",
38
- "<!--/--><p class=\"muted customizer__hint\">",
39
- "</p></aside><section class=\"customizer__preview\"><div class=\"customizer__preview-bar\"><input class=\"input\"",
40
- " placeholder=\"/\"",
41
- "></div><iframe class=\"customizer__frame\"",
42
- "></iframe></section></div>"
43
- ];
44
- var _tmpl$5 = [
45
- "<div",
46
- " class=\"customizer\"><!--$-->",
47
- "<!--/--><style>\n .customizer__layout {\n display: grid;\n grid-template-columns: minmax(280px, 340px) 1fr;\n gap: 1.25rem;\n align-items: start;\n }\n .customizer__panel {\n background: var(--color-surface);\n border: 1px solid var(--color-border);\n border-radius: var(--radius-lg);\n padding: 1.25rem;\n display: flex;\n flex-direction: column;\n gap: 0.85rem;\n position: sticky;\n top: 1rem;\n }\n .customizer__panel h3 { margin: 0; font-size: 1rem; }\n .customizer__field { display: flex; flex-direction: column; gap: 0.3rem; }\n .customizer__field label { font-size: 0.75rem; font-weight: 600; color: var(--color-text); }\n .customizer__color { height: 2.25rem; padding: 0.15rem; }\n .customizer__actions { display: flex; flex-wrap: wrap; gap: 0.5rem; }\n .customizer__saved { font-size: 0.75rem; color: var(--color-success); }\n .customizer__hint { font-size: 0.75rem; margin: 0; }\n .customizer__preview {\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n min-width: 0;\n }\n .customizer__preview-bar { display: flex; gap: 0.5rem; }\n .customizer__frame {\n width: 100%;\n height: min(72vh, 780px);\n border: 1px solid var(--color-border);\n border-radius: var(--radius-md);\n background: var(--color-white);\n }\n .alert-error {\n background: var(--color-error-soft);\n color: var(--color-error);\n border: 1px solid var(--color-error);\n padding: 0.75rem 1rem;\n border-radius: var(--radius-md);\n }\n .empty-state { padding: 3rem; text-align: center; color: var(--color-muted); }\n .skeleton { padding: 2rem; text-align: center; color: var(--color-muted); }\n </style></div>"
48
- ];
49
- var _tmpl$6 = ["<div", " class=\"skeleton\">Loading...</div>"];
50
- var _tmpl$7 = [
51
- "<div",
52
- " class=\"empty-state\"><!--$-->",
53
- "<!--/--> <a class=\"btn btn-secondary\" href=\"/themes\">",
54
- "</a></div>"
55
- ];
56
- var _tmpl$8 = [
57
- "<div",
58
- " class=\"customizer__field\"><label for=\"",
59
- "\">",
60
- "</label><!--$-->",
61
- "<!--/--></div>"
62
- ];
63
- var _tmpl$9 = [
64
- "<textarea",
65
- " id=\"",
66
- "\" class=\"input\" rows=\"3\"",
67
- "></textarea>"
68
- ];
69
- var _tmpl$0 = [
70
- "<select",
71
- " id=\"",
72
- "\" class=\"input\"",
73
- ">",
74
- "</select>"
75
- ];
76
- var _tmpl$1 = [
77
- "<option",
78
- ">",
79
- "</option>"
80
- ];
81
- var _tmpl$10 = [
82
- "<input",
83
- " id=\"",
84
- "\" type=\"checkbox\"",
85
- ">"
86
- ];
87
- var _tmpl$11 = [
88
- "<input",
89
- " id=\"",
90
- "\" type=\"color\" class=\"input customizer__color\"",
91
- ">"
92
- ];
93
- var _tmpl$12 = [
94
- "<input",
95
- " id=\"",
96
- "\"",
97
- " class=\"input\"",
98
- ">"
99
- ];
100
- function defaultForField(field) {
101
- if (field.default !== void 0) return field.default;
102
- if (field.type === "checkbox") return false;
103
- if (field.type === "number") return 0;
104
- return "";
105
- }
106
- function optionValue(option) {
107
- return typeof option === "string" ? option : option.value;
108
- }
109
- function optionLabel(option) {
110
- return typeof option === "string" ? option : option.label ?? option.value;
111
- }
112
- function ThemeCustomizer() {
113
- const { t } = useTranslation();
114
- const [themes, setThemes] = createSignal([]);
115
- const [loading, setLoading] = createSignal(true);
116
- const [error, setError] = createSignal(null);
117
- const [draft, setDraft] = createSignal({});
118
- const [savedConfig, setSavedConfig] = createSignal({});
119
- const [saving, setSaving] = createSignal(false);
120
- const [saved, setSaved] = createSignal(false);
121
- const [previewPath, setPreviewPath] = createSignal("/");
122
- const [previewNonce, setPreviewNonce] = createSignal(0);
123
- const activeTheme = createMemo(() => themes().find((theme) => theme.status === "ACTIVE") ?? null);
124
- const fields = createMemo(() => (activeTheme()?.manifest?.settings ?? []).filter((field) => Boolean(field) && typeof field.name === "string"));
125
- const dirty = createMemo(() => JSON.stringify(draft()) !== JSON.stringify(savedConfig()));
126
- onMount(async () => {
127
- await load();
128
- });
129
- async function load() {
130
- setError(null);
131
- try {
132
- setLoading(true);
133
- const data = await apiClient.getThemes();
134
- setThemes(data);
135
- const active = data.find((theme) => theme.status === "ACTIVE") ?? null;
136
- const config = active?.config ?? {};
137
- setSavedConfig(config);
138
- const initial = {};
139
- for (const field of active?.manifest?.settings ?? []) initial[field.name] = config[field.name] !== void 0 ? config[field.name] : defaultForField(field);
140
- setDraft(initial);
141
- } catch {
142
- setError(t("customizer.loadError"));
143
- } finally {
144
- setLoading(false);
145
- }
146
- }
147
- const previewUrl = () => {
148
- const base = previewPath() || "/";
149
- const encoded = encodeURIComponent(JSON.stringify(draft()));
150
- return `${base}${base.includes("?") ? "&" : "?"}preview_settings=${encoded}&_=${previewNonce()}`;
151
- };
152
- return ssr(_tmpl$5, ssrHydrationKey(), escape(createComponent(Show, {
153
- get when() {
154
- return !loading();
155
- },
156
- get fallback() {
157
- return ssr(_tmpl$6, ssrHydrationKey());
158
- },
159
- get children() {
160
- return createComponent(Show, {
161
- get when() {
162
- return activeTheme();
163
- },
164
- get fallback() {
165
- return ssr(_tmpl$7, ssrHydrationKey(), escape(t("customizer.noTheme")), escape(t("customizer.goToThemes")));
166
- },
167
- get children() {
168
- return ssr(_tmpl$4, ssrHydrationKey(), escape(activeTheme().name), escape(t("customizer.title")), escape(createComponent(Show, {
169
- get when() {
170
- return fields().length === 0;
171
- },
172
- get children() {
173
- return ssr(_tmpl$, ssrHydrationKey(), escape(t("customizer.noSettings")));
174
- }
175
- })), escape(createComponent(For, {
176
- get each() {
177
- return fields();
178
- },
179
- children: (field) => ssr(_tmpl$8, ssrHydrationKey(), `customizer-${escape(field.name, true)}`, escape(field.label || field.name), field.type === "textarea" ? ssr(_tmpl$9, ssrHydrationKey(), `customizer-${escape(field.name, true)}`, ssrAttribute("value", escape(String(draft()[field.name] ?? ""), true), false)) : field.type === "select" ? ssr(_tmpl$0, ssrHydrationKey(), `customizer-${escape(field.name, true)}`, ssrAttribute("value", escape(String(draft()[field.name] ?? ""), true), false), escape(createComponent(For, {
180
- get each() {
181
- return field.options ?? [];
182
- },
183
- children: (option) => ssr(_tmpl$1, ssrHydrationKey() + ssrAttribute("value", escape(optionValue(option), true), false), escape(optionLabel(option)))
184
- }))) : field.type === "checkbox" ? ssr(_tmpl$10, ssrHydrationKey(), `customizer-${escape(field.name, true)}`, ssrAttribute("checked", Boolean(draft()[field.name]), true)) : field.type === "color" ? ssr(_tmpl$11, ssrHydrationKey(), `customizer-${escape(field.name, true)}`, ssrAttribute("value", escape(String(draft()[field.name] ?? "#000000"), true), false)) : ssr(_tmpl$12, ssrHydrationKey(), `customizer-${escape(field.name, true)}`, ssrAttribute("type", field.type === "number" ? "number" : "text", false), ssrAttribute("value", escape(String(draft()[field.name] ?? ""), true), false)))
185
- })), ssrAttribute("disabled", saving() || !dirty(), true), saving() ? escape(t("customizer.saving")) : escape(t("customizer.save")), ssrAttribute("disabled", !dirty(), true), escape(t("customizer.reset")), escape(t("customizer.refreshPreview")), escape(createComponent(Show, {
186
- get when() {
187
- return saved();
188
- },
189
- get children() {
190
- return ssr(_tmpl$2, ssrHydrationKey(), escape(t("customizer.saved")));
191
- }
192
- })), escape(createComponent(Show, {
193
- get when() {
194
- return error();
195
- },
196
- get children() {
197
- return ssr(_tmpl$3, ssrHydrationKey(), escape(error()));
198
- }
199
- })), escape(t("customizer.previewHint")), ssrAttribute("value", escape(previewPath(), true), false), ssrAttribute("aria-label", escape(t("customizer.previewPath"), true), false), ssrAttribute("title", escape(t("customizer.previewTitle"), true), false) + ssrAttribute("src", escape(previewUrl(), true), false));
200
- }
201
- });
202
- }
203
- })));
204
- }
205
- //#endregion
206
- //#region src/pages/customize.astro
207
- var customize_exports = /* @__PURE__ */ __exportAll({
208
- default: () => $$Customize,
209
- file: () => $$file,
210
- url: () => $$url
211
- });
212
- createAstro("https://astro.build");
213
- var $$Customize = createComponent$1(($$result, $$props, $$slots) => {
214
- const Astro = $$result.createAstro($$props, $$slots);
215
- Astro.self = $$Customize;
216
- const { t } = Astro.locals;
217
- return renderTemplate`${renderComponent($$result, "DashboardLayout", $$DashboardLayout, { "title": t("customizer.title") }, { "default": ($$result) => renderTemplate`${renderComponent($$result, "PageHeader", PageHeader, {
218
- "title": t("customizer.title"),
219
- "description": t("customizer.description")
220
- })}${renderComponent($$result, "ThemeCustomizer", ThemeCustomizer, {
221
- "client:load": true,
222
- "client:component-hydration": "load",
223
- "client:component-path": "/home/runner/work/cms/cms/apps/admin/src/components/apps/themes/ThemeCustomizer.tsx",
224
- "client:component-export": "ThemeCustomizer"
225
- })}` })}`;
226
- }, "/home/runner/work/cms/cms/apps/admin/src/pages/customize.astro", void 0);
227
- var $$file = "/home/runner/work/cms/cms/apps/admin/src/pages/customize.astro";
228
- var $$url = "/customize";
229
- //#endregion
230
- //#region \0virtual:astro:page:src/pages/customize@_@astro
231
- var page = () => customize_exports;
232
- //#endregion
233
- export { page };