@xleddyl/nuxt-cms 0.4.3 → 0.5.0

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 (471) hide show
  1. package/README.md +1 -1
  2. package/dist/module.json +1 -1
  3. package/dist/module.mjs +22 -7
  4. package/dist/runtime/app/components/cms/BlockOutline.vue +56 -67
  5. package/dist/runtime/app/components/cms/BlockPalette.vue +3 -1
  6. package/dist/runtime/app/components/cms/BlocksField.vue +155 -149
  7. package/dist/runtime/app/components/cms/BrandMark.d.vue.ts +3 -1
  8. package/dist/runtime/app/components/cms/BrandMark.vue +24 -25
  9. package/dist/runtime/app/components/cms/BrandMark.vue.d.ts +3 -1
  10. package/dist/runtime/app/components/cms/{Checkbox.d.vue.ts → ConfirmGroups.d.vue.ts} +4 -4
  11. package/dist/runtime/app/components/cms/ConfirmGroups.vue +22 -0
  12. package/dist/runtime/app/components/cms/{Checkbox.vue.d.ts → ConfirmGroups.vue.d.ts} +4 -4
  13. package/dist/runtime/app/components/cms/EntryDrawer.d.vue.ts +2 -2
  14. package/dist/runtime/app/components/cms/EntryDrawer.vue +62 -47
  15. package/dist/runtime/app/components/cms/EntryDrawer.vue.d.ts +2 -2
  16. package/dist/runtime/app/components/cms/EntryForm.vue +100 -95
  17. package/dist/runtime/app/components/cms/FieldInput.vue +56 -32
  18. package/dist/runtime/app/components/cms/ImportModal.d.vue.ts +2 -2
  19. package/dist/runtime/app/components/cms/ImportModal.vue +80 -79
  20. package/dist/runtime/app/components/cms/ImportModal.vue.d.ts +2 -2
  21. package/dist/runtime/app/components/cms/JsonField.vue +17 -8
  22. package/dist/runtime/app/components/cms/ListFilters.vue +54 -63
  23. package/dist/runtime/app/components/cms/LocaleSwitch.vue +21 -18
  24. package/dist/runtime/app/components/cms/MediaDetail.vue +110 -72
  25. package/dist/runtime/app/components/cms/MediaField.vue +37 -29
  26. package/dist/runtime/app/components/cms/MediaFolderPicker.d.vue.ts +1 -0
  27. package/dist/runtime/app/components/cms/MediaFolderPicker.vue +77 -49
  28. package/dist/runtime/app/components/cms/MediaFolderPicker.vue.d.ts +1 -0
  29. package/dist/runtime/app/components/cms/MediaGallery.vue +300 -323
  30. package/dist/runtime/app/components/cms/MediaThumb.vue +7 -2
  31. package/dist/runtime/app/components/cms/MediaUpload.vue +37 -70
  32. package/dist/runtime/app/components/cms/RelationField.vue +23 -71
  33. package/dist/runtime/app/components/cms/RichTextField.vue +23 -177
  34. package/dist/runtime/app/components/cms/SettingsAccount.vue +96 -104
  35. package/dist/runtime/app/components/cms/SettingsColumns.vue +7 -6
  36. package/dist/runtime/app/components/cms/SettingsEntry.d.vue.ts +10 -1
  37. package/dist/runtime/app/components/cms/SettingsEntry.vue +35 -52
  38. package/dist/runtime/app/components/cms/SettingsEntry.vue.d.ts +10 -1
  39. package/dist/runtime/app/components/cms/SettingsLayout.vue +7 -4
  40. package/dist/runtime/app/components/cms/SettingsModal.d.vue.ts +0 -4
  41. package/dist/runtime/app/components/cms/SettingsModal.vue +102 -151
  42. package/dist/runtime/app/components/cms/SettingsModal.vue.d.ts +0 -4
  43. package/dist/runtime/app/components/cms/SettingsUsers.d.vue.ts +8 -1
  44. package/dist/runtime/app/components/cms/SettingsUsers.vue +182 -189
  45. package/dist/runtime/app/components/cms/SettingsUsers.vue.d.ts +8 -1
  46. package/dist/runtime/app/components/cms/SlugField.vue +9 -6
  47. package/dist/runtime/app/components/cms/StatusBadge.vue +7 -6
  48. package/dist/runtime/app/components/cms/TranslatableField.vue +11 -6
  49. package/dist/runtime/app/components/cms/VisualEditor.vue +243 -282
  50. package/dist/runtime/app/components/cms/WelcomeModal.vue +49 -41
  51. package/dist/runtime/app/composables/cms-confirm.d.ts +0 -6
  52. package/dist/runtime/app/composables/cms-confirm.js +13 -13
  53. package/dist/runtime/app/composables/cms-media-uploader.d.ts +4 -0
  54. package/dist/runtime/app/composables/cms-media-uploader.js +12 -40
  55. package/dist/runtime/app/composables/cms-theme.d.ts +3 -9
  56. package/dist/runtime/app/composables/cms-theme.js +1 -19
  57. package/dist/runtime/app/composables/cms-toast.d.ts +3 -4
  58. package/dist/runtime/app/composables/cms-toast.js +6 -13
  59. package/dist/runtime/app/layouts/cms-admin.d.vue.ts +2 -2
  60. package/dist/runtime/app/layouts/cms-admin.vue +184 -113
  61. package/dist/runtime/app/layouts/cms-admin.vue.d.ts +2 -2
  62. package/dist/runtime/app/layouts/cms-editor.d.vue.ts +2 -2
  63. package/dist/runtime/app/layouts/cms-editor.vue +9 -4
  64. package/dist/runtime/app/layouts/cms-editor.vue.d.ts +2 -2
  65. package/dist/runtime/app/pages/admin-collection.vue +178 -143
  66. package/dist/runtime/app/pages/admin-content.vue +35 -30
  67. package/dist/runtime/app/pages/admin-entry.vue +14 -9
  68. package/dist/runtime/app/pages/admin-login.vue +57 -54
  69. package/dist/runtime/app/pages/admin-media.vue +6 -4
  70. package/dist/runtime/app/pages/admin-preview.vue +3 -2
  71. package/dist/runtime/app/preview/PreviewOverlay.vue +9 -7
  72. package/dist/runtime/app/utils/ui.d.ts +1 -3
  73. package/dist/runtime/app/utils/ui.js +4 -2
  74. package/dist/runtime/assets/editor.css +1 -0
  75. package/dist/runtime/assets/main.css +1 -1
  76. package/dist/runtime/assets/media.css +1 -0
  77. package/dist/runtime/assets/shell.css +1 -0
  78. package/package.json +9 -8
  79. package/dist/runtime/app/components/cms/Alert.d.vue.ts +0 -17
  80. package/dist/runtime/app/components/cms/Alert.vue +0 -13
  81. package/dist/runtime/app/components/cms/Alert.vue.d.ts +0 -17
  82. package/dist/runtime/app/components/cms/Button.d.vue.ts +0 -26
  83. package/dist/runtime/app/components/cms/Button.vue +0 -48
  84. package/dist/runtime/app/components/cms/Button.vue.d.ts +0 -26
  85. package/dist/runtime/app/components/cms/Checkbox.vue +0 -21
  86. package/dist/runtime/app/components/cms/ConfirmModal.d.vue.ts +0 -3
  87. package/dist/runtime/app/components/cms/ConfirmModal.vue +0 -46
  88. package/dist/runtime/app/components/cms/ConfirmModal.vue.d.ts +0 -3
  89. package/dist/runtime/app/components/cms/Drawer.d.vue.ts +0 -30
  90. package/dist/runtime/app/components/cms/Drawer.vue +0 -61
  91. package/dist/runtime/app/components/cms/Drawer.vue.d.ts +0 -30
  92. package/dist/runtime/app/components/cms/DropdownMenu.d.vue.ts +0 -26
  93. package/dist/runtime/app/components/cms/DropdownMenu.vue +0 -48
  94. package/dist/runtime/app/components/cms/DropdownMenu.vue.d.ts +0 -26
  95. package/dist/runtime/app/components/cms/EmptyState.d.vue.ts +0 -19
  96. package/dist/runtime/app/components/cms/EmptyState.vue +0 -21
  97. package/dist/runtime/app/components/cms/EmptyState.vue.d.ts +0 -19
  98. package/dist/runtime/app/components/cms/Form.d.vue.ts +0 -37
  99. package/dist/runtime/app/components/cms/Form.vue +0 -63
  100. package/dist/runtime/app/components/cms/Form.vue.d.ts +0 -37
  101. package/dist/runtime/app/components/cms/FormField.d.vue.ts +0 -22
  102. package/dist/runtime/app/components/cms/FormField.vue +0 -35
  103. package/dist/runtime/app/components/cms/FormField.vue.d.ts +0 -22
  104. package/dist/runtime/app/components/cms/Icon.d.vue.ts +0 -6
  105. package/dist/runtime/app/components/cms/Icon.vue +0 -23
  106. package/dist/runtime/app/components/cms/Icon.vue.d.ts +0 -6
  107. package/dist/runtime/app/components/cms/Input.d.vue.ts +0 -27
  108. package/dist/runtime/app/components/cms/Input.vue +0 -46
  109. package/dist/runtime/app/components/cms/Input.vue.d.ts +0 -27
  110. package/dist/runtime/app/components/cms/Modal.d.vue.ts +0 -31
  111. package/dist/runtime/app/components/cms/Modal.vue +0 -49
  112. package/dist/runtime/app/components/cms/Modal.vue.d.ts +0 -31
  113. package/dist/runtime/app/components/cms/PageHeader.d.vue.ts +0 -25
  114. package/dist/runtime/app/components/cms/PageHeader.vue +0 -36
  115. package/dist/runtime/app/components/cms/PageHeader.vue.d.ts +0 -25
  116. package/dist/runtime/app/components/cms/Pagination.d.vue.ts +0 -15
  117. package/dist/runtime/app/components/cms/Pagination.vue +0 -51
  118. package/dist/runtime/app/components/cms/Pagination.vue.d.ts +0 -15
  119. package/dist/runtime/app/components/cms/PasswordInput.d.vue.ts +0 -17
  120. package/dist/runtime/app/components/cms/PasswordInput.vue +0 -81
  121. package/dist/runtime/app/components/cms/PasswordInput.vue.d.ts +0 -17
  122. package/dist/runtime/app/components/cms/Popover.d.vue.ts +0 -22
  123. package/dist/runtime/app/components/cms/Popover.vue +0 -27
  124. package/dist/runtime/app/components/cms/Popover.vue.d.ts +0 -22
  125. package/dist/runtime/app/components/cms/Search.d.vue.ts +0 -7
  126. package/dist/runtime/app/components/cms/Search.vue +0 -347
  127. package/dist/runtime/app/components/cms/Search.vue.d.ts +0 -7
  128. package/dist/runtime/app/components/cms/SelectMenu.d.vue.ts +0 -25
  129. package/dist/runtime/app/components/cms/SelectMenu.vue +0 -152
  130. package/dist/runtime/app/components/cms/SelectMenu.vue.d.ts +0 -25
  131. package/dist/runtime/app/components/cms/Spinner.d.vue.ts +0 -3
  132. package/dist/runtime/app/components/cms/Spinner.vue +0 -5
  133. package/dist/runtime/app/components/cms/Spinner.vue.d.ts +0 -3
  134. package/dist/runtime/app/components/cms/Switch.d.vue.ts +0 -10
  135. package/dist/runtime/app/components/cms/Switch.vue +0 -14
  136. package/dist/runtime/app/components/cms/Switch.vue.d.ts +0 -10
  137. package/dist/runtime/app/components/cms/Table.d.vue.ts +0 -51
  138. package/dist/runtime/app/components/cms/Table.vue +0 -115
  139. package/dist/runtime/app/components/cms/Table.vue.d.ts +0 -51
  140. package/dist/runtime/app/components/cms/Textarea.d.vue.ts +0 -15
  141. package/dist/runtime/app/components/cms/Textarea.vue +0 -16
  142. package/dist/runtime/app/components/cms/Textarea.vue.d.ts +0 -15
  143. package/dist/runtime/app/components/cms/Toaster.d.vue.ts +0 -3
  144. package/dist/runtime/app/components/cms/Toaster.vue +0 -48
  145. package/dist/runtime/app/components/cms/Toaster.vue.d.ts +0 -3
  146. package/dist/runtime/app/composables/cms-overlay.d.ts +0 -4
  147. package/dist/runtime/app/composables/cms-overlay.js +0 -23
  148. package/dist/runtime/assets/svg/academic-cap.svg +0 -3
  149. package/dist/runtime/assets/svg/adjustments-horizontal.svg +0 -3
  150. package/dist/runtime/assets/svg/adjustments-vertical.svg +0 -3
  151. package/dist/runtime/assets/svg/archive-box-arrow-down.svg +0 -3
  152. package/dist/runtime/assets/svg/archive-box-x-mark.svg +0 -3
  153. package/dist/runtime/assets/svg/archive-box.svg +0 -3
  154. package/dist/runtime/assets/svg/arrow-down-circle.svg +0 -3
  155. package/dist/runtime/assets/svg/arrow-down-left.svg +0 -3
  156. package/dist/runtime/assets/svg/arrow-down-on-square-stack.svg +0 -3
  157. package/dist/runtime/assets/svg/arrow-down-on-square.svg +0 -3
  158. package/dist/runtime/assets/svg/arrow-down-right.svg +0 -3
  159. package/dist/runtime/assets/svg/arrow-down-tray.svg +0 -3
  160. package/dist/runtime/assets/svg/arrow-down.svg +0 -3
  161. package/dist/runtime/assets/svg/arrow-left-circle.svg +0 -3
  162. package/dist/runtime/assets/svg/arrow-left-end-on-rectangle.svg +0 -3
  163. package/dist/runtime/assets/svg/arrow-left-on-rectangle.svg +0 -3
  164. package/dist/runtime/assets/svg/arrow-left-start-on-rectangle.svg +0 -3
  165. package/dist/runtime/assets/svg/arrow-left.svg +0 -3
  166. package/dist/runtime/assets/svg/arrow-long-down.svg +0 -3
  167. package/dist/runtime/assets/svg/arrow-long-left.svg +0 -3
  168. package/dist/runtime/assets/svg/arrow-long-right.svg +0 -3
  169. package/dist/runtime/assets/svg/arrow-long-up.svg +0 -3
  170. package/dist/runtime/assets/svg/arrow-path-rounded-square.svg +0 -3
  171. package/dist/runtime/assets/svg/arrow-path.svg +0 -3
  172. package/dist/runtime/assets/svg/arrow-right-circle.svg +0 -3
  173. package/dist/runtime/assets/svg/arrow-right-end-on-rectangle.svg +0 -3
  174. package/dist/runtime/assets/svg/arrow-right-on-rectangle.svg +0 -3
  175. package/dist/runtime/assets/svg/arrow-right-start-on-rectangle.svg +0 -3
  176. package/dist/runtime/assets/svg/arrow-right.svg +0 -3
  177. package/dist/runtime/assets/svg/arrow-small-down.svg +0 -3
  178. package/dist/runtime/assets/svg/arrow-small-left.svg +0 -3
  179. package/dist/runtime/assets/svg/arrow-small-right.svg +0 -3
  180. package/dist/runtime/assets/svg/arrow-small-up.svg +0 -3
  181. package/dist/runtime/assets/svg/arrow-top-right-on-square.svg +0 -3
  182. package/dist/runtime/assets/svg/arrow-trending-down.svg +0 -3
  183. package/dist/runtime/assets/svg/arrow-trending-up.svg +0 -3
  184. package/dist/runtime/assets/svg/arrow-turn-down-left.svg +0 -3
  185. package/dist/runtime/assets/svg/arrow-turn-down-right.svg +0 -3
  186. package/dist/runtime/assets/svg/arrow-turn-left-down.svg +0 -3
  187. package/dist/runtime/assets/svg/arrow-turn-left-up.svg +0 -3
  188. package/dist/runtime/assets/svg/arrow-turn-right-down.svg +0 -3
  189. package/dist/runtime/assets/svg/arrow-turn-right-up.svg +0 -3
  190. package/dist/runtime/assets/svg/arrow-turn-up-left.svg +0 -3
  191. package/dist/runtime/assets/svg/arrow-turn-up-right.svg +0 -3
  192. package/dist/runtime/assets/svg/arrow-up-circle.svg +0 -3
  193. package/dist/runtime/assets/svg/arrow-up-left.svg +0 -3
  194. package/dist/runtime/assets/svg/arrow-up-on-square-stack.svg +0 -3
  195. package/dist/runtime/assets/svg/arrow-up-on-square.svg +0 -3
  196. package/dist/runtime/assets/svg/arrow-up-right.svg +0 -3
  197. package/dist/runtime/assets/svg/arrow-up-tray.svg +0 -3
  198. package/dist/runtime/assets/svg/arrow-up.svg +0 -3
  199. package/dist/runtime/assets/svg/arrow-uturn-down.svg +0 -3
  200. package/dist/runtime/assets/svg/arrow-uturn-left.svg +0 -3
  201. package/dist/runtime/assets/svg/arrow-uturn-right.svg +0 -3
  202. package/dist/runtime/assets/svg/arrow-uturn-up.svg +0 -3
  203. package/dist/runtime/assets/svg/arrows-pointing-in.svg +0 -3
  204. package/dist/runtime/assets/svg/arrows-pointing-out.svg +0 -3
  205. package/dist/runtime/assets/svg/arrows-right-left.svg +0 -3
  206. package/dist/runtime/assets/svg/arrows-up-down.svg +0 -3
  207. package/dist/runtime/assets/svg/at-symbol.svg +0 -3
  208. package/dist/runtime/assets/svg/backspace.svg +0 -3
  209. package/dist/runtime/assets/svg/backward.svg +0 -3
  210. package/dist/runtime/assets/svg/banknotes.svg +0 -3
  211. package/dist/runtime/assets/svg/bars-2.svg +0 -3
  212. package/dist/runtime/assets/svg/bars-3-bottom-left.svg +0 -3
  213. package/dist/runtime/assets/svg/bars-3-bottom-right.svg +0 -3
  214. package/dist/runtime/assets/svg/bars-3-center-left.svg +0 -3
  215. package/dist/runtime/assets/svg/bars-3.svg +0 -3
  216. package/dist/runtime/assets/svg/bars-4.svg +0 -3
  217. package/dist/runtime/assets/svg/bars-arrow-down.svg +0 -3
  218. package/dist/runtime/assets/svg/bars-arrow-up.svg +0 -3
  219. package/dist/runtime/assets/svg/battery-0.svg +0 -3
  220. package/dist/runtime/assets/svg/battery-100.svg +0 -3
  221. package/dist/runtime/assets/svg/battery-50.svg +0 -3
  222. package/dist/runtime/assets/svg/beaker.svg +0 -3
  223. package/dist/runtime/assets/svg/bell-alert.svg +0 -3
  224. package/dist/runtime/assets/svg/bell-slash.svg +0 -3
  225. package/dist/runtime/assets/svg/bell-snooze.svg +0 -3
  226. package/dist/runtime/assets/svg/bell.svg +0 -3
  227. package/dist/runtime/assets/svg/bold.svg +0 -3
  228. package/dist/runtime/assets/svg/bolt-slash.svg +0 -3
  229. package/dist/runtime/assets/svg/bolt.svg +0 -3
  230. package/dist/runtime/assets/svg/book-open.svg +0 -3
  231. package/dist/runtime/assets/svg/bookmark-slash.svg +0 -3
  232. package/dist/runtime/assets/svg/bookmark-square.svg +0 -3
  233. package/dist/runtime/assets/svg/bookmark.svg +0 -3
  234. package/dist/runtime/assets/svg/briefcase.svg +0 -3
  235. package/dist/runtime/assets/svg/bug-ant.svg +0 -3
  236. package/dist/runtime/assets/svg/building-library.svg +0 -3
  237. package/dist/runtime/assets/svg/building-office-2.svg +0 -3
  238. package/dist/runtime/assets/svg/building-office.svg +0 -3
  239. package/dist/runtime/assets/svg/building-storefront.svg +0 -3
  240. package/dist/runtime/assets/svg/cake.svg +0 -3
  241. package/dist/runtime/assets/svg/calculator.svg +0 -3
  242. package/dist/runtime/assets/svg/calendar-date-range.svg +0 -3
  243. package/dist/runtime/assets/svg/calendar-days.svg +0 -3
  244. package/dist/runtime/assets/svg/calendar.svg +0 -3
  245. package/dist/runtime/assets/svg/camera.svg +0 -4
  246. package/dist/runtime/assets/svg/chart-bar-square.svg +0 -3
  247. package/dist/runtime/assets/svg/chart-bar.svg +0 -3
  248. package/dist/runtime/assets/svg/chart-pie.svg +0 -4
  249. package/dist/runtime/assets/svg/chat-bubble-bottom-center-text.svg +0 -3
  250. package/dist/runtime/assets/svg/chat-bubble-bottom-center.svg +0 -3
  251. package/dist/runtime/assets/svg/chat-bubble-left-ellipsis.svg +0 -3
  252. package/dist/runtime/assets/svg/chat-bubble-left-right.svg +0 -3
  253. package/dist/runtime/assets/svg/chat-bubble-left.svg +0 -3
  254. package/dist/runtime/assets/svg/chat-bubble-oval-left-ellipsis.svg +0 -3
  255. package/dist/runtime/assets/svg/chat-bubble-oval-left.svg +0 -3
  256. package/dist/runtime/assets/svg/check-badge.svg +0 -3
  257. package/dist/runtime/assets/svg/check-circle.svg +0 -3
  258. package/dist/runtime/assets/svg/check.svg +0 -3
  259. package/dist/runtime/assets/svg/chevron-double-down.svg +0 -3
  260. package/dist/runtime/assets/svg/chevron-double-left.svg +0 -3
  261. package/dist/runtime/assets/svg/chevron-double-right.svg +0 -3
  262. package/dist/runtime/assets/svg/chevron-double-up.svg +0 -4
  263. package/dist/runtime/assets/svg/chevron-down.svg +0 -3
  264. package/dist/runtime/assets/svg/chevron-left.svg +0 -3
  265. package/dist/runtime/assets/svg/chevron-right.svg +0 -3
  266. package/dist/runtime/assets/svg/chevron-up-down.svg +0 -3
  267. package/dist/runtime/assets/svg/chevron-up.svg +0 -3
  268. package/dist/runtime/assets/svg/circle-stack.svg +0 -3
  269. package/dist/runtime/assets/svg/clipboard-document-check.svg +0 -3
  270. package/dist/runtime/assets/svg/clipboard-document-list.svg +0 -3
  271. package/dist/runtime/assets/svg/clipboard-document.svg +0 -3
  272. package/dist/runtime/assets/svg/clipboard.svg +0 -3
  273. package/dist/runtime/assets/svg/clock.svg +0 -3
  274. package/dist/runtime/assets/svg/cloud-arrow-down.svg +0 -3
  275. package/dist/runtime/assets/svg/cloud-arrow-up.svg +0 -3
  276. package/dist/runtime/assets/svg/cloud.svg +0 -3
  277. package/dist/runtime/assets/svg/code-bracket-square.svg +0 -3
  278. package/dist/runtime/assets/svg/code-bracket.svg +0 -3
  279. package/dist/runtime/assets/svg/cog-6-tooth.svg +0 -4
  280. package/dist/runtime/assets/svg/cog-8-tooth.svg +0 -4
  281. package/dist/runtime/assets/svg/cog.svg +0 -3
  282. package/dist/runtime/assets/svg/command-line.svg +0 -3
  283. package/dist/runtime/assets/svg/computer-desktop.svg +0 -3
  284. package/dist/runtime/assets/svg/cpu-chip.svg +0 -3
  285. package/dist/runtime/assets/svg/credit-card.svg +0 -3
  286. package/dist/runtime/assets/svg/cube-transparent.svg +0 -3
  287. package/dist/runtime/assets/svg/cube.svg +0 -3
  288. package/dist/runtime/assets/svg/currency-bangladeshi.svg +0 -3
  289. package/dist/runtime/assets/svg/currency-dollar.svg +0 -3
  290. package/dist/runtime/assets/svg/currency-euro.svg +0 -3
  291. package/dist/runtime/assets/svg/currency-pound.svg +0 -3
  292. package/dist/runtime/assets/svg/currency-rupee.svg +0 -3
  293. package/dist/runtime/assets/svg/currency-yen.svg +0 -3
  294. package/dist/runtime/assets/svg/cursor-arrow-rays.svg +0 -3
  295. package/dist/runtime/assets/svg/cursor-arrow-ripple.svg +0 -3
  296. package/dist/runtime/assets/svg/device-phone-mobile.svg +0 -3
  297. package/dist/runtime/assets/svg/device-tablet.svg +0 -3
  298. package/dist/runtime/assets/svg/divide.svg +0 -3
  299. package/dist/runtime/assets/svg/document-arrow-down.svg +0 -3
  300. package/dist/runtime/assets/svg/document-arrow-up.svg +0 -3
  301. package/dist/runtime/assets/svg/document-chart-bar.svg +0 -3
  302. package/dist/runtime/assets/svg/document-check.svg +0 -3
  303. package/dist/runtime/assets/svg/document-currency-bangladeshi.svg +0 -3
  304. package/dist/runtime/assets/svg/document-currency-dollar.svg +0 -3
  305. package/dist/runtime/assets/svg/document-currency-euro.svg +0 -3
  306. package/dist/runtime/assets/svg/document-currency-pound.svg +0 -3
  307. package/dist/runtime/assets/svg/document-currency-rupee.svg +0 -3
  308. package/dist/runtime/assets/svg/document-currency-yen.svg +0 -3
  309. package/dist/runtime/assets/svg/document-duplicate.svg +0 -3
  310. package/dist/runtime/assets/svg/document-magnifying-glass.svg +0 -3
  311. package/dist/runtime/assets/svg/document-minus.svg +0 -3
  312. package/dist/runtime/assets/svg/document-plus.svg +0 -3
  313. package/dist/runtime/assets/svg/document-text.svg +0 -3
  314. package/dist/runtime/assets/svg/document.svg +0 -3
  315. package/dist/runtime/assets/svg/ellipsis-horizontal-circle.svg +0 -3
  316. package/dist/runtime/assets/svg/ellipsis-horizontal.svg +0 -3
  317. package/dist/runtime/assets/svg/ellipsis-vertical.svg +0 -3
  318. package/dist/runtime/assets/svg/envelope-open.svg +0 -3
  319. package/dist/runtime/assets/svg/envelope.svg +0 -3
  320. package/dist/runtime/assets/svg/equals.svg +0 -3
  321. package/dist/runtime/assets/svg/exclamation-circle.svg +0 -3
  322. package/dist/runtime/assets/svg/exclamation-triangle.svg +0 -3
  323. package/dist/runtime/assets/svg/eye-dropper.svg +0 -3
  324. package/dist/runtime/assets/svg/eye-slash.svg +0 -3
  325. package/dist/runtime/assets/svg/eye.svg +0 -4
  326. package/dist/runtime/assets/svg/face-frown.svg +0 -3
  327. package/dist/runtime/assets/svg/face-smile.svg +0 -3
  328. package/dist/runtime/assets/svg/film.svg +0 -3
  329. package/dist/runtime/assets/svg/finger-print.svg +0 -3
  330. package/dist/runtime/assets/svg/fire.svg +0 -4
  331. package/dist/runtime/assets/svg/flag.svg +0 -3
  332. package/dist/runtime/assets/svg/folder-arrow-down.svg +0 -3
  333. package/dist/runtime/assets/svg/folder-minus.svg +0 -3
  334. package/dist/runtime/assets/svg/folder-open.svg +0 -3
  335. package/dist/runtime/assets/svg/folder-plus.svg +0 -3
  336. package/dist/runtime/assets/svg/folder.svg +0 -3
  337. package/dist/runtime/assets/svg/forward.svg +0 -3
  338. package/dist/runtime/assets/svg/funnel.svg +0 -3
  339. package/dist/runtime/assets/svg/gif.svg +0 -3
  340. package/dist/runtime/assets/svg/gift-top.svg +0 -3
  341. package/dist/runtime/assets/svg/gift.svg +0 -3
  342. package/dist/runtime/assets/svg/globe-alt.svg +0 -3
  343. package/dist/runtime/assets/svg/globe-americas.svg +0 -3
  344. package/dist/runtime/assets/svg/globe-asia-australia.svg +0 -3
  345. package/dist/runtime/assets/svg/globe-europe-africa.svg +0 -3
  346. package/dist/runtime/assets/svg/h1.svg +0 -3
  347. package/dist/runtime/assets/svg/h2.svg +0 -3
  348. package/dist/runtime/assets/svg/h3.svg +0 -3
  349. package/dist/runtime/assets/svg/hand-raised.svg +0 -3
  350. package/dist/runtime/assets/svg/hand-thumb-down.svg +0 -3
  351. package/dist/runtime/assets/svg/hand-thumb-up.svg +0 -3
  352. package/dist/runtime/assets/svg/hashtag.svg +0 -3
  353. package/dist/runtime/assets/svg/heart.svg +0 -3
  354. package/dist/runtime/assets/svg/home-modern.svg +0 -3
  355. package/dist/runtime/assets/svg/home.svg +0 -3
  356. package/dist/runtime/assets/svg/identification.svg +0 -3
  357. package/dist/runtime/assets/svg/inbox-arrow-down.svg +0 -3
  358. package/dist/runtime/assets/svg/inbox-stack.svg +0 -3
  359. package/dist/runtime/assets/svg/inbox.svg +0 -3
  360. package/dist/runtime/assets/svg/information-circle.svg +0 -3
  361. package/dist/runtime/assets/svg/italic.svg +0 -3
  362. package/dist/runtime/assets/svg/key.svg +0 -3
  363. package/dist/runtime/assets/svg/language.svg +0 -3
  364. package/dist/runtime/assets/svg/lifebuoy.svg +0 -3
  365. package/dist/runtime/assets/svg/light-bulb.svg +0 -3
  366. package/dist/runtime/assets/svg/link-slash.svg +0 -3
  367. package/dist/runtime/assets/svg/link.svg +0 -3
  368. package/dist/runtime/assets/svg/list-bullet.svg +0 -3
  369. package/dist/runtime/assets/svg/lock-closed.svg +0 -3
  370. package/dist/runtime/assets/svg/lock-open.svg +0 -3
  371. package/dist/runtime/assets/svg/magnifying-glass-circle.svg +0 -3
  372. package/dist/runtime/assets/svg/magnifying-glass-minus.svg +0 -3
  373. package/dist/runtime/assets/svg/magnifying-glass-plus.svg +0 -3
  374. package/dist/runtime/assets/svg/magnifying-glass.svg +0 -3
  375. package/dist/runtime/assets/svg/map-pin.svg +0 -4
  376. package/dist/runtime/assets/svg/map.svg +0 -3
  377. package/dist/runtime/assets/svg/megaphone.svg +0 -3
  378. package/dist/runtime/assets/svg/microphone.svg +0 -3
  379. package/dist/runtime/assets/svg/minus-circle.svg +0 -3
  380. package/dist/runtime/assets/svg/minus-small.svg +0 -3
  381. package/dist/runtime/assets/svg/minus.svg +0 -3
  382. package/dist/runtime/assets/svg/moon.svg +0 -3
  383. package/dist/runtime/assets/svg/musical-note.svg +0 -3
  384. package/dist/runtime/assets/svg/newspaper.svg +0 -3
  385. package/dist/runtime/assets/svg/no-symbol.svg +0 -3
  386. package/dist/runtime/assets/svg/numbered-list.svg +0 -3
  387. package/dist/runtime/assets/svg/paint-brush.svg +0 -3
  388. package/dist/runtime/assets/svg/paper-airplane.svg +0 -3
  389. package/dist/runtime/assets/svg/paper-clip.svg +0 -3
  390. package/dist/runtime/assets/svg/pause-circle.svg +0 -3
  391. package/dist/runtime/assets/svg/pause.svg +0 -3
  392. package/dist/runtime/assets/svg/pencil-square.svg +0 -3
  393. package/dist/runtime/assets/svg/pencil.svg +0 -3
  394. package/dist/runtime/assets/svg/percent-badge.svg +0 -3
  395. package/dist/runtime/assets/svg/phone-arrow-down-left.svg +0 -3
  396. package/dist/runtime/assets/svg/phone-arrow-up-right.svg +0 -3
  397. package/dist/runtime/assets/svg/phone-x-mark.svg +0 -3
  398. package/dist/runtime/assets/svg/phone.svg +0 -3
  399. package/dist/runtime/assets/svg/photo.svg +0 -3
  400. package/dist/runtime/assets/svg/play-circle.svg +0 -4
  401. package/dist/runtime/assets/svg/play-pause.svg +0 -3
  402. package/dist/runtime/assets/svg/play.svg +0 -3
  403. package/dist/runtime/assets/svg/plus-circle.svg +0 -3
  404. package/dist/runtime/assets/svg/plus-small.svg +0 -3
  405. package/dist/runtime/assets/svg/plus.svg +0 -3
  406. package/dist/runtime/assets/svg/power.svg +0 -3
  407. package/dist/runtime/assets/svg/presentation-chart-bar.svg +0 -3
  408. package/dist/runtime/assets/svg/presentation-chart-line.svg +0 -3
  409. package/dist/runtime/assets/svg/printer.svg +0 -3
  410. package/dist/runtime/assets/svg/puzzle-piece.svg +0 -3
  411. package/dist/runtime/assets/svg/qr-code.svg +0 -4
  412. package/dist/runtime/assets/svg/question-mark-circle.svg +0 -3
  413. package/dist/runtime/assets/svg/queue-list.svg +0 -3
  414. package/dist/runtime/assets/svg/radio.svg +0 -3
  415. package/dist/runtime/assets/svg/receipt-percent.svg +0 -3
  416. package/dist/runtime/assets/svg/receipt-refund.svg +0 -3
  417. package/dist/runtime/assets/svg/rectangle-group.svg +0 -3
  418. package/dist/runtime/assets/svg/rectangle-stack.svg +0 -3
  419. package/dist/runtime/assets/svg/rocket-launch.svg +0 -3
  420. package/dist/runtime/assets/svg/rss.svg +0 -3
  421. package/dist/runtime/assets/svg/scale.svg +0 -3
  422. package/dist/runtime/assets/svg/scissors.svg +0 -3
  423. package/dist/runtime/assets/svg/server-stack.svg +0 -3
  424. package/dist/runtime/assets/svg/server.svg +0 -3
  425. package/dist/runtime/assets/svg/share.svg +0 -3
  426. package/dist/runtime/assets/svg/shield-check.svg +0 -3
  427. package/dist/runtime/assets/svg/shield-exclamation.svg +0 -3
  428. package/dist/runtime/assets/svg/shopping-bag.svg +0 -3
  429. package/dist/runtime/assets/svg/shopping-cart.svg +0 -3
  430. package/dist/runtime/assets/svg/signal-slash.svg +0 -3
  431. package/dist/runtime/assets/svg/signal.svg +0 -3
  432. package/dist/runtime/assets/svg/slash.svg +0 -3
  433. package/dist/runtime/assets/svg/sparkles.svg +0 -3
  434. package/dist/runtime/assets/svg/speaker-wave.svg +0 -3
  435. package/dist/runtime/assets/svg/speaker-x-mark.svg +0 -3
  436. package/dist/runtime/assets/svg/square-2-stack.svg +0 -3
  437. package/dist/runtime/assets/svg/square-3-stack-3d.svg +0 -3
  438. package/dist/runtime/assets/svg/squares-2x2.svg +0 -3
  439. package/dist/runtime/assets/svg/squares-plus.svg +0 -3
  440. package/dist/runtime/assets/svg/star.svg +0 -3
  441. package/dist/runtime/assets/svg/stop-circle.svg +0 -4
  442. package/dist/runtime/assets/svg/stop.svg +0 -3
  443. package/dist/runtime/assets/svg/strikethrough.svg +0 -3
  444. package/dist/runtime/assets/svg/sun.svg +0 -3
  445. package/dist/runtime/assets/svg/swatch.svg +0 -3
  446. package/dist/runtime/assets/svg/table-cells.svg +0 -3
  447. package/dist/runtime/assets/svg/tag.svg +0 -4
  448. package/dist/runtime/assets/svg/ticket.svg +0 -3
  449. package/dist/runtime/assets/svg/trash.svg +0 -3
  450. package/dist/runtime/assets/svg/trophy.svg +0 -3
  451. package/dist/runtime/assets/svg/truck.svg +0 -3
  452. package/dist/runtime/assets/svg/tv.svg +0 -3
  453. package/dist/runtime/assets/svg/underline.svg +0 -3
  454. package/dist/runtime/assets/svg/user-circle.svg +0 -3
  455. package/dist/runtime/assets/svg/user-group.svg +0 -3
  456. package/dist/runtime/assets/svg/user-minus.svg +0 -3
  457. package/dist/runtime/assets/svg/user-plus.svg +0 -3
  458. package/dist/runtime/assets/svg/user.svg +0 -3
  459. package/dist/runtime/assets/svg/users.svg +0 -3
  460. package/dist/runtime/assets/svg/variable.svg +0 -3
  461. package/dist/runtime/assets/svg/video-camera-slash.svg +0 -3
  462. package/dist/runtime/assets/svg/video-camera.svg +0 -3
  463. package/dist/runtime/assets/svg/view-columns.svg +0 -3
  464. package/dist/runtime/assets/svg/viewfinder-circle.svg +0 -3
  465. package/dist/runtime/assets/svg/wallet.svg +0 -3
  466. package/dist/runtime/assets/svg/wifi.svg +0 -3
  467. package/dist/runtime/assets/svg/window.svg +0 -3
  468. package/dist/runtime/assets/svg/wrench-screwdriver.svg +0 -3
  469. package/dist/runtime/assets/svg/wrench.svg +0 -4
  470. package/dist/runtime/assets/svg/x-circle.svg +0 -3
  471. package/dist/runtime/assets/svg/x-mark.svg +0 -3
