@opengis/cms 0.0.58 → 0.0.60

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 (129) hide show
  1. package/README.md +131 -131
  2. package/dist/{ArticlesPage-CFjE_cw_.js → ArticlesPage-BjYzvTWM.js} +3 -3
  3. package/dist/{CollectionsBreadcrumb-BCxeRikP.js → CollectionsBreadcrumb-HePNJb-d.js} +1 -1
  4. package/dist/CollectionsBreadcrumb.vue_vue_type_script_setup_true_lang-BJh-tjam.js +53 -0
  5. package/dist/{Dashboard-C1eGscNd.js → Dashboard-CXkg_pk8.js} +132 -132
  6. package/dist/EditCollectionPage-BycuD920.js +188 -0
  7. package/dist/{MenuAddPage-D-p3gFgm.js → MenuAddPage-QTnwCoGh.js} +1 -1
  8. package/dist/{MenuBody-rN5j4YBu.js → MenuBody-Bi0ONVZf.js} +2 -2
  9. package/dist/{MenuItemPage-BoJw885D.js → MenuItemPage-B7Y9KFyb.js} +3 -3
  10. package/dist/{MenuList-DFEBS0NB.js → MenuList-BLIpeqSd.js} +53 -53
  11. package/dist/{MenuPage-BCZB_S8j.js → MenuPage-3W6jZ15H.js} +1 -1
  12. package/dist/{MenuWrapper-AZ_8s-zd.js → MenuWrapper-OrOv6sOb.js} +1 -1
  13. package/dist/{MonacoEditor-Db-3Jc3E.js → MonacoEditor-ByPT8pnv.js} +1 -1
  14. package/dist/MonacoEditor.vue_vue_type_script_setup_true_lang-C8cip9Ci.js +84 -0
  15. package/dist/{UniversalTable-CzqPG-tY.js → UniversalTable-GBd_pStq.js} +80 -80
  16. package/dist/{UniversalTablePagination-4gL47A7I.js → UniversalTablePagination-Dw2hc0nc.js} +46 -46
  17. package/dist/{contentForm-CtMhQTG0.js → contentForm-yMn63kza.js} +48 -48
  18. package/dist/index.js +5 -5
  19. package/dist/{vs-builder-monaco-B3Jj0V31.js → vs-builder-monaco-Cw-f19gc.js} +1 -1
  20. package/input-types.json +9 -9
  21. package/locales/en.json +815 -815
  22. package/locales/uk.json +813 -813
  23. package/module/cms/cls/content.status.json +17 -17
  24. package/module/cms/cls/user_type.json +9 -9
  25. package/module/cms/form/admin.users.form.json +77 -77
  26. package/module/cms/select/cms.page_type.sql +1 -1
  27. package/module/cms/select/news_tag_id.sql +11 -11
  28. package/module/cms/table/admin.users.table.json +53 -53
  29. package/module/cms/table/collection.default.table.json +96 -96
  30. package/module/cms/table/single.default.table.json +116 -116
  31. package/package.json +2 -1
  32. package/plugin.js +43 -43
  33. package/server/app.js +35 -35
  34. package/server/config.js +4 -4
  35. package/server/functions/getContent.js +45 -45
  36. package/server/functions/getDraftKey.js +22 -22
  37. package/server/functions/getSearchData.js +31 -31
  38. package/server/functions/getTags.js +30 -30
  39. package/server/functions/getUser.js +27 -27
  40. package/server/functions/utils/mock.reply.js +55 -55
  41. package/server/index.js +22 -22
  42. package/server/migrations/fixes.sql +129 -129
  43. package/server/migrations/site.sql +595 -595
  44. package/server/plugins/adminHook.js +78 -78
  45. package/server/plugins/hook.js +59 -59
  46. package/server/plugins/vite.js +75 -75
  47. package/server/routes/category/controllers/cms.category.delete.js +21 -21
  48. package/server/routes/category/controllers/cms.category.get.js +17 -17
  49. package/server/routes/category/controllers/cms.category.list.js +16 -16
  50. package/server/routes/category/controllers/cms.category.post.js +21 -21
  51. package/server/routes/category/controllers/cms.category.put.js +23 -23
  52. package/server/routes/category/index.mjs +22 -22
  53. package/server/routes/cms/controllers/cmsStat.js +55 -55
  54. package/server/routes/cms/controllers/cmsSuggest.js +57 -57
  55. package/server/routes/cms/controllers/deleteContent.js +113 -113
  56. package/server/routes/cms/controllers/deleteMedia.js +76 -76
  57. package/server/routes/cms/controllers/downloadMedia.js +84 -84
  58. package/server/routes/cms/controllers/getContent.js +113 -113
  59. package/server/routes/cms/controllers/getContentBySlug.js +93 -93
  60. package/server/routes/cms/controllers/getPermissions.js +15 -15
  61. package/server/routes/cms/controllers/insertContent.js +217 -217
  62. package/server/routes/cms/controllers/listMedia.js +155 -155
  63. package/server/routes/cms/controllers/metadataMedia.js +39 -39
  64. package/server/routes/cms/controllers/properties.get.js +18 -18
  65. package/server/routes/cms/controllers/properties.post.js +99 -99
  66. package/server/routes/cms/controllers/searchContent.js +214 -214
  67. package/server/routes/cms/controllers/setPermissions.js +49 -49
  68. package/server/routes/cms/controllers/translate.js +89 -89
  69. package/server/routes/cms/controllers/updateContent.js +266 -266
  70. package/server/routes/cms/controllers/uploadMedia.js +79 -79
  71. package/server/routes/cms/functions/getSettings.js +48 -48
  72. package/server/routes/cms/index.mjs +112 -112
  73. package/server/routes/cms/utils/additionalData.js +35 -35
  74. package/server/routes/cms/utils/getCollection.js +89 -89
  75. package/server/routes/cms/utils/getSingle.js +188 -188
  76. package/server/routes/cms/utils/inputTypes.js +5 -5
  77. package/server/routes/cms/utils/insertContentLocalization.js +104 -104
  78. package/server/routes/cms/utils/requestTranslation.js +113 -85
  79. package/server/routes/cms/utils/updateLocalization.js +47 -47
  80. package/server/routes/cmsSpace/controllers/deleteSpace.js +25 -25
  81. package/server/routes/cmsSpace/controllers/getSpaces.js +27 -27
  82. package/server/routes/cmsSpace/controllers/insertSpace.js +21 -21
  83. package/server/routes/cmsSpace/controllers/updateSpace.js +23 -23
  84. package/server/routes/cmsSpace/index.mjs +20 -20
  85. package/server/routes/contentType/controllers/addContentType.js +160 -160
  86. package/server/routes/contentType/controllers/contentTypeList.js +54 -54
  87. package/server/routes/contentType/controllers/delContentType.js +75 -75
  88. package/server/routes/contentType/controllers/editContentType.js +88 -88
  89. package/server/routes/contentType/controllers/getContentType.js +65 -65
  90. package/server/routes/contentType/index.mjs +35 -35
  91. package/server/routes/contentType/utils/updateContents.js +44 -44
  92. package/server/routes/contentType/utils/updateCustomContentTable.js +53 -53
  93. package/server/routes/feedback/controllers/email.list.js +24 -24
  94. package/server/routes/feedback/controllers/feedback.js +48 -48
  95. package/server/routes/feedback/controllers/feedback.list.js +37 -37
  96. package/server/routes/feedback/controllers/news.subscriptions.js +44 -44
  97. package/server/routes/feedback/index.mjs +71 -71
  98. package/server/routes/logs/controllers/export.user.logs.js +77 -77
  99. package/server/routes/logs/controllers/user.logs.js +44 -44
  100. package/server/routes/logs/index.mjs +9 -9
  101. package/server/routes/menu/controllers/addMenu.js +37 -37
  102. package/server/routes/menu/controllers/delMenu.js +31 -31
  103. package/server/routes/menu/controllers/editMenu.js +41 -41
  104. package/server/routes/menu/controllers/getMenu.js +24 -24
  105. package/server/routes/menu/functions/getMenu.js +50 -50
  106. package/server/routes/menu/index.mjs +13 -13
  107. package/server/routes/migration/controllers/collectionToCustom.js +137 -137
  108. package/server/routes/migration/index.mjs +8 -8
  109. package/server/routes/root.mjs +8 -8
  110. package/server/routes/tags/controllers/add.tags.js +24 -24
  111. package/server/routes/tags/controllers/del.tags.js +19 -19
  112. package/server/routes/tags/controllers/edit.tags.js +25 -25
  113. package/server/routes/tags/controllers/get.tags.js +15 -15
  114. package/server/routes/tags/index.mjs +14 -14
  115. package/server/templates/cls/cms.category_type.json +9 -9
  116. package/server/templates/cls/cms.content_review_status.json +9 -9
  117. package/server/templates/cls/cms.content_status.json +9 -9
  118. package/server/templates/cls/cms.content_type.json +9 -9
  119. package/server/templates/cls/cms.lang.json +9 -9
  120. package/server/templates/page/login.html +126 -126
  121. package/server/templates/select/core.user_mentioned.sql +1 -1
  122. package/utils.d.ts +52 -52
  123. package/utils.js +8 -8
  124. package/dist/CollectionsBreadcrumb.vue_vue_type_script_setup_true_lang-umRzB5mY.js +0 -53
  125. package/dist/EditCollectionPage-DIr1tdtn.js +0 -187
  126. package/dist/MonacoEditor.vue_vue_type_script_setup_true_lang-B1DrxmQX.js +0 -84
  127. package/dist/images/logo.png +0 -0
  128. package/dist/index.html +0 -29
  129. package/dist/vite.svg +0 -1
