@opengis/cms 0.0.16 → 0.0.17

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 (175) hide show
  1. package/README.md +96 -3
  2. package/dist/assets/AddUser-CX-McfRW.js +1 -0
  3. package/dist/assets/ApiKeys-DSv1exYv.js +16 -0
  4. package/dist/assets/Appearance-DDtOUvCV.js +6 -0
  5. package/dist/assets/ArticlesPage-D6B3cZsl.js +6 -0
  6. package/dist/assets/BuilderPage-CCeSMVWe.js +1 -0
  7. package/dist/assets/CollectionsBreadcrumb.vue_vue_type_script_setup_true_lang-DVYVfYF4.js +1 -0
  8. package/dist/assets/CollectionsPage-CHk8Cn5k.js +1 -0
  9. package/dist/assets/Dashboard-Bs7sXO6h.js +11 -0
  10. package/dist/assets/EditCollectionPage-gPuLJrN8.js +41 -0
  11. package/dist/assets/EmailPage-DhlWsPxk.js +1 -0
  12. package/dist/assets/EmptyData-Ct-xQv_N.js +1 -0
  13. package/dist/assets/FeedbackPage-DtaOncVv.js +1 -0
  14. package/dist/assets/Logs-CZ5klHNK.js +1 -0
  15. package/dist/assets/MediaBreadcrumb-BpOxt5PK.js +11 -0
  16. package/dist/assets/MediaPage-DqRcZFlO.js +16 -0
  17. package/dist/assets/MenuAddPage-BLcoVgrS.js +1 -0
  18. package/dist/assets/MenuItemPage-B2otXqkz.js +20 -0
  19. package/dist/assets/MenuPage-C00m4Fc_.js +1 -0
  20. package/dist/assets/MonacoEditor.vue_vue_type_script_setup_true_lang-CjoEsC67.js +3 -0
  21. package/dist/assets/PermissionsPage-LtqcCJ14.js +1 -0
  22. package/dist/assets/Settings-BHH6RoBP.js +1 -0
  23. package/dist/assets/SettingsTable-CY5pZx1z.js +1 -0
  24. package/dist/assets/SettingsTitle-t4WJBFxZ.js +1 -0
  25. package/dist/assets/SingletonsPage-Bn2Ypjhs.js +6 -0
  26. package/dist/assets/TagsPage-DAiakEth.js +1 -0
  27. package/dist/assets/UniversalTable.vue_vue_type_script_setup_true_lang-BQ5m4aZd.js +11 -0
  28. package/dist/assets/UniversalTablePagination.vue_vue_type_script_setup_true_lang-DppVBws0.js +1 -0
  29. package/dist/assets/Users-CMH5j0db.js +1 -0
  30. package/dist/assets/UsersPage-CDGreEib.js +1 -0
  31. package/dist/assets/arrow-up-DCe0WsrM.js +16 -0
  32. package/dist/assets/{calendar-hsWc4yH-.js → calendar-o9t4MkD2.js} +1 -1
  33. package/dist/assets/chevron-left-WFftVS9c.js +6 -0
  34. package/dist/assets/chevron-right-BiiSb3Be.js +6 -0
  35. package/dist/assets/contentForm-unZQhjCu.js +6 -0
  36. package/dist/assets/en-BDx3Svx8.js +1 -0
  37. package/dist/assets/eye-Dijywc6g.js +6 -0
  38. package/dist/assets/file-B_duymIT.js +6 -0
  39. package/dist/assets/general-CkN_0qIV.js +1 -0
  40. package/dist/assets/index-BIp7eSXk.js +1 -0
  41. package/dist/assets/index-DCW2e4Az.js +9 -0
  42. package/dist/assets/index-DGweaj24.js +1 -0
  43. package/dist/assets/index-W-qQIppj-BDlsxaGB.js +1 -0
  44. package/dist/assets/index-W-qQIppj-BsopI3Hz-BIZR-dhy.js +1 -0
  45. package/dist/assets/index-oQz9FOqL.css +1 -0
  46. package/dist/assets/index-yMJAVBXk.js +290 -0
  47. package/dist/assets/list-CXRbSNky.js +6 -0
  48. package/dist/assets/pencil-CwnPP4IJ.js +6 -0
  49. package/dist/assets/{plus-D9etvrM2.js → plus-DLR44m6p.js} +1 -1
  50. package/dist/assets/save-FeDrOUOd.js +6 -0
  51. package/dist/assets/{search-BI-hqhq6.js → search-C4-fHihx.js} +1 -1
  52. package/dist/assets/{square-pen-61CkyXzK.js → square-pen-xVs4e8Yb.js} +1 -1
  53. package/dist/assets/{trash-2-CJSl_r88.js → trash-2-BGXMNU3d.js} +1 -1
  54. package/dist/assets/uk-BA7DIKEL.js +1 -0
  55. package/dist/assets/useDebounce-DFq3rxAW.js +1 -0
  56. package/dist/assets/vs-form-reletion-link-C-xrdHDl.js +20 -0
  57. package/dist/assets/vs-form-reletion-link-bk-9ZkDH.css +1 -0
  58. package/dist/assets/vue.-sixQ7xP-CUPNuJcq.js +1 -0
  59. package/dist/assets/vuedraggable.umd-W_2WTF6i.js +14 -0
  60. package/dist/assets/{x-BNquQe5y.js → x-D2t-wfBe.js} +1 -1
  61. package/dist/index.html +14 -9
  62. package/package.json +35 -31
  63. package/plugin.js +63 -23
  64. package/server/app.js +20 -3
  65. package/server/functions/getDraftKey.js +22 -0
  66. package/server/index.js +2 -3
  67. package/server/migrations/fixes.sql +124 -0
  68. package/server/migrations/site.sql +338 -249
  69. package/server/plugins/adminHook.js +2 -2
  70. package/server/plugins/hook.js +53 -61
  71. package/server/plugins/vite.js +5 -5
  72. package/server/routes/cms/controllers/cmsStat.js +56 -0
  73. package/server/routes/cms/controllers/cmsSuggest.js +58 -0
  74. package/server/routes/cms/controllers/deleteContent.js +114 -59
  75. package/server/routes/cms/controllers/deleteMedia.js +75 -46
  76. package/server/routes/cms/controllers/downloadMedia.js +48 -48
  77. package/server/routes/cms/controllers/getContent.js +110 -95
  78. package/server/routes/cms/controllers/getContentBySlug.js +95 -0
  79. package/server/routes/cms/controllers/getPermissions.js +15 -15
  80. package/server/routes/cms/controllers/insertContent.js +218 -68
  81. package/server/routes/cms/controllers/listMedia.js +93 -72
  82. package/server/routes/cms/controllers/metadataMedia.js +38 -37
  83. package/server/routes/cms/controllers/properties.get.js +53 -0
  84. package/server/routes/cms/controllers/properties.post.js +99 -0
  85. package/server/routes/cms/controllers/searchContent.js +205 -0
  86. package/server/routes/cms/controllers/setPermissions.js +49 -49
  87. package/server/routes/cms/controllers/translate.js +90 -0
  88. package/server/routes/cms/controllers/updateContent.js +238 -111
  89. package/server/routes/cms/controllers/uploadMedia.js +78 -65
  90. package/server/routes/cms/index.mjs +81 -12
  91. package/server/routes/cms/utils/additionalData.js +36 -0
  92. package/server/routes/cms/utils/getCollection.js +82 -0
  93. package/server/routes/cms/utils/getSingle.js +188 -0
  94. package/server/routes/cms/utils/insertContentLocalization.js +87 -0
  95. package/server/routes/cms/utils/requestTranslation.js +85 -0
  96. package/server/routes/cms/utils/updateLocalization.js +48 -0
  97. package/server/routes/cmsSpace/controllers/deleteSpace.js +26 -0
  98. package/server/routes/cmsSpace/controllers/getSpaces.js +28 -0
  99. package/server/routes/cmsSpace/controllers/insertSpace.js +22 -0
  100. package/server/routes/cmsSpace/controllers/updateSpace.js +24 -0
  101. package/server/routes/cmsSpace/index.mjs +20 -0
  102. package/server/routes/contentType/controllers/addContentType.js +162 -0
  103. package/server/routes/contentType/controllers/contentTypeList.js +54 -0
  104. package/server/routes/contentType/controllers/delContentType.js +75 -0
  105. package/server/routes/contentType/controllers/editContentType.js +61 -0
  106. package/server/routes/contentType/controllers/getContentType.js +37 -0
  107. package/server/routes/contentType/index.mjs +29 -19
  108. package/server/routes/contentType/utils/updateContents.js +29 -0
  109. package/server/routes/contentType/utils/updateCustomContentTable.js +56 -0
  110. package/server/routes/feedback/controllers/email.list.js +25 -0
  111. package/server/routes/feedback/controllers/feedback.js +49 -0
  112. package/server/routes/feedback/controllers/feedback.list.js +38 -0
  113. package/server/routes/feedback/controllers/news.subscriptions.js +44 -0
  114. package/server/routes/feedback/index.mjs +72 -0
  115. package/server/routes/logs/controllers/export.user.logs.js +78 -0
  116. package/server/routes/logs/controllers/user.logs.js +45 -0
  117. package/server/routes/logs/index.mjs +9 -0
  118. package/server/routes/menu/controllers/addMenu.js +38 -0
  119. package/server/routes/menu/controllers/delMenu.js +32 -0
  120. package/server/routes/menu/controllers/editMenu.js +42 -0
  121. package/server/routes/menu/controllers/getMenu.js +43 -0
  122. package/server/routes/menu/index.mjs +13 -0
  123. package/server/routes/migration/controllers/collectionToCustom.js +137 -0
  124. package/server/routes/migration/index.mjs +8 -0
  125. package/server/routes/tags/controllers/add.tags.js +25 -0
  126. package/server/routes/tags/controllers/del.tags.js +20 -0
  127. package/server/routes/tags/controllers/edit.tags.js +26 -0
  128. package/server/routes/tags/controllers/get.tags.js +16 -0
  129. package/server/routes/tags/index.mjs +14 -0
  130. package/server/templates/page/login.html +73 -5
  131. package/server/templates/select/core.user_mentioned.sql +2 -0
  132. package/src/index.ts +122 -0
  133. package/dist/assets/ArticlesPage-BveM4q3g.js +0 -11
  134. package/dist/assets/CollectionsPage-D5td-UBm.js +0 -1
  135. package/dist/assets/ContentBlock.vue_vue_type_script_setup_true_lang-BwF6D-yB.js +0 -30
  136. package/dist/assets/CreateCollectionPage-Cu0RW5ui.js +0 -76
  137. package/dist/assets/Dashboard-faSjwmB8.js +0 -11
  138. package/dist/assets/EditCollectionPage-K5oPPzCd.js +0 -1
  139. package/dist/assets/MediaPage-BoW3aWgN.js +0 -1
  140. package/dist/assets/PermissionsPage-DGy5fha2.js +0 -1
  141. package/dist/assets/SingletonsPage-C1X2xkQE.js +0 -1
  142. package/dist/assets/UniversalTable.vue_vue_type_script_setup_true_lang-DUqfWJcy.js +0 -6
  143. package/dist/assets/contentForm-DMVC4vho.js +0 -1
  144. package/dist/assets/database-BTxZQzYy.js +0 -6
  145. package/dist/assets/index-9GY17iSP.css +0 -1
  146. package/dist/assets/index-DYyZmLWO.js +0 -2138
  147. package/dist/assets/index-xsH4HHeE.js +0 -6
  148. package/dist/assets/save-C2B6th9J.js +0 -11
  149. package/dist/assets/settings-DbyDiH2g.js +0 -6
  150. package/dist/assets/vue.-sixQ7xP-DwXf3zRn.js +0 -1
  151. package/dist/assets/x-circle-C3q70RMH.js +0 -16
  152. package/server/routes/contentType/controllers/cms.type.delete.js +0 -22
  153. package/server/routes/contentType/controllers/cms.type.get.js +0 -22
  154. package/server/routes/contentType/controllers/cms.type.list.js +0 -25
  155. package/server/routes/contentType/controllers/cms.type.post.js +0 -22
  156. package/server/routes/contentType/controllers/cms.type.put.js +0 -24
  157. package/server/routes/contentType/utils/builderCache.js +0 -58
  158. package/server/routes/fileContent/data/deleteContent.js +0 -34
  159. package/server/routes/fileContent/data/deleteMedia.js +0 -28
  160. package/server/routes/fileContent/data/downloadMedia.js +0 -41
  161. package/server/routes/fileContent/data/getContent.js +0 -32
  162. package/server/routes/fileContent/data/insertContent.js +0 -37
  163. package/server/routes/fileContent/data/listMedia.js +0 -47
  164. package/server/routes/fileContent/data/metadataMedia.js +0 -38
  165. package/server/routes/fileContent/data/updateContent.js +0 -40
  166. package/server/routes/fileContent/data/uploadMedia.js +0 -49
  167. package/server/routes/fileContent/index.mjs +0 -54
  168. package/server/routes/fileContent/type/contentTypeList.js +0 -7
  169. package/server/routes/fileContent/type/createContentType.js +0 -31
  170. package/server/routes/fileContent/type/deleteContentType.js +0 -29
  171. package/server/routes/fileContent/type/getContentType.js +0 -15
  172. package/server/routes/fileContent/type/updateContentType.js +0 -40
  173. package/server/routes/fileContent/utils/astroBuilderCache.js +0 -47
  174. package/server/routes/fileContent/utils/contentDir.js +0 -12
  175. package/server/routes/fileContent/utils/contentTypeExists.js +0 -15
