@oktis-works/admin 0.3.5 → 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (95) hide show
  1. package/dist/client/_astro/ActivityWidget.B1PK1jNM.js +16 -0
  2. package/dist/client/_astro/AdminBar.DGqkNINI.js +234 -0
  3. package/dist/client/_astro/AtGlanceWidget.BCaHYX1f.js +43 -0
  4. package/dist/client/_astro/BaseLayout.B2MfKf6B.css +1 -0
  5. package/dist/client/_astro/ContentEditor.BG7DWach.js +1 -0
  6. package/dist/client/_astro/ContentList.CfGc6HN5.js +1 -0
  7. package/dist/client/_astro/DashboardHome._7yIrBzf.js +1 -0
  8. package/dist/client/_astro/DashboardLayout.DrKf2Klk.css +1 -0
  9. package/dist/client/_astro/DashboardLayout.astro_astro_type_script_index_0_lang.BrC4PbPa.js +1 -0
  10. package/dist/client/_astro/Footer.DGAIrEhm.js +74 -0
  11. package/dist/client/_astro/GeneralSettings.BwnPXbvc.js +1 -0
  12. package/dist/client/_astro/HelpTabs.Ddud8gs3.js +103 -0
  13. package/dist/client/_astro/LanguageSelector.Dx6zaHYm.js +14 -0
  14. package/dist/client/_astro/MediaLibrary.BXUJ5yFA.js +1 -0
  15. package/dist/client/_astro/PostTypesManager.CA2yTVB_.js +1 -0
  16. package/dist/client/_astro/QuickDraftWidget.DLJxVRna.js +17 -0
  17. package/dist/client/_astro/ScreenOptions.Dgiw-9ow.js +70 -0
  18. package/dist/client/_astro/TaxonomiesManager.D3HNo_oM.js +1 -0
  19. package/dist/client/_astro/UserCreateForm.CTv1Gd43.js +1 -0
  20. package/dist/client/_astro/UsersManager.DPpSVGNe.js +1 -0
  21. package/dist/client/_astro/api.DTNuyqvx.js +1 -0
  22. package/dist/client/_astro/ar.CzsjUutD.js +1 -0
  23. package/dist/client/_astro/{client.BY0Z100j.js → client.C7p516_9.js} +1 -1
  24. package/dist/client/_astro/en.DmN7xy_a.js +1 -0
  25. package/dist/client/_astro/es-ES.p2TLEMlZ.js +1 -0
  26. package/dist/client/_astro/{extensions.JQggUqT5.js → extensions.DfxrGzbo.js} +1 -1
  27. package/dist/client/_astro/he.BnYHiYpn.js +1 -0
  28. package/dist/client/_astro/i18n.CLOpd2JA.js +1 -0
  29. package/dist/client/_astro/it.WrWKBEAD.js +1 -0
  30. package/dist/client/_astro/ja.DxnfhIdt.js +1 -0
  31. package/dist/client/_astro/login.astro_astro_type_script_index_0_lang.CLM9X6sQ.js +1 -0
  32. package/dist/client/_astro/pl.jUj-RfZS.js +1 -0
  33. package/dist/client/_astro/pt-BR.DtNwEO0i.js +1 -0
  34. package/dist/client/_astro/ru.KFSfdjWn.js +1 -0
  35. package/dist/client/_astro/{src.DX_xrAwd.js → src.Cgonpfb5.js} +1 -1
  36. package/dist/client/_astro/sw.3jlAOLOv.js +1 -0
  37. package/dist/client/_astro/tr.tnLMnGPg.js +1 -0
  38. package/dist/client/_astro/uk.VquHY_xc.js +1 -0
  39. package/dist/client/_astro/version.CHrZHEqP.js +1 -0
  40. package/dist/client/_astro/{web.D_vCtCLj.js → web.D1H9RxZL.js} +1 -1
  41. package/dist/client/_astro/yo.Cr8hCb5u.js +1 -0
  42. package/dist/client/_astro/zh-CN.E32QqP4v.js +1 -0
  43. package/dist/server/chunks/{BaseLayout_CcUFilW5.mjs → BaseLayout_GUKuUGNt.mjs} +4 -1
  44. package/dist/server/chunks/{ContentEditor_DtKBw5Nv.mjs → ContentEditor_qfM1Y93B.mjs} +38 -24
  45. package/dist/server/chunks/DashboardLayout_9JzlKxjl.mjs +2084 -0
  46. package/dist/server/chunks/{MediaLibrary_BDyBahZ3.mjs → MediaLibrary_DJu_GZnT.mjs} +90 -65
  47. package/dist/server/chunks/{_slug__DNJwUFYD.mjs → _slug__oxlJqDhb.mjs} +1 -1
  48. package/dist/server/chunks/ar_DBjdWIJ0.mjs +408 -0
  49. package/dist/server/chunks/{edit_CSA-bTD0.mjs → edit_rJCgSfQh.mjs} +8 -4
  50. package/dist/server/chunks/en_C750mYKk.mjs +408 -0
  51. package/dist/server/chunks/es-ES_TJ4oK1yi.mjs +408 -0
  52. package/dist/server/chunks/{general_D8esOFBG.mjs → general_BCC572_R.mjs} +50 -39
  53. package/dist/server/chunks/he_TWsuTphz.mjs +408 -0
  54. package/dist/server/chunks/{index__EF7aYFm.mjs → index_CiOry_IG.mjs} +91 -45
  55. package/dist/server/chunks/{index_CSD_Oyb4.mjs → index_DlyhPKko.mjs} +61 -38
  56. package/dist/server/chunks/index_Dp2KvZyM.mjs +152 -0
  57. package/dist/server/chunks/{index_BzJtUv3l.mjs → index_DpZYlUOx.mjs} +9 -5
  58. package/dist/server/chunks/index_Dz0AB_Lx.mjs +27 -0
  59. package/dist/server/chunks/it_CEVFVWh1.mjs +408 -0
  60. package/dist/server/chunks/ja_CqDirMqf.mjs +408 -0
  61. package/dist/server/chunks/login_B7FSWUaM.mjs +24 -0
  62. package/dist/server/chunks/{new_C7iXK0wp.mjs → new_DVIppZvY.mjs} +8 -4
  63. package/dist/server/chunks/{new_Dg7GlHuV.mjs → new_D__e8Xsm.mjs} +30 -14
  64. package/dist/server/chunks/pl_ChIKxfZG.mjs +408 -0
  65. package/dist/server/chunks/post-types_I0Pnfbt5.mjs +158 -0
  66. package/dist/server/chunks/pt-BR_4d4jZWL0.mjs +408 -0
  67. package/dist/server/chunks/ru_CIc6O5Q7.mjs +408 -0
  68. package/dist/server/chunks/sw_Bs3iYVDM.mjs +408 -0
  69. package/dist/server/chunks/{taxonomies_BJehVfgw.mjs → taxonomies_D0bKuKFw.mjs} +31 -14
  70. package/dist/server/chunks/tr_C7JbXuoQ.mjs +408 -0
  71. package/dist/server/chunks/uk_Dibs8Wkc.mjs +408 -0
  72. package/dist/server/chunks/{upload_CeK7uSwz.mjs → upload_ByIgPLsS.mjs} +9 -5
  73. package/dist/server/chunks/yo_B6MPvz_U.mjs +408 -0
  74. package/dist/server/chunks/zh-CN_G1Dc2b28.mjs +408 -0
  75. package/dist/server/entry.mjs +15 -15
  76. package/package.json +4 -4
  77. package/dist/client/_astro/BaseLayout.BPkaFsmK.css +0 -1
  78. package/dist/client/_astro/ContentEditor.Buc5ptK0.js +0 -1
  79. package/dist/client/_astro/ContentList.Bo_ok2oa.js +0 -1
  80. package/dist/client/_astro/DashboardHome.DKuoH-SO.js +0 -1
  81. package/dist/client/_astro/DashboardLayout.astro_astro_type_script_index_0_lang.DfB7XHS-.js +0 -1
  82. package/dist/client/_astro/GeneralSettings.BNzHpRY6.js +0 -1
  83. package/dist/client/_astro/MediaLibrary.Dn4DRbZb.js +0 -1
  84. package/dist/client/_astro/PostTypesManager.6GQ4vWY1.js +0 -1
  85. package/dist/client/_astro/TaxonomiesManager.B25xOjSO.js +0 -1
  86. package/dist/client/_astro/UserCreateForm.DtBifGTo.js +0 -1
  87. package/dist/client/_astro/UsersManager.-5jU3GxA.js +0 -1
  88. package/dist/client/_astro/api.BEC1o0dT.js +0 -1
  89. package/dist/client/_astro/login.astro_astro_type_script_index_0_lang.Dz6HvEV3.js +0 -1
  90. package/dist/server/chunks/DashboardLayout_Bpur473M.mjs +0 -442
  91. package/dist/server/chunks/api_i8T-MI6L.mjs +0 -278
  92. package/dist/server/chunks/index_BCUHGT54.mjs +0 -133
  93. package/dist/server/chunks/index_X49R9glL.mjs +0 -23
  94. package/dist/server/chunks/login_C04LKHw3.mjs +0 -23
  95. package/dist/server/chunks/post-types_CJt6sMSh.mjs +0 -137
