@oktis-works/admin 0.13.1 → 0.15.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.
Files changed (115) hide show
  1. package/dist/client/_astro/{ActivityWidget.CCls_jrK.js → ActivityWidget.CedrZ3yN.js} +2 -2
  2. package/dist/client/_astro/AdminBar.CkfSUzJJ.js +253 -0
  3. package/dist/client/_astro/ApiKeysManager.ChCtr3J2.js +1 -0
  4. package/dist/client/_astro/{AtGlanceWidget.DPkp-rxl.js → AtGlanceWidget.DMrAc7qb.js} +3 -3
  5. package/dist/client/_astro/{BaseLayout.DAkzjMTq.css → BaseLayout.Cp-O10m_.css} +1 -1
  6. package/dist/client/_astro/CommentsManager.CtiI8mwU.js +21 -0
  7. package/dist/client/_astro/ContentEditor.BQTSumnU.js +1 -0
  8. package/dist/client/_astro/ContentEditor.Bl295osh.js +3 -0
  9. package/dist/client/_astro/ContentTypeWorkspace.xZAsn-ok.js +1 -0
  10. package/dist/client/_astro/DashboardHome.B7PYDcS1.js +1 -0
  11. package/dist/client/_astro/{DashboardLayout.astro_astro_type_script_index_0_lang.D2eyDf2o.js → DashboardLayout.astro_astro_type_script_index_0_lang.BFY8jBwE.js} +1 -1
  12. package/dist/client/_astro/FbIcon.Bn4e_qFb.js +1 -0
  13. package/dist/client/_astro/FieldGroupEditor.BsV0u51p.js +69 -0
  14. package/dist/client/_astro/FieldGroupList.CXyFKdsR.js +1 -0
  15. package/dist/client/_astro/FieldRenderer.2TxRD88c.js +1 -0
  16. package/dist/client/_astro/FloatingPanel.BetdW5N2.js +1 -0
  17. package/dist/client/_astro/{Footer.JI2Mqd9V.js → Footer.BKD9_ctB.js} +2 -2
  18. package/dist/client/_astro/GeneralSettings.Di8ILdOl.js +1 -0
  19. package/dist/client/_astro/LogsManager.WBGR0Ci2.js +1 -0
  20. package/dist/client/_astro/MediaLibrary.B5ozN2R7.js +1 -0
  21. package/dist/client/_astro/MenuManager.9UORktNs.js +1 -0
  22. package/dist/client/_astro/Modal.CPaZJlDP.js +1 -0
  23. package/dist/client/_astro/PluginManager._RYLLtJI.js +112 -0
  24. package/dist/client/_astro/PostTypesManager.B6dDnCOy.js +1 -0
  25. package/dist/client/_astro/QuickDraftWidget.DCVYrBPm.js +17 -0
  26. package/dist/client/_astro/ResourceHubs.Cd0KB4Rx.js +1 -0
  27. package/dist/client/_astro/TaxonomiesManager.9I03xqrR.js +1 -0
  28. package/dist/client/_astro/TaxonomyTermsManager.btLVdHr-.js +1 -0
  29. package/dist/client/_astro/ThemeCustomizer.CXg9hm9t.js +49 -0
  30. package/dist/client/_astro/ThemeManager.BfQh8JJa.js +144 -0
  31. package/dist/client/_astro/UserCreateForm.BAd11jYs.js +1 -0
  32. package/dist/client/_astro/UsersManager.gkehfvoP.js +1 -0
  33. package/dist/client/_astro/WebhooksManager.BCilUaGs.js +1 -0
  34. package/dist/client/_astro/{api.CYg1SW2X.js → api.B03e8F6d.js} +1 -1
  35. package/dist/client/_astro/client.ljtU74WL.js +1 -0
  36. package/dist/client/_astro/extensions.EzvpwBZm.js +1 -0
  37. package/dist/client/_astro/i18n.LMZI7jyc.js +1 -0
  38. package/dist/client/_astro/{login.astro_astro_type_script_index_0_lang.F2J3xZhK.js → login.astro_astro_type_script_index_0_lang.BUOUZuDy.js} +1 -1
  39. package/dist/client/_astro/preload-helper.oCYlU9a4.js +1 -0
  40. package/dist/client/_astro/pt-BR.CfJP86YC.js +1 -0
  41. package/dist/client/_astro/solid.Ck4Vtfe4.js +1 -0
  42. package/dist/client/_astro/src.CYKGYEyR.js +1 -0
  43. package/dist/client/_astro/store.DJjOMYcw.js +1 -0
  44. package/dist/client/_astro/web.DD6VKaIp.js +1 -0
  45. package/dist/server/chunks/{404_C9Eokbcv.mjs → 404_CIlW8Cz9.mjs} +1 -1
  46. package/dist/server/chunks/{BaseLayout_DgDmTH8p.mjs → BaseLayout_DdN9Gl3i.mjs} +5 -5
  47. package/dist/server/chunks/ContentEditor_GenRIOIJ.mjs +655 -0
  48. package/dist/server/chunks/{DashboardLayout_CrxyUavx.mjs → DashboardLayout_BY4AqWC6.mjs} +354 -91
  49. package/dist/server/chunks/{ContentEditor_VK16JJMh.mjs → FieldRenderer_pM3Tq7vY.mjs} +54 -615
  50. package/dist/server/chunks/{MediaLibrary_CZuj5byR.mjs → MediaLibrary_woj8kWSK.mjs} +2 -2
  51. package/dist/server/chunks/{Modal_BfWFiyry.mjs → Modal_BQZlVP1o.mjs} +1 -1
  52. package/dist/server/chunks/{_id__BYx77RvL.mjs → _id__CIrIQBGk.mjs} +5 -4
  53. package/dist/server/chunks/{_slug__CR6t9xra.mjs → _slug__DP5cppSD.mjs} +1 -1
  54. package/dist/server/chunks/{access_Bp3EnO2H.mjs → access_Cr1RkoC8.mjs} +3 -3
  55. package/dist/server/chunks/{api-keys_Dt87wCbg.mjs → api-keys_DxCfUQiR.mjs} +3 -3
  56. package/dist/server/chunks/comments_CDCO_DTQ.mjs +208 -0
  57. package/dist/server/chunks/{custom-fields_CC_ZhBpp.mjs → custom-fields_DUby1Cd7.mjs} +2 -2
  58. package/dist/server/chunks/customize_DITLWxTB.mjs +233 -0
  59. package/dist/server/chunks/{edit_VYWajKgt.mjs → edit_6xBPrb1J.mjs} +3 -3
  60. package/dist/server/chunks/{general_DtYlpwnZ.mjs → general_CA6aT6cZ.mjs} +2 -2
  61. package/dist/server/chunks/{i18n_B-DWAN0e.mjs → i18n_BBVOgA0q.mjs} +75 -36
  62. package/dist/server/chunks/{index_CDmqkl48.mjs → index_1C4PfYEy.mjs} +2 -2
  63. package/dist/server/chunks/{index_ieyhXCVt.mjs → index_CO2SvpwW.mjs} +1 -1
  64. package/dist/server/chunks/{index_DXmHKYjS.mjs → index_Cn92C8CO.mjs} +2 -2
  65. package/dist/server/chunks/{index_6a-jaApt.mjs → index_D2ypKpAG.mjs} +111 -62
  66. package/dist/server/chunks/{index_DgVVWosZ.mjs → index_D_AiNQGl.mjs} +2 -2
  67. package/dist/server/chunks/{login_DRJNLDt7.mjs → login_vyj4WhBt.mjs} +1 -1
  68. package/dist/server/chunks/{logs_CaMNxV6h.mjs → logs_BjuW-do3.mjs} +2 -2
  69. package/dist/server/chunks/{menus_BsV0U5D5.mjs → menus_CPi_m-b8.mjs} +2 -2
  70. package/dist/server/chunks/{new_BQ2d8AHk.mjs → new_BlENJv6A.mjs} +3 -3
  71. package/dist/server/chunks/{new_CyBl1PM1.mjs → new_D_pNdD5e.mjs} +2 -2
  72. package/dist/server/chunks/plugins_sYgOSowJ.mjs +150 -0
  73. package/dist/server/chunks/{post-types_BBKtACUm.mjs → post-types_Bm8olePm.mjs} +2 -2
  74. package/dist/server/chunks/{pt-BR_Da5G4GOV.mjs → pt-BR_DYDMLZu_.mjs} +53 -24
  75. package/dist/server/chunks/{taxonomies_gwfTSCOV.mjs → taxonomies_DbsqX_QZ.mjs} +2 -2
  76. package/dist/server/chunks/{taxonomy_BKdLzLps.mjs → taxonomy_ByKdjp9j.mjs} +64 -19
  77. package/dist/server/chunks/{themes_CqOUZiNg.mjs → themes_BKAM_crI.mjs} +27 -129
  78. package/dist/server/chunks/{upload_keeE9Mn0.mjs → upload_CE4Lbc1u.mjs} +2 -2
  79. package/dist/server/chunks/{webhooks_sTUPF0Xn.mjs → webhooks_CpruP30e.mjs} +2 -2
  80. package/dist/server/entry.mjs +104 -50
  81. package/dist/server/virtual_astro_middleware.mjs +1 -1
  82. package/package.json +5 -5
  83. package/dist/client/_astro/AdminBar.BW8zYZI3.js +0 -253
  84. package/dist/client/_astro/ApiKeysManager.Cj5tsk4N.js +0 -1
  85. package/dist/client/_astro/ContentEditor.CByEz10Q.js +0 -3
  86. package/dist/client/_astro/ContentEditor.kdYzULib.js +0 -1
  87. package/dist/client/_astro/ContentTypeWorkspace.BMVbiGGy.js +0 -1
  88. package/dist/client/_astro/DashboardHome.BuDu0DuB.js +0 -1
  89. package/dist/client/_astro/FbIcon.CUNS6rpP.js +0 -1
  90. package/dist/client/_astro/FieldGroupEditor.DGjV1n67.js +0 -69
  91. package/dist/client/_astro/FieldGroupList.BJ2TKSgY.js +0 -1
  92. package/dist/client/_astro/FloatingPanel.BeCEt_JP.js +0 -1
  93. package/dist/client/_astro/GeneralSettings.BSObhTfM.js +0 -1
  94. package/dist/client/_astro/LogsManager.B4-BxzoP.js +0 -1
  95. package/dist/client/_astro/MediaLibrary.BHVM3oJh.js +0 -1
  96. package/dist/client/_astro/MenuManager.BAn4_w6-.js +0 -1
  97. package/dist/client/_astro/Modal.BSZ5IjBl.js +0 -1
  98. package/dist/client/_astro/PluginManager.D_E-lPWP.js +0 -136
  99. package/dist/client/_astro/PostTypesManager.BHU1d2ta.js +0 -1
  100. package/dist/client/_astro/QuickDraftWidget.ClSsMYB_.js +0 -17
  101. package/dist/client/_astro/ResourceHubs.C3suqlP0.js +0 -1
  102. package/dist/client/_astro/TaxonomiesManager.BXYUiJEA.js +0 -1
  103. package/dist/client/_astro/TaxonomyTermsManager.obB3lkr3.js +0 -1
  104. package/dist/client/_astro/ThemeManager.C0TKggfZ.js +0 -176
  105. package/dist/client/_astro/UserCreateForm.DaIOqr8v.js +0 -1
  106. package/dist/client/_astro/UsersManager.B5zFoWmR.js +0 -1
  107. package/dist/client/_astro/WebhooksManager.BRvVuxLt.js +0 -1
  108. package/dist/client/_astro/client.DU9Dc2oe.js +0 -1
  109. package/dist/client/_astro/extensions.Brl6zAPA.js +0 -1
  110. package/dist/client/_astro/i18n.vdBFsiPK.js +0 -1
  111. package/dist/client/_astro/pt-BR.CKJnipDe.js +0 -1
  112. package/dist/client/_astro/solid.D49dPDCT.js +0 -1
  113. package/dist/client/_astro/src.DXVWCoHp.js +0 -1
  114. package/dist/client/_astro/web.Bqbl_1YR.js +0 -1
  115. package/dist/server/chunks/plugins_BiaE4So1.mjs +0 -179
