@oktis-works/admin 0.1.7 → 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 (49) hide show
  1. package/dist/client/_astro/ContentEditor.C9TSxsGW.js +1 -0
  2. package/dist/client/_astro/ContentList.e1datweV.js +1 -0
  3. package/dist/client/_astro/DashboardHome.CqnldWlv.js +1 -0
  4. package/dist/client/_astro/{DashboardLayout.astro_astro_type_script_index_0_lang.B663y3aY.js → DashboardLayout.astro_astro_type_script_index_0_lang.sNve10RH.js} +1 -1
  5. package/dist/client/_astro/GeneralSettings.D-ALN9_r.js +1 -0
  6. package/dist/client/_astro/MediaLibrary.NQ1lF95i.js +1 -0
  7. package/dist/client/_astro/PostTypesManager.CdMx_Nxn.js +1 -0
  8. package/dist/client/_astro/TaxonomiesManager.BU7A02Ay.js +1 -0
  9. package/dist/client/_astro/UserCreateForm.BvDn97aZ.js +1 -0
  10. package/dist/client/_astro/UsersManager.CFBCKO-t.js +1 -0
  11. package/dist/client/_astro/api.DCaprPaL.js +1 -0
  12. package/dist/client/_astro/client.BY0Z100j.js +1 -0
  13. package/dist/client/_astro/dist.B3u752Tx.js +1 -0
  14. package/dist/client/_astro/extensions.PfWqwyUU.js +1 -0
  15. package/dist/client/_astro/{login.astro_astro_type_script_index_0_lang.ozrnjgkA.js → login.astro_astro_type_script_index_0_lang.BZaUVRCc.js} +1 -1
  16. package/dist/client/_astro/{web.BRlgYXBp.js → web.D_vCtCLj.js} +1 -1
  17. package/dist/server/chunks/{ContentEditor_DwBpNq-K.mjs → ContentEditor_CrO12IkK.mjs} +516 -20
  18. package/dist/server/chunks/DashboardLayout_h9iqOf7E.mjs +524 -0
  19. package/dist/server/chunks/MediaLibrary_Ctc5H6Od.mjs +309 -0
  20. package/dist/server/chunks/_slug__FVgVdi48.mjs +30 -0
  21. package/dist/server/chunks/{api_BWOj0bUJ.mjs → api_C1VC3OiH.mjs} +12 -0
  22. package/dist/server/chunks/{edit_DNavSwFw.mjs → edit_Dau0tASP.mjs} +2 -2
  23. package/dist/server/chunks/{general_r50g45qE.mjs → general_DOXmhv-h.mjs} +57 -50
  24. package/dist/server/chunks/{index_yiAU3Mfy.mjs → index_B26K6w42.mjs} +160 -48
  25. package/dist/server/chunks/{index_B50u2M3P.mjs → index_BYBvZsat.mjs} +1 -1
  26. package/dist/server/chunks/index_D9OGVvPs.mjs +275 -0
  27. package/dist/server/chunks/{index_6G7rXrus.mjs → index_Owj31XBA.mjs} +2 -2
  28. package/dist/server/chunks/{index_qxSk7_hO.mjs → index_oZK1qJym.mjs} +2 -2
  29. package/dist/server/chunks/{new_BWcSqoqV.mjs → new_2mb-n_fU.mjs} +2 -2
  30. package/dist/server/chunks/{new_h8TItZZ9.mjs → new_BhA9pTES.mjs} +2 -2
  31. package/dist/server/chunks/{post-types_BSobAovm.mjs → post-types_B4rrV0WI.mjs} +2 -2
  32. package/dist/server/chunks/{taxonomies_Ij7CReDF.mjs → taxonomies_Bdxv94jK.mjs} +2 -2
  33. package/dist/server/chunks/{upload_16xg6koU.mjs → upload_RgdwSWbY.mjs} +2 -2
  34. package/dist/server/entry.mjs +52 -22
  35. package/package.json +5 -5
  36. package/dist/client/_astro/ContentEditor.DOcUnkMP.js +0 -1
  37. package/dist/client/_astro/ContentList.KzxsMMxH.js +0 -1
  38. package/dist/client/_astro/DashboardHome.DFRZ_yyM.js +0 -1
  39. package/dist/client/_astro/GeneralSettings.gbcKHf_p.js +0 -1
  40. package/dist/client/_astro/MediaLibrary.BtCjwNlR.js +0 -1
  41. package/dist/client/_astro/PostTypesManager.DsxV-sF3.js +0 -1
  42. package/dist/client/_astro/TaxonomiesManager.DqnwUCtt.js +0 -1
  43. package/dist/client/_astro/UserCreateForm.BLaiQTzI.js +0 -1
  44. package/dist/client/_astro/UsersManager.BPRG8tjn.js +0 -1
  45. package/dist/client/_astro/api.BegLcOlq.js +0 -1
  46. package/dist/client/_astro/client.D7G9q8lk.js +0 -1
  47. package/dist/server/chunks/DashboardLayout_DO66tdeZ.mjs +0 -43
  48. package/dist/server/chunks/MediaLibrary_DEi9k6ms.mjs +0 -179
  49. package/dist/server/chunks/index_DUzUgyr4.mjs +0 -155
