@oktis-works/admin 0.4.20 → 0.4.23

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 (144) hide show
  1. package/dist/client/_astro/{ActivityWidget.BbEtaaM-.js → ActivityWidget.DaftIB1V.js} +2 -2
  2. package/dist/client/_astro/AdminBar.B-diRxPt.js +253 -0
  3. package/dist/client/_astro/{AtGlanceWidget.C1hpeDlx.js → AtGlanceWidget.q_xwhOJa.js} +3 -3
  4. package/dist/client/_astro/BaseLayout.sayhdG_g.css +1 -0
  5. package/dist/client/_astro/ContentEditor.B1b1Ixz0.js +3 -0
  6. package/dist/client/_astro/ContentEditor.DGTZ51kU.js +1 -0
  7. package/dist/client/_astro/ContentTypeWorkspace.CFzwh3Rc.js +1 -0
  8. package/dist/client/_astro/CustomFieldsManager.DqCE6rSX.js +5 -0
  9. package/dist/client/_astro/DashboardHome.HrqKA0mK.js +1 -0
  10. package/dist/client/_astro/DashboardLayout.astro_astro_type_script_index_0_lang.sBNUxHjt.js +1 -0
  11. package/dist/client/_astro/{DashboardLayout.CGou4voc.css → DashboardLayout.cOPI1C7I.css} +1 -1
  12. package/dist/client/_astro/{Footer.rUGgtlfI.js → Footer.nQEKIcjo.js} +2 -2
  13. package/dist/client/_astro/GeneralSettings.C5lXnnvB.js +1 -0
  14. package/dist/client/_astro/LogsManager.BSXD0gFG.js +1 -0
  15. package/dist/client/_astro/MediaLibrary.9tlXDGsx.js +1 -0
  16. package/dist/client/_astro/MenuManager.CfLmtMhF.js +1 -0
  17. package/dist/client/_astro/PluginManager.Ba2R7ZVx.js +98 -0
  18. package/dist/client/_astro/PostTypesManager.DqbyhhLF.js +1 -0
  19. package/dist/client/_astro/QuickDraftWidget.J5LOLOY3.js +17 -0
  20. package/dist/client/_astro/ResourceHubs.sI10AY3z.js +1 -0
  21. package/dist/client/_astro/TaxonomiesManager.BFd3zjNe.js +1 -0
  22. package/dist/client/_astro/TaxonomyTermsManager.C7ClYXtt.js +1 -0
  23. package/dist/client/_astro/ThemeManager.C4t-yZay.js +129 -0
  24. package/dist/client/_astro/UserCreateForm.B-7pKOO6.js +1 -0
  25. package/dist/client/_astro/UsersManager.aI6-3vtM.js +1 -0
  26. package/dist/client/_astro/WebhooksManager.C3E91U9V.js +1 -0
  27. package/dist/client/_astro/api.DSIz0zxF.js +1 -0
  28. package/dist/client/_astro/ar.9BcNkJMI.js +1 -0
  29. package/dist/client/_astro/client.BDaUmf7m.js +1 -0
  30. package/dist/client/_astro/custom-fields.pl-GPt9A.css +1 -0
  31. package/dist/client/_astro/dist.BqeNZlzo.js +1 -0
  32. package/dist/client/_astro/es-ES.DgqDFCmG.js +1 -0
  33. package/dist/client/_astro/extensions.BD4YTWQq.js +1 -0
  34. package/dist/client/_astro/he.11dIJHQw.js +1 -0
  35. package/dist/client/_astro/i18n.Tk18hqHh.js +1 -0
  36. package/dist/client/_astro/it.yCdgk3Xj.js +1 -0
  37. package/dist/client/_astro/ja.BIm7Hwe_.js +1 -0
  38. package/dist/client/_astro/{login.astro_astro_type_script_index_0_lang.O-AlzgHd.js → login.astro_astro_type_script_index_0_lang.CJiWhdn-.js} +1 -1
  39. package/dist/client/_astro/lucide.DlU56wZ1.js +4 -0
  40. package/dist/client/_astro/pl.dUwrcITB.js +1 -0
  41. package/dist/client/_astro/pt-BR.BvjbjXKW.js +1 -0
  42. package/dist/client/_astro/rolldown-runtime.BpQH8Ho1.js +1 -0
  43. package/dist/client/_astro/ru.lmDiQaSu.js +1 -0
  44. package/dist/client/_astro/solid.TEtyrbLc.js +1 -0
  45. package/dist/client/_astro/sw._qHdoFbp.js +1 -0
  46. package/dist/client/_astro/tr.Do-lr98T.js +1 -0
  47. package/dist/client/_astro/uk.DTUX-N1c.js +1 -0
  48. package/dist/client/_astro/{version.BQq07lEn.js → version.Cvcb-3YL.js} +1 -1
  49. package/dist/client/_astro/web.C8wWxyYF.js +1 -0
  50. package/dist/client/_astro/yo.BIYG0J7I.js +1 -0
  51. package/dist/client/_astro/zh-CN.C7Iod1E1.js +1 -0
  52. package/dist/server/chunks/{ContentEditor_DS7flRjR.mjs → ContentEditor_Bz6HNlOl.mjs} +11 -31
  53. package/dist/server/chunks/{DashboardLayout_09DepSVn.mjs → DashboardLayout_DnvPikNH.mjs} +42 -17
  54. package/dist/server/chunks/MediaLibrary_CfwJY7WG.mjs +466 -0
  55. package/dist/server/chunks/{_slug__l8CTaLpP.mjs → _slug__Bf1zTrrT.mjs} +1 -1
  56. package/dist/server/chunks/access_Iqz1YRc2.mjs +138 -0
  57. package/dist/server/chunks/{ar_B0LfQbpu.mjs → ar_DlCzOUGe.mjs} +22 -2
  58. package/dist/server/chunks/custom-fields_HXTX5-i-.mjs +1297 -0
  59. package/dist/server/chunks/{edit_hSCrM2Gq.mjs → edit_ibDxQgfc.mjs} +2 -2
  60. package/dist/server/chunks/{es-ES_dBEm2FNw.mjs → es-ES_DD40B9Zr.mjs} +22 -2
  61. package/dist/server/chunks/{general_Ct9MU7b-.mjs → general_VinYjg7Y.mjs} +2 -2
  62. package/dist/server/chunks/{he_DRWoI1A5.mjs → he_8WSAyM_S.mjs} +22 -2
  63. package/dist/server/chunks/{i18n_BqFK0MIW.mjs → i18n_BgHPm3Sm.mjs} +337 -57
  64. package/dist/server/chunks/{index_CBfRX_VO.mjs → index_BIz2E9Ay.mjs} +3 -3
  65. package/dist/server/chunks/{index_uv0IHg8r.mjs → index_DmY8Cm8s.mjs} +2 -2
  66. package/dist/server/chunks/{index_DQ5pFuPN.mjs → index_DvyRjH_d.mjs} +2 -2
  67. package/dist/server/chunks/{index_Cv2j9xC_.mjs → index_WfuyDGIh.mjs} +2 -2
  68. package/dist/server/chunks/{index_B77wdzK2.mjs → index_kl5K78eg.mjs} +1 -1
  69. package/dist/server/chunks/{it_BDY3lerP.mjs → it_DEDC6yxf.mjs} +22 -2
  70. package/dist/server/chunks/{ja_C-EybQiV.mjs → ja_BRQi6rW3.mjs} +22 -2
  71. package/dist/server/chunks/{login_D-Z6bo6E.mjs → login_s3hMBW1K.mjs} +1 -1
  72. package/dist/server/chunks/logs_DUQUxzzy.mjs +160 -0
  73. package/dist/server/chunks/menus_CgKz8KBb.mjs +532 -0
  74. package/dist/server/chunks/{new_DpJfTahF.mjs → new_CU0A50ce.mjs} +2 -2
  75. package/dist/server/chunks/{new_XOnqlHm3.mjs → new_CZuza7Tx.mjs} +2 -2
  76. package/dist/server/chunks/{pl_DH5LKmVG.mjs → pl_CKanAk0F.mjs} +22 -2
  77. package/dist/server/chunks/plugins_fppkr9jv.mjs +133 -0
  78. package/dist/server/chunks/{post-types_DziideHh.mjs → post-types_BAWPD3pX.mjs} +2 -2
  79. package/dist/server/chunks/{pt-BR_CBnqy3xP.mjs → pt-BR_CoM1872j.mjs} +263 -13
  80. package/dist/server/chunks/{ru_CFa1xYFr.mjs → ru_CuNXt2MB.mjs} +22 -2
  81. package/dist/server/chunks/{sw_QZf7NSsI.mjs → sw_RLMWPkos.mjs} +22 -2
  82. package/dist/server/chunks/{taxonomies_Bc6xPaKp.mjs → taxonomies_BACV08DC.mjs} +2 -2
  83. package/dist/server/chunks/{taxonomy_Cv4_KTTL.mjs → taxonomy_CZLTclnV.mjs} +30 -15
  84. package/dist/server/chunks/themes_DHNmoF_s.mjs +132 -0
  85. package/dist/server/chunks/{tr_Fjry5R-K.mjs → tr_Dz8pqyTZ.mjs} +22 -2
  86. package/dist/server/chunks/{uk_Bxc3qY45.mjs → uk_BjwqlweA.mjs} +22 -2
  87. package/dist/server/chunks/{upload_CB_L9tkU.mjs → upload_BZgCqIbH.mjs} +2 -2
  88. package/dist/server/chunks/webhooks_D0qA5-De.mjs +300 -0
  89. package/dist/server/chunks/{yo_BARL-Qrh.mjs → yo_Dv14KWVR.mjs} +22 -2
  90. package/dist/server/chunks/{zh-CN_CkjPJL88.mjs → zh-CN_DjIZCWzG.mjs} +22 -2
  91. package/dist/server/entry.mjs +77 -50
  92. package/dist/server/virtual_astro_middleware.mjs +1 -1
  93. package/package.json +1 -1
  94. package/dist/client/_astro/AdminBar.CU2eba2D.js +0 -253
  95. package/dist/client/_astro/BaseLayout.Y8xW22CP.css +0 -1
  96. package/dist/client/_astro/ContentEditor.Bc5Jq8Dv.js +0 -1
  97. package/dist/client/_astro/ContentEditor.DvpaqJBD.js +0 -3
  98. package/dist/client/_astro/ContentTypeWorkspace.DakVi21h.js +0 -1
  99. package/dist/client/_astro/CustomFieldsManager.B7WOTvb7.js +0 -3
  100. package/dist/client/_astro/DashboardHome.CUfuLLDH.js +0 -1
  101. package/dist/client/_astro/DashboardLayout.astro_astro_type_script_index_0_lang.Dpnx6U2l.js +0 -4
  102. package/dist/client/_astro/FieldTypePicker.Cyfzqug-.js +0 -1
  103. package/dist/client/_astro/GeneralSettings.C4mnJ7P2.js +0 -1
  104. package/dist/client/_astro/MediaLibrary.2geQYfXB.js +0 -1
  105. package/dist/client/_astro/PluginManager.D3pm88iu.js +0 -93
  106. package/dist/client/_astro/PostTypesManager.Cyhr3VEJ.js +0 -1
  107. package/dist/client/_astro/QuickDraftWidget.CPljoS31.js +0 -17
  108. package/dist/client/_astro/ResourceHubs.DpCJERsJ.js +0 -1
  109. package/dist/client/_astro/TaxonomiesManager.P3bc-fnu.js +0 -1
  110. package/dist/client/_astro/TaxonomyTermsManager.BxP9gwm7.js +0 -1
  111. package/dist/client/_astro/ThemeManager.3MUOwqex.js +0 -129
  112. package/dist/client/_astro/UserCreateForm.C3RiEJEa.js +0 -1
  113. package/dist/client/_astro/UsersManager.DR9XR3FX.js +0 -1
  114. package/dist/client/_astro/api.25OAsWO0.js +0 -1
  115. package/dist/client/_astro/ar.CwC9hXB9.js +0 -1
  116. package/dist/client/_astro/client.W0NY0lEa.js +0 -1
  117. package/dist/client/_astro/custom-fields.IjuRIdAC.css +0 -1
  118. package/dist/client/_astro/es-ES.qNcd-cVX.js +0 -1
  119. package/dist/client/_astro/extensions.Bj86CHnv.js +0 -1
  120. package/dist/client/_astro/he.DfZ0ZzM-.js +0 -1
  121. package/dist/client/_astro/i18n.C24_pkIi.js +0 -1
  122. package/dist/client/_astro/it.PFmLQj2s.js +0 -1
  123. package/dist/client/_astro/ja.CMi5cD8g.js +0 -1
  124. package/dist/client/_astro/pl.CRExzLlj.js +0 -1
  125. package/dist/client/_astro/pt-BR.BPvwNpKR.js +0 -1
  126. package/dist/client/_astro/ru.CWV-tkZ3.js +0 -1
  127. package/dist/client/_astro/solid.DN8T1HsY.js +0 -1
  128. package/dist/client/_astro/src.Cq47pnsg.js +0 -1
  129. package/dist/client/_astro/sw.B5x6GU4s.js +0 -1
  130. package/dist/client/_astro/tr.BzxCGQu8.js +0 -1
  131. package/dist/client/_astro/uk.DJHMwNRU.js +0 -1
  132. package/dist/client/_astro/web.Bze9SKEA.js +0 -1
  133. package/dist/client/_astro/yo.DNw_hOnW.js +0 -1
  134. package/dist/client/_astro/zh-CN.Bs7H6Unx.js +0 -1
  135. package/dist/server/chunks/FieldTypePicker_CXwpmcQ3.mjs +0 -79
  136. package/dist/server/chunks/MediaLibrary_Xs09kLza.mjs +0 -335
  137. package/dist/server/chunks/ResourceHubs_Dwb0xyPZ.mjs +0 -453
  138. package/dist/server/chunks/access_D93W5BWD.mjs +0 -34
  139. package/dist/server/chunks/custom-fields_Dp7DHJ0M.mjs +0 -488
  140. package/dist/server/chunks/operations_0sYvzzNC.mjs +0 -34
  141. package/dist/server/chunks/plugins_Clk92l6Q.mjs +0 -156
  142. package/dist/server/chunks/resources_dPTDnpAf.mjs +0 -34
  143. package/dist/server/chunks/themes_BRtDtEK7.mjs +0 -155
  144. /package/dist/server/chunks/{BaseLayout_m8b8Eemd.mjs → BaseLayout_CXafpVV9.mjs} +0 -0