@@ -1,5 +1,5 @@
1
- import { n as useTranslation, r as apiClient } from "./i18n_B-DWAN0e.mjs";
2
- import { a as For2, c as Pagination, l as Select, m as onMount, o as Input, p as createSignal, r as Button, s as Modal, u as Show2 } from "./DashboardLayout_CrxyUavx.mjs";
1
+ import { n as useTranslation, r as apiClient } from "./i18n_BBVOgA0q.mjs";
2
+ import { c as Button, d as Input, f as Modal, h as Show2, m as Select, p as Pagination, u as For2, v as createSignal, y as onMount } from "./DashboardLayout_BY4AqWC6.mjs";
3
3
  import { createComponent, escape, memo, ssr, ssrAttribute, ssrHydrationKey, ssrStyleProperty } from "solid-js/web";
4
4
  //#region src/components/media/MediaLibrary.jsx
5
5
  var _tmpl$ = [
@@ -1,4 +1,4 @@
1
- import { n as useTranslation } from "./i18n_B-DWAN0e.mjs";
1
+ import { n as useTranslation } from "./i18n_BBVOgA0q.mjs";
2
2
  import { createComponent, escape, ssr, ssrAttribute, ssrHydrationKey } from "solid-js/web";
3
3
  import { Show, createEffect, onCleanup } from "solid-js";
4
4
  //#region src/components/ui/Modal.jsx
@@ -1,8 +1,8 @@
1
1
  import { r as __exportAll } from "./rolldown-runtime_BMI-E3GI.mjs";
2
2
  import { S as createAstro, i as renderComponent, u as renderTemplate } from "./server_B5N27szj.mjs";
3
3
  import { t as createComponent$1 } from "./compiler_O7J1rlsi.mjs";
4
- import { n as useTranslation, r as apiClient } from "./i18n_B-DWAN0e.mjs";
5
- import { t as $$DashboardLayout } from "./DashboardLayout_CrxyUavx.mjs";
4
+ import { n as useTranslation, r as apiClient } from "./i18n_BBVOgA0q.mjs";
5
+ import { t as $$DashboardLayout } from "./DashboardLayout_BY4AqWC6.mjs";
6
6
  import { t as PageHeader } from "./PageHeader_CRpzf5xU.mjs";
7
7
  import { t as FloatingPanel } from "./FloatingPanel_BtB-nNBT.mjs";
8
8
  import { t as FbIcon } from "./FbIcon_7YixzwO3.mjs";
@@ -5351,7 +5351,7 @@ function useSortable(input) {
5351
5351
  };
5352
5352
  }
