@oktis-works/admin 0.12.0 → 0.14.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 (114) hide show
  1. package/dist/client/_astro/{ActivityWidget.D9s4FOLp.js → ActivityWidget.DmhtX3Xm.js} +2 -2
  2. package/dist/client/_astro/{AdminBar.D8078Gqs.js → AdminBar.DKoQ5M3w.js} +2 -2
  3. package/dist/client/_astro/ApiKeysManager.BaPrAyqm.js +1 -0
  4. package/dist/client/_astro/{AtGlanceWidget.DBA3mEnF.js → AtGlanceWidget.zlWIhmzI.js} +3 -3
  5. package/dist/client/_astro/{BaseLayout.DAkzjMTq.css → BaseLayout.Cp-O10m_.css} +1 -1
  6. package/dist/client/_astro/CommentsManager.DROGQRli.js +21 -0
  7. package/dist/client/_astro/ContentEditor.ChA5r0aE.js +3 -0
  8. package/dist/client/_astro/ContentEditor.CtCFQb14.js +1 -0
  9. package/dist/client/_astro/ContentTypeWorkspace.Dj9dP14a.js +1 -0
  10. package/dist/client/_astro/DashboardHome.Dn6_pJuX.js +1 -0
  11. package/dist/client/_astro/{DashboardLayout.astro_astro_type_script_index_0_lang.Cc0PvXrs.js → DashboardLayout.astro_astro_type_script_index_0_lang.NiobGnWg.js} +1 -1
  12. package/dist/client/_astro/FbIcon.Bn4e_qFb.js +1 -0
  13. package/dist/client/_astro/FieldGroupEditor.CiFoYYb2.js +69 -0
  14. package/dist/client/_astro/FieldGroupList.CdN99hvU.js +1 -0
  15. package/dist/client/_astro/FieldRenderer.DYMREsip.js +1 -0
  16. package/dist/client/_astro/FloatingPanel.BetdW5N2.js +1 -0
  17. package/dist/client/_astro/{Footer.Chcu8yzV.js → Footer.VGpnxqkW.js} +2 -2
  18. package/dist/client/_astro/GeneralSettings.mQ7FyhM-.js +1 -0
  19. package/dist/client/_astro/LogsManager.BUJ7baOa.js +1 -0
  20. package/dist/client/_astro/MediaLibrary.DMvI8KXX.js +1 -0
  21. package/dist/client/_astro/MenuManager._4YgarRt.js +1 -0
  22. package/dist/client/_astro/Modal.DbBPpkbR.js +1 -0
  23. package/dist/client/_astro/{PluginManager.BHvKQlj2.js → PluginManager.BozI4gXB.js} +2 -2
  24. package/dist/client/_astro/PostTypesManager.CifIQbeV.js +1 -0
  25. package/dist/client/_astro/QuickDraftWidget.CsG3_wS2.js +17 -0
  26. package/dist/client/_astro/ResourceHubs.DedTFbiz.js +1 -0
  27. package/dist/client/_astro/TaxonomiesManager.JqBPU1pf.js +1 -0
  28. package/dist/client/_astro/TaxonomyTermsManager.BLGRLt8p.js +1 -0
  29. package/dist/client/_astro/ThemeCustomizer.DrSQPj4W.js +49 -0
  30. package/dist/client/_astro/{ThemeManager.DuHgcKyn.js → ThemeManager.Csu39Xjr.js} +2 -2
  31. package/dist/client/_astro/UserCreateForm.C54wZYbf.js +1 -0
  32. package/dist/client/_astro/UsersManager.BYTWz2I8.js +1 -0
  33. package/dist/client/_astro/WebhooksManager.DeJ_f1Gk.js +1 -0
  34. package/dist/client/_astro/{api.CYg1SW2X.js → api.flUgn70U.js} +1 -1
  35. package/dist/client/_astro/client.ljtU74WL.js +1 -0
  36. package/dist/client/_astro/extensions.DtuT3Phu.js +1 -0
  37. package/dist/client/_astro/i18n.CBexpqud.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.COYjmQTY.js} +1 -1
  39. package/dist/client/_astro/preload-helper.oCYlU9a4.js +1 -0
  40. package/dist/client/_astro/pt-BR.DlIhl4_A.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.CYzqtRKs.js +1 -0
  44. package/dist/client/_astro/web.DD6VKaIp.js +1 -0
  45. package/dist/server/chunks/{404_C9d1fN7T.mjs → 404_BxFvEXYq.mjs} +1 -1
  46. package/dist/server/chunks/{BaseLayout_D-10OcWZ.mjs → BaseLayout_BTzlA_Yr.mjs} +5 -5
  47. package/dist/server/chunks/ContentEditor_DStZ4RZE.mjs +655 -0
  48. package/dist/server/chunks/{DashboardLayout_HxBoC5fJ.mjs → DashboardLayout_PXoRmnBH.mjs} +362 -99
  49. package/dist/server/chunks/{FbIcon_D0f6QiFJ.mjs → FbIcon_7YixzwO3.mjs} +1 -1
  50. package/dist/server/chunks/{ContentEditor_DZWLWgAD.mjs → FieldRenderer_BlZgS0Im.mjs} +159 -588
  51. package/dist/server/chunks/{FloatingPanel_DI2CdUZK.mjs → FloatingPanel_BtB-nNBT.mjs} +1 -1
  52. package/dist/server/chunks/{MediaLibrary_CD_cadEt.mjs → MediaLibrary_D7vu5VMd.mjs} +3 -3
  53. package/dist/server/chunks/{Modal_vHjkS4i2.mjs → Modal_I_mBEOz2.mjs} +2 -2
  54. package/dist/server/chunks/{PageHeader_CBOioOjo.mjs → PageHeader_CRpzf5xU.mjs} +1 -1
  55. package/dist/server/chunks/{_id__DrGJOSWh.mjs → _id__DFFoFesR.mjs} +209 -66
  56. package/dist/server/chunks/{_slug__C6TfwYcI.mjs → _slug__DBH2w1la.mjs} +2 -2
  57. package/dist/server/chunks/{access_D46Rg5g2.mjs → access_D1rk89Sh.mjs} +8 -8
  58. package/dist/server/chunks/{api-keys_BUCeuDw4.mjs → api-keys_BqhmvOer.mjs} +6 -6
  59. package/dist/server/chunks/comments_D_ta2fip.mjs +208 -0
  60. package/dist/server/chunks/{custom-fields_B7PeZo06.mjs → custom-fields_Cl8P-rrK.mjs} +5 -5
  61. package/dist/server/chunks/customize_DgtzmFmz.mjs +233 -0
  62. package/dist/server/chunks/{edit_H_Z0tUXd.mjs → edit_DTk4qFj5.mjs} +3 -3
  63. package/dist/server/chunks/{general_BROn356D.mjs → general_B-fEXuQn.mjs} +7 -7
  64. package/dist/server/chunks/{i18n_CItvcX64.mjs → i18n_BmAxDr2Q.mjs} +76 -10
  65. package/dist/server/chunks/{index_BYjGHhFv.mjs → index_BKjRvOw4.mjs} +113 -64
  66. package/dist/server/chunks/{index_BSanLOwq.mjs → index_BXnSMGRk.mjs} +4 -4
  67. package/dist/server/chunks/{index_9wINU7Wu.mjs → index_BcVtYp1L.mjs} +5 -5
  68. package/dist/server/chunks/{index_WgopTFB2.mjs → index_DI8jAAVQ.mjs} +2 -2
  69. package/dist/server/chunks/{index_GXbAk6jt.mjs → index_DXsKda1J.mjs} +4 -4
  70. package/dist/server/chunks/{login_BzHv0uQ0.mjs → login_BGPEB2l4.mjs} +1 -1
  71. package/dist/server/chunks/{logs_C32euU-n.mjs → logs_XjDk7dqi.mjs} +5 -5
  72. package/dist/server/chunks/{menus_EJ0NIw-1.mjs → menus_Kqym4CNK.mjs} +4 -4
  73. package/dist/server/chunks/{new_CWKqh8oV.mjs → new_BiikYmvu.mjs} +5 -5
  74. package/dist/server/chunks/{new_BwrgYLev.mjs → new_Dnp7PIHP.mjs} +3 -3
  75. package/dist/server/chunks/{plugins_C8RXEzie.mjs → plugins_C6qX0SAE.mjs} +5 -5
  76. package/dist/server/chunks/{post-types_bDF0xDxo.mjs → post-types_Dr4t-TYB.mjs} +7 -7
  77. package/dist/server/chunks/{pt-BR_DpWzkRv5.mjs → pt-BR_DH_fNjEo.mjs} +49 -5
  78. package/dist/server/chunks/{taxonomies_AHnU1mD0.mjs → taxonomies_B0YzIdmD.mjs} +5 -5
  79. package/dist/server/chunks/{taxonomy_DwH2xYGw.mjs → taxonomy_CCWZ58qQ.mjs} +63 -18
  80. package/dist/server/chunks/{themes_DE_yoCn2.mjs → themes_C7G3LcIz.mjs} +5 -5
  81. package/dist/server/chunks/{upload_BQA9bixd.mjs → upload_BT3ud_vb.mjs} +4 -4
  82. package/dist/server/chunks/{webhooks_iWH_jV-x.mjs → webhooks_CWW0L8EK.mjs} +5 -5
  83. package/dist/server/entry.mjs +104 -50
  84. package/dist/server/virtual_astro_middleware.mjs +3 -3
  85. package/package.json +5 -5
  86. package/dist/client/_astro/ApiKeysManager.BjyxI6JT.js +0 -1
  87. package/dist/client/_astro/ContentEditor.BZ8aLcGz.js +0 -3
  88. package/dist/client/_astro/ContentEditor.CfQqsa6r.js +0 -1
  89. package/dist/client/_astro/ContentTypeWorkspace.BhHFc6WZ.js +0 -1
  90. package/dist/client/_astro/DashboardHome.BXIUgb4u.js +0 -1
  91. package/dist/client/_astro/FbIcon.CUNS6rpP.js +0 -1
  92. package/dist/client/_astro/FieldGroupEditor.CVoPJ2v-.js +0 -69
  93. package/dist/client/_astro/FieldGroupList.BG2ET5gZ.js +0 -1
  94. package/dist/client/_astro/FloatingPanel.BeCEt_JP.js +0 -1
  95. package/dist/client/_astro/GeneralSettings.CefkBcVj.js +0 -1
  96. package/dist/client/_astro/LogsManager.ya0kmAUm.js +0 -1
  97. package/dist/client/_astro/MediaLibrary.Bod2Afk4.js +0 -1
  98. package/dist/client/_astro/MenuManager.d6_0hgNg.js +0 -1
  99. package/dist/client/_astro/Modal.DR905gyF.js +0 -1
  100. package/dist/client/_astro/PostTypesManager.DMUxfOp9.js +0 -1
  101. package/dist/client/_astro/QuickDraftWidget.DyX_bJ1p.js +0 -17
  102. package/dist/client/_astro/ResourceHubs.BwxYHeE5.js +0 -1
  103. package/dist/client/_astro/TaxonomiesManager.DlVS4Ujm.js +0 -1
  104. package/dist/client/_astro/TaxonomyTermsManager.B_ZDFU-K.js +0 -1
  105. package/dist/client/_astro/UserCreateForm.1KIa3Aa2.js +0 -1
  106. package/dist/client/_astro/UsersManager.v24y8OSk.js +0 -1
  107. package/dist/client/_astro/WebhooksManager.DPkFhoVr.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.AbBpo2WD.js +0 -1
  111. package/dist/client/_astro/pt-BR.B0jeLTb0.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
