@ozdao/martyrs 0.2.602 → 0.2.603

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 (714) 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/EditImages/{EditImages.vue2.js → EditImages.vue.js} +2 -2
  34. package/dist/martyrs/src/components/EditImages/EditImages.vue.js.map +1 -0
  35. package/dist/martyrs/src/components/Feed/Feed.vue.js +2 -2
  36. package/dist/martyrs/src/components/FieldBig/FieldBig.vue.js +4 -4
  37. package/dist/martyrs/src/components/LocationMarker/{LocationMarker.vue.js → LocationMarker.vue2.js} +2 -2
  38. package/dist/martyrs/src/components/LocationMarker/LocationMarker.vue2.js.map +1 -0
  39. package/dist/martyrs/src/components/Tab/{Tab.vue2.js → Tab.vue.js} +2 -2
  40. package/dist/martyrs/src/components/Tab/Tab.vue.js.map +1 -0
  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/modules/auth/views/components/blocks/OtpDialog.vue.js +2 -2
  46. package/dist/martyrs/src/modules/auth/views/components/blocks/PopupAuth.vue.js +3 -3
  47. package/dist/martyrs/src/modules/auth/views/components/blocks/PopupAuth.vue.js.map +1 -1
  48. package/dist/martyrs/src/modules/auth/views/components/pages/Invite.vue.js +3 -3
  49. package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.js +2 -2
  50. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileBlogposts.vue.js +17 -21
  51. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileBlogposts.vue.js.map +1 -1
  52. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditAccount.vue.js +13 -13
  53. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditProfile.vue.js +2 -2
  54. package/dist/martyrs/src/modules/auth/views/components/pages/ResetPassword.vue.js +3 -3
  55. package/dist/martyrs/src/modules/auth/views/components/pages/SignIn.vue.js +42 -4
  56. package/dist/martyrs/src/modules/auth/views/components/pages/SignIn.vue.js.map +1 -1
  57. package/dist/martyrs/src/modules/auth/views/components/pages/SignUp.vue.js +3 -3
  58. package/dist/martyrs/src/modules/auth/views/components/pages/UserDashboard.vue.js +34 -66
  59. package/dist/martyrs/src/modules/auth/views/components/pages/UserDashboard.vue.js.map +1 -1
  60. package/dist/martyrs/src/modules/auth/views/router/users.router.js +0 -53
  61. package/dist/martyrs/src/modules/auth/views/router/users.router.js.map +1 -1
  62. package/dist/martyrs/src/modules/backoffice/components/pages/Dashboard.vue.js +515 -103
  63. package/dist/martyrs/src/modules/backoffice/components/pages/Dashboard.vue.js.map +1 -1
  64. package/dist/martyrs/src/modules/backoffice/configs/navigation.backoffice.config.js +1 -3
  65. package/dist/martyrs/src/modules/backoffice/configs/navigation.backoffice.config.js.map +1 -1
  66. package/dist/martyrs/src/modules/backoffice/router/backoffice.router.js +1 -32
  67. package/dist/martyrs/src/modules/backoffice/router/backoffice.router.js.map +1 -1
  68. package/dist/martyrs/src/modules/community/community.client.js +49 -8
  69. package/dist/martyrs/src/modules/community/community.client.js.map +1 -1
  70. package/dist/martyrs/src/modules/community/components/blocks/CardBlogpost.vue.js +10 -4
  71. package/dist/martyrs/src/modules/community/components/blocks/CardBlogpost.vue.js.map +1 -1
  72. package/dist/martyrs/src/modules/community/components/layouts/Community.vue.js +3 -3
  73. package/dist/martyrs/src/modules/community/components/layouts/Community.vue.js.map +1 -1
  74. package/dist/martyrs/src/modules/community/components/pages/BlogPost.vue.js +2 -2
  75. package/dist/martyrs/src/modules/community/components/pages/BlogPost.vue.js.map +1 -1
  76. package/dist/martyrs/src/modules/community/components/pages/CreateBlogPost.vue.js +28 -17
  77. package/dist/martyrs/src/modules/community/components/pages/CreateBlogPost.vue.js.map +1 -1
  78. package/dist/martyrs/src/modules/community/components/pages/Posts.vue.js +36 -28
  79. package/dist/martyrs/src/modules/community/components/pages/Posts.vue.js.map +1 -1
  80. package/dist/martyrs/src/modules/community/components/sections/Comment.vue.js +2 -2
  81. package/dist/martyrs/src/modules/community/components/sections/Comment.vue.js.map +1 -1
  82. package/dist/martyrs/src/modules/community/router/community.backoffice.router.js +21 -0
  83. package/dist/martyrs/src/modules/community/router/community.backoffice.router.js.map +1 -0
  84. package/dist/martyrs/src/modules/community/router/community.organization.router.js +70 -0
  85. package/dist/martyrs/src/modules/community/router/community.organization.router.js.map +1 -0
  86. package/dist/martyrs/src/modules/community/router/community.router.js +73 -0
  87. package/dist/martyrs/src/modules/community/router/community.router.js.map +1 -0
  88. package/dist/martyrs/src/modules/community/router/community.user.router.js +20 -0
  89. package/dist/martyrs/src/modules/community/router/community.user.router.js.map +1 -0
  90. package/dist/martyrs/src/modules/constructor/components/elements/Textarea.vue2.js +1 -1
  91. package/dist/martyrs/src/modules/constructor/components/elements/Textarea.vue2.js.map +1 -1
  92. package/dist/martyrs/src/modules/constructor/components/sections/Constructor.vue.js.map +1 -1
  93. package/dist/martyrs/src/modules/core/views/classes/core.app.js +5 -3
  94. package/dist/martyrs/src/modules/core/views/classes/core.app.js.map +1 -1
  95. package/dist/martyrs/src/modules/core/views/classes/i18n.manager.js +7 -2
  96. package/dist/martyrs/src/modules/core/views/classes/i18n.manager.js.map +1 -1
  97. package/dist/martyrs/src/modules/core/views/classes/ws.manager.js +11 -5
  98. package/dist/martyrs/src/modules/core/views/classes/ws.manager.js.map +1 -1
  99. package/dist/martyrs/src/modules/core/views/components/blocks/Card.vue.js +53 -18
  100. package/dist/martyrs/src/modules/core/views/components/blocks/Card.vue.js.map +1 -1
  101. package/dist/martyrs/src/modules/core/views/components/blocks/CardHeader.vue.js +2 -2
  102. package/dist/martyrs/src/modules/core/views/components/blocks/CardStat.vue.js +44 -0
  103. package/dist/martyrs/src/modules/core/views/components/blocks/CardStat.vue.js.map +1 -0
  104. package/dist/martyrs/src/modules/core/views/components/blocks/PopupDateSelector.vue.js +5 -5
  105. package/dist/martyrs/src/modules/core/views/components/layouts/App.vue.js +1 -1
  106. package/dist/martyrs/src/modules/core/views/components/layouts/Client.vue.js +9 -6
  107. package/dist/martyrs/src/modules/core/views/components/layouts/Client.vue.js.map +1 -1
  108. package/dist/martyrs/src/modules/core/views/components/partials/BottomNavigationBar.vue.js +5 -5
  109. package/dist/martyrs/src/modules/core/views/components/partials/BottomNavigationBar.vue.js.map +1 -1
  110. package/dist/martyrs/src/modules/core/views/components/partials/Header.vue.js +14 -14
  111. package/dist/martyrs/src/modules/core/views/components/partials/Header.vue.js.map +1 -1
  112. package/dist/martyrs/src/modules/core/views/components/partials/LocationSelection.vue.js +2 -2
  113. package/dist/martyrs/src/modules/core/views/components/partials/Navigation.vue.js +28 -29
  114. package/dist/martyrs/src/modules/core/views/components/partials/Navigation.vue.js.map +1 -1
  115. package/dist/martyrs/src/modules/core/views/components/partials/NavigationBar.vue.js +6 -6
  116. package/dist/martyrs/src/modules/core/views/components/partials/Sidebar.vue.js +5 -7
  117. package/dist/martyrs/src/modules/core/views/components/partials/Sidebar.vue.js.map +1 -1
  118. package/dist/martyrs/src/modules/core/views/components/sections/{Filters.vue2.js → Filters.vue.js} +2 -2
  119. package/dist/martyrs/src/modules/core/views/components/sections/Filters.vue.js.map +1 -0
  120. package/dist/martyrs/src/modules/core/views/components/sections/SectionPageTitle.vue.js +28 -18
  121. package/dist/martyrs/src/modules/core/views/components/sections/SectionPageTitle.vue.js.map +1 -1
  122. package/dist/martyrs/src/modules/core/views/mixins/mixins.js +3 -3
  123. package/dist/martyrs/src/modules/core/views/mixins/mixins.js.map +1 -1
  124. package/dist/martyrs/src/modules/core/views/router/addRoutes.js +2 -3
  125. package/dist/martyrs/src/modules/core/views/router/addRoutes.js.map +1 -1
  126. package/dist/martyrs/src/modules/core/views/utils/vue-app-renderer.js +10 -0
  127. package/dist/martyrs/src/modules/core/views/utils/vue-app-renderer.js.map +1 -1
  128. package/dist/martyrs/src/modules/events/components/elements/ButtonCheck.vue.js +4 -4
  129. package/dist/martyrs/src/modules/events/components/elements/ButtonJoin.vue.js +2 -2
  130. package/dist/martyrs/src/modules/events/components/pages/EditEvent.vue.js +3 -3
  131. package/dist/martyrs/src/modules/events/components/pages/EditEventTickets.vue.js +9 -9
  132. package/dist/martyrs/src/modules/events/components/pages/EditEventTickets.vue.js.map +1 -1
  133. package/dist/martyrs/src/modules/events/components/pages/Event.vue.js +2 -2
  134. package/dist/martyrs/src/modules/events/components/pages/Events.vue.js +1 -0
  135. package/dist/martyrs/src/modules/events/components/pages/Events.vue.js.map +1 -1
  136. package/dist/martyrs/src/modules/events/components/pages/EventsBackoffice.vue.js +23 -33
  137. package/dist/martyrs/src/modules/events/components/pages/EventsBackoffice.vue.js.map +1 -1
  138. package/dist/martyrs/src/modules/events/components/sections/EditTickets.vue.js +13 -13
  139. package/dist/martyrs/src/modules/events/components/sections/List.vue.js +2 -2
  140. package/dist/martyrs/src/modules/events/components/sections/List.vue.js.map +1 -1
  141. package/dist/martyrs/src/modules/events/events.client.js +37 -15
  142. package/dist/martyrs/src/modules/events/events.client.js.map +1 -1
  143. package/dist/martyrs/src/modules/events/router/events.backoffice.router.js +95 -0
  144. package/dist/martyrs/src/modules/events/router/events.backoffice.router.js.map +1 -0
  145. package/dist/martyrs/src/modules/events/router/events.organization.router.js +95 -0
  146. package/dist/martyrs/src/modules/events/router/events.organization.router.js.map +1 -0
  147. package/dist/martyrs/src/modules/events/router/events.router.js +73 -364
  148. package/dist/martyrs/src/modules/events/router/events.router.js.map +1 -1
  149. package/dist/martyrs/src/modules/events/router/events.user.router.js +65 -0
  150. package/dist/martyrs/src/modules/events/router/events.user.router.js.map +1 -0
  151. package/dist/martyrs/src/modules/gallery/components/sections/BackofficeGallery.vue.js +4 -4
  152. package/dist/martyrs/src/modules/governance/configs/navigation.initiative.config.js +33 -0
  153. package/dist/martyrs/src/modules/governance/configs/navigation.initiative.config.js.map +1 -0
  154. package/dist/martyrs/src/modules/governance/governance.client.js +31 -0
  155. package/dist/martyrs/src/modules/governance/governance.client.js.map +1 -0
  156. package/dist/martyrs/src/modules/governance/views/components/blocks/CardInitiativeItem.vue.js +110 -0
  157. package/dist/martyrs/src/modules/governance/views/components/blocks/CardInitiativeItem.vue.js.map +1 -0
  158. package/dist/martyrs/src/modules/governance/views/components/blocks/CardSprintItem.vue.js +105 -0
  159. package/dist/martyrs/src/modules/governance/views/components/blocks/CardSprintItem.vue.js.map +1 -0
  160. package/dist/martyrs/src/modules/governance/views/components/blocks/CardTaskItem.vue.js +110 -0
  161. package/dist/martyrs/src/modules/governance/views/components/blocks/CardTaskItem.vue.js.map +1 -0
  162. package/dist/martyrs/src/modules/governance/views/components/blocks/CardVotingItem.vue.js +106 -0
  163. package/dist/martyrs/src/modules/governance/views/components/blocks/CardVotingItem.vue.js.map +1 -0
  164. package/dist/martyrs/src/modules/governance/views/components/pages/Governance.vue.js +52 -0
  165. package/dist/martyrs/src/modules/governance/views/components/pages/Governance.vue.js.map +1 -0
  166. package/dist/martyrs/src/modules/governance/views/components/pages/Initiative.vue.js +684 -0
  167. package/dist/martyrs/src/modules/governance/views/components/pages/Initiative.vue.js.map +1 -0
  168. package/dist/martyrs/src/modules/governance/views/components/pages/InitiativeCreate.vue.js +78 -0
  169. package/dist/martyrs/src/modules/governance/views/components/pages/InitiativeCreate.vue.js.map +1 -0
  170. package/dist/martyrs/src/modules/governance/views/components/pages/InitiativeSprints.vue.js +328 -0
  171. package/dist/martyrs/src/modules/governance/views/components/pages/InitiativeSprints.vue.js.map +1 -0
  172. package/dist/martyrs/src/modules/governance/views/components/pages/Initiatives.vue.js +145 -0
  173. package/dist/martyrs/src/modules/governance/views/components/pages/Initiatives.vue.js.map +1 -0
  174. package/dist/martyrs/src/modules/governance/views/components/pages/Sprint.vue.js +258 -0
  175. package/dist/martyrs/src/modules/governance/views/components/pages/Sprint.vue.js.map +1 -0
  176. package/dist/martyrs/src/modules/governance/views/components/pages/SprintCreate.vue.js +72 -0
  177. package/dist/martyrs/src/modules/governance/views/components/pages/SprintCreate.vue.js.map +1 -0
  178. package/dist/martyrs/src/modules/governance/views/components/pages/Task.vue.js +769 -0
  179. package/dist/martyrs/src/modules/governance/views/components/pages/Task.vue.js.map +1 -0
  180. package/dist/martyrs/src/modules/governance/views/components/pages/TaskCreate.vue.js +88 -0
  181. package/dist/martyrs/src/modules/governance/views/components/pages/TaskCreate.vue.js.map +1 -0
  182. package/dist/martyrs/src/modules/governance/views/components/pages/Tasks.vue.js +291 -0
  183. package/dist/martyrs/src/modules/governance/views/components/pages/Tasks.vue.js.map +1 -0
  184. package/dist/martyrs/src/modules/governance/views/components/pages/Voting.vue.js +267 -0
  185. package/dist/martyrs/src/modules/governance/views/components/pages/Voting.vue.js.map +1 -0
  186. package/dist/martyrs/src/modules/governance/views/components/pages/VotingCreate.vue.js +90 -0
  187. package/dist/martyrs/src/modules/governance/views/components/pages/VotingCreate.vue.js.map +1 -0
  188. package/dist/martyrs/src/modules/governance/views/components/pages/Votings.vue.js +68 -0
  189. package/dist/martyrs/src/modules/governance/views/components/pages/Votings.vue.js.map +1 -0
  190. package/dist/martyrs/src/modules/governance/views/components/partials/EmptyState.vue.js +47 -0
  191. package/dist/martyrs/src/modules/governance/views/components/partials/EmptyState.vue.js.map +1 -0
  192. package/dist/martyrs/src/modules/governance/views/components/partials/LinkedEntityCard.vue.js +164 -0
  193. package/dist/martyrs/src/modules/governance/views/components/partials/LinkedEntityCard.vue.js.map +1 -0
  194. package/dist/martyrs/src/modules/governance/views/components/partials/TaskStatusBadge.vue.js +39 -0
  195. package/dist/martyrs/src/modules/governance/views/components/partials/TaskStatusBadge.vue.js.map +1 -0
  196. package/dist/martyrs/src/modules/governance/views/components/partials/VoteForm.vue.js +112 -0
  197. package/dist/martyrs/src/modules/governance/views/components/partials/VoteForm.vue.js.map +1 -0
  198. package/dist/martyrs/src/modules/governance/views/components/partials/VotingResults.vue.js +187 -0
  199. package/dist/martyrs/src/modules/governance/views/components/partials/VotingResults.vue.js.map +1 -0
  200. package/dist/martyrs/src/modules/governance/views/components/sections/FormInitiativeDetails.vue.js +555 -0
  201. package/dist/martyrs/src/modules/governance/views/components/sections/FormInitiativeDetails.vue.js.map +1 -0
  202. package/dist/martyrs/src/modules/governance/views/components/sections/FormSprintDetails.vue.js +187 -0
  203. package/dist/martyrs/src/modules/governance/views/components/sections/FormSprintDetails.vue.js.map +1 -0
  204. package/dist/martyrs/src/modules/governance/views/components/sections/FormTaskDetails.vue.js +171 -0
  205. package/dist/martyrs/src/modules/governance/views/components/sections/FormTaskDetails.vue.js.map +1 -0
  206. package/dist/martyrs/src/modules/governance/views/components/sections/FormVotingDetails.vue.js +179 -0
  207. package/dist/martyrs/src/modules/governance/views/components/sections/FormVotingDetails.vue.js.map +1 -0
  208. package/dist/martyrs/src/modules/governance/views/router/governance.router.js +502 -0
  209. package/dist/martyrs/src/modules/governance/views/router/governance.router.js.map +1 -0
  210. package/dist/martyrs/src/modules/governance/views/store/initiatives.js +119 -0
  211. package/dist/martyrs/src/modules/governance/views/store/initiatives.js.map +1 -0
  212. package/dist/martyrs/src/modules/governance/views/store/sprints.js +99 -0
  213. package/dist/martyrs/src/modules/governance/views/store/sprints.js.map +1 -0
  214. package/dist/martyrs/src/modules/governance/views/store/tasks.js +115 -0
  215. package/dist/martyrs/src/modules/governance/views/store/tasks.js.map +1 -0
  216. package/dist/martyrs/src/modules/governance/views/store/votings.js +155 -0
  217. package/dist/martyrs/src/modules/governance/views/store/votings.js.map +1 -0
  218. package/dist/martyrs/src/modules/icons/entities/IconCash.vue.js +70 -0
  219. package/dist/martyrs/src/modules/icons/entities/IconCash.vue.js.map +1 -0
  220. package/dist/martyrs/src/modules/icons/icons.client.js +1 -1
  221. package/dist/martyrs/src/modules/icons/icons.client.js.map +1 -1
  222. package/dist/martyrs/src/modules/icons/{icons.router.js → router/icons.router.js} +1 -1
  223. package/dist/martyrs/src/modules/icons/router/icons.router.js.map +1 -0
  224. package/dist/martyrs/src/modules/inventory/components/forms/AdjustmentForm.vue.js +3 -3
  225. package/dist/martyrs/src/modules/inventory/components/forms/ColumnSettingsMenu.vue.js +3 -3
  226. package/dist/martyrs/src/modules/inventory/components/forms/HistoryView.vue.js +2 -2
  227. package/dist/martyrs/src/modules/inventory/components/forms/StockAlertsForm.vue.js +3 -3
  228. package/dist/martyrs/src/modules/inventory/components/pages/Inventory.vue.js +1 -1
  229. package/dist/martyrs/src/modules/inventory/components/pages/InventoryEdit.vue.js +6 -6
  230. package/dist/martyrs/src/modules/inventory/components/pages/InventoryEdit.vue.js.map +1 -1
  231. package/dist/martyrs/src/modules/marketplace/views/components/pages/Marketplace.vue.js +1 -1
  232. package/dist/martyrs/src/modules/music/components/blocks/ActionButtons.vue.js +9 -9
  233. package/dist/martyrs/src/modules/music/components/cards/AlbumCard.vue.js +4 -4
  234. package/dist/martyrs/src/modules/music/components/cards/ArtistCardSmall.vue.js +2 -2
  235. package/dist/martyrs/src/modules/music/components/cards/PlaylistCard.vue.js +4 -4
  236. package/dist/martyrs/src/modules/music/components/cards/TrackListCard.vue.js +7 -7
  237. package/dist/martyrs/src/modules/music/components/forms/AlbumForm.vue.js +3 -3
  238. package/dist/martyrs/src/modules/music/components/forms/ArtistForm.vue.js +3 -3
  239. package/dist/martyrs/src/modules/music/components/forms/PlaylistForm.vue.js +3 -3
  240. package/dist/martyrs/src/modules/music/components/forms/SearchForm.vue.js +4 -4
  241. package/dist/martyrs/src/modules/music/components/forms/TrackForm.vue.js +3 -3
  242. package/dist/martyrs/src/modules/music/components/pages/Album.vue.js +2 -2
  243. package/dist/martyrs/src/modules/music/components/pages/Artist.vue.js +9 -9
  244. package/dist/martyrs/src/modules/music/components/pages/MusicLibrary.vue.js +13 -13
  245. package/dist/martyrs/src/modules/music/components/pages/Playlist.vue.js +10 -10
  246. package/dist/martyrs/src/modules/music/components/pages/SearchResults.vue.js +9 -9
  247. package/dist/martyrs/src/modules/music/components/pages/Track.vue.js +17 -17
  248. package/dist/martyrs/src/modules/music/components/pages/TrackCreate.vue.js +1 -1
  249. package/dist/martyrs/src/modules/music/components/player/FullscreenPlayer.vue.js +2 -2
  250. package/dist/martyrs/src/modules/music/components/player/MusicPlayer.vue.js +4 -4
  251. package/dist/martyrs/src/modules/music/components/player/PlayerControls.vue.js +10 -10
  252. package/dist/martyrs/src/modules/music/components/player/VolumeControl.vue.js +6 -6
  253. package/dist/martyrs/src/modules/music/components/sections/PopularTracks.vue.js +63 -0
  254. package/dist/martyrs/src/modules/music/components/sections/PopularTracks.vue.js.map +1 -0
  255. package/dist/martyrs/src/modules/music/music.client.js +29 -25
  256. package/dist/martyrs/src/modules/music/music.client.js.map +1 -1
  257. package/dist/martyrs/src/modules/music/{music.router.js → router/music.router.js} +16 -16
  258. package/dist/martyrs/src/modules/music/router/music.router.js.map +1 -0
  259. package/dist/martyrs/src/modules/notifications/components/elements/NotificationBadge.vue.js +26 -27
  260. package/dist/martyrs/src/modules/notifications/components/elements/NotificationBadge.vue.js.map +1 -1
  261. package/dist/martyrs/src/modules/notifications/components/sections/NotificationPreferences.vue.js +118 -59
  262. package/dist/martyrs/src/modules/notifications/components/sections/NotificationPreferences.vue.js.map +1 -1
  263. package/dist/martyrs/src/modules/notifications/notifications.client.js +74 -54
  264. package/dist/martyrs/src/modules/notifications/notifications.client.js.map +1 -1
  265. package/dist/martyrs/src/modules/notifications/{notifications.router.js → router/notifications.router.js} +3 -3
  266. package/dist/martyrs/src/modules/notifications/router/notifications.router.js.map +1 -0
  267. package/dist/martyrs/src/modules/orders/components/blocks/CardApplication.vue.js +34 -44
  268. package/dist/martyrs/src/modules/orders/components/blocks/CardApplication.vue.js.map +1 -1
  269. package/dist/martyrs/src/modules/orders/components/blocks/CardCustomer.vue.js +47 -57
  270. package/dist/martyrs/src/modules/orders/components/blocks/CardCustomer.vue.js.map +1 -1
  271. package/dist/martyrs/src/modules/orders/components/blocks/CardOrderItem.vue.js +2 -2
  272. package/dist/martyrs/src/modules/orders/components/blocks/CardOrderItem.vue.js.map +1 -1
  273. package/dist/martyrs/src/modules/orders/components/blocks/CardOrderUser.vue.js +2 -2
  274. package/dist/martyrs/src/modules/orders/components/blocks/CardOrderUser.vue.js.map +1 -1
  275. package/dist/martyrs/src/modules/orders/components/forms/FormApplicationDetails.vue.js +3 -3
  276. package/dist/martyrs/src/modules/orders/components/forms/FormCustomerDetails.vue.js +5 -5
  277. package/dist/martyrs/src/modules/orders/components/forms/FormCustomerDetails.vue.js.map +1 -1
  278. package/dist/martyrs/src/modules/orders/components/forms/FormSelectCustomer.vue.js +7 -7
  279. package/dist/martyrs/src/modules/orders/components/pages/Applications.vue.js +61 -54
  280. package/dist/martyrs/src/modules/orders/components/pages/Applications.vue.js.map +1 -1
  281. package/dist/martyrs/src/modules/orders/components/pages/Customers.vue.js +43 -31
  282. package/dist/martyrs/src/modules/orders/components/pages/Customers.vue.js.map +1 -1
  283. package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.js +13 -13
  284. package/dist/martyrs/src/modules/orders/components/pages/OrderCreate.vue.js +3 -3
  285. package/dist/martyrs/src/modules/orders/components/pages/OrderCreate.vue.js.map +1 -1
  286. package/dist/martyrs/src/modules/orders/components/pages/OrderCreateBackoffice.vue.js +19 -19
  287. package/dist/martyrs/src/modules/orders/components/pages/Orders.vue.js +1 -1
  288. package/dist/martyrs/src/modules/orders/components/sections/ApplicationDetails.vue.js +7 -10
  289. package/dist/martyrs/src/modules/orders/components/sections/ApplicationDetails.vue.js.map +1 -1
  290. package/dist/martyrs/src/modules/orders/components/sections/CustomerDetails.vue.js +7 -10
  291. package/dist/martyrs/src/modules/orders/components/sections/CustomerDetails.vue.js.map +1 -1
  292. package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.js +4 -4
  293. package/dist/martyrs/src/modules/orders/orders.client.js +16 -16
  294. package/dist/martyrs/src/modules/orders/orders.client.js.map +1 -1
  295. package/dist/martyrs/src/modules/organizations/components/blocks/CardOrganization.vue.js +11 -4
  296. package/dist/martyrs/src/modules/organizations/components/blocks/CardOrganization.vue.js.map +1 -1
  297. package/dist/martyrs/src/modules/organizations/components/elements/ButtonToggleMembership.vue.js +2 -2
  298. package/dist/martyrs/src/modules/organizations/components/forms/AddExistingMembersForm.vue.js +2 -2
  299. package/dist/martyrs/src/modules/organizations/components/forms/DepartmentForm.vue.js +22 -15
  300. package/dist/martyrs/src/modules/organizations/components/forms/DepartmentForm.vue.js.map +1 -1
  301. package/dist/martyrs/src/modules/organizations/components/forms/InviteForm.vue.js +2 -2
  302. package/dist/martyrs/src/modules/organizations/components/pages/Members.vue.js +63 -1
  303. package/dist/martyrs/src/modules/organizations/components/pages/Members.vue.js.map +1 -1
  304. package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.js +9 -3
  305. package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.js.map +1 -1
  306. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.js +14 -8
  307. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.js.map +1 -1
  308. package/dist/martyrs/src/modules/organizations/components/pages/Organizations.vue.js +24 -30
  309. package/dist/martyrs/src/modules/organizations/components/pages/Organizations.vue.js.map +1 -1
  310. package/dist/martyrs/src/modules/organizations/components/sections/Documents.vue.js +2 -2
  311. package/dist/martyrs/src/modules/organizations/components/sections/MembersAdd.vue.js +2 -2
  312. package/dist/martyrs/src/modules/organizations/components/sections/Organizations.vue.js +2 -2
  313. package/dist/martyrs/src/modules/organizations/organizations.client.js +42 -6
  314. package/dist/martyrs/src/modules/organizations/organizations.client.js.map +1 -1
  315. package/dist/martyrs/src/modules/organizations/router/organizations.backoffice.router.js +20 -0
  316. package/dist/martyrs/src/modules/organizations/router/organizations.backoffice.router.js.map +1 -0
  317. package/dist/martyrs/src/modules/organizations/router/organizations.router.js +102 -0
  318. package/dist/martyrs/src/modules/organizations/router/organizations.router.js.map +1 -0
  319. package/dist/martyrs/src/modules/organizations/router/organizations.user.router.js +20 -0
  320. package/dist/martyrs/src/modules/organizations/router/organizations.user.router.js.map +1 -0
  321. package/dist/martyrs/src/modules/pages/pages.client.js +1 -1
  322. package/dist/martyrs/src/modules/pages/pages.client.js.map +1 -1
  323. package/dist/martyrs/src/modules/pages/views/components/blocks/CardPage.vue.js +1 -1
  324. package/dist/martyrs/src/modules/pages/views/components/pages/PageEdit.vue.js +3 -3
  325. package/dist/martyrs/src/modules/pages/views/components/partials/SidebarPages.vue.js +2 -2
  326. package/dist/martyrs/src/modules/pages/{pages.router.js → views/router/pages.router.js} +8 -8
  327. package/dist/martyrs/src/modules/pages/views/router/pages.router.js.map +1 -0
  328. package/dist/martyrs/src/modules/products/components/blocks/CardPosition.vue.js +1 -1
  329. package/dist/martyrs/src/modules/products/components/blocks/CardPosition.vue.js.map +1 -1
  330. package/dist/martyrs/src/modules/products/components/pages/Categories.vue.js +1 -1
  331. package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.js +7 -7
  332. package/dist/martyrs/src/modules/products/components/pages/Product.vue.js +2 -2
  333. package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.js +21 -21
  334. package/dist/martyrs/src/modules/products/components/pages/Products.vue.js +5 -5
  335. package/dist/martyrs/src/modules/products/components/pages/Products.vue.js.map +1 -1
  336. package/dist/martyrs/src/modules/products/components/sections/EditAttributes.vue.js +3 -3
  337. package/dist/martyrs/src/modules/products/components/sections/EditDiscounts.vue.js +3 -3
  338. package/dist/martyrs/src/modules/products/components/sections/EditVariants.vue.js +20 -20
  339. package/dist/martyrs/src/modules/products/components/sections/ProductConfigurator.vue.js +4 -4
  340. package/dist/martyrs/src/modules/products/components/sections/ProductsRecommended.vue.js +4 -4
  341. package/dist/martyrs/src/modules/products/components/sections/SectionProduct.vue.js +4 -4
  342. package/dist/martyrs/src/modules/rents/rents.client.js +1 -1
  343. package/dist/martyrs/src/modules/rents/rents.client.js.map +1 -1
  344. package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttToolbar.vue.js +7 -7
  345. package/dist/martyrs/src/modules/rents/views/components/pages/Rents.vue.js +1 -1
  346. package/dist/martyrs/src/modules/rents/views/components/pages/RentsEdit.vue.js +4 -4
  347. package/dist/martyrs/src/modules/rents/{rents.router.js → views/router/rents.router.js} +4 -4
  348. package/dist/martyrs/src/modules/rents/views/router/rents.router.js.map +1 -0
  349. package/dist/martyrs/src/modules/reports/components/sections/FormReport.vue.js +2 -2
  350. package/dist/martyrs/src/modules/reports/reports.client.js +1 -1
  351. package/dist/martyrs/src/modules/reports/reports.client.js.map +1 -1
  352. package/dist/martyrs/src/modules/reports/{reports.router.js → router/reports.router.js} +1 -1
  353. package/dist/martyrs/src/modules/reports/router/reports.router.js.map +1 -0
  354. package/dist/martyrs/src/modules/spots/components/layouts/Spots.vue.js +1 -1
  355. package/dist/martyrs/src/modules/spots/components/pages/Map.vue.js +2 -2
  356. package/dist/martyrs/src/modules/spots/components/pages/SpotEdit.vue.js +12 -12
  357. package/dist/martyrs/src/modules/spots/components/sections/WorktimeEdit.vue.js +21 -21
  358. package/dist/martyrs/src/modules/wallet/views/components/pages/Payments.vue.js +68 -0
  359. package/dist/martyrs/src/modules/wallet/views/components/pages/Payments.vue.js.map +1 -0
  360. package/dist/martyrs/src/modules/wallet/views/router/wallet.router.js +48 -0
  361. package/dist/martyrs/src/modules/wallet/views/router/wallet.router.js.map +1 -0
  362. package/dist/martyrs/src/modules/wallet/views/store/payments.store.js +59 -0
  363. package/dist/martyrs/src/modules/wallet/views/store/payments.store.js.map +1 -0
  364. package/dist/martyrs/src/modules/wallet/wallet.client.js +20 -0
  365. package/dist/martyrs/src/modules/wallet/wallet.client.js.map +1 -0
  366. package/dist/martyrs.es.js +84 -41
  367. package/dist/martyrs.es10.js +126 -0
  368. package/dist/martyrs.es100.js +33 -0
  369. package/dist/martyrs.es102.js +39 -0
  370. package/dist/martyrs.es103.js +31 -0
  371. package/dist/martyrs.es105.js +27 -0
  372. package/dist/martyrs.es106.js +8 -0
  373. package/dist/martyrs.es107.js +9 -0
  374. package/dist/martyrs.es108.js +79 -0
  375. package/dist/martyrs.es109.js +7 -0
  376. package/dist/martyrs.es11.js +49 -0
  377. package/dist/{web-n_ivHO3v.js → martyrs.es110.js} +1 -1
  378. package/dist/martyrs.es111.js +327 -0
  379. package/dist/martyrs.es112.js +121 -0
  380. package/dist/martyrs.es115.js +4 -0
  381. package/dist/martyrs.es116.js +25 -0
  382. package/dist/martyrs.es117.js +7 -0
  383. package/dist/martyrs.es118.js +10 -0
  384. package/dist/martyrs.es119.js +169 -0
  385. package/dist/martyrs.es12.js +94 -0
  386. package/dist/martyrs.es120.js +460 -0
  387. package/dist/martyrs.es121.js +42 -0
  388. package/dist/martyrs.es122.js +12 -0
  389. package/dist/martyrs.es123.js +52 -0
  390. package/dist/martyrs.es124.js +14 -0
  391. package/dist/martyrs.es125.js +47 -0
  392. package/dist/martyrs.es126.js +7 -0
  393. package/dist/martyrs.es127.js +131 -0
  394. package/dist/martyrs.es128.js +103 -0
  395. package/dist/martyrs.es129.js +89 -0
  396. package/dist/martyrs.es13.js +48 -0
  397. package/dist/martyrs.es130.js +40 -0
  398. package/dist/martyrs.es131.js +14 -0
  399. package/dist/martyrs.es132.js +42 -0
  400. package/dist/martyrs.es133.js +11 -0
  401. package/dist/martyrs.es134.js +6 -0
  402. package/dist/martyrs.es135.js +119 -0
  403. package/dist/martyrs.es136.js +20 -0
  404. package/dist/martyrs.es137.js +18 -0
  405. package/dist/martyrs.es138.js +35 -0
  406. package/dist/martyrs.es139.js +12 -0
  407. package/dist/martyrs.es14.js +101 -0
  408. package/dist/martyrs.es140.js +23 -0
  409. package/dist/martyrs.es141.js +12 -0
  410. package/dist/martyrs.es142.js +11 -0
  411. package/dist/martyrs.es143.js +47 -0
  412. package/dist/martyrs.es144.js +483 -0
  413. package/dist/martyrs.es145.js +8 -0
  414. package/dist/martyrs.es146.js +4 -0
  415. package/dist/martyrs.es147.js +14 -0
  416. package/dist/martyrs.es148.js +33 -0
  417. package/dist/martyrs.es149.js +19 -0
  418. package/dist/martyrs.es15.js +408 -0
  419. package/dist/martyrs.es150.js +22 -0
  420. package/dist/martyrs.es151.js +31 -0
  421. package/dist/martyrs.es152.js +23 -0
  422. package/dist/martyrs.es16.js +58 -0
  423. package/dist/martyrs.es17.js +44 -0
  424. package/dist/martyrs.es18.js +42 -0
  425. package/dist/martyrs.es19.js +27 -0
  426. package/dist/martyrs.es2.js +88 -0
  427. package/dist/martyrs.es20.js +13 -0
  428. package/dist/martyrs.es21.js +57 -0
  429. package/dist/martyrs.es22.js +104 -0
  430. package/dist/martyrs.es23.js +178 -0
  431. package/dist/martyrs.es24.js +123 -0
  432. package/dist/martyrs.es25.js +139 -0
  433. package/dist/martyrs.es26.js +21 -0
  434. package/dist/martyrs.es27.js +60 -0
  435. package/dist/martyrs.es28.js +75 -0
  436. package/dist/martyrs.es29.js +36 -0
  437. package/dist/martyrs.es3.js +116 -0
  438. package/dist/martyrs.es30.js +348 -0
  439. package/dist/martyrs.es31.js +83 -0
  440. package/dist/martyrs.es32.js +148 -0
  441. package/dist/martyrs.es33.js +175 -0
  442. package/dist/martyrs.es34.js +66 -0
  443. package/dist/martyrs.es35.js +57 -0
  444. package/dist/martyrs.es36.js +76 -0
  445. package/dist/martyrs.es37.js +101 -0
  446. package/dist/martyrs.es38.js +39 -0
  447. package/dist/martyrs.es39.js +124 -0
  448. package/dist/martyrs.es4.js +85 -0
  449. package/dist/martyrs.es40.js +120 -0
  450. package/dist/martyrs.es41.js +229 -0
  451. package/dist/martyrs.es43.js +29 -0
  452. package/dist/martyrs.es44.js +27 -0
  453. package/dist/martyrs.es46.js +9 -0
  454. package/dist/martyrs.es48.js +18 -0
  455. package/dist/martyrs.es5.js +395 -0
  456. package/dist/martyrs.es50.js +42 -0
  457. package/dist/martyrs.es52.js +255 -0
  458. package/dist/martyrs.es54.js +8 -0
  459. package/dist/martyrs.es6.js +70 -0
  460. package/dist/martyrs.es61.js +139 -0
  461. package/dist/martyrs.es65.js +28 -0
  462. package/dist/martyrs.es68.js +33 -0
  463. package/dist/martyrs.es69.js +37 -0
  464. package/dist/martyrs.es7.js +17 -0
  465. package/dist/martyrs.es71.js +114 -0
  466. package/dist/martyrs.es73.js +83 -0
  467. package/dist/martyrs.es74.js +52 -0
  468. package/dist/martyrs.es75.js +75 -0
  469. package/dist/martyrs.es76.js +176 -0
  470. package/dist/martyrs.es77.js +31 -0
  471. package/dist/martyrs.es78.js +38 -0
  472. package/dist/martyrs.es8.js +127 -0
  473. package/dist/martyrs.es81.js +32 -0
  474. package/dist/martyrs.es86.js +37 -0
  475. package/dist/martyrs.es89.js +37 -0
  476. package/dist/martyrs.es9.js +396 -0
  477. package/dist/martyrs.es91.js +63 -0
  478. package/dist/martyrs.es92.js +7 -0
  479. package/dist/martyrs.es93.js +35 -0
  480. package/dist/martyrs.es95.js +41 -0
  481. package/dist/martyrs.es96.js +59 -0
  482. package/dist/martyrs.es97.js +123 -0
  483. package/dist/martyrs.es98.js +43 -0
  484. package/dist/martyrs.es99.js +86 -0
  485. package/dist/music.server.js +11 -11
  486. package/dist/notifications.server.js +16 -6
  487. package/dist/orders.server.js +264 -145
  488. package/dist/organizations.server.js +22 -6
  489. package/dist/products.server.js +7 -7
  490. package/dist/rents.server.js +4 -3
  491. package/dist/style.css +970 -986
  492. package/package.json +13 -6
  493. package/src/builder/modes/ssr.rspack.dev.js +32 -20
  494. package/src/builder/rspack/rspack.config.api.js +3 -0
  495. package/src/builder/rspack/rspack.config.base.js +9 -1
  496. package/src/builder/rspack/rspack.config.ssr.client.js +8 -5
  497. package/src/components/Block/Block.vue +1 -1
  498. package/src/components/Button/Button.vue +4 -4
  499. package/src/components/Table/StatusBadge.vue +24 -18
  500. package/src/components/Text/Text.vue +1 -1
  501. package/src/jit/core.js +72 -35
  502. package/src/jit/plugin.js +4 -3
  503. package/src/jit/rules.js +15 -15
  504. package/src/modules/TASKS.MD +30 -0
  505. package/src/modules/TASK_ACTIVITY.md +60 -0
  506. package/src/modules/TASK_MODULE_ARCH.md +391 -0
  507. package/src/modules/auth/controllers/routes/users.routes.js +8 -0
  508. package/src/modules/auth/controllers/services/users.service.js +51 -1
  509. package/src/modules/auth/views/components/blocks/PopupAuth.vue +1 -1
  510. package/src/modules/auth/views/components/pages/ProfileBlogposts.vue +25 -24
  511. package/src/modules/auth/views/components/pages/SignIn.vue +10 -1
  512. package/src/modules/auth/views/components/pages/UserDashboard.vue +35 -62
  513. package/src/modules/auth/views/router/users.router.js +0 -44
  514. package/src/modules/backoffice/components/pages/Dashboard.vue +423 -120
  515. package/src/modules/backoffice/configs/navigation.backoffice.config.js +0 -2
  516. package/src/modules/backoffice/router/backoffice.router.js +0 -25
  517. package/src/modules/community/community.client.js +54 -9
  518. package/src/modules/community/components/blocks/CardBlogpost.vue +10 -3
  519. package/src/modules/community/components/layouts/Community.vue +3 -3
  520. package/src/modules/community/components/pages/BlogPost.vue +1 -1
  521. package/src/modules/community/components/pages/CreateBlogPost.vue +19 -20
  522. package/src/modules/community/components/pages/Posts.vue +43 -28
  523. package/src/modules/community/components/sections/Comment.vue +1 -1
  524. package/src/modules/community/controllers/blog.controller.js +4 -5
  525. package/src/modules/community/models/reaction.model.js +1 -0
  526. package/src/modules/community/router/community.backoffice.router.js +16 -0
  527. package/src/modules/community/router/community.organization.router.js +56 -0
  528. package/src/modules/community/router/community.router.js +58 -106
  529. package/src/modules/community/router/community.user.router.js +15 -0
  530. package/src/modules/constructor/components/elements/Textarea.vue +1 -1
  531. package/src/modules/constructor/components/sections/Constructor.vue +1 -1
  532. package/src/modules/core/controllers/classes/core.validator.js +7 -1
  533. package/src/modules/core/controllers/classes/core.verifier.js +0 -2
  534. package/src/modules/core/controllers/classes/crud/crud.controller.js +0 -4
  535. package/src/modules/core/controllers/classes/crud/crud.service.js +1 -0
  536. package/src/modules/core/models/schemas/engagement.schema.js +19 -22
  537. package/src/modules/core/views/classes/core.app.js +6 -4
  538. package/src/modules/core/views/classes/i18n.manager.js +9 -2
  539. package/src/modules/core/views/classes/ws.manager.js +17 -7
  540. package/src/modules/core/views/components/blocks/Card.vue +47 -24
  541. package/src/modules/core/views/components/blocks/CardStat.vue +27 -0
  542. package/src/modules/core/views/components/blocks/PopupAuth.vue +1 -1
  543. package/src/modules/core/views/components/layouts/Client.vue +5 -4
  544. package/src/modules/core/views/components/partials/BottomNavigationBar.vue +5 -5
  545. package/src/modules/core/views/components/partials/Header.vue +2 -2
  546. package/src/modules/core/views/components/partials/Navigation.vue +13 -14
  547. package/src/modules/core/views/components/partials/Sidebar.vue +4 -6
  548. package/src/modules/core/views/components/sections/SectionPageTitle.vue +23 -15
  549. package/src/modules/core/views/mixins/mixins.js +4 -3
  550. package/src/modules/core/views/router/addRoutes.js +1 -2
  551. package/src/modules/core/views/utils/vue-app-renderer.js +12 -0
  552. package/src/modules/events/components/pages/EditEventTickets.vue +1 -1
  553. package/src/modules/events/components/pages/Events.vue +1 -0
  554. package/src/modules/events/components/pages/EventsBackoffice.vue +23 -48
  555. package/src/modules/events/components/sections/List.vue +2 -2
  556. package/src/modules/events/events.client.js +44 -17
  557. package/src/modules/events/router/events.backoffice.router.js +80 -0
  558. package/src/modules/events/router/events.organization.router.js +80 -0
  559. package/src/modules/events/router/events.router.js +55 -325
  560. package/src/modules/events/router/events.user.router.js +49 -0
  561. package/src/modules/governance/TASK-TRACKER.MD +534 -39
  562. package/src/modules/governance/configs/navigation.initiative.config.js +30 -0
  563. package/src/modules/governance/controllers/routes/initiatives.routes.js +55 -8
  564. package/src/modules/governance/controllers/routes/{milestones.routes.js → sprints.routes.js} +22 -22
  565. package/src/modules/governance/controllers/routes/tasks.routes.js +2 -2
  566. package/src/modules/governance/governance.client.js +1 -4
  567. package/src/modules/governance/governance.server.js +6 -6
  568. package/src/modules/governance/middlewares/initiatives.verifier.js +60 -0
  569. package/src/modules/governance/middlewares/{milestones.verifier.js → sprints.verifier.js} +10 -10
  570. package/src/modules/governance/middlewares/tasks.verifier.js +4 -4
  571. package/src/modules/governance/middlewares/votings.verifier.js +25 -7
  572. package/src/modules/governance/models/{milestone.model.js → sprint.model.js} +11 -11
  573. package/src/modules/governance/models/task.model.js +4 -4
  574. package/src/modules/governance/models/voting.model.js +10 -5
  575. package/src/modules/governance/views/components/blocks/CardInitiativeItem.vue +8 -13
  576. package/src/modules/governance/views/components/blocks/{CardMilestoneItem.vue → CardSprintItem.vue} +16 -17
  577. package/src/modules/governance/views/components/blocks/CardTaskItem.vue +7 -9
  578. package/src/modules/governance/views/components/blocks/CardVotingItem.vue +7 -9
  579. package/src/modules/governance/views/components/pages/Governance.vue +13 -34
  580. package/src/modules/governance/views/components/pages/Initiative.vue +73 -154
  581. package/src/modules/governance/views/components/pages/InitiativeCreate.vue +44 -7
  582. package/src/modules/governance/views/components/pages/{Roadmap.vue → InitiativeSprints.vue} +70 -69
  583. package/src/modules/governance/views/components/pages/Initiatives.vue +23 -108
  584. package/src/modules/governance/views/components/pages/{Milestone.vue → Sprint.vue} +43 -41
  585. package/src/modules/governance/views/components/pages/SprintCreate.vue +55 -0
  586. package/src/modules/governance/views/components/pages/Task.vue +95 -88
  587. package/src/modules/governance/views/components/pages/TaskCreate.vue +47 -9
  588. package/src/modules/governance/views/components/pages/Tasks.vue +25 -21
  589. package/src/modules/governance/views/components/pages/Voting.vue +84 -68
  590. package/src/modules/governance/views/components/pages/VotingCreate.vue +48 -8
  591. package/src/modules/governance/views/components/pages/Votings.vue +12 -57
  592. package/src/modules/governance/views/components/partials/EmptyState.vue +1 -1
  593. package/src/modules/governance/views/components/partials/LinkedEntityCard.vue +23 -11
  594. package/src/modules/governance/views/components/partials/TaskStatusBadge.vue +1 -1
  595. package/src/modules/governance/views/components/partials/VoteForm.vue +3 -3
  596. package/src/modules/governance/views/components/partials/VotingResults.vue +13 -19
  597. package/src/modules/governance/views/components/sections/FormInitiativeDetails.vue +413 -15
  598. package/src/modules/governance/views/components/sections/FormSprintDetails.vue +156 -0
  599. package/src/modules/governance/views/components/sections/FormTaskDetails.vue +125 -21
  600. package/src/modules/governance/views/components/sections/FormVotingDetails.vue +136 -17
  601. package/src/modules/governance/views/components/sections/VoteForm.vue +2 -2
  602. package/src/modules/governance/views/router/governance.router.js +255 -151
  603. package/src/modules/governance/views/store/initiatives.js +23 -2
  604. package/src/modules/governance/views/store/sprints.js +102 -0
  605. package/src/modules/governance/views/store/tasks.js +25 -9
  606. package/src/modules/governance/views/store/votings.js +106 -27
  607. package/src/modules/icons/icons.client.js +1 -1
  608. package/src/modules/inventory/components/pages/InventoryEdit.vue +1 -1
  609. package/src/modules/music/components/sections/PopularTracks.vue +52 -0
  610. package/src/modules/music/music.client.js +8 -1
  611. package/src/modules/music/router/music.router.js +13 -1
  612. package/src/modules/notifications/components/elements/NotificationBadge.vue +8 -33
  613. package/src/modules/notifications/components/sections/NotificationPreferences.vue +110 -48
  614. package/src/modules/notifications/notifications.client.js +78 -57
  615. package/src/modules/notifications/router/notifications.router.js +32 -15
  616. package/src/modules/notifications/services/notification.service.js +15 -6
  617. package/src/modules/notifications/services/web-push.service.js +2 -0
  618. package/src/modules/orders/components/blocks/CardApplication.vue +20 -40
  619. package/src/modules/orders/components/blocks/CardCustomer.vue +35 -55
  620. package/src/modules/orders/components/blocks/CardOrderItem.vue +2 -2
  621. package/src/modules/orders/components/blocks/CardOrderUser.vue +2 -2
  622. package/src/modules/orders/components/forms/FormCustomerDetails.vue +2 -2
  623. package/src/modules/orders/components/pages/Applications.vue +59 -57
  624. package/src/modules/orders/components/pages/Customers.vue +40 -27
  625. package/src/modules/orders/components/pages/OrderCreate.vue +1 -1
  626. package/src/modules/orders/components/sections/ApplicationDetails.vue +1 -4
  627. package/src/modules/orders/components/sections/CustomerDetails.vue +1 -4
  628. package/src/modules/orders/controllers/orders.controller.js +113 -0
  629. package/src/modules/orders/middlewares/applications.verifier.js +13 -37
  630. package/src/modules/orders/middlewares/customers.verifier.js +44 -121
  631. package/src/modules/orders/models/customer.model.js +0 -1
  632. package/src/modules/orders/routes/applications.routes.js +108 -50
  633. package/src/modules/orders/routes/orders.routes.js +9 -1
  634. package/src/modules/organizations/components/blocks/CardOrganization.vue +12 -4
  635. package/src/modules/organizations/components/forms/DepartmentForm.vue +9 -4
  636. package/src/modules/organizations/components/pages/Members.vue +62 -1
  637. package/src/modules/organizations/components/pages/Organization.new.vue +17 -17
  638. package/src/modules/organizations/components/pages/Organization.vue +8 -1
  639. package/src/modules/organizations/components/pages/OrganizationBackoffice.vue +1 -1
  640. package/src/modules/organizations/components/pages/OrganizationEdit.vue +11 -4
  641. package/src/modules/organizations/components/pages/Organizations.vue +33 -46
  642. package/src/modules/organizations/controllers/invites.controller.js +19 -0
  643. package/src/modules/organizations/controllers/memberships.controller.js +1 -0
  644. package/src/modules/organizations/organizations.client.js +48 -7
  645. package/src/modules/organizations/router/organizations.backoffice.router.js +15 -0
  646. package/src/modules/organizations/router/organizations.router.js +72 -112
  647. package/src/modules/organizations/router/organizations.user.router.js +15 -0
  648. package/src/modules/pages/pages.client.js +1 -1
  649. package/src/modules/pages/views/router/pages.router.js +95 -15
  650. package/src/modules/products/components/blocks/CardPosition.vue +1 -1
  651. package/src/modules/products/components/pages/Products.vue +3 -3
  652. package/src/modules/rents/controllers/services/rents.services.js +1 -0
  653. package/src/modules/rents/rents.client.js +1 -1
  654. package/src/modules/rents/views/router/rents.router.js +93 -33
  655. package/src/modules/reports/reports.client.js +1 -1
  656. package/src/modules/wallet/wallet.client.js +1 -1
  657. package/src/styles/theme.scss +5 -3
  658. package/dist/engagement.schema-fh6W1fb_.js +0 -24
  659. package/dist/main-DQm5pwFO.js +0 -8213
  660. package/dist/martyrs/dist/main-DQm5pwFO.js +0 -1080
  661. package/dist/martyrs/dist/main-DQm5pwFO.js.map +0 -1
  662. package/dist/martyrs/dist/web-n_ivHO3v.js +0 -55
  663. package/dist/martyrs/dist/web-n_ivHO3v.js.map +0 -1
  664. package/dist/martyrs/src/components/Address/Address.vue.js.map +0 -1
  665. package/dist/martyrs/src/components/Button/Button.vue.js.map +0 -1
  666. package/dist/martyrs/src/components/Dropdown/Dropdown.vue2.js.map +0 -1
  667. package/dist/martyrs/src/components/EditImages/EditImages.vue2.js.map +0 -1
  668. package/dist/martyrs/src/components/LocationMarker/LocationMarker.vue.js.map +0 -1
  669. package/dist/martyrs/src/components/Tab/Tab.vue2.js.map +0 -1
  670. package/dist/martyrs/src/modules/community/community.router.js +0 -124
  671. package/dist/martyrs/src/modules/community/community.router.js.map +0 -1
  672. package/dist/martyrs/src/modules/core/views/components/sections/Filters.vue2.js.map +0 -1
  673. package/dist/martyrs/src/modules/icons/icons.router.js.map +0 -1
  674. package/dist/martyrs/src/modules/music/music.router.js.map +0 -1
  675. package/dist/martyrs/src/modules/notifications/notifications.router.js.map +0 -1
  676. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationBackoffice.vue.js +0 -200
  677. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationBackoffice.vue.js.map +0 -1
  678. package/dist/martyrs/src/modules/organizations/organizations.router.js +0 -145
  679. package/dist/martyrs/src/modules/organizations/organizations.router.js.map +0 -1
  680. package/dist/martyrs/src/modules/pages/pages.router.js.map +0 -1
  681. package/dist/martyrs/src/modules/rents/rents.router.js.map +0 -1
  682. package/dist/martyrs/src/modules/reports/reports.router.js.map +0 -1
  683. package/dist/martyrs.css +0 -1
  684. 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
  685. 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
  686. 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
  687. 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
  688. 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
  689. 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
  690. 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
  691. 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
  692. 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
  693. 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
  694. package/src/jit/.claude/settings.local.json +0 -10
  695. package/src/modules/community/community.router.js +0 -107
  696. package/src/modules/governance/governance.router.js +0 -350
  697. package/src/modules/governance/seed-governance.js +0 -348
  698. package/src/modules/governance/views/components/pages/InitiativeMilestones.vue +0 -159
  699. package/src/modules/governance/views/router/goverance.router.js +0 -290
  700. package/src/modules/governance/views/store/votes.js +0 -113
  701. package/src/modules/icons/icons.router.js +0 -29
  702. package/src/modules/marketplace/marketplace.router.js +0 -66
  703. package/src/modules/music/.claude/settings.local.json +0 -8
  704. package/src/modules/music/music.router.js +0 -188
  705. package/src/modules/notifications/notifications.router.js +0 -47
  706. package/src/modules/orders/orders.router.js +0 -255
  707. package/src/modules/organizations/organizations.router.js +0 -123
  708. package/src/modules/organizations/router/backoffice.router.js +0 -27
  709. package/src/modules/organizations/router/departments.router.js +0 -15
  710. package/src/modules/organizations/router/members.router.js +0 -20
  711. package/src/modules/pages/pages.router.js +0 -107
  712. package/src/modules/rents/rents.router.js +0 -115
  713. package/src/modules/reports/reports.router.js +0 -33
  714. package/src/modules/wallet/wallet.router.js +0 -45
