@ozdao/martyrs 0.2.602 → 0.2.604

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 (729) hide show
  1. package/dist/{abac-BPl9Bmf9.js → abac-Blt8bUTL.js} +3 -3
  2. package/dist/{addUserStatusFields-Cc-JpmPo.js → addUserStatusFields-CjV_sbh7.js} +2 -2
  3. package/dist/auth.server.js +57 -2
  4. package/dist/builder.js +130 -81
  5. package/dist/community.server.js +11 -11
  6. package/dist/core.server.js +2 -2
  7. package/dist/{core.verifier-gPPX_jhf.js → core.verifier-DVB2a21y.js} +6 -3
  8. package/dist/{crud-DpOXTZep.js → crud-BT5FIvQC.js} +2 -3
  9. package/dist/engagement.schema-B-Cc_NsG.js +6 -0
  10. package/dist/events.server.js +3 -3
  11. package/dist/gallery.server.js +1 -1
  12. package/dist/governance.server.js +1632 -0
  13. package/dist/icons.server.js +267 -0
  14. package/dist/inventory.server.js +6 -6
  15. package/dist/martyrs/dist/martyrs.es3.js +116 -0
  16. package/dist/martyrs/dist/martyrs.es3.js.map +1 -0
  17. package/dist/martyrs/dist/martyrs.es39.js +124 -0
  18. package/dist/martyrs/dist/martyrs.es39.js.map +1 -0
  19. package/dist/martyrs/dist/martyrs.es43.js +30 -0
  20. package/dist/martyrs/dist/martyrs.es43.js.map +1 -0
  21. package/dist/martyrs/dist/martyrs.es44.js +28 -0
  22. package/dist/martyrs/dist/martyrs.es44.js.map +1 -0
  23. package/dist/martyrs/dist/martyrs.es46.js +10 -0
  24. package/dist/martyrs/dist/martyrs.es46.js.map +1 -0
  25. package/dist/martyrs/src/components/Address/{Address.vue.js → Address.vue2.js} +2 -2
  26. package/dist/martyrs/src/components/Address/Address.vue2.js.map +1 -0
  27. package/dist/martyrs/src/components/Block/Block.vue.js +1 -1
  28. package/dist/martyrs/src/components/Block/Block.vue.js.map +1 -1
  29. package/dist/martyrs/src/components/Button/{Button.vue.js → Button.vue2.js} +8 -5
  30. package/dist/martyrs/src/components/Button/Button.vue2.js.map +1 -0
  31. package/dist/martyrs/src/components/Dropdown/{Dropdown.vue2.js → Dropdown.vue.js} +2 -2
  32. package/dist/martyrs/src/components/Dropdown/Dropdown.vue.js.map +1 -0
  33. package/dist/martyrs/src/components/Feed/Carousel.vue.js +1 -1
  34. package/dist/martyrs/src/components/Feed/Feed.vue.js +2 -2
  35. package/dist/martyrs/src/components/FieldBig/FieldBig.vue.js +4 -4
  36. package/dist/martyrs/src/components/Loader/{Loader.vue2.js → Loader.vue.js} +2 -2
  37. package/dist/martyrs/src/components/Loader/Loader.vue.js.map +1 -0
  38. package/dist/martyrs/src/components/LocationMarker/{LocationMarker.vue.js → LocationMarker.vue2.js} +3 -3
  39. package/dist/martyrs/src/components/LocationMarker/LocationMarker.vue2.js.map +1 -0
  40. package/dist/martyrs/src/components/Media/Media.vue.js +1 -1
  41. package/dist/martyrs/src/components/Table/StatusBadge.vue.js +19 -10
  42. package/dist/martyrs/src/components/Table/StatusBadge.vue.js.map +1 -1
  43. package/dist/martyrs/src/components/Text/Text.vue.js +1 -1
  44. package/dist/martyrs/src/components/Text/Text.vue.js.map +1 -1
  45. package/dist/martyrs/src/components/UploadImage/UploadImage.vue.js +1 -1
  46. package/dist/martyrs/src/components/UploadImageMultiple/UploadImageMultiple.vue.js +1 -1
  47. package/dist/martyrs/src/modules/auth/views/components/blocks/OtpDialog.vue.js +2 -2
  48. package/dist/martyrs/src/modules/auth/views/components/blocks/PopupAuth.vue.js +3 -3
  49. package/dist/martyrs/src/modules/auth/views/components/blocks/PopupAuth.vue.js.map +1 -1
  50. package/dist/martyrs/src/modules/auth/views/components/pages/Invite.vue.js +2 -2
  51. package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.js +2 -2
  52. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileBlogposts.vue.js +17 -21
  53. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileBlogposts.vue.js.map +1 -1
  54. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEdit.vue.js +1 -1
  55. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditAccount.vue.js +13 -13
  56. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditProfile.vue.js +2 -2
  57. package/dist/martyrs/src/modules/auth/views/components/pages/ResetPassword.vue.js +2 -2
  58. package/dist/martyrs/src/modules/auth/views/components/pages/SignIn.vue.js +41 -3
  59. package/dist/martyrs/src/modules/auth/views/components/pages/SignIn.vue.js.map +1 -1
  60. package/dist/martyrs/src/modules/auth/views/components/pages/SignUp.vue.js +2 -2
  61. package/dist/martyrs/src/modules/auth/views/components/pages/UserDashboard.vue.js +34 -66
  62. package/dist/martyrs/src/modules/auth/views/components/pages/UserDashboard.vue.js.map +1 -1
  63. package/dist/martyrs/src/modules/auth/views/router/users.router.js +0 -53
  64. package/dist/martyrs/src/modules/auth/views/router/users.router.js.map +1 -1
  65. package/dist/martyrs/src/modules/auth/views/store/auth.js +1 -1
  66. package/dist/martyrs/src/modules/backoffice/components/pages/Dashboard.vue.js +515 -103
  67. package/dist/martyrs/src/modules/backoffice/components/pages/Dashboard.vue.js.map +1 -1
  68. package/dist/martyrs/src/modules/backoffice/configs/navigation.backoffice.config.js +1 -3
  69. package/dist/martyrs/src/modules/backoffice/configs/navigation.backoffice.config.js.map +1 -1
  70. package/dist/martyrs/src/modules/backoffice/router/backoffice.router.js +1 -32
  71. package/dist/martyrs/src/modules/backoffice/router/backoffice.router.js.map +1 -1
  72. package/dist/martyrs/src/modules/community/community.client.js +49 -8
  73. package/dist/martyrs/src/modules/community/community.client.js.map +1 -1
  74. package/dist/martyrs/src/modules/community/components/blocks/CardBlogpost.vue.js +10 -4
  75. package/dist/martyrs/src/modules/community/components/blocks/CardBlogpost.vue.js.map +1 -1
  76. package/dist/martyrs/src/modules/community/components/layouts/Community.vue.js +3 -3
  77. package/dist/martyrs/src/modules/community/components/layouts/Community.vue.js.map +1 -1
  78. package/dist/martyrs/src/modules/community/components/pages/BlogPost.vue.js +3 -3
  79. package/dist/martyrs/src/modules/community/components/pages/BlogPost.vue.js.map +1 -1
  80. package/dist/martyrs/src/modules/community/components/pages/CreateBlogPost.vue.js +28 -17
  81. package/dist/martyrs/src/modules/community/components/pages/CreateBlogPost.vue.js.map +1 -1
  82. package/dist/martyrs/src/modules/community/components/pages/Posts.vue.js +36 -28
  83. package/dist/martyrs/src/modules/community/components/pages/Posts.vue.js.map +1 -1
  84. package/dist/martyrs/src/modules/community/components/sections/Comment.vue.js +2 -2
  85. package/dist/martyrs/src/modules/community/components/sections/Comment.vue.js.map +1 -1
  86. package/dist/martyrs/src/modules/community/components/sections/Comments.vue.js +1 -1
  87. package/dist/martyrs/src/modules/community/router/community.backoffice.router.js +21 -0
  88. package/dist/martyrs/src/modules/community/router/community.backoffice.router.js.map +1 -0
  89. package/dist/martyrs/src/modules/community/router/community.organization.router.js +70 -0
  90. package/dist/martyrs/src/modules/community/router/community.organization.router.js.map +1 -0
  91. package/dist/martyrs/src/modules/community/router/community.router.js +73 -0
  92. package/dist/martyrs/src/modules/community/router/community.router.js.map +1 -0
  93. package/dist/martyrs/src/modules/community/router/community.user.router.js +20 -0
  94. package/dist/martyrs/src/modules/community/router/community.user.router.js.map +1 -0
  95. package/dist/martyrs/src/modules/constructor/components/elements/Textarea.vue2.js +1 -1
  96. package/dist/martyrs/src/modules/constructor/components/elements/Textarea.vue2.js.map +1 -1
  97. package/dist/martyrs/src/modules/constructor/components/sections/Constructor.vue.js.map +1 -1
  98. package/dist/martyrs/src/modules/core/views/classes/core.app.js +5 -3
  99. package/dist/martyrs/src/modules/core/views/classes/core.app.js.map +1 -1
  100. package/dist/martyrs/src/modules/core/views/classes/i18n.manager.js +7 -2
  101. package/dist/martyrs/src/modules/core/views/classes/i18n.manager.js.map +1 -1
  102. package/dist/martyrs/src/modules/core/views/classes/ws.manager.js +11 -5
  103. package/dist/martyrs/src/modules/core/views/classes/ws.manager.js.map +1 -1
  104. package/dist/martyrs/src/modules/core/views/components/blocks/Card.vue.js +53 -18
  105. package/dist/martyrs/src/modules/core/views/components/blocks/Card.vue.js.map +1 -1
  106. package/dist/martyrs/src/modules/core/views/components/blocks/CardHeader.vue.js +2 -2
  107. package/dist/martyrs/src/modules/core/views/components/blocks/CardStat.vue.js +44 -0
  108. package/dist/martyrs/src/modules/core/views/components/blocks/CardStat.vue.js.map +1 -0
  109. package/dist/martyrs/src/modules/core/views/components/blocks/PopupDateSelector.vue.js +6 -6
  110. package/dist/martyrs/src/modules/core/views/components/layouts/App.vue.js +2 -2
  111. package/dist/martyrs/src/modules/core/views/components/layouts/Client.vue.js +11 -8
  112. package/dist/martyrs/src/modules/core/views/components/layouts/Client.vue.js.map +1 -1
  113. package/dist/martyrs/src/modules/core/views/components/partials/BottomNavigationBar.vue.js +5 -5
  114. package/dist/martyrs/src/modules/core/views/components/partials/BottomNavigationBar.vue.js.map +1 -1
  115. package/dist/martyrs/src/modules/core/views/components/partials/Header.vue.js +14 -14
  116. package/dist/martyrs/src/modules/core/views/components/partials/Header.vue.js.map +1 -1
  117. package/dist/martyrs/src/modules/core/views/components/partials/LocationSelection.vue.js +2 -2
  118. package/dist/martyrs/src/modules/core/views/components/partials/Navigation.vue.js +28 -29
  119. package/dist/martyrs/src/modules/core/views/components/partials/Navigation.vue.js.map +1 -1
  120. package/dist/martyrs/src/modules/core/views/components/partials/NavigationBar.vue.js +6 -6
  121. package/dist/martyrs/src/modules/core/views/components/partials/Sidebar.vue.js +5 -7
  122. package/dist/martyrs/src/modules/core/views/components/partials/Sidebar.vue.js.map +1 -1
  123. package/dist/martyrs/src/modules/core/views/components/sections/SectionPageTitle.vue.js +27 -17
  124. package/dist/martyrs/src/modules/core/views/components/sections/SectionPageTitle.vue.js.map +1 -1
  125. package/dist/martyrs/src/modules/core/views/components/sections/Walkthrough.vue.js +1 -1
  126. package/dist/martyrs/src/modules/core/views/mixins/mixins.js +3 -3
  127. package/dist/martyrs/src/modules/core/views/mixins/mixins.js.map +1 -1
  128. package/dist/martyrs/src/modules/core/views/router/addRoutes.js +2 -3
  129. package/dist/martyrs/src/modules/core/views/router/addRoutes.js.map +1 -1
  130. package/dist/martyrs/src/modules/core/views/store/core.store.js +1 -1
  131. package/dist/martyrs/src/modules/core/views/utils/vue-app-renderer.js +10 -0
  132. package/dist/martyrs/src/modules/core/views/utils/vue-app-renderer.js.map +1 -1
  133. package/dist/martyrs/src/modules/events/components/elements/ButtonCheck.vue.js +4 -4
  134. package/dist/martyrs/src/modules/events/components/elements/ButtonJoin.vue.js +2 -2
  135. package/dist/martyrs/src/modules/events/components/pages/EditEvent.vue.js +3 -3
  136. package/dist/martyrs/src/modules/events/components/pages/EditEventTickets.vue.js +9 -9
  137. package/dist/martyrs/src/modules/events/components/pages/EditEventTickets.vue.js.map +1 -1
  138. package/dist/martyrs/src/modules/events/components/pages/Event.vue.js +2 -2
  139. package/dist/martyrs/src/modules/events/components/pages/Events.vue.js +1 -0
  140. package/dist/martyrs/src/modules/events/components/pages/Events.vue.js.map +1 -1
  141. package/dist/martyrs/src/modules/events/components/pages/EventsBackoffice.vue.js +23 -33
  142. package/dist/martyrs/src/modules/events/components/pages/EventsBackoffice.vue.js.map +1 -1
  143. package/dist/martyrs/src/modules/events/components/sections/EditTickets.vue.js +13 -13
  144. package/dist/martyrs/src/modules/events/components/sections/Feed.vue.js +1 -1
  145. package/dist/martyrs/src/modules/events/components/sections/List.vue.js +3 -3
  146. package/dist/martyrs/src/modules/events/components/sections/List.vue.js.map +1 -1
  147. package/dist/martyrs/src/modules/events/events.client.js +37 -15
  148. package/dist/martyrs/src/modules/events/events.client.js.map +1 -1
  149. package/dist/martyrs/src/modules/events/router/events.backoffice.router.js +95 -0
  150. package/dist/martyrs/src/modules/events/router/events.backoffice.router.js.map +1 -0
  151. package/dist/martyrs/src/modules/events/router/events.organization.router.js +95 -0
  152. package/dist/martyrs/src/modules/events/router/events.organization.router.js.map +1 -0
  153. package/dist/martyrs/src/modules/events/router/events.router.js +73 -364
  154. package/dist/martyrs/src/modules/events/router/events.router.js.map +1 -1
  155. package/dist/martyrs/src/modules/events/router/events.user.router.js +65 -0
  156. package/dist/martyrs/src/modules/events/router/events.user.router.js.map +1 -0
  157. package/dist/martyrs/src/modules/gallery/components/sections/BackofficeGallery.vue.js +3 -3
  158. package/dist/martyrs/src/modules/governance/configs/navigation.initiative.config.js +33 -0
  159. package/dist/martyrs/src/modules/governance/configs/navigation.initiative.config.js.map +1 -0
  160. package/dist/martyrs/src/modules/governance/governance.client.js +31 -0
  161. package/dist/martyrs/src/modules/governance/governance.client.js.map +1 -0
  162. package/dist/martyrs/src/modules/governance/views/components/blocks/CardInitiativeItem.vue.js +110 -0
  163. package/dist/martyrs/src/modules/governance/views/components/blocks/CardInitiativeItem.vue.js.map +1 -0
  164. package/dist/martyrs/src/modules/governance/views/components/blocks/CardSprintItem.vue.js +105 -0
  165. package/dist/martyrs/src/modules/governance/views/components/blocks/CardSprintItem.vue.js.map +1 -0
  166. package/dist/martyrs/src/modules/governance/views/components/blocks/CardTaskItem.vue.js +110 -0
  167. package/dist/martyrs/src/modules/governance/views/components/blocks/CardTaskItem.vue.js.map +1 -0
  168. package/dist/martyrs/src/modules/governance/views/components/blocks/CardVotingItem.vue.js +106 -0
  169. package/dist/martyrs/src/modules/governance/views/components/blocks/CardVotingItem.vue.js.map +1 -0
  170. package/dist/martyrs/src/modules/governance/views/components/pages/Governance.vue.js +52 -0
  171. package/dist/martyrs/src/modules/governance/views/components/pages/Governance.vue.js.map +1 -0
  172. package/dist/martyrs/src/modules/governance/views/components/pages/Initiative.vue.js +684 -0
  173. package/dist/martyrs/src/modules/governance/views/components/pages/Initiative.vue.js.map +1 -0
  174. package/dist/martyrs/src/modules/governance/views/components/pages/InitiativeCreate.vue.js +78 -0
  175. package/dist/martyrs/src/modules/governance/views/components/pages/InitiativeCreate.vue.js.map +1 -0
  176. package/dist/martyrs/src/modules/governance/views/components/pages/InitiativeSprints.vue.js +328 -0
  177. package/dist/martyrs/src/modules/governance/views/components/pages/InitiativeSprints.vue.js.map +1 -0
  178. package/dist/martyrs/src/modules/governance/views/components/pages/Initiatives.vue.js +145 -0
  179. package/dist/martyrs/src/modules/governance/views/components/pages/Initiatives.vue.js.map +1 -0
  180. package/dist/martyrs/src/modules/governance/views/components/pages/Sprint.vue.js +258 -0
  181. package/dist/martyrs/src/modules/governance/views/components/pages/Sprint.vue.js.map +1 -0
  182. package/dist/martyrs/src/modules/governance/views/components/pages/SprintCreate.vue.js +72 -0
  183. package/dist/martyrs/src/modules/governance/views/components/pages/SprintCreate.vue.js.map +1 -0
  184. package/dist/martyrs/src/modules/governance/views/components/pages/Task.vue.js +769 -0
  185. package/dist/martyrs/src/modules/governance/views/components/pages/Task.vue.js.map +1 -0
  186. package/dist/martyrs/src/modules/governance/views/components/pages/TaskCreate.vue.js +88 -0
  187. package/dist/martyrs/src/modules/governance/views/components/pages/TaskCreate.vue.js.map +1 -0
  188. package/dist/martyrs/src/modules/governance/views/components/pages/Tasks.vue.js +291 -0
  189. package/dist/martyrs/src/modules/governance/views/components/pages/Tasks.vue.js.map +1 -0
  190. package/dist/martyrs/src/modules/governance/views/components/pages/Voting.vue.js +267 -0
  191. package/dist/martyrs/src/modules/governance/views/components/pages/Voting.vue.js.map +1 -0
  192. package/dist/martyrs/src/modules/governance/views/components/pages/VotingCreate.vue.js +90 -0
  193. package/dist/martyrs/src/modules/governance/views/components/pages/VotingCreate.vue.js.map +1 -0
  194. package/dist/martyrs/src/modules/governance/views/components/pages/Votings.vue.js +68 -0
  195. package/dist/martyrs/src/modules/governance/views/components/pages/Votings.vue.js.map +1 -0
  196. package/dist/martyrs/src/modules/governance/views/components/partials/EmptyState.vue.js +47 -0
  197. package/dist/martyrs/src/modules/governance/views/components/partials/EmptyState.vue.js.map +1 -0
  198. package/dist/martyrs/src/modules/governance/views/components/partials/LinkedEntityCard.vue.js +164 -0
  199. package/dist/martyrs/src/modules/governance/views/components/partials/LinkedEntityCard.vue.js.map +1 -0
  200. package/dist/martyrs/src/modules/governance/views/components/partials/TaskStatusBadge.vue.js +39 -0
  201. package/dist/martyrs/src/modules/governance/views/components/partials/TaskStatusBadge.vue.js.map +1 -0
  202. package/dist/martyrs/src/modules/governance/views/components/partials/VoteForm.vue.js +112 -0
  203. package/dist/martyrs/src/modules/governance/views/components/partials/VoteForm.vue.js.map +1 -0
  204. package/dist/martyrs/src/modules/governance/views/components/partials/VotingResults.vue.js +187 -0
  205. package/dist/martyrs/src/modules/governance/views/components/partials/VotingResults.vue.js.map +1 -0
  206. package/dist/martyrs/src/modules/governance/views/components/sections/FormInitiativeDetails.vue.js +555 -0
  207. package/dist/martyrs/src/modules/governance/views/components/sections/FormInitiativeDetails.vue.js.map +1 -0
  208. package/dist/martyrs/src/modules/governance/views/components/sections/FormSprintDetails.vue.js +187 -0
  209. package/dist/martyrs/src/modules/governance/views/components/sections/FormSprintDetails.vue.js.map +1 -0
  210. package/dist/martyrs/src/modules/governance/views/components/sections/FormTaskDetails.vue.js +171 -0
  211. package/dist/martyrs/src/modules/governance/views/components/sections/FormTaskDetails.vue.js.map +1 -0
  212. package/dist/martyrs/src/modules/governance/views/components/sections/FormVotingDetails.vue.js +179 -0
  213. package/dist/martyrs/src/modules/governance/views/components/sections/FormVotingDetails.vue.js.map +1 -0
  214. package/dist/martyrs/src/modules/governance/views/router/governance.router.js +502 -0
  215. package/dist/martyrs/src/modules/governance/views/router/governance.router.js.map +1 -0
  216. package/dist/martyrs/src/modules/governance/views/store/initiatives.js +119 -0
  217. package/dist/martyrs/src/modules/governance/views/store/initiatives.js.map +1 -0
  218. package/dist/martyrs/src/modules/governance/views/store/sprints.js +99 -0
  219. package/dist/martyrs/src/modules/governance/views/store/sprints.js.map +1 -0
  220. package/dist/martyrs/src/modules/governance/views/store/tasks.js +115 -0
  221. package/dist/martyrs/src/modules/governance/views/store/tasks.js.map +1 -0
  222. package/dist/martyrs/src/modules/governance/views/store/votings.js +155 -0
  223. package/dist/martyrs/src/modules/governance/views/store/votings.js.map +1 -0
  224. package/dist/martyrs/src/modules/icons/entities/IconCash.vue.js +70 -0
  225. package/dist/martyrs/src/modules/icons/entities/IconCash.vue.js.map +1 -0
  226. package/dist/martyrs/src/modules/icons/icons.client.js +1 -1
  227. package/dist/martyrs/src/modules/icons/icons.client.js.map +1 -1
  228. package/dist/martyrs/src/modules/icons/{icons.router.js → router/icons.router.js} +1 -1
  229. package/dist/martyrs/src/modules/icons/router/icons.router.js.map +1 -0
  230. package/dist/martyrs/src/modules/inventory/components/forms/AdjustmentForm.vue.js +3 -3
  231. package/dist/martyrs/src/modules/inventory/components/forms/ColumnSettingsMenu.vue.js +3 -3
  232. package/dist/martyrs/src/modules/inventory/components/forms/HistoryView.vue.js +2 -2
  233. package/dist/martyrs/src/modules/inventory/components/forms/StockAlertsForm.vue.js +3 -3
  234. package/dist/martyrs/src/modules/inventory/components/pages/Inventory.vue.js +1 -1
  235. package/dist/martyrs/src/modules/inventory/components/pages/InventoryEdit.vue.js +6 -6
  236. package/dist/martyrs/src/modules/inventory/components/pages/InventoryEdit.vue.js.map +1 -1
  237. package/dist/martyrs/src/modules/marketplace/views/components/sections/SectionMenu.vue.js +1 -1
  238. package/dist/martyrs/src/modules/music/components/blocks/ActionButtons.vue.js +9 -9
  239. package/dist/martyrs/src/modules/music/components/cards/AlbumCard.vue.js +4 -4
  240. package/dist/martyrs/src/modules/music/components/cards/ArtistCardSmall.vue.js +2 -2
  241. package/dist/martyrs/src/modules/music/components/cards/PlaylistCard.vue.js +4 -4
  242. package/dist/martyrs/src/modules/music/components/cards/TrackListCard.vue.js +7 -7
  243. package/dist/martyrs/src/modules/music/components/forms/AlbumForm.vue.js +3 -3
  244. package/dist/martyrs/src/modules/music/components/forms/ArtistForm.vue.js +4 -4
  245. package/dist/martyrs/src/modules/music/components/forms/PlaylistForm.vue.js +3 -3
  246. package/dist/martyrs/src/modules/music/components/forms/SearchForm.vue.js +4 -4
  247. package/dist/martyrs/src/modules/music/components/forms/TrackForm.vue.js +3 -3
  248. package/dist/martyrs/src/modules/music/components/pages/Album.vue.js +3 -3
  249. package/dist/martyrs/src/modules/music/components/pages/Artist.vue.js +10 -10
  250. package/dist/martyrs/src/modules/music/components/pages/MusicLibrary.vue.js +13 -13
  251. package/dist/martyrs/src/modules/music/components/pages/Playlist.vue.js +11 -11
  252. package/dist/martyrs/src/modules/music/components/pages/SearchResults.vue.js +10 -10
  253. package/dist/martyrs/src/modules/music/components/pages/Track.vue.js +18 -18
  254. package/dist/martyrs/src/modules/music/components/pages/TrackCreate.vue.js +1 -1
  255. package/dist/martyrs/src/modules/music/components/player/FullscreenPlayer.vue.js +2 -2
  256. package/dist/martyrs/src/modules/music/components/player/MusicPlayer.vue.js +4 -4
  257. package/dist/martyrs/src/modules/music/components/player/PlayerControls.vue.js +10 -10
  258. package/dist/martyrs/src/modules/music/components/player/VolumeControl.vue.js +6 -6
  259. package/dist/martyrs/src/modules/music/components/sections/PopularTracks.vue.js +63 -0
  260. package/dist/martyrs/src/modules/music/components/sections/PopularTracks.vue.js.map +1 -0
  261. package/dist/martyrs/src/modules/music/music.client.js +29 -25
  262. package/dist/martyrs/src/modules/music/music.client.js.map +1 -1
  263. package/dist/martyrs/src/modules/music/{music.router.js → router/music.router.js} +16 -16
  264. package/dist/martyrs/src/modules/music/router/music.router.js.map +1 -0
  265. package/dist/martyrs/src/modules/notifications/components/elements/NotificationBadge.vue.js +26 -27
  266. package/dist/martyrs/src/modules/notifications/components/elements/NotificationBadge.vue.js.map +1 -1
  267. package/dist/martyrs/src/modules/notifications/components/sections/NotificationPreferences.vue.js +119 -60
  268. package/dist/martyrs/src/modules/notifications/components/sections/NotificationPreferences.vue.js.map +1 -1
  269. package/dist/martyrs/src/modules/notifications/notifications.client.js +76 -56
  270. package/dist/martyrs/src/modules/notifications/notifications.client.js.map +1 -1
  271. package/dist/martyrs/src/modules/notifications/{notifications.router.js → router/notifications.router.js} +3 -3
  272. package/dist/martyrs/src/modules/notifications/router/notifications.router.js.map +1 -0
  273. package/dist/martyrs/src/modules/notifications/store/notifications.store.js +1 -1
  274. package/dist/martyrs/src/modules/orders/components/blocks/CardApplication.vue.js +34 -44
  275. package/dist/martyrs/src/modules/orders/components/blocks/CardApplication.vue.js.map +1 -1
  276. package/dist/martyrs/src/modules/orders/components/blocks/CardCustomer.vue.js +47 -57
  277. package/dist/martyrs/src/modules/orders/components/blocks/CardCustomer.vue.js.map +1 -1
  278. package/dist/martyrs/src/modules/orders/components/blocks/CardOrderItem.vue.js +2 -2
  279. package/dist/martyrs/src/modules/orders/components/blocks/CardOrderItem.vue.js.map +1 -1
  280. package/dist/martyrs/src/modules/orders/components/blocks/CardOrderUser.vue.js +2 -2
  281. package/dist/martyrs/src/modules/orders/components/blocks/CardOrderUser.vue.js.map +1 -1
  282. package/dist/martyrs/src/modules/orders/components/forms/FormApplicationDetails.vue.js +3 -3
  283. package/dist/martyrs/src/modules/orders/components/forms/FormCustomerDetails.vue.js +5 -5
  284. package/dist/martyrs/src/modules/orders/components/forms/FormCustomerDetails.vue.js.map +1 -1
  285. package/dist/martyrs/src/modules/orders/components/forms/FormSelectCustomer.vue.js +7 -7
  286. package/dist/martyrs/src/modules/orders/components/pages/Applications.vue.js +61 -54
  287. package/dist/martyrs/src/modules/orders/components/pages/Applications.vue.js.map +1 -1
  288. package/dist/martyrs/src/modules/orders/components/pages/Customers.vue.js +43 -31
  289. package/dist/martyrs/src/modules/orders/components/pages/Customers.vue.js.map +1 -1
  290. package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.js +13 -13
  291. package/dist/martyrs/src/modules/orders/components/pages/OrderCreate.vue.js +3 -3
  292. package/dist/martyrs/src/modules/orders/components/pages/OrderCreate.vue.js.map +1 -1
  293. package/dist/martyrs/src/modules/orders/components/pages/OrderCreateBackoffice.vue.js +19 -19
  294. package/dist/martyrs/src/modules/orders/components/sections/ApplicationDetails.vue.js +7 -10
  295. package/dist/martyrs/src/modules/orders/components/sections/ApplicationDetails.vue.js.map +1 -1
  296. package/dist/martyrs/src/modules/orders/components/sections/CustomerDetails.vue.js +7 -10
  297. package/dist/martyrs/src/modules/orders/components/sections/CustomerDetails.vue.js.map +1 -1
  298. package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.js +4 -4
  299. package/dist/martyrs/src/modules/orders/orders.client.js +16 -16
  300. package/dist/martyrs/src/modules/orders/orders.client.js.map +1 -1
  301. package/dist/martyrs/src/modules/orders/store/shopcart.js +1 -1
  302. package/dist/martyrs/src/modules/organizations/components/blocks/CardOrganization.vue.js +11 -4
  303. package/dist/martyrs/src/modules/organizations/components/blocks/CardOrganization.vue.js.map +1 -1
  304. package/dist/martyrs/src/modules/organizations/components/elements/ButtonToggleMembership.vue.js +2 -2
  305. package/dist/martyrs/src/modules/organizations/components/forms/AddExistingMembersForm.vue.js +2 -2
  306. package/dist/martyrs/src/modules/organizations/components/forms/DepartmentForm.vue.js +22 -15
  307. package/dist/martyrs/src/modules/organizations/components/forms/DepartmentForm.vue.js.map +1 -1
  308. package/dist/martyrs/src/modules/organizations/components/forms/InviteForm.vue.js +2 -2
  309. package/dist/martyrs/src/modules/organizations/components/pages/Members.vue.js +63 -1
  310. package/dist/martyrs/src/modules/organizations/components/pages/Members.vue.js.map +1 -1
  311. package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.js +9 -3
  312. package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.js.map +1 -1
  313. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.js +13 -7
  314. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.js.map +1 -1
  315. package/dist/martyrs/src/modules/organizations/components/pages/Organizations.vue.js +24 -30
  316. package/dist/martyrs/src/modules/organizations/components/pages/Organizations.vue.js.map +1 -1
  317. package/dist/martyrs/src/modules/organizations/components/sections/Documents.vue.js +2 -2
  318. package/dist/martyrs/src/modules/organizations/components/sections/MembersAdd.vue.js +2 -2
  319. package/dist/martyrs/src/modules/organizations/components/sections/Organizations.vue.js +1 -1
  320. package/dist/martyrs/src/modules/organizations/organizations.client.js +42 -6
  321. package/dist/martyrs/src/modules/organizations/organizations.client.js.map +1 -1
  322. package/dist/martyrs/src/modules/organizations/router/organizations.backoffice.router.js +20 -0
  323. package/dist/martyrs/src/modules/organizations/router/organizations.backoffice.router.js.map +1 -0
  324. package/dist/martyrs/src/modules/organizations/router/organizations.router.js +102 -0
  325. package/dist/martyrs/src/modules/organizations/router/organizations.router.js.map +1 -0
  326. package/dist/martyrs/src/modules/organizations/router/organizations.user.router.js +20 -0
  327. package/dist/martyrs/src/modules/organizations/router/organizations.user.router.js.map +1 -0
  328. package/dist/martyrs/src/modules/pages/pages.client.js +1 -1
  329. package/dist/martyrs/src/modules/pages/pages.client.js.map +1 -1
  330. package/dist/martyrs/src/modules/pages/views/components/blocks/CardPage.vue.js +1 -1
  331. package/dist/martyrs/src/modules/pages/views/components/pages/PageEdit.vue.js +3 -3
  332. package/dist/martyrs/src/modules/pages/views/components/partials/SidebarPages.vue.js +2 -2
  333. package/dist/martyrs/src/modules/pages/{pages.router.js → views/router/pages.router.js} +8 -8
  334. package/dist/martyrs/src/modules/pages/views/router/pages.router.js.map +1 -0
  335. package/dist/martyrs/src/modules/products/components/blocks/CardPosition.vue.js +1 -1
  336. package/dist/martyrs/src/modules/products/components/blocks/CardPosition.vue.js.map +1 -1
  337. package/dist/martyrs/src/modules/products/components/elements/Image360.vue.js +1 -1
  338. package/dist/martyrs/src/modules/products/components/pages/Categories.vue.js +1 -1
  339. package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.js +7 -7
  340. package/dist/martyrs/src/modules/products/components/pages/Product.vue.js +1 -1
  341. package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.js +21 -21
  342. package/dist/martyrs/src/modules/products/components/pages/Products.vue.js +3 -3
  343. package/dist/martyrs/src/modules/products/components/pages/Products.vue.js.map +1 -1
  344. package/dist/martyrs/src/modules/products/components/sections/EditAttributes.vue.js +3 -3
  345. package/dist/martyrs/src/modules/products/components/sections/EditDiscounts.vue.js +3 -3
  346. package/dist/martyrs/src/modules/products/components/sections/EditVariants.vue.js +20 -20
  347. package/dist/martyrs/src/modules/products/components/sections/ProductConfigurator.vue.js +4 -4
  348. package/dist/martyrs/src/modules/products/components/sections/ProductsRecommended.vue.js +4 -4
  349. package/dist/martyrs/src/modules/products/components/sections/SectionProduct.vue.js +3 -3
  350. package/dist/martyrs/src/modules/rents/rents.client.js +1 -1
  351. package/dist/martyrs/src/modules/rents/rents.client.js.map +1 -1
  352. package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttToolbar.vue.js +6 -6
  353. package/dist/martyrs/src/modules/rents/views/components/pages/RentsEdit.vue.js +4 -4
  354. package/dist/martyrs/src/modules/rents/{rents.router.js → views/router/rents.router.js} +4 -4
  355. package/dist/martyrs/src/modules/rents/views/router/rents.router.js.map +1 -0
  356. package/dist/martyrs/src/modules/reports/components/sections/FormReport.vue.js +2 -2
  357. package/dist/martyrs/src/modules/reports/reports.client.js +1 -1
  358. package/dist/martyrs/src/modules/reports/reports.client.js.map +1 -1
  359. package/dist/martyrs/src/modules/reports/{reports.router.js → router/reports.router.js} +1 -1
  360. package/dist/martyrs/src/modules/reports/router/reports.router.js.map +1 -0
  361. package/dist/martyrs/src/modules/spots/components/layouts/Spots.vue.js +1 -1
  362. package/dist/martyrs/src/modules/spots/components/pages/Map.vue.js +2 -2
  363. package/dist/martyrs/src/modules/spots/components/pages/SpotEdit.vue.js +11 -11
  364. package/dist/martyrs/src/modules/spots/components/sections/WorktimeEdit.vue.js +21 -21
  365. package/dist/martyrs/src/modules/wallet/views/components/pages/Payments.vue.js +68 -0
  366. package/dist/martyrs/src/modules/wallet/views/components/pages/Payments.vue.js.map +1 -0
  367. package/dist/martyrs/src/modules/wallet/views/router/wallet.router.js +48 -0
  368. package/dist/martyrs/src/modules/wallet/views/router/wallet.router.js.map +1 -0
  369. package/dist/martyrs/src/modules/wallet/views/store/payments.store.js +59 -0
  370. package/dist/martyrs/src/modules/wallet/views/store/payments.store.js.map +1 -0
  371. package/dist/martyrs/src/modules/wallet/wallet.client.js +20 -0
  372. package/dist/martyrs/src/modules/wallet/wallet.client.js.map +1 -0
  373. package/dist/martyrs.es.js +84 -41
  374. package/dist/martyrs.es10.js +126 -0
  375. package/dist/martyrs.es101.js +39 -0
  376. package/dist/martyrs.es102.js +31 -0
  377. package/dist/martyrs.es104.js +27 -0
  378. package/dist/martyrs.es105.js +8 -0
  379. package/dist/martyrs.es106.js +9 -0
  380. package/dist/martyrs.es107.js +79 -0
  381. package/dist/martyrs.es108.js +7 -0
  382. package/dist/martyrs.es109.js +121 -0
  383. package/dist/martyrs.es11.js +49 -0
  384. package/dist/martyrs.es112.js +4 -0
  385. package/dist/martyrs.es113.js +169 -0
  386. package/dist/martyrs.es114.js +460 -0
  387. package/dist/martyrs.es115.js +42 -0
  388. package/dist/martyrs.es116.js +12 -0
  389. package/dist/martyrs.es117.js +52 -0
  390. package/dist/martyrs.es118.js +14 -0
  391. package/dist/martyrs.es119.js +47 -0
  392. package/dist/martyrs.es12.js +94 -0
  393. package/dist/martyrs.es120.js +7 -0
  394. package/dist/martyrs.es121.js +131 -0
  395. package/dist/martyrs.es122.js +103 -0
  396. package/dist/martyrs.es123.js +89 -0
  397. package/dist/martyrs.es124.js +40 -0
  398. package/dist/martyrs.es125.js +14 -0
  399. package/dist/martyrs.es126.js +42 -0
  400. package/dist/martyrs.es127.js +11 -0
  401. package/dist/martyrs.es128.js +25 -0
  402. package/dist/martyrs.es129.js +7 -0
  403. package/dist/martyrs.es13.js +48 -0
  404. package/dist/martyrs.es130.js +10 -0
  405. package/dist/martyrs.es131.js +119 -0
  406. package/dist/martyrs.es132.js +20 -0
  407. package/dist/martyrs.es133.js +18 -0
  408. package/dist/martyrs.es134.js +6 -0
  409. package/dist/martyrs.es135.js +35 -0
  410. package/dist/martyrs.es136.js +12 -0
  411. package/dist/martyrs.es137.js +23 -0
  412. package/dist/martyrs.es138.js +12 -0
  413. package/dist/martyrs.es139.js +11 -0
  414. package/dist/martyrs.es14.js +101 -0
  415. package/dist/martyrs.es140.js +47 -0
  416. package/dist/martyrs.es141.js +483 -0
  417. package/dist/martyrs.es142.js +8 -0
  418. package/dist/martyrs.es143.js +4 -0
  419. package/dist/martyrs.es144.js +33 -0
  420. package/dist/martyrs.es145.js +14 -0
  421. package/dist/martyrs.es146.js +19 -0
  422. package/dist/martyrs.es147.js +22 -0
  423. package/dist/martyrs.es148.js +31 -0
  424. package/dist/martyrs.es149.js +23 -0
  425. package/dist/martyrs.es15.js +408 -0
  426. package/dist/martyrs.es16.js +58 -0
  427. package/dist/martyrs.es17.js +44 -0
  428. package/dist/martyrs.es18.js +42 -0
  429. package/dist/martyrs.es19.js +27 -0
  430. package/dist/martyrs.es2.js +88 -0
  431. package/dist/martyrs.es20.js +13 -0
  432. package/dist/martyrs.es21.js +57 -0
  433. package/dist/martyrs.es22.js +104 -0
  434. package/dist/martyrs.es23.js +178 -0
  435. package/dist/martyrs.es24.js +123 -0
  436. package/dist/martyrs.es25.js +139 -0
  437. package/dist/martyrs.es26.js +21 -0
  438. package/dist/martyrs.es27.js +60 -0
  439. package/dist/martyrs.es28.js +75 -0
  440. package/dist/martyrs.es29.js +36 -0
  441. package/dist/martyrs.es3.js +116 -0
  442. package/dist/martyrs.es30.js +348 -0
  443. package/dist/martyrs.es31.js +83 -0
  444. package/dist/martyrs.es32.js +148 -0
  445. package/dist/martyrs.es33.js +175 -0
  446. package/dist/martyrs.es34.js +66 -0
  447. package/dist/martyrs.es35.js +57 -0
  448. package/dist/martyrs.es36.js +76 -0
  449. package/dist/martyrs.es37.js +101 -0
  450. package/dist/martyrs.es38.js +39 -0
  451. package/dist/martyrs.es39.js +124 -0
  452. package/dist/martyrs.es4.js +85 -0
  453. package/dist/martyrs.es40.js +120 -0
  454. package/dist/martyrs.es41.js +229 -0
  455. package/dist/martyrs.es43.js +29 -0
  456. package/dist/martyrs.es44.js +27 -0
  457. package/dist/martyrs.es46.js +9 -0
  458. package/dist/martyrs.es48.js +18 -0
  459. package/dist/martyrs.es5.js +395 -0
  460. package/dist/martyrs.es50.js +42 -0
  461. package/dist/martyrs.es52.js +255 -0
  462. package/dist/martyrs.es54.js +8 -0
  463. package/dist/martyrs.es6.js +70 -0
  464. package/dist/martyrs.es61.js +139 -0
  465. package/dist/martyrs.es65.js +28 -0
  466. package/dist/martyrs.es68.js +33 -0
  467. package/dist/martyrs.es69.js +37 -0
  468. package/dist/martyrs.es7.js +17 -0
  469. package/dist/martyrs.es71.js +114 -0
  470. package/dist/martyrs.es73.js +83 -0
  471. package/dist/martyrs.es74.js +52 -0
  472. package/dist/martyrs.es75.js +75 -0
  473. package/dist/martyrs.es76.js +176 -0
  474. package/dist/martyrs.es77.js +31 -0
  475. package/dist/martyrs.es78.js +38 -0
  476. package/dist/martyrs.es8.js +127 -0
  477. package/dist/martyrs.es81.js +32 -0
  478. package/dist/martyrs.es86.js +37 -0
  479. package/dist/martyrs.es89.js +37 -0
  480. package/dist/martyrs.es9.js +396 -0
  481. package/dist/martyrs.es91.js +63 -0
  482. package/dist/martyrs.es92.js +35 -0
  483. package/dist/martyrs.es94.js +41 -0
  484. package/dist/martyrs.es95.js +59 -0
  485. package/dist/martyrs.es96.js +123 -0
  486. package/dist/martyrs.es97.js +43 -0
  487. package/dist/martyrs.es98.js +86 -0
  488. package/dist/martyrs.es99.js +33 -0
  489. package/dist/music.server.js +11 -11
  490. package/dist/node_modules/.pnpm/@capacitor-mlkit_barcode-scanning@7.3.0_@capacitor_core@7.4.4/node_modules/@capacitor-mlkit/barcode-scanning/dist/esm/index.js +1 -1
  491. package/dist/node_modules/.pnpm/@capacitor-mlkit_barcode-scanning@7.3.0_@capacitor_core@7.4.4/node_modules/@capacitor-mlkit/barcode-scanning/dist/esm/web.js +1 -1
  492. package/dist/node_modules/.pnpm/capacitor-plugin-app-tracking-transparency@2.0.5_@capacitor_core@7.4.4/node_modules/capacitor-plugin-app-tracking-transparency/dist/esm/index.js +1 -1
  493. package/dist/node_modules/.pnpm/capacitor-plugin-app-tracking-transparency@2.0.5_@capacitor_core@7.4.4/node_modules/capacitor-plugin-app-tracking-transparency/dist/esm/web.js +1 -1
  494. package/dist/notifications.server.js +16 -6
  495. package/dist/orders.server.js +264 -145
  496. package/dist/organizations.server.js +22 -6
  497. package/dist/products.server.js +7 -7
  498. package/dist/rents.server.js +4 -3
  499. package/dist/style.css +970 -986
  500. package/package.json +13 -6
  501. package/src/builder/modes/ssr.rspack.dev.js +32 -20
  502. package/src/builder/rspack/rspack.config.api.js +3 -0
  503. package/src/builder/rspack/rspack.config.base.js +9 -1
  504. package/src/builder/rspack/rspack.config.ssr.client.js +8 -5
  505. package/src/components/Block/Block.vue +1 -1
  506. package/src/components/Button/Button.vue +4 -4
  507. package/src/components/Table/StatusBadge.vue +24 -18
  508. package/src/components/Text/Text.vue +1 -1
  509. package/src/jit/core.js +72 -35
  510. package/src/jit/plugin.js +4 -3
  511. package/src/jit/rules.js +15 -15
  512. package/src/modules/TASKS.MD +30 -0
  513. package/src/modules/TASK_ACTIVITY.md +60 -0
  514. package/src/modules/TASK_MODULE_ARCH.md +391 -0
  515. package/src/modules/auth/controllers/routes/users.routes.js +8 -0
  516. package/src/modules/auth/controllers/services/users.service.js +51 -1
  517. package/src/modules/auth/views/components/blocks/PopupAuth.vue +1 -1
  518. package/src/modules/auth/views/components/pages/ProfileBlogposts.vue +25 -24
  519. package/src/modules/auth/views/components/pages/SignIn.vue +10 -1
  520. package/src/modules/auth/views/components/pages/UserDashboard.vue +35 -62
  521. package/src/modules/auth/views/router/users.router.js +0 -44
  522. package/src/modules/backoffice/components/pages/Dashboard.vue +423 -120
  523. package/src/modules/backoffice/configs/navigation.backoffice.config.js +0 -2
  524. package/src/modules/backoffice/router/backoffice.router.js +0 -25
  525. package/src/modules/community/community.client.js +54 -9
  526. package/src/modules/community/components/blocks/CardBlogpost.vue +10 -3
  527. package/src/modules/community/components/layouts/Community.vue +3 -3
  528. package/src/modules/community/components/pages/BlogPost.vue +1 -1
  529. package/src/modules/community/components/pages/CreateBlogPost.vue +19 -20
  530. package/src/modules/community/components/pages/Posts.vue +43 -28
  531. package/src/modules/community/components/sections/Comment.vue +1 -1
  532. package/src/modules/community/controllers/blog.controller.js +4 -5
  533. package/src/modules/community/models/reaction.model.js +1 -0
  534. package/src/modules/community/router/community.backoffice.router.js +16 -0
  535. package/src/modules/community/router/community.organization.router.js +56 -0
  536. package/src/modules/community/router/community.router.js +58 -106
  537. package/src/modules/community/router/community.user.router.js +15 -0
  538. package/src/modules/constructor/components/elements/Textarea.vue +1 -1
  539. package/src/modules/constructor/components/sections/Constructor.vue +1 -1
  540. package/src/modules/core/controllers/classes/core.validator.js +7 -1
  541. package/src/modules/core/controllers/classes/core.verifier.js +0 -2
  542. package/src/modules/core/controllers/classes/crud/crud.controller.js +0 -4
  543. package/src/modules/core/controllers/classes/crud/crud.service.js +1 -0
  544. package/src/modules/core/models/schemas/engagement.schema.js +19 -22
  545. package/src/modules/core/views/classes/core.app.js +6 -4
  546. package/src/modules/core/views/classes/i18n.manager.js +9 -2
  547. package/src/modules/core/views/classes/ws.manager.js +17 -7
  548. package/src/modules/core/views/components/blocks/Card.vue +47 -24
  549. package/src/modules/core/views/components/blocks/CardStat.vue +27 -0
  550. package/src/modules/core/views/components/blocks/PopupAuth.vue +1 -1
  551. package/src/modules/core/views/components/layouts/Client.vue +5 -4
  552. package/src/modules/core/views/components/partials/BottomNavigationBar.vue +5 -5
  553. package/src/modules/core/views/components/partials/Header.vue +2 -2
  554. package/src/modules/core/views/components/partials/Navigation.vue +13 -14
  555. package/src/modules/core/views/components/partials/Sidebar.vue +4 -6
  556. package/src/modules/core/views/components/sections/SectionPageTitle.vue +23 -15
  557. package/src/modules/core/views/mixins/mixins.js +4 -3
  558. package/src/modules/core/views/router/addRoutes.js +1 -2
  559. package/src/modules/core/views/utils/vue-app-renderer.js +12 -0
  560. package/src/modules/events/components/pages/EditEventTickets.vue +1 -1
  561. package/src/modules/events/components/pages/Events.vue +1 -0
  562. package/src/modules/events/components/pages/EventsBackoffice.vue +23 -48
  563. package/src/modules/events/components/sections/List.vue +2 -2
  564. package/src/modules/events/events.client.js +44 -17
  565. package/src/modules/events/router/events.backoffice.router.js +80 -0
  566. package/src/modules/events/router/events.organization.router.js +80 -0
  567. package/src/modules/events/router/events.router.js +55 -325
  568. package/src/modules/events/router/events.user.router.js +49 -0
  569. package/src/modules/governance/TASK-TRACKER.MD +534 -39
  570. package/src/modules/governance/configs/navigation.initiative.config.js +30 -0
  571. package/src/modules/governance/controllers/routes/initiatives.routes.js +55 -8
  572. package/src/modules/governance/controllers/routes/{milestones.routes.js → sprints.routes.js} +22 -22
  573. package/src/modules/governance/controllers/routes/tasks.routes.js +2 -2
  574. package/src/modules/governance/governance.client.js +1 -4
  575. package/src/modules/governance/governance.server.js +6 -6
  576. package/src/modules/governance/middlewares/initiatives.verifier.js +60 -0
  577. package/src/modules/governance/middlewares/{milestones.verifier.js → sprints.verifier.js} +10 -10
  578. package/src/modules/governance/middlewares/tasks.verifier.js +4 -4
  579. package/src/modules/governance/middlewares/votings.verifier.js +25 -7
  580. package/src/modules/governance/models/{milestone.model.js → sprint.model.js} +11 -11
  581. package/src/modules/governance/models/task.model.js +4 -4
  582. package/src/modules/governance/models/voting.model.js +10 -5
  583. package/src/modules/governance/views/components/blocks/CardInitiativeItem.vue +8 -13
  584. package/src/modules/governance/views/components/blocks/{CardMilestoneItem.vue → CardSprintItem.vue} +16 -17
  585. package/src/modules/governance/views/components/blocks/CardTaskItem.vue +7 -9
  586. package/src/modules/governance/views/components/blocks/CardVotingItem.vue +7 -9
  587. package/src/modules/governance/views/components/pages/Governance.vue +13 -34
  588. package/src/modules/governance/views/components/pages/Initiative.vue +73 -154
  589. package/src/modules/governance/views/components/pages/InitiativeCreate.vue +44 -7
  590. package/src/modules/governance/views/components/pages/{Roadmap.vue → InitiativeSprints.vue} +70 -69
  591. package/src/modules/governance/views/components/pages/Initiatives.vue +23 -108
  592. package/src/modules/governance/views/components/pages/{Milestone.vue → Sprint.vue} +43 -41
  593. package/src/modules/governance/views/components/pages/SprintCreate.vue +55 -0
  594. package/src/modules/governance/views/components/pages/Task.vue +95 -88
  595. package/src/modules/governance/views/components/pages/TaskCreate.vue +47 -9
  596. package/src/modules/governance/views/components/pages/Tasks.vue +25 -21
  597. package/src/modules/governance/views/components/pages/Voting.vue +84 -68
  598. package/src/modules/governance/views/components/pages/VotingCreate.vue +48 -8
  599. package/src/modules/governance/views/components/pages/Votings.vue +12 -57
  600. package/src/modules/governance/views/components/partials/EmptyState.vue +1 -1
  601. package/src/modules/governance/views/components/partials/LinkedEntityCard.vue +23 -11
  602. package/src/modules/governance/views/components/partials/TaskStatusBadge.vue +1 -1
  603. package/src/modules/governance/views/components/partials/VoteForm.vue +3 -3
  604. package/src/modules/governance/views/components/partials/VotingResults.vue +13 -19
  605. package/src/modules/governance/views/components/sections/FormInitiativeDetails.vue +413 -15
  606. package/src/modules/governance/views/components/sections/FormSprintDetails.vue +156 -0
  607. package/src/modules/governance/views/components/sections/FormTaskDetails.vue +125 -21
  608. package/src/modules/governance/views/components/sections/FormVotingDetails.vue +136 -17
  609. package/src/modules/governance/views/components/sections/VoteForm.vue +2 -2
  610. package/src/modules/governance/views/router/governance.router.js +255 -151
  611. package/src/modules/governance/views/store/initiatives.js +23 -2
  612. package/src/modules/governance/views/store/sprints.js +102 -0
  613. package/src/modules/governance/views/store/tasks.js +25 -9
  614. package/src/modules/governance/views/store/votings.js +106 -27
  615. package/src/modules/icons/icons.client.js +1 -1
  616. package/src/modules/inventory/components/pages/InventoryEdit.vue +1 -1
  617. package/src/modules/music/components/sections/PopularTracks.vue +52 -0
  618. package/src/modules/music/music.client.js +8 -1
  619. package/src/modules/music/router/music.router.js +13 -1
  620. package/src/modules/notifications/components/elements/NotificationBadge.vue +8 -33
  621. package/src/modules/notifications/components/sections/NotificationPreferences.vue +110 -48
  622. package/src/modules/notifications/notifications.client.js +78 -57
  623. package/src/modules/notifications/router/notifications.router.js +32 -15
  624. package/src/modules/notifications/services/notification.service.js +15 -6
  625. package/src/modules/notifications/services/web-push.service.js +2 -0
  626. package/src/modules/orders/components/blocks/CardApplication.vue +20 -40
  627. package/src/modules/orders/components/blocks/CardCustomer.vue +35 -55
  628. package/src/modules/orders/components/blocks/CardOrderItem.vue +2 -2
  629. package/src/modules/orders/components/blocks/CardOrderUser.vue +2 -2
  630. package/src/modules/orders/components/forms/FormCustomerDetails.vue +2 -2
  631. package/src/modules/orders/components/pages/Applications.vue +59 -57
  632. package/src/modules/orders/components/pages/Customers.vue +40 -27
  633. package/src/modules/orders/components/pages/OrderCreate.vue +1 -1
  634. package/src/modules/orders/components/sections/ApplicationDetails.vue +1 -4
  635. package/src/modules/orders/components/sections/CustomerDetails.vue +1 -4
  636. package/src/modules/orders/controllers/orders.controller.js +113 -0
  637. package/src/modules/orders/middlewares/applications.verifier.js +13 -37
  638. package/src/modules/orders/middlewares/customers.verifier.js +44 -121
  639. package/src/modules/orders/models/customer.model.js +0 -1
  640. package/src/modules/orders/routes/applications.routes.js +108 -50
  641. package/src/modules/orders/routes/orders.routes.js +9 -1
  642. package/src/modules/organizations/components/blocks/CardOrganization.vue +12 -4
  643. package/src/modules/organizations/components/forms/DepartmentForm.vue +9 -4
  644. package/src/modules/organizations/components/pages/Members.vue +62 -1
  645. package/src/modules/organizations/components/pages/Organization.new.vue +17 -17
  646. package/src/modules/organizations/components/pages/Organization.vue +8 -1
  647. package/src/modules/organizations/components/pages/OrganizationBackoffice.vue +1 -1
  648. package/src/modules/organizations/components/pages/OrganizationEdit.vue +11 -4
  649. package/src/modules/organizations/components/pages/Organizations.vue +33 -46
  650. package/src/modules/organizations/controllers/invites.controller.js +19 -0
  651. package/src/modules/organizations/controllers/memberships.controller.js +1 -0
  652. package/src/modules/organizations/organizations.client.js +48 -7
  653. package/src/modules/organizations/router/organizations.backoffice.router.js +15 -0
  654. package/src/modules/organizations/router/organizations.router.js +72 -112
  655. package/src/modules/organizations/router/organizations.user.router.js +15 -0
  656. package/src/modules/pages/pages.client.js +1 -1
  657. package/src/modules/pages/views/router/pages.router.js +95 -15
  658. package/src/modules/products/components/blocks/CardPosition.vue +1 -1
  659. package/src/modules/products/components/pages/Products.vue +3 -3
  660. package/src/modules/rents/controllers/services/rents.services.js +1 -0
  661. package/src/modules/rents/rents.client.js +1 -1
  662. package/src/modules/rents/views/router/rents.router.js +93 -33
  663. package/src/modules/reports/reports.client.js +1 -1
  664. package/src/modules/wallet/wallet.client.js +1 -1
  665. package/src/styles/theme.scss +5 -3
  666. package/dist/engagement.schema-fh6W1fb_.js +0 -24
  667. package/dist/main-DQm5pwFO.js +0 -8213
  668. package/dist/martyrs/dist/main-DQm5pwFO.js +0 -1080
  669. package/dist/martyrs/dist/main-DQm5pwFO.js.map +0 -1
  670. package/dist/martyrs/dist/web-n_ivHO3v.js +0 -55
  671. package/dist/martyrs/dist/web-n_ivHO3v.js.map +0 -1
  672. package/dist/martyrs/node_modules/.pnpm/@capacitor_core@7.4.4/node_modules/@capacitor/core/dist/index.js +0 -487
  673. package/dist/martyrs/node_modules/.pnpm/@capacitor_core@7.4.4/node_modules/@capacitor/core/dist/index.js.map +0 -1
  674. package/dist/martyrs/node_modules/.pnpm/@capacitor_preferences@7.0.2_@capacitor_core@7.4.4/node_modules/@capacitor/preferences/dist/esm/index.js +0 -8
  675. package/dist/martyrs/node_modules/.pnpm/@capacitor_preferences@7.0.2_@capacitor_core@7.4.4/node_modules/@capacitor/preferences/dist/esm/index.js.map +0 -1
  676. package/dist/martyrs/node_modules/.pnpm/@capacitor_preferences@7.0.2_@capacitor_core@7.4.4/node_modules/@capacitor/preferences/dist/esm/web.js +0 -73
  677. package/dist/martyrs/node_modules/.pnpm/@capacitor_preferences@7.0.2_@capacitor_core@7.4.4/node_modules/@capacitor/preferences/dist/esm/web.js.map +0 -1
  678. package/dist/martyrs/src/components/Address/Address.vue.js.map +0 -1
  679. package/dist/martyrs/src/components/Button/Button.vue.js.map +0 -1
  680. package/dist/martyrs/src/components/Dropdown/Dropdown.vue2.js.map +0 -1
  681. package/dist/martyrs/src/components/Loader/Loader.vue2.js.map +0 -1
  682. package/dist/martyrs/src/components/LocationMarker/LocationMarker.vue.js.map +0 -1
  683. package/dist/martyrs/src/modules/community/community.router.js +0 -124
  684. package/dist/martyrs/src/modules/community/community.router.js.map +0 -1
  685. package/dist/martyrs/src/modules/icons/icons.router.js.map +0 -1
  686. package/dist/martyrs/src/modules/music/music.router.js.map +0 -1
  687. package/dist/martyrs/src/modules/notifications/notifications.router.js.map +0 -1
  688. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationBackoffice.vue.js +0 -200
  689. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationBackoffice.vue.js.map +0 -1
  690. package/dist/martyrs/src/modules/organizations/organizations.router.js +0 -145
  691. package/dist/martyrs/src/modules/organizations/organizations.router.js.map +0 -1
  692. package/dist/martyrs/src/modules/pages/pages.router.js.map +0 -1
  693. package/dist/martyrs/src/modules/rents/rents.router.js.map +0 -1
  694. package/dist/martyrs/src/modules/reports/reports.router.js.map +0 -1
  695. package/dist/martyrs.css +0 -1
  696. package/dist/node_modules/.pnpm/@capacitor_core@7.4.4/node_modules/@capacitor/core/dist/index.js +0 -487
  697. package/dist/node_modules/.pnpm/@capacitor_core@7.4.4/node_modules/@capacitor/core/dist/index.js.map +0 -1
  698. package/dist/node_modules/.pnpm/@capacitor_device@7.0.1_@capacitor_core@7.4.4/node_modules/@capacitor/device/dist/esm/index.js +0 -8
  699. package/dist/node_modules/.pnpm/@capacitor_device@7.0.1_@capacitor_core@7.4.4/node_modules/@capacitor/device/dist/esm/index.js.map +0 -1
  700. package/dist/node_modules/.pnpm/@capacitor_device@7.0.1_@capacitor_core@7.4.4/node_modules/@capacitor/device/dist/esm/web.js +0 -146
  701. package/dist/node_modules/.pnpm/@capacitor_device@7.0.1_@capacitor_core@7.4.4/node_modules/@capacitor/device/dist/esm/web.js.map +0 -1
  702. package/dist/node_modules/.pnpm/@capacitor_keyboard@7.0.1_@capacitor_core@7.4.4/node_modules/@capacitor/keyboard/dist/esm/definitions.js +0 -18
  703. package/dist/node_modules/.pnpm/@capacitor_keyboard@7.0.1_@capacitor_core@7.4.4/node_modules/@capacitor/keyboard/dist/esm/definitions.js.map +0 -1
  704. package/dist/node_modules/.pnpm/@capacitor_keyboard@7.0.1_@capacitor_core@7.4.4/node_modules/@capacitor/keyboard/dist/esm/index.js +0 -9
  705. package/dist/node_modules/.pnpm/@capacitor_keyboard@7.0.1_@capacitor_core@7.4.4/node_modules/@capacitor/keyboard/dist/esm/index.js.map +0 -1
  706. package/dist/node_modules/.pnpm/@capacitor_push-notifications@7.0.3_@capacitor_core@7.4.4/node_modules/@capacitor/push-notifications/dist/esm/index.js +0 -6
  707. package/dist/node_modules/.pnpm/@capacitor_push-notifications@7.0.3_@capacitor_core@7.4.4/node_modules/@capacitor/push-notifications/dist/esm/index.js.map +0 -1
  708. package/dist/web-n_ivHO3v.js +0 -54
  709. package/src/jit/.claude/settings.local.json +0 -10
  710. package/src/modules/community/community.router.js +0 -107
  711. package/src/modules/governance/governance.router.js +0 -350
  712. package/src/modules/governance/seed-governance.js +0 -348
  713. package/src/modules/governance/views/components/pages/InitiativeMilestones.vue +0 -159
  714. package/src/modules/governance/views/router/goverance.router.js +0 -290
  715. package/src/modules/governance/views/store/votes.js +0 -113
  716. package/src/modules/icons/icons.router.js +0 -29
  717. package/src/modules/marketplace/marketplace.router.js +0 -66
  718. package/src/modules/music/.claude/settings.local.json +0 -8
  719. package/src/modules/music/music.router.js +0 -188
  720. package/src/modules/notifications/notifications.router.js +0 -47
  721. package/src/modules/orders/orders.router.js +0 -255
  722. package/src/modules/organizations/organizations.router.js +0 -123
  723. package/src/modules/organizations/router/backoffice.router.js +0 -27
  724. package/src/modules/organizations/router/departments.router.js +0 -15
  725. package/src/modules/organizations/router/members.router.js +0 -20
  726. package/src/modules/pages/pages.router.js +0 -107
  727. package/src/modules/rents/rents.router.js +0 -115
  728. package/src/modules/reports/reports.router.js +0 -33
  729. package/src/modules/wallet/wallet.router.js +0 -45