@@ -1,14 +1,14 @@
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_CItvcX64.mjs";
5
- import { t as $$DashboardLayout } from "./DashboardLayout_HxBoC5fJ.mjs";
6
- import { t as PageHeader } from "./PageHeader_CBOioOjo.mjs";
7
- import { t as Modal } from "./Modal_vHjkS4i2.mjs";
8
- import { t as FloatingPanel } from "./FloatingPanel_DI2CdUZK.mjs";
4
+ import { n as useTranslation, r as apiClient } from "./i18n_BmAxDr2Q.mjs";
5
+ import { t as $$DashboardLayout } from "./DashboardLayout_PXoRmnBH.mjs";
6
+ import { t as PageHeader } from "./PageHeader_CRpzf5xU.mjs";
7
+ import { t as Modal } from "./Modal_I_mBEOz2.mjs";
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";
11
- //#region src/components/apps/settings/PermissionPicker.tsx
11
+ //#region src/components/apps/settings/PermissionPicker.jsx
12
12
  var _tmpl$$1 = [
13
13
  "<input",
14
14
  " type=\"search\" class=\"input permission-picker__search\"",
@@ -195,7 +195,7 @@ function PermissionPicker(props) {
195
195
  })));
196
196
  }
197
197
  //#endregion
198
- //#region src/components/apps/settings/ResourceHubs.tsx
198
+ //#region src/components/apps/settings/ResourceHubs.jsx
199
199
  var _tmpl$ = [
200
200
  "<div",
201
201
  " class=\"notice notice--error\">",
@@ -376,7 +376,7 @@ var $$Access = createComponent$1(($$result, $$props, $$slots) => {
376
376
  })}${renderComponent($$result, "AccessManager", AccessManager, {
377
377
  "client:load": true,
378
378
  "client:component-hydration": "load",
379
- "client:component-path": "/home/runner/work/cms/cms/apps/admin/src/components/apps/settings/ResourceHubs.tsx",
379
+ "client:component-path": "/home/runner/work/cms/cms/apps/admin/src/components/apps/settings/ResourceHubs.jsx",
380
380
  "client:component-export": "AccessManager"
381
381
  })}` })}`;
