@oktis-works/admin 0.1.5 → 0.1.8

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 (47) hide show
  1. package/dist/client/_astro/{BaseLayout.COf3Eran.css → BaseLayout.BPkaFsmK.css} +1 -1
  2. package/dist/client/_astro/ContentEditor.C9TSxsGW.js +1 -0
  3. package/dist/client/_astro/ContentList.e1datweV.js +1 -0
  4. package/dist/client/_astro/DashboardHome.CqnldWlv.js +1 -0
  5. package/dist/client/_astro/DashboardLayout.astro_astro_type_script_index_0_lang.sNve10RH.js +1 -0
  6. package/dist/client/_astro/GeneralSettings.D-ALN9_r.js +1 -0
  7. package/dist/client/_astro/MediaLibrary.NQ1lF95i.js +1 -0
  8. package/dist/client/_astro/PostTypesManager.CdMx_Nxn.js +1 -0
  9. package/dist/client/_astro/TaxonomiesManager.BU7A02Ay.js +1 -0
  10. package/dist/client/_astro/UserCreateForm.BvDn97aZ.js +1 -0
  11. package/dist/client/_astro/UsersManager.CFBCKO-t.js +1 -0
  12. package/dist/client/_astro/api.DCaprPaL.js +1 -0
  13. package/dist/client/_astro/client.BY0Z100j.js +1 -0
  14. package/dist/client/_astro/dist.B3u752Tx.js +1 -0
  15. package/dist/client/_astro/extensions.PfWqwyUU.js +1 -0
  16. package/dist/client/_astro/{login.astro_astro_type_script_index_0_lang.BLhqPWk8.js → login.astro_astro_type_script_index_0_lang.BZaUVRCc.js} +1 -1
  17. package/dist/client/_astro/{web.BRlgYXBp.js → web.D_vCtCLj.js} +1 -1
  18. package/dist/server/chunks/{BaseLayout_Mvr1_6Ng.mjs → BaseLayout_C41_wW4F.mjs} +19 -2
  19. package/dist/server/chunks/{edit_D14rRl_p.mjs → ContentEditor_CrO12IkK.mjs} +535 -48
  20. package/dist/server/chunks/DashboardLayout_h9iqOf7E.mjs +524 -0
  21. package/dist/server/chunks/MediaLibrary_Ctc5H6Od.mjs +309 -0
  22. package/dist/server/chunks/_slug__FVgVdi48.mjs +30 -0
  23. package/dist/server/chunks/api_C1VC3OiH.mjs +286 -0
  24. package/dist/server/chunks/edit_Dau0tASP.mjs +30 -0
  25. package/dist/server/chunks/general_DOXmhv-h.mjs +180 -0
  26. package/dist/server/chunks/index_B26K6w42.mjs +316 -0
  27. package/dist/server/chunks/index_BYBvZsat.mjs +23 -0
  28. package/dist/server/chunks/index_D9OGVvPs.mjs +275 -0
  29. package/dist/server/chunks/index_Owj31XBA.mjs +133 -0
  30. package/dist/server/chunks/index_oZK1qJym.mjs +30 -0
  31. package/dist/server/chunks/{login_B7vbWIed.mjs → login_BH67N4b1.mjs} +2 -19
  32. package/dist/server/chunks/new_2mb-n_fU.mjs +86 -0
  33. package/dist/server/chunks/new_BhA9pTES.mjs +30 -0
  34. package/dist/server/chunks/{post-types_BtNyF2Iv.mjs → post-types_B4rrV0WI.mjs} +2 -2
  35. package/dist/server/chunks/{taxonomies_DSgstawN.mjs → taxonomies_Bdxv94jK.mjs} +2 -2
  36. package/dist/server/chunks/upload_RgdwSWbY.mjs +31 -0
  37. package/dist/server/entry.mjs +291 -15
  38. package/package.json +5 -5
  39. package/dist/client/_astro/ContentEditor.COyD6bGV.js +0 -1
  40. package/dist/client/_astro/PostTypesManager.APvO7Cs9.js +0 -1
  41. package/dist/client/_astro/TaxonomiesManager.CVFdfaUR.js +0 -1
  42. package/dist/client/_astro/api.DSP61PKM.js +0 -1
  43. package/dist/client/_astro/client.D7G9q8lk.js +0 -1
  44. package/dist/server/chunks/DashboardLayout_CP5ag-_P.mjs +0 -17
  45. package/dist/server/chunks/api_Cy8sbUHf.mjs +0 -153
  46. package/dist/server/chunks/index_BgbHlcwr.mjs +0 -23
  47. package/dist/server/chunks/index_c3b5hMDp.mjs +0 -22