@@ -1,170 +1,177 @@
1
1
  <template>
2
- <div class="cms-settings-entry">
3
- <div class="cms-settings-entry-header">
4
- <div class="cms-settings-heading">
5
- <h2 class="cms-title cms-title-sm">Users</h2>
6
- <p class="cms-settings-hint">
7
- Users can do everything in the panel, except manage users.
8
- </p>
9
- </div>
10
- <CmsButton
11
- v-if="!creating"
12
- label="Add user"
13
- icon="user-plus"
14
- size="sm"
15
- @click="startCreate"
2
+ <KAlert
3
+ v-if="created"
4
+ tone="accent"
5
+ :icon="cmsIcon('key')"
6
+ :title="created.title"
7
+ class="cms-credentials-alert"
8
+ >
9
+ <p>Share these credentials with the user. The password does not show again.</p>
10
+ <KDescriptionList
11
+ :items="[
12
+ { key: 'email', label: 'Email', value: created.email },
13
+ { key: 'password', label: 'Password', value: created.password }
14
+ ]"
15
+ :divided="false"
16
+ class="cms-credentials-items"
17
+ >
18
+ <template #value-password="{ item }">
19
+ <span class="k-mono">{{ item.value }}</span>
20
+ </template>
21
+ </KDescriptionList>
22
+ <template #actions>
23
+ <KCopyButton
24
+ :value="`Email: ${created.email}
25
+ Password: ${created.password}`"
26
+ label="Copy credentials"
27
+ copied-label="Copied"
28
+ show-label
29
+ variant="soft"
30
+ tone="accent"
16
31
  />
17
- </div>
32
+ <KButton label="Done" size="sm" @click="created = null" />
33
+ </template>
34
+ </KAlert>
18
35
 
19
- <div v-if="created" class="cms-credentials">
20
- <div class="cms-settings-heading">
21
- <p class="cms-settings-label">{{ created.title }}</p>
22
- <p class="cms-settings-hint">
23
- Share these credentials with the user. The password does not show again.
24
- </p>
25
- </div>
26
- <dl class="cms-credentials-list">
27
- <dt>Email</dt>
28
- <dd>{{ created.email }}</dd>
29
- <dt>Password</dt>
30
- <dd class="cms-mono">{{ created.password }}</dd>
31
- </dl>
32
- <div class="cms-actions is-end">
33
- <CmsButton
34
- :label="copied ? 'Copied' : 'Copy credentials'"
35
- :icon="copied ? 'clipboard-document-check' : 'clipboard-document'"
36
- variant="soft"
36
+ <KCard v-if="creating" variant="subtle" title="New user" class="cms-user-create">
37
+ <KForm :form="draft">
38
+ <KGrid :columns="2">
39
+ <KFormField label="Email" name="email" required>
40
+ <KInput
41
+ v-model="draft.values.email"
42
+ type="email"
43
+ :icon="cmsIcon('envelope')"
44
+ placeholder="name@example.com"
45
+ autocomplete="off"
46
+ />
47
+ </KFormField>
48
+ <KFormField label="Name" name="name">
49
+ <KInput v-model="draft.values.name" placeholder="Optional" autocomplete="off" />
50
+ </KFormField>
51
+ </KGrid>
52
+ <KFormField label="Password" name="password" required>
53
+ <KPasswordInput
54
+ v-model="draft.values.password"
55
+ icon="key"
56
+ autocomplete="new-password"
57
+ :generate="generatePassword"
58
+ copy
59
+ />
60
+ </KFormField>
61
+ <KStack direction="row" justify="end" gap="sm">
62
+ <KButton label="Cancel" variant="ghost" tone="neutral" size="sm" @click="cancel" />
63
+ <KButton
64
+ type="submit"
65
+ label="Create user"
37
66
  size="sm"
38
- @click="copyCredentials"
67
+ :disabled="
68
+ !draft.values.email || (draft.values.password ?? '').length < MIN_PASSWORD_LENGTH
69
+ "
39
70
  />
40
- <CmsButton label="Done" size="sm" @click="created = null" />
41
- </div>
42
- </div>
71
+ </KStack>
72
+ </KForm>
73
+ </KCard>
74
+
75
+ <KSpinner v-if="loading" />
43
76
 
44
- <div v-if="creating" class="cms-credentials">
45
- <p class="cms-settings-label">New user</p>
46
- <CmsForm :state="draft" @submit="create">
47
- <CmsAlert v-if="formError" color="error" :title="formError" />
48
- <div class="cms-form-row" style="--cms-row-cols: 2">
49
- <CmsFormField label="Email" name="email" required>
50
- <CmsInput
51
- v-model="draft.email"
52
- type="email"
53
- icon="envelope"
54
- placeholder="name@example.com"
55
- autocomplete="off"
56
- />
57
- </CmsFormField>
58
- <CmsFormField label="Name" name="name">
59
- <CmsInput v-model="draft.name" placeholder="Optional" autocomplete="off" />
60
- </CmsFormField>
77
+ <ul v-else-if="users.length" class="cms-user-list">
78
+ <li v-for="account in users" :key="account.id" class="cms-user-row">
79
+ <div class="cms-user-main">
80
+ <KAvatar :name="account.name || account.email" size="sm" decorative />
81
+ <div class="cms-user-text">
82
+ <span class="cms-user-name">{{ account.name || account.email }}</span>
83
+ <span class="cms-user-meta">
84
+ {{ account.name ? `${account.email} \xB7 ` : "" }}{{ lastLogin(account) }}
85
+ </span>
61
86
  </div>
62
- <CmsFormField label="Password" name="password" required>
63
- <CmsPasswordInput v-model="draft.password" generate copy />
64
- </CmsFormField>
65
- <div class="cms-actions is-end">
66
- <CmsButton
87
+ <KStack direction="row" gap="none">
88
+ <KButton
89
+ :icon="cmsIcon('key')"
90
+ variant="ghost"
91
+ tone="neutral"
92
+ size="sm"
93
+ title="Set a new password"
94
+ aria-label="Set a new password"
95
+ @click="startReset(account)"
96
+ />
97
+ <KButton
98
+ :icon="cmsIcon('trash')"
99
+ variant="ghost"
100
+ tone="danger"
101
+ size="sm"
102
+ title="Delete user"
103
+ aria-label="Delete user"
104
+ @click="remove(account)"
105
+ />
106
+ </KStack>
107
+ </div>
108
+ <KForm v-if="resetting === account.id" :form="reset" class="cms-user-reset">
109
+ <KFormField label="New password" name="password">
110
+ <KPasswordInput
111
+ v-model="reset.values.password"
112
+ icon="key"
113
+ autocomplete="new-password"
114
+ :generate="generatePassword"
115
+ copy
116
+ />
117
+ </KFormField>
118
+ <KStack direction="row" justify="end" gap="sm">
119
+ <KButton
67
120
  label="Cancel"
68
121
  variant="ghost"
69
- color="neutral"
122
+ tone="neutral"
70
123
  size="sm"
71
- @click="cancel"
124
+ @click="resetting = null"
72
125
  />
73
- <CmsButton
126
+ <KButton
74
127
  type="submit"
75
- label="Create user"
128
+ label="Set password"
76
129
  size="sm"
77
- :loading="busy"
78
- :disabled="!draft.email || draft.password.length < MIN_PASSWORD_LENGTH"
130
+ :disabled="(reset.values.password ?? '').length < MIN_PASSWORD_LENGTH"
79
131
  />
80
- </div>
81
- </CmsForm>
82
- </div>
83
-
84
- <CmsSpinner v-if="loading" />
132
+ </KStack>
133
+ </KForm>
134
+ </li>
135
+ </ul>
85
136
 
86
- <ul v-else-if="users.length" class="cms-settings-list">
87
- <li v-for="account in users" :key="account.id" class="cms-user-row">
88
- <div class="cms-user-main">
89
- <span class="cms-avatar">{{ initialOf(account.name, account.email) }}</span>
90
- <div class="cms-account-text">
91
- <span class="cms-account-name">{{ account.name || account.email }}</span>
92
- <span class="cms-account-email">
93
- {{ account.name ? `${account.email} \xB7 ` : "" }}{{ lastLogin(account) }}
94
- </span>
95
- </div>
96
- <div class="cms-user-actions">
97
- <CmsButton
98
- icon="key"
99
- variant="ghost"
100
- color="neutral"
101
- size="sm"
102
- title="Set a new password"
103
- aria-label="Set a new password"
104
- @click="startReset(account)"
105
- />
106
- <CmsButton
107
- icon="trash"
108
- variant="ghost"
109
- color="error"
110
- size="sm"
111
- title="Delete user"
112
- aria-label="Delete user"
113
- @click="remove(account)"
114
- />
115
- </div>
116
- </div>
117
- <CmsForm
118
- v-if="resetting === account.id"
119
- :state="reset"
120
- class="cms-user-reset"
121
- @submit="saveReset(account)"
122
- >
123
- <CmsFormField label="New password" name="password">
124
- <CmsPasswordInput v-model="reset.password" generate copy />
125
- </CmsFormField>
126
- <div class="cms-actions is-end">
127
- <CmsButton
128
- label="Cancel"
129
- variant="ghost"
130
- color="neutral"
131
- size="sm"
132
- @click="resetting = null"
133
- />
134
- <CmsButton
135
- type="submit"
136
- label="Set password"
137
- size="sm"
138
- :loading="busy"
139
- :disabled="reset.password.length < MIN_PASSWORD_LENGTH"
140
- />
141
- </div>
142
- </CmsForm>
143
- </li>
144
- </ul>
145
-
146
- <CmsEmptyState
147
- v-else-if="!creating"
148
- icon="users"
149
- title="No users yet"
150
- body="Add a user to give someone access to the panel."
151
- />
152
- </div>
137
+ <KEmptyState
138
+ v-else-if="!creating"
139
+ :icon="cmsIcon('users')"
140
+ title="No users yet"
141
+ description="Add a user to give someone access to the panel."
142
+ />
153
143
  </template>
154
144
 
155
145
  <script setup>
156
146
  import { MIN_PASSWORD_LENGTH } from "#nuxt-cms";
157
- import { onMounted, ref } from "#imports";
158
- import { generatePassword, initialOf } from "../../composables/cms-account";
147
+ import {
148
+ Alert as KAlert,
149
+ Avatar as KAvatar,
150
+ Button as KButton,
151
+ Card as KCard,
152
+ CopyButton as KCopyButton,
153
+ DescriptionList as KDescriptionList,
154
+ EmptyState as KEmptyState,
155
+ Form as KForm,
156
+ FormField as KFormField,
157
+ Grid as KGrid,
158
+ Input as KInput,
159
+ PasswordInput as KPasswordInput,
160
+ Spinner as KSpinner,
161
+ Stack as KStack,
162
+ useForm
163
+ } from "@xleddyl/443-components-vue";
164
+ import { onMounted, ref, watch } from "#imports";
165
+ import { generatePassword } from "../../composables/cms-account";
159
166
  import { useCmsConfirm } from "../../composables/cms-confirm";
160
167
  import { useCmsToast } from "../../composables/cms-toast";
161
168
  import { cmsApi } from "../../utils/api";
162
- import { errorMessage } from "../../utils/ui";
169
+ import { cmsIcon, errorMessage } from "../../utils/ui";
163
170
  const toast = useCmsToast();
164
171
  const confirmAction = useCmsConfirm();
172
+ const creating = defineModel("creating", { type: Boolean, ...{ default: false } });
165
173
  const users = ref([]);
166
174
  const loading = ref(true);
167
- const busy = ref(false);
168
175
  async function load() {
169
176
  try {
170
177
  users.value = await cmsApi("/api/cms/users");
@@ -182,83 +189,69 @@ function lastLogin(account) {
182
189
  timeStyle: "short"
183
190
  })}`;