@@ -1 +1 @@
1
- {"version":3,"file":"NotificationPreferences.vue.js","sources":["../../../../../../../src/modules/notifications/components/sections/NotificationPreferences.vue"],"sourcesContent":["<template>\n <div>\n <p class=\"t-transp mn-b-small\">Choose how you want to receive notifications</p>\n\n <div v-if=\"loading\" class=\"pd-large t-center t-transp\">\n <Loader />\n </div>\n\n <div v-else class=\"gap-thin flex-column flex\">\n <div\n v-for=\"(enabled, channelType) in preferences\"\n :key=\"channelType\"\n class=\"flex flex-v-center flex-between bg-light radius-small pd-small\"\n >\n <div class=\"flex w-100 flex-v-center gap-small mn-r-small\">\n <div class=\"h4\">{{ getChannelIcon(channelType) }}</div>\n <div class=\"flex-column flex gap-micro\">\n <p class=\"fw-medium lh-1\">{{ getChannelName(channelType) }}</p>\n <p class=\"p-small t-transp lh-1\">{{ getChannelDescription(channelType) }}</p>\n </div>\n </div>\n <Checkbox\n mode=\"switch\"\n :radio=\"enabled\"\n @update:radio=\"updatePreference(channelType, $event)\"\n class=\"flex-shrink-0\"\n />\n </div>\n\n <div class=\"flex flex-end gap-small mn-t-thin\">\n <Button\n v-if=\"hasChanges\"\n :submit=\"resetChanges\"\n :showLoader=\"false\"\n :showSucces=\"false\"\n class=\"bg-white t-dark\"\n >\n Cancel\n </Button>\n <Button\n :submit=\"savePreferences\"\n :validation=\"!hasChanges || saving\"\n class=\"bg-main t-white\"\n >\n {{ saving ? 'Saving...' : 'Save Changes' }}\n </Button>\n </div>\n </div>\n </div>\n</template>\n\n<script setup>\nimport { ref, reactive, computed, onMounted, inject } from 'vue';\nimport Checkbox from '@martyrs/src/components/Checkbox/Checkbox.vue';\nimport Button from '@martyrs/src/components/Button/Button.vue';\nimport Loader from '@martyrs/src/components/Loader/Loader.vue';\n\n// Get notification preferences functionality\nconst { \n preferences: storePreferences,\n loading,\n getPreferences,\n updatePreferences\n} = inject('useNotifications')();\n\n// Local reactive state for form\nconst preferences = reactive({...storePreferences.value});\nconst originalPreferences = ref({});\nconst saving = ref(false);\n\n// Computed properties\nconst hasChanges = computed(() => {\n return Object.keys(preferences).some(key => \n preferences[key] !== originalPreferences.value[key]\n );\n});\n\n// Methods\nconst updatePreference = (channelType, value) => {\n preferences[channelType] = value;\n};\n\nconst savePreferences = async () => {\n try {\n saving.value = true;\n await updatePreferences(preferences);\n originalPreferences.value = {...preferences};\n saving.value = false;\n } catch (error) {\n console.error('Error saving preferences:', error);\n saving.value = false;\n }\n};\n\nconst resetChanges = () => {\n Object.keys(preferences).forEach(key => {\n preferences[key] = originalPreferences.value[key];\n });\n};\n\nconst getChannelIcon = (channelType) => {\n switch (channelType) {\n case 'web': return '🖥️';\n case 'push': return '📱';\n case 'email': return '📧';\n case 'sms': return '📱';\n case 'telegram': return '📬';\n case 'whatsapp': return '💬';\n default: return '🔔';\n }\n};\n\nconst getChannelName = (channelType) => {\n switch (channelType) {\n case 'web': return 'Web Notifications';\n case 'push': return 'Mobile Push Notifications';\n case 'email': return 'Email Notifications';\n case 'sms': return 'SMS Notifications';\n case 'telegram': return 'Telegram Messages';\n case 'whatsapp': return 'WhatsApp Messages';\n default: return channelType;\n }\n};\n\nconst getChannelDescription = (channelType) => {\n switch (channelType) {\n case 'web': \n return 'Real-time notifications in your browser';\n case 'push': \n return 'Notifications on your mobile device even when the app is closed';\n case 'email': \n return 'Receive notifications in your email inbox';\n case 'sms': \n return 'Get text messages for important notifications';\n case 'telegram': \n return 'Receive notifications via Telegram bot';\n case 'whatsapp': \n return 'Get notifications as WhatsApp messages';\n default: \n return '';\n }\n};\n\n// Lifecycle\nonMounted(async () => {\n await getPreferences();\n \n // Copy store preferences to local state\n Object.keys(storePreferences.value).forEach(key => {\n preferences[key] = storePreferences.value[key];\n });\n \n // Create a deep copy of the original preferences\n originalPreferences.value = {...preferences};\n});\n</script>\n\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;AA0DA,UAAM;AAAA,MACJ,aAAa;AAAA,MACb;AAAA,MACA;AAAA,MACA;AAAA,IACF,IAAI,OAAO,kBAAkB,EAAC;AAG9B,UAAM,cAAc,SAAS,EAAC,GAAG,iBAAiB,MAAK,CAAC;AACxD,UAAM,sBAAsB,IAAI,EAAE;AAClC,UAAM,SAAS,IAAI,KAAK;AAGxB,UAAM,aAAa,SAAS,MAAM;AAChC,aAAO,OAAO,KAAK,WAAW,EAAE;AAAA,QAAK,SACnC,YAAY,GAAG,MAAM,oBAAoB,MAAM,GAAG;AAAA,MACtD;AAAA,IACA,CAAC;AAGD,UAAM,mBAAmB,CAAC,aAAa,UAAU;AAC/C,kBAAY,WAAW,IAAI;AAAA,IAC7B;AAEA,UAAM,kBAAkB,YAAY;AAClC,UAAI;AACF,eAAO,QAAQ;AACf,cAAM,kBAAkB,WAAW;AACnC,4BAAoB,QAAQ,EAAC,GAAG,YAAW;AAC3C,eAAO,QAAQ;AAAA,MACjB,SAAS,OAAO;AACd,gBAAQ,MAAM,6BAA6B,KAAK;AAChD,eAAO,QAAQ;AAAA,MACjB;AAAA,IACF;AAEA,UAAM,eAAe,MAAM;AACzB,aAAO,KAAK,WAAW,EAAE,QAAQ,SAAO;AACtC,oBAAY,GAAG,IAAI,oBAAoB,MAAM,GAAG;AAAA,MAClD,CAAC;AAAA,IACH;AAEA,UAAM,iBAAiB,CAAC,gBAAgB;AACtC,cAAQ,aAAW;AAAA,QACjB,KAAK;AAAO,iBAAO;AAAA,QACnB,KAAK;AAAQ,iBAAO;AAAA,QACpB,KAAK;AAAS,iBAAO;AAAA,QACrB,KAAK;AAAO,iBAAO;AAAA,QACnB,KAAK;AAAY,iBAAO;AAAA,QACxB,KAAK;AAAY,iBAAO;AAAA,QACxB;AAAS,iBAAO;AAAA,MACpB;AAAA,IACA;AAEA,UAAM,iBAAiB,CAAC,gBAAgB;AACtC,cAAQ,aAAW;AAAA,QACjB,KAAK;AAAO,iBAAO;AAAA,QACnB,KAAK;AAAQ,iBAAO;AAAA,QACpB,KAAK;AAAS,iBAAO;AAAA,QACrB,KAAK;AAAO,iBAAO;AAAA,QACnB,KAAK;AAAY,iBAAO;AAAA,QACxB,KAAK;AAAY,iBAAO;AAAA,QACxB;AAAS,iBAAO;AAAA,MACpB;AAAA,IACA;AAEA,UAAM,wBAAwB,CAAC,gBAAgB;AAC7C,cAAQ,aAAW;AAAA,QACjB,KAAK;AACH,iBAAO;AAAA,QACT,KAAK;AACH,iBAAO;AAAA,QACT,KAAK;AACH,iBAAO;AAAA,QACT,KAAK;AACH,iBAAO;AAAA,QACT,KAAK;AACH,iBAAO;AAAA,QACT,KAAK;AACH,iBAAO;AAAA,QACT;AACE,iBAAO;AAAA,MACb;AAAA,IACA;AAGA,cAAU,YAAY;AACpB,YAAM,eAAc;AAGpB,aAAO,KAAK,iBAAiB,KAAK,EAAE,QAAQ,SAAO;AACjD,oBAAY,GAAG,IAAI,iBAAiB,MAAM,GAAG;AAAA,MAC/C,CAAC;AAGD,0BAAoB,QAAQ,EAAC,GAAG,YAAW;AAAA,IAC7C,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"NotificationPreferences.vue.js","sources":["../../../../../../../src/modules/notifications/components/sections/NotificationPreferences.vue"],"sourcesContent":["<template>\n <div>\n <!-- Push Permission Toggle -->\n <div class=\"bg-light radius-small pd-small mn-b-small\">\n <div class=\"flex flex-v-center flex-between\">\n <div class=\"flex flex-v-center gap-small\">\n <div class=\"h4\">🔔</div>\n <div class=\"flex-column flex gap-micro\">\n <p class=\"fw-medium\">Push Notifications</p>\n <p class=\"p-small\" :class=\"pushStatusClass\">{{ pushStatusText }}</p>\n </div>\n </div>\n <Checkbox\n mode=\"switch\"\n :radio=\"pushEnabled\"\n :disabled=\"pushPermission === 'denied'\"\n @update:radio=\"togglePush\"\n class=\"flex-shrink-0\"\n />\n </div>\n </div>\n\n <template v-if=\"pushEnabled && pushPermission === 'granted'\">\n <p class=\"t-transp mn-b-small\">Choose how you want to receive notifications</p>\n\n <div v-if=\"loading\" class=\"pd-large t-center t-transp\">\n <Loader />\n </div>\n\n <div v-else class=\"gap-thin flex-column flex\">\n <div\n v-for=\"(enabled, channelType) in preferences\"\n :key=\"channelType\"\n class=\"flex flex-v-center flex-between bg-light radius-small pd-small\"\n >\n <div class=\"flex w-100 flex-v-center gap-small mn-r-small\">\n <div class=\"h4\">{{ getChannelIcon(channelType) }}</div>\n <div class=\"flex-column flex gap-micro\">\n <p class=\"fw-medium\">{{ getChannelName(channelType) }}</p>\n <p class=\"p-small t-transp\">{{ getChannelDescription(channelType) }}</p>\n </div>\n </div>\n <Checkbox\n mode=\"switch\"\n :radio=\"enabled\"\n @update:radio=\"updatePreference(channelType, $event)\"\n class=\"flex-shrink-0\"\n />\n </div>\n\n <div class=\"flex flex-end gap-small mn-t-thin\">\n <Button\n v-if=\"hasChanges\"\n :submit=\"resetChanges\"\n :showLoader=\"false\"\n :showSucces=\"false\"\n class=\"bg-white t-dark\"\n >\n Cancel\n </Button>\n <Button\n :submit=\"savePreferences\"\n :validation=\"!hasChanges || saving\"\n class=\"bg-main t-white\"\n >\n {{ saving ? 'Saving...' : 'Save Changes' }}\n </Button>\n </div>\n </div>\n </template>\n </div>\n</template>\n\n<script setup>\nimport { ref, reactive, computed, onMounted, inject } from 'vue';\nimport Checkbox from '@martyrs/src/components/Checkbox/Checkbox.vue';\nimport Button from '@martyrs/src/components/Button/Button.vue';\nimport Loader from '@martyrs/src/components/Loader/Loader.vue';\n\n// Get notification preferences functionality\nconst {\n preferences: storePreferences,\n loading,\n getPreferences,\n updatePreferences,\n registerWebPush,\n} = inject('useNotifications')();\n\n// Local reactive state for form\nconst preferences = reactive({...storePreferences.value});\nconst originalPreferences = ref({});\nconst saving = ref(false);\n\n// Push permission state\nconst pushPermission = ref(typeof window !== 'undefined' && 'Notification' in window ? Notification.permission : 'default');\nconst pushEnabled = ref(pushPermission.value === 'granted');\n\nconst pushStatusText = computed(() => {\n if (pushPermission.value === 'denied') return 'Blocked by browser. Allow in site settings';\n if (pushEnabled.value && pushPermission.value === 'granted') return 'Notifications are enabled';\n return 'Enable to receive push notifications';\n});\n\nconst pushStatusClass = computed(() => {\n if (pushPermission.value === 'denied') return 't-red';\n if (pushEnabled.value && pushPermission.value === 'granted') return 't-green';\n return 't-transp';\n});\n\nconst togglePush = async (value) => {\n if (value) {\n // Turning ON → request browser permission DIRECTLY in click handler\n try {\n const permission = await Notification.requestPermission();\n pushPermission.value = permission;\n if (permission === 'granted') {\n pushEnabled.value = true;\n // Now register subscription in background\n registerWebPush().catch(err => console.error('Web push registration error:', err));\n } else {\n pushEnabled.value = false;\n }\n } catch (error) {\n console.error('Push permission error:', error);\n pushPermission.value = Notification.permission;\n pushEnabled.value = false;\n }\n } else {\n // Turning OFF\n pushEnabled.value = false;\n }\n};\n\n// Computed properties\nconst hasChanges = computed(() => {\n return Object.keys(preferences).some(key =>\n preferences[key] !== originalPreferences.value[key]\n );\n});\n\n// Methods\nconst updatePreference = (channelType, value) => {\n preferences[channelType] = value;\n};\n\nconst savePreferences = async () => {\n try {\n saving.value = true;\n await updatePreferences(preferences);\n originalPreferences.value = {...preferences};\n saving.value = false;\n } catch (error) {\n console.error('Error saving preferences:', error);\n saving.value = false;\n }\n};\n\nconst resetChanges = () => {\n Object.keys(preferences).forEach(key => {\n preferences[key] = originalPreferences.value[key];\n });\n};\n\nconst getChannelIcon = (channelType) => {\n switch (channelType) {\n case 'web': return '🖥️';\n case 'push': return '📱';\n case 'email': return '📧';\n case 'sms': return '📱';\n case 'telegram': return '📬';\n case 'whatsapp': return '💬';\n default: return '🔔';\n }\n};\n\nconst getChannelName = (channelType) => {\n switch (channelType) {\n case 'web': return 'Web Notifications';\n case 'push': return 'Mobile Push Notifications';\n case 'email': return 'Email Notifications';\n case 'sms': return 'SMS Notifications';\n case 'telegram': return 'Telegram Messages';\n case 'whatsapp': return 'WhatsApp Messages';\n default: return channelType;\n }\n};\n\nconst getChannelDescription = (channelType) => {\n switch (channelType) {\n case 'web':\n return 'Real-time notifications in your browser';\n case 'push':\n return 'Notifications on your mobile device even when the app is closed';\n case 'email':\n return 'Receive notifications in your email inbox';\n case 'sms':\n return 'Get text messages for important notifications';\n case 'telegram':\n return 'Receive notifications via Telegram bot';\n case 'whatsapp':\n return 'Get notifications as WhatsApp messages';\n default:\n return '';\n }\n};\n\n// Lifecycle\nonMounted(async () => {\n await getPreferences();\n\n // Copy store preferences to local state\n Object.keys(storePreferences.value).forEach(key => {\n preferences[key] = storePreferences.value[key];\n });\n\n // Create a deep copy of the original preferences\n originalPreferences.value = {...preferences};\n});\n</script>\n"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { watch, toRefs } from "vue";
2
2
  import addRoutes from "../core/views/router/addRoutes.js";
3
- import { getRoutes } from "./notifications.router.js";
3
+ import { getRoutes } from "./router/notifications.router.js";
4
4
  import * as notifications_store from "./store/notifications.store.js";
5
5
  import { wsManager } from "../core/views/classes/ws.manager.js";
6
6
  import { Preferences } from "../../../node_modules/.pnpm/@capacitor_preferences@7.0.2_@capacitor_core@7.4.4/node_modules/@capacitor/preferences/dist/esm/index.js";
@@ -31,8 +31,8 @@ class CapacitorPushHandler {
31
31
  }
32
32
  try {
33
33
  const { Capacitor } = await import("../../../node_modules/.pnpm/@capacitor_core@7.4.4/node_modules/@capacitor/core/dist/index.js");
34
- const { PushNotifications } = await import("../../../../node_modules/.pnpm/@capacitor_push-notifications@7.0.3_@capacitor_core@7.4.4/node_modules/@capacitor/push-notifications/dist/esm/index.js");
35
- const { Device } = await import("../../../../node_modules/.pnpm/@capacitor_device@7.0.1_@capacitor_core@7.4.4/node_modules/@capacitor/device/dist/esm/index.js");
34
+ const { PushNotifications } = await import("@capacitor/push-notifications");
35
+ const { Device } = await import("@capacitor/device");
36
36
  this.capacitor = Capacitor;
37
37
  this.pushNotifications = PushNotifications;
38
38
  this.device = Device;
@@ -172,38 +172,32 @@ class NotificationManager {
172
172
  this.isServer = typeof window === "undefined";
173
173
  }
174
174
  async registerWebPush(store) {
175
- if (!("Notification" in window) || !("serviceWorker" in navigator) || !("PushManager" in window)) {
176
- console.warn("Web Push не поддерживается в браузере");
175
+ if (!("serviceWorker" in navigator) || !("PushManager" in window)) {
176
+ console.warn("[WebPush] PushManager not supported");
177
177
  return;
178
178
  }
179
- const permission = await Notification.requestPermission();
180
- if (permission !== "granted") {
181
- console.warn("Разрешение на уведомления не получено");
182
- return;
179
+ if ("Notification" in window && Notification.permission !== "granted") {
180
+ const permission = await Notification.requestPermission();
181
+ if (permission !== "granted") {
182
+ console.warn("[WebPush] Permission not granted:", permission);
183
+ return;
184
+ }
183
185
  }
186
+ console.log("[WebPush] Subscribing to push manager...");
184
187
  const registration = await navigator.serviceWorker.ready;
185
188
  const subscription = await registration.pushManager.subscribe({
186
189
  userVisibleOnly: true,
187
190
  applicationServerKey: "BJtNnRrx05VQS0abnkHC-8gHJWpnmoqC_iQveENCmZOZIs-adWzqAiqFCdGVVd7CbiaLW-Q5iuIBDRgM9G-VnKg"
188
191
  });
189
- console.log("New subscription:", JSON.stringify(subscription));
192
+ console.log("[WebPush] Subscription:", JSON.stringify(subscription));
190
193
  const deviceToken = JSON.stringify(subscription);
191
194
  const deviceId = await this.generateDeviceId();
192
195
  try {
193
- await Preferences.set({
194
- key: "notifications_device_id",
195
- value: deviceId
196
- });
197
- await Preferences.set({
198
- key: "notifications_device_token",
199
- value: deviceToken
200
- });
201
- await Preferences.set({
202
- key: "notifications_device_type",
203
- value: "web"
204
- });
196
+ await Preferences.set({ key: "notifications_device_id", value: deviceId });
197
+ await Preferences.set({ key: "notifications_device_token", value: deviceToken });
198
+ await Preferences.set({ key: "notifications_device_type", value: "web" });
205
199
  } catch (error) {
206
- console.warn("Could not save device info to preferences:", error);
200
+ console.warn("[WebPush] Could not save device info to preferences:", error);
207
201
  }
208
202
  const deviceData = {
209
203
  deviceToken,
@@ -216,23 +210,21 @@ class NotificationManager {
216
210
  const result = await Preferences.get({ key: "notifications_anonymous_id" });
217
211
  anonymousId = result.value;
218
212
  } catch (error) {
219
- console.warn("Could not get anonymous ID from preferences:", error);
213
+ console.warn("[WebPush] Could not get anonymous ID:", error);
220
214
  }
221
215
  if (!anonymousId) {
222
216
  anonymousId = "anon_" + Date.now() + "_" + Math.random().toString(36).substr(2, 9);
223
217
  try {
224
- await Preferences.set({
225
- key: "notifications_anonymous_id",
226
- value: anonymousId
227
- });
218
+ await Preferences.set({ key: "notifications_anonymous_id", value: anonymousId });
228
219
  } catch (error) {
229
- console.warn("Could not save anonymous ID to preferences:", error);
220
+ console.warn("[WebPush] Could not save anonymous ID:", error);
230
221
  }
231
222
  }
232
223
  deviceData.anonymousId = anonymousId;
233
224
  }
234
- console.log("[Notifications] Registering device with data:", deviceData);
225
+ console.log("[WebPush] Registering device:", deviceData);
235
226
  await store.notifications.actions.registerDevice(deviceData);
227
+ console.log("[WebPush] Device registered successfully");
236
228
  }
237
229
  async generateDeviceId() {
238
230
  try {
@@ -252,34 +244,50 @@ class NotificationManager {
252
244
  }
253
245
  }
254
246
  async initialize() {
247
+ console.log("[NOTIF DEBUG] NotificationManager.initialize() called, initialized:", this.initialized, "isServer:", this.isServer);
255
248
  if (this.initialized || this.isServer) return;
256
249
  const userId = this.store.core.state.session.userId;
250
+ console.log("[NOTIF DEBUG] userId:", userId);
257
251
  if (userId) {
258
- console.log("Connecting to websockets via notifications");
259
- wsManager.initialize({
260
- wsUrl: process.env.WSS_URL,
261
- maxReconnectAttempts: 10,
262
- reconnectDelay: 2e3
263
- });
264
- await wsManager.connect(userId);
265
- wsManager.removeModuleListeners("notification");
266
- await wsManager.subscribeModule("notification");
267
- wsManager.addEventListener(
268
- "notification",
269
- (data) => {
270
- this.store.notifications.actions.addLocalNotification(data.data);
271
- },
272
- { module: "notification" }
273
- );
274
- await this.store.notifications.actions.getNotifications(userId);
252
+ try {
253
+ console.log("[NOTIF DEBUG] Connecting to websockets, WSS_URL:", process.env.WSS_URL);
254
+ wsManager.initialize({
255
+ wsUrl: process.env.WSS_URL,
256
+ maxReconnectAttempts: 10,
257
+ reconnectDelay: 2e3
258
+ });
259
+ await wsManager.connect(userId);
260
+ console.log("[NOTIF DEBUG] wsManager.connect() resolved successfully");
261
+ wsManager.removeModuleListeners("notification");
262
+ await wsManager.subscribeModule("notification");
263
+ console.log("[NOTIF DEBUG] Subscribed to notification module");
264
+ wsManager.addEventListener(
265
+ "notification",
266
+ (data) => {
267
+ this.store.notifications.actions.addLocalNotification(data.data);
268
+ },
269
+ { module: "notification" }
270
+ );
271
+ } catch (error) {
272
+ console.error("[NOTIF DEBUG] WebSocket init FAILED:", error);
273
+ }
274
+ try {
275
+ await this.store.notifications.actions.getNotifications(userId);
276
+ } catch (error) {
277
+ console.error("[NOTIF DEBUG] Failed to load notifications:", error);
278
+ }
275
279
  } else {
276
- console.log("Initializing notifications for anonymous user");
280
+ console.log("[NOTIF DEBUG] No userId, skipping WS");
277
281
  }
278
282
  if (this.options.enablePush !== false && !process.env.MOBILE_APP) {
279
- await this.pushHandler.requestPermissions();
280
- await this.registerWebPush(this.store);
283
+ this.pushHandler.requestPermissions().catch(() => {
284
+ });
285
+ if ("Notification" in window && Notification.permission === "granted") {
286
+ this.registerWebPush(this.store).catch((err) => console.error("[Notifications] WebPush registration error:", err));
287
+ }
281
288
  }
282
289
  this.initialized = true;
290
+ console.log("[NOTIF DEBUG] NotificationManager initialized successfully");
283
291
  }
284
292
  disconnect() {
285
293
  if (this.isServer) return;
@@ -327,12 +335,23 @@ function initializeNotifications(app, store, router, options = {}) {
327
335
  watch(
328
336
  () => store.core.state.session.userId,
329
337
  async (userId, oldUserId) => {
330
- console.log("[Notifications] Watch triggered, userId:", userId, "oldUserId:", oldUserId);
338
+ console.log("[NOTIF DEBUG] Watch triggered, userId:", userId, "oldUserId:", oldUserId);
331
339
  if (userId && !oldUserId) {
332
- console.log("[Notifications] User authenticated, initializing WebSocket...", userId);
333
- await store.notifications.actions.reregisterDeviceAfterLogin();
340
+ console.log("[NOTIF DEBUG] User authenticated branch, calling reregisterDeviceAfterLogin...");
341
+ try {
342
+ await store.notifications.actions.reregisterDeviceAfterLogin();
343
+ console.log("[NOTIF DEBUG] reregister done, calling disconnect...");
344
+ } catch (err) {
345
+ console.error("[NOTIF DEBUG] reregister failed:", err);
346
+ }
334
347
  notificationManager.disconnect();
335
- await notificationManager.initialize();
348
+ console.log("[NOTIF DEBUG] disconnect done, calling initialize...");
349
+ try {
350
+ await notificationManager.initialize();
351
+ console.log("[NOTIF DEBUG] initialize done");
352
+ } catch (err) {
353
+ console.error("[NOTIF DEBUG] initialize FAILED:", err);
354
+ }
336
355
  } else if (!userId && oldUserId) {
337
356
  console.log("[Notifications] User logged out, resetting notifications...");
338
357
  notificationManager.disconnect();
@@ -352,6 +371,7 @@ function initializeNotifications(app, store, router, options = {}) {
352
371
  ...store.notifications.mutations,
353
372
  init: notificationManager.initialize.bind(notificationManager),
354
373
  disconnect: notificationManager.disconnect.bind(notificationManager),
374
+ registerWebPush: () => notificationManager.registerWebPush(store),
355
375
  isServer
356
376
  };
357
377
  });
@@ -1 +1 @@
1
- {"version":3,"file":"notifications.client.js","sources":["../../../../../src/modules/notifications/notifications.client.js"],"sourcesContent":["// [LOADING 37] Notifications module import started\nperformance.mark('loading-37-start');\nconsole.log('[LOADING 37] Notifications module import started...');\n\nimport { toRefs, watch } from 'vue';\n// Router import\nimport addRoutes from '@martyrs/src/modules/core/views/router/addRoutes.js';\nimport { getRoutes } from './notifications.router.js';\n// Store\nimport * as storeNotifications from './store/notifications.store.js';\n// Global WebSocket import\nimport wsManager from '@martyrs/src/modules/core/views/classes/ws.manager.js';\n// Capacitor Preferences\nimport { Preferences } from '@capacitor/preferences';\n// Layouts\nimport NotificationsLayout from './components/layouts/NotificationsLayout.vue';\n// Sections\nimport NotificationPreferences from './components/sections/NotificationPreferences.vue';\nimport NotificationsList from './components/sections/NotificationsList.vue';\n// Pages\nimport Notifications from './components/pages/Notifications.vue';\n// Components\nimport NotificationItem from './components/blocks/NotificationItem.vue';\nimport NotificationBadge from './components/elements/NotificationBadge.vue';\n\nperformance.mark('loading-37-imports-end');\nconst importsTime = performance.measure('loading-37-imports', 'loading-37-start', 'loading-37-imports-end');\nconsole.log(`[LOADING 37] All imports completed in ${importsTime.duration.toFixed(2)}ms`);\n\n/**\n * Capacitor Push Notification handler\n */\nclass CapacitorPushHandler {\n constructor(store) {\n this.store = store;\n this.pushNotifications = null;\n this.device = null;\n this.isInitialized = false;\n }\n\n /**\n * Initialize Capacitor plugins\n */\n async initialize() {\n // Skip if running in SSR\n if (typeof window === 'undefined') {\n return false;\n }\n\n try {\n // Dynamic imports to prevent errors in web environment\n const { Capacitor } = await import('@capacitor/core');\n const { PushNotifications } = await import('@capacitor/push-notifications');\n const { Device } = await import('@capacitor/device');\n\n this.capacitor = Capacitor;\n this.pushNotifications = PushNotifications;\n this.device = Device;\n\n // Only proceed if running on a native platform\n if (!this.capacitor.isNativePlatform()) {\n return false;\n }\n\n this.isInitialized = true;\n return true;\n } catch (error) {\n console.error('Error importing Capacitor plugins:', error);\n return false;\n }\n }\n\n /**\n * Request permission and register for push notifications\n */\n async requestPermissions() {\n // Skip if running in SSR\n if (typeof window === 'undefined') {\n return false;\n }\n\n if (!this.isInitialized) {\n const initialized = await this.initialize();\n if (!initialized) return false;\n }\n\n try {\n // Request permission\n const permissionResult = await this.pushNotifications.requestPermissions();\n if (permissionResult.receive !== 'granted') {\n console.log('Push notification permission denied');\n return false;\n }\n\n // Set up event listeners\n this._setupListeners();\n\n // Register with Apple/Google\n await this.pushNotifications.register();\n return true;\n } catch (error) {\n console.error('Error requesting push notification permissions:', error);\n return false;\n }\n }\n\n /**\n * Setup push notification event listeners\n */\n _setupListeners() {\n // Registration event\n this.pushNotifications.addListener('registration', this._handleRegistration.bind(this));\n\n // Notification received event\n this.pushNotifications.addListener('pushNotificationReceived', this._handleNotificationReceived.bind(this));\n\n // Notification action performed event\n this.pushNotifications.addListener('pushNotificationActionPerformed', this._handleNotificationAction.bind(this));\n }\n\n /**\n * Handle registration token received\n */\n async _handleRegistration(token) {\n try {\n // Get device info\n const deviceInfo = await this.device.getInfo();\n const deviceId = await this.device.getId();\n\n // Prepare device data\n const deviceData = {\n deviceId: deviceId.uuid,\n deviceType: deviceInfo.platform.toLowerCase(),\n deviceToken: token.value,\n };\n\n // Store device info for re-registration after login\n try {\n await Preferences.set({\n key: 'notifications_device_id',\n value: deviceId.uuid\n });\n await Preferences.set({\n key: 'notifications_device_token',\n value: token.value\n });\n await Preferences.set({\n key: 'notifications_device_type',\n value: deviceInfo.platform.toLowerCase()\n });\n } catch (error) {\n console.warn('Could not save device info to preferences:', error);\n }\n\n // For anonymous users, add anonymousId\n if (!this.store.core.state.session.userId) {\n let anonymousId = null;\n try {\n const result = await Preferences.get({ key: 'notifications_anonymous_id' });\n anonymousId = result.value;\n } catch (error) {\n console.warn('Could not get anonymous ID from preferences:', error);\n }\n \n if (!anonymousId) {\n anonymousId = 'anon_' + Date.now() + '_' + Math.random().toString(36).substr(2, 9);\n try {\n await Preferences.set({\n key: 'notifications_anonymous_id',\n value: anonymousId\n });\n } catch (error) {\n console.warn('Could not save anonymous ID to preferences:', error);\n }\n }\n deviceData.anonymousId = anonymousId;\n }\n\n // Register device with backend\n await this.store.notifications.actions.registerDevice(deviceData);\n } catch (error) {\n console.error('Error handling push registration:', error);\n }\n }\n\n /**\n * Handle received notification\n */\n _handleNotificationReceived(notification) {\n // Add notification to store\n this.store.notifications.actions.addLocalNotification({\n title: notification.title,\n body: notification.body,\n data: notification.data || {},\n });\n }\n\n /**\n * Handle notification action (when user taps on notification)\n */\n _handleNotificationAction(actionData) {\n if (actionData.notification && actionData.notification.data) {\n this.store.notifications.actions.handleNotificationAction(actionData.notification.data);\n }\n }\n\n /**\n * Remove push notification listeners\n */\n removeListeners() {\n if (typeof window === 'undefined') {\n return;\n }\n\n if (this.pushNotifications) {\n this.pushNotifications.removeAllListeners();\n }\n }\n}\n\n/**\n * Notification Manager for coordinating WebSocket and Push notifications\n */\n\nclass NotificationManager {\n constructor(store, options = {}) {\n this.store = store;\n this.options = options;\n this.pushHandler = new CapacitorPushHandler(store);\n this.initialized = false;\n this.isServer = typeof window === 'undefined';\n }\n\n async registerWebPush(store) {\n if (!('Notification' in window) || !('serviceWorker' in navigator) || !('PushManager' in window)) {\n console.warn('Web Push не поддерживается в браузере');\n return;\n }\n\n const permission = await Notification.requestPermission();\n if (permission !== 'granted') {\n console.warn('Разрешение на уведомления не получено');\n return;\n }\n\n const registration = await navigator.serviceWorker.ready;\n const subscription = await registration.pushManager.subscribe({\n userVisibleOnly: true,\n applicationServerKey: 'BJtNnRrx05VQS0abnkHC-8gHJWpnmoqC_iQveENCmZOZIs-adWzqAiqFCdGVVd7CbiaLW-Q5iuIBDRgM9G-VnKg',\n });\n\n console.log('New subscription:', JSON.stringify(subscription));\n\n const deviceToken = JSON.stringify(subscription);\n const deviceId = await this.generateDeviceId();\n \n // Store device data for re-registration after login\n try {\n await Preferences.set({\n key: 'notifications_device_id',\n value: deviceId\n });\n await Preferences.set({\n key: 'notifications_device_token',\n value: deviceToken\n });\n await Preferences.set({\n key: 'notifications_device_type',\n value: 'web'\n });\n } catch (error) {\n console.warn('Could not save device info to preferences:', error);\n }\n\n const deviceData = {\n deviceToken,\n deviceType: 'web',\n deviceId\n };\n\n // For anonymous users, get or generate anonymousId\n if (!store.core.state.session.userId) {\n let anonymousId = null;\n try {\n const result = await Preferences.get({ key: 'notifications_anonymous_id' });\n anonymousId = result.value;\n } catch (error) {\n console.warn('Could not get anonymous ID from preferences:', error);\n }\n \n if (!anonymousId) {\n anonymousId = 'anon_' + Date.now() + '_' + Math.random().toString(36).substr(2, 9);\n try {\n await Preferences.set({\n key: 'notifications_anonymous_id',\n value: anonymousId\n });\n } catch (error) {\n console.warn('Could not save anonymous ID to preferences:', error);\n }\n }\n deviceData.anonymousId = anonymousId;\n }\n\n // Register device\n console.log('[Notifications] Registering device with data:', deviceData);\n await store.notifications.actions.registerDevice(deviceData);\n }\n\n async generateDeviceId() {\n // Try to get or generate a persistent device ID\n try {\n const result = await Preferences.get({ key: 'notifications_device_id' });\n let deviceId = result.value;\n \n if (!deviceId) {\n deviceId = 'web_' + Date.now() + '_' + Math.random().toString(36).substr(2, 9);\n await Preferences.set({\n key: 'notifications_device_id',\n value: deviceId\n });\n }\n return deviceId;\n } catch (error) {\n console.warn('Could not access preferences for device ID:', error);\n return 'web_' + Date.now() + '_' + Math.random().toString(36).substr(2, 9);\n }\n }\n\n async initialize() {\n if (this.initialized || this.isServer) return;\n\n const userId = this.store.core.state.session.userId;\n \n // Connect WebSocket only for authenticated users\n if (userId) {\n console.log('Connecting to websockets via notifications');\n wsManager.initialize({\n wsUrl: process.env.WSS_URL,\n maxReconnectAttempts: 10,\n reconnectDelay: 2000,\n });\n\n await wsManager.connect(userId);\n\n wsManager.removeModuleListeners('notification');\n\n await wsManager.subscribeModule('notification');\n\n wsManager.addEventListener(\n 'notification',\n data => {\n this.store.notifications.actions.addLocalNotification(data.data);\n },\n { module: 'notification' }\n );\n\n // Load notifications from API for authenticated users\n await this.store.notifications.actions.getNotifications(userId);\n } else {\n console.log('Initializing notifications for anonymous user');\n }\n\n // Enable push notifications for both authenticated and anonymous users\n // Skip auto-init for mobile apps - will be triggered manually from Walkthrough\n if (this.options.enablePush !== false && !process.env.MOBILE_APP) {\n await this.pushHandler.requestPermissions();\n await this.registerWebPush(this.store);\n }\n\n this.initialized = true;\n }\n\n disconnect() {\n if (this.isServer) return;\n\n wsManager.removeModuleListeners('notification');\n this.pushHandler.removeListeners();\n this.initialized = false;\n }\n}\n\n/**\n * Server-side utility for pre-fetching notification data\n */\nconst SSRUtils = {\n /**\n * Pre-fetch notifications for SSR\n * @param {Object} store - Store instance\n * @param {Object} context - SSR context\n */\n async prefetchNotifications(store, context) {\n try {\n const userId = store.core.state.session.userId;\n if (userId) {\n // Fetch notifications without WebSocket or push setup\n await store.notifications.actions.getNotifications(userId);\n }\n } catch (error) {\n console.error('Error pre-fetching notifications for SSR:', error);\n }\n },\n};\n\n/**\n * Function to initialize the notifications module\n * @param {Object} app - Vue app instance\n * @param {Object} store - Vuex/Pinia store\n * @param {Object} router - Vue Router instance\n * @param {Object} options - Configuration options\n */\nfunction initializeNotifications(app, store, router, options = {}) {\n // Add routes and store\n const routes = getRoutes(options);\n routes.forEach(({ parentName, config }) => {\n addRoutes(router, { ...config, parentName });\n });\n\n store.addStore('notifications', storeNotifications);\n\n // Initialize global WebSocket if needed\n if (options.wsUrl) {\n wsManager.initialize({ wsUrl: process.env.WSS_URL });\n }\n\n // Create notification manager\n const notificationManager = new NotificationManager(store, {\n enablePush: options.enablePush !== false,\n maxReconnectAttempts: options.maxReconnectAttempts || 5,\n reconnectDelay: options.reconnectDelay || 3000,\n pingInterval: options.pingInterval || 30000,\n });\n\n // Attach notification manager to store for access in components\n store.notificationManager = notificationManager;\n\n // Don't auto-initialize on server\n const isServer = typeof window === 'undefined';\n const autoInit = !isServer && options.autoInit !== false;\n\n if (autoInit) {\n // Watch for user login/logout using store.core.state.session.userId\n // immediate: true — сработает сразу после применения initialState (гидратация)\n watch(\n () => store.core.state.session.userId,\n async (userId, oldUserId) => {\n console.log('[Notifications] Watch triggered, userId:', userId, 'oldUserId:', oldUserId);\n if (userId && !oldUserId) {\n // Пользователь залогинен (либо при гидратации, либо при логине)\n console.log('[Notifications] User authenticated, initializing WebSocket...', userId);\n await store.notifications.actions.reregisterDeviceAfterLogin();\n notificationManager.disconnect();\n await notificationManager.initialize();\n } else if (!userId && oldUserId) {\n // Пользователь разлогинился\n console.log('[Notifications] User logged out, resetting notifications...');\n notificationManager.disconnect();\n store.notifications.mutations.resetNotifications();\n } else if (!userId && !oldUserId) {\n // Анонимный пользователь — инициализируем без WebSocket\n console.log('[Notifications] Anonymous user, initializing without WebSocket...');\n await notificationManager.initialize();\n }\n },\n { immediate: true }\n );\n }\n\n // Provide composable for components to access notification functionality\n app.provide('useNotifications', () => {\n return {\n ...toRefs(store.notifications.state),\n ...store.notifications.actions,\n ...store.notifications.mutations,\n init: notificationManager.initialize.bind(notificationManager),\n disconnect: notificationManager.disconnect.bind(notificationManager),\n isServer,\n };\n });\n\n return notificationManager;\n}\n\n// Module export\nconst ModuleNotifications = {\n initialize: initializeNotifications,\n SSR: SSRUtils, // Export SSR utilities\n views: {\n store: {\n storeNotifications,\n },\n router: {\n getRoutes,\n },\n components: {\n // Elements\n NotificationBadge,\n // Blocks\n NotificationItem,\n // Sections\n NotificationsList,\n NotificationPreferences,\n // Pages\n Notifications,\n // Layouts\n NotificationsLayout,\n },\n },\n};\n\n// Component exports\nexport {\n // Elements\n NotificationBadge,\n // Blocks\n NotificationItem,\n NotificationPreferences,\n // Pages\n Notifications,\n // Layouts\n NotificationsLayout,\n // Sections\n NotificationsList,\n // SSR Utilities\n SSRUtils,\n};\n\n// [LOADING 37] Notifications module import completed\nperformance.mark('loading-37-end');\nperformance.measure('loading-37-total', 'loading-37-start', 'loading-37-end');\nconst totalTime = performance.getEntriesByName('loading-37-total')[0];\nconsole.log(`[LOADING 37] Notifications module fully imported in ${totalTime?.duration?.toFixed(2)}ms`);\n\nexport default ModuleNotifications;\n"],"names":["storeNotifications","NotificationsList","NotificationPreferences","Notifications","NotificationsLayout"],"mappings":"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"}
1
+ {"version":3,"file":"notifications.client.js","sources":["../../../../../src/modules/notifications/notifications.client.js"],"sourcesContent":["// [LOADING 37] Notifications module import started\nperformance.mark('loading-37-start');\nconsole.log('[LOADING 37] Notifications module import started...');\n\nimport { toRefs, watch } from 'vue';\n// Router import\nimport addRoutes from '@martyrs/src/modules/core/views/router/addRoutes.js';\nimport { getRoutes } from './router/notifications.router.js';\n// Store\nimport * as storeNotifications from './store/notifications.store.js';\n// Global WebSocket import\nimport wsManager from '@martyrs/src/modules/core/views/classes/ws.manager.js';\n// Capacitor Preferences\nimport { Preferences } from '@capacitor/preferences';\n// Layouts\nimport NotificationsLayout from './components/layouts/NotificationsLayout.vue';\n// Sections\nimport NotificationPreferences from './components/sections/NotificationPreferences.vue';\nimport NotificationsList from './components/sections/NotificationsList.vue';\n// Pages\nimport Notifications from './components/pages/Notifications.vue';\n// Components\nimport NotificationItem from './components/blocks/NotificationItem.vue';\nimport NotificationBadge from './components/elements/NotificationBadge.vue';\n\nperformance.mark('loading-37-imports-end');\nconst importsTime = performance.measure('loading-37-imports', 'loading-37-start', 'loading-37-imports-end');\nconsole.log(`[LOADING 37] All imports completed in ${importsTime.duration.toFixed(2)}ms`);\n\n/**\n * Capacitor Push Notification handler\n */\nclass CapacitorPushHandler {\n constructor(store) {\n this.store = store;\n this.pushNotifications = null;\n this.device = null;\n this.isInitialized = false;\n }\n\n /**\n * Initialize Capacitor plugins\n */\n async initialize() {\n // Skip if running in SSR\n if (typeof window === 'undefined') {\n return false;\n }\n\n try {\n // Dynamic imports to prevent errors in web environment\n const { Capacitor } = await import('@capacitor/core');\n const { PushNotifications } = await import('@capacitor/push-notifications');\n const { Device } = await import('@capacitor/device');\n\n this.capacitor = Capacitor;\n this.pushNotifications = PushNotifications;\n this.device = Device;\n\n // Only proceed if running on a native platform\n if (!this.capacitor.isNativePlatform()) {\n return false;\n }\n\n this.isInitialized = true;\n return true;\n } catch (error) {\n console.error('Error importing Capacitor plugins:', error);\n return false;\n }\n }\n\n /**\n * Request permission and register for push notifications\n */\n async requestPermissions() {\n // Skip if running in SSR\n if (typeof window === 'undefined') {\n return false;\n }\n\n if (!this.isInitialized) {\n const initialized = await this.initialize();\n if (!initialized) return false;\n }\n\n try {\n // Request permission\n const permissionResult = await this.pushNotifications.requestPermissions();\n if (permissionResult.receive !== 'granted') {\n console.log('Push notification permission denied');\n return false;\n }\n\n // Set up event listeners\n this._setupListeners();\n\n // Register with Apple/Google\n await this.pushNotifications.register();\n return true;\n } catch (error) {\n console.error('Error requesting push notification permissions:', error);\n return false;\n }\n }\n\n /**\n * Setup push notification event listeners\n */\n _setupListeners() {\n // Registration event\n this.pushNotifications.addListener('registration', this._handleRegistration.bind(this));\n\n // Notification received event\n this.pushNotifications.addListener('pushNotificationReceived', this._handleNotificationReceived.bind(this));\n\n // Notification action performed event\n this.pushNotifications.addListener('pushNotificationActionPerformed', this._handleNotificationAction.bind(this));\n }\n\n /**\n * Handle registration token received\n */\n async _handleRegistration(token) {\n try {\n // Get device info\n const deviceInfo = await this.device.getInfo();\n const deviceId = await this.device.getId();\n\n // Prepare device data\n const deviceData = {\n deviceId: deviceId.uuid,\n deviceType: deviceInfo.platform.toLowerCase(),\n deviceToken: token.value,\n };\n\n // Store device info for re-registration after login\n try {\n await Preferences.set({\n key: 'notifications_device_id',\n value: deviceId.uuid\n });\n await Preferences.set({\n key: 'notifications_device_token',\n value: token.value\n });\n await Preferences.set({\n key: 'notifications_device_type',\n value: deviceInfo.platform.toLowerCase()\n });\n } catch (error) {\n console.warn('Could not save device info to preferences:', error);\n }\n\n // For anonymous users, add anonymousId\n if (!this.store.core.state.session.userId) {\n let anonymousId = null;\n try {\n const result = await Preferences.get({ key: 'notifications_anonymous_id' });\n anonymousId = result.value;\n } catch (error) {\n console.warn('Could not get anonymous ID from preferences:', error);\n }\n \n if (!anonymousId) {\n anonymousId = 'anon_' + Date.now() + '_' + Math.random().toString(36).substr(2, 9);\n try {\n await Preferences.set({\n key: 'notifications_anonymous_id',\n value: anonymousId\n });\n } catch (error) {\n console.warn('Could not save anonymous ID to preferences:', error);\n }\n }\n deviceData.anonymousId = anonymousId;\n }\n\n // Register device with backend\n await this.store.notifications.actions.registerDevice(deviceData);\n } catch (error) {\n console.error('Error handling push registration:', error);\n }\n }\n\n /**\n * Handle received notification\n */\n _handleNotificationReceived(notification) {\n // Add notification to store\n this.store.notifications.actions.addLocalNotification({\n title: notification.title,\n body: notification.body,\n data: notification.data || {},\n });\n }\n\n /**\n * Handle notification action (when user taps on notification)\n */\n _handleNotificationAction(actionData) {\n if (actionData.notification && actionData.notification.data) {\n this.store.notifications.actions.handleNotificationAction(actionData.notification.data);\n }\n }\n\n /**\n * Remove push notification listeners\n */\n removeListeners() {\n if (typeof window === 'undefined') {\n return;\n }\n\n if (this.pushNotifications) {\n this.pushNotifications.removeAllListeners();\n }\n }\n}\n\n/**\n * Notification Manager for coordinating WebSocket and Push notifications\n */\n\nclass NotificationManager {\n constructor(store, options = {}) {\n this.store = store;\n this.options = options;\n this.pushHandler = new CapacitorPushHandler(store);\n this.initialized = false;\n this.isServer = typeof window === 'undefined';\n }\n\n async registerWebPush(store) {\n if (!('serviceWorker' in navigator) || !('PushManager' in window)) {\n console.warn('[WebPush] PushManager not supported');\n return;\n }\n\n // Skip permission request if already granted (component handles the prompt)\n if ('Notification' in window && Notification.permission !== 'granted') {\n const permission = await Notification.requestPermission();\n if (permission !== 'granted') {\n console.warn('[WebPush] Permission not granted:', permission);\n return;\n }\n }\n\n console.log('[WebPush] Subscribing to push manager...');\n const registration = await navigator.serviceWorker.ready;\n const subscription = await registration.pushManager.subscribe({\n userVisibleOnly: true,\n applicationServerKey: 'BJtNnRrx05VQS0abnkHC-8gHJWpnmoqC_iQveENCmZOZIs-adWzqAiqFCdGVVd7CbiaLW-Q5iuIBDRgM9G-VnKg',\n });\n\n console.log('[WebPush] Subscription:', JSON.stringify(subscription));\n\n const deviceToken = JSON.stringify(subscription);\n const deviceId = await this.generateDeviceId();\n\n // Store device data for re-registration after login\n try {\n await Preferences.set({ key: 'notifications_device_id', value: deviceId });\n await Preferences.set({ key: 'notifications_device_token', value: deviceToken });\n await Preferences.set({ key: 'notifications_device_type', value: 'web' });\n } catch (error) {\n console.warn('[WebPush] Could not save device info to preferences:', error);\n }\n\n const deviceData = {\n deviceToken,\n deviceType: 'web',\n deviceId\n };\n\n // For anonymous users, get or generate anonymousId\n if (!store.core.state.session.userId) {\n let anonymousId = null;\n try {\n const result = await Preferences.get({ key: 'notifications_anonymous_id' });\n anonymousId = result.value;\n } catch (error) {\n console.warn('[WebPush] Could not get anonymous ID:', error);\n }\n\n if (!anonymousId) {\n anonymousId = 'anon_' + Date.now() + '_' + Math.random().toString(36).substr(2, 9);\n try {\n await Preferences.set({ key: 'notifications_anonymous_id', value: anonymousId });\n } catch (error) {\n console.warn('[WebPush] Could not save anonymous ID:', error);\n }\n }\n deviceData.anonymousId = anonymousId;\n }\n\n // Register device\n console.log('[WebPush] Registering device:', deviceData);\n await store.notifications.actions.registerDevice(deviceData);\n console.log('[WebPush] Device registered successfully');\n }\n\n async generateDeviceId() {\n // Try to get or generate a persistent device ID\n try {\n const result = await Preferences.get({ key: 'notifications_device_id' });\n let deviceId = result.value;\n \n if (!deviceId) {\n deviceId = 'web_' + Date.now() + '_' + Math.random().toString(36).substr(2, 9);\n await Preferences.set({\n key: 'notifications_device_id',\n value: deviceId\n });\n }\n return deviceId;\n } catch (error) {\n console.warn('Could not access preferences for device ID:', error);\n return 'web_' + Date.now() + '_' + Math.random().toString(36).substr(2, 9);\n }\n }\n\n async initialize() {\n console.log('[NOTIF DEBUG] NotificationManager.initialize() called, initialized:', this.initialized, 'isServer:', this.isServer);\n if (this.initialized || this.isServer) return;\n\n const userId = this.store.core.state.session.userId;\n console.log('[NOTIF DEBUG] userId:', userId);\n\n // Connect WebSocket only for authenticated users\n if (userId) {\n try {\n console.log('[NOTIF DEBUG] Connecting to websockets, WSS_URL:', process.env.WSS_URL);\n wsManager.initialize({\n wsUrl: process.env.WSS_URL,\n maxReconnectAttempts: 10,\n reconnectDelay: 2000,\n });\n\n await wsManager.connect(userId);\n console.log('[NOTIF DEBUG] wsManager.connect() resolved successfully');\n\n wsManager.removeModuleListeners('notification');\n\n await wsManager.subscribeModule('notification');\n console.log('[NOTIF DEBUG] Subscribed to notification module');\n\n wsManager.addEventListener(\n 'notification',\n data => {\n this.store.notifications.actions.addLocalNotification(data.data);\n },\n { module: 'notification' }\n );\n } catch (error) {\n console.error('[NOTIF DEBUG] WebSocket init FAILED:', error);\n }\n\n // Load notifications regardless of WS status\n try {\n await this.store.notifications.actions.getNotifications(userId);\n } catch (error) {\n console.error('[NOTIF DEBUG] Failed to load notifications:', error);\n }\n } else {\n console.log('[NOTIF DEBUG] No userId, skipping WS');\n }\n\n // Push registration in background — don't block initialization\n // Skip auto-init for mobile apps - will be triggered manually from Walkthrough\n if (this.options.enablePush !== false && !process.env.MOBILE_APP) {\n this.pushHandler.requestPermissions().catch(() => {});\n // Only register web push if permission already granted (no popup without user gesture)\n if ('Notification' in window && Notification.permission === 'granted') {\n this.registerWebPush(this.store).catch(err => console.error('[Notifications] WebPush registration error:', err));\n }\n }\n\n this.initialized = true;\n console.log('[NOTIF DEBUG] NotificationManager initialized successfully');\n }\n\n disconnect() {\n if (this.isServer) return;\n\n wsManager.removeModuleListeners('notification');\n this.pushHandler.removeListeners();\n this.initialized = false;\n }\n}\n\n/**\n * Server-side utility for pre-fetching notification data\n */\nconst SSRUtils = {\n /**\n * Pre-fetch notifications for SSR\n * @param {Object} store - Store instance\n * @param {Object} context - SSR context\n */\n async prefetchNotifications(store, context) {\n try {\n const userId = store.core.state.session.userId;\n if (userId) {\n // Fetch notifications without WebSocket or push setup\n await store.notifications.actions.getNotifications(userId);\n }\n } catch (error) {\n console.error('Error pre-fetching notifications for SSR:', error);\n }\n },\n};\n\n/**\n * Function to initialize the notifications module\n * @param {Object} app - Vue app instance\n * @param {Object} store - Vuex/Pinia store\n * @param {Object} router - Vue Router instance\n * @param {Object} options - Configuration options\n */\nfunction initializeNotifications(app, store, router, options = {}) {\n // Add routes and store\n const routes = getRoutes(options);\n routes.forEach(({ parentName, config }) => {\n addRoutes(router, { ...config, parentName });\n });\n\n store.addStore('notifications', storeNotifications);\n\n // Initialize global WebSocket if needed\n if (options.wsUrl) {\n wsManager.initialize({ wsUrl: process.env.WSS_URL });\n }\n\n // Create notification manager\n const notificationManager = new NotificationManager(store, {\n enablePush: options.enablePush !== false,\n maxReconnectAttempts: options.maxReconnectAttempts || 5,\n reconnectDelay: options.reconnectDelay || 3000,\n pingInterval: options.pingInterval || 30000,\n });\n\n // Attach notification manager to store for access in components\n store.notificationManager = notificationManager;\n\n // Don't auto-initialize on server\n const isServer = typeof window === 'undefined';\n const autoInit = !isServer && options.autoInit !== false;\n\n if (autoInit) {\n // Watch for user login/logout using store.core.state.session.userId\n // immediate: true — сработает сразу после применения initialState (гидратация)\n watch(\n () => store.core.state.session.userId,\n async (userId, oldUserId) => {\n console.log('[NOTIF DEBUG] Watch triggered, userId:', userId, 'oldUserId:', oldUserId);\n if (userId && !oldUserId) {\n // Пользователь залогинен (либо при гидратации, либо при логине)\n console.log('[NOTIF DEBUG] User authenticated branch, calling reregisterDeviceAfterLogin...');\n try {\n await store.notifications.actions.reregisterDeviceAfterLogin();\n console.log('[NOTIF DEBUG] reregister done, calling disconnect...');\n } catch (err) {\n console.error('[NOTIF DEBUG] reregister failed:', err);\n }\n notificationManager.disconnect();\n console.log('[NOTIF DEBUG] disconnect done, calling initialize...');\n try {\n await notificationManager.initialize();\n console.log('[NOTIF DEBUG] initialize done');\n } catch (err) {\n console.error('[NOTIF DEBUG] initialize FAILED:', err);\n }\n } else if (!userId && oldUserId) {\n // Пользователь разлогинился\n console.log('[Notifications] User logged out, resetting notifications...');\n notificationManager.disconnect();\n store.notifications.mutations.resetNotifications();\n } else if (!userId && !oldUserId) {\n // Анонимный пользователь — инициализируем без WebSocket\n console.log('[Notifications] Anonymous user, initializing without WebSocket...');\n await notificationManager.initialize();\n }\n },\n { immediate: true }\n );\n }\n\n // Provide composable for components to access notification functionality\n app.provide('useNotifications', () => {\n return {\n ...toRefs(store.notifications.state),\n ...store.notifications.actions,\n ...store.notifications.mutations,\n init: notificationManager.initialize.bind(notificationManager),\n disconnect: notificationManager.disconnect.bind(notificationManager),\n registerWebPush: () => notificationManager.registerWebPush(store),\n isServer,\n };\n });\n\n return notificationManager;\n}\n\n// Module export\nconst ModuleNotifications = {\n initialize: initializeNotifications,\n SSR: SSRUtils, // Export SSR utilities\n views: {\n store: {\n storeNotifications,\n },\n router: {\n getRoutes,\n },\n components: {\n // Elements\n NotificationBadge,\n // Blocks\n NotificationItem,\n // Sections\n NotificationsList,\n NotificationPreferences,\n // Pages\n Notifications,\n // Layouts\n NotificationsLayout,\n },\n },\n};\n\n// Component exports\nexport {\n // Elements\n NotificationBadge,\n // Blocks\n NotificationItem,\n NotificationPreferences,\n // Pages\n Notifications,\n // Layouts\n NotificationsLayout,\n // Sections\n NotificationsList,\n // SSR Utilities\n SSRUtils,\n};\n\n// [LOADING 37] Notifications module import completed\nperformance.mark('loading-37-end');\nperformance.measure('loading-37-total', 'loading-37-start', 'loading-37-end');\nconst totalTime = performance.getEntriesByName('loading-37-total')[0];\nconsole.log(`[LOADING 37] Notifications module fully imported in ${totalTime?.duration?.toFixed(2)}ms`);\n\nexport default ModuleNotifications;\n"],"names":["storeNotifications","NotificationsList","NotificationPreferences","Notifications","NotificationsLayout"],"mappings":"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"}
@@ -5,7 +5,7 @@ function buildNotificationRoutes() {
5
5
  name: "Notifications",
6
6
  component: () => import(
7
7
  /* webpackChunkName: 'notifications-page' */
8
- "./components/pages/Notifications.vue.js"
8
+ "../components/pages/Notifications.vue.js"
9
9
  ),
10
10
  meta: {
11
11
  title: "Notifications"
@@ -16,7 +16,7 @@ function buildNotificationRoutes() {
16
16
  name: "NotificationPreferences",
17
17
  component: () => import(
18
18
  /* webpackChunkName: 'notifications-preferences' */
19
- "./components/sections/NotificationPreferences.vue.js"
19
+ "../components/sections/NotificationPreferences.vue.js"
20
20
  ),
21
21
  meta: {
22
22
  title: "Notification Preferences"
@@ -33,7 +33,7 @@ function getRoutes(options = {}) {
33
33
  basePath: options.basePath || "notifications",
34
34
  component: options.layoutComponent || (() => import(
35
35
  /* webpackChunkName: 'notifications-layout' */
36
- "./components/layouts/NotificationsLayout.vue.js"
36
+ "../components/layouts/NotificationsLayout.vue.js"
37
37
  )),
38
38
  routes: buildNotificationRoutes()
39
39
  }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notifications.router.js","sources":["../../../../../../src/modules/notifications/router/notifications.router.js"],"sourcesContent":["function buildNotificationRoutes() {\n return [\n {\n path: '',\n name: 'Notifications',\n component: () => import(\n /* webpackChunkName: 'notifications-page' */\n '../components/pages/Notifications.vue'\n ),\n meta: {\n title: 'Notifications',\n },\n },\n {\n path: 'preferences',\n name: 'NotificationPreferences',\n component: () => import(\n /* webpackChunkName: 'notifications-preferences' */\n '../components/sections/NotificationPreferences.vue'\n ),\n meta: {\n title: 'Notification Preferences',\n },\n },\n ];\n}\n\nexport function getRoutes(options = {}) {\n const routes = [];\n const routeUsers = options.routeUsers || 'User Profile Root';\n\n routes.push({\n parentName: routeUsers,\n config: {\n basePath: options.basePath || 'notifications',\n component: options.layoutComponent || (() => import(\n /* webpackChunkName: 'notifications-layout' */\n '../components/layouts/NotificationsLayout.vue'\n )),\n routes: buildNotificationRoutes(options),\n },\n });\n\n return routes;\n}\n\nexport default { getRoutes };\n"],"names":[],"mappings":"AAAA,SAAS,0BAA0B;AACjC,SAAO;AAAA,IACL;AAAA,MACE,MAAM;AAAA,MACN,MAAM;AAAA,MACN,WAAW,MAAM;AAAA;AAAA,QAEf;AAAA,MACR;AAAA,MACM,MAAM;AAAA,QACJ,OAAO;AAAA,MACf;AAAA,IACA;AAAA,IACI;AAAA,MACE,MAAM;AAAA,MACN,MAAM;AAAA,MACN,WAAW,MAAM;AAAA;AAAA,QAEf;AAAA,MACR;AAAA,MACM,MAAM;AAAA,QACJ,OAAO;AAAA,MACf;AAAA,IACA;AAAA,EACA;AACA;AAEO,SAAS,UAAU,UAAU,IAAI;AACtC,QAAM,SAAS,CAAA;AACf,QAAM,aAAa,QAAQ,cAAc;AAEzC,SAAO,KAAK;AAAA,IACV,YAAY;AAAA,IACZ,QAAQ;AAAA,MACN,UAAU,QAAQ,YAAY;AAAA,MAC9B,WAAW,QAAQ,oBAAoB,MAAM;AAAA;AAAA,QAE3C;AAAA,MACR;AAAA,MACM,QAAQ,wBAA+B;AAAA,IAC7C;AAAA,EACA,CAAG;AAED,SAAO;AACT;"}
@@ -1,26 +1,23 @@
1
- import { createElementBlock, openBlock, createElementVNode, toDisplayString, createVNode, createCommentVNode } from "vue";
2
- import StatusBadge from "../../../../components/Table/StatusBadge.vue.js";
3
- /* empty css */
4
- import _export_sfc from "../../../../../../_virtual/_plugin-vue_export-helper.js";
1
+ import { createElementBlock, openBlock, createElementVNode, createCommentVNode, toDisplayString, createVNode } from "vue";
2
+ import IconTime from "../../../icons/entities/IconTime.vue.js";
3
+ import _sfc_main$1 from "../../../../components/Table/StatusBadge.vue.js";
5
4
  const _hoisted_1 = { class: "bg-light pos-relative pd-medium radius-medium" };
6
5
  const _hoisted_2 = { class: "mn-b-small flex" };
7
6
  const _hoisted_3 = { class: "mn-r-auto" };
8
7
  const _hoisted_4 = { class: "mn-b-thin" };
9
8
  const _hoisted_5 = { class: "t-transp" };
10
9
  const _hoisted_6 = { class: "flex-center" };
11
- const _hoisted_7 = { class: "mn-b-small pd-small bg-white radius-small flex-nowrap flex" };
12
- const _hoisted_8 = { class: "w-100" };
13
- const _hoisted_9 = { class: "truncate" };
14
- const _hoisted_10 = { class: "w-100 t-right" };
15
- const _hoisted_11 = { class: "pd-small bg-white radius-small" };
16
- const _hoisted_12 = { class: "flex mn-b-thin" };
17
- const _hoisted_13 = { class: "mn-r-auto" };
18
- const _hoisted_14 = { class: "t-right" };
19
- const _hoisted_15 = {
10
+ const _hoisted_7 = { class: "mn-b-thin pd-small bg-white radius-small flex" };
11
+ const _hoisted_8 = { class: "truncate" };
12
+ const _hoisted_9 = { class: "mn-b-thin pd-small bg-white radius-small flex" };
13
+ const _hoisted_10 = { class: "mn-b-thin pd-small bg-white radius-small flex" };
14
+ const _hoisted_11 = {
20
15
  key: 0,
21
- class: "mn-t-thin"
16
+ class: "mn-b-thin pd-small bg-white radius-small"
22
17
  };
23
- const _hoisted_16 = { class: "t-small" };
18
+ const _hoisted_12 = { class: "t-small" };
19
+ const _hoisted_13 = { class: "pd-small bg-white radius-small gap-micro flex-v-center flex-nowrap flex" };
20
+ const _hoisted_14 = { class: "fw-medium mn-r-auto" };
24
21
  const _sfc_main = {
25
22
  __name: "CardApplication",
26
23
  props: {
@@ -42,45 +39,38 @@ const _sfc_main = {
42
39
  createElementVNode("p", _hoisted_5, toDisplayString(__props.application.contacts?.email || __props.application.contacts?.phone), 1)
43
40
  ]),
44
41
  createElementVNode("div", _hoisted_6, [
45
- createVNode(StatusBadge, {
46
- value: {
47
- text: __props.application.status,
48
- color: __props.application.status === "completed" ? "#22c55e" : __props.application.status === "in_progress" ? "#f59e0b" : "#6b7280"
49
- }
42
+ createVNode(_sfc_main$1, {
43
+ value: __props.application.status
50
44
  }, null, 8, ["value"])
51
45
  ])
52
46
  ]),
53
47
  createElementVNode("div", _hoisted_7, [
54
- createElementVNode("div", _hoisted_8, [
55
- createElementVNode("p", _hoisted_9, toDisplayString(__props.application.type || "Unknown"), 1),
56
- _cache[0] || (_cache[0] = createElementVNode("small", { class: "t-transp" }, "Type", -1))
57
- ]),
58
- createElementVNode("div", _hoisted_10, [
59
- createElementVNode("p", null, toDisplayString(__props.formatDate(__props.application.updatedAt)), 1),
60
- _cache[1] || (_cache[1] = createElementVNode("small", { class: "t-transp" }, "Updated", -1))
61
- ])
48
+ _cache[0] || (_cache[0] = createElementVNode("p", { class: "mn-r-auto t-transp" }, "Type", -1)),
49
+ createElementVNode("p", _hoisted_8, toDisplayString(__props.application.type || "Unknown"), 1)
62
50
  ]),
63
- createElementVNode("div", _hoisted_11, [
64
- createElementVNode("div", _hoisted_12, [
65
- createElementVNode("div", _hoisted_13, [
66
- createElementVNode("p", null, toDisplayString(__props.application.contacts?.phone || "No phone"), 1),
67
- _cache[2] || (_cache[2] = createElementVNode("small", { class: "t-transp" }, "Phone", -1))
68
- ]),
69
- createElementVNode("div", _hoisted_14, [
70
- createElementVNode("p", null, "#" + toDisplayString(__props.application._id.slice(0, 4) + "..." + __props.application._id.slice(-4)), 1),
71
- _cache[3] || (_cache[3] = createElementVNode("small", { class: "t-transp" }, "ID", -1))
72
- ])
73
- ]),
74
- __props.application.text ? (openBlock(), createElementBlock("div", _hoisted_15, [
75
- createElementVNode("p", _hoisted_16, toDisplayString(__props.application.text.length > 100 ? __props.application.text.slice(0, 100) + "..." : __props.application.text), 1)
76
- ])) : createCommentVNode("", true)
51
+ createElementVNode("div", _hoisted_9, [
52
+ _cache[1] || (_cache[1] = createElementVNode("p", { class: "mn-r-auto t-transp" }, "Phone", -1)),
53
+ createElementVNode("p", null, toDisplayString(__props.application.contacts?.phone || "No phone"), 1)
54
+ ]),
55
+ createElementVNode("div", _hoisted_10, [
56
+ _cache[2] || (_cache[2] = createElementVNode("p", { class: "mn-r-auto t-transp" }, "ID", -1)),
57
+ createElementVNode("p", null, "#" + toDisplayString(__props.application._id.slice(0, 4) + "..." + __props.application._id.slice(-4)), 1)
58
+ ]),
59
+ __props.application.text ? (openBlock(), createElementBlock("div", _hoisted_11, [
60
+ createElementVNode("p", _hoisted_12, toDisplayString(__props.application.text.length > 100 ? __props.application.text.slice(0, 100) + "..." : __props.application.text), 1)
61
+ ])) : createCommentVNode("", true),
62
+ createElementVNode("div", _hoisted_13, [
63
+ createVNode(IconTime, {
64
+ class: "i-medium t-transp",
65
+ fill: "rgb(var(--black))"
66
+ }),
67
+ createElementVNode("p", _hoisted_14, toDisplayString(__props.formatDate(__props.application.updatedAt)), 1)
77
68
  ])
78
69
  ]);
79
70
  };
80
71
  }
81
72
  };
82
- const CardApplication = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-1239e806"]]);
83
73
  export {
84
- CardApplication as default
74
+ _sfc_main as default
85
75
  };
86
76
  //# sourceMappingURL=CardApplication.vue.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CardApplication.vue.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"CardApplication.vue.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}