@xleddyl/nuxt-cms 0.1.11 → 0.1.13

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 (407) hide show
  1. package/dist/module.json +1 -1
  2. package/dist/module.mjs +6 -27
  3. package/dist/runtime/app/components/cms/Alert.d.vue.ts +18 -0
  4. package/dist/runtime/app/components/cms/Alert.vue +14 -0
  5. package/dist/runtime/app/components/cms/Alert.vue.d.ts +18 -0
  6. package/dist/runtime/app/components/cms/BlocksField.vue +23 -26
  7. package/dist/runtime/app/components/cms/Button.d.vue.ts +25 -0
  8. package/dist/runtime/app/components/cms/Button.vue +33 -0
  9. package/dist/runtime/app/components/cms/Button.vue.d.ts +25 -0
  10. package/dist/runtime/app/components/cms/ConfirmModal.d.vue.ts +1 -18
  11. package/dist/runtime/app/components/cms/ConfirmModal.vue +20 -21
  12. package/dist/runtime/app/components/cms/ConfirmModal.vue.d.ts +1 -18
  13. package/dist/runtime/app/components/cms/DropdownMenu.d.vue.ts +29 -0
  14. package/dist/runtime/app/components/cms/DropdownMenu.vue +57 -0
  15. package/dist/runtime/app/components/cms/DropdownMenu.vue.d.ts +29 -0
  16. package/dist/runtime/app/components/cms/EmptyState.vue +3 -3
  17. package/dist/runtime/app/components/cms/EntryForm.vue +9 -22
  18. package/dist/runtime/app/components/cms/FieldInput.vue +15 -8
  19. package/dist/runtime/app/components/cms/Form.d.vue.ts +35 -0
  20. package/dist/runtime/app/components/cms/Form.vue +42 -0
  21. package/dist/runtime/app/components/cms/Form.vue.d.ts +35 -0
  22. package/dist/runtime/app/components/cms/FormField.d.vue.ts +21 -0
  23. package/dist/runtime/app/components/cms/FormField.vue +22 -0
  24. package/dist/runtime/app/components/cms/FormField.vue.d.ts +21 -0
  25. package/dist/runtime/app/components/cms/Icon.d.vue.ts +6 -0
  26. package/dist/runtime/app/components/cms/Icon.vue +18 -0
  27. package/dist/runtime/app/components/cms/Icon.vue.d.ts +6 -0
  28. package/dist/runtime/app/components/cms/Input.d.vue.ts +28 -0
  29. package/dist/runtime/app/components/cms/Input.vue +43 -0
  30. package/dist/runtime/app/components/cms/Input.vue.d.ts +28 -0
  31. package/dist/runtime/app/components/cms/JsonField.vue +3 -6
  32. package/dist/runtime/app/components/cms/MediaField.vue +14 -15
  33. package/dist/runtime/app/components/cms/MediaGallery.vue +52 -49
  34. package/dist/runtime/app/components/cms/MediaUpload.vue +9 -8
  35. package/dist/runtime/app/components/cms/Modal.d.vue.ts +34 -0
  36. package/dist/runtime/app/components/cms/Modal.vue +54 -0
  37. package/dist/runtime/app/components/cms/Modal.vue.d.ts +34 -0
  38. package/dist/runtime/app/components/cms/PageHeader.vue +1 -1
  39. package/dist/runtime/app/components/cms/Pagination.d.vue.ts +15 -0
  40. package/dist/runtime/app/components/cms/Pagination.vue +51 -0
  41. package/dist/runtime/app/components/cms/Pagination.vue.d.ts +15 -0
  42. package/dist/runtime/app/components/cms/Popover.d.vue.ts +22 -0
  43. package/dist/runtime/app/components/cms/Popover.vue +27 -0
  44. package/dist/runtime/app/components/cms/Popover.vue.d.ts +22 -0
  45. package/dist/runtime/app/components/cms/RelationField.vue +6 -6
  46. package/dist/runtime/app/components/cms/RichTextField.vue +38 -39
  47. package/dist/runtime/app/components/cms/Select.d.vue.ts +16 -0
  48. package/dist/runtime/app/components/cms/Select.vue +19 -0
  49. package/dist/runtime/app/components/cms/Select.vue.d.ts +16 -0
  50. package/dist/runtime/app/components/cms/SelectMenu.d.vue.ts +25 -0
  51. package/dist/runtime/app/components/cms/SelectMenu.vue +110 -0
  52. package/dist/runtime/app/components/cms/SelectMenu.vue.d.ts +25 -0
  53. package/dist/runtime/app/components/cms/SlugField.vue +4 -4
  54. package/dist/runtime/app/components/cms/Switch.d.vue.ts +10 -0
  55. package/dist/runtime/app/components/cms/Switch.vue +14 -0
  56. package/dist/runtime/app/components/cms/Switch.vue.d.ts +10 -0
  57. package/dist/runtime/app/components/cms/Table.d.vue.ts +48 -0
  58. package/dist/runtime/app/components/cms/Table.vue +47 -0
  59. package/dist/runtime/app/components/cms/Table.vue.d.ts +48 -0
  60. package/dist/runtime/app/components/cms/Textarea.d.vue.ts +16 -0
  61. package/dist/runtime/app/components/cms/Textarea.vue +17 -0
  62. package/dist/runtime/app/components/cms/Textarea.vue.d.ts +16 -0
  63. package/dist/runtime/app/components/cms/Toaster.d.vue.ts +3 -0
  64. package/dist/runtime/app/components/cms/Toaster.vue +42 -0
  65. package/dist/runtime/app/components/cms/Toaster.vue.d.ts +3 -0
  66. package/dist/runtime/app/components/cms/TranslatableField.vue +5 -5
  67. package/dist/runtime/app/composables/cms-confirm.d.ts +8 -0
  68. package/dist/runtime/app/composables/cms-confirm.js +14 -5
  69. package/dist/runtime/app/composables/cms-toast.d.ts +13 -0
  70. package/dist/runtime/app/composables/cms-toast.js +18 -0
  71. package/dist/runtime/app/layouts/cms-admin.vue +21 -21
  72. package/dist/runtime/app/middleware/cms-auth.d.ts +1 -1
  73. package/dist/runtime/app/pages/admin-collection.vue +40 -53
  74. package/dist/runtime/app/pages/admin-entry.vue +15 -19
  75. package/dist/runtime/app/pages/admin-login.vue +16 -24
  76. package/dist/runtime/app/pages/admin-media.vue +2 -3
  77. package/dist/runtime/app/utils/ui.d.ts +4 -0
  78. package/dist/runtime/app/utils/ui.js +1 -0
  79. package/dist/runtime/assets/main.css +1 -1
  80. package/dist/runtime/assets/svg/academic-cap.svg +3 -0
  81. package/dist/runtime/assets/svg/adjustments-horizontal.svg +3 -0
  82. package/dist/runtime/assets/svg/adjustments-vertical.svg +3 -0
  83. package/dist/runtime/assets/svg/archive-box-arrow-down.svg +3 -0
  84. package/dist/runtime/assets/svg/archive-box-x-mark.svg +3 -0
  85. package/dist/runtime/assets/svg/archive-box.svg +3 -0
  86. package/dist/runtime/assets/svg/arrow-down-circle.svg +3 -0
  87. package/dist/runtime/assets/svg/arrow-down-left.svg +3 -0
  88. package/dist/runtime/assets/svg/arrow-down-on-square-stack.svg +3 -0
  89. package/dist/runtime/assets/svg/arrow-down-on-square.svg +3 -0
  90. package/dist/runtime/assets/svg/arrow-down-right.svg +3 -0
  91. package/dist/runtime/assets/svg/arrow-down-tray.svg +3 -0
  92. package/dist/runtime/assets/svg/arrow-down.svg +3 -0
  93. package/dist/runtime/assets/svg/arrow-left-circle.svg +3 -0
  94. package/dist/runtime/assets/svg/arrow-left-end-on-rectangle.svg +3 -0
  95. package/dist/runtime/assets/svg/arrow-left-on-rectangle.svg +3 -0
  96. package/dist/runtime/assets/svg/arrow-left-start-on-rectangle.svg +3 -0
  97. package/dist/runtime/assets/svg/arrow-left.svg +3 -0
  98. package/dist/runtime/assets/svg/arrow-long-down.svg +3 -0
  99. package/dist/runtime/assets/svg/arrow-long-left.svg +3 -0
  100. package/dist/runtime/assets/svg/arrow-long-right.svg +3 -0
  101. package/dist/runtime/assets/svg/arrow-long-up.svg +3 -0
  102. package/dist/runtime/assets/svg/arrow-path-rounded-square.svg +3 -0
  103. package/dist/runtime/assets/svg/arrow-path.svg +3 -0
  104. package/dist/runtime/assets/svg/arrow-right-circle.svg +3 -0
  105. package/dist/runtime/assets/svg/arrow-right-end-on-rectangle.svg +3 -0
  106. package/dist/runtime/assets/svg/arrow-right-on-rectangle.svg +3 -0
  107. package/dist/runtime/assets/svg/arrow-right-start-on-rectangle.svg +3 -0
  108. package/dist/runtime/assets/svg/arrow-right.svg +3 -0
  109. package/dist/runtime/assets/svg/arrow-small-down.svg +3 -0
  110. package/dist/runtime/assets/svg/arrow-small-left.svg +3 -0
  111. package/dist/runtime/assets/svg/arrow-small-right.svg +3 -0
  112. package/dist/runtime/assets/svg/arrow-small-up.svg +3 -0
  113. package/dist/runtime/assets/svg/arrow-top-right-on-square.svg +3 -0
  114. package/dist/runtime/assets/svg/arrow-trending-down.svg +3 -0
  115. package/dist/runtime/assets/svg/arrow-trending-up.svg +3 -0
  116. package/dist/runtime/assets/svg/arrow-turn-down-left.svg +3 -0
  117. package/dist/runtime/assets/svg/arrow-turn-down-right.svg +3 -0
  118. package/dist/runtime/assets/svg/arrow-turn-left-down.svg +3 -0
  119. package/dist/runtime/assets/svg/arrow-turn-left-up.svg +3 -0
  120. package/dist/runtime/assets/svg/arrow-turn-right-down.svg +3 -0
  121. package/dist/runtime/assets/svg/arrow-turn-right-up.svg +3 -0
  122. package/dist/runtime/assets/svg/arrow-turn-up-left.svg +3 -0
  123. package/dist/runtime/assets/svg/arrow-turn-up-right.svg +3 -0
  124. package/dist/runtime/assets/svg/arrow-up-circle.svg +3 -0
  125. package/dist/runtime/assets/svg/arrow-up-left.svg +3 -0
  126. package/dist/runtime/assets/svg/arrow-up-on-square-stack.svg +3 -0
  127. package/dist/runtime/assets/svg/arrow-up-on-square.svg +3 -0
  128. package/dist/runtime/assets/svg/arrow-up-right.svg +3 -0
  129. package/dist/runtime/assets/svg/arrow-up-tray.svg +3 -0
  130. package/dist/runtime/assets/svg/arrow-up.svg +3 -0
  131. package/dist/runtime/assets/svg/arrow-uturn-down.svg +3 -0
  132. package/dist/runtime/assets/svg/arrow-uturn-left.svg +3 -0
  133. package/dist/runtime/assets/svg/arrow-uturn-right.svg +3 -0
  134. package/dist/runtime/assets/svg/arrow-uturn-up.svg +3 -0
  135. package/dist/runtime/assets/svg/arrows-pointing-in.svg +3 -0
  136. package/dist/runtime/assets/svg/arrows-pointing-out.svg +3 -0
  137. package/dist/runtime/assets/svg/arrows-right-left.svg +3 -0
  138. package/dist/runtime/assets/svg/arrows-up-down.svg +3 -0
  139. package/dist/runtime/assets/svg/at-symbol.svg +3 -0
  140. package/dist/runtime/assets/svg/backspace.svg +3 -0
  141. package/dist/runtime/assets/svg/backward.svg +3 -0
  142. package/dist/runtime/assets/svg/banknotes.svg +3 -0
  143. package/dist/runtime/assets/svg/bars-2.svg +3 -0
  144. package/dist/runtime/assets/svg/bars-3-bottom-left.svg +3 -0
  145. package/dist/runtime/assets/svg/bars-3-bottom-right.svg +3 -0
  146. package/dist/runtime/assets/svg/bars-3-center-left.svg +3 -0
  147. package/dist/runtime/assets/svg/bars-3.svg +3 -0
  148. package/dist/runtime/assets/svg/bars-4.svg +3 -0
  149. package/dist/runtime/assets/svg/bars-arrow-down.svg +3 -0
  150. package/dist/runtime/assets/svg/bars-arrow-up.svg +3 -0
  151. package/dist/runtime/assets/svg/battery-0.svg +3 -0
  152. package/dist/runtime/assets/svg/battery-100.svg +3 -0
  153. package/dist/runtime/assets/svg/battery-50.svg +3 -0
  154. package/dist/runtime/assets/svg/beaker.svg +3 -0
  155. package/dist/runtime/assets/svg/bell-alert.svg +3 -0
  156. package/dist/runtime/assets/svg/bell-slash.svg +3 -0
  157. package/dist/runtime/assets/svg/bell-snooze.svg +3 -0
  158. package/dist/runtime/assets/svg/bell.svg +3 -0
  159. package/dist/runtime/assets/svg/bold.svg +3 -0
  160. package/dist/runtime/assets/svg/bolt-slash.svg +3 -0
  161. package/dist/runtime/assets/svg/bolt.svg +3 -0
  162. package/dist/runtime/assets/svg/book-open.svg +3 -0
  163. package/dist/runtime/assets/svg/bookmark-slash.svg +3 -0
  164. package/dist/runtime/assets/svg/bookmark-square.svg +3 -0
  165. package/dist/runtime/assets/svg/bookmark.svg +3 -0
  166. package/dist/runtime/assets/svg/briefcase.svg +3 -0
  167. package/dist/runtime/assets/svg/bug-ant.svg +3 -0
  168. package/dist/runtime/assets/svg/building-library.svg +3 -0
  169. package/dist/runtime/assets/svg/building-office-2.svg +3 -0
  170. package/dist/runtime/assets/svg/building-office.svg +3 -0
  171. package/dist/runtime/assets/svg/building-storefront.svg +3 -0
  172. package/dist/runtime/assets/svg/cake.svg +3 -0
  173. package/dist/runtime/assets/svg/calculator.svg +3 -0
  174. package/dist/runtime/assets/svg/calendar-date-range.svg +3 -0
  175. package/dist/runtime/assets/svg/calendar-days.svg +3 -0
  176. package/dist/runtime/assets/svg/calendar.svg +3 -0
  177. package/dist/runtime/assets/svg/camera.svg +4 -0
  178. package/dist/runtime/assets/svg/chart-bar-square.svg +3 -0
  179. package/dist/runtime/assets/svg/chart-bar.svg +3 -0
  180. package/dist/runtime/assets/svg/chart-pie.svg +4 -0
  181. package/dist/runtime/assets/svg/chat-bubble-bottom-center-text.svg +3 -0
  182. package/dist/runtime/assets/svg/chat-bubble-bottom-center.svg +3 -0
  183. package/dist/runtime/assets/svg/chat-bubble-left-ellipsis.svg +3 -0
  184. package/dist/runtime/assets/svg/chat-bubble-left-right.svg +3 -0
  185. package/dist/runtime/assets/svg/chat-bubble-left.svg +3 -0
  186. package/dist/runtime/assets/svg/chat-bubble-oval-left-ellipsis.svg +3 -0
  187. package/dist/runtime/assets/svg/chat-bubble-oval-left.svg +3 -0
  188. package/dist/runtime/assets/svg/check-badge.svg +3 -0
  189. package/dist/runtime/assets/svg/check-circle.svg +3 -0
  190. package/dist/runtime/assets/svg/check.svg +3 -0
  191. package/dist/runtime/assets/svg/chevron-double-down.svg +3 -0
  192. package/dist/runtime/assets/svg/chevron-double-left.svg +3 -0
  193. package/dist/runtime/assets/svg/chevron-double-right.svg +3 -0
  194. package/dist/runtime/assets/svg/chevron-double-up.svg +4 -0
  195. package/dist/runtime/assets/svg/chevron-down.svg +3 -0
  196. package/dist/runtime/assets/svg/chevron-left.svg +3 -0
  197. package/dist/runtime/assets/svg/chevron-right.svg +3 -0
  198. package/dist/runtime/assets/svg/chevron-up-down.svg +3 -0
  199. package/dist/runtime/assets/svg/chevron-up.svg +3 -0
  200. package/dist/runtime/assets/svg/circle-stack.svg +3 -0
  201. package/dist/runtime/assets/svg/clipboard-document-check.svg +3 -0
  202. package/dist/runtime/assets/svg/clipboard-document-list.svg +3 -0
  203. package/dist/runtime/assets/svg/clipboard-document.svg +3 -0
  204. package/dist/runtime/assets/svg/clipboard.svg +3 -0
  205. package/dist/runtime/assets/svg/clock.svg +3 -0
  206. package/dist/runtime/assets/svg/cloud-arrow-down.svg +3 -0
  207. package/dist/runtime/assets/svg/cloud-arrow-up.svg +3 -0
  208. package/dist/runtime/assets/svg/cloud.svg +3 -0
  209. package/dist/runtime/assets/svg/code-bracket-square.svg +3 -0
  210. package/dist/runtime/assets/svg/code-bracket.svg +3 -0
  211. package/dist/runtime/assets/svg/cog-6-tooth.svg +4 -0
  212. package/dist/runtime/assets/svg/cog-8-tooth.svg +4 -0
  213. package/dist/runtime/assets/svg/cog.svg +3 -0
  214. package/dist/runtime/assets/svg/command-line.svg +3 -0
  215. package/dist/runtime/assets/svg/computer-desktop.svg +3 -0
  216. package/dist/runtime/assets/svg/cpu-chip.svg +3 -0
  217. package/dist/runtime/assets/svg/credit-card.svg +3 -0
  218. package/dist/runtime/assets/svg/cube-transparent.svg +3 -0
  219. package/dist/runtime/assets/svg/cube.svg +3 -0
  220. package/dist/runtime/assets/svg/currency-bangladeshi.svg +3 -0
  221. package/dist/runtime/assets/svg/currency-dollar.svg +3 -0
  222. package/dist/runtime/assets/svg/currency-euro.svg +3 -0
  223. package/dist/runtime/assets/svg/currency-pound.svg +3 -0
  224. package/dist/runtime/assets/svg/currency-rupee.svg +3 -0
  225. package/dist/runtime/assets/svg/currency-yen.svg +3 -0
  226. package/dist/runtime/assets/svg/cursor-arrow-rays.svg +3 -0
  227. package/dist/runtime/assets/svg/cursor-arrow-ripple.svg +3 -0
  228. package/dist/runtime/assets/svg/device-phone-mobile.svg +3 -0
  229. package/dist/runtime/assets/svg/device-tablet.svg +3 -0
  230. package/dist/runtime/assets/svg/divide.svg +3 -0
  231. package/dist/runtime/assets/svg/document-arrow-down.svg +3 -0
  232. package/dist/runtime/assets/svg/document-arrow-up.svg +3 -0
  233. package/dist/runtime/assets/svg/document-chart-bar.svg +3 -0
  234. package/dist/runtime/assets/svg/document-check.svg +3 -0
  235. package/dist/runtime/assets/svg/document-currency-bangladeshi.svg +3 -0
  236. package/dist/runtime/assets/svg/document-currency-dollar.svg +3 -0
  237. package/dist/runtime/assets/svg/document-currency-euro.svg +3 -0
  238. package/dist/runtime/assets/svg/document-currency-pound.svg +3 -0
  239. package/dist/runtime/assets/svg/document-currency-rupee.svg +3 -0
  240. package/dist/runtime/assets/svg/document-currency-yen.svg +3 -0
  241. package/dist/runtime/assets/svg/document-duplicate.svg +3 -0
  242. package/dist/runtime/assets/svg/document-magnifying-glass.svg +3 -0
  243. package/dist/runtime/assets/svg/document-minus.svg +3 -0
  244. package/dist/runtime/assets/svg/document-plus.svg +3 -0
  245. package/dist/runtime/assets/svg/document-text.svg +3 -0
  246. package/dist/runtime/assets/svg/document.svg +3 -0
  247. package/dist/runtime/assets/svg/ellipsis-horizontal-circle.svg +3 -0
  248. package/dist/runtime/assets/svg/ellipsis-horizontal.svg +3 -0
  249. package/dist/runtime/assets/svg/ellipsis-vertical.svg +3 -0
  250. package/dist/runtime/assets/svg/envelope-open.svg +3 -0
  251. package/dist/runtime/assets/svg/envelope.svg +3 -0
  252. package/dist/runtime/assets/svg/equals.svg +3 -0
  253. package/dist/runtime/assets/svg/exclamation-circle.svg +3 -0
  254. package/dist/runtime/assets/svg/exclamation-triangle.svg +3 -0
  255. package/dist/runtime/assets/svg/eye-dropper.svg +3 -0
  256. package/dist/runtime/assets/svg/eye-slash.svg +3 -0
  257. package/dist/runtime/assets/svg/eye.svg +4 -0
  258. package/dist/runtime/assets/svg/face-frown.svg +3 -0
  259. package/dist/runtime/assets/svg/face-smile.svg +3 -0
  260. package/dist/runtime/assets/svg/film.svg +3 -0
  261. package/dist/runtime/assets/svg/finger-print.svg +3 -0
  262. package/dist/runtime/assets/svg/fire.svg +4 -0
  263. package/dist/runtime/assets/svg/flag.svg +3 -0
  264. package/dist/runtime/assets/svg/folder-arrow-down.svg +3 -0
  265. package/dist/runtime/assets/svg/folder-minus.svg +3 -0
  266. package/dist/runtime/assets/svg/folder-open.svg +3 -0
  267. package/dist/runtime/assets/svg/folder-plus.svg +3 -0
  268. package/dist/runtime/assets/svg/folder.svg +3 -0
  269. package/dist/runtime/assets/svg/forward.svg +3 -0
  270. package/dist/runtime/assets/svg/funnel.svg +3 -0
  271. package/dist/runtime/assets/svg/gif.svg +3 -0
  272. package/dist/runtime/assets/svg/gift-top.svg +3 -0
  273. package/dist/runtime/assets/svg/gift.svg +3 -0
  274. package/dist/runtime/assets/svg/globe-alt.svg +3 -0
  275. package/dist/runtime/assets/svg/globe-americas.svg +3 -0
  276. package/dist/runtime/assets/svg/globe-asia-australia.svg +3 -0
  277. package/dist/runtime/assets/svg/globe-europe-africa.svg +3 -0
  278. package/dist/runtime/assets/svg/h1.svg +3 -0
  279. package/dist/runtime/assets/svg/h2.svg +3 -0
  280. package/dist/runtime/assets/svg/h3.svg +3 -0
  281. package/dist/runtime/assets/svg/hand-raised.svg +3 -0
  282. package/dist/runtime/assets/svg/hand-thumb-down.svg +3 -0
  283. package/dist/runtime/assets/svg/hand-thumb-up.svg +3 -0
  284. package/dist/runtime/assets/svg/hashtag.svg +3 -0
  285. package/dist/runtime/assets/svg/heart.svg +3 -0
  286. package/dist/runtime/assets/svg/home-modern.svg +3 -0
  287. package/dist/runtime/assets/svg/home.svg +3 -0
  288. package/dist/runtime/assets/svg/identification.svg +3 -0
  289. package/dist/runtime/assets/svg/inbox-arrow-down.svg +3 -0
  290. package/dist/runtime/assets/svg/inbox-stack.svg +3 -0
  291. package/dist/runtime/assets/svg/inbox.svg +3 -0
  292. package/dist/runtime/assets/svg/information-circle.svg +3 -0
  293. package/dist/runtime/assets/svg/italic.svg +3 -0
  294. package/dist/runtime/assets/svg/key.svg +3 -0
  295. package/dist/runtime/assets/svg/language.svg +3 -0
  296. package/dist/runtime/assets/svg/lifebuoy.svg +3 -0
  297. package/dist/runtime/assets/svg/light-bulb.svg +3 -0
  298. package/dist/runtime/assets/svg/link-slash.svg +3 -0
  299. package/dist/runtime/assets/svg/link.svg +3 -0
  300. package/dist/runtime/assets/svg/list-bullet.svg +3 -0
  301. package/dist/runtime/assets/svg/lock-closed.svg +3 -0
  302. package/dist/runtime/assets/svg/lock-open.svg +3 -0
  303. package/dist/runtime/assets/svg/magnifying-glass-circle.svg +3 -0
  304. package/dist/runtime/assets/svg/magnifying-glass-minus.svg +3 -0
  305. package/dist/runtime/assets/svg/magnifying-glass-plus.svg +3 -0
  306. package/dist/runtime/assets/svg/magnifying-glass.svg +3 -0
  307. package/dist/runtime/assets/svg/map-pin.svg +4 -0
  308. package/dist/runtime/assets/svg/map.svg +3 -0
  309. package/dist/runtime/assets/svg/megaphone.svg +3 -0
  310. package/dist/runtime/assets/svg/microphone.svg +3 -0
  311. package/dist/runtime/assets/svg/minus-circle.svg +3 -0
  312. package/dist/runtime/assets/svg/minus-small.svg +3 -0
  313. package/dist/runtime/assets/svg/minus.svg +3 -0
  314. package/dist/runtime/assets/svg/moon.svg +3 -0
  315. package/dist/runtime/assets/svg/musical-note.svg +3 -0
  316. package/dist/runtime/assets/svg/newspaper.svg +3 -0
  317. package/dist/runtime/assets/svg/no-symbol.svg +3 -0
  318. package/dist/runtime/assets/svg/numbered-list.svg +3 -0
  319. package/dist/runtime/assets/svg/paint-brush.svg +3 -0
  320. package/dist/runtime/assets/svg/paper-airplane.svg +3 -0
  321. package/dist/runtime/assets/svg/paper-clip.svg +3 -0
  322. package/dist/runtime/assets/svg/pause-circle.svg +3 -0
  323. package/dist/runtime/assets/svg/pause.svg +3 -0
  324. package/dist/runtime/assets/svg/pencil-square.svg +3 -0
  325. package/dist/runtime/assets/svg/pencil.svg +3 -0
  326. package/dist/runtime/assets/svg/percent-badge.svg +3 -0
  327. package/dist/runtime/assets/svg/phone-arrow-down-left.svg +3 -0
  328. package/dist/runtime/assets/svg/phone-arrow-up-right.svg +3 -0
  329. package/dist/runtime/assets/svg/phone-x-mark.svg +3 -0
  330. package/dist/runtime/assets/svg/phone.svg +3 -0
  331. package/dist/runtime/assets/svg/photo.svg +3 -0
  332. package/dist/runtime/assets/svg/play-circle.svg +4 -0
  333. package/dist/runtime/assets/svg/play-pause.svg +3 -0
  334. package/dist/runtime/assets/svg/play.svg +3 -0
  335. package/dist/runtime/assets/svg/plus-circle.svg +3 -0
  336. package/dist/runtime/assets/svg/plus-small.svg +3 -0
  337. package/dist/runtime/assets/svg/plus.svg +3 -0
  338. package/dist/runtime/assets/svg/power.svg +3 -0
  339. package/dist/runtime/assets/svg/presentation-chart-bar.svg +3 -0
  340. package/dist/runtime/assets/svg/presentation-chart-line.svg +3 -0
  341. package/dist/runtime/assets/svg/printer.svg +3 -0
  342. package/dist/runtime/assets/svg/puzzle-piece.svg +3 -0
  343. package/dist/runtime/assets/svg/qr-code.svg +4 -0
  344. package/dist/runtime/assets/svg/question-mark-circle.svg +3 -0
  345. package/dist/runtime/assets/svg/queue-list.svg +3 -0
  346. package/dist/runtime/assets/svg/radio.svg +3 -0
  347. package/dist/runtime/assets/svg/receipt-percent.svg +3 -0
  348. package/dist/runtime/assets/svg/receipt-refund.svg +3 -0
  349. package/dist/runtime/assets/svg/rectangle-group.svg +3 -0
  350. package/dist/runtime/assets/svg/rectangle-stack.svg +3 -0
  351. package/dist/runtime/assets/svg/rocket-launch.svg +3 -0
  352. package/dist/runtime/assets/svg/rss.svg +3 -0
  353. package/dist/runtime/assets/svg/scale.svg +3 -0
  354. package/dist/runtime/assets/svg/scissors.svg +3 -0
  355. package/dist/runtime/assets/svg/server-stack.svg +3 -0
  356. package/dist/runtime/assets/svg/server.svg +3 -0
  357. package/dist/runtime/assets/svg/share.svg +3 -0
  358. package/dist/runtime/assets/svg/shield-check.svg +3 -0
  359. package/dist/runtime/assets/svg/shield-exclamation.svg +3 -0
  360. package/dist/runtime/assets/svg/shopping-bag.svg +3 -0
  361. package/dist/runtime/assets/svg/shopping-cart.svg +3 -0
  362. package/dist/runtime/assets/svg/signal-slash.svg +3 -0
  363. package/dist/runtime/assets/svg/signal.svg +3 -0
  364. package/dist/runtime/assets/svg/slash.svg +3 -0
  365. package/dist/runtime/assets/svg/sparkles.svg +3 -0
  366. package/dist/runtime/assets/svg/speaker-wave.svg +3 -0
  367. package/dist/runtime/assets/svg/speaker-x-mark.svg +3 -0
  368. package/dist/runtime/assets/svg/square-2-stack.svg +3 -0
  369. package/dist/runtime/assets/svg/square-3-stack-3d.svg +3 -0
  370. package/dist/runtime/assets/svg/squares-2x2.svg +3 -0
  371. package/dist/runtime/assets/svg/squares-plus.svg +3 -0
  372. package/dist/runtime/assets/svg/star.svg +3 -0
  373. package/dist/runtime/assets/svg/stop-circle.svg +4 -0
  374. package/dist/runtime/assets/svg/stop.svg +3 -0
  375. package/dist/runtime/assets/svg/strikethrough.svg +3 -0
  376. package/dist/runtime/assets/svg/sun.svg +3 -0
  377. package/dist/runtime/assets/svg/swatch.svg +3 -0
  378. package/dist/runtime/assets/svg/table-cells.svg +3 -0
  379. package/dist/runtime/assets/svg/tag.svg +4 -0
  380. package/dist/runtime/assets/svg/ticket.svg +3 -0
  381. package/dist/runtime/assets/svg/trash.svg +3 -0
  382. package/dist/runtime/assets/svg/trophy.svg +3 -0
  383. package/dist/runtime/assets/svg/truck.svg +3 -0
  384. package/dist/runtime/assets/svg/tv.svg +3 -0
  385. package/dist/runtime/assets/svg/underline.svg +3 -0
  386. package/dist/runtime/assets/svg/user-circle.svg +3 -0
  387. package/dist/runtime/assets/svg/user-group.svg +3 -0
  388. package/dist/runtime/assets/svg/user-minus.svg +3 -0
  389. package/dist/runtime/assets/svg/user-plus.svg +3 -0
  390. package/dist/runtime/assets/svg/user.svg +3 -0
  391. package/dist/runtime/assets/svg/users.svg +3 -0
  392. package/dist/runtime/assets/svg/variable.svg +3 -0
  393. package/dist/runtime/assets/svg/video-camera-slash.svg +3 -0
  394. package/dist/runtime/assets/svg/video-camera.svg +3 -0
  395. package/dist/runtime/assets/svg/view-columns.svg +3 -0
  396. package/dist/runtime/assets/svg/viewfinder-circle.svg +3 -0
  397. package/dist/runtime/assets/svg/wallet.svg +3 -0
  398. package/dist/runtime/assets/svg/wifi.svg +3 -0
  399. package/dist/runtime/assets/svg/window.svg +3 -0
  400. package/dist/runtime/assets/svg/wrench-screwdriver.svg +3 -0
  401. package/dist/runtime/assets/svg/wrench.svg +4 -0
  402. package/dist/runtime/assets/svg/x-circle.svg +3 -0
  403. package/dist/runtime/assets/svg/x-mark.svg +3 -0
  404. package/dist/runtime/shared/index.js +1 -1
  405. package/package.json +4 -3
  406. package/dist/runtime/app/i18n/en.json +0 -123
  407. package/dist/runtime/app/i18n/it.json +0 -123