184
191
  }
185
- const creating = ref(false);
186
- const draft = ref({ email: "", name: "", password: "" });
187
- const formError = ref(null);
188
192
  const created = ref(null);
189
- const copied = ref(false);
190
- function startCreate() {
191
- created.value = null;
192
- formError.value = null;
193
- draft.value = { email: "", name: "", password: generatePassword() };
194
- creating.value = true;
195
- }
193
+ const draft = useForm({
194
+ schema: {
195
+ email: { initial: () => "" },
196
+ name: { initial: () => "" },
197
+ password: { initial: () => "" }
198
+ },
199
+ onSubmit: create
200
+ });
201
+ watch(
202
+ creating,
203
+ (value) => {
204
+ if (!value) return;
205
+ created.value = null;
206
+ draft.reset({ email: "", name: "", password: generatePassword() });
207
+ },
208
+ { immediate: true }
209
+ );
196
210
  function cancel() {
197
211
  creating.value = false;
198
212
  }
199
213
  async function create() {
200
- busy.value = true;
201
- formError.value = null;
214
+ const password = draft.values.password ?? "";
202
215
  try {
203
216
  const account = await cmsApi("/api/cms/users", {
204
217
  method: "POST",
205
218
  body: {
206
- email: draft.value.email,
207
- name: draft.value.name || null,
208
- password: draft.value.password
219
+ email: String(draft.values.email ?? ""),
220
+ name: draft.values.name ? String(draft.values.name) : null,
221
+ password
209
222
  }
210
223
  });
211
224
  users.value = [...users.value, account];
212
- created.value = {
213
- title: "User created",
214
- email: account.email,
215
- password: draft.value.password
216
- };
217
- copied.value = false;
225
+ created.value = { title: "User created", email: account.email, password };
218
226
  creating.value = false;
219
227
  } catch (error) {
220
- formError.value = errorMessage(error) ?? "User not created.";
221
- } finally {
222
- busy.value = false;
223
- }
224
- }
225
- async function copyCredentials() {
226
- if (!created.value) return;
227
- try {
228
- await navigator.clipboard.writeText(
229
- `Email: ${created.value.email}
230
- Password: ${created.value.password}`
231
- );
232
- copied.value = true;
233
- } catch {
234
- copied.value = false;
228
+ draft.setError("", errorMessage(error) ?? "User not created.");
235
229
  }
236
230
  }