@@ -0,0 +1,309 @@
1
+ import { a as For2, c as Select, f as createSignal, l as Show2, o as Input, p as onMount, r as Button, s as Pagination } from "./DashboardLayout_h9iqOf7E.mjs";
2
+ import { t as apiClient } from "./api_C1VC3OiH.mjs";
3
+ import { createComponent, escape, ssr, ssrAttribute, ssrHydrationKey, ssrStyleProperty } from "solid-js/web";
4
+ //#region src/components/media/MediaLibrary.tsx
5
+ var _tmpl$ = [
6
+ "<div",
7
+ " class=\"notice notice--error\">",
8
+ "</div>"
9
+ ];
10
+ var _tmpl$2 = [
11
+ "<div",
12
+ " class=\"notice\">",
13
+ "</div>"
14
+ ];
15
+ var _tmpl$3 = [
16
+ "<div",
17
+ " class=\"media-grid\">",
18
+ "</div>"
19
+ ];
20
+ var _tmpl$4 = [
21
+ "<div",
22
+ " class=\"media-library\"><!--$-->",
23
+ "<!--/--><!--$-->",
24
+ "<!--/--><div class=\"",
25
+ "\"><p><strong>Arraste arquivos aqui</strong> ou</p><label class=\"btn btn-primary\" style=\"",
26
+ "\"><!--$-->",
27
+ "<!--/--><input type=\"file\" multiple style=\"",
28
+ "\"",
29
+ "></label><p class=\"muted\">Imagens, vídeos, áudios e documentos · até 25MB por arquivo</p></div><div class=\"toolbar\"><!--$-->",
30
+ "<!--/--><!--$-->",
31
+ "<!--/--><!--$-->",
32
+ "<!--/--></div><!--$-->",
33
+ "<!--/--><!--$-->",
34
+ "<!--/--><!--$-->",
35
+ "<!--/--></div>"
36
+ ];
37
+ var _tmpl$5 = ["<p", " class=\"muted\">Nenhum arquivo ainda. Envie o primeiro!</p>"];
38
+ var _tmpl$6 = ["<img", " loading=\"lazy\">"];
39
+ var _tmpl$7 = [
40
+ "<button",
41
+ " type=\"button\" class=\"",
42
+ "\"><div class=\"media-card__preview\">",
43
+ "</div><div class=\"media-card__meta\"><span class=\"media-card__name\"",
44
+ ">",
45
+ "</span><span class=\"muted\">",
46
+ "</span></div></button>"
47
+ ];
48
+ var _tmpl$8 = [
49
+ "<span",
50
+ " class=\"media-card__ext\">",
51
+ "</span>"
52
+ ];
53
+ var _tmpl$9 = ["<img", ">"];
54
+ var _tmpl$0 = [
55
+ "<div",
56
+ " class=\"card media-details\"><h3>Detalhes</h3><div class=\"media-details__preview\">",
57
+ "</div><dl class=\"media-details__list\"><dt>Arquivo</dt><dd>",
58
+ "</dd><dt>Tipo</dt><dd>",
59
+ "</dd><dt>Tamanho</dt><dd>",
60
+ "</dd><dt>URL</dt><dd class=\"media-details__url\"><code>",
61
+ "</code><button class=\"btn btn-secondary btn-sm\" type=\"button\">Copiar</button></dd></dl><!--$-->",
62
+ "<!--/--><!--$-->",
63
+ "<!--/--><div class=\"media-details__actions\"><!--$-->",
64
+ "<!--/--><!--$-->",
65
+ "<!--/--><!--$-->",
66
+ "<!--/--></div></div>"
67
+ ];
68
+ var _tmpl$1 = [
69
+ "<p",
70
+ " class=\"muted\">",
71
+ "</p>"
72
+ ];
73
+ function formatSize(bytes) {
74
+ if (!Number.isFinite(bytes)) return "—";
75
+ if (bytes < 1024) return `${bytes} B`;
76
+ if (bytes < 1048576) return `${(bytes / 1024).toFixed(1)} KB`;
77
+ return `${(bytes / 1048576).toFixed(1)} MB`;
78
+ }
79
+ var isImage = (media) => media.mime_type.startsWith("image/");
80
+ function MediaLibrary(props) {
81
+ const [items, setItems] = createSignal([]);
82
+ const [total, setTotal] = createSignal(0);
83
+ const [page, setPage] = createSignal(1);
84
+ const [search, setSearch] = createSignal("");
85
+ const [mimeType, setMimeType] = createSignal("");
86
+ const [error, setError] = createSignal("");
87
+ const [info, setInfo] = createSignal("");
88
+ const [uploading, setUploading] = createSignal(false);
89
+ const [selected, setSelected] = createSignal(null);
90
+ const [dragOver, setDragOver] = createSignal(false);
91
+ const [savingDetails, setSavingDetails] = createSignal(false);
92
+ const limit = 24;
93
+ const load = async () => {
94
+ try {
95
+ const result = await apiClient.listMedia({
96
+ page: page(),
97
+ limit,
98
+ search: search() || void 0,
99
+ mimeType: mimeType() || void 0
100
+ });
101
+ setItems(result.data ?? []);
102
+ setTotal(result.total ?? 0);
103
+ } catch (err) {
104
+ setError(err instanceof Error ? err.message : String(err));
105
+ }
106
+ };
107
+ onMount(load);
108
+ const searchNow = async () => {
109
+ setPage(1);
110
+ await load();
111
+ };
112
+ const remove = async (media) => {
113
+ if (!confirm(`Excluir "${media.filename}"? O arquivo será removido do disco.`)) return;
114
+ try {
115
+ await apiClient.deleteMedia(media.id);
116
+ if (selected()?.id === media.id) setSelected(null);
117
+ await load();
118
+ } catch (err) {
119
+ setError(err instanceof Error ? err.message : String(err));
120
+ }
121
+ };
122
+ const saveDetails = async () => {
123
+ const media = selected();
124
+ if (!media) return;
125
+ setSavingDetails(true);
126
+ setError("");
127
+ try {
128
+ const updated = await apiClient.updateMedia(media.id, {
129
+ alt: media.alt ?? "",
130
+ caption: media.caption ?? ""
131
+ });
132
+ setSelected({
133
+ ...media,
134
+ ...updated
135
+ });
136
+ setInfo("Detalhes salvos ✓");
137
+ await load();
138
+ } catch (err) {
139
+ setError(err instanceof Error ? err.message : String(err));
140
+ } finally {
141
+ setSavingDetails(false);
142
+ }
143
+ };
144
+ return ssr(_tmpl$4, ssrHydrationKey(), escape(createComponent(Show2, {
145
+ get when() {
146
+ return error();
147
+ },
148
+ get children() {
149
+ return ssr(_tmpl$, ssrHydrationKey(), escape(error()));
150
+ }
151
+ })), escape(createComponent(Show2, {
152
+ get when() {
153
+ return info();
154
+ },
155
+ get children() {
156
+ return ssr(_tmpl$2, ssrHydrationKey(), escape(info()));
157
+ }
158
+ })), `upload-zone ${dragOver() || props.focusUpload ? "upload-zone--active" : ""}`, ssrStyleProperty("cursor:", "pointer"), uploading() ? "Enviando…" : "Selecionar arquivos", ssrStyleProperty("display:", "none"), ssrAttribute("disabled", uploading(), true), escape(createComponent(Input, {
159
+ name: "media-search",
160
+ placeholder: "Buscar por nome ou alt…",
161
+ get value() {
162
+ return search();
163
+ },
164
+ onInput: (value) => {
165
+ setSearch(value);
166
+ searchNow();
167
+ }
168
+ })), escape(createComponent(Select, {
169
+ name: "media-mime",
170
+ placeholder: "Todos os tipos",
171
+ get value() {
172
+ return mimeType();
173
+ },
174
+ options: [
175
+ {
176
+ value: "image/png",
177
+ label: "PNG"
178
+ },
179
+ {
180
+ value: "image/jpeg",
181
+ label: "JPEG"
182
+ },
183
+ {
184
+ value: "image/gif",
185
+ label: "GIF"
186
+ },
187
+ {
188
+ value: "image/webp",
189
+ label: "WebP"
190
+ },
191
+ {
192
+ value: "image/svg+xml",
193
+ label: "SVG"
194
+ },
195
+ {
196
+ value: "application/pdf",
197
+ label: "PDF"
198
+ },
199
+ {
200
+ value: "video/mp4",
201
+ label: "MP4"
202
+ },
203
+ {
204
+ value: "audio/mpeg",
205
+ label: "MP3"
206
+ }
207
+ ],
208
+ onChange: (value) => {
209
+ setMimeType(value);
210
+ searchNow();
211
+ }
212
+ })), escape(createComponent(Button, {
213
+ variant: "secondary",
214
+ onClick: () => void searchNow(),
215
+ children: "Buscar"
216
+ })), escape(createComponent(Show2, {
217
+ get when() {
218
+ return items().length > 0;
219
+ },
220
+ get fallback() {
221
+ return ssr(_tmpl$5, ssrHydrationKey());
222
+ },
223
+ get children() {
224
+ return ssr(_tmpl$3, ssrHydrationKey(), escape(createComponent(For2, {
225
+ get each() {
226
+ return items();
227
+ },
228
+ children: (media) => ssr(_tmpl$7, ssrHydrationKey(), `media-card ${selected()?.id === media.id ? "media-card--selected" : ""}`, escape(createComponent(Show2, {
229
+ get when() {
230
+ return isImage(media);
231
+ },
232
+ get fallback() {
233
+ return ssr(_tmpl$8, ssrHydrationKey(), escape(media.mime_type.split("/")[1]?.toUpperCase() ?? "FILE"));
234
+ },
235
+ get children() {
236
+ return ssr(_tmpl$6, ssrHydrationKey() + ssrAttribute("src", escape(media.url, true), false) + ssrAttribute("alt", escape(media.alt ?? media.filename, true), false));
237
+ }
238
+ })), ssrAttribute("title", escape(media.filename, true), false), escape(media.filename), escape(formatSize(media.size)))
239
+ })));
240
+ }
241
+ })), escape(createComponent(Pagination, {
242
+ get page() {
243
+ return page();
244
+ },
245
+ limit,
246
+ get total() {
247
+ return total();
248
+ },
249
+ onPageChange: (next) => {
250
+ setPage(next);
251
+ load();
252
+ }
253
+ })), escape(createComponent(Show2, {
254
+ get when() {
255
+ return selected();
256
+ },
257
+ children: (media) => ssr(_tmpl$0, ssrHydrationKey(), escape(createComponent(Show2, {
258
+ get when() {
259
+ return isImage(media());
260
+ },
261
+ get fallback() {
262
+ return ssr(_tmpl$1, ssrHydrationKey(), escape(media().mime_type));
263
+ },
264
+ get children() {
265
+ return ssr(_tmpl$9, ssrHydrationKey() + ssrAttribute("src", escape(media().url, true), false) + ssrAttribute("alt", escape(media().alt ?? "", true), false));
266
+ }
267
+ })), escape(media().filename), escape(media().mime_type), escape(formatSize(media().size)), escape(media().url), escape(createComponent(Input, {
268
+ name: "media-alt",
269
+ label: "Texto alternativo (alt)",
270
+ get value() {
271
+ return media().alt ?? "";
272
+ },
273
+ onInput: (value) => setSelected({
274
+ ...media(),
275
+ alt: value
276
+ })
277
+ })), escape(createComponent(Input, {
278
+ name: "media-caption",
279
+ label: "Legenda",
280
+ get value() {
281
+ return media().caption ?? "";
282
+ },
283
+ onInput: (value) => setSelected({
284
+ ...media(),
285
+ caption: value
286
+ })
287
+ })), escape(createComponent(Button, {
288
+ variant: "primary",
289
+ get disabled() {
290
+ return savingDetails();
291
+ },
292
+ get loading() {
293
+ return savingDetails();
294
+ },
295
+ onClick: () => void saveDetails(),
296
+ children: "Salvar detalhes"
297
+ })), escape(createComponent(Button, {
298
+ variant: "danger",
299
+ onClick: () => void remove(media()),
300
+ children: "Excluir"
301
+ })), escape(createComponent(Button, {
302
+ variant: "secondary",
303
+ onClick: () => setSelected(null),
304
+ children: "Fechar"
305
+ })))
306
+ })));
307
+ }
308
+ //#endregion
309
+ export { MediaLibrary as t };
@@ -0,0 +1,30 @@
1
+ import { r as __exportAll } from "./rolldown-runtime_BMI-E3GI.mjs";
2
+ import { S as createAstro, d as maybeRenderHead, i as renderComponent, p as addAttribute, 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
+ //#region src/pages/plugins/[slug].astro
6
+ var _slug__exports = /* @__PURE__ */ __exportAll({
7
+ default: () => $$Slug,
8
+ file: () => $$file,
9
+ url: () => $$url
10
+ });
11
+ createAstro("https://astro.build");
12
+ var $$Slug = createComponent(($$result, $$props, $$slots) => {
13
+ const Astro = $$result.createAstro($$props, $$slots);
14
+ Astro.self = $$Slug;
15
+ const { slug } = Astro.props;
16
+ const pluginSlug = String(slug ?? "").split("/")[0] ?? "";
17
+ const pageTitle = String(slug ?? "Plugin");
18
+ return renderTemplate`${renderComponent($$result, "DashboardLayout", $$DashboardLayout, {
19
+ "title": pageTitle,
20
+ "description": `Página de extensão do plugin ${pluginSlug}`,
21
+ "data-astro-cid-q2qjpybz": true
22
+ }, { "default": ($$result) => renderTemplate`${maybeRenderHead($$result)}<div class="plugin-page"${addAttribute(pluginSlug, "data-plugin")}${addAttribute(slug, "data-plugin-page")} data-astro-cid-q2qjpybz><div class="card plugin-page__container" data-astro-cid-q2qjpybz><h2 data-astro-cid-q2qjpybz>${pageTitle}</h2><p class="muted" data-astro-cid-q2qjpybz>Conteúdo renderizado pelo runtime de componentes do plugin — isolado via<code data-astro-cid-q2qjpybz>data-plugin="${pluginSlug}"</code>.</p><div class="plugin-page__mount"${addAttribute(`page:${slug}`, "data-plugin-component")}${addAttribute(pluginSlug, "data-plugin")} data-astro-cid-q2qjpybz><!-- Componente do plugin (declarativo, sem injeção de DOM direta — DECI-027) --></div></div></div>` })}`;
23
+ }, "/home/runner/work/cms/cms/apps/admin/src/pages/plugins/[slug].astro", void 0);
24
+ var $$file = "/home/runner/work/cms/cms/apps/admin/src/pages/plugins/[slug].astro";
25
+ var $$url = "/plugins/[slug]";
26
+ //#endregion
27
+ //#region \0virtual:astro:page:src/pages/plugins/[slug]@_@astro
28
+ var page = () => _slug__exports;
29
+ //#endregion
30
+ export { page };
@@ -133,6 +133,18 @@ var ApiClient = class {
133
133
  async deleteContent(id) {
134
134
  await this.request("DELETE", `/api/v1/content/${id}`);
135
135
  }
136
+ /** A2: publica via rota real do publisher (eventBus + cache + revisions). */
137
+ async publishContent(id) {
138
+ return this.request("POST", `/api/v1/content/${id}/publish`);
139
+ }
140
+ /** A2: despublica via rota real do publisher. */
141
+ async unpublishContent(id) {
142
+ return this.request("POST", `/api/v1/content/${id}/unpublish`);
143
+ }
144
+ /** Atalho usado pela ContentList: publish/unpublish conforme status atual. */
145
+ async publishToggle(id, isPublished) {
146
+ return isPublished ? this.unpublishContent(id) : this.publishContent(id);
147
+ }
136
148
  async getContentTypes() {
137
149
  return this.request("GET", "/api/v1/content-types");
138
150
  }
@@ -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 } from "./compiler_CYjwXhLT.mjs";
4
- import { t as $$DashboardLayout } from "./DashboardLayout_DO66tdeZ.mjs";
5
- import { t as ContentEditor } from "./ContentEditor_DwBpNq-K.mjs";
4
+ import { t as $$DashboardLayout } from "./DashboardLayout_h9iqOf7E.mjs";
5
+ import { t as ContentEditor } from "./ContentEditor_CrO12IkK.mjs";
6
6
  //#region src/pages/content/edit.astro
7
7
  var edit_exports = /* @__PURE__ */ __exportAll({
8
8
  default: () => $$Edit,
@@ -1,10 +1,9 @@
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_DO66tdeZ.mjs";
5
- import { t as apiClient } from "./api_BWOj0bUJ.mjs";
6
- import { createComponent, escape, memo, ssr, ssrAttribute, ssrHydrationKey } from "solid-js/web";
7
- import { For, Show, createSignal, onMount } from "solid-js";
4
+ import { c as Select, f as createSignal, i as Card, l as Show2, o as Input, p as onMount, r as Button, t as $$DashboardLayout } from "./DashboardLayout_h9iqOf7E.mjs";
5
+ import { t as apiClient } from "./api_C1VC3OiH.mjs";
6
+ import { createComponent, escape, memo, ssr, ssrHydrationKey } from "solid-js/web";
8
7
  //#region src/components/apps/settings/GeneralSettings.tsx
9
8
  var _tmpl$ = [
10
9
  "<div",
@@ -18,10 +17,9 @@ var _tmpl$2 = [
18
17
  ];
19
18
  var _tmpl$3 = [
20
19
  "<form",
21
- " class=\"card\"><h3>Geral</h3><div class=\"form-grid\">",
22
- "</div><div class=\"media-details__actions\"><button class=\"btn btn-primary\" type=\"submit\"",
23
- ">",
24
- "</button></div></form>"
20
+ "><h3>Geral</h3><div class=\"form-grid\">",
21
+ "</div><div class=\"media-details__actions\">",
22
+ "</div></form>"
25
23
  ];
26
24
  var _tmpl$4 = [
27
25
  "<div",
@@ -31,28 +29,6 @@ var _tmpl$4 = [
31
29
  "<!--/--></div>"
32
30
  ];
33
31
  var _tmpl$5 = ["<p", " class=\"muted\">Carregando…</p>"];
34
- var _tmpl$6 = [
35
- "<select",
36
- " class=\"input\"",
37
- ">",
38
- "</select>"
39
- ];
40
- var _tmpl$7 = [
41
- "<label",
42
- "><!--$-->",
43
- "<!--/--><!--$-->",
44
- "<!--/--></label>"
45
- ];
46
- var _tmpl$8 = [
47
- "<input",
48
- " class=\"input\"",
49
- ">"
50
- ];
51
- var _tmpl$9 = [
52
- "<option",
53
- ">",
54
- "</option>"
55
- ];
56
32
  var FIELDS = [
57
33
  {
58
34
  key: "siteTitle",
@@ -101,21 +77,21 @@ function GeneralSettings() {
101
77
  setError(err instanceof Error ? err.message : String(err));
102
78
  }
103
79
  });
104
- return ssr(_tmpl$4, ssrHydrationKey(), escape(createComponent(Show, {
80
+ return ssr(_tmpl$4, ssrHydrationKey(), escape(createComponent(Show2, {
105
81
  get when() {
106
82
  return error();
107
83
  },
108
84
  get children() {
109
85
  return ssr(_tmpl$, ssrHydrationKey(), escape(error()));
110
86
  }
111
- })), escape(createComponent(Show, {
87
+ })), escape(createComponent(Show2, {
112
88
  get when() {
113
89
  return info();
114
90
  },
115
91
  get children() {
116
92
  return ssr(_tmpl$2, ssrHydrationKey(), escape(info()));
117
93
  }
118
- })), escape(createComponent(Show, {
94
+ })), escape(createComponent(Show2, {
119
95
  get when() {
120
96
  return loaded();
121
97
  },
@@ -123,25 +99,56 @@ function GeneralSettings() {
123
99
  return ssr(_tmpl$5, ssrHydrationKey());
124
100
  },
125
101
  get children() {
126
- return ssr(_tmpl$3, ssrHydrationKey(), escape(createComponent(For, {
127
- each: FIELDS,
128
- children: (field) => ssr(_tmpl$7, ssrHydrationKey(), escape(field.label), escape(createComponent(Show, {
129
- get when() {
130
- return field.type === "select";
102
+ return createComponent(Card, { get children() {
103
+ return ssr(_tmpl$3, ssrHydrationKey(), escape(FIELDS.map((field) => field.type === "select" ? createComponent(Select, {
104
+ get name() {
105
+ return field.key;
106
+ },
107
+ get label() {
108
+ return field.label;
109
+ },
110
+ get value() {
111
+ return values()[field.key] ?? "";
112
+ },
113
+ get options() {
114
+ return memo(() => "options" in field)() ? field.options.map((option) => ({
115
+ value: option,
116
+ label: option
117
+ })) : [];
118
+ },
119
+ onChange: (value) => setValues({
120
+ ...values(),
121
+ [field.key]: value
122
+ })
123
+ }) : createComponent(Input, {
124
+ get name() {
125
+ return field.key;
126
+ },
127
+ get label() {
128
+ return field.label;
129
+ },
130
+ get placeholder() {
131
+ return memo(() => "placeholder" in field)() ? field.placeholder : "";
132
+ },
133
+ get value() {
134
+ return values()[field.key] ?? "";
135
+ },
136
+ onInput: (value) => setValues({
137
+ ...values(),
138
+ [field.key]: value
139
+ })
140
+ }))), escape(createComponent(Button, {
141
+ variant: "primary",
142
+ type: "submit",
143
+ get disabled() {
144
+ return saving();
131
145
  },
132
- get fallback() {
133
- return ssr(_tmpl$8, ssrHydrationKey(), ssrAttribute("placeholder", "placeholder" in field ? escape(field.placeholder, true) : "", false) + ssrAttribute("value", escape(values()[field.key] ?? "", true), false));
146
+ get loading() {
147
+ return saving();
134
148
  },
135
- get children() {
136
- return ssr(_tmpl$6, ssrHydrationKey(), ssrAttribute("value", escape(values()[field.key] ?? "", true), false), escape(createComponent(For, {
137
- get each() {
138
- return memo(() => "options" in field)() ? field.options : [];
139
- },
140
- children: (option) => ssr(_tmpl$9, ssrHydrationKey() + ssrAttribute("value", escape(option, true), false), escape(option))
141
- })));
142
- }
143
- })))
144
- })), ssrAttribute("disabled", saving(), true), saving() ? "Salvando…" : "Salvar");
149
+ children: "Salvar"
150
+ })));
151
+ } });
145
152
  }
146
153
  })));
147
154
  }