@@ -1,9 +1,9 @@
1
1
  <template>
2
2
  <CmsEmptyState
3
3
  v-if="notConfigured"
4
- icon="i-lucide-plug-zap"
5
- :title="t('cms.media.notConfiguredTitle')"
6
- :body="t('cms.media.notConfiguredBody')"
4
+ icon="bolt"
5
+ title="Media storage not configured"
6
+ body="Set cms.media in nuxt.config to enable uploads."
7
7
  />
8
8
 
9
9
  <div v-else class="flex flex-col gap-5">
@@ -24,10 +24,10 @@
24
24
  :class="{ 'is-active': filter === f }"
25
25
  @click="filter = f"
26
26
  >
27
- {{ t(`cms.media.filter.${f}`) }}
27
+ {{ filterLabels[f] }}
28
28
  </button>
29
29
  <template v-if="folders.length">
30
- <span class="bg-(--cms-line) mx-1 h-4 w-px" />
30
+ <span class="mx-1 h-4 w-px bg-(--cms-line)" />
31
31
  <button
32
32
  v-for="f in folders"
33
33
  :key="f"
@@ -36,13 +36,13 @@
36
36
  :class="{ 'is-active': folder === f }"
37
37
  @click="folder = folder === f ? null : f"
38
38
  >
39
- <UIcon name="i-lucide-folder" class="mr-1 size-3" />{{ f }}
39
+ <CmsIcon name="folder" class="mr-1 size-3" />{{ f }}
40
40
  </button>
