@oktis-works/admin 0.1.7 → 0.2.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 (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,524 @@
1
+ import "./rolldown-runtime_BMI-E3GI.mjs";
2
+ import { S as createAstro, d as maybeRenderHead, i as renderComponent, p as addAttribute, s as renderSlot, u as renderTemplate } from "./server_CnzC2Y0K.mjs";
3
+ import { t as createComponent$1 } from "./compiler_CYjwXhLT.mjs";
4
+ import { n as renderScript, t as $$BaseLayout } from "./BaseLayout_C41_wW4F.mjs";
5
+ import { t as require_semver } from "./semver_WbqCUY_o.mjs";
6
+ import { className, createComponent, delegateEvents, effect, escape, insert, memo, setAttribute, ssr, ssrAttribute, ssrHydrationKey, style, template } from "solid-js/web";
7
+ import { For, For as For2, Show, Show as Show2, createMemo as createMemo$1, createSignal as createSignal$1, onMount as onMount$1 } from "solid-js";
8
+ require_semver();
9
+ //#endregion
10
+ //#region ../../packages/ui/dist/index.js
11
+ var _tmpl$$2 = /* @__PURE__ */ template(`<span class=spinner aria-label=Carregando>`);
12
+ var _tmpl$2$2 = /* @__PURE__ */ template(`<button>`);
13
+ var _tmpl$3 = /* @__PURE__ */ template(`<label class=field__label><input class=input>`);
14
+ var _tmpl$4 = /* @__PURE__ */ template(`<input class=input>`);
15
+ var _tmpl$5 = /* @__PURE__ */ template(`<p class="field__error notice--error">`);
16
+ var _tmpl$6 = /* @__PURE__ */ template(`<div>`);
17
+ var _tmpl$7 = /* @__PURE__ */ template(`<span aria-hidden=true> *`);
18
+ var _tmpl$8 = /* @__PURE__ */ template(`<option value>`);
19
+ var _tmpl$9 = /* @__PURE__ */ template(`<label class=field__label><select class=input>`);
20
+ var _tmpl$0 = /* @__PURE__ */ template(`<select class=input>`);
21
+ var _tmpl$1 = /* @__PURE__ */ template(`<option>`);
22
+ var _tmpl$10 = /* @__PURE__ */ template(`<div class=card-header><h3>`);
23
+ var _tmpl$11 = /* @__PURE__ */ template(`<span>`);
24
+ var _tmpl$14 = /* @__PURE__ */ template(`<table class=table><thead><tr></tr></thead><tbody>`);
25
+ var _tmpl$15 = /* @__PURE__ */ template(`<div class=table-loading><span class=spinner aria-label=Carregando>`);
26
+ var _tmpl$16 = /* @__PURE__ */ template(`<p class=muted>`);
27
+ var _tmpl$17 = /* @__PURE__ */ template(`<th>`);
28
+ var _tmpl$18 = /* @__PURE__ */ template(`<tr>`);
29
+ var _tmpl$19 = /* @__PURE__ */ template(`<td>`);
30
+ var _tmpl$20 = /* @__PURE__ */ template(`<div class=pagination><button class="btn btn-secondary btn-sm"type=button>← Anterior</button><span class=muted>Página <!> de </span><button class="btn btn-secondary btn-sm"type=button>Próxima →`);
31
+ var BTN_VARIANTS = [
32
+ "primary",
33
+ "secondary",
34
+ "danger",
35
+ "ghost"
36
+ ];
37
+ function Button(props) {
38
+ const variant = BTN_VARIANTS.includes(props.variant) ? props.variant : "secondary";
39
+ const classes = () => [
40
+ "btn",
41
+ `btn-${variant}`,
42
+ props.size === "sm" ? "btn-sm" : "",
43
+ props.class ?? ""
44
+ ].filter(Boolean).join(" ");
45
+ return (() => {
46
+ var _el$ = _tmpl$2$2();
47
+ _el$.$$click = () => {
48
+ var _a;
49
+ return (_a = props.onClick) == null ? void 0 : _a.call(props);
50
+ };
51
+ insert(_el$, createComponent(Show, {
52
+ get when() {
53
+ return props.loading;
54
+ },
55
+ get fallback() {
56
+ return props.children;
57
+ },
58
+ get children() {
59
+ return _tmpl$$2();
60
+ }
61
+ }));
62
+ effect((_p$) => {
63
+ var _v$ = props.type ?? "button", _v$2 = classes(), _v$3 = props.disabled || props.loading;
64
+ _v$ !== _p$.e && setAttribute(_el$, "type", _p$.e = _v$);
65
+ _v$2 !== _p$.t && className(_el$, _p$.t = _v$2);
66
+ _v$3 !== _p$.a && (_el$.disabled = _p$.a = _v$3);
67
+ return _p$;
68
+ }, {
69
+ e: void 0,
70
+ t: void 0,
71
+ a: void 0
72
+ });
73
+ return _el$;
74
+ })();
75
+ }
76
+ function Input(props) {
77
+ const handleInput = (event) => {
78
+ var _a;
79
+ (_a = props.onInput) == null || _a.call(props, event.currentTarget.value);
80
+ };
81
+ return (() => {
82
+ var _el$3 = _tmpl$6();
83
+ insert(_el$3, createComponent(Show, {
84
+ get when() {
85
+ return props.label;
86
+ },
87
+ get children() {
88
+ var _el$4 = _tmpl$3(), _el$5 = _el$4.firstChild;
89
+ insert(_el$4, () => props.label, _el$5);
90
+ insert(_el$4, (() => {
91
+ var _c$ = memo(() => !!props.required);
92
+ return () => _c$() ? _tmpl$7() : null;
93
+ })(), _el$5);
94
+ _el$5.$$input = handleInput;
95
+ effect((_p$) => {
96
+ var _v$4 = props.type ?? "text", _v$5 = props.name, _v$6 = props.placeholder, _v$7 = props.disabled, _v$8 = props.required;
97
+ _v$4 !== _p$.e && setAttribute(_el$5, "type", _p$.e = _v$4);
98
+ _v$5 !== _p$.t && setAttribute(_el$5, "name", _p$.t = _v$5);
99
+ _v$6 !== _p$.a && setAttribute(_el$5, "placeholder", _p$.a = _v$6);
100
+ _v$7 !== _p$.o && (_el$5.disabled = _p$.o = _v$7);
101
+ _v$8 !== _p$.i && (_el$5.required = _p$.i = _v$8);
102
+ return _p$;
103
+ }, {
104
+ e: void 0,
105
+ t: void 0,
106
+ a: void 0,
107
+ o: void 0,
108
+ i: void 0
109
+ });
110
+ effect(() => _el$5.value = props.value ?? "");
111
+ return _el$4;
112
+ }
113
+ }), null);
114
+ insert(_el$3, createComponent(Show, {
115
+ get when() {
116
+ return !props.label;
117
+ },
118
+ get children() {
119
+ var _el$6 = _tmpl$4();
120
+ _el$6.$$input = handleInput;
121
+ effect((_p$) => {
122
+ var _v$9 = props.type ?? "text", _v$0 = props.name, _v$1 = props.placeholder, _v$10 = props.disabled, _v$11 = props.required;
123
+ _v$9 !== _p$.e && setAttribute(_el$6, "type", _p$.e = _v$9);
124
+ _v$0 !== _p$.t && setAttribute(_el$6, "name", _p$.t = _v$0);
125
+ _v$1 !== _p$.a && setAttribute(_el$6, "placeholder", _p$.a = _v$1);
126
+ _v$10 !== _p$.o && (_el$6.disabled = _p$.o = _v$10);
127
+ _v$11 !== _p$.i && (_el$6.required = _p$.i = _v$11);
128
+ return _p$;
129
+ }, {
130
+ e: void 0,
131
+ t: void 0,
132
+ a: void 0,
133
+ o: void 0,
134
+ i: void 0
135
+ });
136
+ effect(() => _el$6.value = props.value ?? "");
137
+ return _el$6;
138
+ }
139
+ }), null);
140
+ insert(_el$3, createComponent(Show, {
141
+ get when() {
142
+ return props.error;
143
+ },
144
+ get children() {
145
+ var _el$7 = _tmpl$5();
146
+ insert(_el$7, () => props.error);
147
+ return _el$7;
148
+ }
149
+ }), null);
150
+ effect(() => className(_el$3, `field ${props.class ?? ""}`.trim()));
151
+ return _el$3;
152
+ })();
153
+ }
154
+ function Select(props) {
155
+ const options = props.options;
156
+ return (() => {
157
+ var _el$9 = _tmpl$6();
158
+ insert(_el$9, createComponent(Show, {
159
+ get when() {
160
+ return props.label;
161
+ },
162
+ get children() {
163
+ var _el$0 = _tmpl$9(), _el$1 = _el$0.firstChild;
164
+ insert(_el$0, () => props.label, _el$1);
165
+ _el$1.addEventListener("change", (e) => {
166
+ var _a;
167
+ return (_a = props.onChange) == null ? void 0 : _a.call(props, e.currentTarget.value);
168
+ });
169
+ insert(_el$1, createComponent(Show, {
170
+ get when() {
171
+ return props.placeholder;
172
+ },
173
+ get children() {
174
+ var _el$10 = _tmpl$8();
175
+ insert(_el$10, () => props.placeholder);
176
+ return _el$10;
177
+ }
178
+ }), null);
179
+ insert(_el$1, createComponent(For, {
180
+ each: options,
181
+ children: (option) => (() => {
182
+ var _el$13 = _tmpl$1();
183
+ insert(_el$13, () => option.label);
184
+ effect(() => _el$13.value = option.value);
185
+ return _el$13;
186
+ })()
187
+ }), null);
188
+ effect((_p$) => {
189
+ var _v$12 = props.name, _v$13 = props.disabled;
190
+ _v$12 !== _p$.e && setAttribute(_el$1, "name", _p$.e = _v$12);
191
+ _v$13 !== _p$.t && (_el$1.disabled = _p$.t = _v$13);
192
+ return _p$;
193
+ }, {
194
+ e: void 0,
195
+ t: void 0
196
+ });
197
+ effect(() => _el$1.value = props.value ?? "");
198
+ return _el$0;
199
+ }
200
+ }), null);
201
+ insert(_el$9, createComponent(Show, {
202
+ get when() {
203
+ return !props.label;
204
+ },
205
+ get children() {
206
+ var _el$11 = _tmpl$0();
207
+ _el$11.addEventListener("change", (e) => {
208
+ var _a;
209
+ return (_a = props.onChange) == null ? void 0 : _a.call(props, e.currentTarget.value);
210
+ });
211
+ insert(_el$11, createComponent(Show, {
212
+ get when() {
213
+ return props.placeholder;
214
+ },
215
+ get children() {
216
+ var _el$12 = _tmpl$8();
217
+ insert(_el$12, () => props.placeholder);
218
+ return _el$12;
219
+ }
220
+ }), null);
221
+ insert(_el$11, createComponent(For, {
222
+ each: options,
223
+ children: (option) => (() => {
224
+ var _el$14 = _tmpl$1();
225
+ insert(_el$14, () => option.label);
226
+ effect(() => _el$14.value = option.value);
227
+ return _el$14;
228
+ })()
229
+ }), null);
230
+ effect((_p$) => {
231
+ var _v$14 = props.name, _v$15 = props.disabled;
232
+ _v$14 !== _p$.e && setAttribute(_el$11, "name", _p$.e = _v$14);
233
+ _v$15 !== _p$.t && (_el$11.disabled = _p$.t = _v$15);
234
+ return _p$;
235
+ }, {
236
+ e: void 0,
237
+ t: void 0
238
+ });
239
+ effect(() => _el$11.value = props.value ?? "");
240
+ return _el$11;
241
+ }
242
+ }), null);
243
+ effect(() => className(_el$9, `field ${props.class ?? ""}`.trim()));
244
+ return _el$9;
245
+ })();
246
+ }
247
+ function Card(props) {
248
+ return (() => {
249
+ var _el$15 = _tmpl$6();
250
+ insert(_el$15, createComponent(Show, {
251
+ get when() {
252
+ return props.title;
253
+ },
254
+ get children() {
255
+ var _el$16 = _tmpl$10(), _el$17 = _el$16.firstChild;
256
+ insert(_el$17, () => props.title);
257
+ return _el$16;
258
+ }
259
+ }), null);
260
+ insert(_el$15, () => props.children, null);
261
+ effect(() => className(_el$15, `card ${props.class ?? ""}`.trim()));
262
+ return _el$15;
263
+ })();
264
+ }
265
+ function Badge(props) {
266
+ const variant = props.variant ?? "secondary";
267
+ return (() => {
268
+ var _el$18 = _tmpl$11();
269
+ className(_el$18, `badge badge-${variant}`);
270
+ insert(_el$18, () => props.children);
271
+ return _el$18;
272
+ })();
273
+ }
274
+ function Table(props) {
275
+ const columns = props.columns;
276
+ return createComponent(Show, {
277
+ get when() {
278
+ return !props.loading;
279
+ },
280
+ get fallback() {
281
+ return _tmpl$15();
282
+ },
283
+ get children() {
284
+ return createComponent(Show, {
285
+ get when() {
286
+ return props.data.length > 0;
287
+ },
288
+ get fallback() {
289
+ return (() => {
290
+ var _el$31 = _tmpl$16();
291
+ insert(_el$31, () => props.emptyMessage ?? "Nenhum registro.");
292
+ return _el$31;
293
+ })();
294
+ },
295
+ get children() {
296
+ var _el$26 = _tmpl$14(), _el$27 = _el$26.firstChild, _el$28 = _el$27.firstChild, _el$29 = _el$27.nextSibling;
297
+ insert(_el$28, createComponent(For, {
298
+ each: columns,
299
+ children: (column) => (() => {
300
+ var _el$32 = _tmpl$17();
301
+ insert(_el$32, () => column.label);
302
+ effect((_$p) => style(_el$32, column.width ? { width: column.width } : void 0, _$p));
303
+ return _el$32;
304
+ })()
305
+ }));
306
+ insert(_el$29, createComponent(For, {
307
+ get each() {
308
+ return props.data;
309
+ },
310
+ children: (row) => (() => {
311
+ var _el$33 = _tmpl$18();
312
+ insert(_el$33, createComponent(For, {
313
+ each: columns,
314
+ children: (column) => (() => {
315
+ var _el$34 = _tmpl$19();
316
+ insert(_el$34, createComponent(Show, {
317
+ get when() {
318
+ return column.render;
319
+ },
320
+ get fallback() {
321
+ return String(row[column.key] ?? "");
322
+ },
323
+ get children() {
324
+ var _a;
325
+ return (_a = column.render) == null ? void 0 : _a.call(column, row[column.key], row);
326
+ }
327
+ }));
328
+ return _el$34;
329
+ })()
330
+ }));
331
+ return _el$33;
332
+ })()
333
+ }));
334
+ return _el$26;
335
+ }
336
+ });
337
+ }
338
+ });
339
+ }
340
+ function Pagination(props) {
341
+ const totalPages = () => Math.max(1, Math.ceil(props.total / Math.max(1, props.limit)));
342
+ return createComponent(Show, {
343
+ get when() {
344
+ return totalPages() > 1;
345
+ },
346
+ get children() {
347
+ var _el$35 = _tmpl$20(), _el$36 = _el$35.firstChild, _el$37 = _el$36.nextSibling, _el$40 = _el$37.firstChild.nextSibling;
348
+ _el$40.nextSibling;
349
+ var _el$41 = _el$37.nextSibling;
350
+ _el$36.$$click = () => props.onPageChange(props.page - 1);
351
+ insert(_el$37, () => props.page, _el$40);
352
+ insert(_el$37, totalPages, null);
353
+ _el$41.$$click = () => props.onPageChange(props.page + 1);
354
+ effect((_p$) => {
355
+ var _v$16 = props.page <= 1, _v$17 = props.page >= totalPages();
356
+ _v$16 !== _p$.e && (_el$36.disabled = _p$.e = _v$16);
357
+ _v$17 !== _p$.t && (_el$41.disabled = _p$.t = _v$17);
358
+ return _p$;
359
+ }, {
360
+ e: void 0,
361
+ t: void 0
362
+ });
363
+ return _el$35;
364
+ }
365
+ });
366
+ }
367
+ delegateEvents(["click", "input"]);
368
+ //#endregion
369
+ //#region src/ext/slots.tsx
370
+ var _tmpl$$1 = [
371
+ "<a",
372
+ " href=\"",
373
+ "\" class=\"sidebar__link\"><!--$-->",
374
+ "<!--/--> <!--$-->",
375
+ "<!--/--></a>"
376
+ ];
377
+ var _tmpl$2$1 = [
378
+ "<span",
379
+ " aria-hidden=\"true\">",
380
+ "</span>"
381
+ ];
382
+ /**
383
+ * Slots nomeados consumidos pelo shell do admin.
384
+ * Plugins registram extensões via SDK; o admin apenas renderiza
385
+ * os dados declarativos — sem injeção de DOM direta (DECI-027).
386
+ */
387
+ function AdminSidebarSlot(props) {
388
+ const allowedPages = () => props.extensions.menuPages.filter((page) => props.can(page.capability ?? "read"));
389
+ return createComponent(For, {
390
+ get each() {
391
+ return allowedPages();
392
+ },
393
+ children: (page) => ssr(_tmpl$$1, ssrHydrationKey(), `/plugins/${escape(page.slug, true)}`, page.icon ? ssr(_tmpl$2$1, ssrHydrationKey(), escape(page.icon)) : escape(null), escape(page.label))
394
+ });
395
+ }
396
+ //#endregion
397
+ //#region src/ext/extensions.tsx
398
+ var _tmpl$ = [
399
+ "<div",
400
+ " class=\"sidebar-plugins\" data-extensions=\"sidebar\"><!--$-->",
401
+ "<!--/--><!--$-->",
402
+ "<!--/--></div>"
403
+ ];
404
+ var _tmpl$2 = [
405
+ "<div",
406
+ " class=\"",
407
+ "\"",
408
+ "><span>",
409
+ "</span></div>"
410
+ ];
411
+ function emptyExtensionsState() {
412
+ return {
413
+ menuPages: [],
414
+ submenuPages: [],
415
+ dashboardWidgets: [],
416
+ metaBoxes: [],
417
+ notices: [],
418
+ columns: {},
419
+ columnRenderers: {},
420
+ actionLinks: []
421
+ };
422
+ }
423
+ /** Converte as rows de plugins (API) no estado declarativo dos slots. */
424
+ function extensionsFromPlugins(plugins) {
425
+ const state = emptyExtensionsState();
426
+ for (const plugin of plugins) {
427
+ if (plugin.status !== "ACTIVE") continue;
428
+ const admin = plugin.manifest?.admin;
429
+ if (!admin) continue;
430
+ const pluginSlug = plugin.slug ?? plugin.name;
431
+ state.menuPages.push(...admin.menuPages?.map((page) => ({
432
+ ...page,
433
+ slug: page.slug.startsWith(`${pluginSlug}/`) ? page.slug : `${pluginSlug}/${page.slug}`
434
+ })) ?? []);
435
+ state.dashboardWidgets.push(...admin.dashboardWidgets?.map((widget) => ({
436
+ ...widget,
437
+ id: widget.id.includes(":") ? widget.id : `${pluginSlug}:${widget.id}`,
438
+ componentId: widget.componentId.includes(":") ? widget.componentId : `${pluginSlug}:${widget.componentId}`
439
+ })) ?? []);
440
+ state.notices.push(...admin.notices?.map((notice) => ({
441
+ ...notice,
442
+ id: notice.id.includes(":") ? notice.id : `${pluginSlug}:${notice.id}`
443
+ })) ?? []);
444
+ }
445
+ return state;
446
+ }
447
+ /** Ilha client-side: busca plugins → AdminExtensionsState → slots. */
448
+ function PluginExtensionsSlot() {
449
+ const [extensions, setExtensions] = createSignal$1(emptyExtensionsState());
450
+ onMount$1(async () => {
451
+ try {
452
+ const response = await fetch("/api/v1/plugins", { credentials: "include" });
453
+ if (!response.ok) return;
454
+ const plugins = await response.json();
455
+ setExtensions(extensionsFromPlugins(plugins));
456
+ } catch {}
457
+ });
458
+ const can = () => true;
459
+ return createComponent(Show2, {
460
+ get when() {
461
+ return extensions().menuPages.length > 0;
462
+ },
463
+ get children() {
464
+ return ssr(_tmpl$, ssrHydrationKey(), escape(createComponent(For2, {
465
+ get each() {
466
+ return extensions().notices;
467
+ },
468
+ children: (notice) => ssr(_tmpl$2, ssrHydrationKey(), `notice notice--${escape(notice.level, true)}`, ssrAttribute("data-plugin", escape(notice.id.split(":")[0], true), false), escape(notice.message))
469
+ })), escape(createComponent(AdminSidebarSlot, {
470
+ get extensions() {
471
+ return extensions();
472
+ },
473
+ can
474
+ })));
475
+ }
476
+ });
477
+ }
478
+ //#endregion
479
+ //#region src/layouts/DashboardLayout.astro
480
+ createAstro("https://astro.build");
481
+ var $$DashboardLayout = createComponent$1(($$result, $$props, $$slots) => {
482
+ const Astro = $$result.createAstro($$props, $$slots);
483
+ Astro.self = $$DashboardLayout;
484
+ const { title, description } = Astro.props;
485
+ const pathname = Astro.url.pathname;
486
+ const isActive = (href) => href === "/" ? pathname === "/" : pathname === href || pathname.startsWith(`${href}/`);
487
+ const navActive = {
488
+ dashboard: isActive("/"),
489
+ content: isActive("/content"),
490
+ media: isActive("/media"),
491
+ users: isActive("/users"),
492
+ settings: isActive("/settings")
493
+ };
494
+ const settingsChildren = [
495
+ {
496
+ href: "/settings/general",
497
+ label: "General",
498
+ active: isActive("/settings/general")
499
+ },
500
+ {
501
+ href: "/settings/post-types",
502
+ label: "Content Types",
503
+ active: isActive("/settings/post-types")
504
+ },
505
+ {
506
+ href: "/settings/taxonomies",
507
+ label: "Taxonomies",
508
+ active: isActive("/settings/taxonomies")
509
+ }
510
+ ];
511
+ return renderTemplate`${renderComponent($$result, "BaseLayout", $$BaseLayout, {
512
+ "title": title,
513
+ "description": description,
514
+ "data-astro-cid-ynf3rr4n": true
515
+ }, { "default": ($$result) => renderTemplate`${maybeRenderHead($$result)}<div class="layout" data-astro-cid-ynf3rr4n><aside class="sidebar" data-astro-cid-ynf3rr4n><div class="sidebar-header" data-astro-cid-ynf3rr4n><h2 class="text-lg font-bold" data-astro-cid-ynf3rr4n>OkCMS</h2><span class="badge badge-secondary" data-astro-cid-ynf3rr4n>Admin</span></div><nav class="sidebar-nav" data-astro-cid-ynf3rr4n><a href="/"${addAttribute(["nav-item", { active: navActive.dashboard }], "class:list")} data-astro-cid-ynf3rr4n><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" data-astro-cid-ynf3rr4n><rect x="3" y="3" width="7" height="7" data-astro-cid-ynf3rr4n></rect><rect x="14" y="3" width="7" height="7" data-astro-cid-ynf3rr4n></rect><rect x="14" y="14" width="7" height="7" data-astro-cid-ynf3rr4n></rect><rect x="3" y="14" width="7" height="7" data-astro-cid-ynf3rr4n></rect></svg>Dashboard</a><a href="/content"${addAttribute(["nav-item", { active: navActive.content }], "class:list")} data-astro-cid-ynf3rr4n><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" data-astro-cid-ynf3rr4n><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z" data-astro-cid-ynf3rr4n></path><polyline points="14 2 14 8 20 8" data-astro-cid-ynf3rr4n></polyline><line x1="16" y1="13" x2="8" y2="13" data-astro-cid-ynf3rr4n></line><line x1="16" y1="17" x2="8" y2="17" data-astro-cid-ynf3rr4n></line><polyline points="10 9 9 9 8 9" data-astro-cid-ynf3rr4n></polyline></svg>Content</a><a href="/media"${addAttribute(["nav-item", { active: navActive.media }], "class:list")} data-astro-cid-ynf3rr4n><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" data-astro-cid-ynf3rr4n><rect x="3" y="3" width="18" height="18" rx="2" ry="2" data-astro-cid-ynf3rr4n></rect><circle cx="8.5" cy="8.5" r="1.5" data-astro-cid-ynf3rr4n></circle><polyline points="21 15 16 10 5 21" data-astro-cid-ynf3rr4n></polyline></svg>Media</a><a href="/users"${addAttribute(["nav-item", { active: navActive.users }], "class:list")} data-astro-cid-ynf3rr4n><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" data-astro-cid-ynf3rr4n><path d="M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2" data-astro-cid-ynf3rr4n></path><circle cx="9" cy="7" r="4" data-astro-cid-ynf3rr4n></circle><path d="M23 21v-2a4 4 0 0 0-3-3.87" data-astro-cid-ynf3rr4n></path><path d="M16 3.13a4 4 0 0 1 0 7.75" data-astro-cid-ynf3rr4n></path></svg>Users</a><a href="/settings"${addAttribute(["nav-item", { active: navActive.settings }], "class:list")} data-astro-cid-ynf3rr4n><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" data-astro-cid-ynf3rr4n><circle cx="12" cy="12" r="3" data-astro-cid-ynf3rr4n></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-ynf3rr4n></path></svg>Settings</a><div class="nav-submenu" data-astro-cid-ynf3rr4n>${settingsChildren.map((child) => renderTemplate`<a${addAttribute(child.href, "href")}${addAttribute(["nav-subitem", { active: child.active }], "class:list")} data-astro-cid-ynf3rr4n>${child.label}</a>`)}</div><!-- D1: slots de extensão — páginas de menu declaradas por plugins ativos -->${renderComponent($$result, "PluginExtensionsSlot", PluginExtensionsSlot, {
516
+ "client:load": true,
517
+ "data-astro-cid-ynf3rr4n": true,
518
+ "client:component-hydration": "load",
519
+ "client:component-path": "/home/runner/work/cms/cms/apps/admin/src/ext/extensions.tsx",
520
+ "client:component-export": "PluginExtensionsSlot"
521
+ })}</nav></aside><main class="main-content" data-astro-cid-ynf3rr4n><header class="main-header" data-astro-cid-ynf3rr4n><h1 class="text-lg font-bold" data-astro-cid-ynf3rr4n>${title}</h1><div class="header-actions" data-astro-cid-ynf3rr4n><button class="btn btn-secondary btn-sm" id="logout-btn" data-astro-cid-ynf3rr4n>Logout</button></div></header><div class="content" data-astro-cid-ynf3rr4n>${renderSlot($$result, $$slots["default"])}</div></main></div>` })}${renderScript($$result, "/home/runner/work/cms/cms/apps/admin/src/layouts/DashboardLayout.astro?astro&type=script&index=0&lang.ts")}`;
522
+ }, "/home/runner/work/cms/cms/apps/admin/src/layouts/DashboardLayout.astro", void 0);
523
+ //#endregion
524
+ export { For2 as a, Select as c, createMemo$1 as d, createSignal$1 as f, Card as i, Show2 as l, Badge as n, Input as o, onMount$1 as p, Button as r, Pagination as s, $$DashboardLayout as t, Table as u };