@@ -0,0 +1,532 @@
1
+ import { r as __exportAll } from "./rolldown-runtime_BMI-E3GI.mjs";
2
+ import { S as createAstro, d as maybeRenderHead, i as renderComponent, u as renderTemplate } from "./server_B5N27szj.mjs";
3
+ import { t as createComponent$1 } from "./compiler_O7J1rlsi.mjs";
4
+ import { n as useTranslation, r as apiClient } from "./i18n_BgHPm3Sm.mjs";
5
+ import { t as $$DashboardLayout } from "./DashboardLayout_DnvPikNH.mjs";
6
+ import { createComponent, escape, ssr, ssrAttribute, ssrHydrationKey } from "solid-js/web";
7
+ import { For, Show, createMemo, createSignal, onMount } from "solid-js";
8
+ //#region src/components/apps/menus/MenuManager.tsx
9
+ var _tmpl$ = [
10
+ "<div",
11
+ " class=\"wp-menu-empty-level\">",
12
+ "</div>"
13
+ ];
14
+ var _tmpl$2 = [
15
+ "<div",
16
+ " class=\"wp-menu-tree\"",
17
+ "><!--$-->",
18
+ "<!--/--><!--$-->",
19
+ "<!--/--></div>"
20
+ ];
21
+ var _tmpl$3 = [
22
+ "<article",
23
+ " class=\"wp-menu-item\"><div class=\"wp-menu-item__header\"><span class=\"wp-menu-drag\" draggable=\"true\"",
24
+ ">⠿⠿⠿</span><span class=\"wp-menu-item__label\"><strong>",
25
+ "</strong><small>",
26
+ "</small></span><div class=\"wp-menu-item__actions\"><button type=\"button\" class=\"btn btn-sm\"",
27
+ ">↑</button><button type=\"button\" class=\"btn btn-sm\"",
28
+ ">↓</button><button type=\"button\" class=\"btn btn-sm\"",
29
+ ">→</button><button type=\"button\" class=\"btn btn-sm\"",
30
+ ">←</button></div></div><details class=\"wp-menu-item__details\"><summary>",
31
+ "</summary><div class=\"wp-menu-item__fields\"><label><!--$-->",
32
+ "<!--/--><input class=\"input\"",
33
+ "></label><label><!--$-->",
34
+ "<!--/--><input class=\"input\"",
35
+ "></label><label><!--$-->",
36
+ "<!--/--><input class=\"input\"",
37
+ "></label><label><!--$-->",
38
+ "<!--/--><input class=\"input\"",
39
+ "></label><label><!--$-->",
40
+ "<!--/--><select class=\"input\"",
41
+ "><option value=\"_self\">",
42
+ "</option><option value=\"_blank\">",
43
+ "</option></select></label><label><!--$-->",
44
+ "<!--/--><input class=\"input\"",
45
+ "></label><label class=\"wp-menu-item__wide\"><!--$-->",
46
+ "<!--/--><textarea class=\"input\" rows=\"2\"",
47
+ "></textarea></label><button type=\"button\" class=\"btn btn-danger btn-sm\">",
48
+ "</button></div></details><!--$-->",
49
+ "<!--/--></article>"
50
+ ];
51
+ var _tmpl$4 = [
52
+ "<p",
53
+ " class=\"muted\">",
54
+ "</p>"
55
+ ];
56
+ var _tmpl$5 = [
57
+ "<details",
58
+ " class=\"wp-menu-box\"",
59
+ "><summary>",
60
+ "</summary><div class=\"wp-menu-box__body\"><!--$-->",
61
+ "<!--/--><!--$-->",
62
+ "<!--/--></div></details>"
63
+ ];
64
+ var _tmpl$6 = [
65
+ "<div",
66
+ " class=\"notice notice--error\">",
67
+ "</div>"
68
+ ];
69
+ var _tmpl$7 = [
70
+ "<div",
71
+ " class=\"notice\">",
72
+ "</div>"
73
+ ];
74
+ var _tmpl$8 = [
75
+ "<div",
76
+ " class=\"menus-manager wp-menus-manager\"><!--$-->",
77
+ "<!--/--><!--$-->",
78
+ "<!--/--><!--$-->",
79
+ "<!--/--><style>.wp-menu-editor__top,.wp-structure-heading,.wp-menu-editor__identity,.wp-menu-item__header,.wp-menu-item__actions,.form-actions{display:flex;align-items:center;gap:.7rem}.wp-menu-editor__top,.wp-structure-heading{justify-content:space-between}.wp-menu-editor__top{margin-bottom:1rem}.wp-menu-editor__top h3{margin:.25rem 0 0}.wp-eyebrow{display:block;margin-top:.7rem;font-size:.72rem;text-transform:uppercase;letter-spacing:.08em;color:var(--color-muted)}.wp-menu-editor__identity{margin-bottom:1rem;align-items:end}.wp-menu-editor__identity label{display:grid;gap:.35rem;flex:1}.wp-menu-editor__columns{display:grid;grid-template-columns:330px minmax(0,1fr);gap:1.2rem;align-items:start}.wp-menu-sources,.wp-menu-structure{min-width:0}.wp-menu-sources>h4,.wp-structure-heading h4{margin:0}.wp-menu-box{background:var(--color-surface,#fff);border:1px solid var(--color-border,#ddd);margin-bottom:.7rem}.wp-menu-box summary{cursor:pointer;padding:.8rem;font-weight:600}.wp-menu-box__body{padding:0 .8rem .8rem;display:grid;gap:.6rem}.wp-menu-box__body p{margin:0}.wp-source-list{display:grid;gap:.35rem;max-height:220px;overflow:auto;border:1px solid var(--color-border,#ddd);padding:.45rem}.wp-source-row{display:flex!important;align-items:start;gap:.45rem!important;padding:.3rem}.wp-source-row span,.wp-source-link{display:grid;gap:.12rem;text-align:left}.wp-source-row small,.wp-source-link small,.wp-menu-item__label small{color:var(--color-muted);font-size:.75rem}.wp-source-link{border:0;background:none;color:inherit;padding:.35rem;width:100%;cursor:pointer}.wp-source-link:hover{background:var(--color-surface-muted,#f5f5f5)}.wp-taxonomy-source{display:grid;gap:.2rem;border-top:1px solid var(--color-border,#ddd);padding-top:.5rem}.wp-taxonomy-source:first-child{border-top:0;padding-top:0}.wp-menu-structure{background:var(--color-surface-muted,#f7f7f7);padding:1rem}.wp-menu-structure .wp-structure-heading{margin-bottom:1rem}.wp-menu-tree{display:grid;gap:.55rem}.wp-menu-tree[data-depth=\"1\"]{margin:.55rem 0 0 2rem}.wp-menu-item{background:var(--color-surface,#fff);border:1px solid var(--color-border,#dcdcde);box-shadow:0 1px 1px rgba(0,0,0,.04)}.wp-menu-item__header{padding:.55rem .7rem}.wp-menu-drag{cursor:grab;letter-spacing:-.2rem;width:1.4rem;color:var(--color-muted);user-select:none}.wp-menu-item__label{display:grid;gap:.15rem;flex:1;min-width:0}.wp-menu-item__label small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.wp-menu-item__actions{margin-left:auto}.wp-menu-item__details{border-top:1px solid var(--color-border,#ddd)}.wp-menu-item__details summary{padding:.5rem .7rem;cursor:pointer;color:var(--color-muted);font-size:.85rem}.wp-menu-item__fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.7rem;padding:.7rem;border-top:1px solid var(--color-border,#ddd)}.wp-menu-item__fields label{display:grid;gap:.3rem}.wp-menu-item__wide{grid-column:1/-1}.wp-menu-empty,.wp-menu-empty-level{text-align:center;padding:2rem;color:var(--color-muted)}.wp-menu-empty-level{border:1px dashed var(--color-border,#ccc);padding:1rem}.wp-menu-settings{margin-top:1rem}.wp-menu-settings h4{margin-top:0}.wp-menu-settings p{margin-bottom:0}.wp-menus-manager .menu-actions{white-space:nowrap;text-align:right}@media(max-width:850px){.wp-menu-editor__columns{grid-template-columns:1fr}.wp-menu-sources{order:2}.wp-menu-structure{order:1}.wp-menu-editor__identity,.wp-menu-editor__top{align-items:stretch;display:grid}.wp-menu-item__fields{grid-template-columns:1fr}.wp-menu-item__wide{grid-column:auto}}</style></div>"
80
+ ];
81
+ var _tmpl$9 = [
82
+ "<div",
83
+ " class=\"skeleton\">",
84
+ "</div>"
85
+ ];
86
+ var _tmpl$0 = [
87
+ "<div",
88
+ " class=\"manager-toolbar\"><p class=\"muted\">",
89
+ "</p><button class=\"btn btn-primary\" type=\"button\">+ <!--$-->",
90
+ "<!--/--></button></div>"
91
+ ];
92
+ var _tmpl$1 = [
93
+ "<table",
94
+ " class=\"table\"><thead><tr><th>",
95
+ "</th><th>",
96
+ "</th><th>",
97
+ "</th><th></th></tr></thead><tbody>",
98
+ "</tbody></table>"
99
+ ];
100
+ var _tmpl$10 = [
101
+ "<section",
102
+ " class=\"card\">",
103
+ "</section>"
104
+ ];
105
+ var _tmpl$11 = [
106
+ "<p",
107
+ " class=\"muted empty-state\">",
108
+ "</p>"
109
+ ];
110
+ var _tmpl$12 = [
111
+ "<tr",
112
+ "><td><strong>",
113
+ "</strong></td><td><code>",
114
+ "</code></td><td>",
115
+ "</td><td class=\"menu-actions\"><button class=\"btn btn-secondary btn-sm\" type=\"button\">",
116
+ "</button> <button class=\"btn btn-danger btn-sm\" type=\"button\">",
117
+ "</button></td></tr>"
118
+ ];
119
+ var _tmpl$13 = [
120
+ "<input",
121
+ " class=\"input\"",
122
+ ">"
123
+ ];
124
+ var _tmpl$14 = [
125
+ "<div",
126
+ " class=\"wp-source-list\">",
127
+ "</div>"
128
+ ];
129
+ var _tmpl$15 = [
130
+ "<button",
131
+ " type=\"button\" class=\"btn btn-secondary btn-sm\">",
132
+ "</button>"
133
+ ];
134
+ var _tmpl$16 = [
135
+ "<label",
136
+ "><!--$-->",
137
+ "<!--/--><input class=\"input\"",
138
+ " placeholder=\"https://\"></label>"
139
+ ];
140
+ var _tmpl$17 = [
141
+ "<label",
142
+ "><!--$-->",
143
+ "<!--/--><input class=\"input\"",
144
+ "></label>"
145
+ ];
146
+ var _tmpl$18 = [
147
+ "<form",
148
+ " class=\"wp-menu-editor\"><div class=\"wp-menu-editor__top\"><div><button type=\"button\" class=\"btn btn-secondary btn-sm\">← <!--$-->",
149
+ "<!--/--></button><span class=\"wp-eyebrow\">",
150
+ "</span><h3>",
151
+ "</h3></div><div class=\"form-actions\"><button class=\"btn btn-secondary\" type=\"button\">",
152
+ "</button><button class=\"btn btn-primary\" type=\"submit\"",
153
+ ">",
154
+ "</button></div></div><div class=\"wp-menu-editor__identity card\"><label><!--$-->",
155
+ "<!--/--><input class=\"input\" required",
156
+ "></label><label><!--$-->",
157
+ "<!--/--><input class=\"input\"",
158
+ "></label></div><div class=\"wp-menu-editor__columns\"><aside class=\"wp-menu-sources\"><h4>",
159
+ "</h4><!--$-->",
160
+ "<!--/--><!--$-->",
161
+ "<!--/--><!--$-->",
162
+ "<!--/--><!--$-->",
163
+ "<!--/--><!--$-->",
164
+ "<!--/--><!--$-->",
165
+ "<!--/--><!--$-->",
166
+ "<!--/--></aside><main class=\"wp-menu-structure\"><div class=\"wp-structure-heading\"><div><h4>",
167
+ "</h4><p class=\"muted\">",
168
+ "</p></div><span class=\"badge\"><!--$-->",
169
+ "<!--/--> <!--$-->",
170
+ "<!--/--></span></div><!--$-->",
171
+ "<!--/--><section class=\"card wp-menu-settings\"><h4>",
172
+ "</h4><label class=\"checkbox-label\"><input type=\"checkbox\"",
173
+ "> <!--$-->",
174
+ "<!--/--></label><p class=\"muted\">",
175
+ "</p></section></main></div></form>"
176
+ ];
177
+ var _tmpl$19 = [
178
+ "<label",
179
+ " class=\"wp-source-row\"><input type=\"checkbox\"",
180
+ "><span><!--$-->",
181
+ "<!--/--><small>/<!--$-->",
182
+ "<!--/--></small></span></label>"
183
+ ];
184
+ var _tmpl$20 = [
185
+ "<label",
186
+ " class=\"wp-source-row\"><input type=\"checkbox\"",
187
+ "><span><!--$-->",
188
+ "<!--/--><small>/post/<!--$-->",
189
+ "<!--/--></small></span></label>"
190
+ ];
191
+ var _tmpl$21 = [
192
+ "<div",
193
+ " class=\"wp-taxonomy-source\"><strong>",
194
+ "</strong><!--$-->",
195
+ "<!--/--></div>"
196
+ ];
197
+ var _tmpl$22 = [
198
+ "<button",
199
+ " type=\"button\" class=\"wp-source-link\"><!--$-->",
200
+ "<!--/--><small>/<!--$-->",
201
+ "<!--/-->/<!--$-->",
202
+ "<!--/--></small></button>"
203
+ ];
204
+ var _tmpl$23 = [
205
+ "<button",
206
+ " type=\"button\" class=\"wp-source-link\"><!--$-->",
207
+ "<!--/--><small>/<!--$-->",
208
+ "<!--/--></small></button>"
209
+ ];
210
+ var _tmpl$24 = [
211
+ "<div",
212
+ " class=\"wp-menu-empty card\">",
213
+ "</div>"
214
+ ];
215
+ function slugify(value) {
216
+ return value.toLowerCase().normalize("NFD").replace(/[\u0300-\u036f]/g, "").replace(/[^a-z0-9]+/g, "-").replace(/(^-|-$)/g, "");
217
+ }
218
+ function updateTreeItem(items, id, patch) {
219
+ return items.map((item) => item.id === id ? {
220
+ ...item,
221
+ ...patch
222
+ } : {
223
+ ...item,
224
+ children: updateTreeItem(item.children, id, patch)
225
+ });
226
+ }
227
+ function MenuTree(props) {
228
+ const [dragging, setDragging] = createSignal(null);
229
+ return ssr(_tmpl$2, ssrHydrationKey(), ssrAttribute("data-depth", escape(props.depth ?? 0, true), false), escape(createComponent(For, {
230
+ get each() {
231
+ return props.items;
232
+ },
233
+ children: (item) => ssr(_tmpl$3, ssrHydrationKey(), ssrAttribute("title", escape(props.t("menus.editor.drag"), true), false), escape(item.label || props.t("menus.editor.untitled")), escape(item.url || props.t("menus.editor.noUrl")), ssrAttribute("title", escape(props.t("menus.editor.up"), true), false), ssrAttribute("title", escape(props.t("menus.editor.down"), true), false), ssrAttribute("title", escape(props.t("menus.editor.indent"), true), false), ssrAttribute("title", escape(props.t("menus.editor.outdent"), true), false), escape(props.t("menus.editor.itemSettings")), escape(props.t("menus.editor.navigationLabel")), ssrAttribute("value", escape(item.label, true), false), escape(props.t("menus.editor.url")), ssrAttribute("value", escape(item.url ?? "", true), false), escape(props.t("menus.editor.titleAttribute")), ssrAttribute("value", escape(item.attrTitle ?? "", true), false), escape(props.t("menus.editor.cssClasses")), ssrAttribute("value", escape(item.cssClasses ?? "", true), false), escape(props.t("menus.editor.target")), ssrAttribute("value", escape(item.target ?? "_self", true), false), escape(props.t("menus.editor.sameWindow")), escape(props.t("menus.editor.newWindow")), escape(props.t("menus.editor.xfn")), ssrAttribute("value", escape(item.xfn ?? "", true), false), escape(props.t("menus.editor.description")), ssrAttribute("value", escape(item.description ?? "", true), false), escape(props.t("menus.editor.remove")), escape(createComponent(Show, {
234
+ get when() {
235
+ return item.children.length > 0;
236
+ },
237
+ get children() {
238
+ return createComponent(MenuTree, {
239
+ get items() {
240
+ return item.children;
241
+ },
242
+ get depth() {
243
+ return (props.depth ?? 0) + 1;
244
+ },
245
+ get t() {
246
+ return props.t;
247
+ },
248
+ onChange: (children) => props.onChange(updateTreeItem(props.items, item.id, { children }))
249
+ });
250
+ }
251
+ })))
252
+ })), escape(createComponent(Show, {
253
+ get when() {
254
+ return props.items.length === 0;
255
+ },
256
+ get children() {
257
+ return ssr(_tmpl$, ssrHydrationKey(), escape(props.t("menus.editor.emptyLevel")));
258
+ }
259
+ })));
260
+ }
261
+ function LinkBox(props) {
262
+ return ssr(_tmpl$5, ssrHydrationKey(), ssrAttribute("open", props.open, true), escape(props.title), escape(createComponent(Show, {
263
+ get when() {
264
+ return props.description;
265
+ },
266
+ get children() {
267
+ return ssr(_tmpl$4, ssrHydrationKey(), escape(props.description));
268
+ }
269
+ })), escape(props.children));
270
+ }
271
+ function MenuManager() {
272
+ const { t } = useTranslation();
273
+ const [menus, setMenus] = createSignal([]);
274
+ const [editing, setEditing] = createSignal(null);
275
+ const [pages, setPages] = createSignal([]);
276
+ const [posts, setPosts] = createSignal([]);
277
+ const [customContent, setCustomContent] = createSignal({});
278
+ const [contentTypes, setContentTypes] = createSignal([]);
279
+ const [taxonomies, setTaxonomies] = createSignal([]);
280
+ const [terms, setTerms] = createSignal({});
281
+ const [pageSearch, setPageSearch] = createSignal("");
282
+ const [postSearch, setPostSearch] = createSignal("");
283
+ const [selectedLinks, setSelectedLinks] = createSignal([]);
284
+ const [customUrl, setCustomUrl] = createSignal("");
285
+ const [customLabel, setCustomLabel] = createSignal("");
286
+ const [loading, setLoading] = createSignal(true);
287
+ const [saving, setSaving] = createSignal(false);
288
+ const [error, setError] = createSignal("");
289
+ const [notice, setNotice] = createSignal("");
290
+ const load = async () => {
291
+ setLoading(true);
292
+ setError("");
293
+ try {
294
+ const [hookMenus, pageResult, postResult, types, taxonomyList] = await Promise.all([
295
+ apiClient.getMenus(),
296
+ apiClient.getContent({
297
+ type: "page",
298
+ status: "PUBLISHED",
299
+ limit: 100
300
+ }),
301
+ apiClient.getContent({
302
+ type: "post",
303
+ status: "PUBLISHED",
304
+ limit: 100
305
+ }),
306
+ apiClient.getContentTypes(),
307
+ apiClient.getTaxonomies()
308
+ ]);
309
+ setMenus(hookMenus);
310
+ setPages(pageResult.data);
311
+ setPosts(postResult.data);
312
+ setContentTypes(types);
313
+ setTaxonomies(taxonomyList);
314
+ const customEntries = await Promise.all(types.filter((type) => type.slug !== "page" && type.slug !== "post" && !type.singleton).map(async (type) => [type.slug, (await apiClient.getContent({
315
+ type: type.slug,
316
+ status: "PUBLISHED",
317
+ limit: 100
318
+ })).data]));
319
+ setCustomContent(Object.fromEntries(customEntries));
320
+ const termEntries = await Promise.all(taxonomyList.map(async (taxonomy) => [taxonomy.slug, await apiClient.getTaxonomyTerms(taxonomy.slug)]));
321
+ setTerms(Object.fromEntries(termEntries));
322
+ } catch (err) {
323
+ setError(err instanceof Error ? err.message : String(err));
324
+ } finally {
325
+ setLoading(false);
326
+ }
327
+ };
328
+ onMount(load);
329
+ const update = (patch) => {
330
+ const current = editing();
331
+ if (current) setEditing({
332
+ ...current,
333
+ ...patch
334
+ });
335
+ };
336
+ const filteredPages = createMemo(() => pages().filter((page) => !pageSearch() || `${page.title} ${page.slug}`.toLowerCase().includes(pageSearch().toLowerCase())));
337
+ const filteredPosts = createMemo(() => posts().filter((post) => !postSearch() || `${post.title} ${post.slug}`.toLowerCase().includes(postSearch().toLowerCase())));
338
+ return ssr(_tmpl$8, ssrHydrationKey(), escape(createComponent(Show, {
339
+ get when() {
340
+ return error();
341
+ },
342
+ get children() {
343
+ return ssr(_tmpl$6, ssrHydrationKey(), escape(error()));
344
+ }
345
+ })), escape(createComponent(Show, {
346
+ get when() {
347
+ return notice();
348
+ },
349
+ get children() {
350
+ return ssr(_tmpl$7, ssrHydrationKey(), escape(notice()));
351
+ }
352
+ })), escape(createComponent(Show, {
353
+ get when() {
354
+ return !loading();
355
+ },
356
+ get fallback() {
357
+ return ssr(_tmpl$9, ssrHydrationKey(), escape(t("common.loading")));
358
+ },
359
+ get children() {
360
+ return createComponent(Show, {
361
+ get when() {
362
+ return editing();
363
+ },
364
+ get fallback() {
365
+ return [ssr(_tmpl$0, ssrHydrationKey(), escape(t("menus.hint")), escape(t("menus.new"))), ssr(_tmpl$10, ssrHydrationKey(), escape(createComponent(Show, {
366
+ get when() {
367
+ return menus().length > 0;
368
+ },
369
+ get fallback() {
370
+ return ssr(_tmpl$11, ssrHydrationKey(), escape(t("menus.empty")));
371
+ },
372
+ get children() {
373
+ return ssr(_tmpl$1, ssrHydrationKey(), escape(t("menus.name")), escape(t("menus.slug")), escape(t("menus.items")), escape(createComponent(For, {
374
+ get each() {
375
+ return menus();
376
+ },
377
+ children: (menu) => ssr(_tmpl$12, ssrHydrationKey(), escape(menu.name), escape(menu.slug), escape(menu.items?.length ?? 0), escape(t("common.edit")), escape(t("common.delete")))
378
+ })));
379
+ }
380
+ })))];
381
+ },
382
+ children: (current) => ssr(_tmpl$18, ssrHydrationKey(), escape(t("menus.back")), escape(t("menus.editor.eyebrow")), current().id ? escape(t("menus.edit")) : escape(t("menus.create")), escape(t("common.cancel")), ssrAttribute("disabled", saving(), true), saving() ? escape(t("common.loading")) : escape(t("common.save")), escape(t("menus.name")), ssrAttribute("value", escape(current().name, true), false), escape(t("menus.slug")), ssrAttribute("value", escape(current().slug, true), false) + ssrAttribute("placeholder", escape(slugify(current().name), true), false), escape(t("menus.editor.addItems")), escape(createComponent(LinkBox, {
383
+ get title() {
384
+ return t("menus.sources.pages");
385
+ },
386
+ open: true,
387
+ get children() {
388
+ return [
389
+ ssr(_tmpl$13, ssrHydrationKey(), ssrAttribute("placeholder", escape(t("menus.editor.search"), true), false) + ssrAttribute("value", escape(pageSearch(), true), false)),
390
+ ssr(_tmpl$14, ssrHydrationKey(), escape(createComponent(For, {
391
+ get each() {
392
+ return filteredPages();
393
+ },
394
+ children: (page) => ssr(_tmpl$19, ssrHydrationKey(), ssrAttribute("checked", selectedLinks().includes(`page:${page.id}`), true), escape(page.title), escape(page.slug))
395
+ }))),
396
+ ssr(_tmpl$15, ssrHydrationKey(), escape(t("menus.editor.addSelected")))
397
+ ];
398
+ }
399
+ })), escape(createComponent(LinkBox, {
400
+ get title() {
401
+ return t("menus.sources.posts");
402
+ },
403
+ get children() {
404
+ return [
405
+ ssr(_tmpl$13, ssrHydrationKey(), ssrAttribute("placeholder", escape(t("menus.editor.search"), true), false) + ssrAttribute("value", escape(postSearch(), true), false)),
406
+ ssr(_tmpl$14, ssrHydrationKey(), escape(createComponent(For, {
407
+ get each() {
408
+ return filteredPosts();
409
+ },
410
+ children: (post) => ssr(_tmpl$20, ssrHydrationKey(), ssrAttribute("checked", selectedLinks().includes(`post:${post.id}`), true), escape(post.title), escape(post.slug))
411
+ }))),
412
+ ssr(_tmpl$15, ssrHydrationKey(), escape(t("menus.editor.addSelected")))
413
+ ];
414
+ }
415
+ })), escape(createComponent(LinkBox, {
416
+ get title() {
417
+ return t("menus.sources.contentTypes");
418
+ },
419
+ get children() {
420
+ return createComponent(For, {
421
+ get each() {
422
+ return contentTypes().filter((type) => type.slug !== "page" && type.slug !== "post" && !type.singleton);
423
+ },
424
+ children: (type) => ssr(_tmpl$21, ssrHydrationKey(), escape(type.pluralLabel), escape(createComponent(For, {
425
+ get each() {
426
+ return customContent()[type.slug] ?? [];
427
+ },
428
+ children: (content) => ssr(_tmpl$22, ssrHydrationKey(), escape(content.title), escape(type.slug), escape(content.slug))
429
+ })))
430
+ });
431
+ }
432
+ })), escape(createComponent(LinkBox, {
433
+ get title() {
434
+ return t("menus.sources.custom");
435
+ },
436
+ get description() {
437
+ return t("menus.sources.customHint");
438
+ },
439
+ get children() {
440
+ return [
441
+ ssr(_tmpl$16, ssrHydrationKey(), escape(t("menus.editor.url")), ssrAttribute("value", escape(customUrl(), true), false)),
442
+ ssr(_tmpl$17, ssrHydrationKey(), escape(t("menus.editor.navigationLabel")), ssrAttribute("value", escape(customLabel(), true), false)),
443
+ ssr(_tmpl$15, ssrHydrationKey(), escape(t("menus.editor.addToMenu")))
444
+ ];
445
+ }
446
+ })), escape(createComponent(LinkBox, {
447
+ get title() {
448
+ return t("menus.sources.home");
449
+ },
450
+ get children() {
451
+ return ssr(_tmpl$15, ssrHydrationKey(), escape(t("menus.editor.addToMenu")));
452
+ }
453
+ })), escape(createComponent(LinkBox, {
454
+ get title() {
455
+ return t("menus.sources.archives");
456
+ },
457
+ get children() {
458
+ return ssr(_tmpl$14, ssrHydrationKey(), escape(createComponent(For, {
459
+ get each() {
460
+ return contentTypes().filter((type) => type.hasArchive);
461
+ },
462
+ children: (type) => ssr(_tmpl$23, ssrHydrationKey(), escape(type.pluralLabel), escape(type.slug))
463
+ })));
464
+ }
465
+ })), escape(createComponent(LinkBox, {
466
+ get title() {
467
+ return t("menus.sources.taxonomies");
468
+ },
469
+ get children() {
470
+ return createComponent(For, {
471
+ get each() {
472
+ return taxonomies();
473
+ },
474
+ children: (taxonomy) => ssr(_tmpl$21, ssrHydrationKey(), escape(taxonomy.name), escape(createComponent(For, {
475
+ get each() {
476
+ return terms()[taxonomy.slug] ?? [];
477
+ },
478
+ children: (term) => ssr(_tmpl$22, ssrHydrationKey(), escape(term.name), escape(taxonomy.slug), escape(term.slug))
479
+ })))
480
+ });
481
+ }
482
+ })), escape(t("menus.editor.structure")), escape(t("menus.editor.structureHint")), escape(current().items.length), escape(t("menus.items")), escape(createComponent(Show, {
483
+ get when() {
484
+ return current().items.length > 0;
485
+ },
486
+ get fallback() {
487
+ return ssr(_tmpl$24, ssrHydrationKey(), escape(t("menus.editor.empty")));
488
+ },
489
+ get children() {
490
+ return createComponent(MenuTree, {
491
+ get items() {
492
+ return current().items;
493
+ },
494
+ t,
495
+ onChange: (items) => update({ items })
496
+ });
497
+ }
498
+ })), escape(t("menus.editor.settings")), ssrAttribute("checked", current().settings.autoAddNewPages === true, true), escape(t("menus.editor.autoAddPages")), escape(t("menus.editor.autoAddPagesHint")))
499
+ });
500
+ }
501
+ })));
502
+ }
503
+ //#endregion
504
+ //#region src/pages/menus.astro
505
+ var menus_exports = /* @__PURE__ */ __exportAll({
506
+ default: () => $$Menus,
507
+ file: () => $$file,
508
+ url: () => $$url
509
+ });
510
+ createAstro("https://astro.build");
511
+ var $$Menus = createComponent$1(($$result, $$props, $$slots) => {
512
+ const Astro = $$result.createAstro($$props, $$slots);
513
+ Astro.self = $$Menus;
514
+ const { t } = Astro.locals;
515
+ return renderTemplate`${renderComponent($$result, "DashboardLayout", $$DashboardLayout, {
516
+ "title": t("menus.title"),
517
+ "data-astro-cid-4aaqbbv6": true
518
+ }, { "default": ($$result) => renderTemplate`${maybeRenderHead($$result)}<div class="menus-page" data-astro-cid-4aaqbbv6><div class="page-header" data-astro-cid-4aaqbbv6><h2 data-astro-cid-4aaqbbv6>${t("menus.title")}</h2><p data-astro-cid-4aaqbbv6>${t("menus.description")}</p></div>${renderComponent($$result, "MenuManager", MenuManager, {
519
+ "client:load": true,
520
+ "data-astro-cid-4aaqbbv6": true,
521
+ "client:component-hydration": "load",
522
+ "client:component-path": "/home/runner/work/cms/cms/apps/admin/src/components/apps/menus/MenuManager.tsx",
523
+ "client:component-export": "MenuManager"
524
+ })}</div>` })}`;
525
+ }, "/home/runner/work/cms/cms/apps/admin/src/pages/menus.astro", void 0);
526
+ var $$file = "/home/runner/work/cms/cms/apps/admin/src/pages/menus.astro";
527
+ var $$url = "/menus";
528
+ //#endregion
529
+ //#region \0virtual:astro:page:src/pages/menus@_@astro
530
+ var page = () => menus_exports;
531
+ //#endregion
532
+ export { page };
@@ -1,8 +1,8 @@
1
1
  import { r as __exportAll } from "./rolldown-runtime_BMI-E3GI.mjs";