41
41
  </template>
42
42
  </div>
43
43
 
44
44
  <div v-if="loading" class="flex justify-center py-10">
45
- <UIcon name="i-lucide-loader-circle" class="text-(--ui-text-dimmed) size-6 animate-spin" />
45
+ <CmsIcon name="arrow-path" class="size-6 animate-spin text-(--ui-text-dimmed)" />
46
46
  </div>
47
47
 
48
48
  <div
@@ -63,7 +63,7 @@
63
63
  }"
64
64
  @click="selectable && emit('select', { key: item.key, url: item.url })"
65
65
  >
66
- <div class="bg-(--cms-field) relative flex aspect-square items-center justify-center">
66
+ <div class="relative flex aspect-square items-center justify-center bg-(--cms-field)">
67
67
  <img
68
68
  v-if="item.type === 'image' && item.url"
69
69
  :src="item.url"
@@ -79,40 +79,40 @@
79
79
  playsinline
80
80
  class="absolute inset-0 size-full object-cover"
81
81
  />
82
- <UIcon
82
+ <CmsIcon
83
83
  v-else
84
84
  :name="mediaIconFor(item.type)"
85
- class="text-(--ui-text-dimmed) size-8"
85
+ class="size-8 text-(--ui-text-dimmed)"
86
86
  />
