@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.
- package/dist/client/_astro/{ActivityWidget.9T9D1Dwq.js → ActivityWidget.Dzoi-bq3.js} +1 -1
- package/dist/client/_astro/{AdminBar.uZX_VBFr.js → AdminBar.eT1ch_B6.js} +1 -1
- package/dist/client/_astro/{ApiKeysManager.BeZosAcl.js → ApiKeysManager.kbTE1CPk.js} +1 -1
- package/dist/client/_astro/{AtGlanceWidget.B6FKmL7A.js → AtGlanceWidget.w23IIv06.js} +1 -1
- package/dist/client/_astro/{BaseLayout.Cp-O10m_.css → BaseLayout.Rpr86VwM.css} +1 -1
- package/dist/client/_astro/{CommentsManager.9iktJziN.js → CommentsManager.BN7i1RHa.js} +1 -1
- package/dist/client/_astro/ContentEditor.BlsJ2bwD.js +1 -0
- package/dist/client/_astro/ContentTypeWorkspace.BPVuQgzA.js +1 -0
- package/dist/client/_astro/{DashboardHome.CBTZuAbN.js → DashboardHome.DXzu_IXZ.js} +1 -1
- 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
- package/dist/client/_astro/FieldGroupEditor.DsqphEgt.js +69 -0
- package/dist/client/_astro/{FieldGroupList.DwHwSB-m.js → FieldGroupList.pW2Um9om.js} +1 -1
- package/dist/client/_astro/FieldRenderer.AYtSBfHZ.js +3 -0
- package/dist/client/_astro/{Footer.ZmhGZsX_.js → Footer.5Lcn2VXz.js} +1 -1
- package/dist/client/_astro/GeneralSettings.B-H8Rzy7.js +1 -0
- package/dist/client/_astro/{LogsManager.VmsL1Y_c.js → LogsManager.Crd8q2te.js} +1 -1
- package/dist/client/_astro/{MediaLibrary.BPA5KcoT.js → MediaLibrary.Cv6Ry3u9.js} +1 -1
- package/dist/client/_astro/{MenuManager.-kATOHiC.js → MenuManager.D25ika09.js} +1 -1
- package/dist/client/_astro/{Modal.6YIPt-vQ.js → Modal.572hmVvb.js} +1 -1
- package/dist/client/_astro/{PluginManager.ezr27PG_.js → PluginManager.DLfgQFPF.js} +1 -1
- package/dist/client/_astro/{PostTypesManager.D4rhu5qf.js → PostTypesManager.C3RbmOZT.js} +1 -1
- package/dist/client/_astro/{QuickDraftWidget.tEoK6vHH.js → QuickDraftWidget.BtSGzhKq.js} +1 -1
- package/dist/client/_astro/{ReadingSettings.BhxqtNjo.js → ReadingSettings.ZFDaeo5U.js} +1 -1
- package/dist/client/_astro/{ResourceHubs.Bjng1UYH.js → ResourceHubs.Cx9fbCv1.js} +1 -1
- package/dist/client/_astro/{TaxonomiesManager.C12F1EN1.js → TaxonomiesManager.BLsvmjaL.js} +1 -1
- package/dist/client/_astro/TaxonomyTermsManager.C_xEh8Ab.js +1 -0
- package/dist/client/_astro/ThemeCustomizer.yx8rEKcL.js +577 -0
- package/dist/client/_astro/{ThemeManager.D28v1eyx.js → ThemeManager.BpS3m7Qc.js} +2 -2
- package/dist/client/_astro/{UserCreateForm.Bh_H8pJN.js → UserCreateForm.BYwgAqKk.js} +1 -1
- package/dist/client/_astro/{UsersManager.Ds7__cY5.js → UsersManager.DODMr48D.js} +1 -1
- package/dist/client/_astro/{WebhooksManager.2IVxZFIV.js → WebhooksManager.DmWIW272.js} +1 -1
- package/dist/client/_astro/ar.BCtMLfbL.js +1 -0
- package/dist/client/_astro/clone.oDfZEkVn.js +1 -0
- package/dist/client/_astro/es-ES.BfYd3kCv.js +1 -0
- package/dist/client/_astro/he.pQFPO6hc.js +1 -0
- package/dist/client/_astro/i18n.A82w5XQu.js +1 -0
- package/dist/client/_astro/it.ZpeUogpB.js +1 -0
- package/dist/client/_astro/ja.Ch5X4gaR.js +1 -0
- package/dist/client/_astro/pl.DDgkAPXr.js +1 -0
- package/dist/client/_astro/pt-BR.zZcF2v3X.js +1 -0
- package/dist/client/_astro/ru.CAjJz8Cj.js +1 -0
- package/dist/client/_astro/sw.CehAEkRN.js +1 -0
- package/dist/client/_astro/tr.Sf1XkPHa.js +1 -0
- package/dist/client/_astro/uk.-2u2eOOq.js +1 -0
- package/dist/client/_astro/yo.os9m69tq.js +1 -0
- package/dist/client/_astro/zh-CN.Bt1lpQQu.js +1 -0
- package/dist/server/chunks/{404_CtVqPqLh.mjs → 404_BjHJCErQ.mjs} +1 -1
- package/dist/server/chunks/{BaseLayout_CH8MQ3No.mjs → BaseLayout_DrIrAANk.mjs} +1 -1
- package/dist/server/chunks/{ContentEditor_6J53ebJ2.mjs → ContentEditor_BhXk6xd0.mjs} +42 -7
- package/dist/server/chunks/{DashboardLayout_DGbCn1gh.mjs → DashboardLayout_DxMWAFCu.mjs} +12 -12
- package/dist/server/chunks/{FbIcon_7YixzwO3.mjs → FbIcon_D0f6QiFJ.mjs} +1 -1
- package/dist/server/chunks/{FieldRenderer_DowQgtDc.mjs → FieldRenderer_CD8prpXz.mjs} +173 -131
- package/dist/server/chunks/{FloatingPanel_BtB-nNBT.mjs → FloatingPanel_DI2CdUZK.mjs} +1 -1
- package/dist/server/chunks/{MediaLibrary_DuxnoiMa.mjs → MediaLibrary_BY9b_CPa.mjs} +3 -3
- package/dist/server/chunks/{Modal_CkrRnNzN.mjs → Modal_BmuvdwoB.mjs} +2 -2
- package/dist/server/chunks/{PageHeader_CRpzf5xU.mjs → PageHeader_CBOioOjo.mjs} +1 -1
- package/dist/server/chunks/{TimezoneSelect_Cj-oxeeA.mjs → TimezoneSelect_D6o-2_7b.mjs} +2 -2
- package/dist/server/chunks/{_id__DfQqu18v.mjs → _id__BeIHLdfs.mjs} +79 -67
- package/dist/server/chunks/{_slug__CPv34VnT.mjs → _slug__Dsz2U4cu.mjs} +2 -2
- package/dist/server/chunks/{access_B-f0fZwc.mjs → access_ClmMoH40.mjs} +8 -8
- package/dist/server/chunks/{api-keys_BSvI1g4B.mjs → api-keys_DLbrSM4U.mjs} +6 -6
- package/dist/server/chunks/{ar_DObFFdrO.mjs → ar_Cgz1nkYN.mjs} +30 -3
- package/dist/server/chunks/clone_FT3Zf-Bf.mjs +59 -0
- package/dist/server/chunks/{comments_D3X5nFKK.mjs → comments_Cg1jrxti.mjs} +3 -3
- package/dist/server/chunks/{custom-fields_Cue8nhbd.mjs → custom-fields_CVJsfyk6.mjs} +5 -5
- package/dist/server/chunks/customize_BW-P44BY.mjs +1549 -0
- package/dist/server/chunks/{edit_5CwEtymP.mjs → edit_DdmQd4K3.mjs} +3 -3
- package/dist/server/chunks/{es-ES_D6jd6T7H.mjs → es-ES_Bw0g3h9x.mjs} +30 -3
- package/dist/server/chunks/{he_DwGJwonL.mjs → he_BcJYW2q8.mjs} +30 -3
- package/dist/server/chunks/{i18n_RELfVLel.mjs → i18n_C-sgJSi1.mjs} +34 -19
- package/dist/server/chunks/{index_BzgdFBMP.mjs → index_BSQio-Py.mjs} +4 -4
- package/dist/server/chunks/{index_C594fLur.mjs → index_BktteRMy.mjs} +6 -17
- package/dist/server/chunks/{index_CJVbaexl.mjs → index_Bv2fgBnE.mjs} +6 -6
- package/dist/server/chunks/{index_DW0-epn4.mjs → index_Bw0pBVRv.mjs} +4 -4
- package/dist/server/chunks/{index_CvbZ6goO.mjs → index_DxNPNwIw.mjs} +5 -5
- package/dist/server/chunks/{it_CMLpQyoj.mjs → it_CgOxhoxy.mjs} +30 -3
- package/dist/server/chunks/{ja_CYRz0pHv.mjs → ja_0swn1wUm.mjs} +30 -3
- package/dist/server/chunks/{login_BAhzxnXF.mjs → login_BCRPUCQz.mjs} +1 -1
- package/dist/server/chunks/{logs_iVt0OMQv.mjs → logs_DlzM1kpI.mjs} +5 -5
- package/dist/server/chunks/{menus_zRwS15d7.mjs → menus_pMKatAHX.mjs} +4 -4
- package/dist/server/chunks/{new_DKOOAiqy.mjs → new_B3cNZZO2.mjs} +3 -3
- package/dist/server/chunks/{new_CWejzb4K.mjs → new_C9JrPY2y.mjs} +5 -5
- package/dist/server/chunks/{pl_BuXVPvU1.mjs → pl_eLBKfEwP.mjs} +30 -3
- package/dist/server/chunks/{plugins_BpPZxAK2.mjs → plugins_BTPNe18c.mjs} +3 -3
- package/dist/server/chunks/{post-types_C_JULYq5.mjs → post-types_DIYWDXCR.mjs} +7 -7
- package/dist/server/chunks/{pt-BR_B2PJHiOg.mjs → pt-BR_AVNE88MZ.mjs} +16 -1
- package/dist/server/chunks/{reading_fhgI8X3-.mjs → reading_BBV5Dsg0.mjs} +4 -4
- package/dist/server/chunks/{ru_C56ltukG.mjs → ru_Dt3fMzac.mjs} +30 -3
- package/dist/server/chunks/{sw_Dhw0GAgD.mjs → sw_oPyQwKSK.mjs} +30 -3
- package/dist/server/chunks/{taxonomies_Bb8DwbNZ.mjs → taxonomies_G6ROt7Dn.mjs} +5 -5
- package/dist/server/chunks/{taxonomy_BXM2ubYg.mjs → taxonomy_B59mViQc.mjs} +5 -4
- package/dist/server/chunks/{themes_BPlBocEN.mjs → themes_CygkZJbP.mjs} +7 -5
- package/dist/server/chunks/{tr_zELRy7A-.mjs → tr_DG1ipiJ0.mjs} +30 -3
- package/dist/server/chunks/{uk_DVOqp1x6.mjs → uk_DCWgX6k4.mjs} +30 -3
- package/dist/server/chunks/{upload_BWA1htvi.mjs → upload_BOPk3diJ.mjs} +4 -4
- package/dist/server/chunks/{webhooks_CzjbYgHf.mjs → webhooks_BiHf1cMk.mjs} +5 -5
- package/dist/server/chunks/{yo_BqgZcoxs.mjs → yo_DsFzhH21.mjs} +30 -3
- package/dist/server/chunks/{zh-CN_Dz2D1XUc.mjs → zh-CN_OaG8XYVK.mjs} +30 -3
- package/dist/server/entry.mjs +28 -28
- package/dist/server/virtual_astro_middleware.mjs +3 -3
- package/package.json +1 -1
- package/dist/client/_astro/ContentEditor.BqDPU74P.js +0 -1
- package/dist/client/_astro/ContentEditor.DVKohXM-.js +0 -3
- package/dist/client/_astro/ContentTypeWorkspace.DqoBUPpT.js +0 -1
- package/dist/client/_astro/FieldGroupEditor.DBT985JP.js +0 -69
- package/dist/client/_astro/FieldRenderer.BxkMD5Kl.js +0 -1
- package/dist/client/_astro/GeneralSettings.B1f0Zpzs.js +0 -1
- package/dist/client/_astro/TaxonomyTermsManager.2V-JSC-7.js +0 -1
- package/dist/client/_astro/ThemeCustomizer.CGY-3Jl4.js +0 -49
- package/dist/client/_astro/ar.BeEmOTlL.js +0 -1
- package/dist/client/_astro/es-ES.C0DI0CK6.js +0 -1
- package/dist/client/_astro/he.RF4swhtn.js +0 -1
- package/dist/client/_astro/i18n.DnYRsWBJ.js +0 -1
- package/dist/client/_astro/it.DhCR9YsW.js +0 -1
- package/dist/client/_astro/ja.DPrxHQvU.js +0 -1
- package/dist/client/_astro/pl.6VCoPa7y.js +0 -1
- package/dist/client/_astro/pt-BR.CeCNYyhv.js +0 -1
- package/dist/client/_astro/ru.Cv0Z6X2y.js +0 -1
- package/dist/client/_astro/sw.BBMIgY-Y.js +0 -1
- package/dist/client/_astro/tr.BWEmWhCE.js +0 -1
- package/dist/client/_astro/uk.DDXJXOmn.js +0 -1
- package/dist/client/_astro/yo.DNoEBLJd.js +0 -1
- package/dist/client/_astro/zh-CN.CVKBB6Ky.js +0 -1
- 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 };
|