@@ -1 +1 @@
1
- {"version":3,"file":"Dashboard.vue.js","sources":["../../../../../../../src/modules/backoffice/components/pages/Dashboard.vue"],"sourcesContent":["<template>\n\t<div class=\"pd-medium bg-white\">\n\t\t<h2 class=\"mn-b-small\">Overview</h2>\n\t\t<div class=\"mn-b-medium cols-3 mobile:cols-1 gap-thin\">\n\t\t\t<Block class=\"pos-relative\">\n\t\t\t\t<span class=\"t-green fw-semi pos-absolute pos-t-small pos-r-small\">+12.5%</span>\n\t\t\t\t<div class=\"mn-b-medium radius-small w-max bg-main\"><IconProfile class=\"i-medium mn-small\"/></div>\n\t\t\t\t<p class=\"h3 mn-b-thin\">2,453</p>\n\t\t\t\t<p>Active Members</p>\n\t\t\t</Block>\n\n\t\t\t<Block class=\"pos-relative\">\n\t\t\t\t<span class=\"t-green fw-semi pos-absolute pos-t-small pos-r-small\">+14.8%</span>\n\t\t\t\t<div class=\"mn-b-medium radius-small w-max bg-main\"><IconOrders class=\"i-medium mn-small\"/></div>\n\t\t\t\t<p class=\"h3 mn-b-thin\">432</p>\n\t\t\t\t<p>New Orders</p>\n\t\t\t</Block>\n\n\t\t\t<Block class=\"pos-relative\">\n\t\t\t\t<span class=\"t-green fw-semi pos-absolute pos-t-small pos-r-small\">+25.1%</span>\n\t\t\t\t<div class=\"mn-b-medium radius-small w-max bg-main\"><IconProfile class=\"i-medium mn-small\"/></div>\n\t\t\t\t<p class=\"h3 mn-b-thin\">$23,232</p>\n\t\t\t\t<p>Monthly Revenue</p>\n\t\t\t</Block>\n\t\t</div>\n\n\t\t<div class=\"cols-2 mobile:cols-1 gap-thin\">\n\t\t\t<Block \n\t\t\t\ttitle=\"Recent Orders\"\n\t\t\t\tclass=\"pos-relative\"\n\t\t\t>\n\t\t\t\t<Feed\n\t :showLoadMore=\"false\"\n\t :LoadMore=\"false\"\n\t :states=\"{\n\t empty: {\n\t title: 'No Events Today',\n\t description: 'Currently, there are no events available.'\n\t }\n\t }\"\n\t :store=\"{\n\t read: (options) => orders.actions.read(options),\n\t state: orders.state\n\t }\"\n\t :options=\"{\n\t user: auth.state.user._id,\n\t limit: 5,\n\t page: 1\n\t }\"\n\t v-slot=\"{ \n\t items \n\t }\"\n\t class=\"cols-1 gap-thin\"\n\t >\n\t\t\t\t\t<Table \n\t\t\t\t\t\tclass=\"radius-semi bg-white\"\n\t\t\t\t\t\t:items=\"items\"\n\t\t\t\t\t\t:columns=\"[{ \n\t\t\t\t\t key: '_id', \n\t\t\t\t\t label: 'ID',\n\t\t\t\t\t\t\tformatter: (value) => `#${value.slice(0, 4)}...${value.slice(-4)}` \n\t\t\t\t\t },\n\t\t\t\t\t { \n\t\t\t\t\t key: 'customer.target.profile.name', \n\t\t\t\t\t label: 'Name',\n\t\t\t\t\t formatter: (value) => `👤 ${value}`\n\t\t\t\t\t },\n\t\t\t\t\t { \n\t\t\t\t\t key: 'positions', \n\t\t\t\t\t label: 'Name',\n\t\t\t\t\t formatter: (value) => value?.length || 0\n\t\t\t\t\t },\n\t\t\t\t\t {\n\t\t\t\t\t key: 'status',\n\t\t\t\t\t label: 'Status',\n\t\t\t\t\t component: StatusBadge\n\t\t\t\t\t },\n\t\t\t\t\t {\n\t\t\t\t\t key: 'createdAt',\n\t\t\t\t\t label: 'Metadata',\n\t\t\t\t\t formatter: (value) => new Date(value).toLocaleDateString()\n\t\t\t\t\t }]\" \n\t\t\t\t\t/>\n\t </Feed>\n\n\t\t\t</Block>\n\n\t\t\t<Block \n\t\t\t\ttitle=\"Activity Feed\"\n\t\t\t\tclass=\"pos-relative\"\n\t\t\t\t>\n\t\t\t</Block>\n\t\t</div>\n\n\t</div>\n\n\n</template>\n\n<script setup=\"props\">\n/////////////////////////////\n// COMPONENT DEPENDENCIES\n/////////////////////////////\nimport { ref, onMounted } from 'vue';\n\n// Mobile Module\nimport Block from '@martyrs/src/components/Block/Block.vue'\nimport Feed from '@martyrs/src/components/Feed/Feed.vue'\nimport Table from '@martyrs/src/components/Table/Table.vue'\nimport StatusBadge from '@martyrs/src/components/Table/StatusBadge.vue'\n\n\nimport IconProfile from '@martyrs/src/modules/icons/entities/IconProfile.vue'\n\nimport IconProducts from '@martyrs/src/modules/icons/entities/IconProducts.vue'\nimport IconEvents from '@martyrs/src/modules/icons/entities/IconEvents.vue'\nimport IconGroups from '@martyrs/src/modules/icons/entities/IconGroups.vue'\nimport IconCommunity from '@martyrs/src/modules/icons/entities/IconCommunity.vue'\nimport IconGallery from '@martyrs/src/modules/icons/entities/IconGallery.vue'\nimport IconOrders from '@martyrs/src/modules/icons/entities/IconOrders.vue'\nimport IconLeftovers from '@martyrs/src/modules/icons/entities/IconLeftovers.vue'\n/////////////////////////////\n// HELPERS\n/////////////////////////////\nimport { useRoute, useRouter } from 'vue-router'\n\nimport * as auth from '@martyrs/src/modules/auth/views/store/auth.js'\nimport * as organizations from '@martyrs/src/modules/organizations/store/organizations.js'\nimport * as orders from '@martyrs/src/modules/orders/store/orders.js'\n\nconst route = useRoute()\nconst router = useRouter()\n/////////////////////////////\n// CREATED\n/////////////////////////////\nconst props = defineProps({\n favorites: Array,\n});\n\nconst selectedOrganization = ref(null);\nconst publics = ref([]);\n\n\nconst columns = [\n \n]\n/////////////////////////////\n// MOUNTED\n/////////////////////////////\nonMounted(async () =>{\n})\n</script>\n\n<style lang=\"scss\">\n</style>"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAkIc,aAAQ;AACP,cAAS;AAQK,QAAI,IAAI;AACrB,QAAI,CAAA,CAAE;AAStB,cAAU,YAAW;AAAA,IACrB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"Dashboard.vue.js","sources":["../../../../../../../src/modules/backoffice/components/pages/Dashboard.vue"],"sourcesContent":["<template>\n\t<div class=\"pd-medium\">\n\t\t<!-- 1. KPI Cards -->\n\t\t<div class=\"flex flex-v-center flex-justify-between mn-b-medium\">\n\t\t\t<h2>Overview</h2>\n\t\t\t<Dropdown align=\"right\" class=\"pos-relative z-index-3\">\n\t\t\t\t<template #label>\n\t\t\t\t\t<div class=\"flex flex-v-center gap-thin bg-light pd-thin pd-l-small pd-r-small radius-small cursor-pointer\">\n\t\t\t\t\t\t<IconCalendar class=\"i-small\" />\n\t\t\t\t\t\t<span class=\"t-small fw-medium\">{{ dateRangeLabel }}</span>\n\t\t\t\t\t</div>\n\t\t\t\t</template>\n\t\t\t\t<Calendar\n\t\t\t\t\tv-model:date=\"dateRange\"\n\t\t\t\t\t:allowRange=\"true\"\n\t\t\t\t\tclass=\"bg-white radius-small pd-small\"\n\t\t\t\t/>\n\t\t\t</Dropdown>\n\t\t</div>\n\t\t<div class=\"mn-b-medium cols-3 mobile:cols-1 gap-small\">\n\t\t\t<CardStat\n\t\t\t\t:icon=\"IconProfile\"\n\t\t\t\ttitle=\"Active Users\"\n\t\t\t\t:displayValue=\"userStats.active?.toLocaleString() || '—'\"\n\t\t\t\t:subtitle=\"userStats.newThisMonth ? `+${userStats.newThisMonth} this month` : ''\"\n\t\t\t/>\n\n\t\t\t<CardStat\n\t\t\t\t:icon=\"IconOrders\"\n\t\t\t\ttitle=\"Total Orders\"\n\t\t\t\t:displayValue=\"orderStats.total?.orderCount?.toLocaleString() || '—'\"\n\t\t\t\t:subtitle=\"orderStats.monthly?.orderCount ? `+${orderStats.monthly.orderCount} this month` : ''\"\n\t\t\t/>\n\n\t\t\t<CardStat\n\t\t\t\t:icon=\"IconCash\"\n\t\t\t\ttitle=\"Total Revenue\"\n\t\t\t\t:displayValue=\"'฿' + (orderStats.total?.totalRevenue?.toLocaleString() || '0')\"\n\t\t\t\t:subtitle=\"orderStats.monthly?.totalRevenue ? `+฿${orderStats.monthly.totalRevenue.toLocaleString()} this month` : ''\"\n\t\t\t/>\n\t\t</div>\n\n\t\t<!-- 2. Revenue Chart — FULL WIDTH -->\n\t\t<Block title=\"Revenue\" class=\"mn-b-medium\">\n\t\t\t<div v-if=\"revenueChart.length\" class=\"pos-relative\" @mouseleave=\"hoveredRevenueIdx = -1\">\n\t\t\t\t<svg viewBox=\"0 0 500 200\" class=\"w-100 d-block\">\n\t\t\t\t\t<!-- Grid lines -->\n\t\t\t\t\t<line v-for=\"(tick, i) in revenueTicks\" :key=\"'rg'+i\" x1=\"50\" x2=\"490\" :y1=\"chartY(tick, maxRevenue)\" :y2=\"chartY(tick, maxRevenue)\" stroke=\"rgb(var(--light))\" stroke-width=\"0.5\"/>\n\t\t\t\t\t<!-- Y labels -->\n\t\t\t\t\t<text v-for=\"(tick, i) in revenueTicks\" :key=\"'ry'+i\" x=\"46\" :y=\"chartY(tick, maxRevenue) + 3\" text-anchor=\"end\" fill=\"rgb(var(--grey))\" font-size=\"10\">{{ formatChartValue(tick) }}</text>\n\t\t\t\t\t<!-- Area fill -->\n\t\t\t\t\t<polygon :points=\"revenueAreaPoints\" fill=\"rgb(var(--second))\" fill-opacity=\"0.06\"/>\n\t\t\t\t\t<!-- Line -->\n\t\t\t\t\t<polyline :points=\"revenueLinePoints\" fill=\"none\" stroke=\"rgb(var(--second))\" stroke-width=\"2\" stroke-linejoin=\"round\" stroke-linecap=\"round\"/>\n\t\t\t\t\t<!-- Interactive hit areas -->\n\t\t\t\t\t<circle v-for=\"(day, i) in revenueChart\" :key=\"'rh'+i\" :cx=\"chartX(i, revenueChart.length)\" :cy=\"chartY(day.revenue, maxRevenue)\" r=\"12\" fill=\"transparent\" @mouseenter=\"hoveredRevenueIdx = i\"/>\n\t\t\t\t\t<!-- Visible dots -->\n\t\t\t\t\t<circle v-for=\"(day, i) in revenueChart\" :key=\"'rd'+i\" :cx=\"chartX(i, revenueChart.length)\" :cy=\"chartY(day.revenue, maxRevenue)\" :r=\"hoveredRevenueIdx === i ? 4 : 2\" :fill=\"hoveredRevenueIdx === i ? 'rgb(var(--main))' : 'rgb(var(--second))'\" style=\"pointer-events: none\"/>\n\t\t\t\t\t<!-- X labels (dates) -->\n\t\t\t\t\t<template v-for=\"(day, i) in revenueChart\" :key=\"'rx'+i\">\n\t\t\t\t\t\t<text v-if=\"i % revenueXStep === 0\" :x=\"chartX(i, revenueChart.length)\" y=\"195\" text-anchor=\"middle\" fill=\"rgb(var(--grey))\" font-size=\"9\">{{ formatXDate(day._id) }}</text>\n\t\t\t\t\t</template>\n\t\t\t\t</svg>\n\t\t\t\t<!-- Hover Tooltip -->\n\t\t\t\t<div\n\t\t\t\t\tv-if=\"hoveredRevenueIdx >= 0\"\n\t\t\t\t\tclass=\"pos-absolute bg-dark t-white pd-thin pd-l-small pd-r-small radius-small t-small fw-medium\"\n\t\t\t\t\tstyle=\"pointer-events: none; white-space: nowrap;\"\n\t\t\t\t\t:style=\"revenueTooltipStyle\"\n\t\t\t\t>\n\t\t\t\t\t฿{{ revenueChart[hoveredRevenueIdx].revenue.toLocaleString() }} · {{ formatXDate(revenueChart[hoveredRevenueIdx]._id) }}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<p v-else class=\"t-transp\">No revenue data</p>\n\t\t</Block>\n\n\t\t<!-- 3. Recent Orders + 4. Upcoming Events -->\n\t\t<div class=\"mn-b-medium cols-2 mobile:cols-1 gap-small\">\n\t\t\t<Block title=\"Recent Orders\">\n\t\t\t\t<Feed\n\t\t\t\t\t:showLoadMore=\"false\"\n\t\t\t\t\t:LoadMore=\"false\"\n\t\t\t\t\t:states=\"{ empty: { title: 'No Orders', description: 'No orders yet.' } }\"\n\t\t\t\t\t:store=\"{ read: (options) => ordersStore.actions.read(options), state: ordersStore.state }\"\n\t\t\t\t\t:options=\"{ limit: 5, page: 1, sortParam: 'createdAt', sortOrder: 'desc', dateStart: dateRange.start, dateEnd: dateRange.end }\"\n\t\t\t\t\tv-slot=\"{ items }\"\n\t\t\t\t>\n\t\t\t\t\t<Table\n\t\t\t\t\t\tclass=\"radius-small bg-white\"\n\t\t\t\t\t\t:items=\"items\"\n\t\t\t\t\t\t:columns=\"orderColumns\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<template #cell-_id=\"{ value }\">\n\t\t\t\t\t\t\t<span class=\"t-dark fw-medium\">#{{ formatId(value) }}</span>\n\t\t\t\t\t\t</template>\n\t\t\t\t\t\t<template #cell-positions=\"{ value }\">\n\t\t\t\t\t\t\t<span class=\"t-dark\">{{ value?.length || 0 }} items</span>\n\t\t\t\t\t\t</template>\n\t\t\t\t\t\t<template #cell-status=\"{ value }\">\n\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\tclass=\"pd-thin pd-l-small pd-r-small radius-small t-small fw-medium\"\n\t\t\t\t\t\t\t\t:class=\"getStatusClass(value)\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{{ value }}\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t</template>\n\t\t\t\t\t\t<template #cell-createdAt=\"{ value }\">\n\t\t\t\t\t\t\t<span class=\"t-dark t-small\">{{ formatDate(value, { dateOnly: true }) }}</span>\n\t\t\t\t\t\t</template>\n\t\t\t\t\t</Table>\n\t\t\t\t</Feed>\n\t\t\t</Block>\n\n\t\t\t<Block title=\"Upcoming Events\">\n\t\t\t\t<Feed\n\t\t\t\t\t:showLoadMore=\"false\"\n\t\t\t\t\t:LoadMore=\"false\"\n\t\t\t\t\t:states=\"{ empty: { title: 'No Events', description: 'No upcoming events.' } }\"\n\t\t\t\t\t:store=\"{ read: (options) => events.read(options), state: events.state }\"\n\t\t\t\t\t:options=\"{ sortParam: 'date.start', sortOrder: 'desc', limit: 5, page: 1 }\"\n\t\t\t\t\tv-slot=\"{ items }\"\n\t\t\t\t\tclass=\"flex flex-column gap-thin\"\n\t\t\t\t>\n\t\t\t\t\t<Card\n\t\t\t\t\t\tv-for=\"event in items\"\n\t\t\t\t\t\t:key=\"event._id\"\n\t\t\t\t\t\t:to=\"`/events/${event.url || event._id}`\"\n\t\t\t\t\t\t:photo=\"event.cover\"\n\t\t\t\t\t\t:placeholder=\"IconEvents\"\n\t\t\t\t\t\t:title=\"event.name\"\n\t\t\t\t\t\t:subtitle=\"formatDate(event.date?.start, { dateOnly: true })\"\n\t\t\t\t\t\tclassImage=\"flex-none w-3r h-3r radius-small bg-main-transp flex flex-center o-hidden\"\n\t\t\t\t\t\tclassContent=\"flex-child o-hidden\"\n\t\t\t\t\t\tclass=\"bg-white pd-small radius-small hover-scale-1 transition-default flex flex-v-center gap-small\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<template #actions>\n\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\tclass=\"flex-none pd-thin pd-l-small pd-r-small radius-small t-small fw-medium\"\n\t\t\t\t\t\t\t\t:class=\"getEventStatusClass(event.date)\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{{ getEventStatus(event.date) }}\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t</template>\n\t\t\t\t\t</Card>\n\t\t\t\t</Feed>\n\t\t\t</Block>\n\t\t</div>\n\n\t\t<!-- 5. Recent Applications + 6. Recent Customers -->\n\t\t<div class=\"mn-b-medium cols-2 mobile:cols-1 gap-small\">\n\t\t\t<Block title=\"Recent Applications\">\n\t\t\t\t<Feed\n\t\t\t\t\t:showLoadMore=\"false\"\n\t\t\t\t\t:LoadMore=\"false\"\n\t\t\t\t\t:states=\"{ empty: { title: 'No Applications', description: 'No applications.' } }\"\n\t\t\t\t\t:store=\"{ read: (options) => applications.read(options), state: applications.state }\"\n\t\t\t\t\t:options=\"{ sortParam: 'createdAt', sortOrder: 'desc', limit: 5, page: 1, dateStart: dateRange.start, dateEnd: dateRange.end }\"\n\t\t\t\t\tv-slot=\"{ items }\"\n\t\t\t\t\tclass=\"flex flex-column gap-thin\"\n\t\t\t\t>\n\t\t\t\t\t<Card\n\t\t\t\t\t\tv-for=\"app in items\"\n\t\t\t\t\t\t:key=\"app._id\"\n\t\t\t\t\t\t:to=\"`/backoffice/applications/${app._id}`\"\n\t\t\t\t\t\t:placeholder=\"IconFile\"\n\t\t\t\t\t\t:title=\"app.profile?.name || app.name || 'Application'\"\n\t\t\t\t\t\t:subtitle=\"formatDate(app.createdAt)\"\n\t\t\t\t\t\tclassImage=\"flex-none w-3r h-3r radius-small bg-main-transp flex flex-center o-hidden\"\n\t\t\t\t\t\tclassContent=\"flex-child o-hidden\"\n\t\t\t\t\t\tclass=\"bg-white pd-small radius-small hover-scale-1 transition-default flex flex-v-center gap-small\"\n\t\t\t\t\t/>\n\t\t\t\t</Feed>\n\t\t\t</Block>\n\n\t\t\t<Block title=\"Recent Customers\">\n\t\t\t\t<Feed\n\t\t\t\t\t:showLoadMore=\"false\"\n\t\t\t\t\t:LoadMore=\"false\"\n\t\t\t\t\t:states=\"{ empty: { title: 'No Customers', description: 'No customers.' } }\"\n\t\t\t\t\t:store=\"{ read: (options) => customers.read(options), state: customers.state }\"\n\t\t\t\t\t:options=\"{ sortParam: 'createdAt', sortOrder: 'desc', limit: 5, page: 1, dateStart: dateRange.start, dateEnd: dateRange.end }\"\n\t\t\t\t\tv-slot=\"{ items }\"\n\t\t\t\t\tclass=\"flex flex-column gap-thin\"\n\t\t\t\t>\n\t\t\t\t\t<Card\n\t\t\t\t\t\tv-for=\"customer in items\"\n\t\t\t\t\t\t:key=\"customer._id\"\n\t\t\t\t\t\t:to=\"`/backoffice/customers/${customer._id}`\"\n\t\t\t\t\t\t:photo=\"customer.avatar || customer.profile?.photo\"\n\t\t\t\t\t\t:placeholder=\"IconProfile\"\n\t\t\t\t\t\t:title=\"customer.profile?.name || customer.name || customer.phone || 'Customer'\"\n\t\t\t\t\t\t:subtitle=\"formatDate(customer.createdAt)\"\n\t\t\t\t\t\tclassImage=\"flex-none w-3r h-3r radius-extra bg-main-transp flex flex-center o-hidden\"\n\t\t\t\t\t\tclassContent=\"flex-child o-hidden\"\n\t\t\t\t\t\tclass=\"bg-white pd-small radius-small hover-scale-1 transition-default flex flex-v-center gap-small\"\n\t\t\t\t\t/>\n\t\t\t\t</Feed>\n\t\t\t</Block>\n\t\t</div>\n\n\t\t<!-- 7. Popular Products — FULL WIDTH -->\n\t\t<Block title=\"Popular Products\" class=\"mn-b-medium\">\n\t\t\t<div v-if=\"orderStats.popularProducts?.length\" class=\"cols-5 tablet:cols-3 mobile:cols-2 gap-small\">\n\t\t\t\t<CardProduct\n\t\t\t\t\tv-for=\"product in orderStats.popularProducts\"\n\t\t\t\t\t:key=\"product._id\"\n\t\t\t\t\t:product=\"product\"\n\t\t\t\t\t:showAddToCart=\"false\"\n\t\t\t\t\tclass=\"bg-white\"\n\t\t\t\t>\n\t\t\t\t\t<p class=\"t-dark t-small mn-t-thin\">{{ product.totalQuantity }} sold · ฿{{ product.totalRevenue?.toLocaleString() }}</p>\n\t\t\t\t</CardProduct>\n\t\t\t</div>\n\t\t\t<p v-else class=\"t-transp\">No product data</p>\n\t\t</Block>\n\n\t\t<!-- 8. Recent Registrations + 9. Upcoming Rents -->\n\t\t<div class=\"mn-b-medium cols-2 mobile:cols-1 gap-small\">\n\t\t\t<Block title=\"Recent Registrations\">\n\t\t\t\t<Feed\n\t\t\t\t\t:showLoadMore=\"false\"\n\t\t\t\t\t:LoadMore=\"false\"\n\t\t\t\t\t:states=\"{ empty: { title: 'No Registrations', description: 'No recent registrations.' } }\"\n\t\t\t\t\t:store=\"{ read: (options) => users.actions.read(options), state: users.state }\"\n\t\t\t\t\t:options=\"{ sortParam: 'createdAt', sortOrder: 'desc', limit: 5, page: 1, dateStart: dateRange.start, dateEnd: dateRange.end }\"\n\t\t\t\t\tv-slot=\"{ items }\"\n\t\t\t\t\tclass=\"flex flex-column gap-thin\"\n\t\t\t\t>\n\t\t\t\t\t<Card\n\t\t\t\t\t\tv-for=\"user in items\"\n\t\t\t\t\t\t:key=\"user._id\"\n\t\t\t\t\t\t:to=\"`/users/${user._id}`\"\n\t\t\t\t\t\t:photo=\"user.avatar || user.profile?.photo\"\n\t\t\t\t\t\t:placeholder=\"IconProfile\"\n\t\t\t\t\t\t:title=\"user.profile?.name || user.username || user.email || 'User'\"\n\t\t\t\t\t\t:subtitle=\"formatDate(user.createdAt)\"\n\t\t\t\t\t\tclassImage=\"flex-none w-3r h-3r radius-extra bg-main-transp flex flex-center o-hidden\"\n\t\t\t\t\t\tclassContent=\"flex-child o-hidden\"\n\t\t\t\t\t\tclass=\"bg-white pd-small radius-small hover-scale-1 transition-default flex flex-v-center gap-small\"\n\t\t\t\t\t/>\n\t\t\t\t</Feed>\n\t\t\t</Block>\n\n\t\t\t<Block title=\"Upcoming Rents\">\n\t\t\t\t<Feed\n\t\t\t\t\t:showLoadMore=\"false\"\n\t\t\t\t\t:LoadMore=\"false\"\n\t\t\t\t\t:search=\"false\"\n\t\t\t\t\t:states=\"{ empty: { title: 'No Rents', description: 'No upcoming bookings.' } }\"\n\t\t\t\t\t:store=\"{ read: (options) => rents.actions.read(options), state: rents.state }\"\n\t\t\t\t\t:options=\"{ sortParam: 'startDate', sortOrder: 'desc', limit: 5 }\"\n\t\t\t\t\tv-slot=\"{ items }\"\n\t\t\t\t\tclass=\"flex flex-column gap-thin\"\n\t\t\t\t>\n\t\t\t\t\t<Card\n\t\t\t\t\t\tv-for=\"rent in items\"\n\t\t\t\t\t\t:key=\"rent._id\"\n\t\t\t\t\t\t:to=\"`/backoffice/orders/${rent.order}`\"\n\t\t\t\t\t\t:placeholder=\"IconCalendar\"\n\t\t\t\t\t\t:title=\"rent.product?.name || 'Rent'\"\n\t\t\t\t\t\t:subtitle=\"`${formatDate(rent.startDate)} — ${formatDate(rent.endDate)}`\"\n\t\t\t\t\t\tclassImage=\"flex-none w-3r h-3r radius-small bg-main-transp flex flex-center o-hidden\"\n\t\t\t\t\t\tclassContent=\"flex-child o-hidden\"\n\t\t\t\t\t\tclass=\"bg-white pd-small radius-small hover-scale-1 transition-default flex flex-v-center gap-small\"\n\t\t\t\t\t/>\n\t\t\t\t</Feed>\n\t\t\t</Block>\n\t\t</div>\n\t</div>\n</template>\n\n<script setup>\nimport { ref, computed, watchEffect } from 'vue'\nimport { useRoute } from 'vue-router'\n\nimport Block from '@martyrs/src/components/Block/Block.vue'\nimport Feed from '@martyrs/src/components/Feed/Feed.vue'\nimport Table from '@martyrs/src/components/Table/Table.vue'\nimport Dropdown from '@martyrs/src/components/Dropdown/Dropdown.vue'\nimport Calendar from '@martyrs/src/components/Calendar/Calendar.vue'\nimport Card from '@martyrs/src/modules/core/views/components/blocks/Card.vue'\nimport CardStat from '@martyrs/src/modules/core/views/components/blocks/CardStat.vue'\nimport CardProduct from '@martyrs/src/modules/products/components/blocks/CardProduct.vue'\n\nimport IconProfile from '@martyrs/src/modules/icons/entities/IconProfile.vue'\nimport IconOrders from '@martyrs/src/modules/icons/entities/IconOrders.vue'\nimport IconCash from '@martyrs/src/modules/icons/entities/IconCash.vue'\nimport IconEvents from '@martyrs/src/modules/icons/entities/IconEvents.vue'\nimport IconFile from '@martyrs/src/modules/icons/entities/IconFile.vue'\nimport IconCalendar from '@martyrs/src/modules/icons/entities/IconCalendar.vue'\n\nimport { useGlobalMixins } from '@martyrs/src/modules/core/views/mixins/mixins.js'\nimport $axios from '@martyrs/src/modules/core/views/utils/axios-instance.js'\nimport * as ordersStore from '@martyrs/src/modules/orders/store/orders.js'\nimport * as events from '@martyrs/src/modules/events/store/events.js'\nimport * as rents from '@martyrs/src/modules/rents/views/store/rents.store.js'\nimport applications from '@martyrs/src/modules/orders/store/applications.js'\nimport customers from '@martyrs/src/modules/orders/store/customers.store.js'\nimport * as users from '@martyrs/src/modules/auth/views/store/users.js'\n\nconst route = useRoute()\nconst { formatDate } = useGlobalMixins()\n\nconst orderStats = ref({})\nconst userStats = ref({})\nconst hoveredRevenueIdx = ref(-1)\n\nconst dateRange = ref({\n\tstart: new Date(Date.now() - 7 * 24 * 60 * 60 * 1000),\n\tend: new Date()\n})\n\nconst dateRangeLabel = computed(() => {\n\tif (!dateRange.value?.start || !dateRange.value?.end) return 'Select dates'\n\treturn formatDate(dateRange.value.start, { dayMonth: true }) + ' — ' + formatDate(dateRange.value.end, { dayMonth: true })\n})\n\n\n// Order table columns\nconst orderColumns = [\n\t{ key: '_id', label: 'Order' },\n\t{ key: 'positions', label: 'Items' },\n\t{ key: 'status', label: 'Status' },\n\t{ key: 'createdAt', label: 'Date' }\n]\n\n// Chart constants: viewBox 500x200, chart area x:50-490 y:20-170\nconst CHART_LEFT = 50\nconst CHART_RIGHT = 490\nconst CHART_TOP = 20\nconst CHART_BOTTOM = 170\n\nfunction chartX(i, total) {\n\tif (total <= 1) return (CHART_LEFT + CHART_RIGHT) / 2\n\treturn CHART_LEFT + (i / (total - 1)) * (CHART_RIGHT - CHART_LEFT)\n}\n\nfunction chartY(value, max) {\n\tif (!max) return CHART_BOTTOM\n\treturn CHART_BOTTOM - (value / max) * (CHART_BOTTOM - CHART_TOP)\n}\n\nfunction calcTicks(max) {\n\tif (!max || max <= 0) return [0]\n\tconst step = Math.pow(10, Math.floor(Math.log10(max))) / 2\n\tconst ticks = []\n\tfor (let v = 0; v <= max; v += step) ticks.push(Math.round(v))\n\tif (ticks[ticks.length - 1] < max) ticks.push(Math.round(max))\n\treturn ticks.length > 6 ? ticks.filter((_, i) => i % 2 === 0) : ticks\n}\n\nfunction formatChartValue(val) {\n\tif (val >= 1000) return '฿' + Math.round(val / 1000) + 'k'\n\treturn '฿' + Math.round(val)\n}\n\nfunction calcXStep(count) {\n\tif (count <= 8) return 1\n\tif (count <= 16) return 2\n\tif (count <= 30) return 5\n\treturn 7\n}\n\nconst revenueChart = computed(() => {\n\tconst data = orderStats.value.dailyRevenue\n\tif (!data?.length) return []\n\treturn data.slice(-30)\n})\n\nconst maxRevenue = computed(() => {\n\tif (!revenueChart.value.length) return 1\n\treturn Math.max(...revenueChart.value.map(d => d.revenue)) || 1\n})\n\nconst revenueTicks = computed(() => calcTicks(maxRevenue.value))\nconst revenueXStep = computed(() => calcXStep(revenueChart.value.length))\n\nconst revenueLinePoints = computed(() => {\n\treturn revenueChart.value.map((d, i) =>\n\t\t`${chartX(i, revenueChart.value.length)},${chartY(d.revenue, maxRevenue.value)}`\n\t).join(' ')\n})\n\nconst revenueAreaPoints = computed(() => {\n\tif (!revenueChart.value.length) return ''\n\tconst len = revenueChart.value.length\n\treturn `${chartX(0, len)},${CHART_BOTTOM} ${revenueLinePoints.value} ${chartX(len - 1, len)},${CHART_BOTTOM}`\n})\n\nconst revenueTooltipStyle = computed(() => {\n\tif (hoveredRevenueIdx.value < 0) return {}\n\tconst i = hoveredRevenueIdx.value\n\tconst len = revenueChart.value.length\n\tconst day = revenueChart.value[i]\n\tconst x = chartX(i, len)\n\tconst y = chartY(day.revenue, maxRevenue.value)\n\treturn {\n\t\tleft: `${(x / 500) * 100}%`,\n\t\ttop: `${(y / 200) * 100}%`,\n\t\ttransform: 'translate(-50%, -100%) translateY(-0.5rem)'\n\t}\n})\n\n// Formatters\nfunction formatId(id) {\n\treturn id ? `${id.slice(0, 4)}...${id.slice(-4)}` : ''\n}\n\nfunction formatXDate(dateStr) {\n\tif (!dateStr) return ''\n\treturn formatDate(dateStr, { dayMonth: true })\n}\n\nfunction getStatusClass(status) {\n\tconst classes = {\n\t\tpending: 'bg-second-transp t-second',\n\t\tprocessing: 'bg-main-transp t-main',\n\t\tcreated: 'bg-main-transp t-main',\n\t\tconfirmed: 'bg-green-transp t-green',\n\t\tcompleted: 'bg-green-transp t-green',\n\t\tcancelled: 'bg-red-transp t-red'\n\t}\n\treturn classes[status] || 'bg-light t-dark'\n}\n\nfunction getEventStatus(date) {\n\tif (!date?.start) return 'No date'\n\tconst now = new Date()\n\tconst start = new Date(date.start)\n\tconst end = date.end ? new Date(date.end) : start\n\tif (now > end) return 'Finished'\n\tif (now >= start && now <= end) return 'Live'\n\tconst diffDays = Math.ceil((start - now) / (1000 * 60 * 60 * 24))\n\tif (diffDays <= 1) return 'Tomorrow'\n\tif (diffDays <= 7) return `In ${diffDays} days`\n\treturn 'Upcoming'\n}\n\nfunction getEventStatusClass(date) {\n\tconst status = getEventStatus(date)\n\tif (status === 'Finished') return 'bg-light t-dark'\n\tif (status === 'Live') return 'bg-green-transp t-green'\n\tif (status === 'Tomorrow') return 'bg-second-transp t-second'\n\treturn 'bg-main-transp t-main'\n}\n\nwatchEffect(async () => {\n\tconst params = {}\n\tif (dateRange.value?.start) params.startDate = new Date(dateRange.value.start).toISOString()\n\tif (dateRange.value?.end) params.endDate = new Date(dateRange.value.end).toISOString()\n\tconst [orders, stats] = await Promise.all([\n\t\t$axios.get('/api/orders/stats', { params }),\n\t\t$axios.get('/api/users/stats', { params })\n\t])\n\torderStats.value = orders.data\n\tuserStats.value = stats.data\n})\n</script>\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuUA,MAAM,aAAa;AACnB,MAAM,cAAc;AACpB,MAAM,YAAY;AAClB,MAAM,eAAe;;;;AA9BP,aAAQ;AACtB,UAAM,EAAE,WAAU,IAAK,gBAAe;AAEtC,UAAM,aAAa,IAAI,CAAA,CAAE;AACzB,UAAM,YAAY,IAAI,CAAA,CAAE;AACxB,UAAM,oBAAoB,IAAI,EAAE;AAEhC,UAAM,YAAY,IAAI;AAAA,MACrB,OAAO,IAAI,KAAK,KAAK,IAAG,IAAK,IAAI,KAAK,KAAK,KAAK,GAAI;AAAA,MACpD,KAAK,oBAAI,KAAI;AAAA,IACd,CAAC;AAED,UAAM,iBAAiB,SAAS,MAAM;AACrC,UAAI,CAAC,UAAU,OAAO,SAAS,CAAC,UAAU,OAAO,IAAK,QAAO;AAC7D,aAAO,WAAW,UAAU,MAAM,OAAO,EAAE,UAAU,KAAI,CAAE,IAAI,QAAQ,WAAW,UAAU,MAAM,KAAK,EAAE,UAAU,KAAI,CAAE;AAAA,IAC1H,CAAC;AAID,UAAM,eAAe;AAAA,MACpB,EAAE,KAAK,OAAO,OAAO,QAAO;AAAA,MAC5B,EAAE,KAAK,aAAa,OAAO,QAAO;AAAA,MAClC,EAAE,KAAK,UAAU,OAAO,SAAQ;AAAA,MAChC,EAAE,KAAK,aAAa,OAAO,OAAM;AAAA,IAClC;AAQA,aAAS,OAAO,GAAG,OAAO;AACzB,UAAI,SAAS,EAAG,SAAQ,aAAa,eAAe;AACpD,aAAO,aAAc,KAAK,QAAQ,MAAO,cAAc;AAAA,IACxD;AAEA,aAAS,OAAO,OAAO,KAAK;AAC3B,UAAI,CAAC,IAAK,QAAO;AACjB,aAAO,eAAgB,QAAQ,OAAQ,eAAe;AAAA,IACvD;AAEA,aAAS,UAAU,KAAK;AACvB,UAAI,CAAC,OAAO,OAAO,EAAG,QAAO,CAAC,CAAC;AAC/B,YAAM,OAAO,KAAK,IAAI,IAAI,KAAK,MAAM,KAAK,MAAM,GAAG,CAAC,CAAC,IAAI;AACzD,YAAM,QAAQ,CAAA;AACd,eAAS,IAAI,GAAG,KAAK,KAAK,KAAK,KAAM,OAAM,KAAK,KAAK,MAAM,CAAC,CAAC;AAC7D,UAAI,MAAM,MAAM,SAAS,CAAC,IAAI,IAAK,OAAM,KAAK,KAAK,MAAM,GAAG,CAAC;AAC7D,aAAO,MAAM,SAAS,IAAI,MAAM,OAAO,CAAC,GAAG,MAAM,IAAI,MAAM,CAAC,IAAI;AAAA,IACjE;AAEA,aAAS,iBAAiB,KAAK;AAC9B,UAAI,OAAO,IAAM,QAAO,MAAM,KAAK,MAAM,MAAM,GAAI,IAAI;AACvD,aAAO,MAAM,KAAK,MAAM,GAAG;AAAA,IAC5B;AAEA,aAAS,UAAU,OAAO;AACzB,UAAI,SAAS,EAAG,QAAO;AACvB,UAAI,SAAS,GAAI,QAAO;AACxB,UAAI,SAAS,GAAI,QAAO;AACxB,aAAO;AAAA,IACR;AAEA,UAAM,eAAe,SAAS,MAAM;AACnC,YAAM,OAAO,WAAW,MAAM;AAC9B,UAAI,CAAC,MAAM,OAAQ,QAAO,CAAA;AAC1B,aAAO,KAAK,MAAM,GAAG;AAAA,IACtB,CAAC;AAED,UAAM,aAAa,SAAS,MAAM;AACjC,UAAI,CAAC,aAAa,MAAM,OAAQ,QAAO;AACvC,aAAO,KAAK,IAAI,GAAG,aAAa,MAAM,IAAI,OAAK,EAAE,OAAO,CAAC,KAAK;AAAA,IAC/D,CAAC;AAED,UAAM,eAAe,SAAS,MAAM,UAAU,WAAW,KAAK,CAAC;AAC/D,UAAM,eAAe,SAAS,MAAM,UAAU,aAAa,MAAM,MAAM,CAAC;AAExE,UAAM,oBAAoB,SAAS,MAAM;AACxC,aAAO,aAAa,MAAM;AAAA,QAAI,CAAC,GAAG,MACjC,GAAG,OAAO,GAAG,aAAa,MAAM,MAAM,CAAC,IAAI,OAAO,EAAE,SAAS,WAAW,KAAK,CAAC;AAAA,MAChF,EAAG,KAAK,GAAG;AAAA,IACX,CAAC;AAED,UAAM,oBAAoB,SAAS,MAAM;AACxC,UAAI,CAAC,aAAa,MAAM,OAAQ,QAAO;AACvC,YAAM,MAAM,aAAa,MAAM;AAC/B,aAAO,GAAG,OAAO,GAAG,GAAG,CAAC,IAAI,YAAY,IAAI,kBAAkB,KAAK,IAAI,OAAO,MAAM,GAAG,GAAG,CAAC,IAAI,YAAY;AAAA,IAC5G,CAAC;AAED,UAAM,sBAAsB,SAAS,MAAM;AAC1C,UAAI,kBAAkB,QAAQ,EAAG,QAAO,CAAA;AACxC,YAAM,IAAI,kBAAkB;AAC5B,YAAM,MAAM,aAAa,MAAM;AAC/B,YAAM,MAAM,aAAa,MAAM,CAAC;AAChC,YAAM,IAAI,OAAO,GAAG,GAAG;AACvB,YAAM,IAAI,OAAO,IAAI,SAAS,WAAW,KAAK;AAC9C,aAAO;AAAA,QACN,MAAM,GAAI,IAAI,MAAO,GAAG;AAAA,QACxB,KAAK,GAAI,IAAI,MAAO,GAAG;AAAA,QACvB,WAAW;AAAA,MACb;AAAA,IACA,CAAC;AAGD,aAAS,SAAS,IAAI;AACrB,aAAO,KAAK,GAAG,GAAG,MAAM,GAAG,CAAC,CAAC,MAAM,GAAG,MAAM,EAAE,CAAC,KAAK;AAAA,IACrD;AAEA,aAAS,YAAY,SAAS;AAC7B,UAAI,CAAC,QAAS,QAAO;AACrB,aAAO,WAAW,SAAS,EAAE,UAAU,KAAI,CAAE;AAAA,IAC9C;AAEA,aAAS,eAAe,QAAQ;AAC/B,YAAM,UAAU;AAAA,QACf,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,SAAS;AAAA,QACT,WAAW;AAAA,QACX,WAAW;AAAA,QACX,WAAW;AAAA,MACb;AACC,aAAO,QAAQ,MAAM,KAAK;AAAA,IAC3B;AAEA,aAAS,eAAe,MAAM;AAC7B,UAAI,CAAC,MAAM,MAAO,QAAO;AACzB,YAAM,MAAM,oBAAI,KAAI;AACpB,YAAM,QAAQ,IAAI,KAAK,KAAK,KAAK;AACjC,YAAM,MAAM,KAAK,MAAM,IAAI,KAAK,KAAK,GAAG,IAAI;AAC5C,UAAI,MAAM,IAAK,QAAO;AACtB,UAAI,OAAO,SAAS,OAAO,IAAK,QAAO;AACvC,YAAM,WAAW,KAAK,MAAM,QAAQ,QAAQ,MAAO,KAAK,KAAK,GAAG;AAChE,UAAI,YAAY,EAAG,QAAO;AAC1B,UAAI,YAAY,EAAG,QAAO,MAAM,QAAQ;AACxC,aAAO;AAAA,IACR;AAEA,aAAS,oBAAoB,MAAM;AAClC,YAAM,SAAS,eAAe,IAAI;AAClC,UAAI,WAAW,WAAY,QAAO;AAClC,UAAI,WAAW,OAAQ,QAAO;AAC9B,UAAI,WAAW,WAAY,QAAO;AAClC,aAAO;AAAA,IACR;AAEA,gBAAY,YAAY;AACvB,YAAM,SAAS,CAAA;AACf,UAAI,UAAU,OAAO,MAAO,QAAO,YAAY,IAAI,KAAK,UAAU,MAAM,KAAK,EAAE,YAAW;AAC1F,UAAI,UAAU,OAAO,IAAK,QAAO,UAAU,IAAI,KAAK,UAAU,MAAM,GAAG,EAAE,YAAW;AACpF,YAAM,CAAC,QAAQ,KAAK,IAAI,MAAM,QAAQ,IAAI;AAAA,QACzC,OAAO,IAAI,qBAAqB,EAAE,OAAM,CAAE;AAAA,QAC1C,OAAO,IAAI,oBAAoB,EAAE,OAAM,CAAE;AAAA,MAC3C,CAAE;AACD,iBAAW,QAAQ,OAAO;AAC1B,gBAAU,QAAQ,MAAM;AAAA,IACzB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -9,13 +9,11 @@ import _sfc_main$3 from "../../icons/entities/IconLeftovers.vue.js";
9
9
  const navigationItems = [
10
10
  {
11
11
  category: "Menu",
12
- visible: () => true,
13
12
  items: [
14
13
  {
15
14
  title: "Organizations",
16
15
  iconComponent: _sfc_main,
17
- route: () => "/backoffice/organizations",
18
- visible: () => true
16
+ route: () => "/backoffice/organizations"
19
17
  },
20
18
  {
21
19
  title: "Community",
@@ -1 +1 @@
1
- {"version":3,"file":"navigation.backoffice.config.js","sources":["../../../../../../src/modules/backoffice/configs/navigation.backoffice.config.js"],"sourcesContent":["// Import icons\nimport IconProducts from '@martyrs/src/modules/icons/entities/IconProducts.vue'\nimport IconPayments from '@martyrs/src/modules/icons/entities/IconPayments.vue'\nimport IconEvents from '@martyrs/src/modules/icons/entities/IconEvents.vue'\nimport IconGroups from '@martyrs/src/modules/icons/entities/IconGroups.vue'\nimport IconCommunity from '@martyrs/src/modules/icons/entities/IconCommunity.vue'\nimport IconGallery from '@martyrs/src/modules/icons/entities/IconGallery.vue'\nimport IconOrders from '@martyrs/src/modules/icons/entities/IconOrders.vue'\nimport IconLeftovers from '@martyrs/src/modules/icons/entities/IconLeftovers.vue'\n\n// Backoffice navigation configuration\nexport const navigationItems = [\n {\n category: 'Menu',\n visible: () => true,\n items: [\n {\n title: 'Organizations',\n iconComponent: IconGroups,\n route: () => '/backoffice/organizations',\n visible: () => true\n },\n {\n title: 'Community',\n iconComponent: IconCommunity,\n route: () => '/backoffice/community',\n visible: () => true\n },\n {\n title: 'Products',\n iconComponent: IconProducts,\n route: () => '/backoffice/products',\n visible: () => true\n },\n {\n title: 'Inventory',\n iconComponent: IconLeftovers,\n route: () => '/backoffice/inventory',\n visible: () => true\n },\n {\n title: 'Orders',\n iconComponent: IconOrders,\n route: () => '/backoffice/orders',\n visible: () => true\n },\n {\n title: 'Gallery',\n iconComponent: IconGallery,\n route: () => '/backoffice/gallery',\n visible: () => true\n },\n {\n title: 'Applications',\n iconComponent: IconEvents,\n route: () => '/backoffice/applications',\n visible: () => true\n },\n {\n title: 'Events',\n iconComponent: IconEvents,\n route: () => '/backoffice/events',\n visible: () => true\n }\n ]\n },\n {\n category: 'General',\n visible: () => true,\n items: [\n {\n title: 'Payments',\n iconComponent: IconPayments,\n route: () => '/backoffice/payments',\n visible: () => true\n },\n {\n title: 'Users',\n iconComponent: null,\n route: () => '/backoffice/users',\n visible: () => true\n },\n {\n title: 'Pages',\n iconComponent: null,\n route: () => '/backoffice/pages',\n visible: () => true\n },\n {\n title: 'Reports',\n iconComponent: null,\n route: () => '/backoffice/reports',\n visible: () => true\n }\n ]\n }\n]\n\nexport default navigationItems\n"],"names":["IconGroups","IconCommunity","IconProducts","IconLeftovers","IconOrders","IconGallery","IconEvents","IconPayments"],"mappings":";;;;;;;;AAWY,MAAC,kBAAkB;AAAA,EAC7B;AAAA,IACE,UAAU;AAAA,IACV,SAAS,MAAM;AAAA,IACf,OAAO;AAAA,MACL;AAAA,QACE,OAAO;AAAA,QACP,eAAeA;AAAAA,QACf,OAAO,MAAM;AAAA,QACb,SAAS,MAAM;AAAA,MACvB;AAAA,MACM;AAAA,QACE,OAAO;AAAA,QACP,eAAeC;AAAAA,QACf,OAAO,MAAM;AAAA,QACb,SAAS,MAAM;AAAA,MACvB;AAAA,MACM;AAAA,QACE,OAAO;AAAA,QACP,eAAeC;AAAAA,QACf,OAAO,MAAM;AAAA,QACb,SAAS,MAAM;AAAA,MACvB;AAAA,MACM;AAAA,QACE,OAAO;AAAA,QACP,eAAeC;AAAAA,QACf,OAAO,MAAM;AAAA,QACb,SAAS,MAAM;AAAA,MACvB;AAAA,MACM;AAAA,QACE,OAAO;AAAA,QACP,eAAeC;AAAAA,QACf,OAAO,MAAM;AAAA,QACb,SAAS,MAAM;AAAA,MACvB;AAAA,MACM;AAAA,QACE,OAAO;AAAA,QACP,eAAeC;AAAAA,QACf,OAAO,MAAM;AAAA,QACb,SAAS,MAAM;AAAA,MACvB;AAAA,MACM;AAAA,QACE,OAAO;AAAA,QACP,eAAeC;AAAAA,QACf,OAAO,MAAM;AAAA,QACb,SAAS,MAAM;AAAA,MACvB;AAAA,MACM;AAAA,QACE,OAAO;AAAA,QACP,eAAeA;AAAAA,QACf,OAAO,MAAM;AAAA,QACb,SAAS,MAAM;AAAA,MACvB;AAAA,IACA;AAAA,EACA;AAAA,EACE;AAAA,IACE,UAAU;AAAA,IACV,SAAS,MAAM;AAAA,IACf,OAAO;AAAA,MACL;AAAA,QACE,OAAO;AAAA,QACP,eAAeC;AAAAA,QACf,OAAO,MAAM;AAAA,QACb,SAAS,MAAM;AAAA,MACvB;AAAA,MACM;AAAA,QACE,OAAO;AAAA,QACP,eAAe;AAAA,QACf,OAAO,MAAM;AAAA,QACb,SAAS,MAAM;AAAA,MACvB;AAAA,MACM;AAAA,QACE,OAAO;AAAA,QACP,eAAe;AAAA,QACf,OAAO,MAAM;AAAA,QACb,SAAS,MAAM;AAAA,MACvB;AAAA,MACM;AAAA,QACE,OAAO;AAAA,QACP,eAAe;AAAA,QACf,OAAO,MAAM;AAAA,QACb,SAAS,MAAM;AAAA,MACvB;AAAA,IACA;AAAA,EACA;AACA;"}
1
+ {"version":3,"file":"navigation.backoffice.config.js","sources":["../../../../../../src/modules/backoffice/configs/navigation.backoffice.config.js"],"sourcesContent":["// Import icons\nimport IconProducts from '@martyrs/src/modules/icons/entities/IconProducts.vue'\nimport IconPayments from '@martyrs/src/modules/icons/entities/IconPayments.vue'\nimport IconEvents from '@martyrs/src/modules/icons/entities/IconEvents.vue'\nimport IconGroups from '@martyrs/src/modules/icons/entities/IconGroups.vue'\nimport IconCommunity from '@martyrs/src/modules/icons/entities/IconCommunity.vue'\nimport IconGallery from '@martyrs/src/modules/icons/entities/IconGallery.vue'\nimport IconOrders from '@martyrs/src/modules/icons/entities/IconOrders.vue'\nimport IconLeftovers from '@martyrs/src/modules/icons/entities/IconLeftovers.vue'\n\n// Backoffice navigation configuration\nexport const navigationItems = [\n {\n category: 'Menu',\n items: [\n {\n title: 'Organizations',\n iconComponent: IconGroups,\n route: () => '/backoffice/organizations',\n },\n {\n title: 'Community',\n iconComponent: IconCommunity,\n route: () => '/backoffice/community',\n visible: () => true\n },\n {\n title: 'Products',\n iconComponent: IconProducts,\n route: () => '/backoffice/products',\n visible: () => true\n },\n {\n title: 'Inventory',\n iconComponent: IconLeftovers,\n route: () => '/backoffice/inventory',\n visible: () => true\n },\n {\n title: 'Orders',\n iconComponent: IconOrders,\n route: () => '/backoffice/orders',\n visible: () => true\n },\n {\n title: 'Gallery',\n iconComponent: IconGallery,\n route: () => '/backoffice/gallery',\n visible: () => true\n },\n {\n title: 'Applications',\n iconComponent: IconEvents,\n route: () => '/backoffice/applications',\n visible: () => true\n },\n {\n title: 'Events',\n iconComponent: IconEvents,\n route: () => '/backoffice/events',\n visible: () => true\n }\n ]\n },\n {\n category: 'General',\n visible: () => true,\n items: [\n {\n title: 'Payments',\n iconComponent: IconPayments,\n route: () => '/backoffice/payments',\n visible: () => true\n },\n {\n title: 'Users',\n iconComponent: null,\n route: () => '/backoffice/users',\n visible: () => true\n },\n {\n title: 'Pages',\n iconComponent: null,\n route: () => '/backoffice/pages',\n visible: () => true\n },\n {\n title: 'Reports',\n iconComponent: null,\n route: () => '/backoffice/reports',\n visible: () => true\n }\n ]\n }\n]\n\nexport default navigationItems\n"],"names":["IconGroups","IconCommunity","IconProducts","IconLeftovers","IconOrders","IconGallery","IconEvents","IconPayments"],"mappings":";;;;;;;;AAWY,MAAC,kBAAkB;AAAA,EAC7B;AAAA,IACE,UAAU;AAAA,IACV,OAAO;AAAA,MACL;AAAA,QACE,OAAO;AAAA,QACP,eAAeA;AAAAA,QACf,OAAO,MAAM;AAAA,MACrB;AAAA,MACM;AAAA,QACE,OAAO;AAAA,QACP,eAAeC;AAAAA,QACf,OAAO,MAAM;AAAA,QACb,SAAS,MAAM;AAAA,MACvB;AAAA,MACM;AAAA,QACE,OAAO;AAAA,QACP,eAAeC;AAAAA,QACf,OAAO,MAAM;AAAA,QACb,SAAS,MAAM;AAAA,MACvB;AAAA,MACM;AAAA,QACE,OAAO;AAAA,QACP,eAAeC;AAAAA,QACf,OAAO,MAAM;AAAA,QACb,SAAS,MAAM;AAAA,MACvB;AAAA,MACM;AAAA,QACE,OAAO;AAAA,QACP,eAAeC;AAAAA,QACf,OAAO,MAAM;AAAA,QACb,SAAS,MAAM;AAAA,MACvB;AAAA,MACM;AAAA,QACE,OAAO;AAAA,QACP,eAAeC;AAAAA,QACf,OAAO,MAAM;AAAA,QACb,SAAS,MAAM;AAAA,MACvB;AAAA,MACM;AAAA,QACE,OAAO;AAAA,QACP,eAAeC;AAAAA,QACf,OAAO,MAAM;AAAA,QACb,SAAS,MAAM;AAAA,MACvB;AAAA,MACM;AAAA,QACE,OAAO;AAAA,QACP,eAAeA;AAAAA,QACf,OAAO,MAAM;AAAA,QACb,SAAS,MAAM;AAAA,MACvB;AAAA,IACA;AAAA,EACA;AAAA,EACE;AAAA,IACE,UAAU;AAAA,IACV,SAAS,MAAM;AAAA,IACf,OAAO;AAAA,MACL;AAAA,QACE,OAAO;AAAA,QACP,eAAeC;AAAAA,QACf,OAAO,MAAM;AAAA,QACb,SAAS,MAAM;AAAA,MACvB;AAAA,MACM;AAAA,QACE,OAAO;AAAA,QACP,eAAe;AAAA,QACf,OAAO,MAAM;AAAA,QACb,SAAS,MAAM;AAAA,MACvB;AAAA,MACM;AAAA,QACE,OAAO;AAAA,QACP,eAAe;AAAA,QACf,OAAO,MAAM;AAAA,QACb,SAAS,MAAM;AAAA,MACvB;AAAA,MACM;AAAA,QACE,OAAO;AAAA,QACP,eAAe;AAAA,QACf,OAAO,MAAM;AAAA,QACb,SAAS,MAAM;AAAA,MACvB;AAAA,IACA;AAAA,EACA;AACA;"}
@@ -13,8 +13,7 @@ function getRoutes(options = {}) {
13
13
  name: "Backoffice Root",
14
14
  meta: {
15
15
  sidebar_navigation: Navigation,
16
- sidebar_navigation_items: navigationItems,
17
- sidebar_width_hidden: "w-2r"
16
+ sidebar_navigation_items: navigationItems
18
17
  },
19
18
  props: {
20
19
  newsletterPopup: 12344
@@ -39,36 +38,6 @@ function getRoutes(options = {}) {
39
38
  /* webpackChunkName: 'BackofficeGallery' */
40
39
  "../components/pages/Dashboard.vue.js"
41
40
  )
42
- },
43
- {
44
- path: "organizations",
45
- name: "Backoffice Organizations",
46
- meta: {
47
- title: {
48
- en: "Backoffice Organizations",
49
- ru: "Управление Организациями"
50
- },
51
- authorize: []
52
- },
53
- component: () => import(
54
- /* webpackChunkName: 'BackofficeOrganizations' */
55
- "../../organizations/components/pages/Organizations.vue.js"
56
- )
57
- },
58
- {
59
- path: "community",
60
- name: "Backoffice Community",
61
- meta: {
62
- title: {
63
- en: "Backoffice Community",
64
- ru: "Управление Сообществом"
65
- },
66
- authorize: []
67
- },
68
- component: () => import(
69
- /* webpackChunkName: 'BackofficeCommunity' */
70
- "../../community/components/pages/Blog.vue.js"
71
- )
72
41
  }
73
42
  ]
74
43
  }
@@ -1 +1 @@
1
- {"version":3,"file":"backoffice.router.js","sources":["../../../../../../src/modules/backoffice/router/backoffice.router.js"],"sourcesContent":["import Navigation from '@martyrs/src/modules/core/views/components/partials/Navigation.vue'\nimport { navigationItems } from '../configs/navigation.backoffice.config.js'\n\nexport function getRoutes(options = {}) {\n const route = options.route || 'Home';\n const routes = [];\n\n routes.push({\n parentName: route,\n config: {\n basePath: 'backoffice',\n routes: [\n {\n path: '',\n name: 'Backoffice Root',\n meta: {\n sidebar_navigation: Navigation,\n sidebar_navigation_items: navigationItems,\n sidebar_width_hidden: 'w-2r',\n },\n props: {\n newsletterPopup: 12344,\n },\n beforeEnter: [\n () => import(/* webpackChunkName: \"auth-validation\" */ '@martyrs/src/modules/auth/views/middlewares/auth.validation.js').then(m => m.requiresAdmin),\n ],\n children: [\n {\n path: '',\n name: 'Backoffice Admin',\n meta: {\n title: {\n en: 'Backoffice',\n ru: 'Управление',\n },\n },\n component: () => import(/* webpackChunkName: 'BackofficeGallery' */ '../components/pages/Dashboard.vue'),\n },\n {\n path: 'organizations',\n name: 'Backoffice Organizations',\n meta: {\n title: {\n en: 'Backoffice Organizations',\n ru: 'Управление Организациями',\n },\n authorize: [],\n },\n component: () => import(/* webpackChunkName: 'BackofficeOrganizations' */ '@martyrs/src/modules/organizations/components/pages/Organizations.vue'),\n },\n {\n path: 'community',\n name: 'Backoffice Community',\n meta: {\n title: {\n en: 'Backoffice Community',\n ru: 'Управление Сообществом',\n },\n authorize: [],\n },\n component: () => import(/* webpackChunkName: 'BackofficeCommunity' */ '@martyrs/src/modules/community/components/pages/Blog.vue'),\n },\n ],\n }\n ],\n }\n });\n\n return routes;\n}\n"],"names":[],"mappings":";;AAGO,SAAS,UAAU,UAAU,IAAI;AACtC,QAAM,QAAQ,QAAQ,SAAS;AAC/B,QAAM,SAAS,CAAA;AAEf,SAAO,KAAK;AAAA,IACV,YAAY;AAAA,IACZ,QAAQ;AAAA,MACN,UAAU;AAAA,MACV,QAAQ;AAAA,QACN;AAAA,UACE,MAAM;AAAA,UACN,MAAM;AAAA,UACN,MAAM;AAAA,YACJ,oBAAoB;AAAA,YACpB,0BAA0B;AAAA,YAC1B,sBAAsB;AAAA,UAClC;AAAA,UACU,OAAO;AAAA,YACL,iBAAiB;AAAA,UAC7B;AAAA,UACU,aAAa;AAAA,YACX,MAAM;AAAA;AAAA,cAAiD;AAAA,YAAgE,EAAE,KAAK,OAAK,EAAE,aAAa;AAAA,UAC9J;AAAA,UACU,UAAU;AAAA,YACR;AAAA,cACE,MAAM;AAAA,cACN,MAAM;AAAA,cACN,MAAM;AAAA,gBACJ,OAAO;AAAA,kBACL,IAAI;AAAA,kBACJ,IAAI;AAAA,gBACtB;AAAA,cACA;AAAA,cACc,WAAW,MAAM;AAAA;AAAA,gBAAmD;AAAA,cAAmC;AAAA,YACrH;AAAA,YACY;AAAA,cACE,MAAM;AAAA,cACN,MAAM;AAAA,cACN,MAAM;AAAA,gBACJ,OAAO;AAAA,kBACL,IAAI;AAAA,kBACJ,IAAI;AAAA,gBACtB;AAAA,gBACgB,WAAW,CAAA;AAAA,cAC3B;AAAA,cACc,WAAW,MAAM;AAAA;AAAA,gBAAyD;AAAA,cAAuE;AAAA,YAC/J;AAAA,YACY;AAAA,cACE,MAAM;AAAA,cACN,MAAM;AAAA,cACN,MAAM;AAAA,gBACJ,OAAO;AAAA,kBACL,IAAI;AAAA,kBACJ,IAAI;AAAA,gBACtB;AAAA,gBACgB,WAAW,CAAA;AAAA,cAC3B;AAAA,cACc,WAAW,MAAM;AAAA;AAAA,gBAAqD;AAAA,cAA0D;AAAA,YAC9I;AAAA,UACA;AAAA,QACA;AAAA,MACA;AAAA,IACA;AAAA,EACA,CAAG;AAED,SAAO;AACT;"}
1
+ {"version":3,"file":"backoffice.router.js","sources":["../../../../../../src/modules/backoffice/router/backoffice.router.js"],"sourcesContent":["import Navigation from '@martyrs/src/modules/core/views/components/partials/Navigation.vue'\nimport { navigationItems } from '../configs/navigation.backoffice.config.js'\n\nexport function getRoutes(options = {}) {\n const route = options.route || 'Home';\n const routes = [];\n\n routes.push({\n parentName: route,\n config: {\n basePath: 'backoffice',\n routes: [\n {\n path: '',\n name: 'Backoffice Root',\n meta: {\n sidebar_navigation: Navigation,\n sidebar_navigation_items: navigationItems,\n },\n props: {\n newsletterPopup: 12344,\n },\n beforeEnter: [\n () => import(/* webpackChunkName: \"auth-validation\" */ '@martyrs/src/modules/auth/views/middlewares/auth.validation.js').then(m => m.requiresAdmin),\n ],\n children: [\n {\n path: '',\n name: 'Backoffice Admin',\n meta: {\n title: {\n en: 'Backoffice',\n ru: 'Управление',\n },\n },\n component: () => import(/* webpackChunkName: 'BackofficeGallery' */ '../components/pages/Dashboard.vue'),\n },\n ],\n }\n ],\n }\n });\n\n return routes;\n}\n"],"names":[],"mappings":";;AAGO,SAAS,UAAU,UAAU,IAAI;AACtC,QAAM,QAAQ,QAAQ,SAAS;AAC/B,QAAM,SAAS,CAAA;AAEf,SAAO,KAAK;AAAA,IACV,YAAY;AAAA,IACZ,QAAQ;AAAA,MACN,UAAU;AAAA,MACV,QAAQ;AAAA,QACN;AAAA,UACE,MAAM;AAAA,UACN,MAAM;AAAA,UACN,MAAM;AAAA,YACJ,oBAAoB;AAAA,YACpB,0BAA0B;AAAA,UACtC;AAAA,UACU,OAAO;AAAA,YACL,iBAAiB;AAAA,UAC7B;AAAA,UACU,aAAa;AAAA,YACX,MAAM;AAAA;AAAA,cAAiD;AAAA,YAAgE,EAAE,KAAK,OAAK,EAAE,aAAa;AAAA,UAC9J;AAAA,UACU,UAAU;AAAA,YACR;AAAA,cACE,MAAM;AAAA,cACN,MAAM;AAAA,cACN,MAAM;AAAA,gBACJ,OAAO;AAAA,kBACL,IAAI;AAAA,kBACJ,IAAI;AAAA,gBACtB;AAAA,cACA;AAAA,cACc,WAAW,MAAM;AAAA;AAAA,gBAAmD;AAAA,cAAmC;AAAA,YACrH;AAAA,UACA;AAAA,QACA;AAAA,MACA;AAAA,IACA;AAAA,EACA,CAAG;AAED,SAAO;AACT;"}
@@ -1,7 +1,10 @@
1
1
  import * as blogposts from "./store/blogposts.js";
2
2
  import * as reactions from "./store/reactions.js";
3
3
  import addRoutes from "../core/views/router/addRoutes.js";
4
- import { getRoutes } from "./community.router.js";
4
+ import communityRoutes from "./router/community.router.js";
5
+ import communityUserRoutes from "./router/community.user.router.js";
6
+ import communityOrganizationRoutes from "./router/community.organization.router.js";
7
+ import communityBackofficeRoutes from "./router/community.backoffice.router.js";
5
8
  import _sfc_main$8 from "./components/layouts/Community.vue.js";
6
9
  import _sfc_main$5 from "./components/pages/Blog.vue.js";
7
10
  import _sfc_main$6 from "./components/pages/BlogPost.vue.js";
@@ -12,10 +15,51 @@ import _sfc_main$4 from "./components/blocks/FooterBlogpost.vue.js";
12
15
  import _sfc_main$1 from "./components/sections/Comments.vue.js";
13
16
  import _sfc_main from "./components/sections/HotPosts.vue.js";
14
17
  function initializeCommunity(app, store, router, options = {}) {
15
- const routes = getRoutes(options);
16
- routes.forEach(({ parentName, config }) => {
17
- addRoutes(router, { ...config, parentName });
18
+ addRoutes(router, {
19
+ parentName: options.route || "Home",
20
+ basePath: "community",
21
+ component: () => import(
22
+ /* webpackChunkName: "community-layout" */
23
+ "./components/layouts/Community.vue.js"
24
+ ),
25
+ routes: communityRoutes,
26
+ meta: {
27
+ context: "root",
28
+ title: {
29
+ en: "Community",
30
+ ru: "Коммьюнити"
31
+ },
32
+ breadcrumbs: { hidden: true },
33
+ title_hide: true
34
+ }
18
35
  });
36
+ if (!options.withUserRoutes) {
37
+ addRoutes(router, {
38
+ parentName: options.routeUser || "User Profile Root",
39
+ basePath: "blogposts",
40
+ routes: communityUserRoutes,
41
+ routeNamePrefix: "User",
42
+ meta: { context: "user" }
43
+ });
44
+ }
45
+ if (!options.withOrganizationRoutes) {
46
+ addRoutes(router, {
47
+ parentName: options.routeOrganizations || "OrganizationRoot",
48
+ basePath: "posts",
49
+ routes: communityOrganizationRoutes,
50
+ routeNamePrefix: "Organization",
51
+ meta: { context: "organization" }
52
+ });
53
+ }
54
+ if (!options.withBackoffice) {
55
+ addRoutes(router, {
56
+ parentName: options.routeBackoffice || "Backoffice Root",
57
+ basePath: "community",
58
+ routes: communityBackofficeRoutes,
59
+ routeNamePrefix: "Backoffice",
60
+ meta: { context: "backoffice" }
61
+ });
62
+ }
19
63
  store.addStore("blogposts", blogposts);
20
64
  store.addStore("reactions", reactions);
21
65
  }
@@ -26,9 +70,7 @@ const ModuleCommunity = {
26
70
  storeBlogposts: blogposts,
27
71
  storeReactions: reactions
28
72
  },
29
- router: {
30
- getRoutes
31
- },
73
+ router: {},
32
74
  components: {
33
75
  // Layouts
34
76
  Community: _sfc_main$8,
@@ -57,7 +99,6 @@ export {
57
99
  _sfc_main$4 as FooterBlogpost,
58
100
  _sfc_main as HotPosts,
59
101
  ModuleCommunity as default,
60
- getRoutes,
61
102
  blogposts as storeBlogposts,
62
103
  reactions as storeReactions
63
104
  };
@@ -1 +1 @@
1
- {"version":3,"file":"community.client.js","sources":["../../../../../src/modules/community/community.client.js"],"sourcesContent":["// Store\nimport * as storeBlogposts from './store/blogposts.js';\nimport * as storeReactions from './store/reactions.js';\n\n// Router\nimport addRoutes from '@martyrs/src/modules/core/views/router/addRoutes.js';\nimport { getRoutes } from './community.router.js';\n\n// Views\n// Layouts\nimport Community from './components/layouts/Community.vue';\n\n// Pages\nimport Blog from './components/pages/Blog.vue';\nimport BlogPost from './components/pages/BlogPost.vue';\nimport CreateBlogPost from './components/pages/CreateBlogPost.vue';\n\n// Blocks\nimport Activity from './components/blocks/Activity.vue';\nimport CardBlogpost from './components/blocks/CardBlogpost.vue';\nimport FooterBlogpost from './components/blocks/FooterBlogpost.vue';\n\n// Sections\nimport Comments from './components/sections/Comments.vue';\nimport HotPosts from './components/sections/HotPosts.vue';\n\n// Пример функции инициализации для модуля сообщества\nfunction initializeCommunity(app, store, router, options = {}) {\n const routes = getRoutes(options);\n routes.forEach(({ parentName, config }) => {\n addRoutes(router, { ...config, parentName });\n });\n\n store.addStore('blogposts', storeBlogposts);\n store.addStore('reactions', storeReactions);\n}\n\nconst ModuleCommunity = {\n initialize: initializeCommunity,\n views: {\n store: {\n storeBlogposts,\n storeReactions,\n },\n router: {\n getRoutes,\n },\n components: {\n // Layouts\n Community,\n // Pages\n CreateBlogPost,\n BlogPost,\n Blog,\n // Blocks\n FooterBlogpost,\n Activity,\n CardBlogpost,\n // Sections\n Comments,\n HotPosts,\n },\n },\n};\n\nexport { Activity, Blog, BlogPost, CardBlogpost, Comments, Community, CreateBlogPost, FooterBlogpost, HotPosts, getRoutes, storeBlogposts, storeReactions };\n\nexport default ModuleCommunity;\n"],"names":["storeBlogposts","storeReactions","Community","CreateBlogPost","BlogPost","Blog","FooterBlogpost","Activity","CardBlogpost","Comments","HotPosts"],"mappings":";;;;;;;;;;;;;AA2BA,SAAS,oBAAoB,KAAK,OAAO,QAAQ,UAAU,CAAA,GAAI;AAC7D,QAAM,SAAS,UAAU,OAAO;AAChC,SAAO,QAAQ,CAAC,EAAE,YAAY,OAAM,MAAO;AACzC,cAAU,QAAQ,EAAE,GAAG,QAAQ,WAAU,CAAE;AAAA,EAC7C,CAAC;AAED,QAAM,SAAS,aAAaA,SAAc;AAC1C,QAAM,SAAS,aAAaC,SAAc;AAC5C;AAEK,MAAC,kBAAkB;AAAA,EACtB,YAAY;AAAA,EACZ,OAAO;AAAA,IACL,OAAO;AAAA,MACX,gBAAMD;AAAAA,MACN,gBAAMC;AAAAA,IACN;AAAA,IACI,QAAQ;AAAA,MACN;AAAA,IACN;AAAA,IACI,YAAY;AAAA;AAAA,MAEhB,WAAMC;AAAAA;AAAAA,MAEN,gBAAMC;AAAAA,MACN,UAAMC;AAAAA,MACN,MAAMC;AAAAA;AAAAA,MAEN,gBAAMC;AAAAA,MACN,UAAMC;AAAAA,MACN,cAAMC;AAAAA;AAAAA,MAEN,UAAMC;AAAAA,MACN,UAAMC;AAAAA,IACN;AAAA,EACA;AACA;"}
1
+ {"version":3,"file":"community.client.js","sources":["../../../../../src/modules/community/community.client.js"],"sourcesContent":["// Store\nimport * as storeBlogposts from './store/blogposts.js';\nimport * as storeReactions from './store/reactions.js';\n\n// Router\nimport addRoutes from '@martyrs/src/modules/core/views/router/addRoutes.js';\nimport routerRoot from './router/community.router.js';\nimport routerUser from './router/community.user.router.js';\nimport routerOrganization from './router/community.organization.router.js';\nimport routerBackoffice from './router/community.backoffice.router.js';\n\n// Views\n// Layouts\nimport Community from './components/layouts/Community.vue';\n\n// Pages\nimport Blog from './components/pages/Blog.vue';\nimport BlogPost from './components/pages/BlogPost.vue';\nimport CreateBlogPost from './components/pages/CreateBlogPost.vue';\n\n// Blocks\nimport Activity from './components/blocks/Activity.vue';\nimport CardBlogpost from './components/blocks/CardBlogpost.vue';\nimport FooterBlogpost from './components/blocks/FooterBlogpost.vue';\n\n// Sections\nimport Comments from './components/sections/Comments.vue';\nimport HotPosts from './components/sections/HotPosts.vue';\n\nfunction initializeCommunity(app, store, router, options = {}) {\n // Root: /community/*\n addRoutes(router, {\n parentName: options.route || 'Home',\n basePath: 'community',\n component: () => import(/* webpackChunkName: \"community-layout\" */ './components/layouts/Community.vue'),\n routes: routerRoot,\n meta: {\n context: 'root',\n title: {\n en: 'Community',\n ru: 'Коммьюнити',\n },\n breadcrumbs: { hidden: true },\n title_hide: true,\n },\n });\n\n // User: /users/:_id/blogposts/*\n if (!options.withUserRoutes) {\n addRoutes(router, {\n parentName: options.routeUser || 'User Profile Root',\n basePath: 'blogposts',\n routes: routerUser,\n routeNamePrefix: 'User',\n meta: { context: 'user' },\n });\n }\n\n // Organization: /organizations/:_id/posts/*\n if (!options.withOrganizationRoutes) {\n addRoutes(router, {\n parentName: options.routeOrganizations || 'OrganizationRoot',\n basePath: 'posts',\n routes: routerOrganization,\n routeNamePrefix: 'Organization',\n meta: { context: 'organization' },\n });\n }\n\n // Backoffice: /backoffice/community/*\n if (!options.withBackoffice) {\n addRoutes(router, {\n parentName: options.routeBackoffice || 'Backoffice Root',\n basePath: 'community',\n routes: routerBackoffice,\n routeNamePrefix: 'Backoffice',\n meta: { context: 'backoffice' },\n });\n }\n\n store.addStore('blogposts', storeBlogposts);\n store.addStore('reactions', storeReactions);\n}\n\nconst ModuleCommunity = {\n initialize: initializeCommunity,\n views: {\n store: {\n storeBlogposts,\n storeReactions,\n },\n router: {},\n components: {\n // Layouts\n Community,\n // Pages\n CreateBlogPost,\n BlogPost,\n Blog,\n // Blocks\n FooterBlogpost,\n Activity,\n CardBlogpost,\n // Sections\n Comments,\n HotPosts,\n },\n },\n};\n\nexport { Activity, Blog, BlogPost, CardBlogpost, Comments, Community, CreateBlogPost, FooterBlogpost, HotPosts, storeBlogposts, storeReactions };\n\nexport default ModuleCommunity;\n"],"names":["routerRoot","routerUser","routerOrganization","routerBackoffice","storeBlogposts","storeReactions","Community","CreateBlogPost","BlogPost","Blog","FooterBlogpost","Activity","CardBlogpost","Comments","HotPosts"],"mappings":";;;;;;;;;;;;;;;;AA6BA,SAAS,oBAAoB,KAAK,OAAO,QAAQ,UAAU,CAAA,GAAI;AAE7D,YAAU,QAAQ;AAAA,IAChB,YAAY,QAAQ,SAAS;AAAA,IAC7B,UAAU;AAAA,IACV,WAAW,MAAM;AAAA;AAAA,MAAkD;AAAA,IAAoC;AAAA,IACvG,QAAQA;AAAAA,IACR,MAAM;AAAA,MACJ,SAAS;AAAA,MACT,OAAO;AAAA,QACL,IAAI;AAAA,QACJ,IAAI;AAAA,MACZ;AAAA,MACM,aAAa,EAAE,QAAQ,KAAI;AAAA,MAC3B,YAAY;AAAA,IAClB;AAAA,EACA,CAAG;AAGD,MAAI,CAAC,QAAQ,gBAAgB;AAC3B,cAAU,QAAQ;AAAA,MAChB,YAAY,QAAQ,aAAa;AAAA,MACjC,UAAU;AAAA,MACV,QAAQC;AAAAA,MACR,iBAAiB;AAAA,MACjB,MAAM,EAAE,SAAS,OAAM;AAAA,IAC7B,CAAK;AAAA,EACH;AAGA,MAAI,CAAC,QAAQ,wBAAwB;AACnC,cAAU,QAAQ;AAAA,MAChB,YAAY,QAAQ,sBAAsB;AAAA,MAC1C,UAAU;AAAA,MACV,QAAQC;AAAAA,MACR,iBAAiB;AAAA,MACjB,MAAM,EAAE,SAAS,eAAc;AAAA,IACrC,CAAK;AAAA,EACH;AAGA,MAAI,CAAC,QAAQ,gBAAgB;AAC3B,cAAU,QAAQ;AAAA,MAChB,YAAY,QAAQ,mBAAmB;AAAA,MACvC,UAAU;AAAA,MACV,QAAQC;AAAAA,MACR,iBAAiB;AAAA,MACjB,MAAM,EAAE,SAAS,aAAY;AAAA,IACnC,CAAK;AAAA,EACH;AAEA,QAAM,SAAS,aAAaC,SAAc;AAC1C,QAAM,SAAS,aAAaC,SAAc;AAC5C;AAEK,MAAC,kBAAkB;AAAA,EACtB,YAAY;AAAA,EACZ,OAAO;AAAA,IACL,OAAO;AAAA,MACX,gBAAMD;AAAAA,MACN,gBAAMC;AAAAA,IACN;AAAA,IACI,QAAQ,CAAA;AAAA,IACR,YAAY;AAAA;AAAA,MAEhB,WAAMC;AAAAA;AAAAA,MAEN,gBAAMC;AAAAA,MACN,UAAMC;AAAAA,MACN,MAAMC;AAAAA;AAAAA,MAEN,gBAAMC;AAAAA,MACN,UAAMC;AAAAA,MACN,cAAMC;AAAAA;AAAAA,MAEN,UAAMC;AAAAA,MACN,UAAMC;AAAAA,IACN;AAAA,EACA;AACA;"}
@@ -1,8 +1,8 @@
1
- import { computed, createElementBlock, openBlock, createVNode, createElementVNode, createCommentVNode, normalizeClass, renderSlot, createBlock, unref, toDisplayString, createTextVNode } from "vue";
1
+ import { computed, createElementBlock, openBlock, createVNode, createElementVNode, createCommentVNode, unref, normalizeClass, renderSlot, createBlock, toDisplayString, createTextVNode } from "vue";
2
2
  import _sfc_main$1 from "../../../core/views/components/blocks/CardHeader.vue.js";
3
3
  import _sfc_main$3 from "./FooterBlogpost.vue.js";
4
4
  import _sfc_main$2 from "../../../../components/Text/Text.vue.js";
5
- import { useRouter } from "vue-router";
5
+ import { useRoute, useRouter } from "vue-router";
6
6
  const _hoisted_1 = { class: "pos-relative flex-column flex o-hidden" };
7
7
  const _hoisted_2 = { class: "pd-t-zero pd-b-zero pd-medium" };
8
8
  const _hoisted_3 = {
@@ -50,7 +50,13 @@ const _sfc_main = {
50
50
  }
51
51
  },
52
52
  setup(__props) {
53
+ const route = useRoute();
53
54
  const router = useRouter();
55
+ const routePrefix = computed(() => {
56
+ const ctx = route.meta.context;
57
+ if (ctx === "organization") return "Organization";
58
+ return "";
59
+ });
54
60
  const props = __props;
55
61
  const firstImage = computed(() => {
56
62
  return props.blogpost.content.find((block) => block.type === "ImageUpload");
@@ -77,7 +83,7 @@ const _sfc_main = {
77
83
  creator: __props.blogpost.creator,
78
84
  date: __props.blogpost.createdAt,
79
85
  actions: __props.user && __props.user === __props.blogpost.creator.target._id ? [
80
- { to: `/community/posts/${__props.blogpost.url}/edit`, label: "Edit" }
86
+ { to: { name: routePrefix.value + "EditBlogPost", params: { _id: unref(route).params._id, url: __props.blogpost.url } }, label: "Edit" }
81
87
  ] : null
82
88
  }, null, 8, ["class", "entity", "user", "owner", "creator", "date", "actions"]),
83
89
  createElementVNode("section", _hoisted_2, [
@@ -87,7 +93,7 @@ const _sfc_main = {
87
93
  text: __props.blogpost.name || "",
88
94
  maxLen: 80,
89
95
  class: "h3 d-block",
90
- onClick: _cache[0] || (_cache[0] = ($event) => unref(router).push(`/community/posts/${__props.blogpost.url}`))
96
+ onClick: _cache[0] || (_cache[0] = ($event) => unref(router).push({ name: routePrefix.value + "BlogPost", params: { _id: unref(route).params._id, url: __props.blogpost.url } }))
91
97
  }, null, 8, ["text"])) : createCommentVNode("", true),
92
98
  __props.blogpost.status === "draft" ? (openBlock(), createElementBlock("div", _hoisted_4, toDisplayString(__props.blogpost.status), 1)) : createCommentVNode("", true)
93
99
  ])) : createCommentVNode("", true),
@@ -1 +1 @@
1
- {"version":3,"file":"CardBlogpost.vue.js","sources":["../../../../../../../src/modules/community/components/blocks/CardBlogpost.vue"],"sourcesContent":["<template>\n\t<article \n\t\tclass=\"pos-relative flex-column flex o-hidden\"\n\t>\n\t\t<CardHeader \n\t :class=\"{\n\t \t'mn-b-medium pd-medium': type !== 'short',\n\t \t'flex-child-order-last flex-child mn-l-small': type === 'short',\n\t }\"\n\t :entity=\"blogpost\"\n\t :entityType=\"'blogpost'\"\n\t :user=\"user\"\n\t :owner=\"blogpost.owner\" \n \t:creator=\"blogpost.creator\"\n \t:date=\"blogpost.createdAt\"\n \t:actions=\"user && user === blogpost.creator.target._id ? [\n { to: `/community/posts/${blogpost.url}/edit`, label: 'Edit' }\n ]: null\"\n\t\t/>\n\n\t\n\t\t<section\n\t\t\tclass=\"pd-t-zero pd-b-zero pd-medium\"\n\t\t>\n\t\t\t\n\t\t\t<div v-if=\"type !== 'blogpostPage'\" class=\"cursor-pointer mn-b-medium flex-nowrap flex w-100\">\n\n\t\t\t\t<Text \n\t\t\t\t\tv-if=\"!hideTitle\"\n\t\t\t\t \t:text=\"blogpost.name || ''\" \n\t\t\t\t \t:maxLen=\"80\" \n\t\t\t\t \tclass=\"h3 d-block\"\n\t\t\t\t \t@click=\"router.push(`/community/posts/${blogpost.url}`)\"\n\t\t\t\t/>\n\n\t\t\t\t<div \n\t\t\t\t\tv-if=\"blogpost.status === 'draft'\" \n\t\t\t\t\tclass=\"pd-micro t-white uppercase fw-semi p-small flex-center flex pd-r-small pd-l-small mn-l-thin w-min bg-second radius-extra\"\n\t\t\t\t>\n\t\t\t\t\t{{blogpost.status}}\n\t\t\t\t</div>\n\t\t\t\t\n\t\t\t</div>\n\t\t\t\n\t\t\t<p \n\t\t\t\tv-if=\"firstText && firstText.content && type !== 'blogpostPage' && !hideDescription\" \n\t\t\t\tclass='mn-b-medium t-transp p-medium'\n\t\t\t>\n\t\t\t\t{{firstText.content.slice(0,120)}}...\n\t\t\t</p>\n\n\t\t\t<h3 \n\t\t\t\tv-if=\"type === 'blogpostPage' && !hideTitle\" \n\t\t\t\tclass=\"mn-b-medium h2\"\n\t\t\t>\n\t\t\t\t{{blogpost.name}}\n\t\t\t</h3>\n\n\t\t\t<slot></slot>\n\n\t\t\t<!-- <Chips \n \tv-if=\"type !== 'short' && blogpost.tags?.length > 0\" \n \t:chips=\"blogpost.tags\"\n \t/> -->\n\n\t\t</section>\n\n\t\t\t<!-- <Image :prop=\"{content:firstImage.content}\" class=\"h-100\"/> -->\n\n\t\t<template\n\t\t\tv-if=\"firstImage && firstImage.content && type !== 'blogpostPage'\"\n\t\t>\n\t\t\t<img loading=\"lazy\" \n\t\t\t\t:src=\"(FILE_SERVER_URL || '') + firstImage.content\" \n\t\t\t\talt=\"Blog post image\" \n\t\t\t\tclass=\"mn-b-medium object-fit-cover w-100 h-min-10r h-100\"\n\t\t\t/>\n\t\t</template>\n\n\t\t<template\n\t\t\tv-if=\"!firstImage?.content && firstVideo && firstVideo.content && type !== 'blogpostPage'\"\n\t\t>\n\t\t\t<!-- <div class=\"flex-center flex\"> -->\n\t <video controls class=\"mn-b-medium object-fit-fit bg-black w-100 h-max-20r\">\n\t <source :src=\"firstVideo.content\" type=\"video/mp4\">\n\t Your browser does not support the video tag.\n\t </video>\n\t <!-- </div> -->\n\t\t</template>\n\n\t\t\n\t\t<FooterBlogpost \n\t\t\tclass=\"pd-t-zero pd-medium\" \n\t\t\t:blogpost=\"blogpost\" :user=\"user\"\n\t\t/>\n\t\n\t</article>\n\n</template>\n\n\n<script setup=\"props\">\n\timport CardHeader from '@martyrs/src/modules/core/views/components/blocks/CardHeader.vue'\n\timport FooterBlogpost from '@martyrs/src/modules/community/components/blocks/FooterBlogpost.vue'\t\n\n\timport Image from '@martyrs/src/modules/constructor/components/elements/Image.vue';\n\n import Text from '@martyrs/src/components/Text/Text.vue'\n\timport Chips from '@martyrs/src/components/Chips/Chips.vue'\n\n\timport IconEdit from '@martyrs/src/modules/icons/navigation/IconEdit.vue'\n\n\timport { computed } from 'vue'\n\n\timport { useRouter } from 'vue-router'\n\n\tconst router = useRouter()\n\n\tconst props = defineProps({\n\t\tblogpost: {\n\t\t\ttype: Object,\n\t\t},\n\t\tuser: {\n\t\t\ttype: String,\n\t\t},\n\t\ttype: {\n\t\t\ttype: String,\n\t\t},\n\t\thideDescription: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false\n\t\t},\n\t\thideTitle: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false\n\t\t}\n\t})\n\n const firstImage = computed(() => {\n\t return props.blogpost.content.find(block => block.type === 'ImageUpload');\n\t});\n\n\tconst firstVideo = computed(() => {\n\t return props.blogpost.content.find(block => block.type === 'Video');\n\t});\n\n\tconst firstText = computed(() => {\n\t return props.blogpost.content.find(block => \n\t block.type === 'Textarea' && block.class !== 'h2'\n\t );\n\t});\n\n</script>\n\n<style lang=\"scss\">\n</style>\n\n\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoHC,UAAM,SAAS,UAAS;AAExB,UAAM,QAAQ;AAoBb,UAAM,aAAa,SAAS,MAAM;AACjC,aAAO,MAAM,SAAS,QAAQ,KAAK,WAAS,MAAM,SAAS,aAAa;AAAA,IAC1E,CAAC;AAED,UAAM,aAAa,SAAS,MAAM;AAChC,aAAO,MAAM,SAAS,QAAQ,KAAK,WAAS,MAAM,SAAS,OAAO;AAAA,IACpE,CAAC;AAED,UAAM,YAAY,SAAS,MAAM;AAC/B,aAAO,MAAM,SAAS,QAAQ;AAAA,QAAK,WACjC,MAAM,SAAS,cAAc,MAAM,UAAU;AAAA,MAClD;AAAA,IACC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"CardBlogpost.vue.js","sources":["../../../../../../../src/modules/community/components/blocks/CardBlogpost.vue"],"sourcesContent":["<template>\n\t<article \n\t\tclass=\"pos-relative flex-column flex o-hidden\"\n\t>\n\t\t<CardHeader \n\t :class=\"{\n\t \t'mn-b-medium pd-medium': type !== 'short',\n\t \t'flex-child-order-last flex-child mn-l-small': type === 'short',\n\t }\"\n\t :entity=\"blogpost\"\n\t :entityType=\"'blogpost'\"\n\t :user=\"user\"\n\t :owner=\"blogpost.owner\" \n \t:creator=\"blogpost.creator\"\n \t:date=\"blogpost.createdAt\"\n \t:actions=\"user && user === blogpost.creator.target._id ? [\n { to: { name: routePrefix + 'EditBlogPost', params: { _id: route.params._id, url: blogpost.url } }, label: 'Edit' }\n ]: null\"\n\t\t/>\n\n\t\n\t\t<section\n\t\t\tclass=\"pd-t-zero pd-b-zero pd-medium\"\n\t\t>\n\t\t\t\n\t\t\t<div v-if=\"type !== 'blogpostPage'\" class=\"cursor-pointer mn-b-medium flex-nowrap flex w-100\">\n\n\t\t\t\t<Text \n\t\t\t\t\tv-if=\"!hideTitle\"\n\t\t\t\t \t:text=\"blogpost.name || ''\" \n\t\t\t\t \t:maxLen=\"80\" \n\t\t\t\t \tclass=\"h3 d-block\"\n\t\t\t\t \t@click=\"router.push({ name: routePrefix + 'BlogPost', params: { _id: route.params._id, url: blogpost.url } })\"\n\t\t\t\t/>\n\n\t\t\t\t<div \n\t\t\t\t\tv-if=\"blogpost.status === 'draft'\" \n\t\t\t\t\tclass=\"pd-micro t-white uppercase fw-semi p-small flex-center flex pd-r-small pd-l-small mn-l-thin w-min bg-second radius-extra\"\n\t\t\t\t>\n\t\t\t\t\t{{blogpost.status}}\n\t\t\t\t</div>\n\t\t\t\t\n\t\t\t</div>\n\t\t\t\n\t\t\t<p \n\t\t\t\tv-if=\"firstText && firstText.content && type !== 'blogpostPage' && !hideDescription\" \n\t\t\t\tclass='mn-b-medium t-transp p-medium'\n\t\t\t>\n\t\t\t\t{{firstText.content.slice(0,120)}}...\n\t\t\t</p>\n\n\t\t\t<h3 \n\t\t\t\tv-if=\"type === 'blogpostPage' && !hideTitle\" \n\t\t\t\tclass=\"mn-b-medium h2\"\n\t\t\t>\n\t\t\t\t{{blogpost.name}}\n\t\t\t</h3>\n\n\t\t\t<slot></slot>\n\n\t\t\t<!-- <Chips \n \tv-if=\"type !== 'short' && blogpost.tags?.length > 0\" \n \t:chips=\"blogpost.tags\"\n \t/> -->\n\n\t\t</section>\n\n\t\t\t<!-- <Image :prop=\"{content:firstImage.content}\" class=\"h-100\"/> -->\n\n\t\t<template\n\t\t\tv-if=\"firstImage && firstImage.content && type !== 'blogpostPage'\"\n\t\t>\n\t\t\t<img loading=\"lazy\" \n\t\t\t\t:src=\"(FILE_SERVER_URL || '') + firstImage.content\" \n\t\t\t\talt=\"Blog post image\" \n\t\t\t\tclass=\"mn-b-medium object-fit-cover w-100 h-min-10r h-100\"\n\t\t\t/>\n\t\t</template>\n\n\t\t<template\n\t\t\tv-if=\"!firstImage?.content && firstVideo && firstVideo.content && type !== 'blogpostPage'\"\n\t\t>\n\t\t\t<!-- <div class=\"flex-center flex\"> -->\n\t <video controls class=\"mn-b-medium object-fit-fit bg-black w-100 h-max-20r\">\n\t <source :src=\"firstVideo.content\" type=\"video/mp4\">\n\t Your browser does not support the video tag.\n\t </video>\n\t <!-- </div> -->\n\t\t</template>\n\n\t\t\n\t\t<FooterBlogpost \n\t\t\tclass=\"pd-t-zero pd-medium\" \n\t\t\t:blogpost=\"blogpost\" :user=\"user\"\n\t\t/>\n\t\n\t</article>\n\n</template>\n\n\n<script setup=\"props\">\n\timport CardHeader from '@martyrs/src/modules/core/views/components/blocks/CardHeader.vue'\n\timport FooterBlogpost from '@martyrs/src/modules/community/components/blocks/FooterBlogpost.vue'\t\n\n\timport Image from '@martyrs/src/modules/constructor/components/elements/Image.vue';\n\n import Text from '@martyrs/src/components/Text/Text.vue'\n\timport Chips from '@martyrs/src/components/Chips/Chips.vue'\n\n\timport IconEdit from '@martyrs/src/modules/icons/navigation/IconEdit.vue'\n\n\timport { computed } from 'vue'\n\n\timport { useRoute, useRouter } from 'vue-router'\n\n\tconst route = useRoute()\n\tconst router = useRouter()\n\n\tconst routePrefix = computed(() => {\n\t\tconst ctx = route.meta.context\n\t\tif (ctx === 'organization') return 'Organization'\n\t\treturn ''\n\t})\n\n\tconst props = defineProps({\n\t\tblogpost: {\n\t\t\ttype: Object,\n\t\t},\n\t\tuser: {\n\t\t\ttype: String,\n\t\t},\n\t\ttype: {\n\t\t\ttype: String,\n\t\t},\n\t\thideDescription: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false\n\t\t},\n\t\thideTitle: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false\n\t\t}\n\t})\n\n const firstImage = computed(() => {\n\t return props.blogpost.content.find(block => block.type === 'ImageUpload');\n\t});\n\n\tconst firstVideo = computed(() => {\n\t return props.blogpost.content.find(block => block.type === 'Video');\n\t});\n\n\tconst firstText = computed(() => {\n\t return props.blogpost.content.find(block => \n\t block.type === 'Textarea' && block.class !== 'h2'\n\t );\n\t});\n\n</script>\n\n<style lang=\"scss\">\n</style>\n\n\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoHC,UAAM,QAAQ,SAAQ;AACtB,UAAM,SAAS,UAAS;AAExB,UAAM,cAAc,SAAS,MAAM;AAClC,YAAM,MAAM,MAAM,KAAK;AACvB,UAAI,QAAQ,eAAgB,QAAO;AACnC,aAAO;AAAA,IACR,CAAC;AAED,UAAM,QAAQ;AAoBb,UAAM,aAAa,SAAS,MAAM;AACjC,aAAO,MAAM,SAAS,QAAQ,KAAK,WAAS,MAAM,SAAS,aAAa;AAAA,IAC1E,CAAC;AAED,UAAM,aAAa,SAAS,MAAM;AAChC,aAAO,MAAM,SAAS,QAAQ,KAAK,WAAS,MAAM,SAAS,OAAO;AAAA,IACpE,CAAC;AAED,UAAM,YAAY,SAAS,MAAM;AAC/B,aAAO,MAAM,SAAS,QAAQ;AAAA,QAAK,WACjC,MAAM,SAAS,cAAc,MAAM,UAAU;AAAA,MAClD;AAAA,IACC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -70,7 +70,7 @@ const _sfc_main = {
70
70
  return openBlock(), createElementBlock("div", _hoisted_1, [
71
71
  createElementVNode("section", _hoisted_2, [
72
72
  createElementVNode("div", _hoisted_3, [
73
- !unref(route).params.url && unref(route).name !== "Create BlogPost" ? (openBlock(), createElementBlock("header", _hoisted_4, [
73
+ !unref(route).params.url && unref(route).name !== "CreateBlogPost" ? (openBlock(), createElementBlock("header", _hoisted_4, [
74
74
  createElementVNode("h2", _hoisted_5, [
75
75
  _cache[5] || (_cache[5] = createElementVNode("span", { class: "mn-r-thin" }, "Posts for ", -1)),
76
76
  createVNode(Select, {
@@ -82,7 +82,7 @@ const _sfc_main = {
82
82
  }, null, 8, ["select"])
83
83
  ])
84
84
  ])) : createCommentVNode("", true),
85
- !unref(route).params.url && unref(route).name !== "Create BlogPost" ? (openBlock(), createElementBlock("div", _hoisted_6, [
85
+ !unref(route).params.url && unref(route).name !== "CreateBlogPost" ? (openBlock(), createElementBlock("div", _hoisted_6, [
86
86
  createElementVNode("ul", _hoisted_7, [
87
87
  createElementVNode("li", {
88
88
  class: normalizeClass([{ "t-black bg-white": unref(route).params.category === "featured" }, "cursor-pointer flex-v-center flex fw-medium pd-thin radius-small"]),
@@ -128,7 +128,7 @@ const _sfc_main = {
128
128
  state$1.user._id ? (openBlock(), createBlock(_component_router_link, {
129
129
  key: 1,
130
130
  to: {
131
- name: "Create BlogPost"
131
+ name: "CreateBlogPost"
132
132
  },
133
133
  class: "button fw-medium bg-main w-max mn-l-auto"
134
134
  }, {
@@ -1 +1 @@
1
- {"version":3,"file":"Community.vue.js","sources":["../../../../../../../src/modules/community/components/layouts/Community.vue"],"sourcesContent":["\t<template>\n\t<div class=\"bg-white\">\n\t\t<section class=\"w-100 flex-nowrap flex gap-thin mobile:pd-zero pd-thin pos-relative\">\n\n\t\t\t<div style=\"flex: 1 1 auto\" class=\"w-100 h-100 pos-relative\">\n\t\t\t\t<header v-if=\"!route.params.url && route.name !== 'Create BlogPost'\" class=\"bg-light pd-medium radius-medium mobile:radius-zero scroll-hide o-y-visible t-black pos-relative mn-b-thin flex-v-center t-left flex-nowrap flex\">\n\t\t \t<h2 class=\"pos-relative ws-nowrap flex-v-center flex-nowrap flex\">\n\t\t \t\t<span class=\"mn-r-thin\">Posts for </span>\n\n\t\t \t\t<Select \n\t\t\t :options=\"['today','week','month','year','all time']\"\n\t\t\t v-model:select=\"blog.state.filter.period\" \n\t\t\t placeholder=\"all time\"\n\t\t\t class=\"\n\t\t\t \tfw-semi\n\t\t\t \tpos-relative \n\t\t\t \tw-max\n\t\t\t \tbg-main t-black\n\t\t\t \tpd-thin\n\t\t\t \tradius-medium\n\t\t\t h2\n\t\t\t \tt-center\n\t\t\t \tflex-column \n\t\t\t \tflex \n\t\t\t \tgap-regular \n\t\t\t \"\n\t\t\t />\n\t\t \t</h2>\n\t\t\t\t</header>\n\n\t\t\t\t<div v-if=\"!route.params.url && route.name !=='Create BlogPost'\" class=\"w-100 pos-relative\">\n\t\t\t\t\t<ul class=\"align-self-start pos-sticky pos-t-0 w-100 bg-light radius-medium mobile:radius-zero mn-b-thin pd-medium p-regular gap-thin flex-row flex-nowrap flex z-index-2 o-scroll ws-nowrap scroll-hide\">\n\t\t\t\t\t\t<li \t\n\t\t\t\t\t\t\t:class=\"{'t-black bg-white': route.params.category === 'featured' }\" \t\t\t\t\t\n\t\t\t\t\t\t\t@click=\"() => { blog.state.sort.param = 'createdAt'; router.push({name: 'Blog', params: { category: 'featured' } })}\" \n\t\t\t\t\t\t\tclass=\"cursor-pointer flex-v-center flex fw-medium pd-thin radius-small\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<IconFeatured class=\"i-medium mn-r-thin t-transp\"/>\n\t\t\t\t\t\t\tFeatured\n\t\t\t\t\t\t</li>\n\t\t\t\t\t\t<li \t\n\t\t\t\t\t\t\t:class=\"{'t-black bg-white': route.params.category === 'popular' }\"\t\t\t\t\t \t\t\t\t\n\t\t\t\t\t\t\t@click=\"() => { blog.state.sort.param = 'views'; router.push({name: 'Blog', params: { category: 'popular' } }) }\" \n\t\t\t\t\t\t\tclass=\"cursor-pointer fw-medium flex-v-center flex pd-thin radius-small\"\n\t\t\t\t\t\t>\t\n\t\t\t\t\t\t\t<IconPopular class=\"i-medium mn-r-thin t-transp\"/>\n\t\t\t\t\t\t\tPopular\n\t\t\t\t\t\t</li>\n\t\t\t\t\t\t<li \t\n\t\t\t\t\t\t\t:class=\"{'t-black bg-white': route.params.category === 'new'}\" \t\t\t\t\t\n\t\t\t\t\t\t\t@click=\"() => { blog.state.sort.param = 'createdAt'; router.push({name: 'Blog', params: { category: 'new' } })}\" \n\t\t\t\t\t\t\tclass=\"cursor-pointer fw-medium flex-v-center flex pd-thin radius-small\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<IconRecent class=\"i-medium mn-r-thin t-transp\"/>\n\t\t\t\t\t\t\tRecent\n\t\t\t\t\t\t</li>\n\t\t\t\t\t\t<li \t\n\t\t\t\t\t\t\tv-if=\"auth.state.user._id\"\n\t\t\t\t\t\t\t:class=\"{'t-black bg-white': route.params.category === 'following'}\" \t\t\n\t\t\t\t\t\t\t@click=\"() => { blog.state.sort.param = 'createdAt'; router.push({name: 'Blog', params: { category: 'following' } })}\" \n\t\t\t\t\t\t\tclass=\"cursor-pointer fw-medium flex-v-center flex pd-thin radius-small\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<IconFollowing class=\"i-medium mn-r-thin t-transp\"/>\n\t\t\t\t\t\t\tFollowing\n\t\t\t\t\t\t</li>\n\n\t\t\t\t\t\t<router-link \n\t\t\t\t\t\t\tv-if=\"auth.state.user._id\"\n\t\t\t\t\t\t\t:to=\"{\n\t\t\t\t\t\t\t\tname: 'Create BlogPost'\n\t\t\t\t\t\t\t}\" \n\t\t\t\t\t\t\tclass=\"button fw-medium bg-main w-max mn-l-auto\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\tCreate Post\n\t\t\t\t\t\t</router-link>\n\t\t\t\t\t</ul>\n\t\t\t\t</div>\n\n\n\t\t\t\t<router-view v-slot=\"{ Component, route }\">\n\t\t\t\t\t<transition name=\"scaleIn\" mode=\"out-in\">\n\t\t\t\t\t\t<component ref=\"page\" :key=\"route.query\" :is=\"Component\" />\n\t\t\t\t\t</transition>\n\t\t\t\t</router-view>\n\t\t\t</div>\n\n\t\t\t<div style=\"flex: 1 1 auto\" class=\"desktop-only pos-sticky pos-b-thin scroll-hide h-100 w-40 h-100 pos-relative \">\n\t\t\t\t<div class=\"radius-medium bg-light mn-b-thin pd-small\">\n\t\t\t\t\t<div class=\"gap-thin flex-nowrap flex\">\n\t\t\t\t\t\t<p class=\"fw-medium mn-b-small\">Latest Comments</p>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<div class=\"flex flex-column gap-thin\">\n\t\t\t\t\t\t<Comment\n\t\t \tv-for=\"comment in comments.slice(0,5)\"\n\t\t\t :key=\"comment._id\"\n\t\t\t :comment=\"comment\"\n\t\t\t :target=\"target\"\n\t\t\t :type=\"type\"\n\t\t\t :owner=\"owner\"\n\t\t\t @reply=\"handleReply\"\n\t\t\t @load-more=\"loadMoreChildren\"\n\t\t\t class=\"comment bg-white pd-small radius-regular\"\n\t\t\t />\n\t\t\t </div>\n\t\t </div>\n\n\t <div class=\"radius-medium bg-light pd-small\">\n\t\t\t\t\t<div class=\"gap-thin flex-v-center flex-nowrap flex mn-b-small\">\n\t\t\t\t\t\t<p class=\"text-box-trim-end fw-medium\">Popular Communities</p>\n\t\t\t\t\t\t\n\t\t\t\t\t\t<router-link\n\t\t\t\t\t\t\tv-if=\"auth.state.user._id\"\n\t\t\t\t\t\t\tto=\"/organizations/create\"\n\t\t\t\t\t\t\tclass=\"fw-medium cursor-pointer hover:scale-[1.05] radius-extra flex-center flex i-medium bg-main\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t+\n\t\t\t\t\t\t</router-link>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<transition name=\"slide-fade\">\n\t\t\t\t\t\t<Feed\n\t\t\t\t\t\t\t:showLoadMore=\"false\"\n\t\t\t\t\t\t\t:LoadMore=\"false\"\n\t\t\t\t :states=\"{\n\t\t\t\t empty: {\n\t\t\t\t title: 'No Organization Found',\n\t\t\t\t description: 'Currently, there are no organization available.'\n\t\t\t\t }\n\t\t\t\t }\"\n\t\t\t\t :store=\"{\n\t\t\t\t read: (options) => organizations.actions.read(options),\n\t\t\t\t state: organizations.state\n\t\t\t\t }\"\n\t\t\t\t :options=\"{\n\t\t\t\t \tuser: auth.state.user._id,\n\t\t\t\t\t\t\t\t\tsort: 'numberOfMemberships',\n\t\t\t\t\t\t\t\t\tcontain: ['blogposts'],\n\t\t\t\t\t\t\t\t\tlookup: ['blogposts'],\n\t\t\t\t\t\t\t\t\tlimit: 10\n\t\t\t\t }\"\n\t\t\t\t v-slot=\"{ \n\t\t\t\t items \n\t\t\t\t }\"\n\t\t\t\t class=\"flex flex-column gap-thin\"\n\t\t\t\t >\n\t\t\t\t \t<CardOrganization \n\t\t\t \t\t\tv-for=\"organization in items\"\n\t\t\t \t:key=\"organization._id\" \n\t\t\t\t \t:organization=\"organization\"\n\t\t\t\t \t:user=\"auth.state.user\"\n\t\t\t\t \t:showProducts=\"false\"\n\t\t\t\t \t:showRating=\"false\"\n\t\t\t\t \t:showFeatured=\"false\"\n\t\t\t\t \t:showFollowers=\"false\"\n\t\t\t\t\t\t\t\t@updateMembership=\"handleMembershipUpdate\"\n\t\t\t\t\t\t\t\tclass=\"pd-small w-100 bg-white radius-regular o-hidden\"\n\t\t\t\t\t />\n\t\t\t\t </Feed>\n\t\t\t\t\t</transition>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t</section>\n\t</div>\n</template>\n\n<script setup=\"props\">\n\timport { computed,onMounted, toRefs,ref } from 'vue'\n import { useRoute,useRouter } from 'vue-router'\n\n\timport Select from '@martyrs/src/components/Select/Select.vue'\n\timport Feed from '@martyrs/src/components/Feed/Feed.vue'\n\timport CardOrganization from '@martyrs/src/modules/organizations/components/blocks/CardOrganization.vue'\n\n\timport IconFeatured from '@martyrs/src/modules/icons/entities/IconFeatured.vue'\n\timport IconPopular from '@martyrs/src/modules/icons/entities/IconPopular.vue'\n\timport IconRecent from '@martyrs/src/modules/icons/entities/IconRecent.vue'\n\timport IconFollowing from '@martyrs/src/modules/icons/entities/IconFollowing.vue'\n\n\nimport axios from 'axios';\n\n\nimport Comment from '../sections/Comment.vue';\n\n\nconst $axios = axios.create({ baseURL: process.env.API_URL });\nconst comments = ref([]);\nconst commentContent = ref('');\n\nconst fetchComments = async () => {\n try {\n const response = await $axios.get('/comments/read', {\n params: {\n maxDepth: 1,\n format: 'plain'\n }\n });\n comments.value = response.data;\n } catch (error) {\n console.error('Error fetching comments:', error);\n }\n};\n\nfetchComments();\n\n// Import state\nimport * as blog from '@martyrs/src/modules/community/store/blogposts.js';\nimport * as auth from '@martyrs/src/modules/auth/views/store/auth.js'\nimport * as organizations from '@martyrs/src/modules/organizations/store/organizations.js'\nimport membershipsStore from '@martyrs/src/modules/organizations/store/memberships.store.js'\n\n// State\nconst route = useRoute();\nconst router = useRouter();\n\nif (route.params.category === 'popular') blog.state.sort.param = 'views'; \nif (route.params.category === 'new') blog.state.sort.param = 'createdAt'; \n\n\nconst handleMembershipUpdate = ({ membership, status, target }, statusName, statusNumber) => {\n membershipsStore.handleMembershipUpdate(organizations.state.current, membership, status, target, statusName, statusNumber)\n};\n\n</script>\n\n<style lang=\"scss\">\n\n</style>\n"],"names":["blog.state","organizations.state"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2LA,UAAM,SAAS,MAAM,OAAO,EAAE,SAAS,QAAQ,IAAI,SAAS;AAC5D,UAAM,WAAW,IAAI,EAAE;AACA,QAAI,EAAE;AAE7B,UAAM,gBAAgB,YAAY;AAChC,UAAI;AACF,cAAM,WAAW,MAAM,OAAO,IAAI,kBAAkB;AAAA,UAClD,QAAQ;AAAA,YACN,UAAU;AAAA,YACV,QAAQ;AAAA,UAChB;AAAA,QACA,CAAK;AACD,iBAAS,QAAQ,SAAS;AAAA,MAC5B,SAAS,OAAO;AACd,gBAAQ,MAAM,4BAA4B,KAAK;AAAA,MACjD;AAAA,IACF;AAEA,kBAAa;AASb,UAAM,QAAQ,SAAQ;AACtB,UAAM,SAAS,UAAS;AAExB,QAAI,MAAM,OAAO,aAAa,UAAWA,OAAW,KAAK,QAAQ;AACjE,QAAI,MAAM,OAAO,aAAa,MAAOA,OAAW,KAAK,QAAQ;AAG7D,UAAM,yBAAyB,CAAC,EAAE,YAAY,QAAQ,OAAM,GAAI,YAAY,iBAAiB;AAC3F,uBAAiB,uBAAuBC,QAAoB,SAAS,YAAY,QAAQ,QAAQ,YAAY,YAAY;AAAA,IAC3H;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"Community.vue.js","sources":["../../../../../../../src/modules/community/components/layouts/Community.vue"],"sourcesContent":["\t<template>\n\t<div class=\"bg-white\">\n\t\t<section class=\"w-100 flex-nowrap flex gap-thin mobile:pd-zero pd-thin pos-relative\">\n\n\t\t\t<div style=\"flex: 1 1 auto\" class=\"w-100 h-100 pos-relative\">\n\t\t\t\t<header v-if=\"!route.params.url && route.name !== 'CreateBlogPost'\" class=\"bg-light pd-medium radius-medium mobile:radius-zero scroll-hide o-y-visible t-black pos-relative mn-b-thin flex-v-center t-left flex-nowrap flex\">\n\t\t \t<h2 class=\"pos-relative ws-nowrap flex-v-center flex-nowrap flex\">\n\t\t \t\t<span class=\"mn-r-thin\">Posts for </span>\n\n\t\t \t\t<Select \n\t\t\t :options=\"['today','week','month','year','all time']\"\n\t\t\t v-model:select=\"blog.state.filter.period\" \n\t\t\t placeholder=\"all time\"\n\t\t\t class=\"\n\t\t\t \tfw-semi\n\t\t\t \tpos-relative \n\t\t\t \tw-max\n\t\t\t \tbg-main t-black\n\t\t\t \tpd-thin\n\t\t\t \tradius-medium\n\t\t\t h2\n\t\t\t \tt-center\n\t\t\t \tflex-column \n\t\t\t \tflex \n\t\t\t \tgap-regular \n\t\t\t \"\n\t\t\t />\n\t\t \t</h2>\n\t\t\t\t</header>\n\n\t\t\t\t<div v-if=\"!route.params.url && route.name !=='CreateBlogPost'\" class=\"w-100 pos-relative\">\n\t\t\t\t\t<ul class=\"align-self-start pos-sticky pos-t-0 w-100 bg-light radius-medium mobile:radius-zero mn-b-thin pd-medium p-regular gap-thin flex-row flex-nowrap flex z-index-2 o-scroll ws-nowrap scroll-hide\">\n\t\t\t\t\t\t<li \t\n\t\t\t\t\t\t\t:class=\"{'t-black bg-white': route.params.category === 'featured' }\" \t\t\t\t\t\n\t\t\t\t\t\t\t@click=\"() => { blog.state.sort.param = 'createdAt'; router.push({name: 'Blog', params: { category: 'featured' } })}\" \n\t\t\t\t\t\t\tclass=\"cursor-pointer flex-v-center flex fw-medium pd-thin radius-small\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<IconFeatured class=\"i-medium mn-r-thin t-transp\"/>\n\t\t\t\t\t\t\tFeatured\n\t\t\t\t\t\t</li>\n\t\t\t\t\t\t<li \t\n\t\t\t\t\t\t\t:class=\"{'t-black bg-white': route.params.category === 'popular' }\"\t\t\t\t\t \t\t\t\t\n\t\t\t\t\t\t\t@click=\"() => { blog.state.sort.param = 'views'; router.push({name: 'Blog', params: { category: 'popular' } }) }\" \n\t\t\t\t\t\t\tclass=\"cursor-pointer fw-medium flex-v-center flex pd-thin radius-small\"\n\t\t\t\t\t\t>\t\n\t\t\t\t\t\t\t<IconPopular class=\"i-medium mn-r-thin t-transp\"/>\n\t\t\t\t\t\t\tPopular\n\t\t\t\t\t\t</li>\n\t\t\t\t\t\t<li \t\n\t\t\t\t\t\t\t:class=\"{'t-black bg-white': route.params.category === 'new'}\" \t\t\t\t\t\n\t\t\t\t\t\t\t@click=\"() => { blog.state.sort.param = 'createdAt'; router.push({name: 'Blog', params: { category: 'new' } })}\" \n\t\t\t\t\t\t\tclass=\"cursor-pointer fw-medium flex-v-center flex pd-thin radius-small\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<IconRecent class=\"i-medium mn-r-thin t-transp\"/>\n\t\t\t\t\t\t\tRecent\n\t\t\t\t\t\t</li>\n\t\t\t\t\t\t<li \t\n\t\t\t\t\t\t\tv-if=\"auth.state.user._id\"\n\t\t\t\t\t\t\t:class=\"{'t-black bg-white': route.params.category === 'following'}\" \t\t\n\t\t\t\t\t\t\t@click=\"() => { blog.state.sort.param = 'createdAt'; router.push({name: 'Blog', params: { category: 'following' } })}\" \n\t\t\t\t\t\t\tclass=\"cursor-pointer fw-medium flex-v-center flex pd-thin radius-small\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<IconFollowing class=\"i-medium mn-r-thin t-transp\"/>\n\t\t\t\t\t\t\tFollowing\n\t\t\t\t\t\t</li>\n\n\t\t\t\t\t\t<router-link \n\t\t\t\t\t\t\tv-if=\"auth.state.user._id\"\n\t\t\t\t\t\t\t:to=\"{\n\t\t\t\t\t\t\t\tname: 'CreateBlogPost'\n\t\t\t\t\t\t\t}\" \n\t\t\t\t\t\t\tclass=\"button fw-medium bg-main w-max mn-l-auto\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\tCreate Post\n\t\t\t\t\t\t</router-link>\n\t\t\t\t\t</ul>\n\t\t\t\t</div>\n\n\n\t\t\t\t<router-view v-slot=\"{ Component, route }\">\n\t\t\t\t\t<transition name=\"scaleIn\" mode=\"out-in\">\n\t\t\t\t\t\t<component ref=\"page\" :key=\"route.query\" :is=\"Component\" />\n\t\t\t\t\t</transition>\n\t\t\t\t</router-view>\n\t\t\t</div>\n\n\t\t\t<div style=\"flex: 1 1 auto\" class=\"desktop-only pos-sticky pos-b-thin scroll-hide h-100 w-40 h-100 pos-relative \">\n\t\t\t\t<div class=\"radius-medium bg-light mn-b-thin pd-small\">\n\t\t\t\t\t<div class=\"gap-thin flex-nowrap flex\">\n\t\t\t\t\t\t<p class=\"fw-medium mn-b-small\">Latest Comments</p>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<div class=\"flex flex-column gap-thin\">\n\t\t\t\t\t\t<Comment\n\t\t \tv-for=\"comment in comments.slice(0,5)\"\n\t\t\t :key=\"comment._id\"\n\t\t\t :comment=\"comment\"\n\t\t\t :target=\"target\"\n\t\t\t :type=\"type\"\n\t\t\t :owner=\"owner\"\n\t\t\t @reply=\"handleReply\"\n\t\t\t @load-more=\"loadMoreChildren\"\n\t\t\t class=\"comment bg-white pd-small radius-regular\"\n\t\t\t />\n\t\t\t </div>\n\t\t </div>\n\n\t <div class=\"radius-medium bg-light pd-small\">\n\t\t\t\t\t<div class=\"gap-thin flex-v-center flex-nowrap flex mn-b-small\">\n\t\t\t\t\t\t<p class=\"text-box-trim-end fw-medium\">Popular Communities</p>\n\t\t\t\t\t\t\n\t\t\t\t\t\t<router-link\n\t\t\t\t\t\t\tv-if=\"auth.state.user._id\"\n\t\t\t\t\t\t\tto=\"/organizations/create\"\n\t\t\t\t\t\t\tclass=\"fw-medium cursor-pointer hover:scale-[1.05] radius-extra flex-center flex i-medium bg-main\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t+\n\t\t\t\t\t\t</router-link>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<transition name=\"slide-fade\">\n\t\t\t\t\t\t<Feed\n\t\t\t\t\t\t\t:showLoadMore=\"false\"\n\t\t\t\t\t\t\t:LoadMore=\"false\"\n\t\t\t\t :states=\"{\n\t\t\t\t empty: {\n\t\t\t\t title: 'No Organization Found',\n\t\t\t\t description: 'Currently, there are no organization available.'\n\t\t\t\t }\n\t\t\t\t }\"\n\t\t\t\t :store=\"{\n\t\t\t\t read: (options) => organizations.actions.read(options),\n\t\t\t\t state: organizations.state\n\t\t\t\t }\"\n\t\t\t\t :options=\"{\n\t\t\t\t \tuser: auth.state.user._id,\n\t\t\t\t\t\t\t\t\tsort: 'numberOfMemberships',\n\t\t\t\t\t\t\t\t\tcontain: ['blogposts'],\n\t\t\t\t\t\t\t\t\tlookup: ['blogposts'],\n\t\t\t\t\t\t\t\t\tlimit: 10\n\t\t\t\t }\"\n\t\t\t\t v-slot=\"{ \n\t\t\t\t items \n\t\t\t\t }\"\n\t\t\t\t class=\"flex flex-column gap-thin\"\n\t\t\t\t >\n\t\t\t\t \t<CardOrganization \n\t\t\t \t\t\tv-for=\"organization in items\"\n\t\t\t \t:key=\"organization._id\" \n\t\t\t\t \t:organization=\"organization\"\n\t\t\t\t \t:user=\"auth.state.user\"\n\t\t\t\t \t:showProducts=\"false\"\n\t\t\t\t \t:showRating=\"false\"\n\t\t\t\t \t:showFeatured=\"false\"\n\t\t\t\t \t:showFollowers=\"false\"\n\t\t\t\t\t\t\t\t@updateMembership=\"handleMembershipUpdate\"\n\t\t\t\t\t\t\t\tclass=\"pd-small w-100 bg-white radius-regular o-hidden\"\n\t\t\t\t\t />\n\t\t\t\t </Feed>\n\t\t\t\t\t</transition>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t</section>\n\t</div>\n</template>\n\n<script setup=\"props\">\n\timport { computed,onMounted, toRefs,ref } from 'vue'\n import { useRoute,useRouter } from 'vue-router'\n\n\timport Select from '@martyrs/src/components/Select/Select.vue'\n\timport Feed from '@martyrs/src/components/Feed/Feed.vue'\n\timport CardOrganization from '@martyrs/src/modules/organizations/components/blocks/CardOrganization.vue'\n\n\timport IconFeatured from '@martyrs/src/modules/icons/entities/IconFeatured.vue'\n\timport IconPopular from '@martyrs/src/modules/icons/entities/IconPopular.vue'\n\timport IconRecent from '@martyrs/src/modules/icons/entities/IconRecent.vue'\n\timport IconFollowing from '@martyrs/src/modules/icons/entities/IconFollowing.vue'\n\n\nimport axios from 'axios';\n\n\nimport Comment from '../sections/Comment.vue';\n\n\nconst $axios = axios.create({ baseURL: process.env.API_URL });\nconst comments = ref([]);\nconst commentContent = ref('');\n\nconst fetchComments = async () => {\n try {\n const response = await $axios.get('/comments/read', {\n params: {\n maxDepth: 1,\n format: 'plain'\n }\n });\n comments.value = response.data;\n } catch (error) {\n console.error('Error fetching comments:', error);\n }\n};\n\nfetchComments();\n\n// Import state\nimport * as blog from '@martyrs/src/modules/community/store/blogposts.js';\nimport * as auth from '@martyrs/src/modules/auth/views/store/auth.js'\nimport * as organizations from '@martyrs/src/modules/organizations/store/organizations.js'\nimport membershipsStore from '@martyrs/src/modules/organizations/store/memberships.store.js'\n\n// State\nconst route = useRoute();\nconst router = useRouter();\n\nif (route.params.category === 'popular') blog.state.sort.param = 'views'; \nif (route.params.category === 'new') blog.state.sort.param = 'createdAt'; \n\n\nconst handleMembershipUpdate = ({ membership, status, target }, statusName, statusNumber) => {\n membershipsStore.handleMembershipUpdate(organizations.state.current, membership, status, target, statusName, statusNumber)\n};\n\n</script>\n\n<style lang=\"scss\">\n\n</style>\n"],"names":["blog.state","organizations.state"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2LA,UAAM,SAAS,MAAM,OAAO,EAAE,SAAS,QAAQ,IAAI,SAAS;AAC5D,UAAM,WAAW,IAAI,EAAE;AACA,QAAI,EAAE;AAE7B,UAAM,gBAAgB,YAAY;AAChC,UAAI;AACF,cAAM,WAAW,MAAM,OAAO,IAAI,kBAAkB;AAAA,UAClD,QAAQ;AAAA,YACN,UAAU;AAAA,YACV,QAAQ;AAAA,UAChB;AAAA,QACA,CAAK;AACD,iBAAS,QAAQ,SAAS;AAAA,MAC5B,SAAS,OAAO;AACd,gBAAQ,MAAM,4BAA4B,KAAK;AAAA,MACjD;AAAA,IACF;AAEA,kBAAa;AASb,UAAM,QAAQ,SAAQ;AACtB,UAAM,SAAS,UAAS;AAExB,QAAI,MAAM,OAAO,aAAa,UAAWA,OAAW,KAAK,QAAQ;AACjE,QAAI,MAAM,OAAO,aAAa,MAAOA,OAAW,KAAK,QAAQ;AAG7D,UAAM,yBAAyB,CAAC,EAAE,YAAY,QAAQ,OAAM,GAAI,YAAY,iBAAiB;AAC3F,uBAAiB,uBAAuBC,QAAoB,SAAS,YAAY,QAAQ,QAAQ,YAAY,YAAY;AAAA,IAC3H;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,13 +1,13 @@
1
1
  import { computed, ref, onServerPrefetch, onMounted, createElementBlock, openBlock, createVNode, TransitionGroup, withCtx, createCommentVNode, Fragment, renderList, Transition, createBlock } from "vue";
2
2
  import { u as useHead } from "../../../../../../node_modules/.pnpm/@unhead_vue@1.11.20_vue@3.5.13_typescript@5.8.3_/node_modules/@unhead/vue/dist/shared/vue.-sixQ7xP.js";
3
- /* empty css */
3
+ /* empty css */
4
4
  import _sfc_main$1 from "../../../../components/EmptyState/EmptyState.vue.js";
5
5
  import _sfc_main$2 from "../blocks/CardBlogpost.vue.js";
6
6
  import SkeletonBlogpost from "../../../icons/skeletons/SkeletonBlogpost.vue.js";
7
7
  import { useRoute } from "vue-router";
8
8
  import "vue-i18n";
9
9
  /* empty css */
10
- /* empty css */
10
+ /* empty css */
11
11
  import { state as state$1 } from "../../../auth/views/store/auth.js";
12
12
  /* empty css */
13
13
  /* empty css */
@@ -110,7 +110,7 @@ const _sfc_main = {
110
110
  default: withCtx(() => [
111
111
  !isLoading.value && blogpost.value ? (openBlock(), createBlock(_sfc_main$2, {
112
112
  key: 0,
113
- onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$router.push({ name: "Blogpost", params: { url: blogpost.value.url } })),
113
+ onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$router.push({ name: "BlogPost", params: { url: blogpost.value.url } })),
114
114
  blogpost: blogpost.value,
115
115
  user: state$1.user._id,
116
116
  type: "blogpostPage",
@@ -1 +1 @@
1
- {"version":3,"file":"BlogPost.vue.js","sources":["../../../../../../../src/modules/community/components/pages/BlogPost.vue"],"sourcesContent":["<template>\n <section>\n <TransitionGroup tag=\"ul\" name=\"fade\" class=\"o-hidden bg-light radius-medium\">\n <SkeletonBlogpost\n v-if=\"isLoading\"\n v-for=\"i in 3\" :key=\"i\"\n class=\"\"\n />\n </TransitionGroup>\n <transition \n name=\"fade\"\n >\n <EmptyState \n v-if=\"!isLoading && !blogpost\"\n title=\"No Blogpost Found\"\n description=\"Currently, there are no blogposts available. Please check back later.\"\n class=\"pd-medium mn-b-thin bg-light radius-big\"\n />\n </transition>\n\n <TransitionGroup tag=\"div\" name=\"fade\" class=\"container\">\n \t <!-- <button @click=\"share\" >\n\t\t\t Поделиться\n\t\t\t </button>\n\t\t\t -->\n \t<CardBlogpost \n v-if=\"!isLoading && blogpost\"\n @click=\"$router.push({name: 'Blogpost', params: {url: blogpost.url}})\" \n :blogpost=\"blogpost\" \n :user=\"auth.state.user._id\"\n :type=\"'blogpostPage'\"\n :hideTitle=\"true\"\n class=\"mn-b-small bg-light radius-medium mobile:radius-zero\"\n >\n\n \t <Viewer\n \t v-if=\"blogpost && blogpost.content\"\n \t :content=\"blogpost.content\"\n \t />\n\n \t\t\t\t<a v-if=\"blogpost.source\" :href=\"blogpost.source\" target=\"_blank\" class=\"mn-b-semi d-block w-max radius-big pd-thin bg-black t-white\">\n \t\t\t\t\tCheck Source 🔗\n \t\t\t\t</a>\n \t\t\t\n </CardBlogpost>\n\n \t<!-- <h3 class=\"mn-b-small\">Recommended Communities</h3>\n \t\t<Publics \n \t\t\tclass=\"mn-b-small\"\n \t\t/> -->\n\n <Comments \n v-if=\"!isLoading && blogpost\" \n :type=\"'blogpost'\" \n :target=\"blogpost._id\" \n :owner=\"auth.state.user._id\"\n class=\"bg-light radius-medium mobile:radius-zero pd-medium\"\n />\n \n </TransitionGroup> \n \n </section>\n</template>\n\n<script setup>\nimport { ref, onMounted, computed, onServerPrefetch, watch } from 'vue';\nimport { useHead } from '@unhead/vue'\nimport Loader from '@martyrs/src/components/Loader/Loader.vue';\nimport EmptyState from '@martyrs/src/components/EmptyState/EmptyState.vue';\nimport CardBlogpost from '@martyrs/src/modules/community/components/blocks/CardBlogpost.vue';\nimport SkeletonBlogpost from '@martyrs/src/modules/icons/skeletons/SkeletonBlogpost.vue'\nimport Publics from '@martyrs/src/modules/organizations/components/sections/Publics.vue'\nimport Comments from '@martyrs/src/modules/community/components/sections/Comments.vue';\nimport Viewer from '@martyrs/src/modules/constructor/components/sections/Viewer.vue';\nimport * as blog from '@martyrs/src/modules/community/store/blogposts.js';\nimport * as auth from '@martyrs/src/modules/auth/views/store/auth.js';\nimport { useStore } from '@martyrs/src/modules/core/views/store/core.store.js';\n\nimport { useRoute } from 'vue-router';\n\nconst route = useRoute();\nconst store = useStore();\nconst blogpost = computed(() => blog.state.current);\nconst isLoading = ref(false);\nconst canShare = ref(false);\nconst error = ref(null);\n\nasync function fetchBlogpost() {\n try {\n isLoading.value = true;\n const data = await blog.read({ user: auth.state.user?._id, url: route.params.url });\n blogpost.value = data[0];\n // Обновляем состояние хранилища\n blog.state.current = data[0];\n\n // Если пост не найден - устанавливаем 404\n if (!data || data.length === 0 || !blog.state.current) {\n store.core.state.notFound = true;\n }\n } catch (err) {\n error.value = err;\n console.error('Error fetching blogpost:', err);\n store.core.state.notFound = true;\n } finally {\n isLoading.value = false;\n }\n}\n\nonServerPrefetch(async() => {\n\tawait fetchBlogpost()\n});\n\nonMounted(async() => {\n if (!blogpost.value || blogpost.value.url !== route.params.url) {\n await fetchBlogpost();\n }\n canShare.value = !!navigator.share;\n});\n\n\nconst share = async () => {\n if (!canShare.value) return;\n try {\n await navigator.share({\n title: blogpost.value.name,\n text: firstText.value?.content.slice(0, 120) || 'Check out this blog post!',\n url: window.location.href,\n });\n console.log('Content shared successfully');\n } catch (error) {\n console.error('Error sharing:', error);\n }\n};\n\nconst firstImage = computed(() => {\n return blogpost.value?.content?.find(block => block.type === 'ImageUpload');\n});\n\nconst firstText = computed(() => {\n return blogpost.value?.content?.find(block => \n block.type === 'Textarea' && block.class !== 'h2'\n );\n});\n\nconst metadata = computed(() => ({\n title: blogpost.value?.name,\n description: firstText.value?.content.slice(0, 120),\n meta: [\n { hid: 'description', name: 'description', content: firstText.value?.content.slice(0, 120) },\n { hid: 'og:title', property: 'og:title', content: blogpost.value?.name },\n { hid: 'og:description', property: 'og:description', content: firstText.value?.content.slice(0, 120) },\n { hid: 'og:image', property: 'og:image', content: firstImage.value?.content ? `${process.env.FILE_SERVER_URL}${firstImage.value.content}` : `${process.env.FILE_SERVER_URL}/favicon/cover.jpg` },\n { hid: 'twitter:title', name: 'twitter:title', content: blogpost.value?.name },\n { hid: 'twitter:description', name: 'twitter:description', content: firstText.value?.content.slice(0, 120) },\n { hid: 'twitter:image', name: 'twitter:image', content: firstImage.value?.content ? `${process.env.FILE_SERVER_URL}${firstImage.value.content}` : `${process.env.FILE_SERVER_URL}/favicon/cover.jpg` },\n { hid: 'twitter:card', name: 'twitter:card', content: 'summary_large_image' },\n ],\n}));\n\nuseHead(metadata);\n</script>\n\n<style lang=\"scss\">\n\n</style>\n"],"names":["blog.state","blog.read","auth.state"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAgFA,UAAM,QAAQ,SAAQ;AACtB,UAAM,QAAQ,SAAQ;AACtB,UAAM,WAAW,SAAS,MAAMA,MAAW,OAAO;AAClD,UAAM,YAAY,IAAI,KAAK;AAC3B,UAAM,WAAW,IAAI,KAAK;AAC1B,UAAM,QAAQ,IAAI,IAAI;AAEtB,mBAAe,gBAAgB;AAC7B,UAAI;AACF,kBAAU,QAAQ;AAClB,cAAM,OAAO,MAAMC,KAAU,EAAE,MAAMC,QAAW,MAAM,KAAK,KAAK,MAAM,OAAO,IAAG,CAAE;AAClF,iBAAS,QAAQ,KAAK,CAAC;AAEvBF,cAAW,UAAU,KAAK,CAAC;AAG3B,YAAI,CAAC,QAAQ,KAAK,WAAW,KAAK,CAACA,MAAW,SAAS;AACrD,gBAAM,KAAK,MAAM,WAAW;AAAA,QAC9B;AAAA,MACF,SAAS,KAAK;AACZ,cAAM,QAAQ;AACd,gBAAQ,MAAM,4BAA4B,GAAG;AAC7C,cAAM,KAAK,MAAM,WAAW;AAAA,MAC9B,UAAC;AACC,kBAAU,QAAQ;AAAA,MACpB;AAAA,IACF;AAEA,qBAAiB,YAAW;AAC3B,YAAM,cAAa;AAAA,IACpB,CAAC;AAED,cAAU,YAAW;AACnB,UAAI,CAAC,SAAS,SAAS,SAAS,MAAM,QAAQ,MAAM,OAAO,KAAK;AAC9D,cAAM,cAAa;AAAA,MACrB;AACA,eAAS,QAAQ,CAAC,CAAC,UAAU;AAAA,IAC/B,CAAC;AAiBD,UAAM,aAAa,SAAS,MAAM;AAChC,aAAO,SAAS,OAAO,SAAS,KAAK,WAAS,MAAM,SAAS,aAAa;AAAA,IAC5E,CAAC;AAED,UAAM,YAAY,SAAS,MAAM;AAC/B,aAAO,SAAS,OAAO,SAAS;AAAA,QAAK,WACnC,MAAM,SAAS,cAAc,MAAM,UAAU;AAAA,MACjD;AAAA,IACA,CAAC;AAED,UAAM,WAAW,SAAS,OAAO;AAAA,MAC/B,OAAO,SAAS,OAAO;AAAA,MACvB,aAAa,UAAU,OAAO,QAAQ,MAAM,GAAG,GAAG;AAAA,MAClD,MAAM;AAAA,QACJ,EAAE,KAAK,eAAe,MAAM,eAAe,SAAS,UAAU,OAAO,QAAQ,MAAM,GAAG,GAAG,EAAC;AAAA,QAC1F,EAAE,KAAK,YAAY,UAAU,YAAY,SAAS,SAAS,OAAO,KAAI;AAAA,QACtE,EAAE,KAAK,kBAAkB,UAAU,kBAAkB,SAAS,UAAU,OAAO,QAAQ,MAAM,GAAG,GAAG,EAAC;AAAA,QACpG,EAAE,KAAK,YAAY,UAAU,YAAY,SAAS,WAAW,OAAO,UAAU,GAAG,QAAQ,IAAI,eAAe,GAAG,WAAW,MAAM,OAAO,KAAK,GAAG,QAAQ,IAAI,eAAe,qBAAoB;AAAA,QAC9L,EAAE,KAAK,iBAAiB,MAAM,iBAAiB,SAAS,SAAS,OAAO,KAAI;AAAA,QAC5E,EAAE,KAAK,uBAAuB,MAAM,uBAAuB,SAAS,UAAU,OAAO,QAAQ,MAAM,GAAG,GAAG,EAAC;AAAA,QAC1G,EAAE,KAAK,iBAAiB,MAAM,iBAAiB,SAAS,WAAW,OAAO,UAAU,GAAG,QAAQ,IAAI,eAAe,GAAG,WAAW,MAAM,OAAO,KAAK,GAAG,QAAQ,IAAI,eAAe,qBAAoB;AAAA,QACpM,EAAE,KAAK,gBAAgB,MAAM,gBAAgB,SAAS,sBAAqB;AAAA,MAC/E;AAAA,IACA,EAAE;AAEF,YAAQ,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"BlogPost.vue.js","sources":["../../../../../../../src/modules/community/components/pages/BlogPost.vue"],"sourcesContent":["<template>\n <section>\n <TransitionGroup tag=\"ul\" name=\"fade\" class=\"o-hidden bg-light radius-medium\">\n <SkeletonBlogpost\n v-if=\"isLoading\"\n v-for=\"i in 3\" :key=\"i\"\n class=\"\"\n />\n </TransitionGroup>\n <transition \n name=\"fade\"\n >\n <EmptyState \n v-if=\"!isLoading && !blogpost\"\n title=\"No Blogpost Found\"\n description=\"Currently, there are no blogposts available. Please check back later.\"\n class=\"pd-medium mn-b-thin bg-light radius-big\"\n />\n </transition>\n\n <TransitionGroup tag=\"div\" name=\"fade\" class=\"container\">\n \t <!-- <button @click=\"share\" >\n\t\t\t Поделиться\n\t\t\t </button>\n\t\t\t -->\n \t<CardBlogpost \n v-if=\"!isLoading && blogpost\"\n @click=\"$router.push({name: 'BlogPost', params: {url: blogpost.url}})\" \n :blogpost=\"blogpost\" \n :user=\"auth.state.user._id\"\n :type=\"'blogpostPage'\"\n :hideTitle=\"true\"\n class=\"mn-b-small bg-light radius-medium mobile:radius-zero\"\n >\n\n \t <Viewer\n \t v-if=\"blogpost && blogpost.content\"\n \t :content=\"blogpost.content\"\n \t />\n\n \t\t\t\t<a v-if=\"blogpost.source\" :href=\"blogpost.source\" target=\"_blank\" class=\"mn-b-semi d-block w-max radius-big pd-thin bg-black t-white\">\n \t\t\t\t\tCheck Source 🔗\n \t\t\t\t</a>\n \t\t\t\n </CardBlogpost>\n\n \t<!-- <h3 class=\"mn-b-small\">Recommended Communities</h3>\n \t\t<Publics \n \t\t\tclass=\"mn-b-small\"\n \t\t/> -->\n\n <Comments \n v-if=\"!isLoading && blogpost\" \n :type=\"'blogpost'\" \n :target=\"blogpost._id\" \n :owner=\"auth.state.user._id\"\n class=\"bg-light radius-medium mobile:radius-zero pd-medium\"\n />\n \n </TransitionGroup> \n \n </section>\n</template>\n\n<script setup>\nimport { ref, onMounted, computed, onServerPrefetch, watch } from 'vue';\nimport { useHead } from '@unhead/vue'\nimport Loader from '@martyrs/src/components/Loader/Loader.vue';\nimport EmptyState from '@martyrs/src/components/EmptyState/EmptyState.vue';\nimport CardBlogpost from '@martyrs/src/modules/community/components/blocks/CardBlogpost.vue';\nimport SkeletonBlogpost from '@martyrs/src/modules/icons/skeletons/SkeletonBlogpost.vue'\nimport Publics from '@martyrs/src/modules/organizations/components/sections/Publics.vue'\nimport Comments from '@martyrs/src/modules/community/components/sections/Comments.vue';\nimport Viewer from '@martyrs/src/modules/constructor/components/sections/Viewer.vue';\nimport * as blog from '@martyrs/src/modules/community/store/blogposts.js';\nimport * as auth from '@martyrs/src/modules/auth/views/store/auth.js';\nimport { useStore } from '@martyrs/src/modules/core/views/store/core.store.js';\n\nimport { useRoute } from 'vue-router';\n\nconst route = useRoute();\nconst store = useStore();\nconst blogpost = computed(() => blog.state.current);\nconst isLoading = ref(false);\nconst canShare = ref(false);\nconst error = ref(null);\n\nasync function fetchBlogpost() {\n try {\n isLoading.value = true;\n const data = await blog.read({ user: auth.state.user?._id, url: route.params.url });\n blogpost.value = data[0];\n // Обновляем состояние хранилища\n blog.state.current = data[0];\n\n // Если пост не найден - устанавливаем 404\n if (!data || data.length === 0 || !blog.state.current) {\n store.core.state.notFound = true;\n }\n } catch (err) {\n error.value = err;\n console.error('Error fetching blogpost:', err);\n store.core.state.notFound = true;\n } finally {\n isLoading.value = false;\n }\n}\n\nonServerPrefetch(async() => {\n\tawait fetchBlogpost()\n});\n\nonMounted(async() => {\n if (!blogpost.value || blogpost.value.url !== route.params.url) {\n await fetchBlogpost();\n }\n canShare.value = !!navigator.share;\n});\n\n\nconst share = async () => {\n if (!canShare.value) return;\n try {\n await navigator.share({\n title: blogpost.value.name,\n text: firstText.value?.content.slice(0, 120) || 'Check out this blog post!',\n url: window.location.href,\n });\n console.log('Content shared successfully');\n } catch (error) {\n console.error('Error sharing:', error);\n }\n};\n\nconst firstImage = computed(() => {\n return blogpost.value?.content?.find(block => block.type === 'ImageUpload');\n});\n\nconst firstText = computed(() => {\n return blogpost.value?.content?.find(block => \n block.type === 'Textarea' && block.class !== 'h2'\n );\n});\n\nconst metadata = computed(() => ({\n title: blogpost.value?.name,\n description: firstText.value?.content.slice(0, 120),\n meta: [\n { hid: 'description', name: 'description', content: firstText.value?.content.slice(0, 120) },\n { hid: 'og:title', property: 'og:title', content: blogpost.value?.name },\n { hid: 'og:description', property: 'og:description', content: firstText.value?.content.slice(0, 120) },\n { hid: 'og:image', property: 'og:image', content: firstImage.value?.content ? `${process.env.FILE_SERVER_URL}${firstImage.value.content}` : `${process.env.FILE_SERVER_URL}/favicon/cover.jpg` },\n { hid: 'twitter:title', name: 'twitter:title', content: blogpost.value?.name },\n { hid: 'twitter:description', name: 'twitter:description', content: firstText.value?.content.slice(0, 120) },\n { hid: 'twitter:image', name: 'twitter:image', content: firstImage.value?.content ? `${process.env.FILE_SERVER_URL}${firstImage.value.content}` : `${process.env.FILE_SERVER_URL}/favicon/cover.jpg` },\n { hid: 'twitter:card', name: 'twitter:card', content: 'summary_large_image' },\n ],\n}));\n\nuseHead(metadata);\n</script>\n\n<style lang=\"scss\">\n\n</style>\n"],"names":["blog.state","blog.read","auth.state"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAgFA,UAAM,QAAQ,SAAQ;AACtB,UAAM,QAAQ,SAAQ;AACtB,UAAM,WAAW,SAAS,MAAMA,MAAW,OAAO;AAClD,UAAM,YAAY,IAAI,KAAK;AAC3B,UAAM,WAAW,IAAI,KAAK;AAC1B,UAAM,QAAQ,IAAI,IAAI;AAEtB,mBAAe,gBAAgB;AAC7B,UAAI;AACF,kBAAU,QAAQ;AAClB,cAAM,OAAO,MAAMC,KAAU,EAAE,MAAMC,QAAW,MAAM,KAAK,KAAK,MAAM,OAAO,IAAG,CAAE;AAClF,iBAAS,QAAQ,KAAK,CAAC;AAEvBF,cAAW,UAAU,KAAK,CAAC;AAG3B,YAAI,CAAC,QAAQ,KAAK,WAAW,KAAK,CAACA,MAAW,SAAS;AACrD,gBAAM,KAAK,MAAM,WAAW;AAAA,QAC9B;AAAA,MACF,SAAS,KAAK;AACZ,cAAM,QAAQ;AACd,gBAAQ,MAAM,4BAA4B,GAAG;AAC7C,cAAM,KAAK,MAAM,WAAW;AAAA,MAC9B,UAAC;AACC,kBAAU,QAAQ;AAAA,MACpB;AAAA,IACF;AAEA,qBAAiB,YAAW;AAC3B,YAAM,cAAa;AAAA,IACpB,CAAC;AAED,cAAU,YAAW;AACnB,UAAI,CAAC,SAAS,SAAS,SAAS,MAAM,QAAQ,MAAM,OAAO,KAAK;AAC9D,cAAM,cAAa;AAAA,MACrB;AACA,eAAS,QAAQ,CAAC,CAAC,UAAU;AAAA,IAC/B,CAAC;AAiBD,UAAM,aAAa,SAAS,MAAM;AAChC,aAAO,SAAS,OAAO,SAAS,KAAK,WAAS,MAAM,SAAS,aAAa;AAAA,IAC5E,CAAC;AAED,UAAM,YAAY,SAAS,MAAM;AAC/B,aAAO,SAAS,OAAO,SAAS;AAAA,QAAK,WACnC,MAAM,SAAS,cAAc,MAAM,UAAU;AAAA,MACjD;AAAA,IACA,CAAC;AAED,UAAM,WAAW,SAAS,OAAO;AAAA,MAC/B,OAAO,SAAS,OAAO;AAAA,MACvB,aAAa,UAAU,OAAO,QAAQ,MAAM,GAAG,GAAG;AAAA,MAClD,MAAM;AAAA,QACJ,EAAE,KAAK,eAAe,MAAM,eAAe,SAAS,UAAU,OAAO,QAAQ,MAAM,GAAG,GAAG,EAAC;AAAA,QAC1F,EAAE,KAAK,YAAY,UAAU,YAAY,SAAS,SAAS,OAAO,KAAI;AAAA,QACtE,EAAE,KAAK,kBAAkB,UAAU,kBAAkB,SAAS,UAAU,OAAO,QAAQ,MAAM,GAAG,GAAG,EAAC;AAAA,QACpG,EAAE,KAAK,YAAY,UAAU,YAAY,SAAS,WAAW,OAAO,UAAU,GAAG,QAAQ,IAAI,eAAe,GAAG,WAAW,MAAM,OAAO,KAAK,GAAG,QAAQ,IAAI,eAAe,qBAAoB;AAAA,QAC9L,EAAE,KAAK,iBAAiB,MAAM,iBAAiB,SAAS,SAAS,OAAO,KAAI;AAAA,QAC5E,EAAE,KAAK,uBAAuB,MAAM,uBAAuB,SAAS,UAAU,OAAO,QAAQ,MAAM,GAAG,GAAG,EAAC;AAAA,QAC1G,EAAE,KAAK,iBAAiB,MAAM,iBAAiB,SAAS,WAAW,OAAO,UAAU,GAAG,QAAQ,IAAI,eAAe,GAAG,WAAW,MAAM,OAAO,KAAK,GAAG,QAAQ,IAAI,eAAe,qBAAoB;AAAA,QACpM,EAAE,KAAK,gBAAgB,MAAM,gBAAgB,SAAS,sBAAqB;AAAA,MAC/E;AAAA,IACA,EAAE;AAEF,YAAQ,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}