382
382
  }, "/home/runner/work/cms/cms/apps/admin/src/pages/settings/access.astro", void 0);
@@ -1,13 +1,13 @@
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_CItvcX64.mjs";
5
- import { t as $$DashboardLayout } from "./DashboardLayout_HxBoC5fJ.mjs";
6
- import { t as PageHeader } from "./PageHeader_CBOioOjo.mjs";
7
- import { t as Modal } from "./Modal_vHjkS4i2.mjs";
4
+ import { n as useTranslation, r as apiClient } from "./i18n_BmAxDr2Q.mjs";
5
+ import { t as $$DashboardLayout } from "./DashboardLayout_PXoRmnBH.mjs";
6
+ import { t as PageHeader } from "./PageHeader_CRpzf5xU.mjs";
7
+ import { t as Modal } from "./Modal_I_mBEOz2.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
- //#region src/components/apps/settings/ApiKeysManager.tsx
10
+ //#region src/components/apps/settings/ApiKeysManager.jsx
11
11
  var _tmpl$ = [
12
12
  "<div",
13
13
  " class=\"notice notice--error\">",
@@ -270,7 +270,7 @@ var $$ApiKeys = createComponent$1(($$result, $$props, $$slots) => {
270
270
  })}${renderComponent($$result, "ApiKeysManager", ApiKeysManager, {
271
271
  "client:load": true,
272
272
  "client:component-hydration": "load",
273
- "client:component-path": "/home/runner/work/cms/cms/apps/admin/src/components/apps/settings/ApiKeysManager.tsx",
273
+ "client:component-path": "/home/runner/work/cms/cms/apps/admin/src/components/apps/settings/ApiKeysManager.jsx",
274
274
  "client:component-export": "ApiKeysManager"
275
275
  })}` })}`;