@@ -0,0 +1,275 @@
1
+ import { r as __exportAll } from "./rolldown-runtime_BMI-E3GI.mjs";
2
+ import { d as maybeRenderHead, i as renderComponent, u as renderTemplate } from "./server_CnzC2Y0K.mjs";
3
+ import { t as createComponent$1 } from "./compiler_CYjwXhLT.mjs";
4
+ import { c as Select, f as createSignal, i as Card, l as Show2, n as Badge, o as Input, p as onMount, r as Button, s as Pagination, t as $$DashboardLayout, u as Table } from "./DashboardLayout_h9iqOf7E.mjs";
5
+ import { t as apiClient } from "./api_C1VC3OiH.mjs";
6
+ import { createComponent, escape, ssr, ssrHydrationKey } from "solid-js/web";
7
+ //#region src/components/content/ContentList.tsx
8
+ var _tmpl$ = [
9
+ "<span",
10
+ " class=\"muted\">",
11
+ "</span>"
12
+ ];
13
+ var _tmpl$2 = [
14
+ "<div",
15
+ " class=\"users-table__actions\"><a class=\"btn btn-secondary btn-sm\" href=\"",
16
+ "\">Editar</a><!--$-->",
17
+ "<!--/--><!--$-->",
18
+ "<!--/--></div>"
19
+ ];
20
+ var _tmpl$3 = [
21
+ "<div",
22
+ " class=\"notice notice--error\">",
23
+ "</div>"
24
+ ];
25
+ var _tmpl$4 = [
26
+ "<div",
27
+ " class=\"notice\">",
28
+ "</div>"
29
+ ];
30
+ var _tmpl$5 = [
31
+ "<div",
32
+ " class=\"content-list\"><!--$-->",
33
+ "<!--/--><!--$-->",
34
+ "<!--/--><div class=\"toolbar\"><!--$-->",
35
+ "<!--/--><!--$-->",
36
+ "<!--/--><!--$-->",
37
+ "<!--/--><a class=\"btn btn-primary\" href=\"/content/new\">+ Novo conteúdo</a><!--$-->",
38
+ "<!--/--></div><!--$-->",
39
+ "<!--/--></div>"
40
+ ];
41
+ function raw(row) {
42
+ return row;
43
+ }
44
+ function formatDate(row) {
45
+ const value = raw(row)["updated_at"] ?? raw(row)["updatedAt"] ?? raw(row)["created_at"];
46
+ if (typeof value !== "string") return "—";
47
+ const date = new Date(value);
48
+ return Number.isNaN(date.getTime()) ? "—" : date.toLocaleString("pt-BR");
49
+ }
50
+ function ContentList() {
51
+ const [items, setItems] = createSignal([]);
52
+ const [types, setTypes] = createSignal([]);
53
+ const [total, setTotal] = createSignal(0);
54
+ const [page, setPage] = createSignal(1);
55
+ const [search, setSearch] = createSignal("");
56
+ const [type, setType] = createSignal("");
57
+ const [status, setStatus] = createSignal("");
58
+ const [error, setError] = createSignal("");
59
+ const [info, setInfo] = createSignal("");
60
+ const [busyId, setBusyId] = createSignal("");
61
+ const limit = 20;
62
+ const load = async () => {
63
+ try {
64
+ const result = await apiClient.getContent({
65
+ page: page(),
66
+ limit,
67
+ type: type() || void 0,
68
+ status: status() || void 0,
69
+ search: search() || void 0
70
+ });
71
+ setItems(result.data ?? []);
72
+ setTotal(result.total ?? 0);
73
+ } catch (err) {
74
+ setError(err instanceof Error ? err.message : String(err));
75
+ }
76
+ };
77
+ onMount(async () => {
78
+ await load();
79
+ try {
80
+ setTypes(await apiClient.getContentTypes());
81
+ } catch {}
82
+ });
83
+ const searchNow = async () => {
84
+ setPage(1);
85
+ await load();
86
+ };
87
+ const togglePublish = async (row) => {
88
+ const isPublished = raw(row)["status"] === "PUBLISHED";
89
+ setBusyId(row.id);
90
+ setError("");
91
+ setInfo("");
92
+ try {
93
+ await apiClient.publishToggle(row.id, isPublished);
94
+ setInfo(isPublished ? "Conteúdo despublicado ✓" : "Conteúdo publicado ✓");
95
+ await load();
96
+ } catch (err) {
97
+ setError(err instanceof Error ? err.message : String(err));
98
+ } finally {
99
+ setBusyId("");
100
+ }
101
+ };
102
+ const remove = async (row) => {
103
+ const title = String(raw(row)["title"] ?? row.id);
104
+ if (!confirm(`Excluir "${title}"?`)) return;
105
+ try {
106
+ await apiClient.deleteContent(row.id);
107
+ await load();
108
+ } catch (err) {
109
+ setError(err instanceof Error ? err.message : String(err));
110
+ }
111
+ };
112
+ const columns = [
113
+ {
114
+ key: "title",
115
+ label: "Título"
116
+ },
117
+ {
118
+ key: "type",
119
+ label: "Tipo"
120
+ },
121
+ {
122
+ key: "status",
123
+ label: "Status",
124
+ render: (_value, row) => {
125
+ const statusValue = String(row["status"] ?? "");
126
+ return createComponent(Badge, {
127
+ variant: statusValue === "PUBLISHED" ? "success" : statusValue === "ARCHIVED" ? "warning" : "secondary",
128
+ children: statusValue
129
+ });
130
+ }
131
+ },
132
+ {
133
+ key: "updated_at",
134
+ label: "Atualizado",
135
+ render: (_value, row) => ssr(_tmpl$, ssrHydrationKey(), escape(formatDate(row)))
136
+ },
137
+ {
138
+ key: "actions",
139
+ label: "",
140
+ render: (_value, row) => {
141
+ const content = row;
142
+ const isPublished = raw(content)["status"] === "PUBLISHED";
143
+ return ssr(_tmpl$2, ssrHydrationKey(), `/content/edit?id=${escape(encodeURIComponent(content.id), true)}`, escape(createComponent(Button, {
144
+ variant: isPublished ? "secondary" : "primary",
145
+ size: "sm",
146
+ get loading() {
147
+ return busyId() === content.id;
148
+ },
149
+ onClick: () => void togglePublish(content),
150
+ children: isPublished ? "Despublicar" : "Publicar"
151
+ })), escape(createComponent(Button, {
152
+ variant: "danger",
153
+ size: "sm",
154
+ onClick: () => void remove(content),
155
+ children: "Excluir"
156
+ })));
157
+ }
158
+ }
159
+ ];
160
+ return ssr(_tmpl$5, ssrHydrationKey(), escape(createComponent(Show2, {
161
+ get when() {
162
+ return error();
163
+ },
164
+ get children() {
165
+ return ssr(_tmpl$3, ssrHydrationKey(), escape(error()));
166
+ }
167
+ })), escape(createComponent(Show2, {
168
+ get when() {
169
+ return info();
170
+ },
171
+ get children() {
172
+ return ssr(_tmpl$4, ssrHydrationKey(), escape(info()));
173
+ }
174
+ })), escape(createComponent(Input, {
175
+ name: "search",
176
+ placeholder: "Buscar conteúdo…",
177
+ get value() {
178
+ return search();
179
+ },
180
+ onInput: (value) => {
181
+ setSearch(value);
182
+ searchNow();
183
+ }
184
+ })), escape(createComponent(Select, {
185
+ name: "type",
186
+ placeholder: "Todos os tipos",
187
+ get value() {
188
+ return type();
189
+ },
190
+ get options() {
191
+ return types().map((t) => ({
192
+ value: t.slug,
193
+ label: t.pluralLabel || t.name
194
+ }));
195
+ },
196
+ onChange: (value) => {
197
+ setType(value);
198
+ searchNow();
199
+ }
200
+ })), escape(createComponent(Select, {
201
+ name: "status",
202
+ placeholder: "Todos os status",
203
+ get value() {
204
+ return status();
205
+ },
206
+ options: [
207
+ {
208
+ value: "DRAFT",
209
+ label: "Rascunho"
210
+ },
211
+ {
212
+ value: "PUBLISHED",
213
+ label: "Publicado"
214
+ },
215
+ {
216
+ value: "ARCHIVED",
217
+ label: "Arquivado"
218
+ }
219
+ ],
220
+ onChange: (value) => {
221
+ setStatus(value);
222
+ searchNow();
223
+ }
224
+ })), escape(createComponent(Button, {
225
+ variant: "secondary",
226
+ onClick: () => void searchNow(),
227
+ children: "Buscar"
228
+ })), escape(createComponent(Card, { get children() {
229
+ return [createComponent(Table, {
230
+ columns,
231
+ get data() {
232
+ return items();
233
+ },
234
+ emptyMessage: "Nenhum conteúdo encontrado."
235
+ }), createComponent(Pagination, {
236
+ get page() {
237
+ return page();
238
+ },
239
+ limit,
240
+ get total() {
241
+ return total();
242
+ },
243
+ onPageChange: (next) => {
244
+ setPage(next);
245
+ load();
246
+ }
247
+ })];
248
+ } })));
249
+ }
250
+ //#endregion
251
+ //#region src/pages/content/index.astro
252
+ var content_exports = /* @__PURE__ */ __exportAll({
253
+ default: () => $$Index,
254
+ file: () => $$file,
255
+ url: () => $$url
256
+ });
257
+ var $$Index = createComponent$1(($$result, $$props, $$slots) => {
258
+ return renderTemplate`${renderComponent($$result, "DashboardLayout", $$DashboardLayout, {
259
+ "title": "Content",
260
+ "data-astro-cid-qhu5jad5": true
261
+ }, { "default": ($$result) => renderTemplate`${maybeRenderHead($$result)}<div class="content-page" data-astro-cid-qhu5jad5><div class="page-header" data-astro-cid-qhu5jad5><h2 data-astro-cid-qhu5jad5>Conteúdo</h2><p data-astro-cid-qhu5jad5>Busque, filtre, edite e publique seu conteúdo.</p></div>${renderComponent($$result, "ContentList", ContentList, {
262
+ "client:load": true,
263
+ "data-astro-cid-qhu5jad5": true,
264
+ "client:component-hydration": "load",
265
+ "client:component-path": "/home/runner/work/cms/cms/apps/admin/src/components/content/ContentList.tsx",
266
+ "client:component-export": "ContentList"
267
+ })}</div>` })}`;
268
+ }, "/home/runner/work/cms/cms/apps/admin/src/pages/content/index.astro", void 0);
269
+ var $$file = "/home/runner/work/cms/cms/apps/admin/src/pages/content/index.astro";
270
+ var $$url = "/content";
271
+ //#endregion
272
+ //#region \0virtual:astro:page:src/pages/content/index@_@astro
273
+ var page = () => content_exports;
274
+ //#endregion
275
+ export { page };
@@ -0,0 +1,133 @@
1
+ import { r as __exportAll } from "./rolldown-runtime_BMI-E3GI.mjs";
2
+ import { d as maybeRenderHead, i as renderComponent, u as renderTemplate } from "./server_CnzC2Y0K.mjs";
3
+ import { t as createComponent$1 } from "./compiler_CYjwXhLT.mjs";
4
+ import { t as $$DashboardLayout } from "./DashboardLayout_h9iqOf7E.mjs";
5
+ import { t as apiClient } from "./api_C1VC3OiH.mjs";
6
+ import { createComponent, escape, ssr, ssrHydrationKey } from "solid-js/web";
7
+ import { For, Show, createSignal, onMount } from "solid-js";
8
+ //#region src/components/apps/dashboard/DashboardHome.tsx
9
+ var _tmpl$ = [
10
+ "<div",
11
+ " class=\"notice notice--error\">",
12
+ "</div>"
13
+ ];
14
+ var _tmpl$2 = [
15
+ "<table",
16
+ " class=\"table\"><thead><tr><th>Title</th><th>Type</th><th>Status</th><th>Updated</th></tr></thead><tbody>",
17
+ "</tbody></table>"
18
+ ];
19
+ var _tmpl$3 = [
20
+ "<div",
21
+ " class=\"dashboard-home\"><!--$-->",
22
+ "<!--/--><div class=\"stats-grid\"><div class=\"card stat-card\"><h3 class=\"stat-label\">Total Content</h3><p class=\"stat-value\">",
23
+ "</p></div><div class=\"card stat-card\"><h3 class=\"stat-label\">Published</h3><p class=\"stat-value\">",
24
+ "</p></div><div class=\"card stat-card\"><h3 class=\"stat-label\">Drafts</h3><p class=\"stat-value\">",
25
+ "</p></div><div class=\"card stat-card\"><h3 class=\"stat-label\">Media Files</h3><p class=\"stat-value\">",
26
+ "</p></div><div class=\"card stat-card\"><h3 class=\"stat-label\">Users</h3><p class=\"stat-value\">",
27
+ "</p></div></div><div class=\"card\"><div class=\"card-header\"><h3>Recent Content</h3><a href=\"/content\" class=\"btn btn-secondary btn-sm\">View All</a></div><!--$-->",
28
+ "<!--/--></div></div>"
29
+ ];
30
+ var _tmpl$4 = ["<p", " class=\"muted\">Nenhum conteúdo ainda — crie o primeiro!</p>"];
31
+ var _tmpl$5 = [
32
+ "<tr",
33
+ "><td><a href=\"",
34
+ "\">",
35
+ "</a></td><td>",
36
+ "</td><td>",
37
+ "</td><td class=\"muted\">",
38
+ "</td></tr>"
39
+ ];
40
+ function raw(row) {
41
+ return row;
42
+ }
43
+ function formatDate(row) {
44
+ const value = raw(row)["updated_at"] ?? raw(row)["updatedAt"] ?? raw(row)["created_at"];
45
+ if (typeof value !== "string") return "—";
46
+ const date = new Date(value);
47
+ return Number.isNaN(date.getTime()) ? "—" : date.toLocaleString("pt-BR");
48
+ }
49
+ function DashboardHome() {
50
+ const [stats, setStats] = createSignal({
51
+ total: "—",
52
+ published: "—",
53
+ drafts: "—",
54
+ media: "—",
55
+ users: "—"
56
+ });
57
+ const [recent, setRecent] = createSignal([]);
58
+ const [error, setError] = createSignal("");
59
+ onMount(async () => {
60
+ const [all, published, drafts, media, users, recentList] = await Promise.allSettled([
61
+ apiClient.getContent({ limit: 1 }),
62
+ apiClient.getContent({
63
+ limit: 1,
64
+ status: "PUBLISHED"
65
+ }),
66
+ apiClient.getContent({
67
+ limit: 1,
68
+ status: "DRAFT"
69
+ }),
70
+ apiClient.listMedia({ limit: 1 }),
71
+ apiClient.listUsers({ limit: 1 }),
72
+ apiClient.getContent({ limit: 5 })
73
+ ]);
74
+ const count = (result) => result.status === "fulfilled" ? String(result.value.total) : "?";
75
+ setStats({
76
+ total: count(all),
77
+ published: count(published),
78
+ drafts: count(drafts),
79
+ media: count(media),
80
+ users: count(users)
81
+ });
82
+ if (recentList.status === "fulfilled") setRecent(recentList.value.data ?? []);
83
+ else setError(recentList.reason instanceof Error ? recentList.reason.message : String(recentList.reason));
84
+ });
85
+ return ssr(_tmpl$3, ssrHydrationKey(), escape(createComponent(Show, {
86
+ get when() {
87
+ return error();
88
+ },
89
+ get children() {
90
+ return ssr(_tmpl$, ssrHydrationKey(), escape(error()));
91
+ }
92
+ })), escape(stats().total), escape(stats().published), escape(stats().drafts), escape(stats().media), escape(stats().users), escape(createComponent(Show, {
93
+ get when() {
94
+ return recent().length > 0;
95
+ },
96
+ get fallback() {
97
+ return ssr(_tmpl$4, ssrHydrationKey());
98
+ },
99
+ get children() {
100
+ return ssr(_tmpl$2, ssrHydrationKey(), escape(createComponent(For, {
101
+ get each() {
102
+ return recent();
103
+ },
104
+ children: (row) => ssr(_tmpl$5, ssrHydrationKey(), `/content/edit?id=${escape(encodeURIComponent(String(raw(row)["id"] ?? "")), true)}`, escape(String(raw(row)["title"] ?? "—")), escape(String(raw(row)["type"] ?? "—")), escape(String(raw(row)["status"] ?? "—")), escape(formatDate(row)))
105
+ })));
106
+ }
107
+ })));
108
+ }
109
+ //#endregion
110
+ //#region src/pages/index.astro
111
+ var pages_exports = /* @__PURE__ */ __exportAll({
112
+ default: () => $$Index,
113
+ file: () => $$file,
114
+ url: () => ""
115
+ });
116
+ var $$Index = createComponent$1(($$result, $$props, $$slots) => {
117
+ return renderTemplate`${renderComponent($$result, "DashboardLayout", $$DashboardLayout, {
118
+ "title": "Dashboard",
119
+ "data-astro-cid-lcdefpme": true
120
+ }, { "default": ($$result) => renderTemplate`${maybeRenderHead($$result)}<div class="dashboard" data-astro-cid-lcdefpme>${renderComponent($$result, "DashboardHome", DashboardHome, {
121
+ "client:load": true,
122
+ "data-astro-cid-lcdefpme": true,
123
+ "client:component-hydration": "load",
124
+ "client:component-path": "/home/runner/work/cms/cms/apps/admin/src/components/apps/dashboard/DashboardHome.tsx",
125
+ "client:component-export": "DashboardHome"
126
+ })}<div class="quick-actions" data-astro-cid-lcdefpme><div class="card" data-astro-cid-lcdefpme><h3 class="card-header" data-astro-cid-lcdefpme>Quick Actions</h3><div class="actions-grid" data-astro-cid-lcdefpme><a href="/content/new" class="action-card" data-astro-cid-lcdefpme><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" data-astro-cid-lcdefpme><line x1="12" y1="5" x2="12" y2="19" data-astro-cid-lcdefpme></line><line x1="5" y1="12" x2="19" y2="12" data-astro-cid-lcdefpme></line></svg><span data-astro-cid-lcdefpme>New Post</span></a><a href="/media/upload" class="action-card" data-astro-cid-lcdefpme><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" data-astro-cid-lcdefpme><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4" data-astro-cid-lcdefpme></path><polyline points="17 8 12 3 7 8" data-astro-cid-lcdefpme></polyline><line x1="12" y1="3" x2="12" y2="15" data-astro-cid-lcdefpme></line></svg><span data-astro-cid-lcdefpme>Upload Media</span></a><a href="/users/new" class="action-card" data-astro-cid-lcdefpme><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" data-astro-cid-lcdefpme><path d="M16 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2" data-astro-cid-lcdefpme></path><circle cx="8.5" cy="7" r="4" data-astro-cid-lcdefpme></circle><line x1="20" y1="8" x2="20" y2="14" data-astro-cid-lcdefpme></line><line x1="23" y1="11" x2="17" y2="11" data-astro-cid-lcdefpme></line></svg><span data-astro-cid-lcdefpme>Add User</span></a><a href="/settings" class="action-card" data-astro-cid-lcdefpme><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" data-astro-cid-lcdefpme><circle cx="12" cy="12" r="3" data-astro-cid-lcdefpme></circle><path d="M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1 0 2.83 2 2 0 0 1-2.83 0l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-2 2 2 2 0 0 1-2-2v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 0 1-2.83 0 2 2 0 0 1 0-2.83l.06-.06a1.65 1.65 0 0 0 .33-1.82 1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1-2-2 2 2 0 0 1 2-2h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 0 1 0-2.83 2 2 0 0 1 2.83 0l.06.06a1.65 1.65 0 0 0 1.82.33H9a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 2-2 2 2 0 0 1 2 2v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 0 1 2.83 0 2 2 0 0 1 0 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82V9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 2 2 2 2 0 0 1-2 2h-.09a1.65 1.65 0 0 0-1.51 1z" data-astro-cid-lcdefpme></path></svg><span data-astro-cid-lcdefpme>Settings</span></a></div></div></div></div>` })}`;
127
+ }, "/home/runner/work/cms/cms/apps/admin/src/pages/index.astro", void 0);
128
+ var $$file = "/home/runner/work/cms/cms/apps/admin/src/pages/index.astro";
129
+ //#endregion
130
+ //#region \0virtual:astro:page:src/pages/index@_@astro
131
+ var page = () => pages_exports;
132
+ //#endregion
133
+ export { page };
@@ -0,0 +1,30 @@
1
+ import { r as __exportAll } from "./rolldown-runtime_BMI-E3GI.mjs";
2
+ import { d as maybeRenderHead, i as renderComponent, u as renderTemplate } from "./server_CnzC2Y0K.mjs";
3
+ import { t as createComponent } from "./compiler_CYjwXhLT.mjs";
4
+ import { t as $$DashboardLayout } from "./DashboardLayout_h9iqOf7E.mjs";
5
+ import { t as MediaLibrary } from "./MediaLibrary_Ctc5H6Od.mjs";
6
+ //#region src/pages/media/index.astro
7
+ var media_exports = /* @__PURE__ */ __exportAll({
8
+ default: () => $$Index,
9
+ file: () => $$file,
10
+ url: () => $$url
11
+ });
12
+ var $$Index = createComponent(($$result, $$props, $$slots) => {
13
+ return renderTemplate`${renderComponent($$result, "DashboardLayout", $$DashboardLayout, {
14
+ "title": "Media",
15
+ "data-astro-cid-jureezux": true
16
+ }, { "default": ($$result) => renderTemplate`${maybeRenderHead($$result)}<div class="media-page" data-astro-cid-jureezux><div class="page-header" data-astro-cid-jureezux><h2 data-astro-cid-jureezux>Biblioteca de mídia</h2><p data-astro-cid-jureezux>Envie e gerencie imagens, vídeos e documentos. Os arquivos ficam em <code data-astro-cid-jureezux>uploads/</code> e são servidos publicamente.</p></div>${renderComponent($$result, "MediaLibrary", MediaLibrary, {
17
+ "client:load": true,
18
+ "data-astro-cid-jureezux": true,
19
+ "client:component-hydration": "load",
20
+ "client:component-path": "/home/runner/work/cms/cms/apps/admin/src/components/media/MediaLibrary.tsx",
21
+ "client:component-export": "MediaLibrary"
22
+ })}</div>` })}`;
23
+ }, "/home/runner/work/cms/cms/apps/admin/src/pages/media/index.astro", void 0);
24
+ var $$file = "/home/runner/work/cms/cms/apps/admin/src/pages/media/index.astro";
25
+ var $$url = "/media";
26
+ //#endregion
27
+ //#region \0virtual:astro:page:src/pages/media/index@_@astro
28
+ var page = () => media_exports;
29
+ //#endregion
30
+ export { page };
@@ -1,24 +1,7 @@
1
1
  import { r as __exportAll } from "./rolldown-runtime_BMI-E3GI.mjs";