5353
5353
  //#endregion
5354
- //#region src/components/field-builder/model.js
5354
+ //#region src/components/field-builder/model.ts
5355
5355
  var CONTAINER_TYPES = /* @__PURE__ */ new Set(["group", "repeater"]);
5356
5356
  var CHOICE_TYPES = /* @__PURE__ */ new Set([
5357
5357
  "select",
@@ -5393,7 +5393,8 @@ var LOCATION_PARAMS = [
5393
5393
  "term",
5394
5394
  "user_role",
5395
5395
  "page_template",
5396
- "post_status"
5396
+ "post_status",
5397
+ "block"
5397
5398
  ];
5398
5399
  function hasSubFields(type) {
5399
5400
  return CONTAINER_TYPES.has(type);
@@ -1,7 +1,7 @@
1
1
  import { r as __exportAll } from "./rolldown-runtime_BMI-E3GI.mjs";
2
2
  import { S as createAstro, d as maybeRenderHead, i as renderComponent, p as addAttribute, u as renderTemplate } from "./server_B5N27szj.mjs";
3
3
  import { t as createComponent } from "./compiler_O7J1rlsi.mjs";
4
- import { t as $$DashboardLayout } from "./DashboardLayout_CrxyUavx.mjs";
4
+ import { t as $$DashboardLayout } from "./DashboardLayout_BY4AqWC6.mjs";
5
5
  import { t as PageHeader } from "./PageHeader_CRpzf5xU.mjs";
6
6
  //#region src/pages/plugins/[slug].astro
7
7
  var _slug__exports = /* @__PURE__ */ __exportAll({
@@ -1,10 +1,10 @@
1
1
  import { r as __exportAll } from "./rolldown-runtime_BMI-E3GI.mjs";
2
2
  import { S as createAstro, i as renderComponent, u as renderTemplate } from "./server_B5N27szj.mjs";
3
3
  import { t as createComponent$1 } from "./compiler_O7J1rlsi.mjs";
4
- import { n as useTranslation, r as apiClient } from "./i18n_B-DWAN0e.mjs";
5
- import { t as $$DashboardLayout } from "./DashboardLayout_CrxyUavx.mjs";
4
+ import { n as useTranslation, r as apiClient } from "./i18n_BBVOgA0q.mjs";
5
+ import { t as $$DashboardLayout } from "./DashboardLayout_BY4AqWC6.mjs";
6
6
  import { t as PageHeader } from "./PageHeader_CRpzf5xU.mjs";
7
- import { t as Modal } from "./Modal_BfWFiyry.mjs";
7
+ import { t as Modal } from "./Modal_BQZlVP1o.mjs";
8
8
  import { t as FloatingPanel } from "./FloatingPanel_BtB-nNBT.mjs";
9
9
  import { createComponent, escape, memo, ssr, ssrAttribute, ssrHydrationKey } from "solid-js/web";
10
10
  import { For, Show, createMemo, createSignal, onMount } from "solid-js";
@@ -1,10 +1,10 @@
1
1
  import { r as __exportAll } from "./rolldown-runtime_BMI-E3GI.mjs";
2
2
  import { S as createAstro, i as renderComponent, u as renderTemplate } from "./server_B5N27szj.mjs";
3
3
  import { t as createComponent$1 } from "./compiler_O7J1rlsi.mjs";
4
- import { n as useTranslation, r as apiClient } from "./i18n_B-DWAN0e.mjs";
5
- import { t as $$DashboardLayout } from "./DashboardLayout_CrxyUavx.mjs";
4
+ import { n as useTranslation, r as apiClient } from "./i18n_BBVOgA0q.mjs";
5
+ import { t as $$DashboardLayout } from "./DashboardLayout_BY4AqWC6.mjs";
6
6
  import { t as PageHeader } from "./PageHeader_CRpzf5xU.mjs";
7
- import { t as Modal } from "./Modal_BfWFiyry.mjs";
7
+ import { t as Modal } from "./Modal_BQZlVP1o.mjs";
8
8
  import { createComponent, escape, memo, ssr, ssrAttribute, ssrHydrationKey } from "solid-js/web";
9
9
  import { For, Show, createSignal, onMount } from "solid-js";
10
10
  //#region src/components/apps/settings/ApiKeysManager.jsx
@@ -0,0 +1,208 @@
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_BBVOgA0q.mjs";
5
+ import { t as $$DashboardLayout } from "./DashboardLayout_BY4AqWC6.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, createSignal, onMount } from "solid-js";
9
+ //#region src/components/apps/comments/CommentsManager.tsx
10
+ var _tmpl$ = [
11
+ "<div",
12
+ " class=\"notice notice--error\">",
13
+ "</div>"
14
+ ];
15
+ var _tmpl$2 = [
16
+ "<div",
17
+ " class=\"card\"><table class=\"table\"><thead><tr><th>",
18
+ "</th><th>",
19
+ "</th><th>",
20
+ "</th><th>",
21
+ "</th><th></th></tr></thead><tbody>",
22
+ "</tbody></table></div>"
23
+ ];
24
+ var _tmpl$3 = [
25
+ "<div",
26
+ " class=\"comments-manager\"><!--$-->",
27
+ "<!--/--><div class=\"comments-tabs\" role=\"tablist\"><!--$-->",
28
+ "<!--/--><button type=\"button\" class=\"btn btn-secondary btn-sm comments-reload\"",
29
+ ">",
30
+ "</button></div><!--$-->",
31
+ "<!--/--><style>\n .comments-tabs { display: flex; align-items: center; gap: 0.5rem; margin-bottom: 1rem; flex-wrap: wrap; }\n .comments-tab {\n display: inline-flex; align-items: center; gap: 0.4rem;\n padding: 0.4rem 0.8rem; border: 1px solid var(--color-border);\n border-radius: var(--radius-full); background: transparent;\n color: var(--color-text); cursor: pointer; font-size: 0.8125rem;\n }\n .comments-tab.active { border-color: var(--color-primary); color: var(--color-primary); font-weight: 600; }\n .comments-count {\n background: var(--color-muted-soft); color: var(--color-muted);\n border-radius: var(--radius-full); padding: 0 0.45rem; font-size: 0.6875rem;\n }\n .comments-reload { margin-left: auto; }\n .comments-author { display: flex; flex-direction: column; gap: 0.15rem; }\n .comments-email { font-size: 0.75rem; }\n .comments-body { max-width: 28rem; }\n .comments-actions { display: flex; gap: 0.35rem; flex-wrap: wrap; }\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>"
32
+ ];
33
+ var _tmpl$4 = [
34
+ "<button",
35
+ " type=\"button\" class=\"",
36
+ "\"><!--$-->",
37
+ "<!--/--><span class=\"comments-count\">",
38
+ "</span></button>"
39
+ ];
40
+ var _tmpl$5 = [
41
+ "<div",
42
+ " class=\"skeleton\">",
43
+ "</div>"
44
+ ];
45
+ var _tmpl$6 = [
46
+ "<div",
47
+ " class=\"empty-state\">",
48
+ "</div>"
49
+ ];
50
+ var _tmpl$7 = [
51
+ "<span",
52
+ " class=\"muted comments-email\">",
53
+ "</span>"
54
+ ];
55
+ var _tmpl$8 = [
56
+ "<button",
57
+ " type=\"button\" class=\"btn btn-primary btn-sm\"",
58
+ ">",
59
+ "</button>"
60
+ ];
61
+ var _tmpl$9 = [
62
+ "<button",
63
+ " type=\"button\" class=\"btn btn-secondary btn-sm\"",
64
+ ">",
65
+ "</button>"
66
+ ];
67
+ var _tmpl$0 = [
68
+ "<tr",
69
+ "><td class=\"comments-author\"><strong>",
70
+ "</strong><!--$-->",
71
+ "<!--/--></td><td class=\"comments-body\">",
72
+ "</td><td class=\"muted\">",
73
+ "</td><td class=\"muted\">",
74
+ "</td><td class=\"comments-actions\"><!--$-->",
75
+ "<!--/--><!--$-->",
76
+ "<!--/--><!--$-->",
77
+ "<!--/--><button type=\"button\" class=\"btn btn-danger btn-sm\"",
78
+ ">",
79
+ "</button></td></tr>"
80
+ ];
81
+ var TABS = [
82
+ "PENDING",
83
+ "APPROVED",
84
+ "SPAM",
85
+ "TRASHED"
86
+ ];
87
+ function CommentsManager() {
88
+ const { t } = useTranslation();
89
+ const [comments, setComments] = createSignal([]);
90
+ const [counts, setCounts] = createSignal({});
91
+ const [tab, setTab] = createSignal("PENDING");
92
+ const [loading, setLoading] = createSignal(true);
93
+ const [error, setError] = createSignal("");
94
+ const [busyId, setBusyId] = createSignal(null);
95
+ const load = async () => {
96
+ setError("");
97
+ try {
98
+ setLoading(true);
99
+ const page = await apiClient.getComments({
100
+ status: tab(),
101
+ limit: 100
102
+ });
103
+ setComments(page.comments ?? []);
104
+ setCounts(page.counts ?? {});
105
+ } catch (err) {
106
+ setError(err instanceof Error ? err.message : String(err));
107
+ } finally {
108
+ setLoading(false);
109
+ }
110
+ };
111
+ onMount(load);
112
+ const authorName = (comment) => comment.authorName ?? comment.author_name ?? "—";
113
+ const createdAt = (comment) => comment.createdAt ?? comment.created_at ?? "";
114
+ const statusLabel = (status) => t(`comments.status.${status.toLowerCase()}`);
115
+ return ssr(_tmpl$3, ssrHydrationKey(), escape(createComponent(Show, {
116
+ get when() {
117
+ return error();
118
+ },
119
+ get children() {
120
+ return ssr(_tmpl$, ssrHydrationKey(), escape(error()));
121
+ }
122
+ })), escape(createComponent(For, {
123
+ each: TABS,
124
+ children: (status) => ssr(_tmpl$4, ssrHydrationKey(), `comments-tab ${tab() === status ? "active" : ""}`, escape(statusLabel(status)), escape(counts()[status] ?? 0))
125
+ })), ssrAttribute("disabled", loading(), true), escape(t("comments.reload")), escape(createComponent(Show, {
126
+ get when() {
127
+ return !loading();
128
+ },
129
+ get fallback() {
130
+ return ssr(_tmpl$5, ssrHydrationKey(), escape(t("comments.loading")));
131
+ },
132
+ get children() {
133
+ return createComponent(Show, {
134
+ get when() {
135
+ return comments().length > 0;
136
+ },
137
+ get fallback() {
138
+ return ssr(_tmpl$6, ssrHydrationKey(), escape(t("comments.empty")));
139
+ },
140
+ get children() {
141
+ return ssr(_tmpl$2, ssrHydrationKey(), escape(t("comments.author")), escape(t("comments.comment")), escape(t("comments.inReplyTo")), escape(t("comments.submitted")), escape(createComponent(For, {
142
+ get each() {
143
+ return comments();
144
+ },
145
+ children: (comment) => ssr(_tmpl$0, ssrHydrationKey() + ssrAttribute("data-comment-status", escape(comment.status, true), false), escape(authorName(comment)), escape(createComponent(Show, {
146
+ get when() {
147
+ return comment.authorEmail;
148
+ },
149
+ get children() {
150
+ return ssr(_tmpl$7, ssrHydrationKey(), escape(comment.authorEmail));
151
+ }
152
+ })), escape(comment.body), escape(comment.contentId ?? comment.content_id ?? "—"), escape(createdAt(comment)), escape(createComponent(Show, {
153
+ get when() {
154
+ return comment.status !== "APPROVED";
155
+ },
156
+ get children() {
157
+ return ssr(_tmpl$8, ssrHydrationKey(), ssrAttribute("disabled", busyId() === comment.id, true), escape(t("comments.approve")));
158
+ }
159
+ })), escape(createComponent(Show, {
160
+ get when() {
161
+ return comment.status !== "SPAM";
162
+ },
163
+ get children() {
164
+ return ssr(_tmpl$9, ssrHydrationKey(), ssrAttribute("disabled", busyId() === comment.id, true), escape(t("comments.spam")));
165
+ }
166
+ })), escape(createComponent(Show, {
167
+ get when() {
168
+ return comment.status !== "TRASHED";
169
+ },
170
+ get children() {
171
+ return ssr(_tmpl$9, ssrHydrationKey(), ssrAttribute("disabled", busyId() === comment.id, true), escape(t("comments.trash")));
172
+ }
173
+ })), ssrAttribute("disabled", busyId() === comment.id, true), escape(t("comments.delete")))
174
+ })));
175
+ }
176
+ });
177
+ }
178
+ })));
179
+ }
180
+ //#endregion
181
+ //#region src/pages/comments.astro
182
+ var comments_exports = /* @__PURE__ */ __exportAll({
183
+ default: () => $$Comments,
184
+ file: () => $$file,
185
+ url: () => $$url
186
+ });
187
+ createAstro("https://astro.build");
188
+ var $$Comments = createComponent$1(($$result, $$props, $$slots) => {
189
+ const Astro = $$result.createAstro($$props, $$slots);
190
+ Astro.self = $$Comments;
191
+ const { t } = Astro.locals;
192
+ return renderTemplate`${renderComponent($$result, "DashboardLayout", $$DashboardLayout, { "title": t("comments.title") }, { "default": ($$result) => renderTemplate`${renderComponent($$result, "PageHeader", PageHeader, {
193
+ "title": t("comments.title"),
194
+ "description": t("comments.description")
195
+ })}${renderComponent($$result, "CommentsManager", CommentsManager, {
196
+ "client:load": true,
197
+ "client:component-hydration": "load",
198
+ "client:component-path": "/home/runner/work/cms/cms/apps/admin/src/components/apps/comments/CommentsManager.tsx",
199
+ "client:component-export": "CommentsManager"
200
+ })}` })}`;
201
+ }, "/home/runner/work/cms/cms/apps/admin/src/pages/comments.astro", void 0);
202
+ var $$file = "/home/runner/work/cms/cms/apps/admin/src/pages/comments.astro";
203
+ var $$url = "/comments";
204
+ //#endregion
205
+ //#region \0virtual:astro:page:src/pages/comments@_@astro
206
+ var page = () => comments_exports;
207
+ //#endregion
208
+ export { page };
@@ -1,8 +1,8 @@
1
1
  import { r as __exportAll } from "./rolldown-runtime_BMI-E3GI.mjs";
2
2
  import { S as createAstro, d as maybeRenderHead, i as renderComponent, u as renderTemplate } from "./server_B5N27szj.mjs";
3
3
  import { t as createComponent$1 } from "./compiler_O7J1rlsi.mjs";
4
- import { n as useTranslation, r as apiClient } from "./i18n_B-DWAN0e.mjs";
5
- import { t as $$DashboardLayout } from "./DashboardLayout_CrxyUavx.mjs";
4
+ import { n as useTranslation, r as apiClient } from "./i18n_BBVOgA0q.mjs";
5
+ import { t as $$DashboardLayout } from "./DashboardLayout_BY4AqWC6.mjs";
6
6
  import { t as FbIcon } from "./FbIcon_7YixzwO3.mjs";
7
7
  import { createComponent, escape, ssr, ssrAttribute, ssrHydrationKey } from "solid-js/web";
8
8
  import { For, Show, createMemo, createSignal, onMount } from "solid-js";
@@ -0,0 +1,233 @@
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_BBVOgA0q.mjs";
5
+ import { t as $$DashboardLayout } from "./DashboardLayout_BY4AqWC6.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 };
@@ -1,9 +1,9 @@
1
1
  import { r as __exportAll } from "./rolldown-runtime_BMI-E3GI.mjs";
2
2
  import { S as createAstro, i as renderComponent, u as renderTemplate } from "./server_B5N27szj.mjs";
3
3
  import { t as createComponent } from "./compiler_O7J1rlsi.mjs";
4
- import { t as $$DashboardLayout } from "./DashboardLayout_CrxyUavx.mjs";
5
- import { t as ContentEditor } from "./ContentEditor_VK16JJMh.mjs";
4
+ import { t as $$DashboardLayout } from "./DashboardLayout_BY4AqWC6.mjs";
6
5
  import { t as PageHeader } from "./PageHeader_CRpzf5xU.mjs";
6
+ import { t as ContentEditor } from "./ContentEditor_GenRIOIJ.mjs";
7
7
  //#region src/pages/content/[type]/edit.astro
8
8
  var edit_exports = /* @__PURE__ */ __exportAll({
9
9
  default: () => $$Edit,
@@ -23,7 +23,7 @@ var $$Edit = createComponent(($$result, $$props, $$slots) => {
23
23
  "client:load": true,
24
24
  "initialType": contentType,
25
25
  "client:component-hydration": "load",
26
- "client:component-path": "/home/runner/work/cms/cms/apps/admin/src/components/content/ContentEditor.jsx",
26
+ "client:component-path": "/home/runner/work/cms/cms/apps/admin/src/components/content/ContentEditor.tsx",
27
27
  "client:component-export": "ContentEditor"
28
28
  })}` })}`;
29
29
  }, "/home/runner/work/cms/cms/apps/admin/src/pages/content/[type]/edit.astro", void 0);
@@ -1,8 +1,8 @@
1
1
  import { r as __exportAll } from "./rolldown-runtime_BMI-E3GI.mjs";
2
2
  import { S as createAstro, i as renderComponent, u as renderTemplate } from "./server_B5N27szj.mjs";
3
3
  import { t as createComponent$1 } from "./compiler_O7J1rlsi.mjs";
4
- import { a as LOCALE_LABELS, i as LOCALE_FLAGS, n as useTranslation, o as SUPPORTED_LOCALES, r as apiClient } from "./i18n_B-DWAN0e.mjs";
5
- import { f as createMemo$1, i as Card, l as Select, m as onMount$1, o as Input, p as createSignal$1, r as Button, t as $$DashboardLayout, u as Show2 } from "./DashboardLayout_CrxyUavx.mjs";
4
+ import { a as LOCALE_LABELS, i as LOCALE_FLAGS, n as useTranslation, o as SUPPORTED_LOCALES, r as apiClient } from "./i18n_BBVOgA0q.mjs";
5
+ import { _ as createMemo$1, c as Button, d as Input, h as Show2, l as Card, m as Select, t as $$DashboardLayout, v as createSignal$1, y as onMount$1 } from "./DashboardLayout_BY4AqWC6.mjs";
6
6
  import { t as PageHeader } from "./PageHeader_CRpzf5xU.mjs";
7
7
  import { t as FloatingPanel } from "./FloatingPanel_BtB-nNBT.mjs";
8
8
  import { createComponent, escape, memo, ssr, ssrAttribute, ssrHydrationKey } from "solid-js/web";