276
276
  }, "/home/runner/work/cms/cms/apps/admin/src/pages/settings/api-keys.astro", void 0);
@@ -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_BmAxDr2Q.mjs";
5
+ import { t as $$DashboardLayout } from "./DashboardLayout_PXoRmnBH.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,12 +1,12 @@
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_CItvcX64.mjs";
5
- import { t as $$DashboardLayout } from "./DashboardLayout_HxBoC5fJ.mjs";
6
- import { t as FbIcon } from "./FbIcon_D0f6QiFJ.mjs";
4
+ import { n as useTranslation, r as apiClient } from "./i18n_BmAxDr2Q.mjs";
5
+ import { t as $$DashboardLayout } from "./DashboardLayout_PXoRmnBH.mjs";
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";
9
- //#region src/components/field-builder/FieldGroupList.tsx
9
+ //#region src/components/field-builder/FieldGroupList.jsx
10
10
  var _tmpl$ = [
11
11
  "<div",
12
12
  " class=\"notice notice--error\">",
@@ -222,7 +222,7 @@ var $$CustomFields = createComponent$1(($$result, $$props, $$slots) => {
222
222
  return renderTemplate`${renderComponent($$result, "DashboardLayout", $$DashboardLayout, { "title": t("settings.customFields.title") }, { "default": ($$result) => renderTemplate`${maybeRenderHead($$result)}<div class="settings-page">${renderComponent($$result, "FieldGroupList", FieldGroupList, {
223
223
  "client:load": true,
224
224
  "client:component-hydration": "load",
225
- "client:component-path": "/home/runner/work/cms/cms/apps/admin/src/components/field-builder/FieldGroupList.tsx",
225
+ "client:component-path": "/home/runner/work/cms/cms/apps/admin/src/components/field-builder/FieldGroupList.jsx",
226
226
  "client:component-export": "FieldGroupList"
227
227
  })}</div>` })}`;
228
228
  }, "/home/runner/work/cms/cms/apps/admin/src/pages/settings/custom-fields.astro", void 0);
@@ -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_BmAxDr2Q.mjs";
5
+ import { t as $$DashboardLayout } from "./DashboardLayout_PXoRmnBH.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_HxBoC5fJ.mjs";
5
- import { t as ContentEditor } from "./ContentEditor_DZWLWgAD.mjs";
6
- import { t as PageHeader } from "./PageHeader_CBOioOjo.mjs";
4
+ import { t as $$DashboardLayout } from "./DashboardLayout_PXoRmnBH.mjs";
5
+ import { t as PageHeader } from "./PageHeader_CRpzf5xU.mjs";
6
+ import { t as ContentEditor } from "./ContentEditor_DStZ4RZE.mjs";
7
7
  //#region src/pages/content/[type]/edit.astro
8
8
  var edit_exports = /* @__PURE__ */ __exportAll({
9
9
  default: () => $$Edit,
@@ -1,13 +1,13 @@
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_CItvcX64.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_HxBoC5fJ.mjs";
6
- import { t as PageHeader } from "./PageHeader_CBOioOjo.mjs";
7
- import { t as FloatingPanel } from "./FloatingPanel_DI2CdUZK.mjs";
4
+ import { a as LOCALE_LABELS, i as LOCALE_FLAGS, n as useTranslation, o as SUPPORTED_LOCALES, r as apiClient } from "./i18n_BmAxDr2Q.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_PXoRmnBH.mjs";
6
+ import { t as PageHeader } from "./PageHeader_CRpzf5xU.mjs";
7
+ import { t as FloatingPanel } from "./FloatingPanel_BtB-nNBT.mjs";
8
8
  import { createComponent, escape, memo, ssr, ssrAttribute, ssrHydrationKey } from "solid-js/web";
9
9
  import { For, Show, createMemo, createSignal } from "solid-js";
10
- //#region src/components/apps/settings/TimezoneSelect.tsx
10
+ //#region src/components/apps/settings/TimezoneSelect.jsx
11
11
  var _tmpl$$1 = [
12
12
  "<input",
13
13
  " type=\"search\" class=\"input tz-select__search\"",
@@ -122,7 +122,7 @@ function TimezoneSelect(props) {
122
122
  })));
123
123
  }
124
124
  //#endregion
125
- //#region src/components/apps/settings/GeneralSettings.tsx
125
+ //#region src/components/apps/settings/GeneralSettings.jsx
126
126
  var _tmpl$ = [
127
127
  "<div",
128
128
  " class=\"notice notice--error\">",
@@ -319,7 +319,7 @@ var $$General = createComponent$1(($$result, $$props, $$slots) => {
319
319
  })}${renderComponent($$result, "GeneralSettings", GeneralSettings, {
320
320
  "client:load": true,
321
321
  "client:component-hydration": "load",
322
- "client:component-path": "/home/runner/work/cms/cms/apps/admin/src/components/apps/settings/GeneralSettings.tsx",
322
+ "client:component-path": "/home/runner/work/cms/cms/apps/admin/src/components/apps/settings/GeneralSettings.jsx",
323
323
  "client:component-export": "GeneralSettings"
324
324
  })}` })}`;
325
325
  }, "/home/runner/work/cms/cms/apps/admin/src/pages/settings/general.astro", void 0);