@opengis/cms 0.0.58 → 0.0.59

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 (126) 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-DIr1tdtn.js → EditCollectionPage-CqYHpEON.js} +2 -2
  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-Buku-lel.js} +1 -1
  18. package/dist/index.html +29 -29
  19. package/dist/index.js +5 -5
  20. package/dist/{vs-builder-monaco-B3Jj0V31.js → vs-builder-monaco-Cw-f19gc.js} +1 -1
  21. package/input-types.json +9 -9
  22. package/locales/en.json +815 -815
  23. package/locales/uk.json +813 -813
  24. package/module/cms/cls/content.status.json +17 -17
  25. package/module/cms/cls/user_type.json +9 -9
  26. package/module/cms/form/admin.users.form.json +77 -77
  27. package/module/cms/select/cms.page_type.sql +1 -1
  28. package/module/cms/select/news_tag_id.sql +11 -11
  29. package/module/cms/table/admin.users.table.json +53 -53
  30. package/module/cms/table/collection.default.table.json +96 -96
  31. package/module/cms/table/single.default.table.json +116 -116
  32. package/package.json +2 -1
  33. package/plugin.js +43 -43
  34. package/server/app.js +35 -35
  35. package/server/config.js +4 -4
  36. package/server/functions/getContent.js +45 -45
  37. package/server/functions/getDraftKey.js +22 -22
  38. package/server/functions/getSearchData.js +31 -31
  39. package/server/functions/getTags.js +30 -30
  40. package/server/functions/getUser.js +27 -27
  41. package/server/functions/utils/mock.reply.js +55 -55
  42. package/server/index.js +22 -22
  43. package/server/migrations/fixes.sql +129 -129
  44. package/server/migrations/site.sql +595 -595
  45. package/server/plugins/adminHook.js +78 -78
  46. package/server/plugins/hook.js +59 -59
  47. package/server/plugins/vite.js +75 -75
  48. package/server/routes/category/controllers/cms.category.delete.js +21 -21
  49. package/server/routes/category/controllers/cms.category.get.js +17 -17
  50. package/server/routes/category/controllers/cms.category.list.js +16 -16
  51. package/server/routes/category/controllers/cms.category.post.js +21 -21
  52. package/server/routes/category/controllers/cms.category.put.js +23 -23
  53. package/server/routes/category/index.mjs +22 -22
  54. package/server/routes/cms/controllers/cmsStat.js +55 -55
  55. package/server/routes/cms/controllers/cmsSuggest.js +57 -57
  56. package/server/routes/cms/controllers/deleteContent.js +113 -113
  57. package/server/routes/cms/controllers/deleteMedia.js +76 -76
  58. package/server/routes/cms/controllers/downloadMedia.js +84 -84
  59. package/server/routes/cms/controllers/getContent.js +113 -113
  60. package/server/routes/cms/controllers/getContentBySlug.js +93 -93
  61. package/server/routes/cms/controllers/getPermissions.js +15 -15
  62. package/server/routes/cms/controllers/insertContent.js +217 -217
  63. package/server/routes/cms/controllers/listMedia.js +155 -155
  64. package/server/routes/cms/controllers/metadataMedia.js +39 -39
  65. package/server/routes/cms/controllers/properties.get.js +18 -18
  66. package/server/routes/cms/controllers/properties.post.js +99 -99
  67. package/server/routes/cms/controllers/searchContent.js +214 -214
  68. package/server/routes/cms/controllers/setPermissions.js +49 -49
  69. package/server/routes/cms/controllers/translate.js +89 -89
  70. package/server/routes/cms/controllers/updateContent.js +266 -266
  71. package/server/routes/cms/controllers/uploadMedia.js +79 -79
  72. package/server/routes/cms/functions/getSettings.js +48 -48
  73. package/server/routes/cms/index.mjs +112 -112
  74. package/server/routes/cms/utils/additionalData.js +35 -35
  75. package/server/routes/cms/utils/getCollection.js +89 -89
  76. package/server/routes/cms/utils/getSingle.js +188 -188
  77. package/server/routes/cms/utils/inputTypes.js +5 -5
  78. package/server/routes/cms/utils/insertContentLocalization.js +104 -104
  79. package/server/routes/cms/utils/requestTranslation.js +85 -85
  80. package/server/routes/cms/utils/updateLocalization.js +47 -47
  81. package/server/routes/cmsSpace/controllers/deleteSpace.js +25 -25
  82. package/server/routes/cmsSpace/controllers/getSpaces.js +27 -27
  83. package/server/routes/cmsSpace/controllers/insertSpace.js +21 -21
  84. package/server/routes/cmsSpace/controllers/updateSpace.js +23 -23
  85. package/server/routes/cmsSpace/index.mjs +20 -20
  86. package/server/routes/contentType/controllers/addContentType.js +160 -160
  87. package/server/routes/contentType/controllers/contentTypeList.js +54 -54
  88. package/server/routes/contentType/controllers/delContentType.js +75 -75
  89. package/server/routes/contentType/controllers/editContentType.js +88 -88
  90. package/server/routes/contentType/controllers/getContentType.js +65 -65
  91. package/server/routes/contentType/index.mjs +35 -35
  92. package/server/routes/contentType/utils/updateContents.js +44 -44
  93. package/server/routes/contentType/utils/updateCustomContentTable.js +53 -53
  94. package/server/routes/feedback/controllers/email.list.js +24 -24
  95. package/server/routes/feedback/controllers/feedback.js +48 -48
  96. package/server/routes/feedback/controllers/feedback.list.js +37 -37
  97. package/server/routes/feedback/controllers/news.subscriptions.js +44 -44
  98. package/server/routes/feedback/index.mjs +71 -71
  99. package/server/routes/logs/controllers/export.user.logs.js +77 -77
  100. package/server/routes/logs/controllers/user.logs.js +44 -44
  101. package/server/routes/logs/index.mjs +9 -9
  102. package/server/routes/menu/controllers/addMenu.js +37 -37
  103. package/server/routes/menu/controllers/delMenu.js +31 -31
  104. package/server/routes/menu/controllers/editMenu.js +41 -41
  105. package/server/routes/menu/controllers/getMenu.js +24 -24
  106. package/server/routes/menu/functions/getMenu.js +50 -50
  107. package/server/routes/menu/index.mjs +13 -13
  108. package/server/routes/migration/controllers/collectionToCustom.js +137 -137
  109. package/server/routes/migration/index.mjs +8 -8
  110. package/server/routes/root.mjs +8 -8
  111. package/server/routes/tags/controllers/add.tags.js +24 -24
  112. package/server/routes/tags/controllers/del.tags.js +19 -19
  113. package/server/routes/tags/controllers/edit.tags.js +25 -25
  114. package/server/routes/tags/controllers/get.tags.js +15 -15
  115. package/server/routes/tags/index.mjs +14 -14
  116. package/server/templates/cls/cms.category_type.json +9 -9
  117. package/server/templates/cls/cms.content_review_status.json +9 -9
  118. package/server/templates/cls/cms.content_status.json +9 -9
  119. package/server/templates/cls/cms.content_type.json +9 -9
  120. package/server/templates/cls/cms.lang.json +9 -9
  121. package/server/templates/page/login.html +126 -126
  122. package/server/templates/select/core.user_mentioned.sql +1 -1
  123. package/utils.d.ts +52 -52
  124. package/utils.js +8 -8
  125. package/dist/CollectionsBreadcrumb.vue_vue_type_script_setup_true_lang-umRzB5mY.js +0 -53
  126. package/dist/MonacoEditor.vue_vue_type_script_setup_true_lang-B1DrxmQX.js +0 -84
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
+ };