@@ -1,8 +1,7 @@
1
1
  import { r as __exportAll } from "./rolldown-runtime_BMI-E3GI.mjs";
2
- import { d as maybeRenderHead, i as renderComponent, u as renderTemplate } from "./server_B5N27szj.mjs";
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 { a as For2, c as Select, f as createSignal, l as Show2, n as Badge, o as Input, p as onMount, r as Button, s as Pagination, t as $$DashboardLayout } from "./DashboardLayout_Bpur473M.mjs";
5
- import { t as apiClient } from "./api_i8T-MI6L.mjs";
4
+ import { a as Button, c as Input, d as Show2, h as onMount, i as Badge, l as Pagination, m as createSignal, n as useTranslation, r as apiClient, s as For2, t as $$DashboardLayout, u as Select } from "./DashboardLayout_9JzlKxjl.mjs";
6
5
  import { createComponent, escape, ssr, ssrAttribute, ssrHydrationKey } from "solid-js/web";
7
6
  //#region src/components/apps/users/UsersManager.tsx
8
7
  var _tmpl$ = [
@@ -17,7 +16,12 @@ var _tmpl$2 = [
17
16
  ];
18
17
  var _tmpl$3 = [
19
18
  "<table",
20
- " class=\"users-table\"><thead><tr><th>Nome</th><th>Email</th><th>Papel</th><th>Status</th><th>Último acesso</th><th></th></tr></thead><tbody>",
19
+ " class=\"users-table\"><thead><tr><th>",
20
+ "</th><th>",
21
+ "</th><th>",
22
+ "</th><th>",
23
+ "</th><th>",
24
+ "</th><th></th></tr></thead><tbody>",
21
25
  "</tbody></table>"
22
26
  ];
23
27
  var _tmpl$4 = [
@@ -26,13 +30,18 @@ var _tmpl$4 = [
26
30
  "<!--/--><!--$-->",
27
31
  "<!--/--><div class=\"toolbar\"><!--$-->",
28
32
  "<!--/--><!--$-->",
29
- "<!--/--><a class=\"btn btn-primary\" href=\"/users/new\">+ Novo usuário</a><!--$-->",
33
+ "<!--/--><a class=\"btn btn-primary\" href=\"/users/new\">",
34
+ "</a><!--$-->",
30
35
  "<!--/--></div><!--$-->",
31
36
  "<!--/--><!--$-->",
32
37
  "<!--/--><!--$-->",
33
38
  "<!--/--></div>"
34
39
  ];
35
- var _tmpl$5 = ["<p", " class=\"muted\">Nenhum usuário encontrado.</p>"];
40
+ var _tmpl$5 = [
41
+ "<p",
42
+ " class=\"muted\">",
43
+ "</p>"
44
+ ];
36
45
  var _tmpl$6 = [
37
46
  "<tr",
38
47
  " class=\"",
@@ -46,18 +55,29 @@ var _tmpl$6 = [
46
55
  "<!--/--><!--$-->",
47
56
  "<!--/--></td></tr>"
48
57
  ];
49
- var _tmpl$7 = ["<span", " class=\"muted\">sem papel</span>"];
58
+ var _tmpl$7 = [
59
+ "<span",
60
+ " class=\"muted\">",
61
+ "</span>"
62
+ ];
50
63
  var _tmpl$8 = [
51
64
  "<div",
52
- " class=\"card user-details\"><h3>Gerenciar usuário</h3><div class=\"form-grid\"><label>Nome<input class=\"input\"",
53
- "></label><label>Email<input class=\"input\" type=\"email\"",
54
- "></label><label>Status<select class=\"input\"",
55
- "><option value=\"ACTIVE\">Ativo</option><option value=\"INACTIVE\">Inativo</option></select></label><label>Papel<select class=\"input\"",
65
+ " class=\"card user-details\"><h3>",
66
+ "</h3><div class=\"form-grid\"><label><!--$-->",
67
+ "<!--/--><input class=\"input\"",
68
+ "></label><label><!--$-->",
69
+ "<!--/--><input class=\"input\" type=\"email\"",
70
+ "></label><label><!--$-->",
71
+ "<!--/--><select class=\"input\"",
72
+ "><option value=\"ACTIVE\">",
73
+ "</option><option value=\"INACTIVE\">",
74
+ "</option></select></label><label><!--$-->",
75
+ "<!--/--><select class=\"input\"",
56
76
  "",
57
- "><option value>— sem papel —</option><!--$-->",
58
- "<!--/--></select></label></div><p class=\"muted\">Criado em <!--$-->",
59
- "<!--/--> · último acesso <!--$-->",
60
- "<!--/--></p><div class=\"media-details__actions\"><!--$-->",
77
+ "><option value>",
78
+ "</option><!--$-->",
79
+ "<!--/--></select></label></div><p class=\"muted\">",
80
+ "</p><div class=\"media-details__actions\"><!--$-->",
61
81
  "<!--/--><!--$-->",
62
82
  "<!--/--><!--$-->",
63
83
  "<!--/--></div></div>"
@@ -74,6 +94,7 @@ function formatDate(value) {
74
94
  return Number.isNaN(date.getTime()) ? "—" : date.toLocaleString("pt-BR");
75
95
  }
76
96
  function UsersManager() {
97
+ const { t } = useTranslation();
77
98
  const [users, setUsers] = createSignal([]);
78
99
  const [roles, setRoles] = createSignal([]);
79
100
  const [total, setTotal] = createSignal(0);
@@ -110,17 +131,17 @@ function UsersManager() {
110
131
  await load();
111
132
  };
112
133
  const resetPassword = async (user) => {
113
- const password = prompt(`Nova senha para ${user.email} (mínimo 8 caracteres):`);
134
+ const password = prompt(t("users.detail.passwordPrompt", { email: user.email }));
114
135
  if (!password) return;
115
136
  if (password.length < 8) {
116
- setError("A senha precisa de pelo menos 8 caracteres");
137
+ setError(t("users.detail.passwordError"));
117
138
  return;
118
139
  }
119
140
  setBusy(true);
120
141
  setError("");
121
142
  try {
122
143
  await apiClient.setUserPassword(user.id, password);
123
- setInfo(`Senha de ${user.name} alterada ✓`);
144
+ setInfo(t("users.detail.toasts.passwordChanged", { name: user.name }));
124
145
  } catch (err) {
125
146
  setError(err instanceof Error ? err.message : String(err));
126
147
  } finally {
@@ -136,7 +157,7 @@ function UsersManager() {
136
157
  email: user.email,
137
158
  status: user.status
138
159
  });
139
- setInfo(`Usuário ${user.name} salvo ✓`);
160
+ setInfo(t("users.detail.toasts.saved", { name: user.name }));
140
161
  setSelected(null);
141
162
  await load();
142
163
  } catch (err) {
@@ -146,13 +167,13 @@ function UsersManager() {
146
167
  }
147
168
  };
148
169
  const removeUser = async (user) => {
149
- if (!confirm(`Excluir o usuário ${user.email}?`)) return;
170
+ if (!confirm(t("users.detail.confirmDelete", { email: user.email }))) return;
150
171
  setBusy(true);
151
172
  setError("");
152
173
  try {
153
174
  await apiClient.deleteUser(user.id);
154
175
  if (selected()?.id === user.id) setSelected(null);
155
- setInfo(`Usuário ${user.name} excluído ✓`);
176
+ setInfo(t("users.detail.toasts.deleted", { name: user.name }));
156
177
  await load();
157
178
  } catch (err) {
158
179
  setError(err instanceof Error ? err.message : String(err));
@@ -177,7 +198,9 @@ function UsersManager() {
177
198
  }
178
199
  })), escape(createComponent(Input, {
179
200
  name: "user-search",
180
- placeholder: "Buscar por nome ou email…",
201
+ get placeholder() {
202
+ return t("users.toolbar.search");
203
+ },
181
204
  get value() {
182
205
  return search();
183
206
  },
@@ -187,34 +210,40 @@ function UsersManager() {
187
210
  }
188
211
  })), escape(createComponent(Select, {
189
212
  name: "user-status",
190
- placeholder: "Todos os status",
213
+ get placeholder() {
214
+ return t("users.toolbar.allStatus");
215
+ },
191
216
  get value() {
192
217
  return status();
193
218
  },
194
- options: [{
195
- value: "ACTIVE",
196
- label: "Ativos"
197
- }, {
198
- value: "INACTIVE",
199
- label: "Inativos"
200
- }],
219
+ get options() {
220
+ return [{
221
+ value: "ACTIVE",
222
+ label: t("users.toolbar.active")
223
+ }, {
224
+ value: "INACTIVE",
225
+ label: t("users.toolbar.inactive")
226
+ }];
227
+ },
201
228
  onChange: (value) => {
202
229
  setStatus(value);
203
230
  searchNow();
204
231
  }
205
- })), escape(createComponent(Button, {
232
+ })), escape(t("users.toolbar.newBtn")), escape(createComponent(Button, {
206
233
  variant: "secondary",
207
234
  onClick: () => void searchNow(),
208
- children: "Buscar"
235
+ get children() {
236
+ return t("users.toolbar.searchBtn");
237
+ }
209
238
  })), escape(createComponent(Show2, {
210
239
  get when() {
211
240
  return users().length > 0;
212
241
  },
213
242
  get fallback() {
214
- return ssr(_tmpl$5, ssrHydrationKey());
243
+ return ssr(_tmpl$5, ssrHydrationKey(), escape(t("users.empty")));
215
244
  },
216
245
  get children() {
217
- return ssr(_tmpl$3, ssrHydrationKey(), escape(createComponent(For2, {
246
+ return ssr(_tmpl$3, ssrHydrationKey(), escape(t("users.table.name")), escape(t("users.table.email")), escape(t("users.table.role")), escape(t("users.table.status")), escape(t("users.table.lastAccess")), escape(createComponent(For2, {
218
247
  get each() {
219
248
  return users();
220
249
  },
@@ -223,23 +252,27 @@ function UsersManager() {
223
252
  return user.roles.length > 0;
224
253
  },
225
254
  get fallback() {
226
- return ssr(_tmpl$7, ssrHydrationKey());
255
+ return ssr(_tmpl$7, ssrHydrationKey(), escape(t("users.noRole")));
227
256
  },
228
257
  get children() {
229
258
  return createComponent(Badge, { get children() {
230
259
  return user.roles.join(", ");
231
260
  } });
232
261
  }
233
- })), `status-dot ${user.status === "ACTIVE" ? "status-dot--active" : ""}`, escape(user.status), escape(formatDate(user.last_login_at)), escape(createComponent(Button, {
262
+ })), `status-dot ${user.status === "ACTIVE" ? "status-dot--active" : ""}`, escape(t("common.status." + user.status.toLowerCase())), escape(formatDate(user.last_login_at)), escape(createComponent(Button, {
234
263
  variant: "secondary",
235
264
  size: "sm",
236
265
  onClick: () => setSelected(user),
237
- children: "Gerenciar"
266
+ get children() {
267
+ return t("users.table.actions.manage");
268
+ }
238
269
  })), escape(createComponent(Button, {
239
270
  variant: "danger",
240
271
  size: "sm",
241
272
  onClick: () => void removeUser(user),
242
- children: "Excluir"
273
+ get children() {
274
+ return t("users.table.actions.delete");
275
+ }
243
276
  })))
244
277
  })));
245
278
  }
@@ -259,12 +292,15 @@ function UsersManager() {
259
292
  get when() {
260
293
  return selected();
261
294
  },
262
- children: (user) => ssr(_tmpl$8, ssrHydrationKey(), ssrAttribute("value", escape(user().name, true), false), ssrAttribute("value", escape(user().email, true), false), ssrAttribute("value", escape(user().status, true), false), ssrAttribute("value", escape(currentRole(user())?.id ?? "", true), false), ssrAttribute("disabled", busy(), true), escape(createComponent(For2, {
295
+ children: (user) => ssr(_tmpl$8, ssrHydrationKey(), escape(t("users.detail.title")), escape(t("users.detail.fields.name")), ssrAttribute("value", escape(user().name, true), false), escape(t("users.detail.fields.email")), ssrAttribute("value", escape(user().email, true), false), escape(t("users.detail.fields.status")), ssrAttribute("value", escape(user().status, true), false), escape(t("users.detail.statusOptions.active")), escape(t("users.detail.statusOptions.inactive")), escape(t("users.detail.fields.role")), ssrAttribute("value", escape(currentRole(user())?.id ?? "", true), false), ssrAttribute("disabled", busy(), true), escape(t("users.detail.rolePlaceholder")), escape(createComponent(For2, {
263
296
  get each() {
264
297
  return roles();
265
298
  },
266
299
  children: (role) => ssr(_tmpl$9, ssrHydrationKey() + ssrAttribute("value", escape(role.id, true), false), escape(role.name), escape(role.slug))
267
- })), escape(formatDate(user().created_at)), escape(formatDate(user().last_login_at)), escape(createComponent(Button, {
300
+ })), escape(t("users.detail.meta", {
301
+ created: formatDate(user().created_at),
302
+ lastAccess: formatDate(user().last_login_at)
303
+ })), escape(createComponent(Button, {
268
304
  variant: "primary",
269
305
  get disabled() {
270
306
  return busy();
@@ -273,18 +309,24 @@ function UsersManager() {
273
309
  return busy();
274
310
  },
275
311
  onClick: () => void saveUser(user()),
276
- children: "Salvar"
312
+ get children() {
313
+ return t("users.detail.actions.save");
314
+ }
277
315
  })), escape(createComponent(Button, {
278
316
  variant: "secondary",
279
317
  get disabled() {
280
318
  return busy();
281
319
  },
282
320
  onClick: () => void resetPassword(user()),
283
- children: "Redefinir senha"
321
+ get children() {
322
+ return t("users.detail.actions.resetPassword");
323
+ }
284
324
  })), escape(createComponent(Button, {
285
325
  variant: "secondary",
286
326
  onClick: () => setSelected(null),
287
- children: "Fechar"
327
+ get children() {
328
+ return t("users.detail.actions.close");
329
+ }
288
330
  })))
289
331
  })));
290
332
  }
@@ -295,11 +337,15 @@ var users_exports = /* @__PURE__ */ __exportAll({
295
337
  file: () => $$file,
296
338
  url: () => $$url
297
339
  });
340
+ createAstro("https://astro.build");
298
341
  var $$Index = createComponent$1(($$result, $$props, $$slots) => {
342
+ const Astro = $$result.createAstro($$props, $$slots);
343
+ Astro.self = $$Index;
344
+ const { t } = Astro.locals;
299
345
  return renderTemplate`${renderComponent($$result, "DashboardLayout", $$DashboardLayout, {
300
- "title": "Users",
346
+ "title": t("users.title"),
301
347
  "data-astro-cid-ao6unroh": true
302
- }, { "default": ($$result) => renderTemplate`${maybeRenderHead($$result)}<div class="users-page" data-astro-cid-ao6unroh><div class="page-header" data-astro-cid-ao6unroh><h2 data-astro-cid-ao6unroh>Usuários</h2><p data-astro-cid-ao6unroh>Gerencie contas, papéis (roles) e acessos do projeto.</p></div>${renderComponent($$result, "UsersManager", UsersManager, {
348
+ }, { "default": ($$result) => renderTemplate`${maybeRenderHead($$result)}<div class="users-page" data-astro-cid-ao6unroh><div class="page-header" data-astro-cid-ao6unroh><h2 data-astro-cid-ao6unroh>${t("users.title")}</h2><p data-astro-cid-ao6unroh>${t("users.description")}</p></div>${renderComponent($$result, "UsersManager", UsersManager, {
303
349
  "client:load": true,
304
350
  "data-astro-cid-ao6unroh": true,
305
351
  "client:component-hydration": "load",
@@ -1,9 +1,9 @@
1
1
  import { r as __exportAll } from "./rolldown-runtime_BMI-E3GI.mjs";
2
- import { d as maybeRenderHead, i as renderComponent, u as renderTemplate } from "./server_B5N27szj.mjs";
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 { 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_Bpur473M.mjs";
5
- import { t as apiClient } from "./api_i8T-MI6L.mjs";
4
+ import { a as Button, c as Input, f as Table, i as Badge, l as Pagination, n as useTranslation, o as Card, r as apiClient, t as $$DashboardLayout, u as Select } from "./DashboardLayout_9JzlKxjl.mjs";
6
5
  import { createComponent, escape, ssr, ssrHydrationKey } from "solid-js/web";
6
+ import { Show, createSignal, onMount } from "solid-js";
7
7
  //#region src/components/content/ContentList.tsx
8
8
  var _tmpl$ = [
9
9
  "<span",
@@ -13,7 +13,8 @@ var _tmpl$ = [
13
13
  var _tmpl$2 = [
14
14
  "<div",
15
15
  " class=\"users-table__actions\"><a class=\"btn btn-secondary btn-sm\" href=\"",
16
- "\">Editar</a><!--$-->",
16
+ "\">",
17
+ "</a><!--$-->",
17
18
  "<!--/--><!--$-->",
18
19
  "<!--/--></div>"
19
20
  ];
@@ -34,7 +35,8 @@ var _tmpl$5 = [
34
35
  "<!--/--><div class=\"toolbar\"><!--$-->",
35
36
  "<!--/--><!--$-->",
36
37
  "<!--/--><!--$-->",
37
- "<!--/--><a class=\"btn btn-primary\" href=\"/content/new\">+ Novo conteúdo</a><!--$-->",
38
+ "<!--/--><a class=\"btn btn-primary\" href=\"/content/new\">",
39
+ "</a><!--$-->",
38
40
  "<!--/--></div><!--$-->",
39
41
  "<!--/--></div>"
40
42
  ];
@@ -48,6 +50,7 @@ function formatDate(row) {
48
50
  return Number.isNaN(date.getTime()) ? "—" : date.toLocaleString("pt-BR");
49
51
  }
50
52
  function ContentList() {
53
+ const { t } = useTranslation();
51
54
  const [items, setItems] = createSignal([]);
52
55
  const [types, setTypes] = createSignal([]);
53
56
  const [total, setTotal] = createSignal(0);
@@ -91,7 +94,7 @@ function ContentList() {
91
94
  setInfo("");
92
95
  try {
93
96
  await apiClient.publishToggle(row.id, isPublished);
94
- setInfo(isPublished ? "Conteúdo despublicado ✓" : "Conteúdo publicado ✓");
97
+ setInfo(t(isPublished ? "content.list.toasts.unpublished" : "content.list.toasts.published"));
95
98
  await load();
96
99
  } catch (err) {
97
100
  setError(err instanceof Error ? err.message : String(err));
@@ -101,7 +104,7 @@ function ContentList() {
101
104
  };
102
105
  const remove = async (row) => {
103
106
  const title = String(raw(row)["title"] ?? row.id);
104
- if (!confirm(`Excluir "${title}"?`)) return;
107
+ if (!confirm(t("content.list.confirmDelete", { title }))) return;
105
108
  try {
106
109
  await apiClient.deleteContent(row.id);
107
110
  await load();
@@ -112,15 +115,15 @@ function ContentList() {
112
115
  const columns = [
113
116
  {
114
117
  key: "title",
115
- label: "Título"
118
+ label: t("content.list.columns.title")
116
119
  },
117
120
  {
118
121
  key: "type",
119
- label: "Tipo"
122
+ label: t("content.list.columns.type")
120
123
  },
121
124
  {
122
125
  key: "status",
123
- label: "Status",
126
+ label: t("content.list.columns.status"),
124
127
  render: (_value, row) => {
125
128
  const statusValue = String(row["status"] ?? "");
126
129
  return createComponent(Badge, {
@@ -131,7 +134,7 @@ function ContentList() {
131
134
  },
132
135
  {
133
136
  key: "updated_at",
134
- label: "Atualizado",
137
+ label: t("content.list.columns.updated"),
135
138
  render: (_value, row) => ssr(_tmpl$, ssrHydrationKey(), escape(formatDate(row)))
136
139
  },
137
140
  {
@@ -140,31 +143,35 @@ function ContentList() {
140
143
  render: (_value, row) => {
141
144
  const content = row;
142
145
  const isPublished = raw(content)["status"] === "PUBLISHED";
143
- return ssr(_tmpl$2, ssrHydrationKey(), `/content/edit?id=${escape(encodeURIComponent(content.id), true)}`, escape(createComponent(Button, {
146
+ return ssr(_tmpl$2, ssrHydrationKey(), `/content/edit?id=${escape(encodeURIComponent(content.id), true)}`, escape(t("content.list.actions.edit")), escape(createComponent(Button, {
144
147
  variant: isPublished ? "secondary" : "primary",
145
148
  size: "sm",
146
149
  get loading() {
147
150
  return busyId() === content.id;
148
151
  },
149
152
  onClick: () => void togglePublish(content),
150
- children: isPublished ? "Despublicar" : "Publicar"
153
+ get children() {
154
+ return isPublished ? t("content.list.actions.unpublish") : t("content.list.actions.publish");
155
+ }
151
156
  })), escape(createComponent(Button, {
152
157
  variant: "danger",
153
158
  size: "sm",
154
159
  onClick: () => void remove(content),
155
- children: "Excluir"
160
+ get children() {
161
+ return t("content.list.actions.delete");
162
+ }
156
163
  })));
157
164
  }
158
165
  }
159
166
  ];
160
- return ssr(_tmpl$5, ssrHydrationKey(), escape(createComponent(Show2, {
167
+ return ssr(_tmpl$5, ssrHydrationKey(), escape(createComponent(Show, {
161
168
  get when() {
162
169
  return error();
163
170
  },
164
171
  get children() {
165
172
  return ssr(_tmpl$3, ssrHydrationKey(), escape(error()));
166
173
  }
167
- })), escape(createComponent(Show2, {
174
+ })), escape(createComponent(Show, {
168
175
  get when() {
169
176
  return info();
170
177
  },
@@ -173,7 +180,9 @@ function ContentList() {
173
180
  }
174
181
  })), escape(createComponent(Input, {
175
182
  name: "search",
176
- placeholder: "Buscar conteúdo…",
183
+ get placeholder() {
184
+ return t("content.list.filters.search");
185
+ },
177
186
  get value() {
178
187
  return search();
179
188
  },
@@ -183,7 +192,9 @@ function ContentList() {
183
192
  }
184
193
  })), escape(createComponent(Select, {
185
194
  name: "type",
186
- placeholder: "Todos os tipos",
195
+ get placeholder() {
196
+ return t("content.list.filters.allTypes");
197
+ },
187
198
  get value() {
188
199
  return type();
189
200
  },
@@ -199,39 +210,47 @@ function ContentList() {
199
210
  }
200
211
  })), escape(createComponent(Select, {
201
212
  name: "status",
202
- placeholder: "Todos os status",
213
+ get placeholder() {
214
+ return t("content.list.filters.allStatus");
215
+ },
203
216
  get value() {
204
217
  return status();
205
218
  },
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
- ],
219
+ get options() {
220
+ return [
221
+ {
222
+ value: "DRAFT",
223
+ label: t("content.list.statuses.draft")
224
+ },
225
+ {
226
+ value: "PUBLISHED",
227
+ label: t("content.list.statuses.published")
228
+ },
229
+ {
230
+ value: "ARCHIVED",
231
+ label: t("content.list.statuses.archived")
232
+ }
233
+ ];
234
+ },
220
235
  onChange: (value) => {
221
236
  setStatus(value);
222
237
  searchNow();
223
238
  }
224
- })), escape(createComponent(Button, {
239
+ })), escape(t("content.list.buttons.new")), escape(createComponent(Button, {
225
240
  variant: "secondary",
226
241
  onClick: () => void searchNow(),
227
- children: "Buscar"
242
+ get children() {
243
+ return t("content.list.buttons.search");
244
+ }
228
245
  })), escape(createComponent(Card, { get children() {
229
246
  return [createComponent(Table, {
230
247
  columns,
231
248
  get data() {
232
249
  return items();
233
250
  },
234
- emptyMessage: "Nenhum conteúdo encontrado."
251
+ get emptyMessage() {
252
+ return t("content.list.empty");
253
+ }
235
254
  }), createComponent(Pagination, {
236
255
  get page() {
237
256
  return page();
@@ -254,11 +273,15 @@ var content_exports = /* @__PURE__ */ __exportAll({
254
273
  file: () => $$file,
255
274
  url: () => $$url
256
275
  });
276
+ createAstro("https://astro.build");
257
277
  var $$Index = createComponent$1(($$result, $$props, $$slots) => {
278
+ const Astro = $$result.createAstro($$props, $$slots);
279
+ Astro.self = $$Index;
280
+ const { t } = Astro.locals;
258
281
  return renderTemplate`${renderComponent($$result, "DashboardLayout", $$DashboardLayout, {
259
- "title": "Content",
282
+ "title": t("content.list.title"),
260
283
  "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, {
284
+ }, { "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>${t("content.list.title")}</h2><p data-astro-cid-qhu5jad5>${t("content.list.description")}</p></div>${renderComponent($$result, "ContentList", ContentList, {
262
285
  "client:load": true,
263
286
  "data-astro-cid-qhu5jad5": true,
264
287
  "client:component-hydration": "load",