87
87
  <div
88
88
  v-if="!selectable"
89
- class="absolute right-2 top-2 flex gap-1 opacity-0 transition-opacity focus-within:opacity-100 group-hover:opacity-100"
89
+ class="absolute top-2 right-2 flex gap-1 opacity-0 transition-opacity group-hover:opacity-100 focus-within:opacity-100"
90
90
  >
91
- <UButton
92
- icon="i-lucide-pencil"
91
+ <CmsButton
92
+ icon="pencil-square"
93
93
  size="xs"
94
94
  color="neutral"
95
95
  variant="solid"
96
96
  class="rounded-full shadow-sm"
97
- :aria-label="t('cms.media.edit')"
97
+ aria-label="Edit details"
98
98
  @click="openEdit(item)"
99
99
  />
100
- <UButton
101
- icon="i-lucide-copy"
100
+ <CmsButton
101
+ icon="document-duplicate"
102
102
  size="xs"
103
103
  color="neutral"
104
104
  variant="solid"
105
105
  class="rounded-full shadow-sm"
106
- :aria-label="t('cms.media.copy')"
106
+ aria-label="Copy URL"
107
107
  @click="copy(item)"
108
108
  />
109
- <UButton
110
- icon="i-lucide-trash-2"
109
+ <CmsButton
110
+ icon="trash"
111
111
  size="xs"