237
231
  const resetting = ref(null);
238
- const reset = ref({ password: "" });
232
+ const reset = useForm({
233
+ schema: { password: { initial: () => "" } },
234
+ onSubmit: () => {
235
+ const account = users.value.find((candidate) => candidate.id === resetting.value);
236
+ return account ? saveReset(account) : void 0;
237
+ }
238
+ });
239
239
  function startReset(account) {
240
- reset.value = { password: generatePassword() };
240
+ reset.reset({ password: generatePassword() });
241
241
  resetting.value = resetting.value === account.id ? null : account.id;
242
242
  }
243
243
  async function saveReset(account) {
244
- busy.value = true;
244
+ const password = reset.values.password ?? "";
245
245
  try {
246
246
  const updated = await cmsApi(`/api/cms/users/${account.id}`, {
247
247
  method: "PUT",
248
- body: { password: reset.value.password }
248
+ body: { password }
249
249
  });
250
250
  users.value = users.value.map((u) => u.id === updated.id ? updated : u);
251
- created.value = {
252
- title: "Password changed",
253
- email: account.email,
254
- password: reset.value.password
255
- };
256
- copied.value = false;
251
+ created.value = { title: "Password changed", email: account.email, password };
257
252
  resetting.value = null;
258
253
  } catch (error) {
259
254
  toast.add({ title: "Password not changed", description: errorMessage(error), color: "error" });
260
- } finally {
261
- busy.value = false;
262
255
  }
263
256
  }