2
2
  import { S as createAstro, d as maybeRenderHead, i as renderComponent, u as renderTemplate } from "./server_B5N27szj.mjs";
3
3
  import { t as createComponent$1 } from "./compiler_O7J1rlsi.mjs";
4
- import { n as useTranslation, r as apiClient } from "./i18n_BqFK0MIW.mjs";
5
- import { t as $$DashboardLayout } from "./DashboardLayout_09DepSVn.mjs";
4
+ import { n as useTranslation, r as apiClient } from "./i18n_BgHPm3Sm.mjs";
5
+ import { t as $$DashboardLayout } from "./DashboardLayout_DnvPikNH.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/users/UserCreateForm.tsx
@@ -1,8 +1,8 @@
1
1
  import { r as __exportAll } from "./rolldown-runtime_BMI-E3GI.mjs";
2
2
  import { S as createAstro, d as maybeRenderHead, i as renderComponent, u as renderTemplate } from "./server_B5N27szj.mjs";
3
3
  import { t as createComponent } from "./compiler_O7J1rlsi.mjs";
4
- import { t as $$DashboardLayout } from "./DashboardLayout_09DepSVn.mjs";
5
- import { t as ContentEditor } from "./ContentEditor_DS7flRjR.mjs";
4
+ import { t as $$DashboardLayout } from "./DashboardLayout_DnvPikNH.mjs";
5
+ import { t as ContentEditor } from "./ContentEditor_Bz6HNlOl.mjs";
6
6
  //#region src/pages/content/[type]/new.astro