package/README.md CHANGED
@@ -1,131 +1,131 @@
1
- <!-- ![alt text](https://cdn.softpro.ua/data/npm/admin/opengis-admin.png) -->
2
- # @opengis/cms
3
-
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/)
8
-
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
- ## Install
20
-
21
- ```bash
22
- npm i @opengis/cms
23
- ```
24
-
25
- ## Usage Astro
26
-
27
- ```js
28
- ---
29
- import Layout from "@/layouts/Layout.astro";
30
-
31
- // get posts
32
- import { getContents } from "@/utils/cms";
33
- const postsData = await getContents({ collection: "posts"});
34
- const { lang } = Astro.params;
35
- ---
36
-
37
- <Layout
38
- title={lang === "uk" ? "Про нас" : "About us"}
39
- >
40
- { postsData }
41
- </Layout>
42
- ```
43
-
44
- ## Usage CMS
45
-
46
- ```js
47
- // main.ts
48
- app.config.globalProperties.$settings = {
49
- cms: {
50
- locale: 'uk', // мова сайту по замовчуванню
51
- locales: ['uk', 'en'], // доступні варіанти перекладу
52
- previewUrl: 'http://site.ua' // адреса перегляду контенту з редактора
53
- }
54
- };
55
- ```
56
-
57
- ```js
58
- // router.config
59
- export default [
60
- {
61
- path: '/cms.dashboard',
62
- component: () => import('@opengis/cms').then(el => el.Dashboard),
63
- },
64
- {
65
- path: '/cms.content/:type?/:id?',
66
- component: () => import('@opengis/cms').then(el => el.Content),
67
- },
68
- {
69
- path: '/cms.menu/:id?',
70
- component: () => import('@opengis/cms').then(el => el.Menu),
71
- },
72
- ]
73
- ```
74
- ## Start
75
-
76
- Configure **pg**, **redis** and **s3** connections in `.env` file
77
-
78
- ```bash
79
- node --env-file=.env.ip server
80
- bun --env-file=.env.ip server
81
- pm2 start server --name api -- --env-file=.env.ip
82
- ```
83
-
84
- ## Documentation
85
-
86
- For a detailed understanding of `cms`, its features, and how to use them, refer to our [Documentation](https://apidocs.softpro.ua/cms/).
87
-
88
- ## Technology stack
89
-
90
- <a href="https://fastify.dev/" target="_blank">
91
- <img src="https://img.shields.io/badge/Fastify-323330?style=for-the-badge&logo=fastify" /></a>
92
-
93
- <a href="https://vuejs.org/" target="_blank">
94
- <img src="https://img.shields.io/badge/Vue%20js-323330?style=for-the-badge&logo=vuedotjs&logoColor=4FC08D" /></a>
95
-
96
- <a href="https://vite.dev/" target="_blank">
97
- <img src="https://img.shields.io/badge/Vite-323330?style=for-the-badge&logo=vite" /></a>
98
-
99
- <a href="https://www.postgresql.org/" target="_blank">
100
- <img src="https://img.shields.io/badge/PostgreSQL-323330?style=for-the-badge&logo=postgresql&logoColor=white" /></a>
101
-
102
- <a href="https://redis.io/" target="_blank">
103
- <img src="https://img.shields.io/badge/redis-323330.svg?&style=for-the-badge&logo=redis&logoColor=%23DD0031" /></a>
104
-
105
- <a href="https://nodejs.org/" target="_blank">
106
- <img src="https://img.shields.io/badge/Node.js-323330?style=for-the-badge&logo=node.js&logoColor=white" /></a>
107
-
108
-
109
-
110
- ## Contribute
111
-
112
- Feel free to contact us through our website [SOFTPRO.UA](https://softpro.ua) or email <info@softpro.ua>
113
-
114
- - Report bugs
115
- - Share your ideas
116
- - Ask questions
117
-
118
- ## Follow Us
119
-
120
- [Official site](https://softpro.ua)
121
-
122
- <p>
123
- <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;
124
- <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;
125
- <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;
126
- <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;
127
- </p>
128
-
129
- ## License
130
-
131
- Copyright © SOFTPRO. All rights reserved.
1
+ <!-- ![alt text](https://cdn.softpro.ua/data/npm/admin/opengis-admin.png) -->
2
+ # @opengis/cms
3
+
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/)
8
+
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
+ ## Install
20
+
21
+ ```bash
22
+ npm i @opengis/cms
23
+ ```
24
+
25
+ ## Usage Astro
26
+
27
+ ```js
28
+ ---
29
+ import Layout from "@/layouts/Layout.astro";
30
+
31
+ // get posts
32
+ import { getContents } from "@/utils/cms";
33
+ const postsData = await getContents({ collection: "posts"});
34
+ const { lang } = Astro.params;
35
+ ---
36
+
37
+ <Layout
38
+ title={lang === "uk" ? "Про нас" : "About us"}
39
+ >
40
+ { postsData }
41
+ </Layout>
42
+ ```
43
+
44
+ ## Usage CMS
45
+
46
+ ```js
47
+ // main.ts
48
+ app.config.globalProperties.$settings = {
49
+ cms: {
50
+ locale: 'uk', // мова сайту по замовчуванню
51
+ locales: ['uk', 'en'], // доступні варіанти перекладу
52
+ previewUrl: 'http://site.ua' // адреса перегляду контенту з редактора
53
+ }
54
+ };
55
+ ```
56
+
57
+ ```js
58
+ // router.config
59
+ export default [
60
+ {
61
+ path: '/cms.dashboard',
62
+ component: () => import('@opengis/cms').then(el => el.Dashboard),
63
+ },
64
+ {
65
+ path: '/cms.content/:type?/:id?',
66
+ component: () => import('@opengis/cms').then(el => el.Content),
67
+ },
68
+ {
69
+ path: '/cms.menu/:id?',
70
+ component: () => import('@opengis/cms').then(el => el.Menu),
71
+ },
72
+ ]
73
+ ```
74
+ ## Start
75
+
76
+ Configure **pg**, **redis** and **s3** connections in `.env` file
77
+
78
+ ```bash
79
+ node --env-file=.env.ip server
80
+ bun --env-file=.env.ip server
81
+ pm2 start server --name api -- --env-file=.env.ip
82
+ ```
83
+
84
+ ## Documentation
85
+
86
+ For a detailed understanding of `cms`, its features, and how to use them, refer to our [Documentation](https://apidocs.softpro.ua/cms/).
87
+
88
+ ## Technology stack
89
+
90
+ <a href="https://fastify.dev/" target="_blank">
91
+ <img src="https://img.shields.io/badge/Fastify-323330?style=for-the-badge&logo=fastify" /></a>
92
+
93
+ <a href="https://vuejs.org/" target="_blank">
94
+ <img src="https://img.shields.io/badge/Vue%20js-323330?style=for-the-badge&logo=vuedotjs&logoColor=4FC08D" /></a>
95
+
96
+ <a href="https://vite.dev/" target="_blank">
97
+ <img src="https://img.shields.io/badge/Vite-323330?style=for-the-badge&logo=vite" /></a>
98
+
99
+ <a href="https://www.postgresql.org/" target="_blank">
100
+ <img src="https://img.shields.io/badge/PostgreSQL-323330?style=for-the-badge&logo=postgresql&logoColor=white" /></a>
101
+
102
+ <a href="https://redis.io/" target="_blank">
103
+ <img src="https://img.shields.io/badge/redis-323330.svg?&style=for-the-badge&logo=redis&logoColor=%23DD0031" /></a>
104
+
105
+ <a href="https://nodejs.org/" target="_blank">
106
+ <img src="https://img.shields.io/badge/Node.js-323330?style=for-the-badge&logo=node.js&logoColor=white" /></a>
107
+
108
+
109
+
110
+ ## Contribute
111
+
112
+ Feel free to contact us through our website [SOFTPRO.UA](https://softpro.ua) or email <info@softpro.ua>
113
+
114
+ - Report bugs
115
+ - Share your ideas
116
+ - Ask questions
117
+
118
+ ## Follow Us
119
+
120
+ [Official site](https://softpro.ua)
121
+
122
+ <p>
123
+ <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;
124
+ <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;
125
+ <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;
126
+ <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;
127
+ </p>
128
+
129
+ ## License
130
+
131
+ Copyright © SOFTPRO. All rights reserved.
@@ -21,13 +21,13 @@ const $e = { class: "space-y-6 mx-auto max-w-[90%]" }, Ae = { class: "flex flex-
21
21
  __name: "ArticlesPage",
22
22
  setup(Se) {
23
23
  const K = D(
24
- () => import("./UniversalTable-CzqPG-tY.js")
24
+ () => import("./UniversalTable-GBd_pStq.js")
25
25
  ), Q = D(
26
- () => import("./UniversalTablePagination-4gL47A7I.js")
26
+ () => import("./UniversalTablePagination-Dw2hc0nc.js")
27
27
  ), J = D(
28
28
  () => import("./EmptyData-DxPrSXhV.js")
29
29
  ), W = D(
30
- () => import("./CollectionsBreadcrumb-BCxeRikP.js")
30
+ () => import("./CollectionsBreadcrumb-HePNJb-d.js")
31
31
  ), s = ve(), m = fe(), c = o(null), X = o(""), { t: y, locale: Y } = _e(), E = o([]), Z = ue("cms.menu") || [], T = o(""), v = o(""), U = o(null), j = o(1), w = o(!1), p = o(["title", "slug", "author", "publish_at", "published_at", "status"]), q = o([]), x = o([]), F = o([]), k = o({}), V = o(0), C = o(!1), S = () => {
32
32
  var l;
33
33
  let t = (l = c.value) == null ? void 0 : l.columns.filter((e) => {
@@ -1,4 +1,4 @@
1
- import { _ as f } from "./CollectionsBreadcrumb.vue_vue_type_script_setup_true_lang-umRzB5mY.js";
1
+ import { _ as f } from "./CollectionsBreadcrumb.vue_vue_type_script_setup_true_lang-BJh-tjam.js";
2
2
  export {
3
3
  f as default
4
4
  };
@@ -0,0 +1,53 @@
1
+ import { defineComponent as k, openBlock as e, createElementBlock as s, createElementVNode as a, createVNode as m, unref as n, toDisplayString as u, Fragment as r, createBlock as c, createCommentVNode as p, renderList as b } from "vue";
2
+ import { Layers as x, ChevronRight as i } from "lucide-vue-next";
3
+ const h = { class: "flex items-center space-x-1 mb-4 overflow-hidden" }, g = { class: "truncate block max-w-[12rem]" }, w = ["onClick"], f = { class: "truncate block max-w-[20rem]" }, v = {
4
+ key: 1,
5
+ class: "flex gap-x-1 items-center px-2 py-1 rounded text-sm font-medium text-slate-700 dark:text-slate-300 min-w-0 overflow-hidden whitespace-nowrap text-ellipsis"
6
+ }, y = { class: "truncate block max-w-[20rem]" }, N = /* @__PURE__ */ k({
7
+ __name: "CollectionsBreadcrumb",
8
+ props: {
9
+ items: {},
10
+ loading: { type: Boolean }
11
+ },
12
+ emits: ["navigate"],
13
+ setup(C) {
14
+ return (t, l) => (e(), s("div", h, [
15
+ a("button", {
16
+ 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 min-w-0 overflow-hidden whitespace-nowrap text-ellipsis",
17
+ onClick: l[0] || (l[0] = (o) => t.$emit("navigate", "collections"))
18
+ }, [
19
+ m(n(x), { class: "w-3 h-3 flex-shrink-0" }),
20
+ a("span", g, u(t.$t("cms.navigation.collections")), 1)
21
+ ]),
22
+ t.loading ? (e(), s(r, { key: 0 }, [
23
+ m(n(i), { class: "w-3 h-3 text-slate-400 dark:text-slate-500 flex-shrink-0" }),
24
+ l[1] || (l[1] = a("div", { class: "h-7 w-24 rounded bg-slate-200 dark:bg-slate-700 animate-pulse" }, null, -1)),
25
+ m(n(i), { class: "w-3 h-3 text-slate-400 dark:text-slate-500 flex-shrink-0" }),
26
+ l[2] || (l[2] = a("div", { class: "h-7 w-20 rounded bg-slate-200 dark:bg-slate-700 animate-pulse" }, null, -1))
27
+ ], 64)) : (e(), s(r, { key: 1 }, [
28
+ t.items.length > 0 ? (e(), c(n(i), {
29
+ key: 0,
30
+ class: "w-3 h-3 text-slate-400 dark:text-slate-500 flex-shrink-0"
31
+ })) : p("", !0),
32
+ (e(!0), s(r, null, b(t.items, (o, d) => (e(), s(r, { key: d }, [
33
+ d < t.items.length - 1 ? (e(), s("button", {
34
+ key: 0,
35
+ 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 min-w-0 overflow-hidden whitespace-nowrap text-ellipsis",
36
+ onClick: (_) => t.$emit("navigate", o.route)
37
+ }, [
38
+ a("span", f, u(o.label), 1)
39
+ ], 8, w)) : (e(), s("span", v, [
40
+ a("span", y, u(o.label), 1)
41
+ ])),
42
+ d < t.items.length - 1 ? (e(), c(n(i), {
43
+ key: 2,
44
+ class: "w-3 h-3 text-slate-400 dark:text-slate-500 flex-shrink-0"
45
+ })) : p("", !0)
46
+ ], 64))), 128))
47
+ ], 64))
48
+ ]));
49
+ }
50
+ });
51
+ export {
52
+ N as _
53
+ };