264
257
  async function remove(account) {
@@ -1,3 +1,10 @@
1
- declare const __VLS_export: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
1
+ type __VLS_ModelProps = {
2
+ 'creating'?: boolean;
3
+ };
4
+ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
5
+ "update:creating": (value: boolean) => any;
6
+ }, string, import("vue").PublicProps, Readonly<__VLS_ModelProps> & Readonly<{
7
+ "onUpdate:creating"?: ((value: boolean) => any) | undefined;
8
+ }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
2
9
  declare const _default: typeof __VLS_export;
3
10
  export default _default;
@@ -1,27 +1,30 @@
1
1
  <template>
2
- <CmsInput
2
+ <KInput
3
3
  :model-value="model ?? ''"
4
- class="font-mono"
4
+ class="k-mono"
5
5
  @update:model-value="
6
6
  (v) => {
7
- model = v || null;
7
+ model = v == null || v === '' ? null : String(v);
8
8
  touched = true;
9
9
  }
10
10
  "
11
11
  >
12
12
  <template v-if="source !== void 0" #trailing>
13
- <CmsButton
13
+ <KButton
14
14
  icon="arrow-path"
15
15
  size="xs"
16
16
  variant="ghost"
17
- color="neutral"
17
+ tone="neutral"
18
+ aria-label="Regenerate slug"
19
+ title="Regenerate slug"
18
20
  @click="regenerate"