112
112
  color="error"
113
113
  variant="solid"
114
114
  class="rounded-full shadow-sm"
115
- :aria-label="t('cms.media.delete')"
115
+ aria-label="Delete"
116
116
  @click="remove(item)"
117
117
  />
118
118
  </div>
@@ -131,14 +131,10 @@
131
131
  </component>
132
132
  </div>
133
133
 
134
- <CmsEmptyState
135
- v-else-if="loadError"
136
- icon="i-lucide-triangle-alert"
137
- :title="t('cms.media.loadError')"
138
- >
139
- <UButton
140
- :label="t('cms.media.retry')"
141
- icon="i-lucide-refresh-cw"
134
+ <CmsEmptyState v-else-if="loadError" icon="exclamation-triangle" title="Could not load media">
135
+ <CmsButton
136
+ label="Retry"
137
+ icon="arrow-path"
142
138
  variant="subtle"
143
139
  class="mt-3 rounded-full px-4"
144
140
  @click="reload"
@@ -147,12 +143,12 @@
147
143
 
148
144
  <CmsEmptyState
149
145
  v-else
150
- icon="i-lucide-image"
151
- :title="t('cms.media.emptyTitle')"
152
- :body="t('cms.media.emptyBody')"
146
+ icon="photo"
147
+ title="No media yet"
148
+ body="Files you upload will show up here."
153
149
  />