package/README.md CHANGED
@@ -1,5 +1,98 @@
1
- # CMS
1
+ <!-- ![alt text](https://cdn.softpro.ua/data/npm/admin/opengis-admin.png) -->
2
+ # @opengis/cms
2
3
 
3
- ## Getting started
4
+ [![NPM version](https://img.shields.io/npm/v/@opengis/cms?style=plain)](https://www.npmjs.com/package/@opengis/cms)
5
+ [![NPM last update](https://img.shields.io/npm/last-update/@opengis/cms?style=plain)]()
6
+ [![NPM downloads](https://img.shields.io/npm/dw/@opengis/cms?style=plain)]()
7
+ [![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg?style=plain)](http://standardjs.com/)
4
8
 
5
- Test
9
+ This package standardizes static website content management process. Built using the **Fastify** and **Vite** frameworks for reactive, component-driven development.
10
+
11
+ ### Features
12
+
13
+ - **Real-time Editing** - Update content without stopping or reloading the website.
14
+ - **Page Templates** - Use pre-created templates to quickly start your website.
15
+ - **Dashboard** - Control panel for quick evaluation of key metrics.
16
+ - **Multi-user mode** - Work together with a team on content in real time.
17
+ - **User Settings** - Includes functionality for managing user settings, creating user groups, and defining roles with interface permissions.
18
+
19
+ ---
20
+
21
+ ### Install
22
+
23
+ ```bash
24
+ npm i @opengis/cms
25
+ ```
26
+
27
+ ### Configuration
28
+
29
+ Configure **pg**, **redis** and **s3** connections in `.env` file
30
+
31
+ ```bash
32
+ node --env-file=.env.ip server
33
+ bun --env-file=.env.ip server
34
+ pm2 start server --name api -- --env-file=.env.ip
35
+ pm2
36
+ ```
37
+
38
+ ### Usage
39
+
40
+ ```js
41
+ import { getContents } from "@/utils/cms";
42
+
43
+ // Get posts from API
44
+ let postsData = await getContents("posts");
45
+ ```
46
+
47
+ ---
48
+
49
+ ### Documentation
50
+
51
+ For a detailed understanding of `cms`, its features, and how to use them, refer to our [Documentation](https://apidocs.softpro.ua/cms/).
52
+
53
+ ---
54
+
55
+ ### Technology stack
56
+
57
+ <a href="https://fastify.dev/" target="_blank">
58
+ <img src="https://img.shields.io/badge/Fastify-323330?style=for-the-badge&logo=fastify" /></a>
59
+
60
+ <a href="https://vuejs.org/" target="_blank">
61
+ <img src="https://img.shields.io/badge/Vue%20js-323330?style=for-the-badge&logo=vuedotjs&logoColor=4FC08D" /></a>
62
+
63
+ <a href="https://vite.dev/" target="_blank">
64
+ <img src="https://img.shields.io/badge/Vite-323330?style=for-the-badge&logo=vite" /></a>
65
+
66
+ <a href="https://www.postgresql.org/" target="_blank">
67
+ <img src="https://img.shields.io/badge/PostgreSQL-323330?style=for-the-badge&logo=postgresql&logoColor=white" /></a>
68
+
69
+ <a href="https://redis.io/" target="_blank">
70
+ <img src="https://img.shields.io/badge/redis-323330.svg?&style=for-the-badge&logo=redis&logoColor=%23DD0031" /></a>
71
+
72
+ <a href="https://nodejs.org/" target="_blank">
73
+ <img src="https://img.shields.io/badge/Node.js-323330?style=for-the-badge&logo=node.js&logoColor=white" /></a>
74
+
75
+ ---
76
+
77
+ ### Contribute
78
+
79
+ Feel free to contact us through our website [SOFTPRO.UA](https://softpro.ua) or email <info@softpro.ua>
80
+
81
+ - Report bugs
82
+ - Share your ideas
83
+ - Ask questions
84
+
85
+ ### Follow Us
86
+
87
+ [Official site](https://softpro.ua)
88
+
89
+ <p>
90
+ <a href="https://www.instagram.com/gissoftpro/" target="_blank"><img src="https://cdn.softpro.ua/data/npm/instagram.png" alt="Softpro Instagram" title="oftpro Instagram"></a>&nbsp;&nbsp;
91
+ <a href="https://www.facebook.com/gissoftpro" target="_blank"><img src="https://cdn.softpro.ua/data/npm/facebook.png" alt="Softpro Facebook" title="Softpro Facebook"></a>&nbsp;&nbsp;
92
+ <a href="https://t.me/softprogis" target="_blank"><img src="https://cdn.softpro.ua/data/npm/telegram.png" alt="Softpro Telegram" title="Softpro Telegram"></a>&nbsp;&nbsp;
93
+ <a href="https://www.linkedin.com/in/softpro-ukraine-a8876b282/recent-activity/all/" target="_blank"><img src="https://cdn.softpro.ua/data/npm/social/linkedin.png" alt="Softpro Linkedin" title="Softpro LinkedIn"></a>&nbsp;&nbsp;
94
+ </p>
95
+
96
+ ### License
97
+
98
+ Copyright © SOFTPRO. All rights reserved.
@@ -0,0 +1 @@
1
+ import{l as b}from"./index-DCW2e4Az.js";import{m as a,u as y,J as x,p as k,a as _,b as t,e as u,t as p,g as U,h as V,v as j,o as h,l as B}from"./index-yMJAVBXk.js";import{y as v}from"./index-DGweaj24.js";const C={class:"space-y-6 max-w-6xl mx-auto relative bg-white"},$={class:"p-4 sticky top-[-24px] z-10 bg-white dark:bg-slate-800"},S={class:"flex items-center justify-between"},N={class:"flex items-center gap-4"},T={class:"text-2xl font-semibold text-gray-900 dark:text-white"},M={class:"flex items-center space-x-3"},z={class:"container mx-auto bg-white rounded-md pb-4 px-5"},P={__name:"AddUser",setup(D){const r=a(null),n=a({}),c=a({}),f=a(!0),d=B(),{t:l}=y(),m=a(null),i=x().params.id,g=async()=>{let o=i?"PUT":"POST";try{if(await c.value.validate()){v({type:"warning",title:l("common.actions.warning"),message:l("users.createUserFailed")});return}await fetch(`/api/table/${m.value}`,{method:o,body:JSON.stringify(n.value),headers:{"Content-Type":"application/json"}}),v({type:"success",title:l("common.actions.success"),message:l("users.createUserSuccess")}),d.back()}catch(e){console.error(e)}},w=async()=>{let o=i?`/api/form/admin.users.table/${i}`:"/api/form/admin.users.table";try{const s=await(await fetch(o)).json();n.value=(s==null?void 0:s.data)||{},m.value=s.token,r.value=s.schema}catch{r.value=[]}finally{f.value=!1}};return k(()=>{w()}),(o,e)=>(h(),_("div",C,[t("div",$,[t("div",S,[t("div",N,[t("button",{onClick:e[0]||(e[0]=s=>u(d).back()),class:"p-2 text-gray-500 rounded-full hover:text-gray-900 dark:text-gray-400 dark:hover:text-white hover:bg-gray-100 dark:hover:bg-gray-700"},[...e[3]||(e[3]=[t("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round",class:"lucide lucide-arrow-left-icon w-5 h-5"},[t("path",{d:"m12 19-7-7 7-7"}),t("path",{d:"M19 12H5"})],-1)])]),t("h1",T,p(u(i)?o.$t("users.editUser"):o.$t("users.createUser")),1)]),t("div",M,[t("button",{onClick:g,class:"inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium h-9 px-4 py-2 bg-blue-600 text-white shadow-md transition-all duration-200 transform hover:bg-blue-700 hover:shadow-lg hover:scale-105 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50"},[e[4]||(e[4]=t("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round",class:"lucide lucide-save-icon w-4 h-4 mr-2"},[t("path",{d:"M19 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11l5 5v11a2 2 0 0 1-2 2z"}),t("polyline",{points:"17 21 17 13 7 13 7 21"}),t("polyline",{points:"7 3 7 8 15 8"})],-1)),U(" "+p(o.$t("common.actions.save")),1)])])])]),t("div",z,[r.value?(h(),V(u(b),{key:0,modelValue:n.value,"onUpdate:modelValue":e[1]||(e[1]=s=>n.value=s),form:c.value,"onUpdate:form":e[2]||(e[2]=s=>c.value=s),schema:r.value},null,8,["modelValue","form","schema"])):j("",!0)])]))}};export{P as default};
@@ -0,0 +1,16 @@
1
+ import{_ as m}from"./SettingsTitle-t4WJBFxZ.js";import{_ as d}from"./SettingsTable-CY5pZx1z.js";import{c as r,u as h,m as b,a as p,f as a,b as e,w as y,e as o,o as u,j as k,k as f,t as n}from"./index-yMJAVBXk.js";import{E as v}from"./eye-Dijywc6g.js";/**
2
+ * @license lucide-vue-next v0.344.0 - ISC
3
+ *
4
+ * This source code is licensed under the ISC license.
5
+ * See the LICENSE file in the root directory of this source tree.
6
+ */const x=r("KeyIcon",[["circle",{cx:"7.5",cy:"15.5",r:"5.5",key:"yqb3hr"}],["path",{d:"m21 2-9.6 9.6",key:"1j0ho8"}],["path",{d:"m15.5 7.5 3 3L22 7l-3-3",key:"1rn1fs"}]]);/**
7
+ * @license lucide-vue-next v0.344.0 - ISC
8
+ *
9
+ * This source code is licensed under the ISC license.
10
+ * See the LICENSE file in the root directory of this source tree.
11
+ */const _=r("RefreshCcwIcon",[["path",{d:"M21 12a9 9 0 0 0-9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"14sxne"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}],["path",{d:"M3 12a9 9 0 0 0 9 9 9.75 9.75 0 0 0 6.74-2.74L21 16",key:"1hlbsb"}],["path",{d:"M16 16h5v5",key:"ccwih5"}]]);/**
12
+ * @license lucide-vue-next v0.344.0 - ISC
13
+ *
14
+ * This source code is licensed under the ISC license.
15
+ * See the LICENSE file in the root directory of this source tree.
16
+ */const w=r("ShieldIcon",[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}]]),L={class:"w-full max-w-7xl mx-auto space-y-6"},K={class:"space-y-6 max-w-7xl mx-auto"},$={class:"font-medium text-slate-800 dark:text-slate-100"},j={class:"text-sm text-slate-500 dark:text-slate-400"},V={class:"flex space-x-2"},C={class:"inline-flex items-center justify-center whitespace-nowrap font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 border shadow-sm hover:text-accent-foreground h-8 rounded-md px-3 text-xs bg-white dark:bg-slate-700 border-slate-300 dark:border-slate-600 text-slate-700 dark:text-slate-300 hover:bg-slate-50 dark:hover:bg-slate-600"},D={class:"inline-flex items-center justify-center whitespace-nowrap font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 border shadow-sm hover:text-accent-foreground h-8 rounded-md px-3 text-xs bg-white dark:bg-slate-700 border-slate-300 dark:border-slate-600 text-slate-700 dark:text-slate-300 hover:bg-slate-50 dark:hover:bg-slate-600"},I={class:"inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none text-white focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 text-primary-foreground shadow h-9 px-4 py-2 mt-4 bg-purple-600 hover:bg-purple-700"},N={__name:"ApiKeys",setup(M){const{t}=h(),g=[{name:"production",label:t("settings.api-keys.productionApiKey"),value:"pk_live_••••••••••••••••"},{name:"development",label:t("settings.api-keys.developmentApiKey"),value:"pk_test_••••••••••••••••"}],l=b([{key:"rateLimiting",label:t("settings.api-keys.rateLimiting"),description:t("settings.api-keys.rateLimitingDescription"),checked:!0},{key:"corsProtection",label:t("settings.api-keys.corsProtection"),description:t("settings.api-keys.corsProtectionDescription"),checked:!0},{key:"apiLogging",label:t("settings.api-keys.apiLogging"),description:t("settings.api-keys.apiLoggingDescription"),checked:!1}]);return(s,c)=>(u(),p("div",L,[a(m,{title:s.$t("settings.api-keys.apiKeys"),description:s.$t("settings.api-keys.apiKeysDescription")},null,8,["title","description"]),e("div",K,[a(d,{icon:o(x),title:s.$t("settings.api-keys.apiKeys"),color:"purple"},{content:y(()=>[(u(),p(k,null,f(g,i=>e("div",{key:i.name,class:"flex items-center justify-between p-4 border border-slate-200 dark:border-slate-600 rounded-lg bg-slate-50 dark:bg-slate-700"},[e("div",null,[e("h3",$,n(i.label),1),e("p",j,n(i.value),1)]),e("div",V,[e("button",C,[a(o(v),{class:"w-4 h-4"})]),e("button",D,[a(o(_),{class:"w-4 h-4"})])])])),64)),e("button",I,n(s.$t("settings.api-keys.generateNewKey")),1)]),_:1},8,["icon","title"]),a(d,{modelValue:l.value,"onUpdate:modelValue":c[0]||(c[0]=i=>l.value=i),icon:o(w),title:s.$t("settings.api-keys.apiSecurity"),color:"purple"},null,8,["modelValue","icon","title"])])]))}};export{N as default};
@@ -0,0 +1,6 @@
1
+ import{_ as m}from"./SettingsTitle-t4WJBFxZ.js";import{_ as k}from"./SettingsTable-CY5pZx1z.js";import{c as f,u as _,c3 as x,m as y,a as s,f as c,e as r,w as h,o as l,b as t,t as i,j as C,k as v,n as p}from"./index-yMJAVBXk.js";/**
2
+ * @license lucide-vue-next v0.344.0 - ISC
3
+ *
4
+ * This source code is licensed under the ISC license.
5
+ * See the LICENSE file in the root directory of this source tree.
6
+ */const w=f("PaletteIcon",[["circle",{cx:"13.5",cy:"6.5",r:".5",fill:"currentColor",key:"1okk4w"}],["circle",{cx:"17.5",cy:"10.5",r:".5",fill:"currentColor",key:"f64h9f"}],["circle",{cx:"8.5",cy:"7.5",r:".5",fill:"currentColor",key:"fotxhn"}],["circle",{cx:"6.5",cy:"12.5",r:".5",fill:"currentColor",key:"qy21gx"}],["path",{d:"M12 2C6.5 2 2 6.5 2 12s4.5 10 10 10c.926 0 1.648-.746 1.648-1.688 0-.437-.18-.835-.437-1.125-.29-.289-.438-.652-.438-1.125a1.64 1.64 0 0 1 1.668-1.668h1.996c3.051 0 5.555-2.503 5.555-5.554C21.965 6.012 17.461 2 12 2z",key:"12rzf8"}]]),M={class:"w-full max-w-7xl mx-auto space-y-6"},D={class:"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70 text-slate-700 dark:text-slate-300"},V={class:"grid grid-cols-3 gap-3 mt-2"},$=["onClick"],z={class:"text-sm font-medium text-slate-700 dark:text-slate-300"},P={__name:"Appearance",setup(B){const{t:e}=_(),{color:d,toggleColor:u}=x(),g=[{name:"blue",color:"border-2 bg-blue-50 border-blue-500 dark:bg-blue-900/20",bg:"bg-blue-600"},{name:"green",color:"border-2 bg-green-50 border-green-500 dark:bg-green-900/20",bg:"bg-green-600"},{name:"purple",color:"border-2 bg-purple-50 border-purple-500 dark:bg-purple-900/20",bg:"bg-purple-600"}],o=y([{key:"darkMode",label:e("settings.appearance.darkMode"),description:e("settings.appearance.darkModeDescription"),checked:!0},{key:"compactMode",label:e("settings.appearance.compactMode"),description:e("settings.appearance.compactModeDescription"),checked:!1},{key:"animations",label:e("settings.appearance.animations"),description:e("settings.appearance.animationsDescription"),checked:!1}]);return(b,n)=>(l(),s("div",M,[c(m,{title:r(e)("settings.appearance.appearance"),description:r(e)("settings.appearance.appearanceDescription")},null,8,["title","description"]),c(k,{modelValue:o.value,"onUpdate:modelValue":n[0]||(n[0]=a=>o.value=a),icon:r(w),title:r(e)("settings.appearance.appearance"),color:"pink"},{content:h(()=>[t("div",null,[t("label",D,i(b.$t("settings.appearance.colorTheme")),1),t("div",V,[(l(),s(C,null,v(g,a=>t("button",{key:a.name,class:p(["p-3 rounded-lg text-center",a.name===r(d)?a.color:"border border-slate-200 dark:border-slate-600 bg-white dark:bg-slate-700 hover:border-slate-300 dark:hover:border-slate-500"]),onClick:I=>r(u)(a.name)},[t("div",{class:p(["w-full h-8 rounded mb-2",a.bg])},null,2),t("span",z,i(a.name),1)],10,$)),64))])])]),_:1},8,["modelValue","icon","title"])]))}};export{P as default};
@@ -0,0 +1,6 @@
1
+ import{c as Z,d as W,m as r,u as X,A as B,p as Y,z as D,o,a as d,f as _,b as i,t as A,e as v,H as ee,g as te,v as f,h as q,K as ae,J as se,l as le,q as re,M as ne,F as oe,N as L}from"./index-yMJAVBXk.js";import{_ as ie}from"./UniversalTable.vue_vue_type_script_setup_true_lang-BQ5m4aZd.js";import{_ as ue}from"./UniversalTablePagination.vue_vue_type_script_setup_true_lang-DppVBws0.js";import{y as ce}from"./index-DCW2e4Az.js";import{D as me}from"./index-BIp7eSXk.js";import{Z as de}from"./index-DGweaj24.js";import{_ as pe}from"./EmptyData-Ct-xQv_N.js";import{_ as ve}from"./CollectionsBreadcrumb.vue_vue_type_script_setup_true_lang-DVYVfYF4.js";import{P as fe}from"./plus-DLR44m6p.js";import{C as O}from"./calendar-o9t4MkD2.js";import"./eye-Dijywc6g.js";import"./file-B_duymIT.js";import"./pencil-CwnPP4IJ.js";import"./trash-2-BGXMNU3d.js";import"./square-pen-xVs4e8Yb.js";import"./chevron-left-WFftVS9c.js";import"./chevron-right-BiiSb3Be.js";/**
2
+ * @license lucide-vue-next v0.344.0 - ISC
3
+ *
4
+ * This source code is licensed under the ISC license.
5
+ * See the LICENSE file in the root directory of this source tree.
6
+ */const he=Z("GlobeIcon",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20",key:"13o1zl"}],["path",{d:"M2 12h20",key:"9i4pu4"}]]),ge={class:"space-y-6 max-w-7xl mx-auto"},ye={class:"flex flex-col gap-4 sm:flex-row sm:items-center sm:justify-between"},be={class:"flex items-center gap-2"},we={class:"text-3xl font-bold text-slate-800 dark:text-white mb-2"},_e=["href","title"],xe={key:0,class:"text-card-foreground shadow-lg border-0 bg-white/80 dark:bg-slate-800/80 backdrop-blur-sm"},ke={key:0,class:"p-2 border-b border-gray-200 sm:px-4 sm:py-2 dark:border-gray-700"},Ce={class:"flex flex-col gap-4 sm:flex-row"},$e={class:"relative flex items-center gap-2 ml-auto"},Ae={key:1,class:"absolute top-full right-1/2 translate-x-1/2 min-w-full p-4 z-10 bg-white border border-gray-300 rounded-md mt-2 dark:bg-slate-800 dark:border-slate-700"},qe={class:"max-h-60 overflow-y-auto overflow-x-hidden"},Ue={key:1},Ke=W({__name:"ArticlesPage",setup(Fe){const l=se(),p=le(),c=r(null),z=r(""),{t:E,locale:I}=X(),x=r([]),M=re("menu")||[],m=r(""),k=r(1),h=r(!1),u=r(["title","slug","author","publish_at","published_at","status"]),C=r([]),g=r([]),U=r([]),y=r({}),$=r(0),F=r(!1),N=()=>{var a;let t=(a=c.value)==null?void 0:a.columns.filter(e=>{var s;return(s=u==null?void 0:u.value)==null?void 0:s.includes(e.name)});C.value=t.map(e=>{switch(e.name){case"title":return{...e,title:e.name?e.name.charAt(0).toUpperCase()+e.name.slice(1):"--",icon:oe};case"slug":return{...e,title:e.name?e.name.charAt(0).toUpperCase()+e.name.slice(1):"-",icon:he};case"author":return{...e,title:e.name?e.name.charAt(0).toUpperCase()+e.name.slice(1):"-",icon:ne};case"publish_at":return{...e,title:e.name?e.name.charAt(0).toUpperCase()+e.name.slice(1):"-",icon:O};case"published_at":return{...e,title:e.name?e.name.charAt(0).toUpperCase()+e.name.slice(1):"-",icon:O};default:return{...e,title:e.name?e.name.charAt(0).toUpperCase()+e.name.slice(1):"-"}}}),h.value=!1},T=B(()=>{var t;return(t=M.value.find(a=>a.id===l.params.id))==null?void 0:t.title}),R=B(()=>[{label:T.value||l.params.id,route:`collections/${l.params.id}`}]),P=t=>{t==="collections"?p.push("/collections"):p.push(`/${t}`)},V=()=>{p.push(`/collections/${l.params.id}/create`)},S=async t=>{console.log("handleRemoveArticle"),de({title:E("builder.deleteTitle"),message:E("builder.deleteObject"),type:"error",onConfirm:async()=>{await fetch(`/api/cms/${l.params.id}/${t.id}`,{method:"DELETE"}),b()}})},G=t=>{p.push(`/collections/${l.params.id}/${t.id}`)},b=async()=>{if(!F.value){F.value=!0;try{const a=await(await fetch(`/api/cms/${l.params.id}?page=${k.value}&filter=${m.value}`)).json();x.value=a.rows||[],c.value=a;const e=(a.filters||[]).map(s=>{const{extra:n,title:w,...Q}=s;return Q});U.value=e,l.params.id==="pages"&&u.value.push("type"),H(),N()}finally{F.value=!1}}},H=()=>{var a;if(!((a=c.value)!=null&&a.columns))return;const t=c.value.columns.map((e,s)=>({text:e.label,id:e.name}));g.value=[...u.value.map(e=>t.find(s=>s.id===e)).filter(Boolean),...t.filter(e=>!u.value.includes(e.id))]},K=(t,a)=>{if(!a)return!0;const e=a.toLowerCase();return C.value.some(s=>{const n=t[s.name];return n&&n.toString().toLowerCase().includes(e)})},J=t=>{const a=Object.entries(t==null?void 0:t.data).filter(([,s])=>s!=null).map(([s,n])=>`${s}=${n}`).join("|");m.value=a;const e={...l.query};a?e.filter=a:delete e.filter,p.replace({query:e})},j=()=>{if(l.query.filter){m.value=l.query.filter;const t=l.query.filter.split("|"),a={};t.forEach(e=>{const[s,n]=e.split("=");s&&n&&(a[s]=n)}),y.value=a}else m.value="",y.value={},$.value++};return Y(()=>{j(),b()}),D(()=>l.params.id,()=>{y.value={},m.value="",U.value=[];const t={...l.query};delete t.filter,p.replace({query:t}),$.value++,j(),b()}),D(()=>l.query,async()=>{j(),await L(),b()},{deep:!0}),D(k,async()=>{l.query.filter||(m.value="",y.value={},$.value++),await L(),b()}),(t,a)=>{var e,s,n;return o(),d("div",ge,[_(ve,{items:R.value,onNavigate:P},null,8,["items"]),i("div",ye,[i("div",be,[i("h1",we,A(T.value),1),i("a",{href:`https://cms.opengis.info/${v(I)}/guides/content/`,target:"_blank",title:t.$t("guide.content")},[_(v(ee),{class:"w-5 h-5"})],8,_e)]),x.value.length?(o(),d("button",{key:0,onClick:V,class:"inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium h-9 px-4 py-2 bg-blue-600 text-white shadow-md transition-all duration-200 transform hover:bg-blue-700 hover:shadow-lg hover:scale-105 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50"},[_(v(fe),{class:"w-4 h-4 mr-2"}),te(" "+A(t.$t("articles.createArticle")),1)])):f("",!0)]),x.value.length||m.value.length?(o(),d("div",xe,[(o(),d("div",ke,[i("div",Ce,[(o(),q(v(me),{key:$.value,schema:U.value,history:!0,value:y.value,view:"inline",onChange:J},null,8,["schema","value"])),i("div",$e,[g.value.length>0?(o(),d("div",{key:0,class:"flex items-center gap-2 cursor-pointer text-sm border border-gray-300 rounded-md p-2 dark:text-white",onClick:a[0]||(a[0]=w=>h.value=!h.value)},[i("p",null,A(t.$t("articles.showColumns")),1),_(v(ae),{class:"w-4 h-4"})])):f("",!0),g.value.length>0&&h.value?(o(),d("div",Ae,[i("div",qe,[g.value.length>0&&h.value?(o(),q(v(ce),{key:0,options:g.value,modelValue:u.value,"onUpdate:modelValue":a[1]||(a[1]=w=>u.value=w)},null,8,["options","modelValue"])):f("",!0)]),i("button",{class:"text-sm bg-blue-600 text-white rounded-md p-2 mt-4 w-full",onClick:N},A(t.$t("articles.update")),1)])):f("",!0)])])])),C.value.length>0?(o(),q(ie,{key:1,class:"max-h-[calc(100vh-270px)] overflow-y-auto",rows:x.value,columns:C.value,query:z.value,filterFn:K,onDelete:S,onEdit:G},null,8,["rows","columns","query"])):f("",!0),((e=c.value)==null?void 0:e.total)>20?(o(),q(ue,{key:2,total:(s=c.value)==null?void 0:s.filtered,count:(n=c.value)==null?void 0:n.count,page:k.value,"onUpdate:page":a[2]||(a[2]=w=>k.value=w),limit:20},null,8,["total","count","page"])):f("",!0)])):(o(),d("div",Ue,[_(pe,{onAction:V})]))])}}});export{Ke as default};
@@ -0,0 +1 @@
1
+ import{q as O,u as R,l as z,m as b,o as p,a as k,b as e,f as g,e as i,g as J,t as c,w as L,_ as Q,s as X,d as W,j as Z,k as ee,h as M,L as N,n as S,i as te,v as D,x as oe,H as K,y as F,z as P,p as se,A as re,B as le,C as ae}from"./index-yMJAVBXk.js";import{J as ne,y as q}from"./index-DGweaj24.js";import{l as ie}from"./index-DCW2e4Az.js";import{P as de}from"./plus-DLR44m6p.js";import{u as ce}from"./useDebounce-DFq3rxAW.js";import{X as ue,C as pe,_ as he}from"./UniversalTable.vue_vue_type_script_setup_true_lang-BQ5m4aZd.js";import{_ as me}from"./UniversalTablePagination.vue_vue_type_script_setup_true_lang-DppVBws0.js";import{F as ge}from"./file-B_duymIT.js";import{S as G}from"./square-pen-xVs4e8Yb.js";import{T as be}from"./trash-2-BGXMNU3d.js";import{L as Y}from"./list-CXRbSNky.js";import{u as fe}from"./vue.-sixQ7xP-CUPNuJcq.js";import{S as xe}from"./search-C4-fHihx.js";import"./eye-Dijywc6g.js";import"./pencil-CwnPP4IJ.js";import"./chevron-left-WFftVS9c.js";import"./chevron-right-BiiSb3Be.js";const ve={class:"flex justify-end p-[20px] gap-[10px] border-t w-full"},we={__name:"CreateForm",setup(_){const a=O("fetchContentTypes"),{t:o}=R(),v=z(),f=b({}),x=b(!1),m=b({type:"collection"}),n={name:{type:"text",label:o("builder.scheme.name.label"),required:!0,placeholder:o("builder.scheme.name.placeholder"),validators:["required"]},title:{type:"text",label:o("builder.scheme.title.label"),required:!0,placeholder:o("builder.scheme.title.placeholder"),validators:["required"]},type:{type:"combobox",mode:"combo",label:o("builder.scheme.type.label"),required:!0,placeholder:o("builder.scheme.type.placeholder"),validators:["required"],options:[{text:o("builder.scheme.type.options.collection"),id:"collection"},{text:o("builder.scheme.type.options.single"),id:"single"}]},customTable:{type:"switcher",label:o("builder.scheme.customTable.label")}},h=async()=>{if(await f.value.validate()){q({type:"warning",title:o("common.actions.warning"),message:o("collections.collectionCreationFailed")});return}try{const l=await(await fetch("/api/cms-type",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(m.value)})).json();v.push(`/settings/collections/edit/${l.id}`),a(),q({type:"success",title:o("common.actions.success"),message:o("collections.collectionCreated")})}catch(s){q({type:"error",title:o("common.actions.error"),message:o("collections.collectionCreationFailed")}),console.error(s)}};return(t,s)=>(p(),k("div",null,[e("button",{onClick:s[0]||(s[0]=l=>x.value=!0),class:"inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 h-9 px-4 py-2 bg-blue-600 hover:bg-blue-700 text-white shadow-md hover:shadow-lg transition-all duration-200 transform hover:scale-105"},[g(i(de),{class:"w-4 h-4 mr-2"}),J(" "+c(t.$t("collections.createCollection")),1)]),g(i(ne),{teleport:"#modal",visible:x.value,title:t.$t("collections.createCollection"),onClose:s[4]||(s[4]=l=>x.value=!1)},{footer:L(()=>[e("div",ve,[e("button",{class:"inline-flex items-center px-3 py-2 text-sm text-black duration-300 border border-gray-200 rounded-lg gap-x-2 whitespace-nowrap hover:bg-gray-100",onClick:s[3]||(s[3]=l=>x.value=!1)},c(t.$t("common.actions.cancel")),1),e("button",{onClick:h,class:"py-2 px-3 inline-flex items-center gap-x-2 text-sm whitespace-nowrap text-white bg-blue-500 rounded-lg !border-gray-200 hover:bg-blue-700 duration-300"},c(t.$t("common.actions.save")),1)])]),default:L(()=>[g(i(ie),{form:f.value,"onUpdate:form":s[1]||(s[1]=l=>f.value=l),modelValue:m.value,"onUpdate:modelValue":s[2]||(s[2]=l=>m.value=l),schema:n},null,8,["form","modelValue"])]),_:1},8,["visible","title"])]))}},ye={},ke={xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"};function _e(_,a){return p(),k("svg",ke,[...a[0]||(a[0]=[X('<line x1="8" x2="21" y1="6" y2="6"></line><line x1="8" x2="21" y1="12" y2="12"></line><line x1="8" x2="21" y1="18" y2="18"></line><line x1="3" x2="3.01" y1="6" y2="6"></line><line x1="3" x2="3.01" y1="12" y2="12"></line><line x1="3" x2="3.01" y1="18" y2="18"></line>',6)])])}const $e=Q(ye,[["render",_e]]),Ce={},je={xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"};function Ve(_,a){return p(),k("svg",je,[...a[0]||(a[0]=[X('<rect width="18" height="18" x="3" y="3" rx="2"></rect><path d="M3 9h18"></path><path d="M3 15h18"></path><path d="M9 3v18"></path><path d="M15 3v18"></path>',5)])])}const Me=Q(Ce,[["render",Ve]]),Se={class:"grid grid-cols-1 lg:grid-cols-2 xl:grid-cols-3 gap-6 pb-6"},De={class:"flex items-center gap-2 space-y-1.5 p-6 border-b border-slate-200 dark:border-slate-700 bg-gradient-to-r from-slate-50 dark:from-slate-800 to-white dark:to-slate-800"},Te={class:"line-clamp-1 tracking-tight text-lg font-semibold text-slate-800 dark:text-slate-100 vertical-center"},Ee={class:"w-full flex flex-col gap-2 p-6"},Fe=["title"],qe={class:"flex items-center justify-between gap-2"},Be={class:"text-sm text-slate-600 dark:text-slate-400"},Le={class:"font-semibold text-slate-800 dark:text-slate-100"},Ne={class:"flex items-center justify-between gap-2"},Pe={class:"text-sm text-slate-500 dark:text-slate-400"},Ie={class:"font-semibold text-slate-800 dark:text-slate-100"},Ue={class:"flex items-center justify-between gap-2"},Ae={class:"text-sm text-slate-500 dark:text-slate-400"},He={class:"text-sm text-slate-600 dark:text-slate-300"},Ge={class:"flex items-center justify-between gap-2 mt-6"},Oe=["onClick"],Re={class:"text-slate-800 dark:text-slate-200 group-hover:text-green-600 dark:group-hover:text-blue-50"},ze=["onClick"],Je=["onClick"],Qe=W({__name:"CollectionsGrid",props:{collections:{},onEdit:{type:Function},onView:{type:Function},onDelete:{type:Function}},emits:["edit","view","delete"],setup(_,{emit:a}){b(!1),b(null);const o=_,v=a,f=(n,h)=>{switch(n){case"edit":v("edit",h),o.onEdit&&o.onEdit(h);break;case"view":v("view",h),o.onView&&o.onView(h);break;case"delete":v("delete",h),o.onDelete&&o.onDelete(h);break}},x=n=>{const h=new Date,t=new Date(n),s=h.getTime()-t.getTime(),l=Math.floor(s/1e3),u=Math.floor(l/60),y=Math.floor(u/60),w=Math.floor(y/24),j=Math.floor(w/7);return j>=2?`${j} weeks ago`:j===1?"1 week ago":w>=2?`${w} days ago`:w===1?"1 day ago":y>=2?`${y} hours ago`:y===1?"1 hour ago":u>=2?`${u} minutes ago`:u===1?"1 minute ago":"just now"},m=n=>{switch(n){case"published":return{icon:pe,text:"Published",classes:"bg-green-100 text-green-800 dark:bg-green-900/30 dark:text-green-200 border-green-200 dark:border-green-700"};case"draft":return{icon:G,text:"Draft",classes:"bg-yellow-100 text-yellow-800 dark:bg-yellow-900/30 dark:text-yellow-200 border-yellow-200 dark:border-yellow-700"};case"archived":return{icon:ue,text:"Archived",classes:"bg-gray-100 text-gray-800 dark:bg-gray-900/30 dark:text-gray-300 border-gray-200 dark:border-gray-700"};default:return{icon:K,text:"--",classes:"bg-yellow-100 text-yellow-800 dark:bg-yellow-900/30 dark:text-yellow-200 border-yellow-200 dark:border-yellow-700"}}};return(n,h)=>(p(),k("div",Se,[(p(!0),k(Z,null,ee(n.collections,t=>{var s,l,u;return p(),k("div",{key:t.id,class:"rounded-xl text-card-foreground shadow-lg border-0 bg-white dark:bg-slate-800 backdrop-blur-sm hover:shadow-xl transition-all duration-200 transform hover:bg-slate-50"},[e("div",De,[t.type==="single"?(p(),M(i(ge),{key:0,class:"shrink-0 lucide lucide-page w-5 h-5 text-blue-600"})):(p(),M(i(N),{key:1,class:"shrink-0 lucide lucide-layers w-5 h-5 text-blue-600"})),e("p",Te,c(t.title),1),m(t.status)?(p(),k("div",{key:2,class:S(["whitespace-nowrap rounded-md border ml-auto px-2.5 py-0.5 text-xs font-semibold transition-colors hover:bg-secondary/80 flex items-center w-fit bg-green-100 text-green-800 border-green-200 dark:bg-green-900/30 dark:text-green-300 dark:border-green-700",(s=m(t.status))==null?void 0:s.classes])},[(p(),M(te((l=m(t.status))==null?void 0:l.icon),{class:"w-3 h-3 mr-1"})),J(" "+c((u=m(t.status))==null?void 0:u.text),1)],2)):D("",!0)]),e("div",Ee,[e("p",{class:"text-slate-600 dark:text-slate-300 mb-4 line-clamp-2",title:t.description},c(t.description!==null?t.description:"No description"),9,Fe),e("div",qe,[e("p",Be,c(n.$t("collections.entries"))+":",1),e("p",Le,c(t.entries),1)]),e("div",Ne,[e("p",Pe,c(n.$t("collections.fields"))+":",1),e("p",Ie,c(t.fields),1)]),e("div",Ue,[e("p",Ae,c(n.$t("collections.lastModified"))+":",1),e("p",He,c(x(t.last_edit)),1)]),e("div",Ge,[oe(n.$slots,"actions",{collection:t,handleAction:f},()=>[e("button",{class:"inline-flex gap-1 items-center justify-center whitespace-nowrap font-medium border rounded-md text-xs h-8 w-4/5 p-0 border-slate-300 bg-white transition-all duration-200 shadow-sm group dark:border-slate-600 dark:bg-slate-700 dark:hover:bg-slate-600 dark:hover:border-slate-500 dark:hover:text-slate-200 hover:bg-green-50 hover:border-green-300",onClick:F(y=>f("edit",t),["stop"])},[g(i(G),{class:"text-slate-800 dark:text-slate-200 w-4 h-4 group-hover:text-green-600 dark:group-hover:text-blue-50"}),e("span",Re,c(n.$t("common.actions.edit")),1)],8,Oe),e("button",{class:S([t.id==="pages"?"disabled":"","inline-flex items-center justify-center whitespace-nowrap font-medium border rounded-md text-xs h-8 w-8 p-0 border-slate-300 bg-white transition-all duration-200 shadow-sm group dark:border-slate-600 dark:bg-slate-700 dark:hover:bg-slate-600 dark:hover:border-slate-500 dark:hover:text-slate-200 hover:bg-red-50 hover:border-red-300"]),onClick:F(y=>t.id==="pages"?null:f("delete",t),["stop"])},[g(i(be),{class:"text-slate-800 dark:text-slate-200 w-4 h-4 group-hover:text-red-600 dark:group-hover:text-blue-50"})],10,ze),e("button",{class:S([t.type==="single"?"disabled cursor-not-allowed":"","inline-flex items-center justify-center whitespace-nowrap font-medium border rounded-md text-xs h-8 w-8 p-0 border-slate-300 bg-white transition-all duration-200 shadow-sm group dark:border-slate-600 dark:bg-slate-700 dark:hover:bg-slate-600 dark:hover:border-slate-500 dark:hover:text-slate-200 hover:bg-blue-50 hover:border-blue-300"]),onClick:F(y=>t.type==="single"?null:f("view",t),["stop"])},[g(i(Y),{class:"text-slate-800 dark:text-slate-200 w-4 h-4 group-hover:text-blue-600 dark:group-hover:text-blue-50"})],10,Je)])])])])}),128))]))}}),B=localStorage.getItem("collectionView"),T=b(B==="list"||B==="grid"?B:"list");P(T,_=>{localStorage.setItem("collectionView",_)});function Xe(){T.value=T.value==="grid"?"list":"grid"}function We(){return{collectionView:T,toggleCollectionView:Xe}}const Ke={class:"space-y-6 max-w-7xl mx-auto"},Ye={class:"flex items-center justify-between mb-8"},Ze={class:"flex gap-4"},et={class:"text-3xl font-bold text-slate-800 dark:text-slate-100 mb-2"},tt={class:"text-slate-600 dark:text-slate-300"},ot=["href","title"],st={class:"flex items-center gap-3"},rt={class:"relative"},lt={class:"absolute inset-y-0 left-0 flex items-center pl-3 pointer-events-none"},at=["placeholder"],nt={class:"flex items-center bg-white dark:bg-slate-700 border border-slate-200 dark:border-slate-600 rounded-lg p-1 max-w-[fit-content]"},it=["onClick"],Vt=W({__name:"BuilderPage",setup(_){const{t:a,locale:o}=R(),v=z(),f=[{name:"name",title:a("builder.collectionName"),type:"text",icon:N},{name:"title",title:a("builder.title"),type:"text",icon:N},{name:"description",title:a("common.description"),type:"text"},{name:"entries",title:a("builder.entries"),type:"number"},{name:"fields",title:a("builder.fields"),type:"number"},{name:"status",title:a("builder.status"),type:"text"},{name:"last_edit",title:a("builder.lastModified"),type:"date"}],x=b(""),m=ce(x,300);fe({title:()=>a("collections.title")+" | CMS"});const n=b([]),h=O("fetchContentTypes"),t=b(1),s=b(16),l=b(null),{collectionView:u,toggleCollectionView:y}=We();async function w(){try{const r=m.value?`&search=${encodeURIComponent(String(m.value))}`:"",d=`/api/cms-type?page=${t.value}&limit=${s.value}${r}`;console.log("Fetching collections with URL:",d);const $=await fetch(d);if(!$.ok)throw new Error("Failed to fetch collections");const V=await $.json();console.log("Collections fetched:",V),n.value=V.rows,l.value=V}catch(r){console.error("Error fetching collections:",r)}}se(()=>{w()});const j=re(()=>[...n.value].sort((d,$)=>d.id==="pages"?-1:$.id==="pages"?1:0)),I=async r=>{try{await fetch(`/api/cms-type/${r.id}`,{method:"DELETE"}),w(),h()}catch(d){console.error("Error deleting collection:",d)}},U=r=>{v.push(`/settings/collections/edit/${r.id||r.name}`)},E=r=>{r.type==="single"?v.push(`/collections/single/${r.name}`):v.push(`/collections/${r.name}`)};return P(t,()=>{w()}),P(m,r=>{console.log("Search query changed:",r),t.value=1,w()}),(r,d)=>{var $,V,A,H;return p(),k("div",Ke,[e("div",Ye,[e("div",Ze,[e("div",null,[e("h1",et,c(r.$t("builder.collections")),1),e("p",tt,c(r.$t("builder.manageContentCollections")),1)]),e("a",{href:`https://cms.opengis.info/${i(o)}/guides/collections/`,target:"_blank",title:r.$t("guide.collections"),class:"mt-2"},[g(i(K),{class:"w-5 h-5"})],8,ot)]),e("div",st,[e("div",rt,[e("div",lt,[g(i(xe),{class:"w-5 h-5 text-gray-400"})]),le(e("input",{type:"text",class:"block w-full py-2 pl-10 pr-3 leading-5 text-gray-900 placeholder-gray-500 transition-colors bg-white border border-gray-300 rounded-md dark:border-gray-600 dark:bg-gray-700 dark:placeholder-gray-400 focus:outline-none focus:ring-sky-500 focus:border-sky-500 dark:text-white sm:text-sm",placeholder:r.$t("builder.searchCollections"),"onUpdate:modelValue":d[0]||(d[0]=C=>x.value=C)},null,8,at),[[ae,x.value]])]),e("div",nt,[e("button",{class:S(["inline-flex items-center justify-center whitespace-nowrap font-medium transition-colors rounded-md text-xs h-8 w-8 p-0 hover:bg-blue-700 hover:text-white cursor-pointer",{"bg-blue-600 text-white":i(u)==="list"}]),onClick:d[1]||(d[1]=C=>u.value="list")},[g($e,{class:"dark:text-blue-50 w-4 h-4"})],2),e("button",{class:S(["inline-flex items-center justify-center whitespace-nowrap font-medium transition-colors rounded-md text-xs h-8 w-8 p-0 hover:bg-blue-700 hover:text-white cursor-pointer",{"bg-blue-600 text-white":i(u)==="grid"}]),onClick:d[2]||(d[2]=C=>u.value="grid")},[g(Me,{class:"dark:text-blue-50 w-4 h-4"})],2)]),g(we)])]),e("div",null,[i(u)==="list"?(p(),M(he,{key:0,class:"max-h-[calc(100vh-270px)] overflow-y-auto overflow-x-hidden",columns:f,rows:j.value,onDelete:I,onEdit:U,onView:E},{actions:L(({row:C})=>[e("button",{class:"inline-flex items-center justify-center whitespace-nowrap font-medium border rounded-md text-xs h-8 w-8 p-0 border-slate-300 bg-white transition-all duration-200 shadow-sm group dark:border-slate-600 dark:bg-slate-700 dark:hover:bg-slate-600 dark:hover:border-slate-500 dark:hover:text-slate-200 hover:bg-blue-50 hover:border-blue-300 hover:text-blue-600",onClick:dt=>E(C)},[g(i(Y),{class:"text-slate-800 dark:text-slate-200 w-4 h-4 group-hover:text-blue-600 dark:group-hover:text-blue-50"})],8,it)]),_:1},8,["rows"])):D("",!0),i(u)==="grid"?(p(),M(Qe,{key:1,collections:j.value,onEdit:U,onView:E,onDelete:I,class:"max-h-[calc(100vh-270px)] overflow-y-auto overflow-x-hidden"},null,8,["collections"])):D("",!0),(($=l.value)==null?void 0:$.total)>16?(p(),M(me,{key:2,total:(V=l.value)==null?void 0:V.filtered,count:((A=l.value)==null?void 0:A.count)||((H=l.value)==null?void 0:H.total),page:t.value,"onUpdate:page":d[3]||(d[3]=C=>t.value=C),limit:s.value},null,8,["total","count","page","limit"])):D("",!0)])])}}});export{Vt as default};
@@ -0,0 +1 @@
1
+ import{d as b,o as t,a,b as c,f as g,e as r,L as p,g as k,t as o,h as i,v as u,j as m,k as x}from"./index-yMJAVBXk.js";import{C as d}from"./chevron-right-BiiSb3Be.js";const h={class:"flex items-center space-x-1 mb-4"},f=["onClick"],v={key:1,class:"flex gap-x-1 items-center px-2 py-1 rounded text-sm font-medium text-slate-700 dark:text-slate-300"},$=b({__name:"CollectionsBreadcrumb",props:{items:{}},emits:["navigate"],setup(y){return(e,n)=>(t(),a("div",h,[c("button",{class:"flex gap-x-1 items-center px-2 py-1 rounded text-sm font-medium transition-all duration-200 text-blue-600 dark:text-blue-400 bg-blue-50 dark:bg-blue-900/20 hover:bg-blue-100 dark:hover:bg-blue-900/30",onClick:n[0]||(n[0]=s=>e.$emit("navigate","collections"))},[g(r(p),{class:"w-3 h-3"}),k(" "+o(e.$t("navigation.collections")),1)]),e.items.length>0?(t(),i(r(d),{key:0,class:"w-3 h-3 text-slate-400 dark:text-slate-500"})):u("",!0),(t(!0),a(m,null,x(e.items,(s,l)=>(t(),a(m,{key:l},[l<e.items.length-1?(t(),a("button",{key:0,class:"flex gap-x-1 items-center px-2 py-1 rounded text-sm font-medium transition-all duration-200 text-blue-700 dark:text-blue-300 bg-blue-50 dark:bg-blue-900/20 hover:bg-blue-100 dark:hover:bg-blue-900/30",onClick:C=>e.$emit("navigate",s.route)},o(s.label),9,f)):(t(),a("span",v,o(s.label),1)),l<e.items.length-1?(t(),i(r(d),{key:2,class:"w-3 h-3 text-slate-400 dark:text-slate-500"})):u("",!0)],64))),128))]))}});export{$ as _};
@@ -0,0 +1 @@
1
+ import{d as w,u as b,m as p,A as k,p as C,o as l,a as i,b as e,t as n,e as r,f as c,H as $,B as j,C as B,j as L,k as F,h as f,L as V,l as E,q as S}from"./index-yMJAVBXk.js";import{_ as q}from"./EmptyData-Ct-xQv_N.js";import"./index-DGweaj24.js";import{S as D}from"./search-C4-fHihx.js";import{F as H}from"./file-B_duymIT.js";import{C as M}from"./chevron-right-BiiSb3Be.js";const N={class:"space-y-6 max-w-7xl mx-auto"},R={class:"flex items-center justify-between mb-8"},T={class:"flex gap-4"},A={class:"text-3xl font-bold text-slate-800 dark:text-slate-100 mb-2"},I={class:"text-slate-600 dark:text-slate-300"},P=["href","title"],Q={class:"relative w-full max-w-sm"},U={class:"absolute inset-y-0 left-0 flex items-center pl-3 pointer-events-none"},z=["placeholder"],G={key:0},J={class:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4 mb-6"},K=["onClick"],O={class:"flex items-start justify-between"},W={class:"flex items-start gap-3"},X={class:"text-sm font-semibold text-gray-800 mb-1"},Y={class:"text-xs text-gray-600"},Z={class:"flex items-center gap-2"},ee={class:"text-xs text-gray-500 whitespace-nowrap"},te={key:1,class:"flex items-center justify-center min-h-[400px]"},de=w({__name:"CollectionsPage",setup(se){const{t:oe,locale:m}=b(),g=E();S("fetchContentTypes");const d=p([]),h=p(""),_=k(()=>{const s=d.value.filter(t=>t.type!=="single"),a=h.value.trim().toLowerCase();return[...a?s.filter(t=>[t==null?void 0:t.title,t==null?void 0:t.name,t==null?void 0:t.id,t==null?void 0:t.description].filter(Boolean).join(" ").toLowerCase().includes(a)):s].sort((t,u)=>t.id==="pages"?-1:u.id==="pages"?1:0)});async function y(){try{const s=await fetch("/api/cms-type?type=collection");if(!s.ok)throw new Error("Failed to fetch collections");const a=await s.json();d.value=a.rows||[]}catch(s){console.error("Error fetching collections:",s)}}const x=s=>{g.push(`/collections/${s.id}`)};return C(()=>{y()}),(s,a)=>(l(),i("div",N,[e("div",R,[e("div",T,[e("div",null,[e("h1",A,n(s.$t("navigation.collections")),1),e("p",I,n(s.$t("collections.selectCollection")),1)]),e("a",{href:`https://cms.opengis.info/${r(m)}/guides/collections/`,target:"_blank",title:s.$t("guide.collections"),class:"mt-2"},[c(r($),{class:"w-5 h-5"})],8,P)]),e("div",Q,[e("div",U,[c(r(D),{class:"w-5 h-5 text-gray-400"})]),j(e("input",{"onUpdate:modelValue":a[0]||(a[0]=o=>h.value=o),type:"text",class:"block w-full py-2 pl-10 pr-3 leading-5 text-gray-900 placeholder-gray-500 transition-colors bg-white border border-gray-300 rounded-md dark:border-gray-600 dark:bg-gray-700 dark:placeholder-gray-400 focus:outline-none focus:ring-sky-500 focus:border-sky-500 dark:text-white sm:text-sm",placeholder:s.$t("collections.searchCollections")},null,8,z),[[B,h.value]])])]),d.value.length>0?(l(),i("div",G,[e("div",J,[(l(!0),i(L,null,F(_.value,o=>(l(),i("button",{key:o.id,onClick:v=>x(o),class:"w-full border border-gray-200 bg-white rounded-lg p-4 text-left hover:shadow-md transition-all hover:border-gray-300"},[e("div",O,[e("div",W,[o.id==="pages"?(l(),f(r(H),{key:0,class:"shrink-0 lucide lucide-page w-5 h-5 text-blue-600"})):(l(),f(r(V),{key:1,class:"shrink-0 lucide lucide-layers w-5 h-5 text-blue-600"})),e("div",null,[e("h4",X,n(o.title),1),e("p",Y,n(o.description||"Опис відсутній"),1)])]),e("div",Z,[e("span",ee,n(o.entries)+" записів",1),c(r(M),{class:"w-4 h-4 text-gray-400"})])])],8,K))),128))])])):(l(),i("div",te,[c(q)]))]))}});export{de as default};
@@ -0,0 +1,11 @@
1
+ import{c as S,d as p,u as x,o as l,a as c,b as e,t as r,e as u,f as n,H as L,w as A,g as m,r as j,n as g,h as _,i as I,F as v,U as k,I as U,j as w,k as $,l as F,m as P,p as T}from"./index-yMJAVBXk.js";import{P as B}from"./plus-DLR44m6p.js";import{E as M}from"./eye-Dijywc6g.js";import{C as H}from"./calendar-o9t4MkD2.js";import{S as N}from"./square-pen-xVs4e8Yb.js";/**
2
+ * @license lucide-vue-next v0.344.0 - ISC
3
+ *
4
+ * This source code is licensed under the ISC license.
5
+ * See the LICENSE file in the root directory of this source tree.
6
+ */const R=S("ActivityIcon",[["path",{d:"M22 12h-4l-3 9L9 3l-3 9H2",key:"d5dnw9"}]]);/**
7
+ * @license lucide-vue-next v0.344.0 - ISC
8
+ *
9
+ * This source code is licensed under the ISC license.
10
+ * See the LICENSE file in the root directory of this source tree.
11
+ */const V=S("ZapIcon",[["polygon",{points:"13 2 3 14 12 14 11 22 21 10 12 10 13 2",key:"45s27k"}]]),z={class:"flex items-center justify-between"},E={class:"flex items-center gap-2"},q={class:"text-4xl font-bold text-slate-800 dark:text-slate-100 mb-2"},J=["href","title"],O={class:"text-lg text-slate-600 dark:text-slate-300"},W=p({__name:"DashboardHeader",setup(b){const{locale:a}=x();return(o,t)=>{const i=j("router-link");return l(),c("div",z,[e("div",null,[e("div",E,[e("h1",q,r(o.$t("dashboard.title")),1),e("a",{href:`https://cms.opengis.info/${u(a)}/get-started/app-overview`,target:"_blank",title:o.$t("guide.appOverview")},[n(u(L),{class:"w-5 h-5"})],8,J)]),e("div",O,r(o.$t("dashboard.description")),1)]),e("div",null,[n(i,{to:"/settings/collections",class:"inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 shadow h-9 px-4 py-2 bg-blue-600 hover:bg-blue-700 text-white"},{default:A(()=>[n(u(B),{class:"w-4 h-4 mr-2"}),m(" "+r(o.$t("dashboard.newCollection")),1)]),_:1})])])}}}),Z={class:"rounded-xl text-card-foreground shadow-lg border-0 bg-white dark:bg-slate-800 backdrop-blur-sm hover:shadow-xl transition-all duration-300 transform hover:scale-105"},G={class:"p-6"},K={class:"flex items-start justify-between"},Q={class:"flex-1"},X={class:"flex items-center space-x-2 mb-2"},Y={class:"text-sm font-medium text-slate-600 dark:text-slate-400"},ee={class:"text-3xl font-bold text-slate-800 dark:text-slate-100 mb-1"},te={class:"text-xs text-slate-500 dark:text-slate-400 mb-3"},se=p({__name:"StatCard",props:{stat:{}},setup(b){const a=o=>({"file-text":v,users:k,image:U,eye:M})[o]||v;return(o,t)=>(l(),c("div",Z,[e("div",G,[e("div",K,[e("div",Q,[e("div",X,[e("div",{class:g(`p-2 rounded-lg bg-${o.stat.color}-50 dark:bg-${o.stat.color}-900/20`)},[(l(),_(I(a(o.stat.icon)),{class:g(`w-5 h-5 text-${o.stat.color}-600`)},null,8,["class"]))],2),e("p",Y,r(o.stat.title),1)]),e("p",ee,r(o.stat.value),1),e("p",te,r(o.stat.description),1)])])])]))}}),oe={class:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-6"},ae=p({__name:"StatsGrid",props:{stats:{}},setup(b){return(a,o)=>(l(),c("div",oe,[(l(!0),c(w,null,$(a.stats,t=>(l(),_(se,{key:t.id,stat:t},null,8,["stat"]))),128))]))}}),re={class:"p-4 hover:bg-slate-50 dark:hover:bg-slate-700/50 transition-colors"},ie={class:"flex items-center justify-between"},ne={class:"flex-1"},le={class:"flex items-center space-x-3 mb-2"},de={class:"inline-flex items-center rounded-md border px-2.5 py-0.5 font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 text-xs bg-white dark:bg-slate-700 border-slate-300 dark:border-slate-600 text-slate-600 dark:text-slate-300"},ce={class:"font-semibold text-slate-800 dark:text-slate-100 mb-1"},ue={class:"flex items-center space-x-4 text-sm text-slate-500 dark:text-slate-400"},he={class:"flex items-center"},pe={class:"flex items-center"},be={class:"flex items-center"},me={class:"flex items-center space-x-2"},ge=p({__name:"ContentItem",props:{item:{}},setup(b){const a=t=>{const i={published:"inline-flex items-center rounded-md border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 border-transparent hover:bg-secondary/80 bg-green-100 dark:bg-green-900/30 text-green-800 dark:text-green-300",draft:"inline-flex items-center rounded-md border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 border-transparent hover:bg-secondary/80 bg-yellow-100 dark:bg-yellow-900/30 text-yellow-800 dark:text-yellow-300",review:"inline-flex items-center rounded-md border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 border-transparent hover:bg-secondary/80 bg-blue-100 dark:bg-blue-900/30 text-blue-800 dark:text-blue-300"};return i[t]||i.draft},o=t=>{if(!t)return"--.--.--";const i=new Date(t);return new Intl.DateTimeFormat("en-US",{year:"numeric",month:"short",day:"numeric"}).format(i)};return(t,i)=>{const d=j("router-link");return l(),c("div",re,[e("div",ie,[e("div",ne,[e("div",le,[e("div",de,r(t.item.type),1),e("div",{class:g(a(t.item.status))},r(t.item.status||"--"),3)]),e("h3",ce,r(t.item.title||"--"),1),e("div",ue,[e("span",he,[n(u(k),{class:"w-4 h-4 mr-1"}),m(" "+r(t.item.author||"--"),1)]),e("span",pe,[n(u(H),{class:"w-4 h-4 mr-1"}),m(" "+r(o(t.item.updated_at)||"--.--.--"),1)]),e("span",be,[n(u(M),{class:"w-4 h-4 mr-1"}),m(" "+r(t.item.views||"--")+" "+r(t.$t("dashboard.views")),1)])])]),e("div",me,[n(d,{to:`/collections/${t.item.object_id}/${t.item.content_id}`,class:"inline-flex items-center justify-center whitespace-nowrap font-medium transition-colors border shadow-sm rounded-md text-xs h-8 w-8 p-0 bg-white border-slate-300 hover:text-accent-foreground hover:bg-slate-50 dark:border-slate-600 dark:bg-slate-700 dark:hover:bg-slate-600"},{default:A(()=>[n(u(N),{class:"w-4 h-4 dark:text-blue-50"})]),_:1},8,["to"])])])])}}}),_e={class:"lg:col-span-2"},fe={class:"rounded-xl text-card-foreground shadow-lg border-0 bg-white dark:bg-slate-800 backdrop-blur-sm"},ve={class:"flex flex-col space-y-1.5 p-6 border-b border-slate-200 dark:border-slate-700 bg-gradient-to-r from-slate-50 dark:from-slate-800 to-white dark:to-slate-800"},xe={class:"flex items-center justify-between"},ke={class:"tracking-tight text-xl font-semibold text-slate-800 dark:text-slate-100 flex items-center"},we={class:"p-0"},$e={class:"divide-y divide-slate-100 dark:divide-slate-700"},ye=p({__name:"RecentContent",props:{content:{}},setup(b){const a=F(),o=t=>{a.push(t)};return(t,i)=>(l(),c("div",_e,[e("div",fe,[e("div",ve,[e("div",xe,[e("h3",ke,[n(u(R),{class:"w-5 h-5 mr-2"}),m(" "+r(t.$t("dashboard.recentContent")),1)]),e("button",{onClick:i[0]||(i[0]=d=>o("/settings/collections")),class:"inline-flex items-center justify-center whitespace-nowrap font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 border shadow-sm hover:text-accent-foreground h-8 rounded-md px-3 text-xs bg-white dark:bg-slate-700 border-slate-300 dark:border-slate-600 text-slate-700 dark:text-slate-300 hover:bg-slate-50 dark:hover:bg-slate-600"},r(t.$t("dashboard.viewAll")),1)])]),e("div",we,[e("div",$e,[(l(!0),c(w,null,$(t.content,d=>(l(),_(ge,{key:d.id,item:d},null,8,["item"]))),128))])])])]))}}),Ce={class:"rounded-xl text-card-foreground shadow-lg border-0 bg-white dark:bg-slate-800 backdrop-blur-sm"},De={class:"flex flex-col space-y-1.5 p-6 border-b border-slate-200 dark:border-slate-700 bg-gradient-to-r from-slate-50 dark:from-slate-800 to-white dark:to-slate-800"},Pe={class:"tracking-tight text-lg font-semibold text-slate-800 dark:text-slate-100 flex items-center"},Se={class:"p-4"},Ae={class:"grid grid-cols-2 gap-3"},je=["onClick"],Ie={class:"p-2 rounded-lg bg-blue-50 dark:bg-blue-900/20 mb-2 w-fit"},Ue={class:"font-medium text-slate-800 dark:text-slate-100 text-sm mb-1 group-hover:text-slate-900 dark:group-hover:text-slate-50"},Fe={class:"text-xs text-slate-500 dark:text-slate-400 group-hover:text-slate-600 dark:group-hover:text-slate-300"},Me=p({__name:"QuickActions",setup(b){const a=F(),{t:o}=x(),t=[{id:"create-article",title:o("dashboard.createArticle"),description:o("dashboard.createArticleDescription"),icon:v,iconColor:"text-blue-500",link:"/collections/pages/create"},{id:"upload-media",title:o("dashboard.uploadMedia"),description:o("dashboard.uploadMediaDescription"),icon:U,iconColor:"text-purple-500",link:"/media"},{id:"manage-users",title:o("dashboard.manageUsers"),description:o("dashboard.manageUsersDescription"),icon:k,iconColor:"text-green-500",link:"/settings/users"}],i=d=>{d&&a.push(d)};return(d,h)=>(l(),c("div",Ce,[e("div",De,[e("h3",Pe,[n(u(V),{class:"w-5 h-5 mr-2"}),m(" "+r(d.$t("dashboard.quickActions")),1)])]),e("div",Se,[e("div",Ae,[(l(),c(w,null,$(t,s=>e("button",{key:s.id,class:"p-3 rounded-lg border border-slate-200 transition-all duration-200 text-left group hover:bg-slate-50 hover:shadow-md dark:border-slate-600 bg-white dark:bg-slate-700 dark:hover:bg-slate-600",onClick:f=>i(s==null?void 0:s.link)},[e("div",Ie,[(l(),_(I(s==null?void 0:s.icon),{class:g(`w-4 h-4 ${s==null?void 0:s.iconColor}`)},null,8,["class"]))]),e("h3",Ue,r(s==null?void 0:s.title),1),e("p",Fe,r(s==null?void 0:s.description),1)],8,je)),64))])])]))}}),Le={class:"w-full max-w-7xl mx-auto space-y-8"},Te={class:"grid grid-cols-1 lg:grid-cols-3 gap-6"},ze=p({__name:"Dashboard",setup(b){const{t:a}=x(),o=P([{id:"total-content",title:a("dashboard.totalContent"),value:"2,847",description:a("dashboard.articlesPostsPages"),change:{value:"+12.5%",isPositive:!0},icon:"file-text",color:"blue"},{id:"active-users",title:a("dashboard.activeUsers"),value:"1,234",description:a("dashboard.monthlyActiveUsers"),change:{value:"+8.2%",isPositive:!0},icon:"users",color:"emerald"},{id:"media-files",title:a("dashboard.mediaFiles"),value:"5,692",description:a("dashboard.imagesVideosDocs"),change:{value:"+23.1%",isPositive:!0},icon:"image",color:"purple"},{id:"new-media",title:a("dashboard.newMediaFiles"),value:"89.2K",description:a("dashboard.thisMonth"),change:{value:"-2.4%",isPositive:!1},icon:"eye",color:"orange"}]),t=P([{id:1,type:"Article",status:"published",title:a("dashboard.gettingStartedWithNextJs14"),author:a("dashboard.sarahJohnson"),updated_at:"2024-01-15",views:1247},{id:2,type:"Post",status:"draft",title:a("dashboard.advancedReactPatterns"),author:a("dashboard.mikeChen"),updated_at:"2024-01-14",views:0},{id:3,type:"Article",status:"published",title:a("dashboard.uiUxDesignPrinciples"),author:a("dashboard.emmaWilson"),updated_at:"2024-01-13",views:892},{id:4,type:"Post",status:"review",title:a("dashboard.databaseOptimizationTips"),author:a("dashboard.alexRodriguez"),updated_at:"2024-01-12",views:0}]),i=h=>{o.value=o.value.map(s=>{var f,y,C,D;switch(s.id){case"total-content":return{...s,value:((f=h.totalContent)==null?void 0:f.toLocaleString())??s.value};case"active-users":return{...s,value:((y=h.totalUsers)==null?void 0:y.toLocaleString())??s.value};case"media-files":return{...s,value:((C=h.totalMediaFiles)==null?void 0:C.toLocaleString())??s.value};case"new-media":return{...s,value:((D=h.newMediaFiles)==null?void 0:D.toLocaleString())??s.value};default:return s}})},d=async()=>{const s=await(await fetch("api/cms-stat")).json();t.value=s.recentContent,i(s.stat)};return T(()=>{d()}),(h,s)=>(l(),c("div",Le,[n(W),n(ae,{stats:o.value},null,8,["stats"]),e("div",Te,[n(ye,{content:t.value,class:"lg:col-span-2"},null,8,["content"]),e("div",null,[n(Me)])])]))}});export{ze as default};
@@ -0,0 +1,41 @@
1
+ import{c as C,m as f,D as V,p as S,o as m,a as v,f as h,v as L,u as T,A as I,b as l,e as _,g as P,t as d,w as M,E as Z,h as F,n as J,i as R,j as Q,I as K,G as W,k as X,r as ee,q as te,J as le,l as ie}from"./index-yMJAVBXk.js";import{_ as oe}from"./MonacoEditor.vue_vue_type_script_setup_true_lang-CjoEsC67.js";import{Q as k,l as U}from"./index-DCW2e4Az.js";import{J as G,y as O,Z as se}from"./index-DGweaj24.js";import{P as re}from"./plus-DLR44m6p.js";import{S as ae}from"./square-pen-xVs4e8Yb.js";import{d as ne}from"./vuedraggable.umd-W_2WTF6i.js";import{F as B}from"./file-B_duymIT.js";import{L as de}from"./list-CXRbSNky.js";import{C as ue}from"./calendar-o9t4MkD2.js";import{_ as ce,a as me,V as pe,b as z,c as be,d as fe,e as ve,g as ge}from"./vs-form-reletion-link-C-xrdHDl.js";import"./pencil-CwnPP4IJ.js";import"./trash-2-BGXMNU3d.js";import"./MediaBreadcrumb-BpOxt5PK.js";import"./chevron-right-BiiSb3Be.js";import"./search-C4-fHihx.js";/**
2
+ * @license lucide-vue-next v0.344.0 - ISC
3
+ *
4
+ * This source code is licensed under the ISC license.
5
+ * See the LICENSE file in the root directory of this source tree.
6
+ */const D=C("CheckSquareIcon",[["path",{d:"m9 11 3 3L22 4",key:"1pflzl"}],["path",{d:"M21 12v7a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11",key:"1jnkn4"}]]);/**
7
+ * @license lucide-vue-next v0.344.0 - ISC
8
+ *
9
+ * This source code is licensed under the ISC license.
10
+ * See the LICENSE file in the root directory of this source tree.
11
+ */const ye=C("ClockIcon",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["polyline",{points:"12 6 12 12 16 14",key:"68esgv"}]]);/**
12
+ * @license lucide-vue-next v0.344.0 - ISC
13
+ *
14
+ * This source code is licensed under the ISC license.
15
+ * See the LICENSE file in the root directory of this source tree.
16
+ */const H=C("HashIcon",[["line",{x1:"4",x2:"20",y1:"9",y2:"9",key:"4lhtct"}],["line",{x1:"4",x2:"20",y1:"15",y2:"15",key:"vyu0kd"}],["line",{x1:"10",x2:"8",y1:"3",y2:"21",key:"1ggp8o"}],["line",{x1:"16",x2:"14",y1:"3",y2:"21",key:"weycgp"}]]);/**
17
+ * @license lucide-vue-next v0.344.0 - ISC
18
+ *
19
+ * This source code is licensed under the ISC license.
20
+ * See the LICENSE file in the root directory of this source tree.
21
+ */const he=C("LayoutTemplateIcon",[["rect",{width:"18",height:"7",x:"3",y:"3",rx:"1",key:"f1a2em"}],["rect",{width:"9",height:"7",x:"3",y:"14",rx:"1",key:"jqznyg"}],["rect",{width:"5",height:"7",x:"16",y:"14",rx:"1",key:"q5h2i8"}]]);/**
22
+ * @license lucide-vue-next v0.344.0 - ISC
23
+ *
24
+ * This source code is licensed under the ISC license.
25
+ * See the LICENSE file in the root directory of this source tree.
26
+ */const A=C("LinkIcon",[["path",{d:"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71",key:"1cjeqo"}],["path",{d:"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71",key:"19qd67"}]]);/**
27
+ * @license lucide-vue-next v0.344.0 - ISC
28
+ *
29
+ * This source code is licensed under the ISC license.
30
+ * See the LICENSE file in the root directory of this source tree.
31
+ */const E=C("ListTreeIcon",[["path",{d:"M21 12h-8",key:"1bmf0i"}],["path",{d:"M21 6H8",key:"1pqkrb"}],["path",{d:"M21 18h-8",key:"1tm79t"}],["path",{d:"M3 6v4c0 1.1.9 2 2 2h3",key:"1ywdgy"}],["path",{d:"M3 10v6c0 1.1.9 2 2 2h3",key:"2wc746"}]]);/**
32
+ * @license lucide-vue-next v0.344.0 - ISC
33
+ *
34
+ * This source code is licensed under the ISC license.
35
+ * See the LICENSE file in the root directory of this source tree.
36
+ */const xe=C("TrashIcon",[["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6",key:"4alrt4"}],["path",{d:"M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2",key:"v07s0e"}]]);/**
37
+ * @license lucide-vue-next v0.344.0 - ISC
38
+ *
39
+ * This source code is licensed under the ISC license.
40
+ * See the LICENSE file in the root directory of this source tree.
41
+ */const j=C("TypeIcon",[["polyline",{points:"4 7 4 4 20 4 20 7",key:"1nosan"}],["line",{x1:"9",x2:"15",y1:"20",y2:"20",key:"swin9y"}],["line",{x1:"12",x2:"12",y1:"4",y2:"20",key:"1tx1rr"}]]),we={__name:"vs-builder-monaco",props:{yaml:{type:String,default:""},yamlModifiers:{}},emits:["update:yaml"],setup(u){const e=f("");V(u,"yaml");const s=f(null);return S(()=>{s.value=Math.random().toString(36).substring(2,15)}),(i,t)=>s.value?(m(),v("div",{key:s.value},[h(oe,{modelValue:e.value,"onUpdate:modelValue":t[0]||(t[0]=o=>e.value=o),language:"yaml",theme:"vs-light",height:"calc(100vh - 200px)",width:"100%",options:{minimap:{enabled:!1}}},null,8,["modelValue"])])):L("",!0)}},q=(u=0,e)=>({name:{type:"text",label:e("builder.fieldLabels.name"),required:!0,placeholder:e("builder.fieldPlaceholders.name"),validators:["required"]},label:{type:"text",label:e("builder.fieldLabels.label"),required:!0,placeholder:e("builder.fieldPlaceholders.label"),validators:["required"]},placeholder:{type:"text",label:e("builder.fieldLabels.placeholder"),required:!0,placeholder:e("builder.fieldPlaceholders.placeholder")},help:{type:"text",label:e("builder.fieldLabels.help"),placeholder:e("builder.fieldPlaceholders.help")},type:{type:"combobox",mode:"combo",label:e("builder.fieldLabels.type"),required:!0,maxHeight:"300",slots:{option:'<div class="flex items-center gap-2 p-2 py-1 rounded hover:bg-gray-100" :class="{ \'bg-gray-100\': selectedNavIndex === ind, \'bg-gray-100\': modelValue == ind }" ><div :class="`flex items-center gap-2 p-1 bg-${color }-100 rounded`"><component :is="`icon-${id}`" class="block" height="24" width="30" /></div><span class="text-sm text-gray-700">{{ text }}</span></div>'},options:[{text:e("builder.fieldOptions.text"),id:"text",color:"blue"},{text:e("builder.fieldOptions.number"),id:"number",color:"green"},{text:e("builder.fieldOptions.date"),id:"date",color:"red"},{text:e("builder.fieldOptions.datetime"),id:"datetime",color:"purple"},{text:e("builder.fieldOptions.file"),id:"file",color:"yellow"},{text:e("builder.fieldOptions.select"),id:"select",color:"yellow"},{text:e("builder.fieldOptions.multiselect"),id:"multiselect",color:"blue"},{text:e("builder.fieldOptions.mediaselect"),id:"mediaselect",color:"orange"},{text:e("builder.fieldOptions.radio"),id:"radio",color:"blue"},{text:e("builder.fieldOptions.boolean"),id:"boolean",color:"red"},{text:e("builder.fieldOptions.datalist"),id:"datalist",color:"orange"},{text:e("builder.fieldOptions.image"),id:"image",color:"blue"},{text:e("builder.fieldOptions.slug"),id:"slug",color:"green"},{text:e("builder.fieldOptions.richtext"),id:"richtext",color:"red"},{text:e("builder.fieldOptions.reference"),id:"reference",color:"yellow"},{text:e("builder.fieldOptions.relation"),id:"relation",color:"pink"},{text:e("builder.fieldOptions.fileList"),id:"FileList",color:"orange"},{text:e("builder.fieldOptions.tags"),id:"tags",color:"blue"}].filter(s=>u>1?s.id!=="datalist":!0),validators:["required"]},subtype:{type:"combobox",mode:"combo",label:e("builder.fieldLabels.subtype"),placeholder:e("builder.fieldPlaceholders.subtype"),options:[{text:e("builder.fieldOptions.text"),id:"text"},{text:e("builder.fieldOptions.number"),id:"number"},{text:e("builder.fieldOptions.date"),id:"date"},{text:e("builder.fieldOptions.datetime"),id:"datetime"}],conditions:["type","==","array"]},parent:{type:"text",label:e("builder.fieldLabels.parent"),placeholder:e("builder.fieldPlaceholders.parent"),conditions:["type","in",["slug","select","multiselect"]]},data:{type:"text",label:e("builder.fieldLabels.data"),placeholder:e("builder.fieldPlaceholders.data"),conditions:["type","in",["select","multiselect"]]},options:{type:"datalist",label:e("builder.fieldLabels.options"),conditions:["type","in",["select","multiselect","radio"]],colModel:[{key:"id",ua:"ID",type:"text",validators:["required"],col:6},{key:"text",ua:"Text",type:"text",validators:["required"],col:6}]},colModel:u<=1?{type:"datalist",label:e("builder.fieldLabels.colModel"),conditions:["type","==","datalist"],colModel:Object.entries(q(u+1,e)).map(([s,i])=>({key:s,...i,ua:(i==null?void 0:i.label)||(i==null?void 0:i.ua)}))}:{type:"switcher",label:e("builder.fieldLabels.required"),hidden:!0,required:!0},multiple:{type:"switcher",label:e("builder.fieldLabels.multiple"),conditions:["type","==","file"]},relation:{type:"combobox",data:"collection",label:e("builder.fieldLabels.relation"),conditions:["type","==","relation"]},required:{type:"switcher",label:e("builder.fieldLabels.required"),required:!0},localization:{type:"switcher",label:e("builder.fieldLabels.localization"),conditions:["type","in",["richtext","text","reference","multiselect","datalist"]],required:!0}}),ke={class:"flex justify-end p-[20px] gap-[10px] border-t w-full"},_e={__name:"vs-builder-datatable-form",props:{modelValue:{type:Array,default:()=>[]},modelModifiers:{}},emits:["update:modelValue"],setup(u){const{t:e}=T();k["vs-input-datalist"]=k.VsInputDatatable;const s=V(u,"modelValue"),i=f(!1),t=f({}),o=f({}),r=I(()=>(o.value,q(0,e))),c=async()=>{if(await t.value.validate()){O({type:"warning",title:e("common.actions.warning"),message:e("builder.createFieldFailed")});return}try{s.value=[...s.value,o.value],o.value={},i.value=!1}catch(n){console.log(n)}};return(a,n)=>(m(),v("div",null,[l("button",{onClick:n[0]||(n[0]=g=>i.value=!0),class:"inline-flex items-center justify-center h-10 gap-2 px-4 py-2 text-sm font-medium transition-colors border rounded-md hover hover:bg-gray-200 whitespace-nowrap ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring 0"},[h(_(re),{class:"w-4 h-4 mr-2"}),P(" "+d(a.$t("common.actions.addField")),1)]),h(_(G),{teleport:"#modal",title:a.$t("builder.createField"),size:"small",visible:i.value,"onUpdate:visible":n[4]||(n[4]=g=>i.value=g),onClose:n[5]||(n[5]=g=>i.value=!1)},{footer:M(()=>[l("div",ke,[l("button",{class:"inline-flex items-center px-3 py-2 text-sm text-black duration-300 border border-gray-200 rounded-lg gap-x-2 whitespace-nowrap hover:bg-gray-100",onClick:n[3]||(n[3]=g=>i.value=!1)},d(a.$t("common.actions.cancel")),1),l("button",{onClick:c,class:"py-2 px-3 inline-flex items-center gap-x-2 text-sm whitespace-nowrap text-white bg-blue-500 rounded-lg !border-gray-200 hover:bg-blue-700 duration-300"},d(a.$t("common.actions.save")),1)])]),default:M(()=>[h(_(U),{modelValue:o.value,"onUpdate:modelValue":n[1]||(n[1]=g=>o.value=g),schema:r.value,form:t.value,"onUpdate:form":n[2]||(n[2]=g=>t.value=g)},null,8,["modelValue","schema","form"])]),_:1},8,["title","visible"])]))}},$e={class:"flex items-center justify-end col-span-3 gap-2"},Ve={key:2,class:"w-8 h-4"},Ce={class:"flex justify-end p-[20px] gap-[10px] border-t w-full"},qe={__name:"vs-builder-datatable-controls",props:Z({index:{type:Number,required:!0},data:{type:Object,required:!0}},{columns:{type:Array,default:()=>[]},columnsModifiers:{}}),emits:["update:columns"],setup(u){const{t:e}=T(),s=u,i=V(u,"columns"),t=f(!1),o=f({}),r=f({...s.data||{}}),c=f({});S(()=>{s.data.required?c.value={...q(0,e),name:{...q(0,e).name,disabled:!0},label:{...q(0,e).label,disabled:!0},type:{...q(0,e).type,disabled:!0}}:c.value=q(0,e)});const a=()=>{se({title:e("builder.deleteTitle"),message:e("builder.deleteField"),type:"error",onConfirm:()=>{n()}})},n=()=>{i.value=i.value.filter(($,p)=>p!==s.index)},g=async()=>{if(await o.value.validate()){O({type:"warning",title:e("common.actions.warning"),message:e("builder.editFieldFailed")});return}try{i.value[s.index]=r.value,t.value=!1}catch(p){console.log(p)}};return($,p)=>(m(),v("div",$e,[["status"].includes(u.data.name)?L("",!0):(m(),v("button",{key:0,onClick:p[0]||(p[0]=b=>t.value=!0),class:"inline-flex items-center justify-center gap-2 whitespace-nowrap text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 hover:text-accent-foreground h-8 w-8 rounded-full hover:bg-gray-100"},[h(_(ae),{class:"w-4 h-4"})])),u.data.required?(m(),v("button",Ve)):(m(),v("button",{key:1,onClick:a,class:"inline-flex items-center justify-center gap-2 whitespace-nowrap text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 h-8 w-8 rounded-full hover:bg-red-100 text-red-600 hover:text-red-700"},[h(_(xe),{class:"w-4 h-4"})])),h(_(G),{teleport:"#modal",visible:t.value,title:$.$t("builder.editField"),onClose:p[4]||(p[4]=b=>t.value=!1)},{footer:M(()=>[l("div",Ce,[l("button",{class:"inline-flex items-center px-3 py-2 text-sm text-black duration-300 border border-gray-200 rounded-lg gap-x-2 whitespace-nowrap hover:bg-gray-100",onClick:p[3]||(p[3]=b=>t.value=!1)},d($.$t("common.actions.cancel")),1),l("button",{class:"py-2 px-3 inline-flex items-center gap-x-2 text-sm whitespace-nowrap text-white bg-blue-500 rounded-lg !border-gray-200 hover:bg-blue-700 duration-300",onClick:g},d($.$t("common.actions.save")),1)])]),default:M(()=>[h(_(U),{modelValue:r.value,"onUpdate:modelValue":p[1]||(p[1]=b=>r.value=b),schema:c.value,form:o.value,"onUpdate:form":p[2]||(p[2]=b=>o.value=b)},null,8,["modelValue","schema","form"])]),_:1},8,["visible","title"])]))}},Le={class:"flex items-center justify-between mb-6"},Me={class:"text-xl font-semibold text-gray-900"},Oe={class:"mt-1 text-sm text-gray-600"},je={class:"flex items-center gap-2"},Fe={class:"overflow-hidden bg-white border border-gray-200 shadow-sm rounded-xl"},Te={class:"grid grid-cols-12 gap-4 px-6 py-4 border-b border-gray-200 bg-gray-50"},Ie={class:"col-span-5 font-medium text-gray-700"},Ue={class:"col-span-3 font-medium text-gray-700"},ze={class:"col-span-2 font-medium text-gray-700"},Pe={class:"col-span-2 font-medium text-right text-gray-700"},Se={class:"divide-y divide-gray-100"},Ne={class:"grid items-center grid-cols-12 gap-4 px-6 py-4 transition-colors hover:bg-gray-50/50"},Be={class:"flex items-center col-span-5 gap-3"},De={class:"font-medium text-gray-900"},He={class:"text-xs text-gray-500"},Ae={key:0,class:"inline-flex items-center px-2 py-1 text-xs font-medium text-blue-700 rounded-full bg-blue-50 ring-1 ring-inset ring-blue-700/10"},Ee={class:"col-span-3"},Je={class:"inline-flex items-center px-2 py-1 text-sm font-medium text-gray-600 rounded-md bg-gray-50 ring-1 ring-inset ring-gray-500/10"},Re={class:"col-span-1"},Qe={key:0,xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round",class:"lucide lucide-circle-check w-4 h-4 text-emerald-600"},Ge={key:1,class:"grid items-center grid-cols-12 gap-4 px-6 py-4 transition-colors hover:bg-gray-50/50"},Ye={class:"col-span-5"},Ze={class:"text-gray-500"},Ke={__name:"vs-builder-datatable",props:{modelValue:{},modelModifiers:{}},emits:["update:modelValue"],setup(u){const e=V(u,"modelValue"),s=t=>t==="array"?"purple":t==="boolean"||t==="date"?"red":t==="datetime"?"purple":t==="number"?"green":t==="text"?"blue":t==="file"||t==="select"?"yellow":t==="slug"?"green":t==="image"?"blue":"gray",i=t=>{switch(t){case"text":return j;case"number":return H;case"integer":return H;case"date":return ue;case"datetime":return ye;case"file":return B;case"select":return E;case"multiselect":return de;case"mediaselect":return Image;case"radio":return D;case"boolean":return D;case"datalist":return E;case"image":return K;case"slug":return A;case"richtext":return j;case"markdown":return j;case"reference":return he;case"relation":return A;case"FileList":return B;default:return j}};return(t,o)=>{var r,c;return m(),v(Q,null,[l("div",Le,[l("div",null,[l("h2",Me,d(t.$t("builder.collectionStructure")),1),l("p",Oe,d(t.$t("builder.defineFields")),1)]),l("div",je,[h(_e,{modelValue:e.value.columns,"onUpdate:modelValue":o[0]||(o[0]=a=>e.value.columns=a)},null,8,["modelValue"])])]),l("div",Fe,[l("div",Te,[l("div",Ie,d(t.$t("builder.name")),1),l("div",Ue,d(t.$t("builder.type")),1),l("div",ze,d(t.$t("builder.localization")),1),l("div",Pe,d(t.$t("builder.actions")),1)]),l("div",Se,[(c=(r=e.value)==null?void 0:r.columns)!=null&&c.length?(m(),F(_(ne),{key:0,modelValue:e.value.columns,"onUpdate:modelValue":o[2]||(o[2]=a=>e.value.columns=a),"item-key":"name",handle:".drag-handle",animation:200},{item:M(({element:a,index:n})=>{var g,$;return[l("div",Ne,[l("div",Be,[o[3]||(o[3]=l("span",{class:"drag-handle cursor-move mr-2 text-gray-400"},"☰",-1)),l("div",{class:J(["flex items-center justify-center p-1 rounded",`bg-${s((g=a.type)==null?void 0:g.toLowerCase())}-100`])},[(m(),F(R(i(($=a.type)==null?void 0:$.toLowerCase())),{class:"w-4 h-4"}))],2),l("div",null,[l("p",De,d(a.label),1),l("p",He,d(a.name),1)]),a.required?(m(),v("span",Ae,d(t.$t("builder.required")),1)):L("",!0)]),l("div",Ee,[l("span",Je,d(a.type),1)]),l("div",Re,[a.localization?(m(),v("svg",Qe,[...o[4]||(o[4]=[l("circle",{cx:"12",cy:"12",r:"10"},null,-1),l("path",{d:"m9 12 2 2 4-4"},null,-1)])])):L("",!0)]),h(qe,{columns:e.value.columns,"onUpdate:columns":o[1]||(o[1]=p=>e.value.columns=p),data:e.value.columns[n],index:n},null,8,["columns","data","index"])])]}),_:1},8,["modelValue"])):(m(),v("div",Ge,[l("div",Ye,[l("p",Ze,d(t.$t("builder.noColumnsFound")),1)])]))])])],64)}}},We={__name:"vs-builder-edit",props:{data:{},dataModifiers:{},form:{},formModifiers:{}},emits:["update:data","update:form"],setup(u){const{t:e}=T(),s=V(u,"data"),i=V(u,"form");f({});const t=I(()=>({name:{type:"text",label:e("builder.scheme.name.label"),required:!0,placeholder:e("builder.scheme.name.placeholder"),validators:["required"],col:4},title:{type:"text",label:e("builder.scheme.title.label"),required:!0,placeholder:e("builder.scheme.title.placeholder"),validators:["required"],col:4},preview_path:{type:"text",label:e("builder.scheme.preview_path.label"),placeholder:e("builder.scheme.preview_path.placeholder"),col:4,info:e("builder.scheme.preview_path.info")},type:{type:"select",label:e("builder.scheme.type.label"),required:!0,placeholder:e("builder.scheme.type.placeholder"),validators:["required"],col:4,options:[{text:e("builder.scheme.type.options.collection"),id:"collection"},{text:e("builder.scheme.type.options.single"),id:"single"}]},status:{type:"select",label:e("builder.scheme.status.label"),required:!0,placeholder:e("builder.scheme.status.placeholder"),col:4,options:[{text:e("builder.scheme.status.options.published"),id:"published"},{text:e("builder.scheme.status.options.draft"),id:"draft"},{text:e("builder.scheme.status.options.archived"),id:"archived"}]},include_search:{type:"switcher",label:e("builder.scheme.include_search.label"),placeholder:e("builder.scheme.include_search.placeholder"),col:4},description:{type:"textarea",label:e("builder.scheme.description.label"),required:!0,placeholder:e("builder.scheme.description.placeholder")}}));return W(()=>{i.value=null}),(o,r)=>(m(),v("div",null,[h(_(U),{modelValue:s.value,"onUpdate:modelValue":r[0]||(r[0]=c=>s.value=c),schema:t.value,form:i.value,"onUpdate:form":r[1]||(r[1]=c=>i.value=c)},null,8,["modelValue","schema","form"]),h(Ke,{modelValue:s.value,"onUpdate:modelValue":r[2]||(r[2]=c=>s.value=c)},null,8,["modelValue"])]))}},Xe={__name:"vs-builder-preview",props:{data:{},dataModifiers:{},form:{},formModifiers:{}},emits:["update:data","update:form"],setup(u){k["vs-input-custom-datatable"]=ce,k["vs-input-reference"]=me,k["vs-input-texteditor"]=pe,k["vs-input-mediaselect"]=z,k["vs-input-file"]=z,k["vs-input-image"]=z,k["vs-input-richtext-md"]=be,k["vs-input-integer"]=fe,k["vs-input-relation-link"]=ve;const e=f({}),s=V(u,"data"),i=V(u,"form"),t=I(()=>{var o,r;return((r=(o=s.value)==null?void 0:o.columns)==null?void 0:r.map(ge))||[]});return(o,r)=>{var c;return m(),v("div",{ref_key:"form",ref:i},[((c=t.value)==null?void 0:c.length)>0?(m(),F(_(U),{key:0,modelValue:e.value,"onUpdate:modelValue":r[0]||(r[0]=a=>e.value=a),schema:t.value},null,8,["modelValue","schema"])):L("",!0)],512)}}},et={monaco:we,edit:We,preview:Xe},tt={class:"max-w-6xl mx-auto"},lt={class:"flex items-center justify-between mb-6"},it={class:"mb-2 text-2xl font-semibold text-gray-900"},ot={class:"lowercase"},st={class:"text-gray-600"},rt={class:"flex items-center gap-2"},at={class:"w-full"},nt={class:"flex items-center w-full h-10 max-w-md grid-cols-3 p-1 mb-6 bg-white border border-gray-200 rounded-md text-muted-foreground"},dt=["onClick"],ut={key:0,class:"container mx-auto bg-white rounded-md py-4 px-2 bg-opacity-50"},qt={__name:"EditCollectionPage",setup(u){const{t:e}=T(),s=te("fetchContentTypes"),i=f("edit"),t=f({yaml:"",data:{columns:[],type:"collection"}}),o=f({}),r=f(""),c=le(),a=ie(),n=f(!1),g=I(()=>[{name:e("builder.edit"),id:"edit"},{name:e("builder.preview"),id:"preview"}]),$=async()=>{var b;try{const w=await(await fetch(`/api/cms-type/${c.params.id}`)).json(),y={...w,columns:Array.isArray(w.columns)?w.columns:(b=Object.entries((w==null?void 0:w.columns)||{}))==null?void 0:b.map(([N,Y])=>({...Y,name:N}))};t.value={...t.value,data:y},r.value=y.title||y.name}catch(x){console.error(x)}finally{n.value=!0}},p=async()=>{var b,x;try{if(await o.value.validate()){O({type:"warning",title:e("common.actions.warning"),message:e("builder.editFieldFailed")});return}const y=await fetch(`/api/cms-type/${c.params.id}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(i.value==="monaco"?(b=t.value)==null?void 0:b.yaml:(x=t.value)==null?void 0:x.data)});a.push("/settings/collections"),s(),O({type:"success",title:e("common.actions.success"),message:e("collections.collectionCreated")})}catch(w){console.error(w),O({type:"error",title:e("common.actions.error"),message:e("collections.collectionCreationFailed")})}};return S(()=>{$()}),(b,x)=>{const w=ee("router-link");return m(),v("div",tt,[l("div",lt,[l("div",null,[l("h1",it,[P(d(b.$t("builder.editCollection"))+" ",1),l("span",ot,d(r.value),1)]),l("p",st,d(b.$t("builder.editContentForYourSite")),1)]),l("div",rt,[h(w,{to:"/settings/collections",class:"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 border bg-background hover:text-accent-foreground h-10 px-4 py-2 border-gray-300 text-gray-700 hover:bg-gray-50"},{default:M(()=>[P(d(b.$t("common.actions.back")),1)]),_:1}),l("button",{onClick:p,class:"inline-flex items-center justify-center gap-2 whitespace-nowrap text-white rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 text-primary-foreground h-10 px-4 py-2 bg-blue-600 hover:bg-blue-700"},d(b.$t("common.actions.save")),1)])]),l("div",at,[l("div",nt,[(m(!0),v(Q,null,X(g.value,y=>(m(),v("button",{key:y.id,onClick:N=>i.value=y.id,class:J(["inline-flex flex-1 items-center justify-center whitespace-nowrap rounded-sm px-3 py-1.5 text-sm font-medium ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:shadow-sm data-[state=active]:bg-blue-50 data-[state=active]:text-blue-700 data-[state=active]:border-blue-200",y.id===i.value?"bg-blue-50 text-blue-700 border-blue-200":""])},d(y.name),11,dt))),128))])]),n.value?(m(),v("div",ut,[(m(),F(R(_(et)[i.value]),{yaml:t.value.yaml,"onUpdate:yaml":x[0]||(x[0]=y=>t.value.yaml=y),data:t.value.data,"onUpdate:data":x[1]||(x[1]=y=>t.value.data=y),form:o.value,"onUpdate:form":x[2]||(x[2]=y=>o.value=y)},null,40,["yaml","data","form"]))])):L("",!0)])}}};export{qt as default};
@@ -0,0 +1 @@
1
+ import{_ as x}from"./SettingsTitle-t4WJBFxZ.js";import{D as _}from"./index-BIp7eSXk.js";import{_ as b,c0 as w,a as r,f as d,b as t,g as k,t as i,j as v,k as C,r as h,o as l}from"./index-yMJAVBXk.js";import{A as S,a as V,b as D}from"./arrow-up-DCe0WsrM.js";import"./index-DGweaj24.js";const P={components:{SettingsTitle:x,VsFilter:_,TableCellsMerge:w,ArrowDown:S,ArrowUp:V,ArrowRightFromLine:D},data(){return{email:null,total:0,openIndex:null,limit:16,page:1,filterValue:"",filterScheme:[]}},async created(){this.$router.replace({query:{page:1}}),await this.getData()},methods:{async getData(){try{const s=await(await fetch(`/api/email-list?limit=${this.limit}&page=${this.page}`)).json();this.email=s==null?void 0:s.rows,this.total=s==null?void 0:s.total,this.filterScheme=s==null?void 0:s.filters}catch(e){console.error(e.toString())}},async handleChange(e){const s=Object.entries(e==null?void 0:e.data).filter(([,n])=>n!=null).map(([n,g])=>`${n}=${g}`).join("|");this.filterValue=s,this.filterValue==="no-url"?this.$router.replace({query:{page:1}}):this.$router.replace({query:{filter:this.filterValue,page:1}}),this.page=1,await this.getData()},async handlePageChange(e){this.page=e,this.filterValue==="no-url"||!this.filterValue?this.$router.replace({query:{page:e}}):this.$router.replace({query:{filter:this.filterValue,page:e}}),await this.getData()},async changeLimit(e){this.limit=e,this.page=1,await this.getData()},toggle(e){this.openIndex=this.openIndex===e?null:e},onEnter(e){e.style.height="0",e.style.opacity="0",requestAnimationFrame(()=>{e.style.transition="all 0.3s ease",e.style.height=e.scrollHeight+"px",e.style.opacity="1"})},onLeave(e){e.style.height=e.scrollHeight+"px",e.style.opacity="1",requestAnimationFrame(()=>{e.style.transition="all 0.3s ease",e.style.height="0",e.style.opacity="0"})},formatDate(e){if(!e)return null;const s={year:"numeric",month:"2-digit",day:"2-digit"};return new Date(e).toLocaleDateString("uk-UA",s)}}},$={class:"w-full max-w-7xl mx-auto space-y-6"},F={class:"rounded-xl text-card-foreground shadow-lg border-0 bg-white dark:bg-slate-800 backdrop-blur-sm"},T={class:"flex flex-col space-y-1.5 p-6 border-b border-slate-200 dark:border-slate-700 bg-gradient-to-r from-slate-50 dark:from-slate-800 to-white dark:to-slate-800"},q={class:"tracking-tight text-xl font-semibold text-slate-800 dark:text-slate-100 flex items-center"},A={class:"p-6 space-y-4"},j={class:"flex justify-between"},z={key:0,class:"overflow-x-auto"},L={class:"min-w-full divide-y divide-gray-200"},B={class:"bg-gray-100"},E={class:"px-4 py-2 text-left text-sm font-semibold text-gray-700"},I={class:"px-4 py-2 text-left text-sm font-semibold text-gray-700"},M={class:"cursor-pointer dark:text-white"},N={class:"px-4 py-2 text-sm text-gray-800 dark:text-white"},H={class:"px-4 py-2 text-sm text-gray-800 dark:text-white"},U={class:"px-4 py-2 text-sm text-gray-800 dark:text-white"},O={key:1,class:"bg-white dark:bg-slate-800 backdrop-blur-sm0 text-center p-6 rounded-xl"},R={class:"text-lg font-semibold"},W={class:"my-5 pr-2"},G={class:"paginationWrapper relative flex justify-center"};function J(e,s,n,g,o,c){var p;const m=h("SettingsTitle"),u=h("TableCellsMerge"),f=h("VsFilter"),y=h("VsPagination");return l(),r("div",$,[d(m,{title:e.$t("email.title"),description:e.$t("email.description")},null,8,["title","description"]),t("div",F,[t("div",T,[t("h3",q,[d(u,{class:"text-emerald-500 mr-2"}),k(" "+i(e.$t("email.title")),1)])]),t("div",A,[t("div",j,[d(f,{schema:o.filterScheme,view:"inline",onChange:c.handleChange},null,8,["schema","onChange"])]),(p=o.email)!=null&&p.length?(l(),r("div",z,[t("table",L,[t("thead",B,[t("tr",null,[s[0]||(s[0]=t("th",{class:"px-4 py-2 text-left text-sm font-semibold text-gray-700"},"№",-1)),t("th",E,i(e.$t("feedback.table.email")),1),t("th",I,i(e.$t("feedback.table.cdate")),1),s[1]||(s[1]=t("th",{class:"px-4 py-2 text-left text-sm font-semibold text-gray-700"},null,-1))])]),(l(!0),r(v,null,C(o.email,(a,K)=>(l(),r("tbody",{class:"divide-y divide-gray-200",key:a==null?void 0:a.message_id},[t("tr",M,[t("td",N,i(a==null?void 0:a.num),1),t("td",H,i(a==null?void 0:a.email),1),t("td",U,i(c.formatDate(a==null?void 0:a.created_at)),1)])]))),128))])])):(l(),r("div",O,[t("h3",R,i(e.$t("feedback.table.noFeedback")),1)])),t("div",W,[t("div",G,[d(y,{total:o.total,maxPages:6,defaultPage:o.page,pageSize:o.limit,goTo:!1,size:"medium",backgroundColor:"#e5e7eb",borderedCellSelected:!0,pageSizes:[16,32,48],onPageChange:c.handlePageChange,onPageSizeChange:c.changeLimit},null,8,["total","defaultPage","pageSize","onPageChange","onPageSizeChange"])])])])])])}const te=b(P,[["render",J]]);export{te as default};
@@ -0,0 +1 @@
1
+ import{o as i,a as n,b as t,t as a,g as r,v as l}from"./index-yMJAVBXk.js";const d={class:"rounded-xl text-card-foreground shadow-lg bg-white dark:bg-slate-800 backdrop-blur-sm border-2 border-dashed border-slate-300 dark:border-slate-600"},u={class:"p-12 text-center"},c={class:"text-lg font-medium text-slate-600 dark:text-slate-300 mb-2"},m={class:"text-slate-500 dark:text-slate-400 mb-6"},b={__name:"EmptyData",props:{title:{type:String,default:()=>"emptyData.title"},description:{type:String,default:()=>"emptyData.description"},buttonText:{type:String,default:()=>"emptyData.buttonText"},showButton:{type:Boolean,default:!0}},emits:["action"],setup(o){return(s,e)=>(i(),n("div",d,[t("div",u,[e[2]||(e[2]=t("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round",class:"lucide lucide-layers w-12 h-12 mx-auto mb-4 text-slate-400 dark:text-slate-500"},[t("path",{d:"m12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83Z"}),t("path",{d:"m22 17.65-9.17 4.16a2 2 0 0 1-1.66 0L2 17.65"}),t("path",{d:"m22 12.65-9.17 4.16a2 2 0 0 1-1.66 0L2 12.65"})],-1)),t("h3",c,a(s.$t(o.title)),1),t("p",m,a(s.$t(o.description)),1),o.showButton?(i(),n("button",{key:0,onClick:e[0]||(e[0]=p=>s.$emit("action")),class:"inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 shadow h-9 px-4 py-2 bg-blue-600 hover:bg-blue-700 text-white"},[e[1]||(e[1]=t("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round",class:"lucide lucide-plus w-4 h-4 mr-2"},[t("path",{d:"M5 12h14"}),t("path",{d:"M12 5v14"})],-1)),r(" "+a(s.$t(o.buttonText)),1)])):l("",!0)])]))}};export{b as _};
@@ -0,0 +1 @@
1
+ import{_ as V}from"./SettingsTitle-t4WJBFxZ.js";import{D as f}from"./index-BIp7eSXk.js";import{_ as S,c0 as D,a as n,f as p,b as s,g as $,t as l,j as P,k as T,r as g,o,h as c,w as A,B as F,R as L,v as m,ad as q}from"./index-yMJAVBXk.js";import{A as j,a as z,b as I}from"./arrow-up-DCe0WsrM.js";import"./index-DGweaj24.js";const B={components:{SettingsTitle:V,TableCellsMerge:D,ArrowDown:j,ArrowUp:z,ArrowRightFromLine:I,VsFilter:f},data(){return{feedback:null,total:0,openIndex:null,limit:16,page:1,filterValue:"",filterScheme:[]}},async created(){this.$router.replace({query:{page:1}}),await this.getData()},methods:{async getData(){try{const i=await(await fetch(`/api/feedback?limit=${this.limit}&page=${this.page}${this.filterValue==="no-url"?"":`&filter=${this.filterValue}`}`)).json();this.feedback=i==null?void 0:i.rows,this.total=i==null?void 0:i.total;const h=((i==null?void 0:i.filters)||[]).map(_=>{const{extra:r,title:a,...u}=_;return u});this.filterScheme=h}catch(e){console.error(e.toString())}},async handleChange(e){const i=Object.entries(e==null?void 0:e.data).filter(([,h])=>h!=null).map(([h,_])=>`${h}=${_}`).join("|");this.filterValue=i,this.filterValue==="no-url"?this.$router.replace({query:{page:1}}):this.$router.replace({query:{filter:this.filterValue,page:1}}),this.page=1,await this.getData()},async handlePageChange(e){this.page=e,this.filterValue==="no-url"||!this.filterValue?this.$router.replace({query:{page:e}}):this.$router.replace({query:{filter:this.filterValue,page:e}}),await this.getData()},async changeLimit(e){this.limit=e,this.page=1,await this.getData()},toggle(e){this.openIndex=this.openIndex===e?null:e},onEnter(e){e.style.height="0",e.style.opacity="0",requestAnimationFrame(()=>{e.style.transition="all 0.3s ease",e.style.height=e.scrollHeight+"px",e.style.opacity="1"})},onLeave(e){e.style.height=e.scrollHeight+"px",e.style.opacity="1",requestAnimationFrame(()=>{e.style.transition="all 0.3s ease",e.style.height="0",e.style.opacity="0"})},formatDate(e){if(!e)return null;const i={year:"numeric",month:"2-digit",day:"2-digit"};return new Date(e).toLocaleDateString("uk-UA",i)}}},E={class:"w-full max-w-7xl mx-auto space-y-6"},N={class:"rounded-xl text-card-foreground shadow-lg border-0 bg-white dark:bg-slate-800 backdrop-blur-sm"},U={class:"flex flex-col space-y-1.5 p-6 border-b border-slate-200 dark:border-slate-700 bg-gradient-to-r from-slate-50 dark:from-slate-800 to-white dark:to-slate-800"},M={class:"tracking-tight text-xl font-semibold text-slate-800 dark:text-slate-100 flex items-center"},H={class:"p-6 space-y-4"},R={class:"flex justify-between"},O={key:0,class:"overflow-x-auto"},W={class:"min-w-full divide-y divide-gray-200"},G={class:"bg-gray-100"},J={class:"px-4 py-2 text-left text-sm font-semibold text-gray-700"},K={class:"px-4 py-2 text-left text-sm font-semibold text-gray-700"},Q={class:"px-4 py-2 text-left text-sm font-semibold text-gray-700"},X={class:"px-4 py-2 text-left text-sm font-semibold text-gray-700"},Y=["onClick"],Z={class:"px-4 py-2 text-sm text-gray-800 dark:text-white"},b={class:"px-4 py-2 text-sm text-gray-800 dark:text-white"},k={class:"px-4 py-2 text-sm text-gray-800 dark:text-white"},tt={class:"px-4 py-2 text-sm text-gray-800 dark:text-white"},et={class:"px-4 py-2 text-sm text-gray-800 dark:text-white"},st={class:"px-4 py-2 text-sm text-gray-800 dark:text-white"},it={colspan:"6",class:"bg-gray-50 px-4 py-3 text-sm text-gray-700 dark:text-slate-300"},lt={key:0},ot={class:"whitespace-pre-line mt-1"},nt={key:1},rt={key:2},at=["href"],ht={key:3},gt=["href"],pt={key:4},mt=["href"],_t={key:1,class:"bg-white dark:bg-slate-800 backdrop-blur-sm0 text-center p-6 rounded-xl"},ut={class:"text-lg font-semibold"},dt={class:"my-5 pr-2"},ct={class:"paginationWrapper relative flex justify-center"};function xt(e,i,h,_,r,a){var d;const u=g("SettingsTitle"),x=g("TableCellsMerge"),y=g("VsFilter"),w=g("ArrowUp"),v=g("ArrowDown"),C=g("VsPagination");return o(),n("div",E,[p(u,{title:e.$t("feedback.title"),description:e.$t("feedback.description")},null,8,["title","description"]),s("div",N,[s("div",U,[s("h3",M,[p(x,{class:"text-emerald-500 mr-2"}),$(" "+l(e.$t("feedback.title")),1)])]),s("div",H,[s("div",R,[p(y,{schema:r.filterScheme,view:"inline",onChange:a.handleChange},null,8,["schema","onChange"])]),(d=r.feedback)!=null&&d.length?(o(),n("div",O,[s("table",W,[s("thead",G,[s("tr",null,[i[0]||(i[0]=s("th",{class:"px-4 py-2 text-left text-sm font-semibold text-gray-700"},"№",-1)),s("th",J,l(e.$t("feedback.table.userName")),1),s("th",K,l(e.$t("feedback.table.email")),1),s("th",Q,l(e.$t("feedback.table.cdate")),1),s("th",X,l(e.$t("feedback.table.phone")),1),i[1]||(i[1]=s("th",{class:"px-4 py-2 text-left text-sm font-semibold text-gray-700"},null,-1))])]),(o(!0),n(P,null,T(r.feedback,(t,yt)=>(o(),n("tbody",{class:"divide-y divide-gray-200",key:t==null?void 0:t.message_id},[s("tr",{class:"cursor-pointer dark:text-white",onClick:wt=>a.toggle(t==null?void 0:t.message_id)},[s("td",Z,l(t==null?void 0:t.num),1),s("td",b,l(t==null?void 0:t.user_name),1),s("td",k,l(t==null?void 0:t.email),1),s("td",tt,l(a.formatDate(t==null?void 0:t.created_at)),1),s("td",et,l(t==null?void 0:t.phone),1),s("td",st,[s("div",null,[r.openIndex===(t==null?void 0:t.message_id)?(o(),c(w,{key:0})):(o(),c(v,{key:1}))])])],8,Y),p(q,{name:"collapse",onEnter:a.onEnter,onLeave:a.onLeave},{default:A(()=>[F(s("tr",null,[s("td",it,[s("div",{ref_for:!0,ref:"content",class:"transition-all duration-300 ease-in-out space-y-2"},[t!=null&&t.message_text?(o(),n("div",lt,[s("b",null,l(e.$t("feedback.table.messageText"))+":",1),s("p",ot,l(t.message_text),1)])):m("",!0),t!=null&&t.feedback_type?(o(),n("div",nt,[s("b",null,l(e.$t("feedback.table.feedbackType"))+":",1),s("span",null,l(t.feedback_type),1)])):m("",!0),t!=null&&t.telegram_link?(o(),n("div",rt,[i[2]||(i[2]=s("b",null,"Telegram:",-1)),s("a",{href:t.telegram_link,class:"text-blue-500 underline",target:"_blank"},l(t.telegram_link),9,at)])):m("",!0),t!=null&&t.linkedin_link?(o(),n("div",ht,[i[3]||(i[3]=s("b",null,"LinkedIn:",-1)),s("a",{href:t.linkedin_link,class:"text-blue-500 underline",target:"_blank"},l(t.linkedin_link),9,gt)])):m("",!0),t!=null&&t.portfolio_link?(o(),n("div",pt,[s("b",null,l(e.$t("feedback.table.portfolioLink"))+":",1),s("a",{href:t.portfolio_link,class:"text-blue-500 underline",target:"_blank"},l(t.portfolio_link),9,mt)])):m("",!0)],512)])],512),[[L,r.openIndex===(t==null?void 0:t.message_id)]])]),_:2},1032,["onEnter","onLeave"])]))),128))])])):(o(),n("div",_t,[s("h3",ut,l(e.$t("feedback.table.noFeedback")),1)])),s("div",dt,[s("div",ct,[p(C,{total:r.total,maxPages:6,defaultPage:r.page,pageSize:r.limit,goTo:!1,size:"medium",backgroundColor:"#e5e7eb",borderedCellSelected:!0,pageSizes:[16,32,48],onPageChange:a.handlePageChange,onPageSizeChange:a.changeLimit},null,8,["total","defaultPage","pageSize","onPageChange","onPageSizeChange"])])])])])])}const Dt=S(B,[["render",xt]]);export{Dt as default};
@@ -0,0 +1 @@
1
+ import{_ as E}from"./SettingsTitle-t4WJBFxZ.js";import{D as A}from"./index-BIp7eSXk.js";import{_ as S,c0 as j,a as l,f as p,b as s,g,t as o,v as u,j as v,k,r as h,o as r,n as $,h as C,w as F,B as N,R,ad as q}from"./index-yMJAVBXk.js";import{A as I,a as B,b as U}from"./arrow-up-DCe0WsrM.js";import{C as M}from"./chevron-left-WFftVS9c.js";import{C as H}from"./chevron-right-BiiSb3Be.js";import"./index-DGweaj24.js";const z={components:{SettingsTitle:E,TableCellsMerge:j,ArrowDown:I,ArrowUp:B,ArrowRightFromLine:U,ChevronLeft:M,ChevronRight:H,VsFilter:A},data(){return{logs:null,total:null,openIndex:null,limit:16,page:1,filterValue:"",filterScheme:[]}},computed:{totalPages(){return Math.ceil(this.total/this.limit)}},async created(){this.$router.replace({query:{page:1}}),await this.getData()},methods:{async getData(){try{const a=await(await fetch(`/api/user-logs?limit=${this.limit}&page=${this.page}${this.filterValue==="no-url"?"":`&filter=${this.filterValue}`}`)).json();this.logs=a==null?void 0:a.rows,this.total=a==null?void 0:a.total,this.filterScheme=a==null?void 0:a.filters}catch(t){console.error(t.toString())}},async exportToCSV(){window.open(`/api/export-user-logs${this.filterValue==="no-url"?"":`?filter=${this.filterValue}`}`,"_blank")},async handleChange(t){const a=Object.entries(t==null?void 0:t.data).filter(([,c])=>c!=null).map(([c,x])=>`${c}=${x}`).join("|");this.filterValue=a,this.filterValue==="no-url"?this.$router.replace({query:{page:1}}):this.$router.replace({query:{filter:this.filterValue,page:1}}),this.page=1,await this.getData()},async handlePageChange(t){this.page=t,this.filterValue==="no-url"||!this.filterValue?this.$router.replace({query:{page:t}}):this.$router.replace({query:{filter:this.filterValue,page:t}}),await this.getData()},async handlePreviousPage(){this.page>1&&await this.handlePageChange(this.page-1)},async handleNextPage(){this.page<this.totalPages&&await this.handlePageChange(this.page+1)},async changeLimit(t){this.limit=t,this.page=1,await this.getData()},toggle(t){this.openIndex=this.openIndex===t?null:t},onEnter(t){t.style.height="0",t.style.opacity="0",requestAnimationFrame(()=>{t.style.transition="all 0.3s ease",t.style.height=t.scrollHeight+"px",t.style.opacity="1"})},onLeave(t){t.style.height=t.scrollHeight+"px",t.style.opacity="1",requestAnimationFrame(()=>{t.style.transition="all 0.3s ease",t.style.height="0",t.style.opacity="0"})},formatDateTime(t){if(!t)return"";const[a,c]=t.split(" ");if(!a||!c)return t;const[x,d,n]=a.split("-"),[y,f,m]=c.split(":"),_=m==null?void 0:m.slice(0,2);return`${n}.${d}.${x} ${y}:${f}:${_}`}}},O={class:"w-full max-w-7xl mx-auto space-y-6"},G={class:"rounded-xl text-card-foreground shadow-lg border-0 bg-white dark:bg-slate-800 backdrop-blur-sm"},J={class:"flex flex-col space-y-1.5 p-6 border-b border-slate-200 dark:border-slate-700 bg-gradient-to-r from-slate-50 dark:from-slate-800 to-white dark:to-slate-800"},K={class:"tracking-tight text-xl font-semibold text-slate-800 dark:text-slate-100 flex items-center"},Q={class:"p-6 space-y-4"},W={class:"flex justify-between"},X={key:0,class:"overflow-x-auto"},Y={class:"min-w-full divide-y divide-gray-200"},Z={class:"bg-gray-100"},ee={class:"px-4 py-2 text-left text-sm font-semibold text-gray-700"},te={class:"px-4 py-2 text-left text-sm font-semibold text-gray-700"},se={class:"px-4 py-2 text-left text-sm font-semibold text-gray-700"},ae=["onClick"],ie={class:"px-4 py-2 text-sm text-gray-800 dark:text-white"},re={class:"px-4 py-2 text-sm text-gray-800 dark:text-white"},ne={class:"px-4 py-2 text-sm text-gray-800 dark:text-white"},oe={class:"px-4 py-2 text-sm text-gray-800 dark:text-white"},le={class:"px-4 py-2 text-sm text-gray-800 dark:text-white"},de={key:0},he={colspan:"5",class:"bg-gray-50 px-4 py-3 text-sm text-gray-600 overflow-hidden"},ce={key:0},pe={class:"flex flex-1 gap-2"},ue={key:0,class:"flex gap-1"},me={key:1,class:"flex"},xe={key:1,class:"bg-white dark:bg-slate-800 backdrop-blur-sm0 text-center p-6 rounded-xl"},ye={class:"text-lg font-semibold"},fe={key:2,class:"my-5 pr-2"},_e={class:"paginationWrapper relative flex justify-center items-center gap-4"},ge=["disabled"],be=["disabled"];function we(t,a,c,x,d,n){var b,w;const y=h("SettingsTitle"),f=h("TableCellsMerge"),m=h("VsFilter"),_=h("ArrowUp"),V=h("ArrowDown"),D=h("ArrowRightFromLine"),P=h("ChevronLeft"),T=h("ChevronRight");return r(),l("div",O,[p(y,{title:t.$t("settings.logs.title"),description:t.$t("settings.logs.description")},null,8,["title","description"]),s("div",G,[s("div",J,[s("h3",K,[p(f,{class:"text-emerald-500 mr-2"}),g(" "+o(t.$t("settings.logs.title")),1)])]),s("div",Q,[s("div",W,[p(m,{schema:d.filterScheme,view:"inline",onChange:n.handleChange},null,8,["schema","onChange"]),(b=d.logs)!=null&&b.length?(r(),l("button",{key:0,onClick:a[0]||(a[0]=(...e)=>n.exportToCSV&&n.exportToCSV(...e)),class:"inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none text-white focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 text-primary-foreground shadow h-9 px-4 py-2 bg-emerald-600 hover:bg-emerald-700"},"Експорт в CSV")):u("",!0)]),(w=d.logs)!=null&&w.length?(r(),l("div",X,[s("table",Y,[s("thead",Z,[s("tr",null,[a[3]||(a[3]=s("th",{class:"px-4 py-2 text-left text-sm font-semibold text-gray-700"},"№",-1)),s("th",ee,o(t.$t("settings.logs.table.objectId")),1),s("th",te,o(t.$t("settings.logs.table.dateTime")),1),s("th",se,o(t.$t("settings.logs.table.changeType")),1),a[4]||(a[4]=s("th",{class:"px-4 py-2 text-left text-sm font-semibold text-gray-700"},null,-1))])]),(r(!0),l(v,null,k(d.logs,(e,ve)=>(r(),l("tbody",{class:"divide-y divide-gray-200",key:e==null?void 0:e.change_id},[s("tr",{class:$(["cursor-pointer dark:text-white",[(e==null?void 0:e.change_type)=="DELETE"?"pointer-events-none":""]]),onClick:i=>n.toggle(e==null?void 0:e.change_id)},[s("td",ie,o(e==null?void 0:e.num),1),s("td",re,o(e==null?void 0:e.entity_id),1),s("td",ne,o(n.formatDateTime(e==null?void 0:e.cdate)),1),s("td",oe,o(e==null?void 0:e.change_type),1),s("td",le,[(e==null?void 0:e.change_type)!=="DELETE"?(r(),l("div",de,[d.openIndex===(e==null?void 0:e.change_id)?(r(),C(_,{key:0})):(r(),C(V,{key:1}))])):u("",!0)])],10,ae),p(q,{name:"collapse",onEnter:n.onEnter,onLeave:n.onLeave},{default:F(()=>[N(s("tr",null,[s("td",he,[s("div",{ref_for:!0,ref:"content",class:"transition-all duration-300 ease-in-out"},[(r(!0),l(v,null,k(e==null?void 0:e.data_log,(i,L)=>(r(),l("p",{key:i==null?void 0:i.change_data_id},[(i==null?void 0:i.value_new)!==(i==null?void 0:i.value_old)?(r(),l("span",ce,[s("div",pe,[s("div",null,[s("strong",null,o(L+1)+". "+o(i==null?void 0:i.entity_key)+":",1)]),(e==null?void 0:e.change_type)==="UPDATE"?(r(),l("div",ue,[g(o(i==null?void 0:i.value_old)+" ",1),p(D,{class:"w-[16px] h-[16px]"}),g(" "+o(i==null?void 0:i.value_new),1)])):u("",!0),(e==null?void 0:e.change_type)==="INSERT"?(r(),l("div",me,o(i==null?void 0:i.value_new),1)):u("",!0)])])):u("",!0)]))),128))],512)])],512),[[R,d.openIndex===(e==null?void 0:e.change_id)&&(e==null?void 0:e.change_type)!=="DELETE"]])]),_:2},1032,["onEnter","onLeave"])]))),128))])])):(r(),l("div",xe,[s("h3",ye,o(t.$t("settings.logs.table.noLogs")),1)])),d.total!==null&&d.total>0?(r(),l("div",fe,[s("div",_e,[s("button",{onClick:a[1]||(a[1]=(...e)=>n.handlePreviousPage&&n.handlePreviousPage(...e)),disabled:d.page===1,class:"inline-flex items-center justify-center whitespace-nowrap font-medium transition-colors border shadow-sm rounded-md text-xs h-8 w-8 p-0 bg-white border-slate-300 text-slate-600 disabled:pointer-events-none disabled:opacity-50 disabled:cursor-not-allowed hover:text-accent-foreground hover:bg-slate-50 dark:bg-slate-700 dark:border-slate-600 dark:text-slate-300 dark:hover:bg-slate-600"},[p(P,{class:"w-5 h-5"})],8,ge),s("button",{onClick:a[2]||(a[2]=(...e)=>n.handleNextPage&&n.handleNextPage(...e)),disabled:d.page>=n.totalPages,class:"inline-flex items-center justify-center whitespace-nowrap font-medium transition-colors border shadow-sm rounded-md text-xs h-8 w-8 p-0 bg-white border-slate-300 text-slate-600 disabled:pointer-events-none disabled:opacity-50 disabled:cursor-not-allowed hover:text-accent-foreground hover:bg-slate-50 dark:bg-slate-700 dark:border-slate-600 dark:text-slate-300 dark:hover:bg-slate-600"},[p(T,{class:"w-5 h-5"})],8,be)])])):u("",!0)])])])}const Ee=S(z,[["render",we]]);export{Ee as default};
@@ -0,0 +1,11 @@
1
+ import{c as D,o as r,a,t as n,n as F,e as c,u as T,m as $,p as V,bc as Z,f as m,b as e,v as g,j as v,k as C,y as N,h as b,F as q,_ as A,r as O,g as H}from"./index-yMJAVBXk.js";import{Z as P}from"./index-DGweaj24.js";import{F as G}from"./file-B_duymIT.js";import{T as z}from"./trash-2-BGXMNU3d.js";import{C as I}from"./chevron-right-BiiSb3Be.js";/**
2
+ * @license lucide-vue-next v0.344.0 - ISC
3
+ *
4
+ * This source code is licensed under the ISC license.
5
+ * See the LICENSE file in the root directory of this source tree.
6
+ */const Jt=D("DownloadIcon",[["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["polyline",{points:"7 10 12 15 17 10",key:"2ggqvy"}],["line",{x1:"12",x2:"12",y1:"15",y2:"3",key:"1vk2je"}]]);/**
7
+ * @license lucide-vue-next v0.344.0 - ISC
8
+ *
9
+ * This source code is licensed under the ISC license.
10
+ * See the LICENSE file in the root directory of this source tree.
11
+ */const L=D("FolderIcon",[["path",{d:"M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z",key:"1kt360"}]]);function S(s){if(s===0)return"0 Bytes";const o=1024,u=["Bytes","KB","MB","GB","TB"],l=Math.floor(Math.log(s)/Math.log(o));return Number.parseFloat((s/Math.pow(o,l)).toFixed(2))+" "+u[l]}function U(s){const o=new Date(s);return isNaN(o.getTime())?"":o.toISOString().slice(0,10)}const E={__name:"TypeTag",props:{type:{type:String,required:!0}},setup(s){const o=new Map([["document","bg-blue-100 text-blue-800 border-blue-200 dark:bg-blue-900/30 dark:text-blue-300 dark:border-blue-700"],["image","bg-green-100 text-green-800 border-green-200 dark:bg-green-900/30 dark:text-green-300 dark:border-green-700"],["video","bg-purple-100 text-purple-800 border-purple-200 dark:bg-purple-900/30 dark:text-purple-300 dark:border-purple-700"]]);return(u,l)=>(r(),a("div",{class:F(["inline-flex items-center rounded-md border px-2.5 py-0.5 text-xs font-semibold transition-colors shadow-lg backdrop-blur-sm",c(o).get(s.type)])},n(s.type),3))}},K={class:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-6 max-h-[calc(100%-130px)] overflow-y-auto px-2 pt-2 pb-5"},R={key:0,class:"flex flex-col items-center justify-center h-64 text-muted-foreground col-span-full"},J=["onClick"],Q=["onClick"],W={class:"truncate font-medium text-slate-800 dark:text-slate-100 mb-2"},X={class:"text-sm text-slate-500 dark:text-slate-400"},Y=["onClick"],f={class:"p-0"},tt={class:"aspect-video bg-slate-100 dark:bg-slate-700 rounded-t-lg overflow-hidden relative"},et={class:"w-full h-full flex items-center justify-center bg-gradient-to-br from-slate-100 to-slate-200 dark:from-slate-700 dark:to-slate-800"},st={key:0,class:"relative w-full"},rt=["src","alt"],ot={class:"p-4"},at={class:"flex items-center justify-between mb-2"},nt={class:"font-medium text-slate-800 dark:text-slate-100 truncate flex-1 mr-2"},dt={class:"space-y-1 text-sm text-slate-500 dark:text-slate-400"},lt={class:"flex justify-between"},ct={class:"flex justify-between"},Qt={__name:"MediaGrid",props:{files:{type:Array,required:!0},selectedFile:{type:Object,default:null},selectedFiles:{type:Array,default:()=>[]},isDeleteButton:{type:Boolean,default:!1}},emits:["delete-file","file-click","delete-folder"],setup(s,{emit:o}){T();const u=s,l=$([]),h=$(null),_=d=>{if(!d)return"";const i=new Date(d);return isNaN(i.getTime())?"":i.toISOString().slice(0,10)},k=()=>{l.value=u.files.sort((d,i)=>d.type==="dir"&&i.type!=="dir"?-1:d.type!=="dir"&&i.type==="dir"?1:0)};return V(()=>k()),Z(()=>k()),(d,i)=>{var y;return r(),a("div",K,[((y=s.files)==null?void 0:y.length)===0?(r(),a("div",R,[m(c(G),{class:"w-12 h-12 mb-2"}),e("p",null,n(d.$t("noFilesInFolder")),1)])):g("",!0),(r(!0),a(v,null,C(l.value,t=>{var x;return r(),a(v,{key:t==null?void 0:t.url},[(t==null?void 0:t.type)==="dir"?(r(),a("div",{key:0,class:"p-6 text-center rounded-xl h-[fit-content] relative text-card-foreground shadow-lg border-0 bg-white dark:bg-slate-800 backdrop-blur-sm hover:shadow-xl transition-all duration-200 transform hover:scale-105 cursor-pointer",onClick:p=>d.$emit("file-click",t)},[s.isDeleteButton?(r(),a("div",{key:0,onClick:N(p=>{h.value=t},["stop"]),class:"absolute top-4 right-4 p-1 border border-gray-300 dark:border-slate-700 rounded-lg cursor-pointer hover:bg-gray-200 dark:hover:bg-slate-700 group"},[m(c(z),{class:"w-4 h-4 text-gray-500 group-hover:text-red-500"})],8,Q)):g("",!0),m(c(L),{class:"w-16 h-16 mx-auto mb-4 text-blue-600"}),e("h3",W,n(t==null?void 0:t.name),1),e("p",X,n(t==null?void 0:t.count)+" "+n(d.$t("media.files")),1)],8,J)):(t==null?void 0:t.type)==="file"?(r(),a("div",{key:1,class:F(["h-[fit-content] rounded-xl text-card-foreground shadow-lg border-0 bg-white dark:bg-slate-800 backdrop-blur-sm hover:shadow-xl transition-all duration-200 transform hover:scale-105 group cursor-pointer",{"bg-accent text-accent-foreground ring-2 ring-primary":((x=s.selectedFile)==null?void 0:x.url)===(t==null?void 0:t.url)||s.selectedFiles&&s.selectedFiles.some(p=>p.id===t.id)}]),onClick:p=>d.$emit("file-click",t)},[e("div",f,[e("div",tt,[e("div",et,[(t==null?void 0:t.filetype)==="image"&&(t!=null&&t.filepath||t!=null&&t.url)?(r(),a("div",st,[e("img",{src:t==null?void 0:t.preview,alt:(t==null?void 0:t.alt)||(t==null?void 0:t.filename),class:"object-cover w-full h-full rounded text-xs"},null,8,rt)])):(r(),b(c(q),{key:1,class:"w-12 h-12 text-gray-500"}))])]),e("div",ot,[e("div",at,[e("h3",nt,n(t.filename),1),m(E,{type:t==null?void 0:t.filetype},null,8,["type"])]),e("div",dt,[e("div",lt,[e("span",null,n(d.$t("media.size"))+":",1),e("span",null,n(c(S)(t.filesize)),1)]),e("div",ct,[e("span",null,n(d.$t("media.uploaded"))+":",1),e("span",null,n(_(t.created_at)),1)])])])])],10,Y)):g("",!0)],64)}),128))])}}},ut={},it={"aria-hidden":"true",focusable:"false",role:"img",viewBox:"0 0 16 16",width:"16",height:"16",fill:"currentColor"};function mt(s,o){return r(),a("svg",it,[...o[0]||(o[0]=[e("path",{d:"M.513 1.513A1.75 1.75 0 0 1 1.75 1h3.5c.55 0 1.07.26 1.4.7l.9 1.2a.25.25 0 0 0 .2.1H 13a1 1 0 0 1 1 1v.5H2.75a.75.75 0 0 0 0 1.5h11.978a1 1 0 0 1 .994 1.117L15 13.25A1.75 1.75 0 0 1 13.25 15H1.75A1.75 1.75 0 0 1 0 13.25V2.75c0-.464.184-.91.513-1.237Z"},null,-1),e("path",{d:"M1.75 1A1.75 1.75 0 0 0 0 2.75v10.5C0 14.216.784 15 1.75 15h12.5A1.75 1.75 0 0 0 16 13.25v-8.5A1.75 1.75 0 0 0 14.25 3H7.5a.25.25 0 0 1-.2-.1l-.9-1.2C6.07 1.26 5.55 1 5 1H1.75Z"},null,-1)])])}const ht=A(ut,[["render",mt]]),pt={},gt={"aria-hidden":"true",focusable:"false",role:"img",viewBox:"0 0 16 16",width:"16",height:"16",fill:"currentColor"};function bt(s,o){return r(),a("svg",gt,[...o[0]||(o[0]=[e("path",{d:"M.513 1.513A1.75 1.75 0 0 1 1.75 1h3.5c.55 0 1.07.26 1.4.7l.9 1.2a.25.25 0 0 0 .2.1H 13a1 1 0 0 1 1 1v.5H2.75a.75.75 0 0 0 0 1.5h11.978a1 1 0 0 1 .994 1.117L15 13.25A1.75 1.75 0 0 1 13.25 15H1.75A1.75 1.75 0 0 1 0 13.25V2.75c0-.464.184-.91.513-1.237Z"},null,-1),e("path",{d:"M1.75 1A1.75 1.75 0 0 0 0 2.75v10.5C0 14.216.784 15 1.75 15h12.5A1.75 1.75 0 0 0 16 13.25v-8.5A1.75 1.75 0 0 0 14.25 3H7.5a.25.25 0 0 1-.2-.1l-.9-1.2C6.07 1.26 5.55 1 5 1H1.75Z"},null,-1)])])}const yt=A(pt,[["render",bt]]),xt={key:0,class:"flex flex-col items-center justify-center h-64 text-muted-foreground"},_t={key:1,class:"w-full text-sm caption-bottom"},kt={class:"[&_tr]:border-b"},vt={class:"border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted"},wt={class:"h-12 px-4 text-left align-middle font-medium text-muted-foreground w-[300px]"},$t={class:"h-12 px-4 font-medium text-left align-middle text-muted-foreground"},Ft={class:"h-12 px-4 font-medium text-left align-middle text-muted-foreground"},Ct={class:"hidden h-12 px-4 font-medium text-left align-middle text-muted-foreground md:table-cell"},At={class:"[&_tr:last-child]:border-0"},Bt=["onClick"],Mt={class:"p-4 font-medium align-middle"},jt={class:"flex items-center gap-2"},Ht={key:1,class:"relative w-8 h-8"},It=["src","alt"],Dt={class:"truncate max-w-[200px]"},Tt={class:"p-4 align-middle"},Nt={class:"p-4 align-middle"},zt={class:"hidden p-4 align-middle md:table-cell"},Lt={key:0},Wt={__name:"MediaList",props:{files:{type:Array,required:!0},selectedFile:{type:Object,default:null},selectedFiles:{type:Array,default:()=>[]}},emits:["file-click","delete-folder"],setup(s,{emit:o}){const{t:u}=T(),l=$(null),h=o,_=()=>{P({title:u("builder.deleteTitle"),message:u("builder.deleteObject"),type:"error",onConfirm:()=>{k()}})},k=()=>{h("delete-folder",l.value)};return(d,i)=>{const y=O("File");return r(),a("div",null,[s.files.length===0?(r(),a("div",xt,[m(y,{class:"w-12 h-12 mb-2"}),e("p",null,n(d.$t("media.noFilesInFolder")),1)])):(r(),a("table",_t,[e("thead",kt,[e("tr",vt,[e("th",wt,n(d.$t("media.name")),1),e("th",$t,n(d.$t("media.type")),1),e("th",Ft,n(d.$t("media.size")),1),e("th",Ct,n(d.$t("media.updatedAt")),1),i[0]||(i[0]=e("th",null,null,-1))])]),e("tbody",At,[(r(!0),a(v,null,C(s.files,t=>{var x,p,B,M,j;return r(),a("tr",{key:t.id,class:F(["border-b transition-colors hover:bg-blue-200/50 data-[state=selected]:bg-muted cursor-pointer",{"bg-blue-200":((x=l.value)==null?void 0:x.id)===t.id&&((p=l.value)==null?void 0:p.type)===t.type||s.selectedFiles&&s.selectedFiles.some(w=>w.id===t.id&&w.type===t.type)}]),onClick:w=>d.$emit("file-click",t)},[e("td",Mt,[e("div",jt,[t.type==="dir"?(r(),b(ht,{key:0,class:"w-5 h-5 text-blue-500"})):(t==null?void 0:t.filetype)==="image"&&(t!=null&&t.filepath)?(r(),a("div",Ht,[e("img",{src:t==null?void 0:t.preview,alt:(t==null?void 0:t.alt)||(t==null?void 0:t.filename),class:"object-cover w-full h-full rounded"},null,8,It)])):(t==null?void 0:t.filetype)==="image"?(r(),b(yt,{key:2,class:"w-5 h-5 text-green-500"})):(r(),b(y,{key:3,class:"w-5 h-5 text-gray-500"})),e("span",Dt,n((t==null?void 0:t.filename)||(t==null?void 0:t.name)),1)])]),e("td",Tt,n((t==null?void 0:t.type)==="dir"?d.$t("media.folder"):((M=(B=t==null?void 0:t.filetype)==null?void 0:B.charAt(0))==null?void 0:M.toUpperCase())+((j=t==null?void 0:t.filetype)==null?void 0:j.slice(1))),1),e("td",Nt,n((t==null?void 0:t.type)==="dir"?"--":c(S)(t==null?void 0:t.filesize)),1),e("td",zt,n(t!=null&&t.updated_at?c(U)(t==null?void 0:t.updated_at):"--"),1),t.type==="dir"?(r(),a("td",Lt,[m(c(z),{class:"w-4 h-4 text-red-500 cursor-pointer",onClick:N(_,["stop"])},null,8,["onClick"])])):g("",!0)],10,Bt)}),128))])]))])}}},St={},Vt={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"};function Zt(s,o){return r(),a("svg",Vt,[...o[0]||(o[0]=[e("path",{d:"m3 9 9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"},null,-1),e("polyline",{points:"9 22 9 12 15 12 15 22"},null,-1)])])}const qt=A(St,[["render",Zt]]),Ot={class:"flex items-center space-x-1"},Pt=["onClick"],Xt={__name:"MediaBreadcrumb",props:{currentPath:{type:Array,required:!0}},emits:["navigate"],setup(s){return(o,u)=>(r(),a("div",Ot,[e("button",{class:"flex gap-x-1 items-center px-2 py-1 rounded text-sm font-medium transition-all duration-200 text-blue-600 dark:text-blue-400 bg-blue-50 dark:bg-blue-900/20",onClick:u[0]||(u[0]=l=>o.$emit("navigate",[]))},[m(qt,{class:"w-3 h-3"}),H(" "+n(o.$t("media.mediaLibrary")),1)]),s.currentPath.length>0?(r(),b(c(I),{key:0,class:"w-3 h-3 text-slate-400 dark:text-slate-500"})):g("",!0),(r(!0),a(v,null,C(s.currentPath,(l,h)=>(r(),a("button",{key:h,class:"flex gap-x-1 items-center px-2 py-1 rounded text-sm font-medium transition-all duration-200 text-blue-700 dark:text-blue-300 bg-blue-50 dark:bg-blue-900/20",onClick:_=>o.$emit("navigate",s.currentPath.slice(0,h+1))},[m(c(L),{class:"w-3 h-3"}),H(" "+n(l)+" ",1),h<s.currentPath.length-1?(r(),b(c(I),{key:0,class:"w-3 h-3 text-slate-400 dark:text-slate-500"})):g("",!0)],8,Pt))),128))]))}};export{Jt as D,Xt as _,Qt as a,Wt as b,E as c,U as d,S as f};
@@ -0,0 +1,16 @@
1
+ import{c as G,o as n,a as v,b as e,f as m,e as f,g as D,t as l,u as J,j as Y,h as H,F as ae,v as j,E as le,D as oe,m as y,w as X,k as re,S as ie,z as Z,p as ne,B as de,C as ce,y as K,n as Q,J as ue,H as me,K as fe,l as he}from"./index-yMJAVBXk.js";import{c as pe,f as ve,d as be,D as ge,_ as xe,a as ye,b as we}from"./MediaBreadcrumb-BpOxt5PK.js";import{P as ke}from"./plus-DLR44m6p.js";import{Z as $e,y as A,J as _e}from"./index-DGweaj24.js";import{C as Fe}from"./calendar-o9t4MkD2.js";import{T as Ce}from"./trash-2-BGXMNU3d.js";import{l as je}from"./index-DCW2e4Az.js";import{D as Ve}from"./index-BIp7eSXk.js";import{u as W}from"./useDebounce-DFq3rxAW.js";import{S as De}from"./search-C4-fHihx.js";import{L as Me}from"./list-CXRbSNky.js";import"./file-B_duymIT.js";import"./chevron-right-BiiSb3Be.js";/**
2
+ * @license lucide-vue-next v0.344.0 - ISC
3
+ *
4
+ * This source code is licensed under the ISC license.
5
+ * See the LICENSE file in the root directory of this source tree.
6
+ */const ze=G("CopyIcon",[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]]);/**
7
+ * @license lucide-vue-next v0.344.0 - ISC
8
+ *
9
+ * This source code is licensed under the ISC license.
10
+ * See the LICENSE file in the root directory of this source tree.
11
+ */const Se=G("FolderPlusIcon",[["path",{d:"M12 10v6",key:"1bos4e"}],["path",{d:"M9 13h6",key:"1uhe8q"}],["path",{d:"M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z",key:"1kt360"}]]);/**
12
+ * @license lucide-vue-next v0.344.0 - ISC
13
+ *
14
+ * This source code is licensed under the ISC license.
15
+ * See the LICENSE file in the root directory of this source tree.
16
+ */const Te=G("Grid3x3Icon",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M3 9h18",key:"1pudct"}],["path",{d:"M3 15h18",key:"5xshup"}],["path",{d:"M9 3v18",key:"fh3hqa"}],["path",{d:"M15 3v18",key:"14nvp0"}]]),Be={class:"flex items-center gap-3"},Pe={__name:"MediaViewControls",props:{modelValue:{type:String,required:!0}},emits:["update:modelValue","create-folder","file-change"],setup(r){return(x,i)=>(n(),v("div",Be,[e("button",{class:"inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium transition-colors disabled:pointer-events-none disabled:opacity-50 border shadow-sm hover:text-accent-foreground h-9 px-4 py-2 bg-white dark:bg-slate-700 border-slate-300 dark:border-slate-600 text-slate-700 dark:text-slate-300 hover:bg-slate-50 dark:hover:bg-slate-600",onClick:i[0]||(i[0]=w=>x.$emit("create-folder"))},[m(f(Se),{class:"w-4 h-4 mr-2"}),D(" "+l(x.$t("media.newFolder")),1)]),e("button",{class:"inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium disabled:pointer-events-none disabled:opacity-50 h-9 px-4 py-2 bg-blue-600 hover:bg-blue-700 text-white shadow-md hover:shadow-lg transition-all duration-200 transform hover:scale-105",onClick:i[2]||(i[2]=w=>x.$refs.fileInputRef.click())},[e("input",{type:"file",onChange:i[1]||(i[1]=w=>x.$emit("file-change",w)),ref:"fileInputRef",class:"hidden",multiple:""},null,544),m(f(ke),{class:"w-4 h-4 mr-2"}),D(" "+l(x.$t("media.uploadMedia")),1)])]))}},Oe={class:"h-[fit-content] w-80 flex flex-col flex-shrink-0 bg-white dark:bg-slate-800 border border-slate-200 dark:border-slate-700 rounded-lg shadow-lg"},qe={key:0,class:"flex flex-col items-center justify-center h-64 text-muted-foreground"},Ee={class:"p-4 border-b border-slate-200 dark:border-slate-700"},Ie={class:"font-semibold text-slate-800 dark:text-slate-100"},Le={class:"p-4 space-y-4"},Ne={class:"aspect-video flex items-center justify-center bg-slate-100 dark:bg-slate-700 rounded-lg overflow-hidden relative"},Ue=["src","alt"],He={class:"absolute top-3 right-3"},Re={class:"space-y-3"},Ae={class:"peer-disabled:cursor-not-allowed peer-disabled:opacity-70 text-sm font-medium text-slate-700 dark:text-slate-300"},Ge={class:"text-slate-800 dark:text-slate-100 break-all"},Je={class:"peer-disabled:cursor-not-allowed peer-disabled:opacity-70 text-sm font-medium text-slate-700 dark:text-slate-300"},Xe={class:"text-slate-800 dark:text-slate-100"},Ze={key:0},Ke={class:"peer-disabled:cursor-not-allowed peer-disabled:opacity-70 text-sm font-medium text-slate-700 dark:text-slate-300"},Qe={class:"peer-disabled:cursor-not-allowed peer-disabled:opacity-70 text-sm font-medium text-slate-700 dark:text-slate-300"},We={class:"text-slate-800 dark:text-slate-100 flex items-center"},Ye={key:1},et={class:"peer-disabled:cursor-not-allowed peer-disabled:opacity-70 text-sm font-medium text-slate-700 dark:text-slate-300"},tt={class:"text-slate-800 dark:text-slate-100"},st={key:2},at={class:"peer-disabled:cursor-not-allowed peer-disabled:opacity-70 text-sm font-medium text-slate-700 dark:text-slate-300"},lt={class:"text-slate-800 dark:text-slate-100"},ot={key:3},rt={class:"peer-disabled:cursor-not-allowed peer-disabled:opacity-70 text-sm font-medium text-slate-700 dark:text-slate-300"},it={class:"space-y-2 pt-4 border-t border-slate-200 dark:border-slate-700"},nt=["href"],dt={__name:"MediaFileInfo",props:{file:{type:Object,default:null}},emits:["delete-file"],setup(r,{emit:x}){const{t:i}=J(),w=x,d=r,b=()=>{$e({title:i("builder.deleteTitle"),message:i("builder.deleteObject"),type:"error",onConfirm:()=>{g()}})},g=()=>{w("delete-file",d.file)},k=async()=>{var o;if((o=d.file)!=null&&o.filepath)try{await navigator.clipboard.writeText(d.file.filepath),A({type:"success",title:i("common.actions.success"),message:i("toast.copied")})}catch(h){console.error("Failed to copy file path:",h),A({type:"error",title:i("common.actions.error"),message:i("media.copyPathFailed")})}};return(o,h)=>{var c,p,_,C,M,O,$,q,V,z,E,S,T,I,B,L,N;return n(),v("div",Oe,[r.file?(n(),v(Y,{key:1},[e("div",Ee,[e("h3",Ie,l(o.$t("media.fileDetails")),1)]),e("div",Le,[e("div",Ne,[((c=r.file)==null?void 0:c.filetype)==="image"&&((p=r.file)!=null&&p.filepath)?(n(),v("img",{key:0,src:(_=r.file)==null?void 0:_.preview,alt:((C=r.file)==null?void 0:C.alt)||((M=r.file)==null?void 0:M.filename),class:"w-full h-full object-cover"},null,8,Ue)):(n(),H(f(ae),{key:1,class:"w-full h-4/5 object-cover"})),e("div",He,[m(pe,{type:(O=r.file)==null?void 0:O.filetype},null,8,["type"])])]),e("div",Re,[e("div",null,[e("label",Ae,l(o.$t("media.name")),1),e("p",Ge,l(($=r.file)==null?void 0:$.filename),1)]),e("div",null,[e("label",Je,l(o.$t("media.size")),1),e("p",Xe,l(f(ve)((q=r.file)==null?void 0:q.filesize)),1)]),(V=r.file)!=null&&V.dimensions?(n(),v("div",Ze,[e("label",Ke,l(o.$t("media.dimensions")),1),h[0]||(h[0]=e("p",{class:"text-slate-800 dark:text-slate-100"},"1920x1080",-1))])):j("",!0),e("div",null,[e("label",Qe,l(o.$t("media.uploadDate")),1),e("p",We,[m(f(Fe),{class:"w-4 h-4 mr-2"}),D(" "+l((z=r.file)!=null&&z.created_at?f(be)((E=r.file)==null?void 0:E.created_at):"--"),1)])]),(S=r.file)!=null&&S.author?(n(),v("div",Ye,[e("label",et,l(o.$t("media.author")),1),e("p",tt,l((T=r.file)==null?void 0:T.author),1)])):j("",!0),(I=r.file)!=null&&I.description?(n(),v("div",st,[e("label",at,l(o.$t("media.description")),1),e("p",lt,l((B=r.file)==null?void 0:B.description),1)])):j("",!0),(L=r.file)!=null&&L.tags?(n(),v("div",ot,[e("label",rt,l(o.$t("media.tags")),1),h[1]||(h[1]=e("div",{class:"flex flex-wrap gap-1 mt-1"},[e("div",{class:"inline-flex items-center rounded-md border px-2.5 py-0.5 font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 text-foreground text-xs"}," banner "),e("div",{class:"inline-flex items-center rounded-md border px-2.5 py-0.5 font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 text-foreground text-xs"}," hero "),e("div",{class:"inline-flex items-center rounded-md border px-2.5 py-0.5 font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 text-foreground text-xs"}," homepage ")],-1))])):j("",!0)]),e("div",it,[e("a",{href:(N=r.file)==null?void 0:N.filepath,download:"",class:"inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium transition-colors disabled:pointer-events-none disabled:opacity-50 shadow h-9 px-4 py-2 w-full bg-blue-600 hover:bg-blue-700 text-white"},[m(f(ge),{class:"w-4 h-4 mr-2"}),D(" "+l(o.$t("media.download")),1)],8,nt),e("button",{class:"inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium transition-colors disabled:pointer-events-none disabled:opacity-50 border shadow-sm hover:text-accent-foreground h-9 px-4 py-2 w-full bg-slate-600 hover:bg-slate-700 text-white",onClick:k},[m(f(ze),{class:"w-4 h-4 mr-2"}),D(" "+l(o.$t("media.copyPath")),1)]),e("button",{class:"inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium transition-colors disabled:pointer-events-none disabled:opacity-50 border shadow-sm hover:text-accent-foreground h-9 px-4 py-2 w-full bg-red-500 hover:bg-red-600 text-white",onClick:b},[m(f(Ce),{class:"w-4 h-4 mr-2"}),D(" "+l(o.$t("media.delete")),1)])])])],64)):(n(),v("div",qe,[e("p",null,l(o.$t("media.selectFile")),1)]))])}}},ct={class:"flex justify-end p-[20px] gap-[10px] border-t w-full"},ut={__name:"MediaCreateFolder",props:{modelValue:{},modelModifiers:{}},emits:le(["update:modelValue","create"],["update:modelValue"]),setup(r,{emit:x}){const{t:i}=J(),w=oe(r,"modelValue"),d=x,b=y({}),g=y({}),k={name:{name:"name",label:i("media.newFolder"),type:"Text"}},o=async()=>{if(await g.value.validate()){A({type:"warning",title:i("common.actions.warning"),message:i("media.createFolderFailed")});return}d("create",{...b.value}),b.value={}};return(h,c)=>(n(),H(f(_e),{teleport:"#modal",visible:w.value,title:h.$t("media.createFolder"),onClose:c[3]||(c[3]=p=>h.$emit("update:modelValue",!1))},{footer:X(()=>[e("div",ct,[e("button",{onClick:c[2]||(c[2]=p=>h.$emit("update:modelValue",!1)),class:"inline-flex items-center px-3 py-2 text-sm text-black duration-300 border border-gray-200 rounded-lg gap-x-2 whitespace-nowrap hover:bg-gray-100"},l(h.$t("common.actions.cancel")),1),e("button",{onClick:o,class:"py-2 px-3 inline-flex items-center gap-x-2 text-sm whitespace-nowrap text-white bg-blue-500 rounded-lg !border-gray-200 hover:bg-blue-700 duration-300"},l(h.$t("common.actions.create")),1)])]),default:X(()=>[m(f(je),{schema:k,modelValue:b.value,"onUpdate:modelValue":c[0]||(c[0]=p=>b.value=p),form:g.value,"onUpdate:form":c[1]||(c[1]=p=>g.value=p)},null,8,["modelValue","form"])]),_:1},8,["visible","title"]))}},mt={key:0,class:"fixed bottom-4 right-4 w-96 bg-white shadow-lg rounded-lg p-4 z-50"},ft={class:"font-bold mb-2"},ht={class:"flex justify-between items-center mb-1"},pt={class:"truncate w-2/3"},vt={key:0,class:"text-green-600"},bt={key:1,class:"text-red-600"},gt={key:2,class:"text-blue-600"},xt={class:"w-full bg-gray-200 rounded h-2"},yt={__name:"FileUploadProgress",props:{uploads:{type:Array,required:!0}},setup(r){return(x,i)=>{var w;return(w=r.uploads)!=null&&w.length?(n(),v("div",mt,[e("div",ft,l(x.$t("media.uploadingFiles")),1),(n(!0),v(Y,null,re(r.uploads,d=>(n(),v("div",{key:d.id,class:"mb-3"},[e("div",ht,[e("span",pt,l(d==null?void 0:d.name),1),d.status==="success"?(n(),v("span",vt,"✔")):d.status==="error"?(n(),v("span",bt,"✖")):(n(),v("span",gt,l(d==null?void 0:d.progress)+"%",1))]),e("div",xt,[e("div",{class:"bg-blue-500 h-2 rounded",style:ie({width:(d==null?void 0:d.progress)+"%"})},null,4)])]))),128))])):j("",!0)}}},wt={class:"w-full max-w-7xl mx-auto space-y-6 h-full"},kt={class:"flex justify-between items-center mb-8"},$t={class:"flex items-center gap-2"},_t={class:"text-3xl font-bold text-slate-800 dark:text-slate-100 mb-2"},Ft=["href","title"],Ct={class:"text-slate-600 dark:text-slate-300"},jt={class:"h-[calc(100%-100px)]"},Vt={class:"flex gap-6 h-full"},Dt={class:"space-y-4 flex-1"},Mt={class:"flex items-center justify-between"},zt={class:"relative z-[1] rounded-xl text-card-foreground shadow-lg border-0 bg-white dark:bg-slate-800 backdrop-blur-sm mb-6 p-4"},St={class:"flex items-center justify-between gap-4"},Tt={class:"flex items-center gap-4 flex-1"},Bt={class:"relative flex-1 max-w-md"},Pt=["placeholder"],Ot={class:"flex items-center gap-2 relative"},qt={class:"text-xs font-bold"},Et={class:"text-xs font-bold"},It={key:0,class:"w-full absolute top-full left-1/2 transform -translate-x-1/2 mt-2 z-50 bg-white dark:bg-slate-700 flex flex-col items-start border border-slate-200 dark:border-slate-600"},Lt={class:"flex items-center gap-2"},es={__name:"MediaPage",setup(r){const x=he(),i=ue(),{t:w,locale:d}=J(),b=y("grid"),g=y([]),k=y(null),o=y([]),h=y(!1),c=y([]),p=y([]),_=y(""),C=y(!1),M=y("name"),O=y([{name:"date",type:"date",label:"Дата завантаження"}]),$=y(i.query.filter?i.query.filter.split("|").map(s=>s.split("=")).reduce((s,[t,a])=>Object.assign(s,{[t]:a}),{}):{}),q=new Map([["name",w("media.sortBy.name")],["filesize",w("media.sortBy.filesize")]]),V=s=>{M.value=s,C.value=!1,o.value=o.value.sort((t,a)=>{var u;if((t==null?void 0:t.type)==="dir")return-1;if(s==="name")return(u=t==null?void 0:t.name)==null?void 0:u.localeCompare(a==null?void 0:a.name);if(s==="filesize")return(a==null?void 0:a.filesize)-(t==null?void 0:t.filesize)})},z=s=>{g.value=s,c.value=[...c.value,s],k.value=null,F()},E=()=>{c.value.length>1&&(c.value.pop(),g.value=c.value[c.value.length-1],k.value=null,F())},S=s=>{var t;s.type==="dir"?z([...g.value,s.name]):k.value=s.id===((t=k.value)==null?void 0:t.id)?null:s},T=async s=>{if(s!=null&&s.id)try{await fetch(`/api/cms-media/${s.id}`,{method:"DELETE"}),await F(),k.value=null}catch(t){console.error("Delete error:",t)}},I=async()=>{const t=await(await fetch("/api/cms-media?subdir="+g.value.join("/")+"&search="+_.value)).json();o.value=t.data?t.data:[]},B=async s=>{let t="";g.value.forEach(a=>{let u=a.replace(/ /g,"+");t+=u+"/"}),t+=s.name.replace(/ /g,"+");try{await fetch(`/api/cms-media?subdir=${t}`,{method:"DELETE",headers:{"X-Skip-Session":"true"}}),await F(),k.value=null}catch(a){console.error("Delete error:",a)}},L=async s=>{const t=Array.from(s.target.files);if(!t.length)return;p.value=t.map((u,P)=>({id:P+"-"+Date.now(),name:u.name,progress:0,status:"uploading"}));const a=g.value.join("/");for(let u=0;u<t.length;u++){const P=t[u],U=new FormData;U.append("file",P);try{const te=await fetch(`/api/cms-media/upload?subdir=${a}`,{method:"POST",headers:{"X-Skip-Session":"true"},body:U});for(let R=0;R<=100;R+=10)p.value[u].progress=R,await new Promise(se=>setTimeout(se,50));setTimeout(()=>{p.value[u].status="success",p.value[u].progress=100},1e3)}catch{p.value[u].status="error"}}await F(),setTimeout(()=>{p.value=[]},3e3)},N=async s=>{try{const t=g.value.join("/");await fetch(`/api/cms-media/upload?subdir=${t}/${s.name}`,{method:"POST"}),h.value=!1,await F()}catch{error.value="Failed to create folder"}finally{p.value=[]}},F=async()=>{try{let t=`/api/cms-media?subdir=${g.value.join("/")}`;$.value&&Object.keys($.value).length>0&&(t+=`&filter=${Object.entries($.value).map(([P,U])=>`${P}=${U}`)}`);const u=await(await fetch(t)).json();o.value=u.data?u.data:[],V("name")}catch(s){error.value="Failed to fetch files",console.error("Fetch error:",s),o.value=[]}},ee=async s=>{const t=Object.entries(s==null?void 0:s.data).filter(([,a])=>a!=null).map(([a,u])=>`${a}=${u}`).join("|");$.value=s==null?void 0:s.data,$.value==="no-url"||x.replace({query:{filter:t}}),await F()};return Z(g,s=>{s.length>0?x.push({query:{path:"/"+s.join("/")}}):x.push({query:{path:void 0}})}),W(_.value,300),Z(_,W(s=>{I()},500)),ne(()=>{c.value=[[]],F()}),(s,t)=>(n(),v("div",wt,[e("div",kt,[e("div",null,[e("div",$t,[e("h1",_t,l(s.$t("media.title")),1),e("a",{href:`https://cms.opengis.info/${f(d)}/guides/view/#5-медіа`,target:"_blank",title:s.$t("guide.media")},[m(f(me),{class:"w-5 h-5"})],8,Ft)]),e("p",Ct,l(s.$t("media.description")),1)]),m(Pe,{modelValue:b.value,"onUpdate:modelValue":t[0]||(t[0]=a=>b.value=a),onCreateFolder:t[1]||(t[1]=a=>h.value=!0),onFileChange:L},null,8,["modelValue"])]),e("div",jt,[e("div",Vt,[e("div",Dt,[e("div",Mt,[m(xe,{"current-path":g.value,onNavigate:z,onNavigateBack:E},null,8,["current-path"])]),e("div",zt,[e("div",St,[e("div",Tt,[e("div",Bt,[m(f(De),{class:"absolute left-3 top-1/2 transform -translate-y-1/2 w-4 h-4 text-slate-400 dark:text-slate-500"}),de(e("input",{type:"text",placeholder:s.$t("media.search"),class:"w-full pl-10 pr-4 py-2 text-sm border border-slate-200 dark:border-slate-600 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent bg-white dark:bg-slate-700 text-slate-700 dark:text-slate-200 placeholder-slate-400 dark:placeholder-slate-500","onUpdate:modelValue":t[2]||(t[2]=a=>_.value=a)},null,8,Pt),[[ce,_.value]])]),e("div",Ot,[e("span",qt,l(s.$t("media.sortBy.title")+": "),1),e("button",{class:"relative z-[1000] inline-flex items-center justify-center gap-2 whitespace-nowrap font-medium transition-colors border shadow-sm h-8 rounded-md px-3 text-xs bg-white border-slate-300 text-slate-700 disabled:pointer-events-none disabled:opacity-50 hover:text-accent-foreground hover:bg-slate-50 dark:bg-slate-700 dark:border-slate-600 dark:text-slate-300 dark:hover:bg-slate-600",onClick:t[5]||(t[5]=a=>C.value=!C.value)},[m(f(fe),{class:"w-4 h-4"}),e("span",Et,l(f(q).get(M.value)),1),C.value?(n(),v("div",It,[e("span",{class:"text-left text-xs font-bold w-full p-2 hover:bg-slate-100 dark:hover:bg-slate-600 border-b border-slate-200 dark:border-slate-600",onClick:t[3]||(t[3]=K(a=>V("name"),["stop"]))},l(s.$t("media.sortBy.name")),1),e("span",{class:"text-left text-xs font-bold w-full p-2 hover:bg-slate-100 dark:hover:bg-slate-600",onClick:t[4]||(t[4]=K(a=>V("filesize"),["stop"]))},l(s.$t("media.sortBy.filesize")),1)])):j("",!0)])])]),m(f(Ve),{schema:O.value,view:"inline",value:$.value,onChange:ee},null,8,["schema","value"]),e("div",Lt,[e("button",{class:Q(["inline-flex items-center justify-center whitespace-nowrap font-medium transition-colors disabled:pointer-events-none disabled:opacity-50 h-8 px-3 text-xs rounded-md",{"shadow bg-blue-600 hover:bg-blue-700 text-white":b.value==="grid","border shadow-sm hover:text-accent-foreground bg-white dark:bg-slate-700 border-slate-300 dark:border-slate-600 text-slate-700 dark:text-slate-300 hover:bg-slate-50 dark:hover:bg-slate-600":b.value==="list"}]),onClick:t[6]||(t[6]=a=>b.value="grid")},[m(f(Te),{class:"w-4 h-4"})],2),e("button",{class:Q(["inline-flex items-center justify-center whitespace-nowrap font-medium transition-colors disabled:pointer-events-none disabled:opacity-50 h-8 px-3 text-xs rounded-md",{"shadow bg-blue-600 hover:bg-blue-700 text-white":b.value==="list","border shadow-sm hover:text-accent-foreground bg-white dark:bg-slate-700 border-slate-300 dark:border-slate-600 text-slate-700 dark:text-slate-300 hover:bg-slate-50 dark:hover:bg-slate-600":b.value==="grid"}]),onClick:t[7]||(t[7]=a=>b.value="list")},[m(f(Me),{class:"w-4 h-4"})],2)])])]),b.value==="grid"&&o.value.length>0?(n(),H(ye,{key:0,files:o.value,"selected-file":k.value,"is-delete-button":!0,onFileClick:S,onDeleteFile:T,onDeleteFolder:B},null,8,["files","selected-file"])):o.value.length>0?(n(),H(we,{key:1,files:o.value,"selected-file":k.value,onFileClick:S,onDeleteFolder:B,"is-delete-button":!0},null,8,["files","selected-file"])):j("",!0)]),m(dt,{file:k.value,onDeleteFile:T},null,8,["file"])])]),m(ut,{modelValue:h.value,"onUpdate:modelValue":t[8]||(t[8]=a=>h.value=a),onCreate:N},null,8,["modelValue"]),m(yt,{uploads:p.value},null,8,["uploads"])]))}};export{es as default};
@@ -0,0 +1 @@
1
+ import{d as y,u as x,m as l,o as b,a as w,b as t,e as a,f as m,P as k,t as f,g as _,l as V,J as q}from"./index-yMJAVBXk.js";import{_ as S}from"./MonacoEditor.vue_vue_type_script_setup_true_lang-CjoEsC67.js";import{y as u}from"./index-DGweaj24.js";import{l as C,Q as M}from"./index-DCW2e4Az.js";import{S as N}from"./save-FeDrOUOd.js";const $={class:"space-y-6 max-w-7xl mx-auto"},j={class:"flex items-center justify-between"},B={class:"flex items-center gap-4"},P={class:"text-2xl font-semibold text-gray-900 dark:text-white"},T={class:"flex items-center space-x-3"},U={class:"max-w-[1000px]"},D=y({__name:"MenuAddPage",setup(A){M["vs-input-monaco-editor"]=S;const{t:e}=x(),c=V(),g=q(),h=l([{key:"name",title:e("menu.form.name"),type:"text",placeholder:e("menu.form.name"),required:!0,validators:["required"]},{key:"description",title:e("menu.form.description"),type:"text",placeholder:e("menu.form.description"),required:!0,validators:["required"]},{key:"locale",title:e("menu.form.language"),type:"select",placeholder:e("menu.form.language"),options:[{text:"Ukrainian",id:"uk"},{text:"English",id:"en"}],required:!0,validators:["required"]},{key:"content",title:e("menu.form.content"),type:"monaco-editor",height:"500px",language:"yaml",theme:"vs-light"}]),r=l({}),i=l({}),v=async()=>{try{if(await i.value.validate()){u({type:"warning",title:e("common.actions.warning"),message:e("menu.createMenuFailed")});return}await fetch("/api/cms-menu",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(r.value)}),u({title:e("common.success"),type:"success",message:e("common.successMessage")}),r.value={},c.push("/menu")}catch(s){console.log(s),u({title:e("common.error"),type:"error",message:e("common.errorMessage")})}};return(s,o)=>{var d,p;return b(),w("div",$,[t("div",j,[t("div",B,[t("button",{onClick:o[0]||(o[0]=n=>a(c).back()),class:"p-2 text-gray-500 rounded-full hover:text-gray-900 dark:text-gray-400 dark:hover:text-white hover:bg-gray-100 dark:hover:bg-gray-700"},[m(a(k),{class:"w-5 h-5"})]),t("h1",P,f(s.$t((p=(d=a(g))==null?void 0:d.meta)==null?void 0:p.title)),1)]),t("div",T,[t("button",{onClick:v,class:"inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium h-9 px-4 py-2 bg-blue-600 text-white shadow-md transition-all duration-200 transform hover:bg-blue-700 hover:shadow-lg hover:scale-105 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50"},[m(a(N),{class:"w-4 h-4 mr-2"}),_(" "+f(s.$t("common.actions.save")),1)])])]),t("div",U,[m(a(C),{schema:h.value,modelValue:r.value,"onUpdate:modelValue":o[1]||(o[1]=n=>r.value=n),form:i.value,"onUpdate:form":o[2]||(o[2]=n=>i.value=n)},null,8,["schema","modelValue","form"])])])}}});export{D as default};