7
7
  var new_exports = /* @__PURE__ */ __exportAll({
8
8
  default: () => $$New,
@@ -7,6 +7,7 @@ var layout = {
7
7
  "content": "Treści",
8
8
  "media": "Media",
9
9
  "users": "Użytkownicy",
10
+ "menus": "Menu",
10
11
  "settings": "Ustawienia",
11
12
  "plugins": "Wtyczki",
12
13
  "themes": "Motywy"
@@ -122,7 +123,25 @@ var content = {
122
123
  "inspectTypes": "Zbadaj dostępne typy",
123
124
  "save": "Zapisz",
124
125
  "saved": "Treść zapisana pomyślnie."
125
- }
126
+ },
127
+ "taxonomy": { "editTerm": "Edytuj termin" }
128
+ };
129
+ var menus = {
130
+ "title": "Menu",
131
+ "description": "Twórz i zarządzaj menu nawigacyjnymi witryny.",
132
+ "hint": "Menu są niezależne od typów treści i mogą być wyświetlane przez motyw.",
133
+ "new": "Nowe menu",
134
+ "create": "Utwórz menu",
135
+ "edit": "Edytuj menu",
136
+ "name": "Nazwa",
137
+ "slug": "Slug",
138
+ "items": "Elementy menu (JSON)",
139
+ "itemsHint": "Użyj tablicy JSON obiektów elementów menu.",
140
+ "invalidItems": "Elementy menu muszą być prawidłową tablicą JSON.",
141
+ "saved": "Menu zapisane.",
142
+ "deleted": "Menu usunięte.",
143
+ "empty": "Brak menu.",
144
+ "confirmDelete": "Usunąć menu \"{name}\"?"
126
145
  };
127
146
  var media = {
128
147
  "title": "Biblioteka Multimedialna",
@@ -395,6 +414,7 @@ var pl_default = {
395
414
  layout,
396
415
  dashboard,
397
416
  content,
417
+ menus,
398
418
  media,
399
419
  users,
400
420
  settings,
@@ -407,4 +427,4 @@ var pl_default = {
407
427
  screenOptions
408
428
  };
409
429
  //#endregion
410
- export { activity, adminBar, common, content, dashboard, pl_default as default, footer, helpTabs, layout, login, media, screenOptions, settings, users };
430
+ export { activity, adminBar, common, content, dashboard, pl_default as default, footer, helpTabs, layout, login, media, menus, screenOptions, settings, users };