154
150
 
155
- <UModal
151
+ <CmsModal
156
152
  :open="!!editing"
157
153
  :title="editing ? mediaFilename(editing.key) : ''"
158
154
  :ui="CMS_MODAL_UI"
@@ -164,15 +160,15 @@
164
160
  >
165
161
  <template #body>
166
162
  <div class="flex flex-col gap-4">
167
- <UFormField :label="t('cms.media.alt')">
168
- <UInput v-model="editAlt" size="lg" class="w-full" />
169
- </UFormField>
170
- <UFormField :label="t('cms.media.folder')">
171
- <UInput v-model="editFolder" size="lg" class="w-full" />
172
- </UFormField>
163
+ <CmsFormField label="Alt text">
164
+ <CmsInput v-model="editAlt" size="lg" class="w-full" />
165
+ </CmsFormField>
166
+ <CmsFormField label="Folder">
167
+ <CmsInput v-model="editFolder" size="lg" class="w-full" />
168
+ </CmsFormField>
173
169
  <div class="flex justify-end">
174
- <UButton
175
- :label="t('cms.form.save')"
170
+ <CmsButton
171
+ label="Save"
176
172
  :loading="editSaving"
177
173
  class="rounded-full px-6"
178
174
  @click="saveEdit"
@@ -180,23 +176,29 @@
180
176
  </div>
181
177
  </div>
182
178
  </template>
183
- </UModal>
179
+ </CmsModal>
184
180
  </div>
185
181
  </template>
186
182
 
187
183
  <script setup>
188
- import { computed, onMounted, ref, useI18n, useToast } from "#imports";
184
+ import { computed, onMounted, ref } from "#imports";
189
185
  import { MEDIA_TYPES, mediaFilename, mediaIconFor } from "#nuxt-cms";
190
186
  import { useCmsConfirm } from "../../composables/cms-confirm";
187
+ import { useCmsToast } from "../../composables/cms-toast";
191
188
  import { CMS_MODAL_UI, errorMessage } from "../../utils/ui";
189
+ const filterLabels = {
190
+ all: "All",
191
+ image: "Images",
192
+ video: "Videos",
193
+ file: "Files"
194
+ };
192
195
  const props = defineProps({
193
196
  selectable: { type: Boolean, required: false },
194
197
  mediaType: { type: null, required: false },
195
198
  accept: { type: Array, required: false }
196
199
  });
197
200
  const emit = defineEmits(["select"]);
198
- const { t } = useI18n();
199
- const toast = useToast();
201
+ const toast = useCmsToast();
200
202
  const endpoint = "/api/cms/admin/media";
201
203
  const items = ref([]);
202
204
  const loading = ref(true);