2
- import { d as maybeRenderHead, i as renderComponent, m as createRenderInstruction, u as renderTemplate } from "./server_CnzC2Y0K.mjs";
2
+ import { d as maybeRenderHead, i as renderComponent, u as renderTemplate } from "./server_CnzC2Y0K.mjs";
3
3
  import { t as createComponent } from "./compiler_CYjwXhLT.mjs";
4
- import { t as $$BaseLayout } from "./BaseLayout_Mvr1_6Ng.mjs";
5
- //#region ../../node_modules/.bun/astro@7.3.5+b816f5dfb7c6296d/node_modules/astro/dist/runtime/server/render/script.js
6
- async function renderScript(result, id) {
7
- const inlined = result.inlinedScripts.get(id);
8
- let content = "";
9
- if (inlined != null) {
10
- if (inlined) content = `<script type="module">${inlined}<\/script>`;
11
- } else {
12
- const resolved = await result.resolve(id);
13
- content = `<script type="module" src="${result.userAssetsBase ? (result.base === "/" ? "" : result.base) + result.userAssetsBase : ""}${resolved}"><\/script>`;
14
- }
15
- return createRenderInstruction({
16
- type: "script",
17
- id,
18
- content
19
- });
20
- }
21
- //#endregion
4
+ import { n as renderScript, t as $$BaseLayout } from "./BaseLayout_C41_wW4F.mjs";
22
5
  //#region src/pages/login.astro
