@opengis/cms 0.0.62 → 0.0.63

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 (124) 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-C4uNmBJf.js → EditCollectionPage-BGZCMcQS.js} +3 -3
  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-CcFbUeal.js → contentForm-NmskI6Ye.js} +2 -2
  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/dist/{vs-builder-preview-DL3RYMp7.js → vs-builder-preview-l5KhqlrF.js} +1 -1
  21. package/dist/{vs-form-reference-list-Dtv8fJJU.js → vs-form-reference-list-hZufPxfE.js} +696 -353
  22. package/input-types.json +9 -9
  23. package/locales/en.json +823 -815
  24. package/locales/uk.json +821 -813
  25. package/module/cms/cls/content.status.json +17 -17
  26. package/module/cms/cls/user_type.json +9 -9
  27. package/module/cms/form/admin.users.form.json +77 -77
  28. package/module/cms/select/cms.page_type.sql +1 -1
  29. package/module/cms/select/news_tag_id.sql +11 -11
  30. package/module/cms/table/admin.users.table.json +53 -53
  31. package/module/cms/table/collection.default.table.json +96 -96
  32. package/module/cms/table/single.default.table.json +116 -116
  33. package/package.json +69 -69
  34. package/plugin.js +43 -43
  35. package/server/app.js +35 -35
  36. package/server/config.js +4 -4
  37. package/server/functions/getContent.js +45 -45
  38. package/server/functions/getDraftKey.js +22 -22
  39. package/server/functions/getSearchData.js +31 -31
  40. package/server/functions/getTags.js +30 -30
  41. package/server/functions/getUser.js +27 -27
  42. package/server/functions/utils/mock.reply.js +55 -55
  43. package/server/index.js +22 -22
  44. package/server/migrations/fixes.sql +132 -132
  45. package/server/migrations/site.sql +596 -596
  46. package/server/plugins/adminHook.js +78 -78
  47. package/server/plugins/hook.js +59 -59
  48. package/server/plugins/vite.js +75 -75
  49. package/server/routes/category/controllers/cms.category.delete.js +21 -21
  50. package/server/routes/category/controllers/cms.category.get.js +17 -17
  51. package/server/routes/category/controllers/cms.category.list.js +16 -16
  52. package/server/routes/category/controllers/cms.category.post.js +21 -21
  53. package/server/routes/category/controllers/cms.category.put.js +23 -23
  54. package/server/routes/category/index.mjs +22 -22
  55. package/server/routes/cms/controllers/cmsStat.js +55 -55
  56. package/server/routes/cms/controllers/cmsSuggest.js +57 -57
  57. package/server/routes/cms/controllers/deleteContent.js +113 -113
  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 +226 -226
  63. package/server/routes/cms/controllers/listMedia.js +155 -155
  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 +231 -231
  70. package/server/routes/cms/functions/getSettings.js +48 -48
  71. package/server/routes/cms/index.mjs +112 -112
  72. package/server/routes/cms/utils/additionalData.js +35 -35
  73. package/server/routes/cms/utils/getCollection.js +89 -89
  74. package/server/routes/cms/utils/getSingle.js +188 -188
  75. package/server/routes/cms/utils/inputTypes.js +5 -5
  76. package/server/routes/cms/utils/insertContentLocalization.js +104 -104
  77. package/server/routes/cms/utils/requestTranslation.js +135 -135
  78. package/server/routes/cms/utils/updateLocalization.js +42 -42
  79. package/server/routes/cmsSpace/controllers/deleteSpace.js +26 -26
  80. package/server/routes/cmsSpace/controllers/getSpaces.js +28 -28
  81. package/server/routes/cmsSpace/controllers/insertSpace.js +22 -22
  82. package/server/routes/cmsSpace/controllers/updateSpace.js +24 -24
  83. package/server/routes/cmsSpace/index.mjs +20 -20
  84. package/server/routes/contentType/controllers/addContentType.js +160 -160
  85. package/server/routes/contentType/controllers/contentTypeList.js +47 -47
  86. package/server/routes/contentType/controllers/delContentType.js +75 -75
  87. package/server/routes/contentType/controllers/editContentType.js +70 -70
  88. package/server/routes/contentType/controllers/getContentType.js +57 -57
  89. package/server/routes/contentType/index.mjs +35 -35
  90. package/server/routes/contentType/utils/updateContents.js +44 -44
  91. package/server/routes/contentType/utils/updateCustomContentTable.js +53 -53
  92. package/server/routes/feedback/controllers/email.list.js +24 -24
  93. package/server/routes/feedback/controllers/feedback.js +48 -48
  94. package/server/routes/feedback/controllers/feedback.list.js +37 -37
  95. package/server/routes/feedback/controllers/news.subscriptions.js +44 -44
  96. package/server/routes/feedback/index.mjs +71 -71
  97. package/server/routes/logs/controllers/export.user.logs.js +77 -77
  98. package/server/routes/logs/controllers/user.logs.js +44 -44
  99. package/server/routes/logs/index.mjs +9 -9
  100. package/server/routes/menu/controllers/addMenu.js +37 -37
  101. package/server/routes/menu/controllers/delMenu.js +31 -31
  102. package/server/routes/menu/controllers/editMenu.js +41 -41
  103. package/server/routes/menu/controllers/getMenu.js +24 -24
  104. package/server/routes/menu/functions/getMenu.js +50 -50
  105. package/server/routes/menu/index.mjs +13 -13
  106. package/server/routes/migration/controllers/collectionToCustom.js +137 -137
  107. package/server/routes/migration/index.mjs +8 -8
  108. package/server/routes/root.mjs +8 -8
  109. package/server/routes/tags/controllers/add.tags.js +24 -24
  110. package/server/routes/tags/controllers/del.tags.js +19 -19
  111. package/server/routes/tags/controllers/edit.tags.js +25 -25
  112. package/server/routes/tags/controllers/get.tags.js +15 -15
  113. package/server/routes/tags/index.mjs +14 -14
  114. package/server/templates/cls/cms.category_type.json +9 -9
  115. package/server/templates/cls/cms.content_review_status.json +9 -9
  116. package/server/templates/cls/cms.content_status.json +9 -9
  117. package/server/templates/cls/cms.content_type.json +9 -9
  118. package/server/templates/cls/cms.lang.json +9 -9
  119. package/server/templates/page/login.html +126 -126
  120. package/server/templates/select/core.user_mentioned.sql +1 -1
  121. package/utils.d.ts +52 -52
  122. package/utils.js +8 -8
  123. package/dist/CollectionsBreadcrumb.vue_vue_type_script_setup_true_lang-umRzB5mY.js +0 -53
  124. 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: '/collections/:type?/:id?',
66
- component: () => import('@opengis/cms').then(el => el.Content),
67
- },
68
- {
69
- path: '/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: '/collections/:type?/:id?',
66
+ component: () => import('@opengis/cms').then(el => el.Content),
67
+ },
68
+ {
69
+ path: '/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
+ };