@@ -264,7 +266,7 @@ async function saveEdit() {
264
266
  await reload();
265
267
  } catch (err) {
266
268
  toast.add({
267
- title: t("cms.toast.saveFailed"),
269
+ title: "Save failed",
268
270
  description: errorMessage(err),
269
271
  color: "error"
270
272
  });
@@ -289,23 +291,24 @@ function formatSize(bytes) {
289
291
  async function copy(item) {
290
292
  try {
291
293
  await navigator.clipboard.writeText(item.url ?? item.key);
292
- toast.add({ title: t("cms.media.copied"), color: "success" });
294
+ toast.add({ title: "Copied", color: "success" });
293
295
  } catch {
294
- toast.add({ title: t("cms.media.copyError"), color: "error" });
296
+ toast.add({ title: "Copy failed", color: "error" });
295
297
  }
296
298
  }
297
299
  const confirmAction = useCmsConfirm();
298
300
  const removing = ref(false);
299
301
  async function remove(item) {
300
302
  if (removing.value) return;
301
- if (!await confirmAction(t("cms.media.deleteConfirm"))) return;
303
+ if (!await confirmAction("Delete this file? Entries referencing it will keep a broken link."))
304
+ return;
302
305
  removing.value = true;
303
306
  try {
304
307
  await $fetch(endpoint, { method: "DELETE", query: { key: item.key } });
305
308
  await reload();
306
309
  } catch (err) {
307
310
  toast.add({
308
- title: t("cms.media.deleteFailed"),
311
+ title: "Delete failed",
309
312
  description: errorMessage(err),
310
313
  color: "error"
311
314
  });
@@ -18,21 +18,22 @@
18
18
  @change="onChange"
19
19
  @click.stop
20
20
  />
21
- <UIcon
22
- :name="uploading ? 'i-lucide-loader-circle' : 'i-lucide-upload-cloud'"
21
+ <CmsIcon
22
+ :name="uploading ? 'arrow-path' : 'cloud-arrow-up'"
23
23
  class="size-5 shrink-0"
24
24
  :class="{ 'animate-spin': uploading }"
25
25
  />
26
26
  <span class="text-[13px] font-medium">
27
27
  {{
28
- uploading ? t("cms.media.uploading", { done: Math.min(done + 1, total), total }) : t(multiple ? "cms.media.dropHint" : "cms.media.dropHintSingle")
28
+ uploading ? `Uploading ${Math.min(done + 1, total)} of ${total}\u2026` : multiple ? "Drop files here or click to browse" : "Drop a file here or click to browse"
29
29
  }}
30
30
  </span>
31
31
  </button>
32
32
  </template>
33
33
 
34
34
  <script setup>
35
- import { computed, ref, useI18n, useToast } from "#imports";
35
+ import { computed, ref } from "#imports";
36
+ import { useCmsToast } from "../../composables/cms-toast";
36
37
  const props = defineProps({
37
38
  multiple: { type: Boolean, required: false },
38
39
  mediaType: { type: null, required: false, default: "file" },
@@ -40,8 +41,7 @@ const props = defineProps({
40
41
  dense: { type: Boolean, required: false }
41
42
  });
42
43
  const emit = defineEmits(["uploaded"]);
43
- const { t } = useI18n();
44
- const toast = useToast();
44
+ const toast = useCmsToast();
45
45
  async function imageDimensions(file) {
46
46
  if (!file.type.startsWith("image/")) return {};
47
47
  try {
@@ -102,7 +102,7 @@ async function handleFiles(list) {
102
102
  let files = Array.from(list).filter(matchesAccept);
103
103
  const tooLarge = files.filter((file) => file.size > MAX_FILE_SIZE);
104
104
  for (const file of tooLarge) {
105
- toast.add({ title: t("cms.media.tooLarge", { name: file.name }), color: "error" });
105
+ toast.add({ title: `File too large (max 10 MB): ${file.name}`, color: "error" });
106
106
  }
107
107
  files = files.filter((file) => file.size <= MAX_FILE_SIZE);
108
108
  if (!props.multiple) files = files.slice(0, 1);
@@ -114,7 +114,8 @@ async function handleFiles(list) {
114
114
  const results = await Promise.allSettled(files.map(uploadOne));
115
115
  const ok = results.filter((r) => r.status === "fulfilled").map((r) => r.value);
116
116
  const failed = results.length - ok.length;
117
- if (failed) toast.add({ title: t("cms.media.uploadFailed", failed), color: "error" });
117
+ if (failed)
118
+ toast.add({ title: `${failed} upload${failed > 1 ? "s" : ""} failed`, color: "error" });
118
119
  if (ok.length) emit("uploaded", ok);
119
120
  } finally {
120
121
  uploading.value = false;
@@ -0,0 +1,34 @@
1
+ type __VLS_Props = {
2
+ title?: string;
3
+ ui?: {
4
+ content?: string;
5
+ title?: string;
6
+ };
7
+ };
8
+ type __VLS_ModelProps = {
9
+ 'open'?: boolean;
10
+ };
11
+ type __VLS_PublicProps = __VLS_Props & __VLS_ModelProps;
12
+ declare var __VLS_7: {}, __VLS_9: {}, __VLS_11: {};
13
+ type __VLS_Slots = {} & {
14
+ header?: (props: typeof __VLS_7) => any;
15
+ } & {
16
+ body?: (props: typeof __VLS_9) => any;
17
+ } & {
18
+ default?: (props: typeof __VLS_11) => any;
19
+ };
20
+ declare const __VLS_base: import("vue").DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
21
+ "after:leave": () => any;
22
+ "update:open": (value: boolean) => any;
23
+ }, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
24
+ "onAfter:leave"?: (() => any) | undefined;
25
+ "onUpdate:open"?: ((value: boolean) => any) | undefined;
26
+ }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
27
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
28
+ declare const _default: typeof __VLS_export;
29
+ export default _default;
30
+ type __VLS_WithSlots<T, S> = T & {
31
+ new (): {
32
+ $slots: S;
33
+ };
34
+ };
@@ -0,0 +1,54 @@
1
+ <template>
2
+ <Teleport to="body">
3
+ <!-- Wrapped in .cms-scope so the vendored Tailwind utilities still apply
4
+ once teleported outside the admin layout root. -->
5
+ <div v-if="open" class="cms-scope">
6
+ <div class="cms-overlay" @click.self="close">
7
+ <div class="cms-modal cms-rise" :class="ui?.content" role="dialog" aria-modal="true">
8
+ <div v-if="title || $slots.header" class="cms-modal-header">
9
+ <slot name="header">
10
+ <h2
11
+ :class="
12
+ ui?.title ?? 'cms-display text-xl font-medium text-(--ui-text-highlighted)'
13
+ "
14
+ >
15
+ {{ title }}
16
+ </h2>
17
+ </slot>
18
+ </div>
19
+ <div class="cms-modal-body">
20
+ <slot name="body"><slot /></slot>
21
+ </div>
22
+ </div>
23
+ </div>
24
+ </div>
25
+ </Teleport>
26
+ </template>
27
+
28
+ <script setup>
29
+ import { onBeforeUnmount, watch } from "#imports";
30
+ defineProps({
31
+ title: { type: String, required: false },
32
+ ui: { type: Object, required: false }
33
+ });
34
+ const open = defineModel("open", { type: Boolean, ...{ default: false } });
35
+ const emit = defineEmits(["after:leave"]);
36
+ function close() {
37
+ open.value = false;
38
+ }
39
+ function onKeydown(event) {
40
+ if (event.key === "Escape") close();
41
+ }
42
+ watch(open, (value, previous) => {
43
+ if (import.meta.server) return;
44
+ if (value) {
45
+ document.addEventListener("keydown", onKeydown);
46
+ } else {
47
+ document.removeEventListener("keydown", onKeydown);
48
+ if (previous) emit("after:leave");
49
+ }
50
+ });
51
+ onBeforeUnmount(() => {
52
+ if (import.meta.client) document.removeEventListener("keydown", onKeydown);
53
+ });
54
+ </script>
@@ -0,0 +1,34 @@
1
+ type __VLS_Props = {
2
+ title?: string;
3
+ ui?: {
4
+ content?: string;
5
+ title?: string;
6
+ };
7
+ };
8
+ type __VLS_ModelProps = {
9
+ 'open'?: boolean;
10
+ };
11
+ type __VLS_PublicProps = __VLS_Props & __VLS_ModelProps;
12
+ declare var __VLS_7: {}, __VLS_9: {}, __VLS_11: {};
13
+ type __VLS_Slots = {} & {
14
+ header?: (props: typeof __VLS_7) => any;
15
+ } & {
16
+ body?: (props: typeof __VLS_9) => any;
17
+ } & {
18
+ default?: (props: typeof __VLS_11) => any;
19
+ };
20
+ declare const __VLS_base: import("vue").DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
21
+ "after:leave": () => any;
22
+ "update:open": (value: boolean) => any;
23
+ }, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
24
+ "onAfter:leave"?: (() => any) | undefined;
25
+ "onUpdate:open"?: ((value: boolean) => any) | undefined;
26
+ }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
27
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
28
+ declare const _default: typeof __VLS_export;
29
+ export default _default;
30
+ type __VLS_WithSlots<T, S> = T & {
31
+ new (): {
32
+ $slots: S;
33
+ };
34
+ };
@@ -5,7 +5,7 @@
5
5
  {{ kicker }}
6
6
  </div>
7
7
  <div class="flex items-center gap-3">
8
- <h1 class="cms-display text-(--ui-text-highlighted) text-[32px]/none font-medium">
8
+ <h1 class="cms-display text-[32px]/none font-medium text-(--ui-text-highlighted)">
9
9
  {{ title }}
10
10
  </h1>
11
11
  <slot name="badge" />
@@ -0,0 +1,15 @@
1
+ type __VLS_Props = {
2
+ total: number;
3
+ itemsPerPage: number;
4
+ };
5
+ type __VLS_ModelProps = {
6
+ 'page'?: number;
7
+ };
8
+ type __VLS_PublicProps = __VLS_Props & __VLS_ModelProps;
9
+ declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
10
+ "update:page": (value: number) => any;
11
+ }, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
12
+ "onUpdate:page"?: ((value: number) => any) | undefined;
13
+ }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
14
+ declare const _default: typeof __VLS_export;
15
+ export default _default;
@@ -0,0 +1,51 @@
1
+ <template>
2
+ <div class="cms-pagination">
3
+ <button
4
+ type="button"
5
+ class="cms-page-btn"
6
+ :disabled="page <= 1"
7
+ aria-label="Previous page"
8
+ @click="go(page - 1)"
9
+ >
10
+ <CmsIcon name="chevron-left" class="size-4" />
11
+ </button>
12
+ <button
13
+ v-for="p in pages"
14
+ :key="p"
15
+ type="button"
16
+ class="cms-page-btn"
17
+ :class="{ 'is-active': p === page }"
18
+ @click="go(p)"
19
+ >
20
+ {{ p }}
21
+ </button>
22
+ <button
23
+ type="button"
24
+ class="cms-page-btn"
25
+ :disabled="page >= pageCount"
26
+ aria-label="Next page"
27
+ @click="go(page + 1)"
28
+ >
29
+ <CmsIcon name="chevron-right" class="size-4" />
30
+ </button>
31
+ </div>
32
+ </template>
33
+
34
+ <script setup>
35
+ import { computed } from "#imports";
36
+ const props = defineProps({
37
+ total: { type: Number, required: true },
38
+ itemsPerPage: { type: Number, required: true }
39
+ });
40
+ const page = defineModel("page", { type: Number, ...{ default: 1 } });
41
+ const pageCount = computed(() => Math.max(1, Math.ceil(props.total / props.itemsPerPage)));
42
+ const pages = computed(() => {
43
+ const count = pageCount.value;
44
+ if (count <= 7) return Array.from({ length: count }, (_, index) => index + 1);
45
+ const start = Math.min(Math.max(page.value - 3, 1), count - 6);
46
+ return Array.from({ length: 7 }, (_, index) => start + index);
47
+ });
48
+ function go(target) {
49
+ if (target >= 1 && target <= pageCount.value) page.value = target;
50
+ }
51
+ </script>
@@ -0,0 +1,15 @@
1
+ type __VLS_Props = {
2
+ total: number;
3
+ itemsPerPage: number;
4
+ };
5
+ type __VLS_ModelProps = {
6
+ 'page'?: number;
7
+ };
8
+ type __VLS_PublicProps = __VLS_Props & __VLS_ModelProps;
9
+ declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
10
+ "update:page": (value: number) => any;
11
+ }, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
12
+ "onUpdate:page"?: ((value: number) => any) | undefined;
13
+ }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
14
+ declare const _default: typeof __VLS_export;
15
+ export default _default;
@@ -0,0 +1,22 @@
1
+ type __VLS_ModelProps = {
2
+ 'open'?: boolean;
3
+ };
4
+ declare var __VLS_1: {}, __VLS_3: {};
5
+ type __VLS_Slots = {} & {
6
+ default?: (props: typeof __VLS_1) => any;
7
+ } & {
8
+ content?: (props: typeof __VLS_3) => any;
9
+ };
10
+ declare const __VLS_base: import("vue").DefineComponent<__VLS_ModelProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
11
+ "update:open": (value: boolean) => any;
12
+ }, string, import("vue").PublicProps, Readonly<__VLS_ModelProps> & Readonly<{
13
+ "onUpdate:open"?: ((value: boolean) => any) | undefined;
14
+ }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
15
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
16
+ declare const _default: typeof __VLS_export;
17
+ export default _default;
18
+ type __VLS_WithSlots<T, S> = T & {
19
+ new (): {
20
+ $slots: S;
21
+ };
22
+ };
@@ -0,0 +1,27 @@
1
+ <template>
2
+ <div ref="root" class="relative inline-flex">
3
+ <div class="contents" @click="open = !open">
4
+ <slot />
5
+ </div>
6
+ <div v-if="open" class="cms-popover">
7
+ <slot name="content" />
8
+ </div>
9
+ </div>
10
+ </template>
11
+
12
+ <script setup>
13
+ import { onBeforeUnmount, ref, watch } from "#imports";
14
+ const open = defineModel("open", { type: Boolean, ...{ default: false } });
15
+ const root = ref(null);
16
+ function onOutside(event) {
17
+ if (root.value && !root.value.contains(event.target)) open.value = false;
18
+ }
19
+ watch(open, (value) => {
20
+ if (import.meta.server) return;
21
+ if (value) document.addEventListener("click", onOutside, true);
22
+ else document.removeEventListener("click", onOutside, true);
23
+ });
24
+ onBeforeUnmount(() => {
25
+ if (import.meta.client) document.removeEventListener("click", onOutside, true);
26
+ });
27
+ </script>
@@ -0,0 +1,22 @@
1
+ type __VLS_ModelProps = {
2
+ 'open'?: boolean;
3
+ };
4
+ declare var __VLS_1: {}, __VLS_3: {};
5
+ type __VLS_Slots = {} & {
6
+ default?: (props: typeof __VLS_1) => any;
7
+ } & {
8
+ content?: (props: typeof __VLS_3) => any;
9
+ };
10
+ declare const __VLS_base: import("vue").DefineComponent<__VLS_ModelProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
11
+ "update:open": (value: boolean) => any;
12
+ }, string, import("vue").PublicProps, Readonly<__VLS_ModelProps> & Readonly<{
13
+ "onUpdate:open"?: ((value: boolean) => any) | undefined;
14
+ }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
15
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
16
+ declare const _default: typeof __VLS_export;
17
+ export default _default;
18
+ type __VLS_WithSlots<T, S> = T & {
19
+ new (): {
20
+ $slots: S;
21
+ };
22
+ };
@@ -1,5 +1,5 @@
1
1
  <template>