23
6
  var login_exports = /* @__PURE__ */ __exportAll({
24
7
  default: () => $$Login,
@@ -0,0 +1,86 @@
1
+ import { r as __exportAll } from "./rolldown-runtime_BMI-E3GI.mjs";
2
+ import { d as maybeRenderHead, i as renderComponent, u as renderTemplate } from "./server_CnzC2Y0K.mjs";
3
+ import { t as createComponent$1 } from "./compiler_CYjwXhLT.mjs";
4
+ import { t as $$DashboardLayout } from "./DashboardLayout_h9iqOf7E.mjs";
5
+ import { t as apiClient } from "./api_C1VC3OiH.mjs";
6
+ import { createComponent, escape, ssr, ssrAttribute, ssrHydrationKey } from "solid-js/web";
7
+ import { For, Show, createSignal, onMount } from "solid-js";
8
+ //#region src/components/apps/users/UserCreateForm.tsx
9
+ var _tmpl$ = [
10
+ "<div",
11
+ " class=\"notice notice--error\">",
12
+ "</div>"
13
+ ];
14
+ var _tmpl$2 = [
15
+ "<div",
16
+ " class=\"user-create\"><!--$-->",
17
+ "<!--/--><form class=\"card\"><h3>Novo usuário</h3><div class=\"form-grid\"><label>Nome<input class=\"input\" required",
18
+ "></label><label>Email<input class=\"input\" type=\"email\" required",
19
+ "></label><label>Senha <span class=\"muted\">(mínimo 8 caracteres)</span><input class=\"input\" type=\"password\" required minlength=\"8\"",
20
+ "></label><label>Papel<select class=\"input\"",
21
+ "><option value>— nenhum (só leitura futura) —</option><!--$-->",
22
+ "<!--/--></select></label></div><p class=\"muted\">O papel define o que o usuário pode fazer (o primeiro usuário do projeto já nasce como Administrador).</p><div class=\"media-details__actions\"><button class=\"btn btn-primary\" type=\"submit\"",
23
+ ">",
24
+ "</button><a class=\"btn btn-secondary\" href=\"/users\">Voltar</a></div></form></div>"
25
+ ];
26
+ var _tmpl$3 = [
27
+ "<option",
28
+ "><!--$-->",
29
+ "<!--/--> (<!--$-->",
30
+ "<!--/-->)</option>"
31
+ ];
32
+ function UserCreateForm() {
33
+ const [name, setName] = createSignal("");
34
+ const [email, setEmail] = createSignal("");
35
+ const [password, setPassword] = createSignal("");
36
+ const [roleId, setRoleId] = createSignal("");
37
+ const [roles, setRoles] = createSignal([]);
38
+ const [error, setError] = createSignal("");
39
+ const [saving, setSaving] = createSignal(false);
40
+ onMount(async () => {
41
+ try {
42
+ const all = await apiClient.listRoles();
43
+ setRoles(all);
44
+ setRoleId(all.find((r) => r.slug === "EDITOR")?.id ?? all[0]?.id ?? "");
45
+ } catch {}
46
+ });
47
+ return ssr(_tmpl$2, ssrHydrationKey(), escape(createComponent(Show, {
48
+ get when() {
49
+ return error();
50
+ },
51
+ get children() {
52
+ return ssr(_tmpl$, ssrHydrationKey(), escape(error()));
53
+ }
54
+ })), ssrAttribute("value", escape(name(), true), false), ssrAttribute("value", escape(email(), true), false), ssrAttribute("value", escape(password(), true), false), ssrAttribute("value", escape(roleId(), true), false), escape(createComponent(For, {
55
+ get each() {
56
+ return roles();
57
+ },
58
+ children: (role) => ssr(_tmpl$3, ssrHydrationKey() + ssrAttribute("value", escape(role.id, true), false), escape(role.name), escape(role.slug))
59
+ })), ssrAttribute("disabled", saving(), true), saving() ? "Criando…" : "Criar usuário");
60
+ }
61
+ //#endregion
62
+ //#region src/pages/users/new.astro
63
+ var new_exports = /* @__PURE__ */ __exportAll({
64
+ default: () => $$New,
65
+ file: () => $$file,
66
+ url: () => $$url
67
+ });
68
+ var $$New = createComponent$1(($$result, $$props, $$slots) => {
69
+ return renderTemplate`${renderComponent($$result, "DashboardLayout", $$DashboardLayout, {
70
+ "title": "Novo usuário",
71
+ "data-astro-cid-zengvhh7": true
72
+ }, { "default": ($$result) => renderTemplate`${maybeRenderHead($$result)}<div class="users-page" data-astro-cid-zengvhh7><div class="page-header" data-astro-cid-zengvhh7><h2 data-astro-cid-zengvhh7>Novo usuário</h2><p data-astro-cid-zengvhh7>Crie uma conta e atribua um papel de acesso.</p></div>${renderComponent($$result, "UserCreateForm", UserCreateForm, {
73
+ "client:load": true,
74
+ "data-astro-cid-zengvhh7": true,
75
+ "client:component-hydration": "load",
76
+ "client:component-path": "/home/runner/work/cms/cms/apps/admin/src/components/apps/users/UserCreateForm.tsx",
77
+ "client:component-export": "UserCreateForm"
78
+ })}</div>` })}`;
79
+ }, "/home/runner/work/cms/cms/apps/admin/src/pages/users/new.astro", void 0);
80
+ var $$file = "/home/runner/work/cms/cms/apps/admin/src/pages/users/new.astro";
81
+ var $$url = "/users/new";
82
+ //#endregion
83
+ //#region \0virtual:astro:page:src/pages/users/new@_@astro
84
+ var page = () => new_exports;
85
+ //#endregion
86
+ export { page };
@@ -0,0 +1,30 @@
1
+ import { r as __exportAll } from "./rolldown-runtime_BMI-E3GI.mjs";
2
+ import { d as maybeRenderHead, i as renderComponent, u as renderTemplate } from "./server_CnzC2Y0K.mjs";
3
+ import { t as createComponent } from "./compiler_CYjwXhLT.mjs";
4
+ import { t as $$DashboardLayout } from "./DashboardLayout_h9iqOf7E.mjs";
5
+ import { t as ContentEditor } from "./ContentEditor_CrO12IkK.mjs";
6
+ //#region src/pages/content/new.astro
7
+ var new_exports = /* @__PURE__ */ __exportAll({
8
+ default: () => $$New,
9
+ file: () => $$file,
10
+ url: () => $$url
11
+ });
12
+ var $$New = createComponent(($$result, $$props, $$slots) => {
13
+ return renderTemplate`${renderComponent($$result, "DashboardLayout", $$DashboardLayout, {
14
+ "title": "Novo conteúdo",
15
+ "data-astro-cid-uavvtubt": true
16
+ }, { "default": ($$result) => renderTemplate`${maybeRenderHead($$result)}<div class="editor-page" data-astro-cid-uavvtubt>${renderComponent($$result, "ContentEditor", ContentEditor, {
17
+ "client:load": true,
18
+ "data-astro-cid-uavvtubt": true,
19
+ "client:component-hydration": "load",
20
+ "client:component-path": "/home/runner/work/cms/cms/apps/admin/src/components/content/ContentEditor.tsx",
21
+ "client:component-export": "ContentEditor"
22
+ })}</div>` })}`;
23
+ }, "/home/runner/work/cms/cms/apps/admin/src/pages/content/new.astro", void 0);
24
+ var $$file = "/home/runner/work/cms/cms/apps/admin/src/pages/content/new.astro";
25
+ var $$url = "/content/new";
26
+ //#endregion
27
+ //#region \0virtual:astro:page:src/pages/content/new@_@astro
28
+ var page = () => new_exports;
29
+ //#endregion
30
+ export { page };
@@ -1,8 +1,8 @@
1
1
  import { r as __exportAll } from "./rolldown-runtime_BMI-E3GI.mjs";
2
2
  import { d as maybeRenderHead, i as renderComponent, u as renderTemplate } from "./server_CnzC2Y0K.mjs";
3
3
  import { t as createComponent$1 } from "./compiler_CYjwXhLT.mjs";
4
- import { t as $$DashboardLayout } from "./DashboardLayout_CP5ag-_P.mjs";
5
- import { t as apiClient } from "./api_Cy8sbUHf.mjs";
4
+ import { t as $$DashboardLayout } from "./DashboardLayout_h9iqOf7E.mjs";
5
+ import { t as apiClient } from "./api_C1VC3OiH.mjs";
6
6
  import { createComponent, escape, ssr, ssrAttribute, ssrHydrationKey } from "solid-js/web";
7
7
  import { For, Show, createSignal, onMount } from "solid-js";
8
8
  //#region src/components/apps/settings/PostTypesManager.tsx
@@ -1,8 +1,8 @@
1
1
  import { r as __exportAll } from "./rolldown-runtime_BMI-E3GI.mjs";
2
2
  import { d as maybeRenderHead, i as renderComponent, u as renderTemplate } from "./server_CnzC2Y0K.mjs";
3
3
  import { t as createComponent$1 } from "./compiler_CYjwXhLT.mjs";
4
- import { t as $$DashboardLayout } from "./DashboardLayout_CP5ag-_P.mjs";
5
- import { t as apiClient } from "./api_Cy8sbUHf.mjs";
4
+ import { t as $$DashboardLayout } from "./DashboardLayout_h9iqOf7E.mjs";
5
+ import { t as apiClient } from "./api_C1VC3OiH.mjs";
6
6
  import { createComponent, escape, ssr, ssrAttribute, ssrHydrationKey, ssrStyleProperty } from "solid-js/web";
7
7
  import { For, Show, createSignal, onMount } from "solid-js";
8
8
  //#region src/components/apps/settings/TaxonomiesManager.tsx
@@ -0,0 +1,31 @@
1
+ import { r as __exportAll } from "./rolldown-runtime_BMI-E3GI.mjs";
2
+ import { d as maybeRenderHead, i as renderComponent, u as renderTemplate } from "./server_CnzC2Y0K.mjs";
3
+ import { t as createComponent } from "./compiler_CYjwXhLT.mjs";
4
+ import { t as $$DashboardLayout } from "./DashboardLayout_h9iqOf7E.mjs";
5
+ import { t as MediaLibrary } from "./MediaLibrary_Ctc5H6Od.mjs";
6
+ //#region src/pages/media/upload.astro
7
+ var upload_exports = /* @__PURE__ */ __exportAll({
8
+ default: () => $$Upload,
9
+ file: () => $$file,
10
+ url: () => $$url
11
+ });
12
+ var $$Upload = createComponent(($$result, $$props, $$slots) => {
13
+ return renderTemplate`${renderComponent($$result, "DashboardLayout", $$DashboardLayout, {
14
+ "title": "Upload de mídia",
15
+ "data-astro-cid-r5wa6qne": true
16
+ }, { "default": ($$result) => renderTemplate`${maybeRenderHead($$result)}<div class="media-page" data-astro-cid-r5wa6qne><div class="page-header" data-astro-cid-r5wa6qne><h2 data-astro-cid-r5wa6qne>Enviar arquivos</h2><p data-astro-cid-r5wa6qne>Arraste os arquivos para a zona abaixo ou clique em <strong data-astro-cid-r5wa6qne>Selecionar arquivos</strong>.</p></div>${renderComponent($$result, "MediaLibrary", MediaLibrary, {
17
+ "client:load": true,
18
+ "focusUpload": true,
19
+ "data-astro-cid-r5wa6qne": true,
20
+ "client:component-hydration": "load",
21
+ "client:component-path": "/home/runner/work/cms/cms/apps/admin/src/components/media/MediaLibrary.tsx",
22
+ "client:component-export": "MediaLibrary"
23
+ })}</div>` })}`;
24
+ }, "/home/runner/work/cms/cms/apps/admin/src/pages/media/upload.astro", void 0);
25
+ var $$file = "/home/runner/work/cms/cms/apps/admin/src/pages/media/upload.astro";
26
+ var $$url = "/media/upload";
27
+ //#endregion
28
+ //#region \0virtual:astro:page:src/pages/media/upload@_@astro
29
+ var page = () => upload_exports;
30
+ //#endregion
31
+ export { page };