19
21
  />
20
22
  </template>
21
- </CmsInput>
23
+ </KInput>
22
24
  </template>
23
25
 
24
26
  <script setup>
27
+ import { Button as KButton, Input as KInput } from "@xleddyl/443-components-vue";
25
28
  import { ref, watch } from "#imports";
26
29
  import { slugify } from "#nuxt-cms";
27
30
  const props = defineProps({
@@ -1,14 +1,15 @@
1
1
  <template>
2
- <span
3
- class="cms-badge"
4
- :class="scheduled ? 'is-scheduled' : published ? 'is-published' : 'is-draft'"
2
+ <KBadge
3
+ :label="scheduled ? 'Scheduled' : published ? 'Published' : 'Draft'"
4
+ :tone="scheduled ? 'warning' : published ? 'success' : 'neutral'"
5
+ :variant="scheduled || published ? 'soft' : 'outline'"
6
+ dot
5
7
  :title="scheduled && at ? `Goes live ${at}` : void 0"
6
- >
7
- {{ scheduled ? "Scheduled" : published ? "Published" : "Draft" }}
8
- </span>
8
+ />
9
9
  </template>
10
10
 
11
11
  <script setup>
12
+ import { Badge as KBadge } from "@xleddyl/443-components-vue";
12
13
  defineProps({
13
14
  published: { type: Boolean, required: false },
14
15
  scheduled: { type: Boolean, required: false },
@@ -1,16 +1,17 @@
1
1
  <template>
2
2
  <CmsMediaField
3
3
  v-if="props.field.type === 'media'"
4
- v-model="currentMedia"
4
+ v-model="currentOrNull"
5
5
  :media-type="props.field.mediaType"
6
6
  :accept="props.field.accept"
7
7
  />
8
- <CmsRichTextField v-else-if="props.field.type === 'richtext'" v-model="current" />
9
- <CmsTextarea v-else-if="props.field.textarea" v-model="current" :rows="8" />
10
- <CmsInput v-else v-model="current" />
8
+ <CmsRichTextField v-else-if="props.field.type === 'richtext'" v-model="currentOrNull" />
9
+ <KTextarea v-else-if="props.field.textarea" v-model="currentText" :rows="8" />
10
+ <KInput v-else v-model="current" />
11
11
  </template>
12
12
 
13
13
  <script setup>
14
+ import { Input as KInput, Textarea as KTextarea } from "@xleddyl/443-components-vue";
14
15
  import { computed } from "#imports";
15
16
  import { useCmsRuntime } from "../../composables/cms-runtime";
16
17
  const props = defineProps({
@@ -24,14 +25,18 @@ function write(value) {
24
25
  const next = Object.fromEntries(
25
26
  Object.entries(model.value ?? {}).filter(([locale]) => locale !== active.value)
26
27
  );
27
- if (value != null && value !== "") next[active.value] = value;
28
+ if (value != null && value !== "") next[active.value] = String(value);
28
29
  model.value = Object.keys(next).length ? next : null;
29
30
  }
30
31
  const current = computed({
31
32
  get: () => model.value?.[active.value] ?? "",
32
33
  set: write
33
34
  });
34
- const currentMedia = computed({
35
+ const currentText = computed({
36
+ get: () => model.value?.[active.value] ?? "",
37
+ set: write
38
+ });
39
+ const currentOrNull = computed({
35
40
  get: () => model.value?.[active.value] ?? null,
36
41
  set: write
37
42
  });