2
- <USelectMenu
2
+ <CmsSelectMenu
3
3
  v-if="multiple"
4
4
  v-model="many"
5
5
  v-model:search-term="searchTerm"
@@ -11,7 +11,7 @@
11
11
  size="lg"
12
12
  class="w-full"
13
13
  />
14
- <USelectMenu
14
+ <CmsSelectMenu
15
15
  v-else
16
16
  v-model="single"
17
17
  v-model:search-term="searchTerm"
@@ -26,9 +26,10 @@
26
26
 
27
27
  <script setup>
28
28
  import { isTranslatableField } from "#nuxt-cms";
29
- import { computed, onMounted, ref, useI18n, useToast, watch } from "#imports";
29
+ import { computed, onMounted, ref, watch } from "#imports";
30
30
  import cmsConfig from "#cms-config";
31
31
  import { useCmsRuntime } from "../../composables/cms-runtime";
32
+ import { useCmsToast } from "../../composables/cms-toast";
32
33
  import { errorMessage } from "../../utils/ui";
33
34
  const props = defineProps({
34
35
  to: { type: String, required: true },
@@ -36,8 +37,7 @@ const props = defineProps({
36
37
  multiple: { type: Boolean, required: false }
37
38
  });
38
39
  const model = defineModel({ type: [String, Array, null], ...{ required: true } });
39
- const { t } = useI18n();
40
- const toast = useToast();
40
+ const toast = useCmsToast();
41
41
  const target = cmsConfig[props.to];
42
42
  const endpoint = `/api/cms/admin/${props.to}`;
43
43
  const fetched = ref([]);
@@ -54,7 +54,7 @@ async function fetchOptions() {
54
54
  fetched.value = page.items;
55
55
  } catch (err) {
56
56
  toast.add({
57
- title: t("cms.toast.loadFailed"),
57
+ title: "Loading failed",
58
58
  description: errorMessage(err),
59
59
  color: "error"
60
60
  });