@ozdao/martyrs 0.2.603 → 0.2.605

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 (911) hide show
  1. package/README.md +2 -2
  2. package/dist/_virtual/dayjs.min.js +1 -1
  3. package/dist/_virtual/weekOfYear.js +1 -1
  4. package/dist/{abac-Blt8bUTL.js → abac-kz5xI99l.js} +1 -0
  5. package/dist/auth.server.js +52 -12
  6. package/dist/builder.js +67 -2
  7. package/dist/chats.server.js +2 -2
  8. package/dist/community.server.js +3 -3
  9. package/dist/core.server.js +2 -2
  10. package/dist/{core.websocket-Cl76z2wT.js → core.websocket-B2FA8gGl.js} +0 -2
  11. package/dist/{crud-BT5FIvQC.js → crud-Cwn0frBP.js} +8 -2
  12. package/dist/events.server.js +4 -4
  13. package/dist/files.server.js +1 -1
  14. package/dist/gallery.server.js +2 -2
  15. package/dist/governance.server.js +10 -10
  16. package/dist/{index-kvBwwb0w.js → index-CPACC651.js} +1 -1
  17. package/dist/inventory.server.js +4 -4
  18. package/dist/{mailing-DT7nbNjZ.js → mailing-BBCidXGr.js} +38 -2
  19. package/dist/marketplace.server.js +2 -2
  20. package/dist/martyrs/dist/martyrs.es3.js +1 -1
  21. package/dist/martyrs/dist/martyrs.es3.js.map +1 -1
  22. package/dist/{node_modules/.pnpm/dayjs@1.11.13 → martyrs/node_modules/.pnpm/dayjs@1.11.19}/node_modules/dayjs/dayjs.min.js +1 -1
  23. package/dist/{node_modules/.pnpm/dayjs@1.11.13 → martyrs/node_modules/.pnpm/dayjs@1.11.19}/node_modules/dayjs/dayjs.min.js.map +1 -1
  24. package/dist/{node_modules/.pnpm/dayjs@1.11.13 → martyrs/node_modules/.pnpm/dayjs@1.11.19}/node_modules/dayjs/plugin/weekOfYear.js +1 -1
  25. package/dist/{node_modules/.pnpm/dayjs@1.11.13 → martyrs/node_modules/.pnpm/dayjs@1.11.19}/node_modules/dayjs/plugin/weekOfYear.js.map +1 -1
  26. package/dist/{node_modules/.pnpm/vue-draggable-next@2.2.1_sortablejs@1.15.6_vue@3.5.13_typescript@5.8.3_ → martyrs/node_modules/.pnpm/vue-draggable-next@2.3.0_sortablejs@1.15.7_vue@3.5.13}/node_modules/vue-draggable-next/dist/vue-draggable-next.esm-bundler.js +305 -268
  27. package/dist/martyrs/node_modules/.pnpm/vue-draggable-next@2.3.0_sortablejs@1.15.7_vue@3.5.13/node_modules/vue-draggable-next/dist/vue-draggable-next.esm-bundler.js.map +1 -0
  28. package/dist/martyrs/src/components/Address/Address.vue2.js +13 -13
  29. package/dist/martyrs/src/components/Address/Address.vue2.js.map +1 -1
  30. package/dist/martyrs/src/components/Block/Block.vue.js +1 -1
  31. package/dist/martyrs/src/components/Button/Button.vue2.js +1 -1
  32. package/dist/martyrs/src/components/Button/Button.vue2.js.map +1 -1
  33. package/dist/martyrs/src/components/Calendar/Calendar.vue2.js +150 -143
  34. package/dist/martyrs/src/components/Calendar/Calendar.vue2.js.map +1 -1
  35. package/dist/martyrs/src/components/Chart/Chart.vue.js +296 -0
  36. package/dist/martyrs/src/components/Chart/Chart.vue.js.map +1 -0
  37. package/dist/martyrs/src/components/Checkbox/Checkbox.vue.js +1 -1
  38. package/dist/martyrs/src/components/Checkbox/Checkbox.vue.js.map +1 -1
  39. package/dist/martyrs/src/components/Chips/Chips.vue.js +5 -6
  40. package/dist/martyrs/src/components/Chips/Chips.vue.js.map +1 -1
  41. package/dist/martyrs/src/components/Countdown/Countdown.vue.js +5 -5
  42. package/dist/martyrs/src/components/Countdown/Countdown.vue.js.map +1 -1
  43. package/dist/martyrs/src/components/DatePicker/DatePicker.vue.js +2 -2
  44. package/dist/martyrs/src/components/DatePicker/DatePicker.vue.js.map +1 -1
  45. package/dist/martyrs/src/components/EditImages/EditImages.vue.js +4 -4
  46. package/dist/martyrs/src/components/EditImages/EditImages.vue.js.map +1 -1
  47. package/dist/martyrs/src/components/EmptyState/EmptyState.vue.js +1 -1
  48. package/dist/martyrs/src/components/Feed/Carousel.vue.js +1 -1
  49. package/dist/martyrs/src/components/Feed/Feed.vue.js +2 -2
  50. package/dist/martyrs/src/components/Feed/Feed.vue.js.map +1 -1
  51. package/dist/martyrs/src/components/Field/Field.vue.js +4 -4
  52. package/dist/martyrs/src/components/Field/Field.vue.js.map +1 -1
  53. package/dist/martyrs/src/components/FieldDate/FieldDate.vue.js +3 -3
  54. package/dist/martyrs/src/components/FieldDate/FieldDate.vue.js.map +1 -1
  55. package/dist/martyrs/src/components/Loader/{Loader.vue2.js → Loader.vue.js} +2 -2
  56. package/dist/martyrs/src/components/Loader/Loader.vue.js.map +1 -0
  57. package/dist/martyrs/src/components/LocationMarker/LocationMarker.vue2.js +27 -21
  58. package/dist/martyrs/src/components/LocationMarker/LocationMarker.vue2.js.map +1 -1
  59. package/dist/martyrs/src/components/Map/Map.vue.js +20 -16
  60. package/dist/martyrs/src/components/Map/Map.vue.js.map +1 -1
  61. package/dist/martyrs/src/components/Media/Media.vue.js +1 -1
  62. package/dist/martyrs/src/components/Popup/Popup.vue.js +3 -4
  63. package/dist/martyrs/src/components/Popup/Popup.vue.js.map +1 -1
  64. package/dist/martyrs/src/components/Radio/Radio.vue.js +12 -10
  65. package/dist/martyrs/src/components/Radio/Radio.vue.js.map +1 -1
  66. package/dist/martyrs/src/components/Select/Select.vue.js +2 -2
  67. package/dist/martyrs/src/components/Select/Select.vue.js.map +1 -1
  68. package/dist/martyrs/src/components/Status/Snack.vue.js +1 -1
  69. package/dist/martyrs/src/components/Status/Snack.vue.js.map +1 -1
  70. package/dist/martyrs/src/components/Status/Status.vue.js +1 -1
  71. package/dist/martyrs/src/components/Status/Status.vue.js.map +1 -1
  72. package/dist/martyrs/src/components/Tab/{Tab.vue.js → Tab.vue2.js} +2 -2
  73. package/dist/martyrs/src/components/Tab/Tab.vue2.js.map +1 -0
  74. package/dist/martyrs/src/components/Table/Table.vue.js +21 -4
  75. package/dist/martyrs/src/components/Table/Table.vue.js.map +1 -1
  76. package/dist/martyrs/src/components/Tooltip/{Tooltip.vue2.js → Tooltip.vue.js} +2 -2
  77. package/dist/martyrs/src/components/Tooltip/Tooltip.vue.js.map +1 -0
  78. package/dist/martyrs/src/components/Tree/Tree.vue.js +1 -1
  79. package/dist/martyrs/src/components/Upload/Upload.vue2.js +2 -2
  80. package/dist/martyrs/src/components/Upload/Upload.vue2.js.map +1 -1
  81. package/dist/martyrs/src/components/UploadImage/UploadImage.vue.js +3 -3
  82. package/dist/martyrs/src/components/UploadImage/UploadImage.vue.js.map +1 -1
  83. package/dist/martyrs/src/components/UploadImageMultiple/UploadImageMultiple.vue.js +2 -2
  84. package/dist/martyrs/src/components/UploadImageMultiple/UploadImageMultiple.vue.js.map +1 -1
  85. package/dist/martyrs/src/modules/auth/auth.client.js +14 -2
  86. package/dist/martyrs/src/modules/auth/auth.client.js.map +1 -1
  87. package/dist/martyrs/src/modules/auth/views/components/blocks/OtpDialog.vue.js +4 -4
  88. package/dist/martyrs/src/modules/auth/views/components/blocks/OtpDialog.vue.js.map +1 -1
  89. package/dist/martyrs/src/modules/auth/views/components/blocks/PopupAuth.vue.js +1 -1
  90. package/dist/martyrs/src/modules/auth/views/components/blocks/PopupAuth.vue.js.map +1 -1
  91. package/dist/martyrs/src/modules/auth/views/components/blocks/SidebarUserCard.vue.js +96 -0
  92. package/dist/martyrs/src/modules/auth/views/components/blocks/SidebarUserCard.vue.js.map +1 -0
  93. package/dist/martyrs/src/modules/auth/views/components/pages/BackofficeUsers.vue.js +337 -0
  94. package/dist/martyrs/src/modules/auth/views/components/pages/BackofficeUsers.vue.js.map +1 -0
  95. package/dist/martyrs/src/modules/auth/views/components/pages/Invite.vue.js +2 -2
  96. package/dist/martyrs/src/modules/auth/views/components/pages/Invite.vue.js.map +1 -1
  97. package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.js +1 -1
  98. package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.js.map +1 -1
  99. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEdit.vue.js +33 -19
  100. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEdit.vue.js.map +1 -1
  101. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditAccount.vue.js +76 -40
  102. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditAccount.vue.js.map +1 -1
  103. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditSidebar.vue.js +6 -5
  104. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditSidebar.vue.js.map +1 -1
  105. package/dist/martyrs/src/modules/auth/views/components/pages/ResetPassword.vue.js +5 -5
  106. package/dist/martyrs/src/modules/auth/views/components/pages/ResetPassword.vue.js.map +1 -1
  107. package/dist/martyrs/src/modules/auth/views/components/pages/SignIn.vue.js +6 -4
  108. package/dist/martyrs/src/modules/auth/views/components/pages/SignIn.vue.js.map +1 -1
  109. package/dist/martyrs/src/modules/auth/views/components/pages/SignUp.vue.js +4 -4
  110. package/dist/martyrs/src/modules/auth/views/components/pages/SignUp.vue.js.map +1 -1
  111. package/dist/martyrs/src/modules/auth/views/components/pages/UserDashboard.vue.js +28 -16
  112. package/dist/martyrs/src/modules/auth/views/components/pages/UserDashboard.vue.js.map +1 -1
  113. package/dist/martyrs/src/modules/auth/views/components/sections/FeaturedUsers.vue.js +1 -1
  114. package/dist/martyrs/src/modules/auth/views/components/sections/FeaturedUsers.vue.js.map +1 -1
  115. package/dist/martyrs/src/modules/auth/views/components/sections/SliderFeatures.vue.js +1 -1
  116. package/dist/martyrs/src/modules/auth/views/components/sections/SliderFeatures.vue.js.map +1 -1
  117. package/dist/martyrs/src/modules/auth/views/middlewares/auth.validation.js +6 -2
  118. package/dist/martyrs/src/modules/auth/views/middlewares/auth.validation.js.map +1 -1
  119. package/dist/martyrs/src/modules/auth/views/router/users.backoffice.router.js +53 -0
  120. package/dist/martyrs/src/modules/auth/views/router/users.backoffice.router.js.map +1 -0
  121. package/dist/martyrs/src/modules/auth/views/store/auth.js +3 -3
  122. package/dist/martyrs/src/modules/auth/views/store/auth.js.map +1 -1
  123. package/dist/martyrs/src/modules/backoffice/components/pages/Dashboard.vue.js +179 -253
  124. package/dist/martyrs/src/modules/backoffice/components/pages/Dashboard.vue.js.map +1 -1
  125. package/dist/martyrs/src/modules/backoffice/configs/navigation.backoffice.config.js +105 -44
  126. package/dist/martyrs/src/modules/backoffice/configs/navigation.backoffice.config.js.map +1 -1
  127. package/dist/martyrs/src/modules/backoffice/router/backoffice.router.js +11 -5
  128. package/dist/martyrs/src/modules/backoffice/router/backoffice.router.js.map +1 -1
  129. package/dist/martyrs/src/modules/chats/components/blocks/ChatMessage.vue.js +1 -1
  130. package/dist/martyrs/src/modules/chats/components/blocks/ChatMessage.vue.js.map +1 -1
  131. package/dist/martyrs/src/modules/chats/components/sections/ChatWindow.vue.js.map +1 -1
  132. package/dist/martyrs/src/modules/community/community.client.js +4 -4
  133. package/dist/martyrs/src/modules/community/community.client.js.map +1 -1
  134. package/dist/martyrs/src/modules/community/components/blocks/CardBlogpost.vue.js +1 -1
  135. package/dist/martyrs/src/modules/community/components/blocks/CardBlogpost.vue.js.map +1 -1
  136. package/dist/martyrs/src/modules/community/components/layouts/Community.vue.js +4 -4
  137. package/dist/martyrs/src/modules/community/components/layouts/Community.vue.js.map +1 -1
  138. package/dist/martyrs/src/modules/community/components/pages/BlogPost.vue.js +1 -1
  139. package/dist/martyrs/src/modules/community/components/sections/Comment.vue.js +2 -2
  140. package/dist/martyrs/src/modules/community/components/sections/Comment.vue.js.map +1 -1
  141. package/dist/martyrs/src/modules/community/components/sections/Comments.vue.js +1 -1
  142. package/dist/martyrs/src/modules/constructor/components/elements/ImageUpload.vue.js +1 -1
  143. package/dist/martyrs/src/modules/constructor/components/elements/ImageUpload.vue.js.map +1 -1
  144. package/dist/martyrs/src/modules/core/core.client.js +18 -16
  145. package/dist/martyrs/src/modules/core/core.client.js.map +1 -1
  146. package/dist/martyrs/src/modules/core/views/classes/core.app.js +25 -6
  147. package/dist/martyrs/src/modules/core/views/classes/core.app.js.map +1 -1
  148. package/dist/martyrs/src/modules/core/views/classes/module.manager.js +4 -2
  149. package/dist/martyrs/src/modules/core/views/classes/module.manager.js.map +1 -1
  150. package/dist/martyrs/src/modules/core/views/components/blocks/AlertDialog.vue.js +1 -1
  151. package/dist/martyrs/src/modules/core/views/components/blocks/AlertDialog.vue.js.map +1 -1
  152. package/dist/martyrs/src/modules/core/views/components/blocks/BlockSearch.vue.js +1 -1
  153. package/dist/martyrs/src/modules/core/views/components/blocks/BlockSearch.vue.js.map +1 -1
  154. package/dist/martyrs/src/modules/core/views/components/blocks/BlockSlider.vue.js +132 -0
  155. package/dist/martyrs/src/modules/core/views/components/blocks/BlockSlider.vue.js.map +1 -0
  156. package/dist/martyrs/src/modules/core/views/components/blocks/CardHeader.vue.js +3 -3
  157. package/dist/martyrs/src/modules/core/views/components/blocks/CardHeader.vue.js.map +1 -1
  158. package/dist/martyrs/src/modules/core/views/components/blocks/CardStat.vue.js +6 -28
  159. package/dist/martyrs/src/modules/core/views/components/blocks/CardStat.vue.js.map +1 -1
  160. package/dist/martyrs/src/modules/{auth → core}/views/components/blocks/CardUser.vue.js +29 -11
  161. package/dist/martyrs/src/modules/{auth → core}/views/components/blocks/CardUser.vue.js.map +1 -1
  162. package/dist/martyrs/src/modules/core/views/components/blocks/HelpCard.vue.js +2 -2
  163. package/dist/martyrs/src/modules/core/views/components/blocks/HelpCard.vue.js.map +1 -1
  164. package/dist/martyrs/src/modules/core/views/components/blocks/PopupDateSelector.vue.js +42 -27
  165. package/dist/martyrs/src/modules/core/views/components/blocks/PopupDateSelector.vue.js.map +1 -1
  166. package/dist/martyrs/src/modules/core/views/components/elements/OnlineIndicator.vue.js +1 -1
  167. package/dist/martyrs/src/modules/core/views/components/layouts/App.vue.js +1 -1
  168. package/dist/martyrs/src/modules/core/views/components/layouts/Client.vue.js +4 -3
  169. package/dist/martyrs/src/modules/core/views/components/layouts/Client.vue.js.map +1 -1
  170. package/dist/martyrs/src/modules/core/views/components/pages/404.vue.js +2 -2
  171. package/dist/martyrs/src/modules/core/views/components/pages/404.vue.js.map +1 -1
  172. package/dist/martyrs/src/modules/core/views/components/partials/BottomNavigationBar.vue.js +5 -5
  173. package/dist/martyrs/src/modules/core/views/components/partials/BottomNavigationBar.vue.js.map +1 -1
  174. package/dist/martyrs/src/modules/core/views/components/partials/CitySelection.vue.js +2 -2
  175. package/dist/martyrs/src/modules/core/views/components/partials/CitySelection.vue.js.map +1 -1
  176. package/dist/martyrs/src/modules/core/views/components/partials/Footer.vue.js +2 -2
  177. package/dist/martyrs/src/modules/core/views/components/partials/Footer.vue.js.map +1 -1
  178. package/dist/martyrs/src/modules/core/views/components/partials/Header.vue.js +4 -4
  179. package/dist/martyrs/src/modules/core/views/components/partials/Header.vue.js.map +1 -1
  180. package/dist/martyrs/src/modules/core/views/components/partials/LocationSelection.vue.js +1 -1
  181. package/dist/martyrs/src/modules/core/views/components/partials/LocationSelection.vue.js.map +1 -1
  182. package/dist/martyrs/src/modules/core/views/components/partials/Navigation.vue.js +2 -2
  183. package/dist/martyrs/src/modules/core/views/components/partials/Navigation.vue.js.map +1 -1
  184. package/dist/martyrs/src/modules/core/views/components/sections/{Filters.vue.js → Filters.vue2.js} +5 -5
  185. package/dist/martyrs/src/modules/core/views/components/sections/Filters.vue2.js.map +1 -0
  186. package/dist/martyrs/src/modules/core/views/components/sections/SectionPageTitle.vue.js +3 -3
  187. package/dist/martyrs/src/modules/core/views/components/sections/SectionPageTitle.vue.js.map +1 -1
  188. package/dist/martyrs/src/modules/core/views/components/sections/Walkthrough.vue.js +7 -7
  189. package/dist/martyrs/src/modules/core/views/components/sections/Walkthrough.vue.js.map +1 -1
  190. package/dist/martyrs/src/modules/core/views/mixins/mixins.js +14 -1
  191. package/dist/martyrs/src/modules/core/views/mixins/mixins.js.map +1 -1
  192. package/dist/martyrs/src/modules/core/views/plugins/date-picker.plugin.js +8 -5
  193. package/dist/martyrs/src/modules/core/views/plugins/date-picker.plugin.js.map +1 -1
  194. package/dist/martyrs/src/modules/core/views/store/core.store.js +5 -1
  195. package/dist/martyrs/src/modules/core/views/store/core.store.js.map +1 -1
  196. package/dist/martyrs/src/modules/core/views/utils/vue-app-renderer.js +3 -0
  197. package/dist/martyrs/src/modules/core/views/utils/vue-app-renderer.js.map +1 -1
  198. package/dist/martyrs/src/modules/events/components/pages/EditEvent.vue.js +1 -1
  199. package/dist/martyrs/src/modules/events/components/pages/EditEventTickets.vue.js +9 -9
  200. package/dist/martyrs/src/modules/events/components/pages/EditEventTickets.vue.js.map +1 -1
  201. package/dist/martyrs/src/modules/events/components/pages/Event.vue.js +3 -3
  202. package/dist/martyrs/src/modules/events/components/pages/Event.vue.js.map +1 -1
  203. package/dist/martyrs/src/modules/events/components/sections/EditTickets.vue.js +1 -1
  204. package/dist/martyrs/src/modules/events/components/sections/EditTickets.vue.js.map +1 -1
  205. package/dist/martyrs/src/modules/events/components/sections/Feed.vue.js +1 -1
  206. package/dist/martyrs/src/modules/events/components/sections/List.vue.js +1 -1
  207. package/dist/martyrs/src/modules/events/components/sections/SelectDate.vue.js +1 -1
  208. package/dist/martyrs/src/modules/events/components/sections/SelectDate.vue.js.map +1 -1
  209. package/dist/martyrs/src/modules/events/events.client.js +4 -4
  210. package/dist/martyrs/src/modules/events/events.client.js.map +1 -1
  211. package/dist/martyrs/src/modules/gallery/components/sections/BackofficeGallery.vue.js +1 -1
  212. package/dist/martyrs/src/modules/gallery/components/sections/BackofficeGallery.vue.js.map +1 -1
  213. package/dist/martyrs/src/modules/gallery/router/gallery.router.js +3 -3
  214. package/dist/martyrs/src/modules/gallery/router/gallery.router.js.map +1 -1
  215. package/dist/martyrs/src/modules/governance/views/components/blocks/CardInitiativeItem.vue.js +5 -5
  216. package/dist/martyrs/src/modules/governance/views/components/blocks/CardInitiativeItem.vue.js.map +1 -1
  217. package/dist/martyrs/src/modules/governance/views/components/blocks/CardSprintItem.vue.js +6 -6
  218. package/dist/martyrs/src/modules/governance/views/components/blocks/CardSprintItem.vue.js.map +1 -1
  219. package/dist/martyrs/src/modules/governance/views/components/blocks/CardTaskItem.vue.js +4 -4
  220. package/dist/martyrs/src/modules/governance/views/components/blocks/CardTaskItem.vue.js.map +1 -1
  221. package/dist/martyrs/src/modules/governance/views/components/blocks/CardVotingItem.vue.js +5 -5
  222. package/dist/martyrs/src/modules/governance/views/components/blocks/CardVotingItem.vue.js.map +1 -1
  223. package/dist/martyrs/src/modules/governance/views/components/pages/Initiative.vue.js +2 -2
  224. package/dist/martyrs/src/modules/governance/views/components/pages/InitiativeCreate.vue.js +2 -2
  225. package/dist/martyrs/src/modules/governance/views/components/pages/InitiativeSprints.vue.js +2 -2
  226. package/dist/martyrs/src/modules/governance/views/components/pages/Initiatives.vue.js +5 -5
  227. package/dist/martyrs/src/modules/governance/views/components/pages/Initiatives.vue.js.map +1 -1
  228. package/dist/martyrs/src/modules/governance/views/components/pages/Sprint.vue.js +2 -2
  229. package/dist/martyrs/src/modules/governance/views/components/pages/SprintCreate.vue.js +2 -2
  230. package/dist/martyrs/src/modules/governance/views/components/pages/Task.vue.js +2 -2
  231. package/dist/martyrs/src/modules/governance/views/components/pages/TaskCreate.vue.js +2 -2
  232. package/dist/martyrs/src/modules/governance/views/components/pages/Tasks.vue.js +2 -2
  233. package/dist/martyrs/src/modules/governance/views/components/pages/Voting.vue.js +2 -2
  234. package/dist/martyrs/src/modules/governance/views/components/pages/VotingCreate.vue.js +2 -2
  235. package/dist/martyrs/src/modules/governance/views/components/partials/LinkedEntityCard.vue.js +2 -2
  236. package/dist/martyrs/src/modules/governance/views/components/partials/TaskStatusBadge.vue.js +1 -1
  237. package/dist/martyrs/src/modules/governance/views/components/partials/TaskStatusBadge.vue.js.map +1 -1
  238. package/dist/martyrs/src/modules/governance/views/components/partials/VotingResults.vue.js +2 -2
  239. package/dist/martyrs/src/modules/governance/views/components/sections/FormSprintDetails.vue.js +1 -1
  240. package/dist/martyrs/src/modules/governance/views/components/sections/FormSprintDetails.vue.js.map +1 -1
  241. package/dist/martyrs/src/modules/governance/views/components/sections/FormTaskDetails.vue.js +1 -1
  242. package/dist/martyrs/src/modules/governance/views/components/sections/FormTaskDetails.vue.js.map +1 -1
  243. package/dist/martyrs/src/modules/governance/views/router/governance.router.js +3 -3
  244. package/dist/martyrs/src/modules/governance/views/router/governance.router.js.map +1 -1
  245. package/dist/martyrs/src/modules/icons/components/IconSearchPopup.vue.js +2 -2
  246. package/dist/martyrs/src/modules/icons/components/IconSearchPopup.vue.js.map +1 -1
  247. package/dist/martyrs/src/modules/icons/entities/IconApplications.vue.js +32 -0
  248. package/dist/martyrs/src/modules/icons/entities/IconApplications.vue.js.map +1 -0
  249. package/dist/martyrs/src/modules/icons/entities/IconCustomers.vue.js +32 -0
  250. package/dist/martyrs/src/modules/icons/entities/IconCustomers.vue.js.map +1 -0
  251. package/dist/martyrs/src/modules/icons/entities/IconUsers.vue.js +32 -0
  252. package/dist/martyrs/src/modules/icons/entities/IconUsers.vue.js.map +1 -0
  253. package/dist/martyrs/src/modules/inventory/components/forms/AdjustmentForm.vue.js +2 -2
  254. package/dist/martyrs/src/modules/inventory/components/forms/AdjustmentForm.vue.js.map +1 -1
  255. package/dist/martyrs/src/modules/inventory/components/forms/ColumnSettingsMenu.vue.js +2 -2
  256. package/dist/martyrs/src/modules/inventory/components/forms/ColumnSettingsMenu.vue.js.map +1 -1
  257. package/dist/martyrs/src/modules/inventory/components/forms/HistoryView.vue.js +1 -1
  258. package/dist/martyrs/src/modules/inventory/components/forms/HistoryView.vue.js.map +1 -1
  259. package/dist/martyrs/src/modules/inventory/components/forms/StockAlertsForm.vue.js +3 -3
  260. package/dist/martyrs/src/modules/inventory/components/forms/StockAlertsForm.vue.js.map +1 -1
  261. package/dist/martyrs/src/modules/inventory/components/pages/Inventory.vue.js +290 -173
  262. package/dist/martyrs/src/modules/inventory/components/pages/Inventory.vue.js.map +1 -1
  263. package/dist/martyrs/src/modules/inventory/components/pages/InventoryEdit.vue.js +1 -1
  264. package/dist/martyrs/src/modules/inventory/components/pages/InventoryEdit.vue.js.map +1 -1
  265. package/dist/martyrs/src/modules/inventory/inventory.client.js +4 -4
  266. package/dist/martyrs/src/modules/inventory/inventory.client.js.map +1 -1
  267. package/dist/martyrs/src/modules/inventory/router/inventory.router.js +15 -0
  268. package/dist/martyrs/src/modules/inventory/router/inventory.router.js.map +1 -1
  269. package/dist/martyrs/src/modules/landing/components/sections/SectionEarn.vue.js +4 -4
  270. package/dist/martyrs/src/modules/landing/components/sections/SectionEarn.vue.js.map +1 -1
  271. package/dist/martyrs/src/modules/landing/components/sections/SectionFeatures.vue.js +1 -1
  272. package/dist/martyrs/src/modules/landing/components/sections/SectionFeatures.vue.js.map +1 -1
  273. package/dist/martyrs/src/modules/landing/components/sections/SectionFeaturesImages.vue.js +3 -3
  274. package/dist/martyrs/src/modules/landing/components/sections/SectionFeaturesImages.vue.js.map +1 -1
  275. package/dist/martyrs/src/modules/landing/components/sections/SectionGuide.vue.js +2 -2
  276. package/dist/martyrs/src/modules/landing/components/sections/SectionGuide.vue.js.map +1 -1
  277. package/dist/martyrs/src/modules/landing/components/sections/SectionHeroToken.vue.js +1 -1
  278. package/dist/martyrs/src/modules/landing/components/sections/SectionHeroToken.vue.js.map +1 -1
  279. package/dist/martyrs/src/modules/landing/components/sections/SectionMobileApp.vue.js +2 -2
  280. package/dist/martyrs/src/modules/landing/components/sections/SectionMobileApp.vue.js.map +1 -1
  281. package/dist/martyrs/src/modules/landing/components/sections/SectionOverview.vue.js +1 -1
  282. package/dist/martyrs/src/modules/landing/components/sections/SectionOverview.vue.js.map +1 -1
  283. package/dist/martyrs/src/modules/landing/components/sections/SectionRoadmap.vue.js +2 -2
  284. package/dist/martyrs/src/modules/landing/components/sections/SectionRoadmap.vue.js.map +1 -1
  285. package/dist/martyrs/src/modules/landing/components/sections/SubscribeNewsletter.vue.js +1 -1
  286. package/dist/martyrs/src/modules/landing/components/sections/SubscribeNewsletter.vue.js.map +1 -1
  287. package/dist/martyrs/src/modules/marketplace/views/components/pages/Marketplace.vue.js +1 -1
  288. package/dist/martyrs/src/modules/marketplace/views/components/sections/SectionMenu.vue.js +4 -4
  289. package/dist/martyrs/src/modules/marketplace/views/components/sections/SectionMenu.vue.js.map +1 -1
  290. package/dist/martyrs/src/modules/music/components/cards/AlbumCard.vue.js +2 -2
  291. package/dist/martyrs/src/modules/music/components/cards/AlbumCard.vue.js.map +1 -1
  292. package/dist/martyrs/src/modules/music/components/cards/ArtistCard.vue.js +2 -2
  293. package/dist/martyrs/src/modules/music/components/cards/ArtistCard.vue.js.map +1 -1
  294. package/dist/martyrs/src/modules/music/components/cards/ArtistCardSmall.vue.js +2 -2
  295. package/dist/martyrs/src/modules/music/components/cards/ArtistCardSmall.vue.js.map +1 -1
  296. package/dist/martyrs/src/modules/music/components/cards/PlaylistCard.vue.js +2 -2
  297. package/dist/martyrs/src/modules/music/components/cards/PlaylistCard.vue.js.map +1 -1
  298. package/dist/martyrs/src/modules/music/components/cards/TrackListCard.vue.js +6 -6
  299. package/dist/martyrs/src/modules/music/components/cards/TrackListCard.vue.js.map +1 -1
  300. package/dist/martyrs/src/modules/music/components/forms/AlbumForm.vue.js +2 -2
  301. package/dist/martyrs/src/modules/music/components/forms/AlbumForm.vue.js.map +1 -1
  302. package/dist/martyrs/src/modules/music/components/forms/ArtistForm.vue.js +2 -2
  303. package/dist/martyrs/src/modules/music/components/forms/ArtistForm.vue.js.map +1 -1
  304. package/dist/martyrs/src/modules/music/components/forms/PlaylistForm.vue.js +5 -5
  305. package/dist/martyrs/src/modules/music/components/forms/PlaylistForm.vue.js.map +1 -1
  306. package/dist/martyrs/src/modules/music/components/forms/TrackForm.vue.js +3 -3
  307. package/dist/martyrs/src/modules/music/components/forms/TrackForm.vue.js.map +1 -1
  308. package/dist/martyrs/src/modules/music/components/pages/Album.vue.js +9 -9
  309. package/dist/martyrs/src/modules/music/components/pages/Album.vue.js.map +1 -1
  310. package/dist/martyrs/src/modules/music/components/pages/Artist.vue.js +6 -6
  311. package/dist/martyrs/src/modules/music/components/pages/Artist.vue.js.map +1 -1
  312. package/dist/martyrs/src/modules/music/components/pages/Playlist.vue.js +12 -12
  313. package/dist/martyrs/src/modules/music/components/pages/Playlist.vue.js.map +1 -1
  314. package/dist/martyrs/src/modules/music/components/pages/SearchResults.vue.js +4 -4
  315. package/dist/martyrs/src/modules/music/components/pages/SearchResults.vue.js.map +1 -1
  316. package/dist/martyrs/src/modules/music/components/pages/Track.vue.js +12 -12
  317. package/dist/martyrs/src/modules/music/components/pages/Track.vue.js.map +1 -1
  318. package/dist/martyrs/src/modules/music/components/player/FullscreenPlayer.vue.js +4 -4
  319. package/dist/martyrs/src/modules/music/components/player/FullscreenPlayer.vue.js.map +1 -1
  320. package/dist/martyrs/src/modules/music/components/player/TrackProgress.vue.js +2 -2
  321. package/dist/martyrs/src/modules/music/components/player/TrackProgress.vue.js.map +1 -1
  322. package/dist/martyrs/src/modules/notifications/components/sections/NotificationPreferences.vue.js +163 -69
  323. package/dist/martyrs/src/modules/notifications/components/sections/NotificationPreferences.vue.js.map +1 -1
  324. package/dist/martyrs/src/modules/notifications/notifications.client.js +183 -19
  325. package/dist/martyrs/src/modules/notifications/notifications.client.js.map +1 -1
  326. package/dist/martyrs/src/modules/notifications/router/notifications.backoffice.router.js +21 -0
  327. package/dist/martyrs/src/modules/notifications/router/notifications.backoffice.router.js.map +1 -0
  328. package/dist/martyrs/src/modules/notifications/router/notifications.router.js +13 -42
  329. package/dist/martyrs/src/modules/notifications/router/notifications.router.js.map +1 -1
  330. package/dist/martyrs/src/modules/notifications/store/notifications.store.js +67 -2
  331. package/dist/martyrs/src/modules/notifications/store/notifications.store.js.map +1 -1
  332. package/dist/martyrs/src/modules/orders/components/blocks/CardApplication.vue.js +9 -7
  333. package/dist/martyrs/src/modules/orders/components/blocks/CardApplication.vue.js.map +1 -1
  334. package/dist/martyrs/src/modules/orders/components/blocks/CardCustomer.vue.js +11 -9
  335. package/dist/martyrs/src/modules/orders/components/blocks/CardCustomer.vue.js.map +1 -1
  336. package/dist/martyrs/src/modules/orders/components/blocks/CardOrder.vue.js +9 -9
  337. package/dist/martyrs/src/modules/orders/components/blocks/CardOrder.vue.js.map +1 -1
  338. package/dist/martyrs/src/modules/orders/components/blocks/CardOrderBackoffice.vue.js +66 -19
  339. package/dist/martyrs/src/modules/orders/components/blocks/CardOrderBackoffice.vue.js.map +1 -1
  340. package/dist/martyrs/src/modules/orders/components/blocks/CardOrderItem.vue.js +29 -27
  341. package/dist/martyrs/src/modules/orders/components/blocks/CardOrderItem.vue.js.map +1 -1
  342. package/dist/martyrs/src/modules/orders/components/blocks/CardOrderUser.vue.js +7 -12
  343. package/dist/martyrs/src/modules/orders/components/blocks/CardOrderUser.vue.js.map +1 -1
  344. package/dist/martyrs/src/modules/orders/components/elements/FieldSubscribeNewsletter.vue.js +1 -1
  345. package/dist/martyrs/src/modules/orders/components/elements/FieldSubscribeNewsletter.vue.js.map +1 -1
  346. package/dist/martyrs/src/modules/orders/components/elements/PriceTotal.vue.js +4 -4
  347. package/dist/martyrs/src/modules/orders/components/elements/PriceTotal.vue.js.map +1 -1
  348. package/dist/martyrs/src/modules/orders/components/forms/FormApplicationDetails.vue.js +1 -1
  349. package/dist/martyrs/src/modules/orders/components/forms/FormApplicationDetails.vue.js.map +1 -1
  350. package/dist/martyrs/src/modules/orders/components/forms/FormSelectCustomer.vue.js +46 -25
  351. package/dist/martyrs/src/modules/orders/components/forms/FormSelectCustomer.vue.js.map +1 -1
  352. package/dist/martyrs/src/modules/orders/components/pages/Applications.vue.js +2 -2
  353. package/dist/martyrs/src/modules/orders/components/pages/Applications.vue.js.map +1 -1
  354. package/dist/martyrs/src/modules/orders/components/pages/Customers.vue.js +54 -38
  355. package/dist/martyrs/src/modules/orders/components/pages/Customers.vue.js.map +1 -1
  356. package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.js +454 -139
  357. package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.js.map +1 -1
  358. package/dist/martyrs/src/modules/orders/components/pages/OrderCreate.vue.js +2 -1
  359. package/dist/martyrs/src/modules/orders/components/pages/OrderCreate.vue.js.map +1 -1
  360. package/dist/martyrs/src/modules/orders/components/pages/OrderCreateBackoffice.vue.js +141 -68
  361. package/dist/martyrs/src/modules/orders/components/pages/OrderCreateBackoffice.vue.js.map +1 -1
  362. package/dist/martyrs/src/modules/orders/components/pages/Orders.vue.js +38 -32
  363. package/dist/martyrs/src/modules/orders/components/pages/Orders.vue.js.map +1 -1
  364. package/dist/martyrs/src/modules/orders/components/partials/ShopCart.vue.js +1 -1
  365. package/dist/martyrs/src/modules/orders/components/partials/ShopCart.vue.js.map +1 -1
  366. package/dist/martyrs/src/modules/orders/components/sections/ApplicationDetails.vue.js +4 -4
  367. package/dist/martyrs/src/modules/orders/components/sections/ApplicationDetails.vue.js.map +1 -1
  368. package/dist/martyrs/src/modules/orders/components/sections/AskToLogin.vue.js +1 -1
  369. package/dist/martyrs/src/modules/orders/components/sections/AskToLogin.vue.js.map +1 -1
  370. package/dist/martyrs/src/modules/orders/components/sections/CustomerDetails.vue.js +167 -95
  371. package/dist/martyrs/src/modules/orders/components/sections/CustomerDetails.vue.js.map +1 -1
  372. package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.js +2 -2
  373. package/dist/martyrs/src/modules/orders/orders.client.js +22 -20
  374. package/dist/martyrs/src/modules/orders/orders.client.js.map +1 -1
  375. package/dist/martyrs/src/modules/orders/store/orders.js +3 -5
  376. package/dist/martyrs/src/modules/orders/store/orders.js.map +1 -1
  377. package/dist/martyrs/src/modules/orders/store/shopcart.js +6 -6
  378. package/dist/martyrs/src/modules/orders/store/shopcart.js.map +1 -1
  379. package/dist/martyrs/src/modules/orders/utils/rent-price.js +60 -0
  380. package/dist/martyrs/src/modules/orders/utils/rent-price.js.map +1 -0
  381. package/dist/martyrs/src/modules/organizations/components/blocks/CardDepartment.vue.js +2 -2
  382. package/dist/martyrs/src/modules/organizations/components/blocks/CardOrganization.vue.js +45 -55
  383. package/dist/martyrs/src/modules/organizations/components/blocks/CardOrganization.vue.js.map +1 -1
  384. package/dist/martyrs/src/modules/organizations/components/blocks/EmptyState.vue.js +1 -1
  385. package/dist/martyrs/src/modules/organizations/components/blocks/Rating.vue.js +1 -1
  386. package/dist/martyrs/src/modules/organizations/components/blocks/Socials.vue.js +2 -2
  387. package/dist/martyrs/src/modules/organizations/components/blocks/Socials.vue.js.map +1 -1
  388. package/dist/martyrs/src/modules/organizations/components/elements/ButtonToggleMembership.vue.js +1 -1
  389. package/dist/martyrs/src/modules/organizations/components/elements/ButtonToggleMembership.vue.js.map +1 -1
  390. package/dist/martyrs/src/modules/organizations/components/forms/AddExistingMembersForm.vue.js +3 -3
  391. package/dist/martyrs/src/modules/organizations/components/forms/AddExistingMembersForm.vue.js.map +1 -1
  392. package/dist/martyrs/src/modules/organizations/components/forms/DepartmentForm.vue.js +1 -1
  393. package/dist/martyrs/src/modules/organizations/components/forms/DepartmentForm.vue.js.map +1 -1
  394. package/dist/martyrs/src/modules/organizations/components/forms/InviteForm.vue.js +1 -1
  395. package/dist/martyrs/src/modules/organizations/components/forms/InviteForm.vue.js.map +1 -1
  396. package/dist/martyrs/src/modules/organizations/components/pages/Department.vue.js +2 -2
  397. package/dist/martyrs/src/modules/organizations/components/pages/Department.vue.js.map +1 -1
  398. package/dist/martyrs/src/modules/organizations/components/pages/Members.vue.js +8 -8
  399. package/dist/martyrs/src/modules/organizations/components/pages/Members.vue.js.map +1 -1
  400. package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.js +216 -83
  401. package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.js.map +1 -1
  402. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.js +38 -28
  403. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.js.map +1 -1
  404. package/dist/martyrs/src/modules/organizations/components/pages/Organizations.vue.js +3 -2
  405. package/dist/martyrs/src/modules/organizations/components/pages/Organizations.vue.js.map +1 -1
  406. package/dist/martyrs/src/modules/organizations/components/sections/Documents.vue.js +2 -2
  407. package/dist/martyrs/src/modules/organizations/components/sections/Documents.vue.js.map +1 -1
  408. package/dist/martyrs/src/modules/organizations/components/sections/MembersAdd.vue.js +2 -2
  409. package/dist/martyrs/src/modules/organizations/components/sections/MembersAdd.vue.js.map +1 -1
  410. package/dist/martyrs/src/modules/organizations/components/sections/Organizations.vue.js +1 -1
  411. package/dist/martyrs/src/modules/organizations/configs/navigation.organization.config.js +20 -18
  412. package/dist/martyrs/src/modules/organizations/configs/navigation.organization.config.js.map +1 -1
  413. package/dist/martyrs/src/modules/organizations/organizations.client.js +39 -33
  414. package/dist/martyrs/src/modules/organizations/organizations.client.js.map +1 -1
  415. package/dist/martyrs/src/modules/organizations/router/organizations.backoffice.router.js +81 -0
  416. package/dist/martyrs/src/modules/organizations/router/organizations.backoffice.router.js.map +1 -1
  417. package/dist/martyrs/src/modules/pages/views/components/pages/PageEdit.vue.js +1 -1
  418. package/dist/martyrs/src/modules/pages/views/components/pages/Pages.vue.js +1 -1
  419. package/dist/martyrs/src/modules/pages/views/components/pages/Pages.vue.js.map +1 -1
  420. package/dist/martyrs/src/modules/pages/views/router/pages.router.js +2 -2
  421. package/dist/martyrs/src/modules/pages/views/router/pages.router.js.map +1 -1
  422. package/dist/martyrs/src/modules/products/components/blocks/CardPosition.vue.js +1 -1
  423. package/dist/martyrs/src/modules/products/components/blocks/CardPosition.vue.js.map +1 -1
  424. package/dist/martyrs/src/modules/products/components/blocks/CardProduct.vue.js +2 -2
  425. package/dist/martyrs/src/modules/products/components/blocks/CardProduct.vue.js.map +1 -1
  426. package/dist/martyrs/src/modules/products/components/blocks/ProductDiscounts.vue.js +3 -3
  427. package/dist/martyrs/src/modules/products/components/blocks/ProductDiscounts.vue.js.map +1 -1
  428. package/dist/martyrs/src/modules/products/components/blocks/ProductImages.vue.js +2 -2
  429. package/dist/martyrs/src/modules/products/components/blocks/ProductImages.vue.js.map +1 -1
  430. package/dist/martyrs/src/modules/products/components/blocks/ProductVariants.vue.js +3 -3
  431. package/dist/martyrs/src/modules/products/components/blocks/ProductVariants.vue.js.map +1 -1
  432. package/dist/martyrs/src/modules/products/components/elements/Image360.vue.js +1 -1
  433. package/dist/martyrs/src/modules/products/components/elements/Price.vue.js +2 -2
  434. package/dist/martyrs/src/modules/products/components/elements/Price.vue.js.map +1 -1
  435. package/dist/martyrs/src/modules/products/components/pages/Categories.vue.js +9 -25
  436. package/dist/martyrs/src/modules/products/components/pages/Categories.vue.js.map +1 -1
  437. package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.js +2 -2
  438. package/dist/martyrs/src/modules/products/components/pages/Product.vue.js +1 -1
  439. package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.js +34 -17
  440. package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.js.map +1 -1
  441. package/dist/martyrs/src/modules/products/components/pages/Products.vue.js +98 -98
  442. package/dist/martyrs/src/modules/products/components/pages/Products.vue.js.map +1 -1
  443. package/dist/martyrs/src/modules/products/components/sections/EditAttributes.vue.js +1 -1
  444. package/dist/martyrs/src/modules/products/components/sections/EditAttributes.vue.js.map +1 -1
  445. package/dist/martyrs/src/modules/products/components/sections/EditDiscounts.vue.js +2 -2
  446. package/dist/martyrs/src/modules/products/components/sections/EditDiscounts.vue.js.map +1 -1
  447. package/dist/martyrs/src/modules/products/components/sections/EditVariants.vue.js +22 -9
  448. package/dist/martyrs/src/modules/products/components/sections/EditVariants.vue.js.map +1 -1
  449. package/dist/martyrs/src/modules/products/components/sections/FilterProducts.vue.js +1 -1
  450. package/dist/martyrs/src/modules/products/components/sections/FilterProducts.vue.js.map +1 -1
  451. package/dist/martyrs/src/modules/products/components/sections/ProductConfigurator.vue.js +1 -1
  452. package/dist/martyrs/src/modules/products/components/sections/ProductConfigurator.vue.js.map +1 -1
  453. package/dist/martyrs/src/modules/products/components/sections/SectionProduct.vue.js +4 -4
  454. package/dist/martyrs/src/modules/products/components/sections/SectionProduct.vue.js.map +1 -1
  455. package/dist/martyrs/src/modules/products/router/categories.router.js +2 -2
  456. package/dist/martyrs/src/modules/products/router/categories.router.js.map +1 -1
  457. package/dist/martyrs/src/modules/products/router/products.router.js +17 -3
  458. package/dist/martyrs/src/modules/products/router/products.router.js.map +1 -1
  459. package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttBar.vue.js +11 -10
  460. package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttBar.vue.js.map +1 -1
  461. package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttChart.vue.js +197 -81
  462. package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttChart.vue.js.map +1 -1
  463. package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttHeaderCell.vue.js +2 -2
  464. package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttHeaderCell.vue.js.map +1 -1
  465. package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttToolbar.vue.js +3 -3
  466. package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttToolbar.vue.js.map +1 -1
  467. package/dist/martyrs/src/modules/rents/views/components/pages/Rents.vue.js +685 -80
  468. package/dist/martyrs/src/modules/rents/views/components/pages/Rents.vue.js.map +1 -1
  469. package/dist/martyrs/src/modules/rents/views/components/pages/RentsEdit.vue.js +68 -18
  470. package/dist/martyrs/src/modules/rents/views/components/pages/RentsEdit.vue.js.map +1 -1
  471. package/dist/martyrs/src/modules/rents/views/router/rents.router.js +3 -3
  472. package/dist/martyrs/src/modules/rents/views/router/rents.router.js.map +1 -1
  473. package/dist/martyrs/src/modules/rents/views/store/rents.store.js +1 -1
  474. package/dist/martyrs/src/modules/rents/views/store/rents.store.js.map +1 -1
  475. package/dist/martyrs/src/modules/reports/components/pages/BackofficeReports.vue.js +3 -3
  476. package/dist/martyrs/src/modules/reports/components/pages/BackofficeReports.vue.js.map +1 -1
  477. package/dist/martyrs/src/modules/reports/router/reports.router.js +1 -1
  478. package/dist/martyrs/src/modules/reports/router/reports.router.js.map +1 -1
  479. package/dist/martyrs/src/modules/spots/components/blocks/CardSpot.vue.js +5 -5
  480. package/dist/martyrs/src/modules/spots/components/blocks/CardSpot.vue.js.map +1 -1
  481. package/dist/martyrs/src/modules/spots/components/pages/Map.vue.js +1 -1
  482. package/dist/martyrs/src/modules/spots/components/pages/Spot.vue.js +3 -3
  483. package/dist/martyrs/src/modules/spots/components/pages/Spot.vue.js.map +1 -1
  484. package/dist/martyrs/src/modules/spots/components/pages/SpotEdit.vue.js +10 -8
  485. package/dist/martyrs/src/modules/spots/components/pages/SpotEdit.vue.js.map +1 -1
  486. package/dist/martyrs/src/modules/spots/components/pages/Spots.vue.js +29 -37
  487. package/dist/martyrs/src/modules/spots/components/pages/Spots.vue.js.map +1 -1
  488. package/dist/martyrs/src/modules/spots/components/sections/WorktimeEdit.vue.js +8 -8
  489. package/dist/martyrs/src/modules/spots/components/sections/WorktimeEdit.vue.js.map +1 -1
  490. package/dist/martyrs/src/modules/spots/router/spots.router.js +3 -3
  491. package/dist/martyrs/src/modules/spots/router/spots.router.js.map +1 -1
  492. package/dist/martyrs/src/modules/wallet/views/components/elements/ConnectMetamask.vue.js +3 -3
  493. package/dist/martyrs/src/modules/wallet/views/components/elements/ConnectMetamask.vue.js.map +1 -1
  494. package/dist/martyrs/src/modules/wallet/views/components/pages/Payments.vue.js +1 -1
  495. package/dist/martyrs/src/modules/wallet/views/components/pages/Payments.vue.js.map +1 -1
  496. package/dist/martyrs/src/modules/wallet/views/router/wallet.router.js +1 -1
  497. package/dist/martyrs/src/modules/wallet/views/router/wallet.router.js.map +1 -1
  498. package/dist/martyrs.es10.js +59 -57
  499. package/dist/martyrs.es101.js +39 -0
  500. package/dist/martyrs.es102.js +24 -32
  501. package/dist/martyrs.es104.js +27 -0
  502. package/dist/martyrs.es105.js +6 -25
  503. package/dist/martyrs.es106.js +6 -5
  504. package/dist/martyrs.es107.js +76 -6
  505. package/dist/martyrs.es108.js +5 -77
  506. package/dist/martyrs.es109.js +119 -5
  507. package/dist/martyrs.es11.js +31 -30
  508. package/dist/martyrs.es112.js +2 -119
  509. package/dist/martyrs.es113.js +25 -0
  510. package/dist/martyrs.es114.js +7 -0
  511. package/dist/martyrs.es115.js +8 -2
  512. package/dist/martyrs.es116.js +166 -22
  513. package/dist/martyrs.es117.js +457 -4
  514. package/dist/martyrs.es118.js +40 -8
  515. package/dist/martyrs.es119.js +9 -166
  516. package/dist/martyrs.es12.js +8 -9
  517. package/dist/martyrs.es120.js +43 -451
  518. package/dist/martyrs.es121.js +10 -38
  519. package/dist/martyrs.es122.js +44 -9
  520. package/dist/martyrs.es123.js +4 -49
  521. package/dist/martyrs.es124.js +127 -10
  522. package/dist/martyrs.es125.js +98 -42
  523. package/dist/martyrs.es126.js +86 -4
  524. package/dist/martyrs.es127.js +29 -120
  525. package/dist/martyrs.es128.js +10 -99
  526. package/dist/martyrs.es129.js +24 -71
  527. package/dist/martyrs.es13.js +22 -19
  528. package/dist/martyrs.es130.js +8 -37
  529. package/dist/martyrs.es131.js +115 -10
  530. package/dist/martyrs.es132.js +16 -38
  531. package/dist/martyrs.es133.js +15 -8
  532. package/dist/martyrs.es135.js +28 -112
  533. package/dist/martyrs.es136.js +9 -17
  534. package/dist/martyrs.es137.js +19 -14
  535. package/dist/martyrs.es138.js +8 -32
  536. package/dist/martyrs.es139.js +9 -9
  537. package/dist/martyrs.es14.js +2 -2
  538. package/dist/martyrs.es140.js +43 -19
  539. package/dist/martyrs.es141.js +480 -9
  540. package/dist/martyrs.es142.js +5 -8
  541. package/dist/martyrs.es143.js +2 -45
  542. package/dist/martyrs.es144.js +11 -480
  543. package/dist/martyrs.es145.js +30 -5
  544. package/dist/martyrs.es146.js +17 -2
  545. package/dist/martyrs.es147.js +19 -11
  546. package/dist/martyrs.es148.js +27 -29
  547. package/dist/martyrs.es149.js +20 -16
  548. package/dist/martyrs.es2.js +31 -30
  549. package/dist/martyrs.es22.js +16 -16
  550. package/dist/martyrs.es23.js +8 -8
  551. package/dist/martyrs.es24.js +9 -9
  552. package/dist/martyrs.es26.js +9 -11
  553. package/dist/martyrs.es27.js +9 -9
  554. package/dist/martyrs.es28.js +1 -1
  555. package/dist/martyrs.es29.js +5 -5
  556. package/dist/martyrs.es3.js +1 -1
  557. package/dist/martyrs.es38.js +1 -1
  558. package/dist/martyrs.es4.js +12 -12
  559. package/dist/martyrs.es41.js +34 -224
  560. package/dist/martyrs.es5.js +251 -238
  561. package/dist/martyrs.es54.js +2 -2
  562. package/dist/martyrs.es61.js +33 -26
  563. package/dist/martyrs.es71.js +2 -2
  564. package/dist/martyrs.es74.js +8 -8
  565. package/dist/martyrs.es75.js +1 -1
  566. package/dist/martyrs.es76.js +18 -18
  567. package/dist/martyrs.es77.js +1 -1
  568. package/dist/martyrs.es78.js +1 -1
  569. package/dist/martyrs.es8.js +31 -31
  570. package/dist/martyrs.es91.js +1 -1
  571. package/dist/martyrs.es92.js +33 -5
  572. package/dist/martyrs.es94.js +41 -0
  573. package/dist/martyrs.es95.js +46 -28
  574. package/dist/martyrs.es96.js +116 -52
  575. package/dist/martyrs.es97.js +33 -113
  576. package/dist/martyrs.es98.js +76 -33
  577. package/dist/martyrs.es99.js +24 -77
  578. package/dist/music.server.js +3 -3
  579. package/dist/node_modules/.pnpm/@capacitor-mlkit_barcode-scanning@7.3.0_@capacitor_core@7.4.4/node_modules/@capacitor-mlkit/barcode-scanning/dist/esm/index.js +1 -1
  580. package/dist/node_modules/.pnpm/@capacitor-mlkit_barcode-scanning@7.3.0_@capacitor_core@7.4.4/node_modules/@capacitor-mlkit/barcode-scanning/dist/esm/web.js +1 -1
  581. package/dist/node_modules/.pnpm/@googlemaps_js-api-loader@2.0.2/node_modules/@googlemaps/js-api-loader/dist/index.js +90 -0
  582. package/dist/node_modules/.pnpm/@googlemaps_js-api-loader@2.0.2/node_modules/@googlemaps/js-api-loader/dist/index.js.map +1 -0
  583. package/dist/node_modules/.pnpm/capacitor-plugin-app-tracking-transparency@2.0.5_@capacitor_core@7.4.4/node_modules/capacitor-plugin-app-tracking-transparency/dist/esm/index.js +1 -1
  584. package/dist/node_modules/.pnpm/capacitor-plugin-app-tracking-transparency@2.0.5_@capacitor_core@7.4.4/node_modules/capacitor-plugin-app-tracking-transparency/dist/esm/web.js +1 -1
  585. package/dist/notifications.server.js +255 -23
  586. package/dist/orders.server.js +674 -136
  587. package/dist/organizations.server.js +11 -6
  588. package/dist/products.server.js +68 -7
  589. package/dist/{queryProcessor-C_5Iipam.js → queryProcessor-B2FCngFP.js} +3 -2
  590. package/dist/rents.server.js +183 -7
  591. package/dist/{socials.schema-DxnnaBgO.js → socials.schema-C3RjkqJv.js} +4 -0
  592. package/dist/spots.server.js +1 -1
  593. package/dist/style.css +292 -204
  594. package/dist/{tickets.controller-DdF85W-i.js → tickets.controller-Dpzf4kQx.js} +1 -1
  595. package/dist/wallet.server.js +2 -2
  596. package/package.json +5 -3
  597. package/src/builder/modes/ssr.rspack.dev.js +2 -0
  598. package/src/builder/rspack/rspack.config.ssr.client.js +58 -1
  599. package/src/builder/ssr/asset-resolver.js +1 -1
  600. package/src/builder/templates/page.js +2 -0
  601. package/src/components/Address/Address.vue +16 -16
  602. package/src/components/Button/Button.vue +0 -1
  603. package/src/components/ButtonSegmented/ButtonSegmented.vue +1 -1
  604. package/src/components/Calendar/Calendar.vue +141 -118
  605. package/src/components/Chart/Chart.vue +216 -0
  606. package/src/components/Checkbox/Checkbox.vue +1 -1
  607. package/src/components/Chips/Chips.vue +4 -5
  608. package/src/components/Countdown/Countdown.vue +5 -5
  609. package/src/components/DatePicker/DatePicker.vue +2 -2
  610. package/src/components/EditImages/EditImages.vue +3 -3
  611. package/src/components/EmptyState/EmptyState.vue +1 -1
  612. package/src/components/Feed/Feed.vue +5 -0
  613. package/src/components/Field/Field.vue +3 -3
  614. package/src/components/FieldDate/FieldDate.vue +2 -2
  615. package/src/components/LocationMarker/LocationMarker.vue +28 -21
  616. package/src/components/Map/Map.vue +20 -15
  617. package/src/components/Popup/Popup.vue +3 -3
  618. package/src/components/Radio/Radio.vue +2 -2
  619. package/src/components/Select/Select.vue +1 -1
  620. package/src/components/Status/Snack.vue +1 -1
  621. package/src/components/Status/Status.vue +1 -1
  622. package/src/components/Table/Table.vue +16 -1
  623. package/src/components/Upload/Upload.vue +1 -1
  624. package/src/components/UploadImage/UploadImage.vue +1 -1
  625. package/src/components/UploadImageMultiple/UploadImageMultiple.vue +1 -1
  626. package/src/jit/rules.js +4 -0
  627. package/src/modules/TASKS.MD +16 -3
  628. package/src/modules/auth/auth.client.js +18 -3
  629. package/src/modules/auth/controllers/routes/users.routes.js +18 -0
  630. package/src/modules/auth/controllers/services/auth.service.js +3 -3
  631. package/src/modules/auth/controllers/services/users.service.js +34 -5
  632. package/src/modules/auth/views/components/blocks/OtpDialog.vue +4 -4
  633. package/src/modules/auth/views/components/blocks/PopupAuth.vue +1 -1
  634. package/src/modules/auth/views/components/blocks/SidebarUserCard.vue +95 -0
  635. package/src/modules/auth/views/components/pages/BackofficeUsers.vue +337 -0
  636. package/src/modules/auth/views/components/pages/Invite.vue +1 -1
  637. package/src/modules/auth/views/components/pages/Profile.vue +1 -1
  638. package/src/modules/auth/views/components/pages/ProfileEdit.vue +23 -14
  639. package/src/modules/auth/views/components/pages/ProfileEditAccount.vue +45 -26
  640. package/src/modules/auth/views/components/pages/ProfileEditSidebar.vue +8 -7
  641. package/src/modules/auth/views/components/pages/ResetPassword.vue +4 -4
  642. package/src/modules/auth/views/components/pages/SignUp.vue +3 -3
  643. package/src/modules/auth/views/components/pages/UserDashboard.vue +8 -5
  644. package/src/modules/auth/views/components/sections/FeaturedUsers.vue +1 -1
  645. package/src/modules/auth/views/components/sections/SliderFeatures.vue +1 -1
  646. package/src/modules/auth/views/middlewares/auth.validation.js +7 -2
  647. package/src/modules/auth/views/router/users.backoffice.router.js +39 -0
  648. package/src/modules/auth/views/store/auth.js +2 -2
  649. package/src/modules/backoffice/components/admin/Backcalls.vue +2 -2
  650. package/src/modules/backoffice/components/admin/Dashboard.sublime-workspace +1 -1
  651. package/src/modules/backoffice/components/admin/FastOrders.vue +3 -3
  652. package/src/modules/backoffice/components/admin/UserEdit.vue +1 -1
  653. package/src/modules/backoffice/components/pages/Dashboard.vue +102 -139
  654. package/src/modules/backoffice/configs/navigation.backoffice.config.js +91 -29
  655. package/src/modules/backoffice/router/backoffice.router.js +7 -1
  656. package/src/modules/chats/components/blocks/ChatMessage.vue +1 -1
  657. package/src/modules/chats/components/sections/ChatWindow.vue +1 -1
  658. package/src/modules/community/community.client.js +4 -4
  659. package/src/modules/community/components/blocks/CardBlogpost.vue +1 -1
  660. package/src/modules/community/components/layouts/Community.vue +4 -4
  661. package/src/modules/community/components/sections/Comment.vue +1 -1
  662. package/src/modules/constructor/components/elements/ImageUpload.vue +1 -1
  663. package/src/modules/core/TASK.MD +2 -2
  664. package/src/modules/core/controllers/classes/abac/abac.core.js +1 -0
  665. package/src/modules/core/controllers/classes/core.websocket.js +0 -2
  666. package/src/modules/core/controllers/classes/crud/crud.core.js +6 -0
  667. package/src/modules/core/controllers/classes/crud/crud.service.js +6 -0
  668. package/src/modules/core/controllers/utils/mailing.js +35 -26
  669. package/src/modules/core/controllers/utils/queryProcessor.js +4 -2
  670. package/src/modules/core/core.client.js +1 -0
  671. package/src/modules/core/models/schemas/embedding.schema.js +8 -0
  672. package/src/modules/core/models/schemas/socials.schema.js +4 -0
  673. package/src/modules/core/sw.js +448 -0
  674. package/src/modules/core/views/classes/core.app.js +37 -13
  675. package/src/modules/core/views/classes/module.manager.js +3 -1
  676. package/src/modules/core/views/components/blocks/AlertDialog.vue +1 -1
  677. package/src/modules/core/views/components/blocks/BlockSearch.vue +1 -1
  678. package/src/modules/core/views/components/blocks/BlockSlider.vue +96 -0
  679. package/src/modules/core/views/components/blocks/CardHeader.vue +2 -2
  680. package/src/modules/core/views/components/blocks/CardStat.vue +4 -18
  681. package/src/modules/{auth → core}/views/components/blocks/CardUser.vue +45 -20
  682. package/src/modules/core/views/components/blocks/HelpCard.vue +1 -1
  683. package/src/modules/core/views/components/blocks/PopupAuth.vue +1 -1
  684. package/src/modules/core/views/components/blocks/PopupDateSelector.vue +41 -24
  685. package/src/modules/core/views/components/layouts/Client.vue +1 -1
  686. package/src/modules/core/views/components/pages/404.vue +5 -5
  687. package/src/modules/core/views/components/partials/BottomNavigationBar.vue +5 -5
  688. package/src/modules/core/views/components/partials/CitySelection.vue +2 -2
  689. package/src/modules/core/views/components/partials/Footer.centered.vue +2 -2
  690. package/src/modules/core/views/components/partials/Footer.vue +2 -2
  691. package/src/modules/core/views/components/partials/Header.vue +3 -3
  692. package/src/modules/core/views/components/partials/LocationSelection.vue +1 -1
  693. package/src/modules/core/views/components/partials/Navigation.vue +1 -1
  694. package/src/modules/core/views/components/sections/Filters.vue +2 -2
  695. package/src/modules/core/views/components/sections/SectionPageTitle.vue +2 -2
  696. package/src/modules/core/views/components/sections/Walkthrough.vue +6 -6
  697. package/src/modules/core/views/mixins/mixins.js +17 -0
  698. package/src/modules/core/views/plugins/date-picker.plugin.js +8 -5
  699. package/src/modules/core/views/store/core.store.js +5 -0
  700. package/src/modules/core/views/utils/vue-app-renderer.js +5 -0
  701. package/src/modules/events/components/pages/EditEventTickets.vue +9 -9
  702. package/src/modules/events/components/pages/Event.vue +2 -2
  703. package/src/modules/events/components/sections/EditTickets.vue +1 -1
  704. package/src/modules/events/components/sections/SelectDate.vue +1 -1
  705. package/src/modules/events/events.client.js +4 -4
  706. package/src/modules/gallery/components/sections/BackofficeGallery.vue +1 -1
  707. package/src/modules/gallery/router/gallery.router.js +3 -3
  708. package/src/modules/governance/middlewares/sprints.verifier.js +3 -3
  709. package/src/modules/governance/middlewares/tasks.verifier.js +3 -3
  710. package/src/modules/governance/models/sprint.model.js +1 -1
  711. package/src/modules/governance/models/task.model.js +1 -1
  712. package/src/modules/governance/reactcode/src/components/TaskStatusBadge.tsx +1 -1
  713. package/src/modules/governance/views/components/blocks/CardInitiativeItem.vue +3 -3
  714. package/src/modules/governance/views/components/blocks/CardSprintItem.vue +4 -4
  715. package/src/modules/governance/views/components/blocks/CardTaskItem.vue +2 -2
  716. package/src/modules/governance/views/components/blocks/CardVotingItem.vue +3 -3
  717. package/src/modules/governance/views/components/pages/Initiatives.vue +3 -3
  718. package/src/modules/governance/views/components/partials/TaskStatusBadge.vue +1 -1
  719. package/src/modules/governance/views/components/sections/FormSprintDetails.vue +1 -1
  720. package/src/modules/governance/views/components/sections/FormTaskDetails.vue +1 -1
  721. package/src/modules/governance/views/router/governance.router.js +3 -3
  722. package/src/modules/icons/components/IconSearchPopup.vue +1 -1
  723. package/src/modules/icons/entities/IconApplications.vue +14 -0
  724. package/src/modules/icons/entities/IconCustomers.vue +14 -0
  725. package/src/modules/icons/entities/IconUsers.vue +14 -0
  726. package/src/modules/inventory/components/forms/AdjustmentForm.vue +2 -2
  727. package/src/modules/inventory/components/forms/ColumnSettingsMenu.vue +2 -2
  728. package/src/modules/inventory/components/forms/HistoryView.vue +1 -1
  729. package/src/modules/inventory/components/forms/StockAlertsForm.vue +3 -3
  730. package/src/modules/inventory/components/pages/Inventory.vue +278 -159
  731. package/src/modules/inventory/components/pages/InventoryEdit.vue +2 -2
  732. package/src/modules/inventory/inventory.client.js +4 -4
  733. package/src/modules/inventory/models/stock.audit.model.js +1 -1
  734. package/src/modules/inventory/router/inventory.router.js +12 -0
  735. package/src/modules/landing/components/sections/SectionEarn.vue +3 -3
  736. package/src/modules/landing/components/sections/SectionFeature.vue +1 -1
  737. package/src/modules/landing/components/sections/SectionFeatures.vue +1 -1
  738. package/src/modules/landing/components/sections/SectionFeaturesImages.vue +2 -2
  739. package/src/modules/landing/components/sections/SectionGuide.vue +2 -2
  740. package/src/modules/landing/components/sections/SectionHeroToken.vue +1 -1
  741. package/src/modules/landing/components/sections/SectionHeroVideo.vue +1 -1
  742. package/src/modules/landing/components/sections/SectionMobileApp.vue +2 -2
  743. package/src/modules/landing/components/sections/SectionOverview.vue +1 -1
  744. package/src/modules/landing/components/sections/SectionRoadmap.vue +1 -1
  745. package/src/modules/landing/components/sections/SubscribeNewsletter.vue +1 -1
  746. package/src/modules/marketplace/views/components/sections/SectionMenu.vue +2 -2
  747. package/src/modules/music/components/SidebarMusic.vue +1 -1
  748. package/src/modules/music/components/cards/AlbumCard.vue +1 -1
  749. package/src/modules/music/components/cards/ArtistCard.vue +1 -1
  750. package/src/modules/music/components/cards/ArtistCardSmall.vue +1 -1
  751. package/src/modules/music/components/cards/PlaylistCard.vue +1 -1
  752. package/src/modules/music/components/cards/TrackListCard.vue +6 -6
  753. package/src/modules/music/components/forms/AlbumForm.vue +2 -2
  754. package/src/modules/music/components/forms/ArtistForm.vue +1 -1
  755. package/src/modules/music/components/forms/PlaylistForm.vue +5 -5
  756. package/src/modules/music/components/forms/TrackForm.vue +3 -3
  757. package/src/modules/music/components/pages/Album.vue +8 -8
  758. package/src/modules/music/components/pages/Artist.vue +5 -5
  759. package/src/modules/music/components/pages/Playlist.vue +11 -11
  760. package/src/modules/music/components/pages/SearchResults.vue +2 -2
  761. package/src/modules/music/components/pages/Track.vue +11 -11
  762. package/src/modules/music/components/player/FullscreenPlayer.vue +3 -3
  763. package/src/modules/music/components/player/TrackProgress.vue +1 -1
  764. package/src/modules/notifications/components/sections/NotificationPreferences.vue +182 -52
  765. package/src/modules/notifications/controllers/notifications.controller.js +242 -17
  766. package/src/modules/notifications/models/notification-preference.model.js +4 -0
  767. package/src/modules/notifications/notifications.client.js +213 -20
  768. package/src/modules/notifications/router/notifications.backoffice.router.js +16 -0
  769. package/src/modules/notifications/router/notifications.router.js +13 -45
  770. package/src/modules/notifications/routes/notifications.routes.js +9 -0
  771. package/src/modules/notifications/services/notification.service.js +33 -9
  772. package/src/modules/notifications/services/telegram.service.js +2 -2
  773. package/src/modules/notifications/services/web-push.service.js +6 -2
  774. package/src/modules/notifications/store/notifications.store.js +69 -0
  775. package/src/modules/orders/components/blocks/CardApplication.vue +9 -6
  776. package/src/modules/orders/components/blocks/CardCustomer.vue +10 -7
  777. package/src/modules/orders/components/blocks/CardOrder.vue +8 -8
  778. package/src/modules/orders/components/blocks/CardOrderBackoffice.vue +58 -12
  779. package/src/modules/orders/components/blocks/CardOrderItem.vue +31 -28
  780. package/src/modules/orders/components/blocks/CardOrderUser.vue +7 -12
  781. package/src/modules/orders/components/blocks/CardOrderVar1.vue +3 -3
  782. package/src/modules/orders/components/elements/FieldSubscribeNewsletter.vue +1 -1
  783. package/src/modules/orders/components/elements/PriceTotal.vue +4 -4
  784. package/src/modules/orders/components/forms/FormApplicationDetails.vue +1 -1
  785. package/src/modules/orders/components/forms/FormSelectCustomer.vue +48 -25
  786. package/src/modules/orders/components/pages/Applications.vue +2 -2
  787. package/src/modules/orders/components/pages/Customers.vue +35 -23
  788. package/src/modules/orders/components/pages/OrderBackoffice.vue +780 -393
  789. package/src/modules/orders/components/pages/OrderCreate.vue +5 -4
  790. package/src/modules/orders/components/pages/OrderCreateBackoffice.vue +112 -42
  791. package/src/modules/orders/components/pages/Orders.vue +20 -19
  792. package/src/modules/orders/components/pages/Orders_refact.vue +3 -3
  793. package/src/modules/orders/components/partials/ShopCart.vue +1 -1
  794. package/src/modules/orders/components/sections/ApplicationDetails.vue +2 -2
  795. package/src/modules/orders/components/sections/AskToLogin.vue +1 -1
  796. package/src/modules/orders/components/sections/CustomerDetails.vue +130 -64
  797. package/src/modules/orders/controllers/orders.controller.js +463 -134
  798. package/src/modules/orders/middlewares/applications.verifier.js +3 -3
  799. package/src/modules/orders/middlewares/customers.verifier.js +4 -0
  800. package/src/modules/orders/middlewares/orders.verifier.js +187 -0
  801. package/src/modules/orders/models/customer.model.js +2 -0
  802. package/src/modules/orders/models/order.model.js +20 -2
  803. package/src/modules/orders/orders.client.js +21 -19
  804. package/src/modules/orders/routes/applications.routes.js +13 -3
  805. package/src/modules/orders/routes/customers.routes.js +2 -0
  806. package/src/modules/orders/routes/orders.routes.js +46 -4
  807. package/src/modules/orders/store/orders.js +4 -7
  808. package/src/modules/orders/store/shopcart.js +6 -7
  809. package/src/modules/orders/utils/rent-price.js +90 -0
  810. package/src/modules/organizations/components/blocks/CardDepartment.vue +1 -1
  811. package/src/modules/organizations/components/blocks/CardOrganization.vue +30 -33
  812. package/src/modules/organizations/components/blocks/EmptyState.vue +1 -1
  813. package/src/modules/organizations/components/blocks/Rating.vue +1 -1
  814. package/src/modules/organizations/components/blocks/Socials.vue +2 -2
  815. package/src/modules/organizations/components/elements/ButtonToggleMembership.vue +1 -1
  816. package/src/modules/organizations/components/forms/AddExistingMembersForm.vue +3 -3
  817. package/src/modules/organizations/components/forms/DepartmentForm.vue +1 -1
  818. package/src/modules/organizations/components/forms/InviteForm.vue +1 -1
  819. package/src/modules/organizations/components/pages/Department.vue +2 -2
  820. package/src/modules/organizations/components/pages/DepartmentEdit.vue +1 -1
  821. package/src/modules/organizations/components/pages/Members.vue +8 -8
  822. package/src/modules/organizations/components/pages/Organization.vue +232 -124
  823. package/src/modules/organizations/components/pages/OrganizationCreate.vue +3 -3
  824. package/src/modules/organizations/components/pages/OrganizationDocuments.vue +1 -1
  825. package/src/modules/organizations/components/pages/OrganizationEdit.vue +15 -6
  826. package/src/modules/organizations/components/pages/Organizations.vue +3 -2
  827. package/src/modules/organizations/components/sections/Documents.vue +1 -1
  828. package/src/modules/organizations/components/sections/MembersAdd.vue +2 -2
  829. package/src/modules/organizations/configs/navigation.organization.config.js +34 -26
  830. package/src/modules/organizations/controllers/organizations.controller.js +8 -3
  831. package/src/modules/organizations/models/organization.model.js +1 -0
  832. package/src/modules/organizations/organizations.client.js +39 -33
  833. package/src/modules/organizations/router/organizations.backoffice.router.js +67 -0
  834. package/src/modules/pages/views/components/pages/Pages.vue +1 -1
  835. package/src/modules/pages/views/router/pages.router.js +2 -2
  836. package/src/modules/products/components/blocks/CardPosition.vue +2 -2
  837. package/src/modules/products/components/blocks/CardProduct.vue +2 -2
  838. package/src/modules/products/components/blocks/ProductDiscounts.vue +1 -1
  839. package/src/modules/products/components/blocks/ProductImages.vue +1 -1
  840. package/src/modules/products/components/blocks/ProductVariants.vue +3 -3
  841. package/src/modules/products/components/elements/Price.vue +2 -2
  842. package/src/modules/products/components/forms/ColumnSettingsMenu.vue +2 -2
  843. package/src/modules/products/components/forms/ReorderSettingsForm.vue +3 -3
  844. package/src/modules/products/components/forms/StockAuditForm.vue +2 -2
  845. package/src/modules/products/components/forms/StockHistoryView.vue +1 -1
  846. package/src/modules/products/components/pages/Categories.vue +9 -20
  847. package/src/modules/products/components/pages/ProductEdit.vue +19 -3
  848. package/src/modules/products/components/pages/Products.vue +20 -19
  849. package/src/modules/products/components/sections/EditAttributes.vue +1 -1
  850. package/src/modules/products/components/sections/EditCategories.vue +1 -1
  851. package/src/modules/products/components/sections/EditDiscounts.vue +2 -2
  852. package/src/modules/products/components/sections/EditVariants.vue +14 -2
  853. package/src/modules/products/components/sections/FilterProducts.vue +1 -1
  854. package/src/modules/products/components/sections/ProductConfigurator.vue +1 -1
  855. package/src/modules/products/components/sections/SectionProduct.vue +3 -3
  856. package/src/modules/products/controllers/products.controller.js +50 -5
  857. package/src/modules/products/experiments/product-recommendation/components/HeroRecommendation.vue +2 -2
  858. package/src/modules/products/models/product.model.js +7 -0
  859. package/src/modules/products/models/variant.model.js +4 -0
  860. package/src/modules/products/router/categories.router.js +2 -2
  861. package/src/modules/products/router/products.router.js +14 -3
  862. package/src/modules/rents/controllers/routes/rents.routes.js +11 -0
  863. package/src/modules/rents/controllers/services/rents.services.js +193 -2
  864. package/src/modules/rents/models/rent.model.js +9 -0
  865. package/src/modules/rents/views/components/pages/Gant/GanttBar.vue +28 -11
  866. package/src/modules/rents/views/components/pages/Gant/GanttChart.vue +200 -40
  867. package/src/modules/rents/views/components/pages/Gant/GanttHeaderCell.vue +2 -2
  868. package/src/modules/rents/views/components/pages/Gant/GanttToolbar.vue +2 -2
  869. package/src/modules/rents/views/components/pages/Rents.vue +641 -142
  870. package/src/modules/rents/views/components/pages/RentsEdit.vue +44 -4
  871. package/src/modules/rents/views/router/rents.router.js +3 -3
  872. package/src/modules/rents/views/store/rents.store.js +1 -1
  873. package/src/modules/reports/components/pages/BackofficeReports.vue +3 -3
  874. package/src/modules/reports/router/reports.router.js +1 -1
  875. package/src/modules/spots/components/blocks/CardSpot.vue +6 -6
  876. package/src/modules/spots/components/pages/Spot.vue +2 -2
  877. package/src/modules/spots/components/pages/SpotEdit.vue +8 -6
  878. package/src/modules/spots/components/pages/Spots.vue +18 -24
  879. package/src/modules/spots/components/sections/WorktimeEdit.vue +7 -7
  880. package/src/modules/spots/router/spots.router.js +3 -3
  881. package/src/modules/wallet/views/components/blocks/CashDeposit.vue +1 -1
  882. package/src/modules/wallet/views/components/elements/ConnectMetamask.vue +3 -3
  883. package/src/modules/wallet/views/components/pages/Payments.vue +1 -1
  884. package/src/modules/wallet/views/components/pages/Wallet.vue +4 -4
  885. package/src/modules/wallet/views/router/wallet.router.js +1 -1
  886. package/src/styles/layout.scss +1 -1
  887. package/dist/martyrs/node_modules/.pnpm/@capacitor_core@7.4.4/node_modules/@capacitor/core/dist/index.js +0 -487
  888. package/dist/martyrs/node_modules/.pnpm/@capacitor_core@7.4.4/node_modules/@capacitor/core/dist/index.js.map +0 -1
  889. package/dist/martyrs/node_modules/.pnpm/@capacitor_preferences@7.0.2_@capacitor_core@7.4.4/node_modules/@capacitor/preferences/dist/esm/index.js +0 -8
  890. package/dist/martyrs/node_modules/.pnpm/@capacitor_preferences@7.0.2_@capacitor_core@7.4.4/node_modules/@capacitor/preferences/dist/esm/index.js.map +0 -1
  891. package/dist/martyrs/node_modules/.pnpm/@capacitor_preferences@7.0.2_@capacitor_core@7.4.4/node_modules/@capacitor/preferences/dist/esm/web.js +0 -73
  892. package/dist/martyrs/node_modules/.pnpm/@capacitor_preferences@7.0.2_@capacitor_core@7.4.4/node_modules/@capacitor/preferences/dist/esm/web.js.map +0 -1
  893. package/dist/martyrs/src/components/Loader/Loader.vue2.js.map +0 -1
  894. package/dist/martyrs/src/components/Tab/Tab.vue.js.map +0 -1
  895. package/dist/martyrs/src/components/Tooltip/Tooltip.vue2.js.map +0 -1
  896. package/dist/martyrs/src/modules/core/views/components/sections/Filters.vue.js.map +0 -1
  897. package/dist/martyrs/src/modules/icons/entities/IconCash.vue.js +0 -70
  898. package/dist/martyrs/src/modules/icons/entities/IconCash.vue.js.map +0 -1
  899. package/dist/martyrs.es100.js +0 -33
  900. package/dist/martyrs.es103.js +0 -31
  901. package/dist/martyrs.es110.js +0 -54
  902. package/dist/martyrs.es111.js +0 -327
  903. package/dist/martyrs.es150.js +0 -22
  904. package/dist/martyrs.es151.js +0 -31
  905. package/dist/martyrs.es152.js +0 -23
  906. package/dist/martyrs.es93.js +0 -35
  907. package/dist/node_modules/.pnpm/@capacitor_core@7.4.4/node_modules/@capacitor/core/dist/index.js +0 -487
  908. package/dist/node_modules/.pnpm/@capacitor_core@7.4.4/node_modules/@capacitor/core/dist/index.js.map +0 -1
  909. package/dist/node_modules/.pnpm/@googlemaps_js-api-loader@1.16.8/node_modules/@googlemaps/js-api-loader/dist/index.js +0 -336
  910. package/dist/node_modules/.pnpm/@googlemaps_js-api-loader@1.16.8/node_modules/@googlemaps/js-api-loader/dist/index.js.map +0 -1
  911. package/dist/node_modules/.pnpm/vue-draggable-next@2.2.1_sortablejs@1.15.6_vue@3.5.13_typescript@5.8.3_/node_modules/vue-draggable-next/dist/vue-draggable-next.esm-bundler.js.map +0 -1
@@ -4,7 +4,7 @@ import clickOutside from "../FieldPhone/click-outside.js";
4
4
  import _export_sfc from "../../../../_virtual/_plugin-vue_export-helper.js";
5
5
  const _hoisted_1 = {
6
6
  key: 0,
7
- class: "t-transp mn-r-small"
7
+ class: "opacity-50 mn-r-small"
8
8
  };
9
9
  const _hoisted_2 = {
10
10
  class: "bs-black pos-absolute pos-t-100 pos-l-0 z-index-5 pd-small radius-small bg-white mn-t-thin w-100",
@@ -127,7 +127,7 @@ const _sfc_main = {
127
127
  };
128
128
  }
129
129
  };
130
- const Select = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-af5048fc"]]);
130
+ const Select = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-814b4dfb"]]);
131
131
  export {
132
132
  Select as default
133
133
  };
@@ -1 +1 @@
1
- {"version":3,"file":"Select.vue.js","sources":["../../../../../src/components/Select/Select.vue"],"sourcesContent":["<template>\n <!-- Input Wrapper -->\n <div \n ref=\"fieldWrapper\"\n tabindex=\"0\"\n @click.stop=\"toggleMenu\" \n v-click-outside=\"clickedOutside\" \n :class=\"$attrs.class\" \n class=\"cursor-pointer field-wrapper flex-v-center flex-nowrap flex pos-relative\"\n >\n <!-- Label -->\n <span v-if=\"label\" class=\"t-transp mn-r-small\">{{label}}</span>\n \n <!-- Input -->\n <span>\n {{ optionsSelected ? (optionsSelected.name || optionsSelected[props.value] || optionsSelected) : placeholder }}\n </span>\n <!-- Dropdown menu -->\n <transition mode=\"out-in\" name=\"TransitionTranslateY\">\n <ul \n v-show=\"showMenu\" \n class=\"bs-black pos-absolute pos-t-100 pos-l-0 z-index-5 pd-small radius-small bg-white mn-t-thin w-100\"\n style=\"min-width: max-content;\"\n >\n <li @click.stop=\"selectOption(option)\" v-for=\"option in optionsListed\" class=\"radius-thin hover:bg-light pd-thin text-box-trim\">\n <span v-if=\"option\" class=\"w-100\">\n {{ option.name || option[props.value] || option }}\n </span>\n </li>\n </ul>\n </transition>\n </div>\n <!-- Validation -->\n <transition mode=\"out-in\" name=\"fade\">\n <div v-if=\"validation\" class=\"mn-t-thin invalid-feedback\">\n * {{validation.message}}\n </div>\n </transition>\n</template>\n<script setup>\nimport { ref, computed, watch, nextTick } from 'vue'\nimport clickOutside from '../FieldPhone/click-outside.js';\nlet vClickOutside = clickOutside\nconst emit = defineEmits([\n 'update:select', \n 'focus', \n 'blur'\n])\nconst props = defineProps({\n label: String,\n placeholder: { type: String, default: 'Please select an item' },\n select: [String, Object],\n property: String,\n value: String,\n options: { type: Array, default: () => [] },\n validation: Boolean,\n})\nconst showMenu = ref(false)\nconst fieldWrapper = ref(null)\nconst optionsSelected = ref(\n props.property \n ? findObjectByValue(props.select, props.property, props.options) \n : props.select\n)\nconst optionsListed = computed(() => {\n return props.select \n ? props.options.filter(option => option !== props.select) \n : props.options\n})\nwatch(() => props.select, (newSelect) => {\n optionsSelected.value = \n props.property \n ? findObjectByValue(props.select, props.property, props.options) \n : props.select;\n});\nconst toggleMenu = async () => {\n showMenu.value = !showMenu.value\n \n if (showMenu.value) {\n await nextTick()\n fieldWrapper.value?.focus()\n emit('focus')\n } else {\n emit('blur')\n }\n}\nfunction clickedOutside () {\n showMenu.value = false\n}\nconst selectOption = option => {\n optionsSelected.value = option\n \n toggleMenu()\n if (props.property) { \n emit('update:select', optionsSelected.value[props.property])\n } else {\n emit('update:select', optionsSelected.value)\n }\n}\nfunction findObjectByValue (value, property, objects) {\n for (const object of objects) {\n if (object[property] === value || object === value) {\n return object;\n }\n }\n return null;\n}\n</script>\n<style lang=\"scss\" scoped>\n li {\n list-style-type: none;\n }\n ul li {\n line-height: 2;\n }\n .field-wrapper:focus {\n outline: none;\n }\n</style>"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0CA,QAAI,gBAAgB;AACpB,UAAM,OAAO;AAKb,UAAM,QAAQ;AASd,UAAM,WAAW,IAAI,KAAK;AAC1B,UAAM,eAAe,IAAI,IAAI;AAC7B,UAAM,kBAAkB;AAAA,MACtB,MAAM,WACJ,kBAAkB,MAAM,QAAQ,MAAM,UAAU,MAAM,OAAO,IAC7D,MAAM;AAAA,IACV;AACA,UAAM,gBAAgB,SAAS,MAAM;AACnC,aAAO,MAAM,SACX,MAAM,QAAQ,OAAO,YAAU,WAAW,MAAM,MAAM,IACtD,MAAM;AAAA,IACV,CAAC;AACD,UAAM,MAAM,MAAM,QAAQ,CAAC,cAAc;AACvC,sBAAgB,QAChB,MAAM,WACJ,kBAAkB,MAAM,QAAQ,MAAM,UAAU,MAAM,OAAO,IAC7D,MAAM;AAAA,IACV,CAAC;AACD,UAAM,aAAa,YAAY;AAC7B,eAAS,QAAQ,CAAC,SAAS;AAE3B,UAAI,SAAS,OAAO;AAClB,cAAM,SAAQ;AACd,qBAAa,OAAO,MAAK;AACzB,aAAK,OAAO;AAAA,MACd,OAAO;AACL,aAAK,MAAM;AAAA,MACb;AAAA,IACF;AACA,aAAS,iBAAkB;AACzB,eAAS,QAAQ;AAAA,IACnB;AACA,UAAM,eAAe,YAAU;AAC7B,sBAAgB,QAAQ;AAExB,iBAAU;AACV,UAAI,MAAM,UAAU;AAClB,aAAK,iBAAiB,gBAAgB,MAAM,MAAM,QAAQ,CAAC;AAAA,MAC7D,OAAO;AACL,aAAK,iBAAiB,gBAAgB,KAAK;AAAA,MAC7C;AAAA,IACF;AACA,aAAS,kBAAmB,OAAO,UAAU,SAAS;AACpD,iBAAW,UAAU,SAAS;AAC5B,YAAI,OAAO,QAAQ,MAAM,SAAS,WAAW,OAAO;AAClD,iBAAO;AAAA,QACT;AAAA,MACF;AACA,aAAO;AAAA,IACT;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"Select.vue.js","sources":["../../../../../src/components/Select/Select.vue"],"sourcesContent":["<template>\n <!-- Input Wrapper -->\n <div \n ref=\"fieldWrapper\"\n tabindex=\"0\"\n @click.stop=\"toggleMenu\" \n v-click-outside=\"clickedOutside\" \n :class=\"$attrs.class\" \n class=\"cursor-pointer field-wrapper flex-v-center flex-nowrap flex pos-relative\"\n >\n <!-- Label -->\n <span v-if=\"label\" class=\"opacity-50 mn-r-small\">{{label}}</span>\n \n <!-- Input -->\n <span>\n {{ optionsSelected ? (optionsSelected.name || optionsSelected[props.value] || optionsSelected) : placeholder }}\n </span>\n <!-- Dropdown menu -->\n <transition mode=\"out-in\" name=\"TransitionTranslateY\">\n <ul \n v-show=\"showMenu\" \n class=\"bs-black pos-absolute pos-t-100 pos-l-0 z-index-5 pd-small radius-small bg-white mn-t-thin w-100\"\n style=\"min-width: max-content;\"\n >\n <li @click.stop=\"selectOption(option)\" v-for=\"option in optionsListed\" class=\"radius-thin hover:bg-light pd-thin text-box-trim\">\n <span v-if=\"option\" class=\"w-100\">\n {{ option.name || option[props.value] || option }}\n </span>\n </li>\n </ul>\n </transition>\n </div>\n <!-- Validation -->\n <transition mode=\"out-in\" name=\"fade\">\n <div v-if=\"validation\" class=\"mn-t-thin invalid-feedback\">\n * {{validation.message}}\n </div>\n </transition>\n</template>\n<script setup>\nimport { ref, computed, watch, nextTick } from 'vue'\nimport clickOutside from '../FieldPhone/click-outside.js';\nlet vClickOutside = clickOutside\nconst emit = defineEmits([\n 'update:select', \n 'focus', \n 'blur'\n])\nconst props = defineProps({\n label: String,\n placeholder: { type: String, default: 'Please select an item' },\n select: [String, Object],\n property: String,\n value: String,\n options: { type: Array, default: () => [] },\n validation: Boolean,\n})\nconst showMenu = ref(false)\nconst fieldWrapper = ref(null)\nconst optionsSelected = ref(\n props.property \n ? findObjectByValue(props.select, props.property, props.options) \n : props.select\n)\nconst optionsListed = computed(() => {\n return props.select \n ? props.options.filter(option => option !== props.select) \n : props.options\n})\nwatch(() => props.select, (newSelect) => {\n optionsSelected.value = \n props.property \n ? findObjectByValue(props.select, props.property, props.options) \n : props.select;\n});\nconst toggleMenu = async () => {\n showMenu.value = !showMenu.value\n \n if (showMenu.value) {\n await nextTick()\n fieldWrapper.value?.focus()\n emit('focus')\n } else {\n emit('blur')\n }\n}\nfunction clickedOutside () {\n showMenu.value = false\n}\nconst selectOption = option => {\n optionsSelected.value = option\n \n toggleMenu()\n if (props.property) { \n emit('update:select', optionsSelected.value[props.property])\n } else {\n emit('update:select', optionsSelected.value)\n }\n}\nfunction findObjectByValue (value, property, objects) {\n for (const object of objects) {\n if (object[property] === value || object === value) {\n return object;\n }\n }\n return null;\n}\n</script>\n<style lang=\"scss\" scoped>\n li {\n list-style-type: none;\n }\n ul li {\n line-height: 2;\n }\n .field-wrapper:focus {\n outline: none;\n }\n</style>"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0CA,QAAI,gBAAgB;AACpB,UAAM,OAAO;AAKb,UAAM,QAAQ;AASd,UAAM,WAAW,IAAI,KAAK;AAC1B,UAAM,eAAe,IAAI,IAAI;AAC7B,UAAM,kBAAkB;AAAA,MACtB,MAAM,WACJ,kBAAkB,MAAM,QAAQ,MAAM,UAAU,MAAM,OAAO,IAC7D,MAAM;AAAA,IACV;AACA,UAAM,gBAAgB,SAAS,MAAM;AACnC,aAAO,MAAM,SACX,MAAM,QAAQ,OAAO,YAAU,WAAW,MAAM,MAAM,IACtD,MAAM;AAAA,IACV,CAAC;AACD,UAAM,MAAM,MAAM,QAAQ,CAAC,cAAc;AACvC,sBAAgB,QAChB,MAAM,WACJ,kBAAkB,MAAM,QAAQ,MAAM,UAAU,MAAM,OAAO,IAC7D,MAAM;AAAA,IACV,CAAC;AACD,UAAM,aAAa,YAAY;AAC7B,eAAS,QAAQ,CAAC,SAAS;AAE3B,UAAI,SAAS,OAAO;AAClB,cAAM,SAAQ;AACd,qBAAa,OAAO,MAAK;AACzB,aAAK,OAAO;AAAA,MACd,OAAO;AACL,aAAK,MAAM;AAAA,MACb;AAAA,IACF;AACA,aAAS,iBAAkB;AACzB,eAAS,QAAQ;AAAA,IACnB;AACA,UAAM,eAAe,YAAU;AAC7B,sBAAgB,QAAQ;AAExB,iBAAU;AACV,UAAI,MAAM,UAAU;AAClB,aAAK,iBAAiB,gBAAgB,MAAM,MAAM,QAAQ,CAAC;AAAA,MAC7D,OAAO;AACL,aAAK,iBAAiB,gBAAgB,KAAK;AAAA,MAC7C;AAAA,IACF;AACA,aAAS,kBAAmB,OAAO,UAAU,SAAS;AACpD,iBAAW,UAAU,SAAS;AAC5B,YAAI,OAAO,QAAQ,MAAM,SAAS,WAAW,OAAO;AAClD,iBAAO;AAAA,QACT;AAAA,MACF;AACA,aAAO;AAAA,IACT;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -46,7 +46,7 @@ const _sfc_main = {
46
46
  }, [
47
47
  (openBlock(), createBlock(resolveDynamicComponent(iconComponent.value), {
48
48
  fill: "rgb(var(--white))",
49
- class: "t-transp i-medium mn-r-thin z-index-5"
49
+ class: "opacity-50 i-medium mn-r-thin z-index-5"
50
50
  })),
51
51
  createElementVNode("p", _hoisted_2, toDisplayString(unref(te)(`core.snacks.${__props.message}`) ? unref(t)(`core.snacks.${__props.message}`) : __props.message), 1)
52
52
  ], 2)
@@ -1 +1 @@
1
- {"version":3,"file":"Snack.vue.js","sources":["../../../../../src/components/Status/Snack.vue"],"sourcesContent":["<template>\n <div class=\"snack-wrapper\" v-if=\"show\">\n <div \n class=\"flex-nowrap flex-v-center flex radius-small pd-small t-white\"\n :class=\"snackClass\"\n @click=\"$emit('close')\" \n >\n <component \n :is=\"iconComponent\" \n fill=\"rgb(var(--white))\" \n class=\"t-transp i-medium mn-r-thin z-index-5\"\n />\n <p class=\"w-100\">\n {{ te(`core.snacks.${message}`) ? t(`core.snacks.${message}`) : message }}\n </p>\n <!-- <IconCross \n @click=\"$emit('close')\" \n class=\"cursor-pointer hover-scale-1 i-medium z-index-5\"\n /> -->\n </div>\n </div>\n</template>\n\n<script setup>\nimport { computed } from 'vue'\nimport { useI18n } from 'vue-i18n'\n\nimport IconInfo from '@martyrs/src/modules/icons/navigation/IconInfo.vue'\nimport IconSuccess from '@martyrs/src/modules/icons/navigation/IconInfo.vue'\nimport IconAlert from '@martyrs/src/modules/icons/navigation/IconInfo.vue'\n\nimport IconCross from '@martyrs/src/modules/icons/navigation/IconCross.vue'\n\nconst { t, te } = useI18n({ useScope: 'global' })\n\nconst props = defineProps({\n type: {\n type: String,\n default: 'notification',\n validator: (v) => ['error', 'success', 'alert', 'notification'].includes(v)\n },\n message: String,\n show: Boolean\n})\n\ndefineEmits(['close'])\n\nconst snackClass = computed(() => ({\n 'bg-red': props.type === 'error',\n 'bg-green': props.type === 'success', \n 'bg-fourth': props.type === 'alert',\n 'bg-second': props.type === 'notification'\n}))\n\nconst iconComponent = computed(() => {\n const icons = {\n error: IconCross,\n success: IconSuccess,\n alert: IconAlert,\n notification: IconInfo\n }\n return icons[props.type] || IconInfo\n})\n</script>\n\n<style lang=\"scss\">\n.snack-wrapper {\n position: fixed;\n bottom: var(--gap);\n left: 50%;\n transform: translateX(-50%);\n z-index: 1000;\n animation: slideUp 0.3s ease-out;\n}\n\n@keyframes slideUp {\n from {\n transform: translateX(-50%) translateY(100%);\n opacity: 0;\n }\n to {\n transform: translateX(-50%) translateY(0);\n opacity: 1;\n }\n}\n</style>"],"names":["IconCross","IconSuccess","IconAlert","IconInfo"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAiCA,UAAM,EAAE,GAAG,GAAE,IAAK,QAAQ,EAAE,UAAU,SAAQ,CAAE;AAEhD,UAAM,QAAQ;AAYd,UAAM,aAAa,SAAS,OAAO;AAAA,MACjC,UAAU,MAAM,SAAS;AAAA,MACzB,YAAY,MAAM,SAAS;AAAA,MAC3B,aAAa,MAAM,SAAS;AAAA,MAC5B,aAAa,MAAM,SAAS;AAAA,IAC9B,EAAE;AAEF,UAAM,gBAAgB,SAAS,MAAM;AACnC,YAAM,QAAQ;AAAA,QACZ,OAAOA;AAAAA,QACP,SAASC;AAAAA,QACT,OAAOC;AAAAA,QACP,cAAcC;AAAAA,MAClB;AACE,aAAO,MAAM,MAAM,IAAI,KAAKA;AAAAA,IAC9B,CAAC;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"Snack.vue.js","sources":["../../../../../src/components/Status/Snack.vue"],"sourcesContent":["<template>\n <div class=\"snack-wrapper\" v-if=\"show\">\n <div \n class=\"flex-nowrap flex-v-center flex radius-small pd-small t-white\"\n :class=\"snackClass\"\n @click=\"$emit('close')\" \n >\n <component \n :is=\"iconComponent\" \n fill=\"rgb(var(--white))\" \n class=\"opacity-50 i-medium mn-r-thin z-index-5\"\n />\n <p class=\"w-100\">\n {{ te(`core.snacks.${message}`) ? t(`core.snacks.${message}`) : message }}\n </p>\n <!-- <IconCross \n @click=\"$emit('close')\" \n class=\"cursor-pointer hover-scale-1 i-medium z-index-5\"\n /> -->\n </div>\n </div>\n</template>\n\n<script setup>\nimport { computed } from 'vue'\nimport { useI18n } from 'vue-i18n'\n\nimport IconInfo from '@martyrs/src/modules/icons/navigation/IconInfo.vue'\nimport IconSuccess from '@martyrs/src/modules/icons/navigation/IconInfo.vue'\nimport IconAlert from '@martyrs/src/modules/icons/navigation/IconInfo.vue'\n\nimport IconCross from '@martyrs/src/modules/icons/navigation/IconCross.vue'\n\nconst { t, te } = useI18n({ useScope: 'global' })\n\nconst props = defineProps({\n type: {\n type: String,\n default: 'notification',\n validator: (v) => ['error', 'success', 'alert', 'notification'].includes(v)\n },\n message: String,\n show: Boolean\n})\n\ndefineEmits(['close'])\n\nconst snackClass = computed(() => ({\n 'bg-red': props.type === 'error',\n 'bg-green': props.type === 'success', \n 'bg-fourth': props.type === 'alert',\n 'bg-second': props.type === 'notification'\n}))\n\nconst iconComponent = computed(() => {\n const icons = {\n error: IconCross,\n success: IconSuccess,\n alert: IconAlert,\n notification: IconInfo\n }\n return icons[props.type] || IconInfo\n})\n</script>\n\n<style lang=\"scss\">\n.snack-wrapper {\n position: fixed;\n bottom: var(--gap);\n left: 50%;\n transform: translateX(-50%);\n z-index: 1000;\n animation: slideUp 0.3s ease-out;\n}\n\n@keyframes slideUp {\n from {\n transform: translateX(-50%) translateY(100%);\n opacity: 0;\n }\n to {\n transform: translateX(-50%) translateY(0);\n opacity: 1;\n }\n}\n</style>"],"names":["IconCross","IconSuccess","IconAlert","IconInfo"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAiCA,UAAM,EAAE,GAAG,GAAE,IAAK,QAAQ,EAAE,UAAU,SAAQ,CAAE;AAEhD,UAAM,QAAQ;AAYd,UAAM,aAAa,SAAS,OAAO;AAAA,MACjC,UAAU,MAAM,SAAS;AAAA,MACzB,YAAY,MAAM,SAAS;AAAA,MAC3B,aAAa,MAAM,SAAS;AAAA,MAC5B,aAAa,MAAM,SAAS;AAAA,IAC9B,EAAE;AAEF,UAAM,gBAAgB,SAAS,MAAM;AACnC,YAAM,QAAQ;AAAA,QACZ,OAAOA;AAAAA,QACP,SAASC;AAAAA,QACT,OAAOC;AAAAA,QACP,cAAcC;AAAAA,MAClB;AACE,aAAO,MAAM,MAAM,IAAI,KAAKA;AAAAA,IAC9B,CAAC;;;;;;;;;;;;;;;;;"}
@@ -28,7 +28,7 @@ const _sfc_main = {
28
28
  createElementVNode("div", _hoisted_2, [
29
29
  createVNode(_sfc_main$1, {
30
30
  fill: "rgb(var(--white))",
31
- class: "t-transp i-medium mn-r-thin z-index-5"
31
+ class: "opacity-50 i-medium mn-r-thin z-index-5"
32
32
  }),
33
33
  createElementVNode("p", _hoisted_3, toDisplayString(unref(te)(`core.errors.${__props.data.message}`) ? unref(t)(`core.errors.${__props.data.message}`) : __props.data.message), 1),
34
34
  createVNode(_sfc_main$2, {
@@ -1 +1 @@
1
- {"version":3,"file":"Status.vue.js","sources":["../../../../../src/components/Status/Status.vue"],"sourcesContent":["<template>\n\t<div class=\"pd-small error-wrapper\">\n\t\t<div class=\"\n\t\t\tflex-nowrap flex-v-center flex\n\t\t\tradius-small\n\t\t\tpd-small\n\t\t\tt-white \n\t\t\tbg-fourth\n\t\t\">\n\t\t\t<IconInfo fill=\"rgb(var(--white))\" class=\"t-transp i-medium mn-r-thin z-index-5\"/>\n\t\t\t<p class=\"w-100\">\n\t\t\t\t{{te(`core.errors.${data.message}`) ? t(`core.errors.${data.message}`) : data.message}}\n\t\t\t</p>\n\t\t\t<IconCross @click=\"closeError()\" class=\"cursor-pointer hover-scale-1 i-medium z-index-5\"/>\n\t\t</div>\n\t</div>\n</template>\n\n\n<script setup=\"props\">\n\timport { computed } from 'vue'\n\timport { useI18n } from 'vue-i18n'\n\n\timport IconInfo from '@martyrs/src/modules/icons/navigation/IconInfo.vue';\n\timport IconCross from '@martyrs/src/modules/icons/navigation/IconCross.vue';\n\n\tconst { t, te } = useI18n({\n\t\tuseScope: 'global',\n\t})\n\n\tconst emits = defineEmits('close')\n\tconst props = defineProps({\n\t status: String,\n\t message: String,\n\t show: Boolean,\n\t data: Object\n\t})\n\n\tfunction closeError () {\n\t\temits('close')\n\t} \n</script>\n\n<style lang=\"scss\">\n\t.error-wrapper {\n\t\tposition: absolute;\n\t\tleft: 0;\n\t\tright: 0;\n\t}\n</style>\n\n\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AA0BC,UAAM,EAAE,GAAG,GAAE,IAAK,QAAQ;AAAA,MACzB,UAAU;AAAA,IACZ,CAAE;AAED,UAAM,QAAQ;AAQd,aAAS,aAAc;AACtB,YAAM,OAAO;AAAA,IACd;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"Status.vue.js","sources":["../../../../../src/components/Status/Status.vue"],"sourcesContent":["<template>\n\t<div class=\"pd-small error-wrapper\">\n\t\t<div class=\"\n\t\t\tflex-nowrap flex-v-center flex\n\t\t\tradius-small\n\t\t\tpd-small\n\t\t\tt-white \n\t\t\tbg-fourth\n\t\t\">\n\t\t\t<IconInfo fill=\"rgb(var(--white))\" class=\"opacity-50 i-medium mn-r-thin z-index-5\"/>\n\t\t\t<p class=\"w-100\">\n\t\t\t\t{{te(`core.errors.${data.message}`) ? t(`core.errors.${data.message}`) : data.message}}\n\t\t\t</p>\n\t\t\t<IconCross @click=\"closeError()\" class=\"cursor-pointer hover-scale-1 i-medium z-index-5\"/>\n\t\t</div>\n\t</div>\n</template>\n\n\n<script setup=\"props\">\n\timport { computed } from 'vue'\n\timport { useI18n } from 'vue-i18n'\n\n\timport IconInfo from '@martyrs/src/modules/icons/navigation/IconInfo.vue';\n\timport IconCross from '@martyrs/src/modules/icons/navigation/IconCross.vue';\n\n\tconst { t, te } = useI18n({\n\t\tuseScope: 'global',\n\t})\n\n\tconst emits = defineEmits('close')\n\tconst props = defineProps({\n\t status: String,\n\t message: String,\n\t show: Boolean,\n\t data: Object\n\t})\n\n\tfunction closeError () {\n\t\temits('close')\n\t} \n</script>\n\n<style lang=\"scss\">\n\t.error-wrapper {\n\t\tposition: absolute;\n\t\tleft: 0;\n\t\tright: 0;\n\t}\n</style>\n\n\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AA0BC,UAAM,EAAE,GAAG,GAAE,IAAK,QAAQ;AAAA,MACzB,UAAU;AAAA,IACZ,CAAE;AAED,UAAM,QAAQ;AAQd,aAAS,aAAc;AACtB,YAAM,OAAO;AAAA,IACd;;;;;;;;;;;;;;;;;;"}
@@ -1,6 +1,6 @@
1
1
  import { ref, watch, createElementBlock, openBlock, Fragment, renderList, normalizeStyle, normalizeClass, unref, toDisplayString } from "vue";
2
2
  import { useGlobalMixins } from "../../modules/core/views/mixins/mixins.js";
3
- /* empty css */
3
+ /* empty css */
4
4
  const _hoisted_1 = { class: "flex-nowrap flex-v-center flex pos-relative" };
5
5
  const _hoisted_2 = ["onClick"];
6
6
  const _sfc_main = {
@@ -71,4 +71,4 @@ const _sfc_main = {
71
71
  export {
72
72
  _sfc_main as default
73
73
  };
74
- //# sourceMappingURL=Tab.vue.js.map
74
+ //# sourceMappingURL=Tab.vue2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Tab.vue2.js","sources":["../../../../../src/components/Tab/Tab.vue"],"sourcesContent":["<template>\n <div class=\"flex-nowrap flex-v-center flex pos-relative\">\n <button \n v-for=\"(tab, index) in tabs\" \n :key=\"index\" \n @click=\"handleTabClick(index, tab)\" \n class=\"z-index-1 t-center cursor-pointer\"\n :style=\"isSelected(index, tab) ? 'background: rgb(var(--main)) !important' : ''\"\n :class=\"[\n isSelected(index, tab) ? 'bg-main' : '',\n replaceClasses('pd-small pd-r-medium pd-l-medium w-max pd-small radius-small', classTab)\n ]\"\n >\n {{tab.name || tab.label}}\n </button>\n </div>\n</template>\n\n<script setup>\nimport { ref, computed, watch } from 'vue'\nimport { useGlobalMixins } from '@martyrs/src/modules/core/views/mixins/mixins.js';\n\nconst { replaceClasses } = useGlobalMixins();\nconst emit = defineEmits(['update:selected', 'tab-click']);\n\nconst props = defineProps({\n tabs: Array,\n classTab: String,\n selected: [String, Number],\n modelValue: [String, Number],\n callback: Function\n})\n\nconst selectedTab = ref(0)\n\n// Handle both v-model and selected prop for backward compatibility\nconst updateSelectedIndex = () => {\n if (props.modelValue !== undefined) {\n const selectedIndex = props.tabs.findIndex(tab => tab.value === props.modelValue)\n if (selectedIndex !== -1) {\n selectedTab.value = selectedIndex\n }\n } else if (props.selected !== undefined) {\n const selectedIndex = props.tabs.findIndex(tab => tab.value === props.selected)\n if (selectedIndex !== -1) {\n selectedTab.value = selectedIndex\n }\n }\n}\n\n// Initial setup\nupdateSelectedIndex()\n\n// Watch for changes in selected or modelValue props\nwatch(() => props.selected, updateSelectedIndex)\nwatch(() => props.modelValue, updateSelectedIndex)\n\n// Check if tab is selected\nconst isSelected = (index, tab) => {\n if (props.modelValue !== undefined) {\n return tab.value === props.modelValue\n } else if (props.selected !== undefined) {\n return tab.value === props.selected\n }\n return index === selectedTab.value\n}\n\n// Handle tab click\nfunction handleTabClick(index, tab) {\n selectedTab.value = index\n \n // Emit both events for flexibility\n emit('update:selected', tab.value)\n emit('tab-click', { index, tab })\n \n // For v-model support\n if (props.modelValue !== undefined) {\n emit('update:modelValue', tab.value)\n }\n \n // Call callback if provided\n if (props.callback) props.callback(tab)\n}\n</script>\n\n<style lang=\"scss\">\n.tab-selector {\n position: absolute;\n width: 50%;\n height: 100%;\n left: 0;\n top: 0;\n z-index: 0;\n transition: left 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n}\n</style>"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAsBA,UAAM,EAAE,eAAc,IAAK,gBAAe;AAC1C,UAAM,OAAO;AAEb,UAAM,QAAQ;AAQd,UAAM,cAAc,IAAI,CAAC;AAGzB,UAAM,sBAAsB,MAAM;AAChC,UAAI,MAAM,eAAe,QAAW;AAClC,cAAM,gBAAgB,MAAM,KAAK,UAAU,SAAO,IAAI,UAAU,MAAM,UAAU;AAChF,YAAI,kBAAkB,IAAI;AACxB,sBAAY,QAAQ;AAAA,QACtB;AAAA,MACF,WAAW,MAAM,aAAa,QAAW;AACvC,cAAM,gBAAgB,MAAM,KAAK,UAAU,SAAO,IAAI,UAAU,MAAM,QAAQ;AAC9E,YAAI,kBAAkB,IAAI;AACxB,sBAAY,QAAQ;AAAA,QACtB;AAAA,MACF;AAAA,IACF;AAGA,wBAAmB;AAGnB,UAAM,MAAM,MAAM,UAAU,mBAAmB;AAC/C,UAAM,MAAM,MAAM,YAAY,mBAAmB;AAGjD,UAAM,aAAa,CAAC,OAAO,QAAQ;AACjC,UAAI,MAAM,eAAe,QAAW;AAClC,eAAO,IAAI,UAAU,MAAM;AAAA,MAC7B,WAAW,MAAM,aAAa,QAAW;AACvC,eAAO,IAAI,UAAU,MAAM;AAAA,MAC7B;AACA,aAAO,UAAU,YAAY;AAAA,IAC/B;AAGA,aAAS,eAAe,OAAO,KAAK;AAClC,kBAAY,QAAQ;AAGpB,WAAK,mBAAmB,IAAI,KAAK;AACjC,WAAK,aAAa,EAAE,OAAO,IAAG,CAAE;AAGhC,UAAI,MAAM,eAAe,QAAW;AAClC,aAAK,qBAAqB,IAAI,KAAK;AAAA,MACrC;AAGA,UAAI,MAAM,SAAU,OAAM,SAAS,GAAG;AAAA,IACxC;;;;;;;;;;;;;;;;;;"}
@@ -1,9 +1,11 @@
1
- import { createElementBlock, openBlock, createElementVNode, Fragment, renderList, toDisplayString, renderSlot, createTextVNode } from "vue";
1
+ import { createElementBlock, openBlock, createElementVNode, Fragment, renderList, toDisplayString, normalizeClass, renderSlot, createTextVNode } from "vue";
2
+ import { useRouter } from "vue-router";
2
3
  /* empty css */
3
4
  import _export_sfc from "../../../../_virtual/_plugin-vue_export-helper.js";
4
5
  const _hoisted_1 = { class: "o-x-scroll" };
5
6
  const _hoisted_2 = { class: "w-100 custom-table" };
6
7
  const _hoisted_3 = { class: "t-left bg-light t-black" };
8
+ const _hoisted_4 = ["onClick"];
7
9
  const _sfc_main = {
8
10
  __name: "Table",
9
11
  props: {
@@ -18,10 +20,21 @@ const _sfc_main = {
18
20
  type: Array,
19
21
  required: true,
20
22
  default: () => []
23
+ },
24
+ // функция (row) => '/path' для кликабельных строк
25
+ rowLink: {
26
+ type: Function,
27
+ default: null
21
28
  }
22
29
  },
23
30
  setup(__props) {
31
+ const router = useRouter();
24
32
  const props = __props;
33
+ function onRowClick(row) {
34
+ if (!props.rowLink) return;
35
+ const path = props.rowLink(row);
36
+ if (path) router.push(path);
37
+ }
25
38
  const getNestedValue = (obj, path) => path.split(".").reduce((o, k) => o ? o[k] : void 0, obj);
26
39
  return (_ctx, _cache) => {
27
40
  return openBlock(), createElementBlock("div", _hoisted_1, [
@@ -38,7 +51,11 @@ const _sfc_main = {
38
51
  ]),
39
52
  createElementVNode("tbody", null, [
40
53
  (openBlock(true), createElementBlock(Fragment, null, renderList(props.items, (row, rowIndex) => {
41
- return openBlock(), createElementBlock("tr", { key: rowIndex }, [
54
+ return openBlock(), createElementBlock("tr", {
55
+ key: rowIndex,
56
+ class: normalizeClass({ "cursor-pointer hover-bg-light": __props.rowLink }),
57
+ onClick: ($event) => onRowClick(row)
58
+ }, [
42
59
  (openBlock(true), createElementBlock(Fragment, null, renderList(__props.columns, (col) => {
43
60
  return openBlock(), createElementBlock("td", {
44
61
  key: col.key,
@@ -52,7 +69,7 @@ const _sfc_main = {
52
69
  ], true)
53
70
  ]);
54
71
  }), 128))
55
- ]);
72
+ ], 10, _hoisted_4);
56
73
  }), 128))
57
74
  ])
58
75
  ])
@@ -60,7 +77,7 @@ const _sfc_main = {
60
77
  };
61
78
  }
62
79
  };
63
- const Table = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-76864ff9"]]);
80
+ const Table = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-5927c7af"]]);
64
81
  export {
65
82
  Table as default
66
83
  };
@@ -1 +1 @@
1
- {"version":3,"file":"Table.vue.js","sources":["../../../../../src/components/Table/Table.vue"],"sourcesContent":["<!-- src/components/Table/Table.vue -->\n<script setup>\nimport { defineProps, computed } from 'vue'\n\nconst props = defineProps({\n // принимаем уже отформатированный набор строк\n items: {\n type: Array,\n required: true,\n default: () => []\n },\n // массив колонок { key, label }\n columns: {\n type: Array,\n required: true,\n default: () => []\n }\n})\n\n// если вам нужен геттер для вложенных свойств\nconst getNestedValue = (obj, path) => path.split('.').reduce((o, k) => (o ? o[k] : undefined), obj) \n</script>\n\n<template>\n <div class=\"o-x-scroll\">\n <table class=\"w-100 custom-table\">\n <thead class=\"t-left bg-light t-black\">\n <tr>\n <th v-for=\"col in columns\" :key=\"col.key\" class=\"pd-small fw-medium\">\n {{ col.label }}\n </th>\n </tr>\n </thead>\n <tbody>\n <tr v-for=\"(row, rowIndex) in props.items\" :key=\"rowIndex\">\n <td v-for=\"col in columns\" :key=\"col.key\" class=\"pd-small br-t-1px br-light t-left\">\n <!-- Передаем полный объект row и текущее значение -->\n <slot :name=\"`cell-${col.key}`\" :value=\"getNestedValue(row, col.key)\" :row=\"row\">\n {{ getNestedValue(row, col.key) }}\n </slot>\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n</template>\n\n<style lang=\"scss\" scoped>\n.custom-table {\n border-collapse: collapse;\n td {\n vertical-align: middle;\n }\n}\n</style>"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAIA,UAAM,QAAQ;AAgBd,UAAM,iBAAiB,CAAC,KAAK,SAAS,KAAK,MAAM,GAAG,EAAE,OAAO,CAAC,GAAG,MAAO,IAAI,EAAE,CAAC,IAAI,QAAY,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"Table.vue.js","sources":["../../../../../src/components/Table/Table.vue"],"sourcesContent":["<!-- src/components/Table/Table.vue -->\n<script setup>\nimport { defineProps, computed } from 'vue'\n\nimport { useRouter } from 'vue-router'\n\nconst router = useRouter()\n\nconst props = defineProps({\n // принимаем уже отформатированный набор строк\n items: {\n type: Array,\n required: true,\n default: () => []\n },\n // массив колонок { key, label }\n columns: {\n type: Array,\n required: true,\n default: () => []\n },\n // функция (row) => '/path' для кликабельных строк\n rowLink: {\n type: Function,\n default: null\n }\n})\n\nfunction onRowClick(row) {\n if (!props.rowLink) return\n const path = props.rowLink(row)\n if (path) router.push(path)\n}\n\n// если вам нужен геттер для вложенных свойств\nconst getNestedValue = (obj, path) => path.split('.').reduce((o, k) => (o ? o[k] : undefined), obj) \n</script>\n\n<template>\n <div class=\"o-x-scroll\">\n <table class=\"w-100 custom-table\">\n <thead class=\"t-left bg-light t-black\">\n <tr>\n <th v-for=\"col in columns\" :key=\"col.key\" class=\"pd-small fw-medium\">\n {{ col.label }}\n </th>\n </tr>\n </thead>\n <tbody>\n <tr v-for=\"(row, rowIndex) in props.items\" :key=\"rowIndex\" :class=\"{ 'cursor-pointer hover-bg-light': rowLink }\" @click=\"onRowClick(row)\">\n <td v-for=\"col in columns\" :key=\"col.key\" class=\"pd-small br-t-1px br-light t-left\">\n <!-- Передаем полный объект row и текущее значение -->\n <slot :name=\"`cell-${col.key}`\" :value=\"getNestedValue(row, col.key)\" :row=\"row\">\n {{ getNestedValue(row, col.key) }}\n </slot>\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n</template>\n\n<style lang=\"scss\" scoped>\n.custom-table {\n border-collapse: collapse;\n td {\n vertical-align: middle;\n }\n}\n</style>"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMA,UAAM,SAAS,UAAS;AAExB,UAAM,QAAQ;AAoBd,aAAS,WAAW,KAAK;AACvB,UAAI,CAAC,MAAM,QAAS;AACpB,YAAM,OAAO,MAAM,QAAQ,GAAG;AAC9B,UAAI,KAAM,QAAO,KAAK,IAAI;AAAA,IAC5B;AAGA,UAAM,iBAAiB,CAAC,KAAK,SAAS,KAAK,MAAM,GAAG,EAAE,OAAO,CAAC,GAAG,MAAO,IAAI,EAAE,CAAC,IAAI,QAAY,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,5 +1,5 @@
1
1
  import { ref, createElementBlock, openBlock, renderSlot, createVNode, Transition, withCtx, createCommentVNode, normalizeStyle, createElementVNode, toDisplayString } from "vue";
2
- /* empty css */
2
+ /* empty css */
3
3
  const _sfc_main = {
4
4
  __name: "Tooltip",
5
5
  props: {
@@ -46,4 +46,4 @@ const _sfc_main = {
46
46
  export {
47
47
  _sfc_main as default
48
48
  };
49
- //# sourceMappingURL=Tooltip.vue2.js.map
49
+ //# sourceMappingURL=Tooltip.vue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Tooltip.vue.js","sources":["../../../../../src/components/Tooltip/Tooltip.vue"],"sourcesContent":["<template>\n <div class=\"cursor-pointer tooltip-container\" @mouseover=\"showTooltip\" @mouseleave=\"hideTooltip\">\n <slot></slot>\n <Transition name=\"tooltip\">\n <div v-if=\"visible\" class=\"tooltip-content\" :style=\"{ left: posX, top: posY }\">\n <span>{{ text }}</span>\n </div>\n </Transition>\n </div>\n</template>\n\n<script setup>\nimport { ref } from 'vue';\n\ndefineProps({\n text: {\n type: String,\n required: true\n }\n});\n\nconst visible = ref(false);\nconst posX = ref('0px');\nconst posY = ref('0px');\n\nfunction showTooltip(event) {\n visible.value = true;\n posX.value = `${(event.clientX / 100) + 10}px`;\n posY.value = `${(event.clientY / 100) + 10}px`;\n}\n\nfunction hideTooltip() {\n visible.value = false;\n}\n</script>\n\n<style lang=\"scss\">\n.tooltip-container {\n position: relative;\n display: inline-block;\n}\n\n.tooltip-content {\n position: absolute;\n width: max-content;\n z-index: 1000;\n background: #333;\n color: #fff;\n padding: 5px;\n border-radius: 3px;\n font-size: 14px;\n pointer-events: none;\n}\n\n.tooltip-enter-active,\n.tooltip-leave-active {\n transition: opacity 0.2s ease;\n}\n\n.tooltip-enter-from,\n.tooltip-leave-to {\n opacity: 0;\n}\n</style>\n"],"names":[],"mappings":";;;;;;;;;;;AAqBA,UAAM,UAAU,IAAI,KAAK;AACzB,UAAM,OAAO,IAAI,KAAK;AACtB,UAAM,OAAO,IAAI,KAAK;AAEtB,aAAS,YAAY,OAAO;AAC1B,cAAQ,QAAQ;AAChB,WAAK,QAAQ,GAAI,MAAM,UAAU,MAAO,EAAE;AAC1C,WAAK,QAAQ,GAAI,MAAM,UAAU,MAAO,EAAE;AAAA,IAC5C;AAEA,aAAS,cAAc;AACrB,cAAQ,QAAQ;AAAA,IAClB;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,5 +1,5 @@
1
1
  import { createBlock, openBlock, unref, mergeProps, withCtx, createElementBlock, Fragment, renderList, renderSlot, createVNode } from "vue";
2
- import { VueDraggableNext } from "../../../../node_modules/.pnpm/vue-draggable-next@2.2.1_sortablejs@1.15.6_vue@3.5.13_typescript@5.8.3_/node_modules/vue-draggable-next/dist/vue-draggable-next.esm-bundler.js";
2
+ import { VueDraggableNext } from "../../../node_modules/.pnpm/vue-draggable-next@2.3.0_sortablejs@1.15.7_vue@3.5.13/node_modules/vue-draggable-next/dist/vue-draggable-next.esm-bundler.js";
3
3
  const _sfc_main = {
4
4
  __name: "Tree",
5
5
  props: {
@@ -5,7 +5,7 @@ import _sfc_main$1 from "../../modules/icons/navigation/IconCross.vue.js";
5
5
  import _export_sfc from "../../../../_virtual/_plugin-vue_export-helper.js";
6
6
  const _hoisted_1 = {
7
7
  key: 0,
8
- class: "t-transp mn-r-small"
8
+ class: "opacity-50 mn-r-small"
9
9
  };
10
10
  const _hoisted_2 = {
11
11
  key: 1,
@@ -115,7 +115,7 @@ const _sfc_main = {
115
115
  };
116
116
  }
117
117
  };
118
- const Upload = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-efdb42f1"]]);
118
+ const Upload = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-2a3fd57e"]]);
119
119
  export {
120
120
  Upload as default
121
121
  };
@@ -1 +1 @@
1
- {"version":3,"file":"Upload.vue2.js","sources":["../../../../../src/components/Upload/Upload.vue"],"sourcesContent":["<template>\n <div :class=\"[$attrs.class, { 'bg-fourth-nano': validation }]\" class=\"flex-center flex-nowrap flex\">\n <!-- Label -->\n <div v-if=\"label\" class=\"t-transp mn-r-small\">\n <span>{{label}}</span>\n </div>\n\n <div v-if=\"fileURL\" class=\"flex-nowrap flex w-100 flex-v-center\">\n <a :href=\"fileURL\" class=\"w-100\" target=\"_blank\">{{ fileURL }}</a>\n\n <IconCross \n @click=\"removeFile\" \n class=\"cursor-pointer t-center flex-center flex radius-extra i-medium bg-red pd-micro\"\n />\n\n </div>\n\n <div v-else class=\"w-100\">\n <!-- Input / File -->\n <input \n @change=\"onFileChange\"\n type=\"file\"\n class=\"w-100\"\n :placeholder=\"placeholder\"\n :multiple=\"multiple\"\n id=\"photo\"\n name=\"photo\"\n >\n </div>\n </div>\n\n <!-- Validation -->\n <transition mode=\"out-in\" name=\"fade\">\n <div v-if=\"validation\" class=\"mn-t-thin mn-b-thin invalid-feedback\">\n * {{validation.message}}\n </div>\n </transition>\n</template>\n\n<script setup>\nimport { ref, computed, watch} from 'vue'\nimport axios from 'axios';\n\nimport IconCross from '@martyrs/src/modules/icons/navigation/IconCross.vue';\n\nconst emit = defineEmits(['update:field', 'focus', 'blur', 'file-change']);\n\nconst props = defineProps({\n field: String,\n label: null,\n type: {\n type: String,\n default: 'file'\n },\n placeholder: 'Upload a file',\n validation: false,\n uploadPath: {\n type: String,\n default: '/files'\n },\n multiple: {\n type: Boolean,\n default: false\n }\n});\n\nconst fileURL = ref(props.field);\nconst fileInput = ref(null);\n\nwatch(() => props.field, (newValue) => {\n fileURL.value = newValue;\n});\n\n// Handles file change event\n\nasync function onFileChange(e) {\n\n let file = e.target.files[0];\n let formData = new FormData();\n\n formData.append(\"file\", file);\n\n try {\n const $axios = axios.create({baseURL: process.env.API_URL, withCredentials: true}) \n\n let response = await $axios.post(`/api/upload/${props.type}?folderName=${encodeURIComponent(props.uploadPath)}`, formData, {\n headers: {\n \"Content-Type\": \"multipart/form-data\"\n }\n });\n\n fileURL.value = response.data[0].filepath;\n emit('file-change', fileURL.value);\n } catch (error) {\n console.error(error);\n }\n}\n\nconst removeFile = () => {\n fileURL.value = null;\n emit('update:field', null); // Обновляем значение, связанное с v-model:field\n emit('file-change', null); // Посылаем событие об изменении файла\n};\n</script>\n\n<style lang=\"scss\" scoped>\n input, span {\n line-height: 1;\n color: inherit;\n }\n</style>\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6CA,UAAM,OAAO;AAEb,UAAM,QAAQ;AAmBd,UAAM,UAAU,IAAI,MAAM,KAAK;AACb,QAAI,IAAI;AAE1B,UAAM,MAAM,MAAM,OAAO,CAAC,aAAa;AACrC,cAAQ,QAAQ;AAAA,IAClB,CAAC;AAID,mBAAe,aAAa,GAAG;AAE7B,UAAI,OAAO,EAAE,OAAO,MAAM,CAAC;AAC3B,UAAI,WAAW,IAAI,SAAQ;AAE3B,eAAS,OAAO,QAAQ,IAAI;AAE5B,UAAI;AACF,cAAM,SAAS,MAAM,OAAO,EAAC,SAAS,QAAQ,IAAI,SAAS,iBAAiB,KAAI,CAAC;AAEjF,YAAI,WAAW,MAAM,OAAO,KAAK,eAAe,MAAM,IAAI,eAAe,mBAAmB,MAAM,UAAU,CAAC,IAAI,UAAU;AAAA,UACzH,SAAS;AAAA,YACP,gBAAgB;AAAA,UACxB;AAAA,QACA,CAAK;AAED,gBAAQ,QAAQ,SAAS,KAAK,CAAC,EAAE;AACjC,aAAK,eAAe,QAAQ,KAAK;AAAA,MACnC,SAAS,OAAO;AACd,gBAAQ,MAAM,KAAK;AAAA,MACrB;AAAA,IACF;AAEA,UAAM,aAAa,MAAM;AACvB,cAAQ,QAAQ;AAChB,WAAK,gBAAgB,IAAI;AACzB,WAAK,eAAe,IAAI;AAAA,IAC1B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"Upload.vue2.js","sources":["../../../../../src/components/Upload/Upload.vue"],"sourcesContent":["<template>\n <div :class=\"[$attrs.class, { 'bg-fourth-nano': validation }]\" class=\"flex-center flex-nowrap flex\">\n <!-- Label -->\n <div v-if=\"label\" class=\"opacity-50 mn-r-small\">\n <span>{{label}}</span>\n </div>\n\n <div v-if=\"fileURL\" class=\"flex-nowrap flex w-100 flex-v-center\">\n <a :href=\"fileURL\" class=\"w-100\" target=\"_blank\">{{ fileURL }}</a>\n\n <IconCross \n @click=\"removeFile\" \n class=\"cursor-pointer t-center flex-center flex radius-extra i-medium bg-red pd-micro\"\n />\n\n </div>\n\n <div v-else class=\"w-100\">\n <!-- Input / File -->\n <input \n @change=\"onFileChange\"\n type=\"file\"\n class=\"w-100\"\n :placeholder=\"placeholder\"\n :multiple=\"multiple\"\n id=\"photo\"\n name=\"photo\"\n >\n </div>\n </div>\n\n <!-- Validation -->\n <transition mode=\"out-in\" name=\"fade\">\n <div v-if=\"validation\" class=\"mn-t-thin mn-b-thin invalid-feedback\">\n * {{validation.message}}\n </div>\n </transition>\n</template>\n\n<script setup>\nimport { ref, computed, watch} from 'vue'\nimport axios from 'axios';\n\nimport IconCross from '@martyrs/src/modules/icons/navigation/IconCross.vue';\n\nconst emit = defineEmits(['update:field', 'focus', 'blur', 'file-change']);\n\nconst props = defineProps({\n field: String,\n label: null,\n type: {\n type: String,\n default: 'file'\n },\n placeholder: 'Upload a file',\n validation: false,\n uploadPath: {\n type: String,\n default: '/files'\n },\n multiple: {\n type: Boolean,\n default: false\n }\n});\n\nconst fileURL = ref(props.field);\nconst fileInput = ref(null);\n\nwatch(() => props.field, (newValue) => {\n fileURL.value = newValue;\n});\n\n// Handles file change event\n\nasync function onFileChange(e) {\n\n let file = e.target.files[0];\n let formData = new FormData();\n\n formData.append(\"file\", file);\n\n try {\n const $axios = axios.create({baseURL: process.env.API_URL, withCredentials: true}) \n\n let response = await $axios.post(`/api/upload/${props.type}?folderName=${encodeURIComponent(props.uploadPath)}`, formData, {\n headers: {\n \"Content-Type\": \"multipart/form-data\"\n }\n });\n\n fileURL.value = response.data[0].filepath;\n emit('file-change', fileURL.value);\n } catch (error) {\n console.error(error);\n }\n}\n\nconst removeFile = () => {\n fileURL.value = null;\n emit('update:field', null); // Обновляем значение, связанное с v-model:field\n emit('file-change', null); // Посылаем событие об изменении файла\n};\n</script>\n\n<style lang=\"scss\" scoped>\n input, span {\n line-height: 1;\n color: inherit;\n }\n</style>\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6CA,UAAM,OAAO;AAEb,UAAM,QAAQ;AAmBd,UAAM,UAAU,IAAI,MAAM,KAAK;AACb,QAAI,IAAI;AAE1B,UAAM,MAAM,MAAM,OAAO,CAAC,aAAa;AACrC,cAAQ,QAAQ;AAAA,IAClB,CAAC;AAID,mBAAe,aAAa,GAAG;AAE7B,UAAI,OAAO,EAAE,OAAO,MAAM,CAAC;AAC3B,UAAI,WAAW,IAAI,SAAQ;AAE3B,eAAS,OAAO,QAAQ,IAAI;AAE5B,UAAI;AACF,cAAM,SAAS,MAAM,OAAO,EAAC,SAAS,QAAQ,IAAI,SAAS,iBAAiB,KAAI,CAAC;AAEjF,YAAI,WAAW,MAAM,OAAO,KAAK,eAAe,MAAM,IAAI,eAAe,mBAAmB,MAAM,UAAU,CAAC,IAAI,UAAU;AAAA,UACzH,SAAS;AAAA,YACP,gBAAgB;AAAA,UACxB;AAAA,QACA,CAAK;AAED,gBAAQ,QAAQ,SAAS,KAAK,CAAC,EAAE;AACjC,aAAK,eAAe,QAAQ,KAAK;AAAA,MACnC,SAAS,OAAO;AACd,gBAAQ,MAAM,KAAK;AAAA,MACrB;AAAA,IACF;AAEA,UAAM,aAAa,MAAM;AACvB,cAAQ,QAAQ;AAChB,WAAK,gBAAgB,IAAI;AACzB,WAAK,eAAe,IAAI;AAAA,IAC1B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,6 +1,6 @@
1
1
  import { ref, computed, watch, createElementBlock, openBlock, normalizeClass, createElementVNode, createCommentVNode, withModifiers, createVNode, toDisplayString } from "vue";
2
2
  import axios from "axios";
3
- import Loader from "../Loader/Loader.vue2.js";
3
+ import Loader from "../Loader/Loader.vue.js";
4
4
  import _sfc_main$1 from "../../modules/icons/navigation/IconUpload.vue.js";
5
5
  import _sfc_main$2 from "../../modules/icons/navigation/IconDelete.vue.js";
6
6
  /* empty css */
@@ -28,7 +28,7 @@ const _hoisted_7 = {
28
28
  class: "upload-text-block flex flex-column"
29
29
  };
30
30
  const _hoisted_8 = { class: "mn-b-small fw-medium" };
31
- const _hoisted_9 = { class: "mn-b-medium t-transp" };
31
+ const _hoisted_9 = { class: "mn-b-medium opacity-50" };
32
32
  const _hoisted_10 = { key: 0 };
33
33
  const _hoisted_11 = {
34
34
  key: 1,
@@ -212,7 +212,7 @@ const _sfc_main = {
212
212
  };
213
213
  }
214
214
  };
215
- const UploadImage = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-24b590ef"]]);
215
+ const UploadImage = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-3f0ff1cb"]]);
216
216
  export {
217
217
  UploadImage as default
218
218
  };
@@ -1 +1 @@
1
- {"version":3,"file":"UploadImage.vue.js","sources":["../../../../../src/components/UploadImage/UploadImage.vue"],"sourcesContent":["<template>\n <div class=\"upload-image-wrapper flex-v-center flex-nowrap flex gap-small\" :class=\"{'with-text': text}\">\n <div \n @click=\"onComponentClick\"\n @drop=\"onDrop\"\n @dragover.prevent\n class=\"pos-relative radius-small br-1px br-black-transp-10 h-100 aspect-1x1 flex-v-center flex-h-center flex cursor-pointer\"\n >\n <img loading=\"lazy\" \n v-if=\"imageUrl || photo || previewUrl\" \n :src=\"previewUrl || (FILE_SERVER_URL || '') + (imageUrl || photo)\"\n alt=\"Uploaded image\" \n class=\"pos-absolute radius-small o-hidden z-index-1 w-100 h-100 object-fit-cover\"\n />\n \n <div v-else class=\"flex-v-center pos-relative z-index-2 flex-h-center flex w-100 h-100 radius-small bg-second\" >\n <IconUpload class=\"i-medium upload-icon\" fill=\"rgb(var(--white))\" />\n </div>\n \n <!-- Hover controls -->\n <div class=\"z-index-2 pos-relative hover-controls pos-absolute w-100 h-100 flex-v-center flex-h-center flex\">\n <div v-if=\"!imageUrl && !photo && !previewUrl\" class=\"hover-upload-icon\">\n <IconUpload class=\"i-medium\" fill=\"rgb(var(--white))\" />\n </div>\n <div v-else class=\"hover-buttons flex gap-small\">\n <button @click.stop=\"onComponentClick\" class=\"hover-button radius-small pd-thin bg-main t-white br-none cursor-pointer\">\n <IconUpload class=\"i-medium\" fill=\"rgb(var(--white))\" />\n </button>\n <button @click.stop=\"deleteImage\" class=\"hover-button radius-small pd-thin bg-danger t-white br-none cursor-pointer\">\n <IconDelete class=\"i-medium\" fill=\"rgb(var(--white))\" />\n </button>\n </div>\n </div>\n \n <!-- Loading overlay -->\n <div v-if=\"loading\" class=\"z-index-2 loading-overlay pos-absolute w-100 h-100 flex-v-center flex-h-center flex\">\n <Loader :centered=\"false\" />\n </div>\n \n <input type=\"file\" name=\"file\" ref=\"fileInput\" @change=\"onFileChange\" style=\"display: none\"/>\n </div>\n \n <!-- Text block -->\n <div v-if=\"text\" class=\"upload-text-block flex flex-column\">\n <span class=\"mn-b-small fw-medium\">{{ textConfig.title }}</span>\n <span class=\"mn-b-medium t-transp\">{{ textConfig.subtitle }}</span>\n <div v-if=\"!imageUrl && !photo && !previewUrl\">\n <button @click=\"onComponentClick\" class=\"button button-small w-max bg-main t-black cursor-pointer\">\n {{ textConfig.buttonText }}\n </button>\n </div>\n <div v-else class=\"flex gap-thin\">\n <button @click=\"onComponentClick\" class=\"button button-small w-max bg-second t-white cursor-pointer\">\n Upload \n </button>\n <button @click=\"deleteImage\" class=\"button button-small w-max bg-red t-white cursor-pointer\">\n Delete\n </button>\n </div>\n </div>\n </div>\n</template>\n\n<script setup>\nimport { ref, watch, computed } from 'vue';\nimport axios from 'axios';\nimport Loader from '@martyrs/src/components/Loader/Loader.vue';\nimport IconUpload from '@martyrs/src/modules/icons/navigation/IconUpload.vue';\nimport IconDelete from '@martyrs/src/modules/icons/navigation/IconDelete.vue';\n\nconst imageUrl = ref(null);\nconst fileInput = ref(null);\nconst previewUrl = ref(null);\nconst loading = ref(false);\n\nconst props = defineProps({\n uploadPath: {\n type: String,\n required: true\n },\n photo: {\n type: String,\n default: null\n },\n text: {\n type: [Object, Boolean],\n default: null\n }\n});\n\nconst emit = defineEmits(['update:photo', 'error']);\n\n// Text configuration with defaults\nconst textConfig = computed(() => {\n const defaults = {\n title: 'Upload Image',\n subtitle: 'Drag & drop your image here or click button. Supported: JPG, PNG, GIF. Max size: 2MB',\n buttonText: 'Choose Image'\n };\n \n if (props.text === true) {\n return defaults;\n } else if (typeof props.text === 'object' && props.text !== null) {\n return {\n title: props.text.title || defaults.title,\n subtitle: props.text.subtitle || defaults.subtitle,\n buttonText: props.text.buttonText || defaults.buttonText\n };\n }\n \n return defaults;\n});\n\nwatch(props, ({photo}) => {\n if(photo) imageUrl.value = photo;\n});\n\nfunction onComponentClick() {\n fileInput.value.click();\n}\n\nasync function onFileChange(e) {\n let file = e.target.files[0];\n if (!file) {\n console.error(\"No file selected\");\n return;\n }\n \n // Create preview from file\n const reader = new FileReader();\n reader.onload = (e) => {\n previewUrl.value = e.target.result;\n };\n reader.readAsDataURL(file);\n \n let formData = new FormData();\n formData.append(\"file\", file);\n\n console.log(\"Sending file:\", file.name); // Логируем имя файла перед отправкой\n \n loading.value = true;\n\n try {\n const $axios = axios.create({ baseURL: process.env.API_URL, withCredentials: true }); \n\n let response = await $axios.post(`/api/upload/multiple?folderName=${encodeURIComponent(props.uploadPath)}`, formData);\n console.log(\"Upload response:\", response); // Логируем ответ сервера\n imageUrl.value = response.data[0].filepath;\n previewUrl.value = null; // Clear preview after successful upload\n emit('update:photo', imageUrl.value);\n } catch (error) {\n emit('error', error);\n console.error(\"Upload error:\", error); // Логируем ошибку\n previewUrl.value = null; // Clear preview on error\n } finally {\n loading.value = false;\n }\n}\n\n\nfunction onDrop(e) {\n e.preventDefault();\n onFileChange({\n target: {\n files: e.dataTransfer.files\n }\n });\n}\n\nfunction deleteImage() {\n imageUrl.value = null;\n previewUrl.value = null;\n emit('update:photo', null);\n // Reset file input\n if (fileInput.value) {\n fileInput.value.value = '';\n }\n}\n</script>\n\n<style scoped>\n.image-upload-area {\n overflow: hidden;\n transition: all 0.3s ease;\n}\n\n.image-upload-area:hover {\n opacity: 0.95;\n}\n\n/* Hover controls */\n.hover-controls {\n top: 0;\n left: 0;\n background: rgba(0, 0, 0, 0.7);\n opacity: 0;\n transition: opacity 0.3s ease;\n pointer-events: none;\n}\n\n.image-upload-area:hover .hover-controls {\n opacity: 1;\n pointer-events: all;\n}\n\n.hover-upload-icon {\n animation: pulse 1.5s infinite;\n}\n\n.hover-button {\n transition: transform 0.2s ease, background-color 0.2s ease;\n}\n\n.hover-button:hover {\n transform: scale(1.1);\n}\n\n.hover-button:active {\n transform: scale(0.95);\n}\n\n/* Loading overlay */\n.loading-overlay {\n top: 0;\n left: 0;\n background: rgba(255, 255, 255, 0.9);\n z-index: 10;\n}\n\n/* Animations */\n@keyframes pulse {\n 0% {\n transform: scale(1);\n opacity: 1;\n }\n 50% {\n transform: scale(1.05);\n opacity: 0.8;\n }\n 100% {\n transform: scale(1);\n opacity: 1;\n }\n}\n\n/* Upload icon in empty state */\n.upload-icon {\n transition: transform 0.3s ease;\n}\n\n.image-upload-area:hover .upload-icon {\n transform: scale(1.1);\n}\n</style>\n"],"names":["e"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsEA,UAAM,WAAW,IAAI,IAAI;AACzB,UAAM,YAAY,IAAI,IAAI;AAC1B,UAAM,aAAa,IAAI,IAAI;AAC3B,UAAM,UAAU,IAAI,KAAK;AAEzB,UAAM,QAAQ;AAed,UAAM,OAAO;AAGb,UAAM,aAAa,SAAS,MAAM;AAChC,YAAM,WAAW;AAAA,QACf,OAAO;AAAA,QACP,UAAU;AAAA,QACV,YAAY;AAAA,MAChB;AAEE,UAAI,MAAM,SAAS,MAAM;AACvB,eAAO;AAAA,MACT,WAAW,OAAO,MAAM,SAAS,YAAY,MAAM,SAAS,MAAM;AAChE,eAAO;AAAA,UACL,OAAO,MAAM,KAAK,SAAS,SAAS;AAAA,UACpC,UAAU,MAAM,KAAK,YAAY,SAAS;AAAA,UAC1C,YAAY,MAAM,KAAK,cAAc,SAAS;AAAA,QACpD;AAAA,MACE;AAEA,aAAO;AAAA,IACT,CAAC;AAED,UAAM,OAAO,CAAC,EAAC,MAAK,MAAM;AACxB,UAAG,MAAO,UAAS,QAAQ;AAAA,IAC7B,CAAC;AAED,aAAS,mBAAmB;AAC1B,gBAAU,MAAM,MAAK;AAAA,IACvB;AAEA,mBAAe,aAAa,GAAG;AAC7B,UAAI,OAAO,EAAE,OAAO,MAAM,CAAC;AAC3B,UAAI,CAAC,MAAM;AACT,gBAAQ,MAAM,kBAAkB;AAChC;AAAA,MACF;AAGA,YAAM,SAAS,IAAI,WAAU;AAC7B,aAAO,SAAS,CAACA,OAAM;AACrB,mBAAW,QAAQA,GAAE,OAAO;AAAA,MAC9B;AACA,aAAO,cAAc,IAAI;AAEzB,UAAI,WAAW,IAAI,SAAQ;AAC3B,eAAS,OAAO,QAAQ,IAAI;AAE5B,cAAQ,IAAI,iBAAiB,KAAK,IAAI;AAEtC,cAAQ,QAAQ;AAEhB,UAAI;AACF,cAAM,SAAS,MAAM,OAAO,EAAE,SAAS,QAAQ,IAAI,SAAS,iBAAiB,KAAI,CAAE;AAEnF,YAAI,WAAW,MAAM,OAAO,KAAK,mCAAmC,mBAAmB,MAAM,UAAU,CAAC,IAAI,QAAQ;AACpH,gBAAQ,IAAI,oBAAoB,QAAQ;AACxC,iBAAS,QAAQ,SAAS,KAAK,CAAC,EAAE;AAClC,mBAAW,QAAQ;AACnB,aAAK,gBAAgB,SAAS,KAAK;AAAA,MACrC,SAAS,OAAO;AACd,aAAK,SAAS,KAAK;AACnB,gBAAQ,MAAM,iBAAiB,KAAK;AACpC,mBAAW,QAAQ;AAAA,MACrB,UAAC;AACC,gBAAQ,QAAQ;AAAA,MAClB;AAAA,IACF;AAGA,aAAS,OAAO,GAAG;AACjB,QAAE,eAAc;AAChB,mBAAa;AAAA,QACX,QAAQ;AAAA,UACN,OAAO,EAAE,aAAa;AAAA,QAC5B;AAAA,MACA,CAAG;AAAA,IACH;AAEA,aAAS,cAAc;AACrB,eAAS,QAAQ;AACjB,iBAAW,QAAQ;AACnB,WAAK,gBAAgB,IAAI;AAEzB,UAAI,UAAU,OAAO;AACnB,kBAAU,MAAM,QAAQ;AAAA,MAC1B;AAAA,IACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"UploadImage.vue.js","sources":["../../../../../src/components/UploadImage/UploadImage.vue"],"sourcesContent":["<template>\n <div class=\"upload-image-wrapper flex-v-center flex-nowrap flex gap-small\" :class=\"{'with-text': text}\">\n <div \n @click=\"onComponentClick\"\n @drop=\"onDrop\"\n @dragover.prevent\n class=\"pos-relative radius-small br-1px br-black-transp-10 h-100 aspect-1x1 flex-v-center flex-h-center flex cursor-pointer\"\n >\n <img loading=\"lazy\" \n v-if=\"imageUrl || photo || previewUrl\" \n :src=\"previewUrl || (FILE_SERVER_URL || '') + (imageUrl || photo)\"\n alt=\"Uploaded image\" \n class=\"pos-absolute radius-small o-hidden z-index-1 w-100 h-100 object-fit-cover\"\n />\n \n <div v-else class=\"flex-v-center pos-relative z-index-2 flex-h-center flex w-100 h-100 radius-small bg-second\" >\n <IconUpload class=\"i-medium upload-icon\" fill=\"rgb(var(--white))\" />\n </div>\n \n <!-- Hover controls -->\n <div class=\"z-index-2 pos-relative hover-controls pos-absolute w-100 h-100 flex-v-center flex-h-center flex\">\n <div v-if=\"!imageUrl && !photo && !previewUrl\" class=\"hover-upload-icon\">\n <IconUpload class=\"i-medium\" fill=\"rgb(var(--white))\" />\n </div>\n <div v-else class=\"hover-buttons flex gap-small\">\n <button @click.stop=\"onComponentClick\" class=\"hover-button radius-small pd-thin bg-main t-white br-none cursor-pointer\">\n <IconUpload class=\"i-medium\" fill=\"rgb(var(--white))\" />\n </button>\n <button @click.stop=\"deleteImage\" class=\"hover-button radius-small pd-thin bg-danger t-white br-none cursor-pointer\">\n <IconDelete class=\"i-medium\" fill=\"rgb(var(--white))\" />\n </button>\n </div>\n </div>\n \n <!-- Loading overlay -->\n <div v-if=\"loading\" class=\"z-index-2 loading-overlay pos-absolute w-100 h-100 flex-v-center flex-h-center flex\">\n <Loader :centered=\"false\" />\n </div>\n \n <input type=\"file\" name=\"file\" ref=\"fileInput\" @change=\"onFileChange\" style=\"display: none\"/>\n </div>\n \n <!-- Text block -->\n <div v-if=\"text\" class=\"upload-text-block flex flex-column\">\n <span class=\"mn-b-small fw-medium\">{{ textConfig.title }}</span>\n <span class=\"mn-b-medium opacity-50\">{{ textConfig.subtitle }}</span>\n <div v-if=\"!imageUrl && !photo && !previewUrl\">\n <button @click=\"onComponentClick\" class=\"button button-small w-max bg-main t-black cursor-pointer\">\n {{ textConfig.buttonText }}\n </button>\n </div>\n <div v-else class=\"flex gap-thin\">\n <button @click=\"onComponentClick\" class=\"button button-small w-max bg-second t-white cursor-pointer\">\n Upload \n </button>\n <button @click=\"deleteImage\" class=\"button button-small w-max bg-red t-white cursor-pointer\">\n Delete\n </button>\n </div>\n </div>\n </div>\n</template>\n\n<script setup>\nimport { ref, watch, computed } from 'vue';\nimport axios from 'axios';\nimport Loader from '@martyrs/src/components/Loader/Loader.vue';\nimport IconUpload from '@martyrs/src/modules/icons/navigation/IconUpload.vue';\nimport IconDelete from '@martyrs/src/modules/icons/navigation/IconDelete.vue';\n\nconst imageUrl = ref(null);\nconst fileInput = ref(null);\nconst previewUrl = ref(null);\nconst loading = ref(false);\n\nconst props = defineProps({\n uploadPath: {\n type: String,\n required: true\n },\n photo: {\n type: String,\n default: null\n },\n text: {\n type: [Object, Boolean],\n default: null\n }\n});\n\nconst emit = defineEmits(['update:photo', 'error']);\n\n// Text configuration with defaults\nconst textConfig = computed(() => {\n const defaults = {\n title: 'Upload Image',\n subtitle: 'Drag & drop your image here or click button. Supported: JPG, PNG, GIF. Max size: 2MB',\n buttonText: 'Choose Image'\n };\n \n if (props.text === true) {\n return defaults;\n } else if (typeof props.text === 'object' && props.text !== null) {\n return {\n title: props.text.title || defaults.title,\n subtitle: props.text.subtitle || defaults.subtitle,\n buttonText: props.text.buttonText || defaults.buttonText\n };\n }\n \n return defaults;\n});\n\nwatch(props, ({photo}) => {\n if(photo) imageUrl.value = photo;\n});\n\nfunction onComponentClick() {\n fileInput.value.click();\n}\n\nasync function onFileChange(e) {\n let file = e.target.files[0];\n if (!file) {\n console.error(\"No file selected\");\n return;\n }\n \n // Create preview from file\n const reader = new FileReader();\n reader.onload = (e) => {\n previewUrl.value = e.target.result;\n };\n reader.readAsDataURL(file);\n \n let formData = new FormData();\n formData.append(\"file\", file);\n\n console.log(\"Sending file:\", file.name); // Логируем имя файла перед отправкой\n \n loading.value = true;\n\n try {\n const $axios = axios.create({ baseURL: process.env.API_URL, withCredentials: true }); \n\n let response = await $axios.post(`/api/upload/multiple?folderName=${encodeURIComponent(props.uploadPath)}`, formData);\n console.log(\"Upload response:\", response); // Логируем ответ сервера\n imageUrl.value = response.data[0].filepath;\n previewUrl.value = null; // Clear preview after successful upload\n emit('update:photo', imageUrl.value);\n } catch (error) {\n emit('error', error);\n console.error(\"Upload error:\", error); // Логируем ошибку\n previewUrl.value = null; // Clear preview on error\n } finally {\n loading.value = false;\n }\n}\n\n\nfunction onDrop(e) {\n e.preventDefault();\n onFileChange({\n target: {\n files: e.dataTransfer.files\n }\n });\n}\n\nfunction deleteImage() {\n imageUrl.value = null;\n previewUrl.value = null;\n emit('update:photo', null);\n // Reset file input\n if (fileInput.value) {\n fileInput.value.value = '';\n }\n}\n</script>\n\n<style scoped>\n.image-upload-area {\n overflow: hidden;\n transition: all 0.3s ease;\n}\n\n.image-upload-area:hover {\n opacity: 0.95;\n}\n\n/* Hover controls */\n.hover-controls {\n top: 0;\n left: 0;\n background: rgba(0, 0, 0, 0.7);\n opacity: 0;\n transition: opacity 0.3s ease;\n pointer-events: none;\n}\n\n.image-upload-area:hover .hover-controls {\n opacity: 1;\n pointer-events: all;\n}\n\n.hover-upload-icon {\n animation: pulse 1.5s infinite;\n}\n\n.hover-button {\n transition: transform 0.2s ease, background-color 0.2s ease;\n}\n\n.hover-button:hover {\n transform: scale(1.1);\n}\n\n.hover-button:active {\n transform: scale(0.95);\n}\n\n/* Loading overlay */\n.loading-overlay {\n top: 0;\n left: 0;\n background: rgba(255, 255, 255, 0.9);\n z-index: 10;\n}\n\n/* Animations */\n@keyframes pulse {\n 0% {\n transform: scale(1);\n opacity: 1;\n }\n 50% {\n transform: scale(1.05);\n opacity: 0.8;\n }\n 100% {\n transform: scale(1);\n opacity: 1;\n }\n}\n\n/* Upload icon in empty state */\n.upload-icon {\n transition: transform 0.3s ease;\n}\n\n.image-upload-area:hover .upload-icon {\n transform: scale(1.1);\n}\n</style>\n"],"names":["e"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsEA,UAAM,WAAW,IAAI,IAAI;AACzB,UAAM,YAAY,IAAI,IAAI;AAC1B,UAAM,aAAa,IAAI,IAAI;AAC3B,UAAM,UAAU,IAAI,KAAK;AAEzB,UAAM,QAAQ;AAed,UAAM,OAAO;AAGb,UAAM,aAAa,SAAS,MAAM;AAChC,YAAM,WAAW;AAAA,QACf,OAAO;AAAA,QACP,UAAU;AAAA,QACV,YAAY;AAAA,MAChB;AAEE,UAAI,MAAM,SAAS,MAAM;AACvB,eAAO;AAAA,MACT,WAAW,OAAO,MAAM,SAAS,YAAY,MAAM,SAAS,MAAM;AAChE,eAAO;AAAA,UACL,OAAO,MAAM,KAAK,SAAS,SAAS;AAAA,UACpC,UAAU,MAAM,KAAK,YAAY,SAAS;AAAA,UAC1C,YAAY,MAAM,KAAK,cAAc,SAAS;AAAA,QACpD;AAAA,MACE;AAEA,aAAO;AAAA,IACT,CAAC;AAED,UAAM,OAAO,CAAC,EAAC,MAAK,MAAM;AACxB,UAAG,MAAO,UAAS,QAAQ;AAAA,IAC7B,CAAC;AAED,aAAS,mBAAmB;AAC1B,gBAAU,MAAM,MAAK;AAAA,IACvB;AAEA,mBAAe,aAAa,GAAG;AAC7B,UAAI,OAAO,EAAE,OAAO,MAAM,CAAC;AAC3B,UAAI,CAAC,MAAM;AACT,gBAAQ,MAAM,kBAAkB;AAChC;AAAA,MACF;AAGA,YAAM,SAAS,IAAI,WAAU;AAC7B,aAAO,SAAS,CAACA,OAAM;AACrB,mBAAW,QAAQA,GAAE,OAAO;AAAA,MAC9B;AACA,aAAO,cAAc,IAAI;AAEzB,UAAI,WAAW,IAAI,SAAQ;AAC3B,eAAS,OAAO,QAAQ,IAAI;AAE5B,cAAQ,IAAI,iBAAiB,KAAK,IAAI;AAEtC,cAAQ,QAAQ;AAEhB,UAAI;AACF,cAAM,SAAS,MAAM,OAAO,EAAE,SAAS,QAAQ,IAAI,SAAS,iBAAiB,KAAI,CAAE;AAEnF,YAAI,WAAW,MAAM,OAAO,KAAK,mCAAmC,mBAAmB,MAAM,UAAU,CAAC,IAAI,QAAQ;AACpH,gBAAQ,IAAI,oBAAoB,QAAQ;AACxC,iBAAS,QAAQ,SAAS,KAAK,CAAC,EAAE;AAClC,mBAAW,QAAQ;AACnB,aAAK,gBAAgB,SAAS,KAAK;AAAA,MACrC,SAAS,OAAO;AACd,aAAK,SAAS,KAAK;AACnB,gBAAQ,MAAM,iBAAiB,KAAK;AACpC,mBAAW,QAAQ;AAAA,MACrB,UAAC;AACC,gBAAQ,QAAQ;AAAA,MAClB;AAAA,IACF;AAGA,aAAS,OAAO,GAAG;AACjB,QAAE,eAAc;AAChB,mBAAa;AAAA,QACX,QAAQ;AAAA,UACN,OAAO,EAAE,aAAa;AAAA,QAC5B;AAAA,MACA,CAAG;AAAA,IACH;AAEA,aAAS,cAAc;AACrB,eAAS,QAAQ;AACjB,iBAAW,QAAQ;AACnB,WAAK,gBAAgB,IAAI;AAEzB,UAAI,UAAU,OAAO;AACnB,kBAAU,MAAM,QAAQ;AAAA,MAC1B;AAAA,IACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,6 +1,6 @@
1
1
  import { ref, createElementBlock, openBlock, withModifiers, createVNode, createElementVNode, Transition, withCtx, createBlock, createCommentVNode, toDisplayString } from "vue";
2
2
  import axios from "axios";
3
- import Loader from "../Loader/Loader.vue2.js";
3
+ import Loader from "../Loader/Loader.vue.js";
4
4
  import _sfc_main$1 from "../../modules/icons/navigation/IconUpload.vue.js";
5
5
  import { useStore } from "../../modules/core/views/store/core.store.js";
6
6
  const _hoisted_1 = {
@@ -13,7 +13,7 @@ const _hoisted_2 = {
13
13
  };
14
14
  const _hoisted_3 = {
15
15
  key: 1,
16
- class: "mn-b-small t-transp d-block"
16
+ class: "mn-b-small opacity-50 d-block"
17
17
  };
18
18
  const _hoisted_4 = {
19
19
  key: 2,
@@ -1 +1 @@
1
- {"version":3,"file":"UploadImageMultiple.vue.js","sources":["../../../../../src/components/UploadImageMultiple/UploadImageMultiple.vue"],"sourcesContent":["<template>\n <div \n @click=\"onComponentClick\"\n @drop=\"onDrop\"\n @dragover.prevent\n class=\"cursor-pointer t-black w-100 flex-v-center flex-h-center flex pos-relative\"\n >\n <transition name=\"moveFromTop\" mode=\"out-in\">\n <div v-if=\"!loading\" class=\"t-center\">\n <IconUpload\n style=\"max-height: 4rem;\"\n class=\"w-100 mn-b-thin h-100\"\n fill=\"rgb(var(--main))\"\n />\n <span v-if=\"options.showText || options.showTitle\" class=\"mn-t-medium mn-b-medium d-block h3 t-black\">{{ text.title }}</span>\n <span v-if=\"options.showText\" class=\"mn-b-small t-transp d-block \">{{ text.subtitle }}</span>\n <span v-if=\"options.showText\"class=\"mn-b-small uppercase p-small fw-medium d-block\">or</span>\n <button v-if=\"options.showText\" class=\"cursor-pointer mn-b-small br-2px br-main radius-extra pd-l-thin pd-r-thin t-main\">Browse Files</button>\n <span v-if=\"options.showText\" class=\"uppercase p-small fw-medium d-block \">Maximum size: 2MB</span>\n </div>\n <Loader v-else class=\"pos-absolute\"/>\n </transition>\n <input type=\"file\" ref=\"fileInput\" @change=\"onFileChange\" multiple style=\"display: none\"/>\n </div>\n</template>\n\n<script setup>\nimport { ref, watch } from 'vue';\nimport axios from 'axios';\nimport Loader from '@martyrs/src/components/Loader/Loader.vue';\nimport PlaceholderImage from '@martyrs/src/modules/icons/placeholders/PlaceholderImage.vue'\nimport IconUpload from '@martyrs/src/modules/icons/navigation/IconUpload.vue'\nimport { useStore } from '@martyrs/src/modules/core/views/store/core.store.js';\nconst core = useStore();\n\nconst images = ref([]);\nconst loading = ref(false);\nconst fileInput = ref(null);\n\nconst props = defineProps({\n uploadPath: {\n type: Object,\n required: true\n },\n options: {\n type: Object,\n default: () => ({\n mimeType: ['jpg', 'png', 'gif'],\n maxSize: 10 * 1024 * 1024,\n showText: true,\n showTitle: true\n })\n },\n text: {\n type: Object,\n default: () => ({\n title: 'Drag & Drop Your Images Here',\n subtitle: 'Files supported: JPG, PNG, GIF'\n })\n }\n});\n\nconst emit = defineEmits(['update:images']);\n\nfunction onComponentClick() {\n fileInput.value.click();\n}\n\nasync function onFileChange(e) {\n loading.value = true;\n let files = e.target.files;\n let formData = new FormData();\n \n for (const file of files) {\n formData.append(\"file\", file);\n }\n \n try {\n const $axios = axios.create({ baseURL: process.env.API_URL, withCredentials: true }); \n let response = await $axios.post(`/api/upload/multiple?folderName=${encodeURIComponent(props.uploadPath)}`, formData, {\n headers: {\n \"Content-Type\": \"multipart/form-data\"\n }\n });\n \n response.data.forEach(file => {\n images.value.push(file.filepath);\n });\n \n emit('update:images', images.value);\n } catch (error) {\n core.setError(error);\n } finally {\n loading.value = false;\n }\n}\n\nfunction onDrop(e) {\n e.preventDefault();\n onFileChange({\n target: {\n files: e.dataTransfer.files\n }\n });\n}\n</script>"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiCA,UAAM,OAAO,SAAQ;AAErB,UAAM,SAAS,IAAI,EAAE;AACrB,UAAM,UAAU,IAAI,KAAK;AACzB,UAAM,YAAY,IAAI,IAAI;AAE1B,UAAM,QAAQ;AAuBd,UAAM,OAAO;AAEb,aAAS,mBAAmB;AAC1B,gBAAU,MAAM,MAAK;AAAA,IACvB;AAEA,mBAAe,aAAa,GAAG;AAC7B,cAAQ,QAAQ;AAChB,UAAI,QAAQ,EAAE,OAAO;AACrB,UAAI,WAAW,IAAI,SAAQ;AAE3B,iBAAW,QAAQ,OAAO;AACxB,iBAAS,OAAO,QAAQ,IAAI;AAAA,MAC9B;AAEA,UAAI;AACF,cAAM,SAAS,MAAM,OAAO,EAAE,SAAS,QAAQ,IAAI,SAAS,iBAAiB,KAAI,CAAE;AACnF,YAAI,WAAW,MAAM,OAAO,KAAK,mCAAmC,mBAAmB,MAAM,UAAU,CAAC,IAAI,UAAU;AAAA,UACpH,SAAS;AAAA,YACP,gBAAgB;AAAA,UACxB;AAAA,QACA,CAAK;AAED,iBAAS,KAAK,QAAQ,UAAQ;AAC5B,iBAAO,MAAM,KAAK,KAAK,QAAQ;AAAA,QACjC,CAAC;AAED,aAAK,iBAAiB,OAAO,KAAK;AAAA,MACpC,SAAS,OAAO;AACd,aAAK,SAAS,KAAK;AAAA,MACrB,UAAC;AACC,gBAAQ,QAAQ;AAAA,MAClB;AAAA,IACF;AAEA,aAAS,OAAO,GAAG;AACjB,QAAE,eAAc;AAChB,mBAAa;AAAA,QACX,QAAQ;AAAA,UACN,OAAO,EAAE,aAAa;AAAA,QAC5B;AAAA,MACA,CAAG;AAAA,IACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"UploadImageMultiple.vue.js","sources":["../../../../../src/components/UploadImageMultiple/UploadImageMultiple.vue"],"sourcesContent":["<template>\n <div \n @click=\"onComponentClick\"\n @drop=\"onDrop\"\n @dragover.prevent\n class=\"cursor-pointer t-black w-100 flex-v-center flex-h-center flex pos-relative\"\n >\n <transition name=\"moveFromTop\" mode=\"out-in\">\n <div v-if=\"!loading\" class=\"t-center\">\n <IconUpload\n style=\"max-height: 4rem;\"\n class=\"w-100 mn-b-thin h-100\"\n fill=\"rgb(var(--main))\"\n />\n <span v-if=\"options.showText || options.showTitle\" class=\"mn-t-medium mn-b-medium d-block h3 t-black\">{{ text.title }}</span>\n <span v-if=\"options.showText\" class=\"mn-b-small opacity-50 d-block \">{{ text.subtitle }}</span>\n <span v-if=\"options.showText\"class=\"mn-b-small uppercase p-small fw-medium d-block\">or</span>\n <button v-if=\"options.showText\" class=\"cursor-pointer mn-b-small br-2px br-main radius-extra pd-l-thin pd-r-thin t-main\">Browse Files</button>\n <span v-if=\"options.showText\" class=\"uppercase p-small fw-medium d-block \">Maximum size: 2MB</span>\n </div>\n <Loader v-else class=\"pos-absolute\"/>\n </transition>\n <input type=\"file\" ref=\"fileInput\" @change=\"onFileChange\" multiple style=\"display: none\"/>\n </div>\n</template>\n\n<script setup>\nimport { ref, watch } from 'vue';\nimport axios from 'axios';\nimport Loader from '@martyrs/src/components/Loader/Loader.vue';\nimport PlaceholderImage from '@martyrs/src/modules/icons/placeholders/PlaceholderImage.vue'\nimport IconUpload from '@martyrs/src/modules/icons/navigation/IconUpload.vue'\nimport { useStore } from '@martyrs/src/modules/core/views/store/core.store.js';\nconst core = useStore();\n\nconst images = ref([]);\nconst loading = ref(false);\nconst fileInput = ref(null);\n\nconst props = defineProps({\n uploadPath: {\n type: Object,\n required: true\n },\n options: {\n type: Object,\n default: () => ({\n mimeType: ['jpg', 'png', 'gif'],\n maxSize: 10 * 1024 * 1024,\n showText: true,\n showTitle: true\n })\n },\n text: {\n type: Object,\n default: () => ({\n title: 'Drag & Drop Your Images Here',\n subtitle: 'Files supported: JPG, PNG, GIF'\n })\n }\n});\n\nconst emit = defineEmits(['update:images']);\n\nfunction onComponentClick() {\n fileInput.value.click();\n}\n\nasync function onFileChange(e) {\n loading.value = true;\n let files = e.target.files;\n let formData = new FormData();\n \n for (const file of files) {\n formData.append(\"file\", file);\n }\n \n try {\n const $axios = axios.create({ baseURL: process.env.API_URL, withCredentials: true }); \n let response = await $axios.post(`/api/upload/multiple?folderName=${encodeURIComponent(props.uploadPath)}`, formData, {\n headers: {\n \"Content-Type\": \"multipart/form-data\"\n }\n });\n \n response.data.forEach(file => {\n images.value.push(file.filepath);\n });\n \n emit('update:images', images.value);\n } catch (error) {\n core.setError(error);\n } finally {\n loading.value = false;\n }\n}\n\nfunction onDrop(e) {\n e.preventDefault();\n onFileChange({\n target: {\n files: e.dataTransfer.files\n }\n });\n}\n</script>"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiCA,UAAM,OAAO,SAAQ;AAErB,UAAM,SAAS,IAAI,EAAE;AACrB,UAAM,UAAU,IAAI,KAAK;AACzB,UAAM,YAAY,IAAI,IAAI;AAE1B,UAAM,QAAQ;AAuBd,UAAM,OAAO;AAEb,aAAS,mBAAmB;AAC1B,gBAAU,MAAM,MAAK;AAAA,IACvB;AAEA,mBAAe,aAAa,GAAG;AAC7B,cAAQ,QAAQ;AAChB,UAAI,QAAQ,EAAE,OAAO;AACrB,UAAI,WAAW,IAAI,SAAQ;AAE3B,iBAAW,QAAQ,OAAO;AACxB,iBAAS,OAAO,QAAQ,IAAI;AAAA,MAC9B;AAEA,UAAI;AACF,cAAM,SAAS,MAAM,OAAO,EAAE,SAAS,QAAQ,IAAI,SAAS,iBAAiB,KAAI,CAAE;AACnF,YAAI,WAAW,MAAM,OAAO,KAAK,mCAAmC,mBAAmB,MAAM,UAAU,CAAC,IAAI,UAAU;AAAA,UACpH,SAAS;AAAA,YACP,gBAAgB;AAAA,UACxB;AAAA,QACA,CAAK;AAED,iBAAS,KAAK,QAAQ,UAAQ;AAC5B,iBAAO,MAAM,KAAK,KAAK,QAAQ;AAAA,QACjC,CAAC;AAED,aAAK,iBAAiB,OAAO,KAAK;AAAA,MACpC,SAAS,OAAO;AACd,aAAK,SAAS,KAAK;AAAA,MACrB,UAAC;AACC,gBAAQ,QAAQ;AAAA,MAClB;AAAA,IACF;AAEA,aAAS,OAAO,GAAG;AACjB,QAAE,eAAc;AAChB,mBAAa;AAAA,QACX,QAAQ;AAAA,UACN,OAAO,EAAE,aAAa;AAAA,QAC5B;AAAA,MACA,CAAG;AAAA,IACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -6,6 +6,7 @@ import { cancelAuth, closeAuth, showAuth } from "./views/plugins/popup.auth.plug
6
6
  import addRoutes from "../core/views/router/addRoutes.js";
7
7
  import { getAuthRoutes } from "./views/router/auth.router.js";
8
8
  import { getUsersRoutes } from "./views/router/users.router.js";
9
+ import usersBackofficeRoutes from "./views/router/users.backoffice.router.js";
9
10
  import * as auth_validation from "./views/middlewares/auth.validation.js";
10
11
  import { i18nManager } from "../core/views/classes/i18n.manager.js";
11
12
  import locales from "./locales/index.js";
@@ -29,9 +30,20 @@ console.log(`[LOADING 36] Router/middleware/locales imports completed in ${impor
29
30
  function initializeAuth(app, store, router, options = {}) {
30
31
  i18nManager.register("auth", locales);
31
32
  const authRoute = getAuthRoutes(options);
32
- const usersRoute = getUsersRoutes(options);
33
33
  addRoutes(router, { ...authRoute.config, parentName: authRoute.parentName });
34
- addRoutes(router, { ...usersRoute.config, parentName: usersRoute.parentName });
34
+ if (!options.contexts || options.contexts.includes("client")) {
35
+ const usersRoute = getUsersRoutes(options);
36
+ addRoutes(router, { ...usersRoute.config, parentName: usersRoute.parentName });
37
+ }
38
+ if (!options.contexts || options.contexts.includes("backoffice")) {
39
+ addRoutes(router, {
40
+ parentName: options.routeBackoffice || "Backoffice Root",
41
+ basePath: "users",
42
+ routes: usersBackofficeRoutes,
43
+ routeNamePrefix: "Backoffice",
44
+ meta: { context: "backoffice" }
45
+ });
46
+ }
35
47
  store.addStore("auth", auth);
36
48
  store.addStore("users", users);
37
49
  app.use(otpPlugin);
@@ -1 +1 @@
1
- {"version":3,"file":"auth.client.js","sources":["../../../../../src/modules/auth/auth.client.js"],"sourcesContent":["// [LOADING 36] Auth module import started\nperformance.mark('loading-36-start');\nconsole.log('[LOADING 36] Auth module import started...');\n\n// Functional imports (needed for initialize function)\nimport * as storeAuth from './views/store/auth.js';\nimport * as storeUsers from './views/store/users.js';\nimport otpPlugin from './views/plugins/otp.plugin.js';\nimport popupAuthPlugin, { showAuth, closeAuth, cancelAuth } from './views/plugins/popup.auth.plugin.js';\n\nperformance.mark('loading-36-stores-end');\nconst storesTime = performance.measure('loading-36-stores', 'loading-36-start', 'loading-36-stores-end');\nconsole.log(`[LOADING 36] Store imports completed in ${storesTime.duration.toFixed(2)}ms`);\n\n// Router\nimport addRoutes from '@martyrs/src/modules/core/views/router/addRoutes.js';\nimport { getAuthRoutes } from './views/router/auth.router.js';\nimport { getUsersRoutes } from './views/router/users.router.js';\n\n// Middlewares\nimport * as validationAuth from '@martyrs/src/modules/auth/views/middlewares/auth.validation.js';\n\nimport { i18nManager } from '@martyrs/src/modules/core/views/classes/i18n.manager.js';\n\nimport locales from './locales/index.js';\n\nperformance.mark('loading-36-imports-end');\nconst importsTime = performance.measure('loading-36-imports', 'loading-36-stores-end', 'loading-36-imports-end');\nconsole.log(`[LOADING 36] Router/middleware/locales imports completed in ${importsTime.duration.toFixed(2)}ms`);\n\n// Component re-exports (enables tree shaking)\nexport { default as Auth } from './views/components/layouts/Auth.vue';\nexport { default as Invite } from './views/components/pages/Invite.vue';\nexport { default as Profile } from './views/components/pages/Profile.vue';\nexport { default as ProfileEdit } from './views/components/pages/ProfileEdit.vue';\nexport { default as ResetPassword } from './views/components/pages/ResetPassword.vue';\nexport { default as SignIn } from './views/components/pages/SignIn.vue';\nexport { default as SignUp } from './views/components/pages/SignUp.vue';\nexport { default as FeaturedUsers } from './views/components/sections/FeaturedUsers.vue';\nexport { default as SliderFeatures } from './views/components/sections/SliderFeatures.vue';\n\n// Пример функции инициализации для модуля аутентификации\nfunction initializeAuth(app, store, router, options = {}) {\n i18nManager.register('auth', locales);\n\n const authRoute = getAuthRoutes(options);\n const usersRoute = getUsersRoutes(options);\n\n addRoutes(router, { ...authRoute.config, parentName: authRoute.parentName });\n addRoutes(router, { ...usersRoute.config, parentName: usersRoute.parentName });\n\n store.addStore('auth', storeAuth);\n store.addStore('users', storeUsers);\n\n // OTP plugin для challenge-response\n app.use(otpPlugin);\n\n // Auth popup plugin\n app.use(popupAuthPlugin);\n\n app.provide('store', store);\n}\n\nconst ModuleAuth = {\n initialize: initializeAuth,\n views: {\n store: {\n storeAuth,\n storeUsers,\n },\n router: {\n getAuthRoutes,\n getUsersRoutes,\n },\n middlewares: {\n validationAuth,\n },\n },\n};\n\n// Functional exports\nexport {\n storeAuth,\n storeUsers,\n getAuthRoutes,\n getUsersRoutes,\n validationAuth,\n initializeAuth as initialize,\n // Auth popup\n showAuth,\n closeAuth,\n cancelAuth,\n};\n\n// [LOADING 36] Auth module import completed\nperformance.mark('loading-36-end');\nperformance.measure('loading-36-total', 'loading-36-start', 'loading-36-end');\nconst totalTime = performance.getEntriesByName('loading-36-total')[0];\nconsole.log(`[LOADING 36] Auth module fully imported in ${totalTime?.duration?.toFixed(2)}ms`);\n\nexport default ModuleAuth;\n"],"names":["storeAuth","storeUsers","validationAuth"],"mappings":";;;;;;;;;;;;;;;;;;;;AACA,YAAY,KAAK,kBAAkB;AACnC,QAAQ,IAAI,4CAA4C;AAQxD,YAAY,KAAK,uBAAuB;AACxC,MAAM,aAAa,YAAY,QAAQ,qBAAqB,oBAAoB,uBAAuB;AACvG,QAAQ,IAAI,2CAA2C,WAAW,SAAS,QAAQ,CAAC,CAAC,IAAI;AAczF,YAAY,KAAK,wBAAwB;AACzC,MAAM,cAAc,YAAY,QAAQ,sBAAsB,yBAAyB,wBAAwB;AAC/G,QAAQ,IAAI,+DAA+D,YAAY,SAAS,QAAQ,CAAC,CAAC,IAAI;AAc9G,SAAS,eAAe,KAAK,OAAO,QAAQ,UAAU,CAAA,GAAI;AACxD,cAAY,SAAS,QAAQ,OAAO;AAEpC,QAAM,YAAY,cAAc,OAAO;AACvC,QAAM,aAAa,eAAe,OAAO;AAEzC,YAAU,QAAQ,EAAE,GAAG,UAAU,QAAQ,YAAY,UAAU,YAAY;AAC3E,YAAU,QAAQ,EAAE,GAAG,WAAW,QAAQ,YAAY,WAAW,YAAY;AAE7E,QAAM,SAAS,QAAQA,IAAS;AAChC,QAAM,SAAS,SAASC,KAAU;AAGlC,MAAI,IAAI,SAAS;AAGjB,MAAI,IAAI,eAAe;AAEvB,MAAI,QAAQ,SAAS,KAAK;AAC5B;AAEK,MAAC,aAAa;AAAA,EACjB,YAAY;AAAA,EACZ,OAAO;AAAA,IACL,OAAO;AAAA,MACX,WAAMD;AAAAA,MACN,YAAMC;AAAAA,IACN;AAAA,IACI,QAAQ;AAAA,MACN;AAAA,MACA;AAAA,IACN;AAAA,IACI,aAAa;AAAA,MACjB,gBAAMC;AAAAA,IACN;AAAA,EACA;AACA;AAiBA,YAAY,KAAK,gBAAgB;AACjC,YAAY,QAAQ,oBAAoB,oBAAoB,gBAAgB;AAC5E,MAAM,YAAY,YAAY,iBAAiB,kBAAkB,EAAE,CAAC;AACpE,QAAQ,IAAI,8CAA8C,WAAW,UAAU,QAAQ,CAAC,CAAC,IAAI;"}
1
+ {"version":3,"file":"auth.client.js","sources":["../../../../../src/modules/auth/auth.client.js"],"sourcesContent":["// [LOADING 36] Auth module import started\nperformance.mark('loading-36-start');\nconsole.log('[LOADING 36] Auth module import started...');\n\n// Functional imports (needed for initialize function)\nimport * as storeAuth from './views/store/auth.js';\nimport * as storeUsers from './views/store/users.js';\nimport otpPlugin from './views/plugins/otp.plugin.js';\nimport popupAuthPlugin, { showAuth, closeAuth, cancelAuth } from './views/plugins/popup.auth.plugin.js';\n\nperformance.mark('loading-36-stores-end');\nconst storesTime = performance.measure('loading-36-stores', 'loading-36-start', 'loading-36-stores-end');\nconsole.log(`[LOADING 36] Store imports completed in ${storesTime.duration.toFixed(2)}ms`);\n\n// Router\nimport addRoutes from '@martyrs/src/modules/core/views/router/addRoutes.js';\nimport { getAuthRoutes } from './views/router/auth.router.js';\nimport { getUsersRoutes } from './views/router/users.router.js';\nimport routerBackofficeUsers from './views/router/users.backoffice.router.js';\n\n// Middlewares\nimport * as validationAuth from '@martyrs/src/modules/auth/views/middlewares/auth.validation.js';\n\nimport { i18nManager } from '@martyrs/src/modules/core/views/classes/i18n.manager.js';\n\nimport locales from './locales/index.js';\n\nperformance.mark('loading-36-imports-end');\nconst importsTime = performance.measure('loading-36-imports', 'loading-36-stores-end', 'loading-36-imports-end');\nconsole.log(`[LOADING 36] Router/middleware/locales imports completed in ${importsTime.duration.toFixed(2)}ms`);\n\n// Component re-exports (enables tree shaking)\nexport { default as Auth } from './views/components/layouts/Auth.vue';\nexport { default as Invite } from './views/components/pages/Invite.vue';\nexport { default as Profile } from './views/components/pages/Profile.vue';\nexport { default as ProfileEdit } from './views/components/pages/ProfileEdit.vue';\nexport { default as ResetPassword } from './views/components/pages/ResetPassword.vue';\nexport { default as SignIn } from './views/components/pages/SignIn.vue';\nexport { default as SignUp } from './views/components/pages/SignUp.vue';\nexport { default as FeaturedUsers } from './views/components/sections/FeaturedUsers.vue';\nexport { default as SliderFeatures } from './views/components/sections/SliderFeatures.vue';\n\n// Пример функции инициализации для модуля аутентификации\nfunction initializeAuth(app, store, router, options = {}) {\n i18nManager.register('auth', locales);\n\n const authRoute = getAuthRoutes(options);\n addRoutes(router, { ...authRoute.config, parentName: authRoute.parentName });\n\n // Users client context\n if (!options.contexts || options.contexts.includes('client')) {\n const usersRoute = getUsersRoutes(options);\n addRoutes(router, { ...usersRoute.config, parentName: usersRoute.parentName });\n }\n\n // Users backoffice context\n if (!options.contexts || options.contexts.includes('backoffice')) {\n addRoutes(router, {\n parentName: options.routeBackoffice || 'Backoffice Root',\n basePath: 'users',\n routes: routerBackofficeUsers,\n routeNamePrefix: 'Backoffice',\n meta: { context: 'backoffice' },\n });\n }\n\n store.addStore('auth', storeAuth);\n store.addStore('users', storeUsers);\n\n // OTP plugin для challenge-response\n app.use(otpPlugin);\n\n // Auth popup plugin\n app.use(popupAuthPlugin);\n\n app.provide('store', store);\n}\n\nconst ModuleAuth = {\n initialize: initializeAuth,\n views: {\n store: {\n storeAuth,\n storeUsers,\n },\n router: {\n getAuthRoutes,\n getUsersRoutes,\n },\n middlewares: {\n validationAuth,\n },\n },\n};\n\n// Functional exports\nexport {\n storeAuth,\n storeUsers,\n getAuthRoutes,\n getUsersRoutes,\n validationAuth,\n initializeAuth as initialize,\n // Auth popup\n showAuth,\n closeAuth,\n cancelAuth,\n};\n\n// [LOADING 36] Auth module import completed\nperformance.mark('loading-36-end');\nperformance.measure('loading-36-total', 'loading-36-start', 'loading-36-end');\nconst totalTime = performance.getEntriesByName('loading-36-total')[0];\nconsole.log(`[LOADING 36] Auth module fully imported in ${totalTime?.duration?.toFixed(2)}ms`);\n\nexport default ModuleAuth;\n"],"names":["routerBackofficeUsers","storeAuth","storeUsers","validationAuth"],"mappings":";;;;;;;;;;;;;;;;;;;;;AACA,YAAY,KAAK,kBAAkB;AACnC,QAAQ,IAAI,4CAA4C;AAQxD,YAAY,KAAK,uBAAuB;AACxC,MAAM,aAAa,YAAY,QAAQ,qBAAqB,oBAAoB,uBAAuB;AACvG,QAAQ,IAAI,2CAA2C,WAAW,SAAS,QAAQ,CAAC,CAAC,IAAI;AAezF,YAAY,KAAK,wBAAwB;AACzC,MAAM,cAAc,YAAY,QAAQ,sBAAsB,yBAAyB,wBAAwB;AAC/G,QAAQ,IAAI,+DAA+D,YAAY,SAAS,QAAQ,CAAC,CAAC,IAAI;AAc9G,SAAS,eAAe,KAAK,OAAO,QAAQ,UAAU,CAAA,GAAI;AACxD,cAAY,SAAS,QAAQ,OAAO;AAEpC,QAAM,YAAY,cAAc,OAAO;AACvC,YAAU,QAAQ,EAAE,GAAG,UAAU,QAAQ,YAAY,UAAU,YAAY;AAG3E,MAAI,CAAC,QAAQ,YAAY,QAAQ,SAAS,SAAS,QAAQ,GAAG;AAC5D,UAAM,aAAa,eAAe,OAAO;AACzC,cAAU,QAAQ,EAAE,GAAG,WAAW,QAAQ,YAAY,WAAW,YAAY;AAAA,EAC/E;AAGA,MAAI,CAAC,QAAQ,YAAY,QAAQ,SAAS,SAAS,YAAY,GAAG;AAChE,cAAU,QAAQ;AAAA,MAChB,YAAY,QAAQ,mBAAmB;AAAA,MACvC,UAAU;AAAA,MACV,QAAQA;AAAAA,MACR,iBAAiB;AAAA,MACjB,MAAM,EAAE,SAAS,aAAY;AAAA,IACnC,CAAK;AAAA,EACH;AAEA,QAAM,SAAS,QAAQC,IAAS;AAChC,QAAM,SAAS,SAASC,KAAU;AAGlC,MAAI,IAAI,SAAS;AAGjB,MAAI,IAAI,eAAe;AAEvB,MAAI,QAAQ,SAAS,KAAK;AAC5B;AAEK,MAAC,aAAa;AAAA,EACjB,YAAY;AAAA,EACZ,OAAO;AAAA,IACL,OAAO;AAAA,MACX,WAAMD;AAAAA,MACN,YAAMC;AAAAA,IACN;AAAA,IACI,QAAQ;AAAA,MACN;AAAA,MACA;AAAA,IACN;AAAA,IACI,aAAa;AAAA,MACjB,gBAAMC;AAAAA,IACN;AAAA,EACA;AACA;AAiBA,YAAY,KAAK,gBAAgB;AACjC,YAAY,QAAQ,oBAAoB,oBAAoB,gBAAgB;AAC5E,MAAM,YAAY,YAAY,iBAAiB,kBAAkB,EAAE,CAAC;AACpE,QAAQ,IAAI,8CAA8C,WAAW,UAAU,QAAQ,CAAC,CAAC,IAAI;"}
@@ -6,14 +6,14 @@ const _hoisted_1 = {
6
6
  class: "t-center"
7
7
  };
8
8
  const _hoisted_2 = { class: "mn-b-medium" };
9
- const _hoisted_3 = { class: "mn-b-big t-transp" };
10
- const _hoisted_4 = { class: "mn-b-small t-transp" };
9
+ const _hoisted_3 = { class: "mn-b-big opacity-50" };
10
+ const _hoisted_4 = { class: "mn-b-small opacity-50" };
11
11
  const _hoisted_5 = { class: "d-flex flex-h-center gap-small" };
12
12
  const _hoisted_6 = {
13
13
  key: 1,
14
14
  class: "t-center"
15
15
  };
16
- const _hoisted_7 = { class: "mn-b-thin t-transp" };
16
+ const _hoisted_7 = { class: "mn-b-thin opacity-50" };
17
17
  const _hoisted_8 = { class: "mn-b-small" };
18
18
  const _hoisted_9 = ["onClick"];
19
19
  const _hoisted_10 = ["onUpdate:modelValue", "onInput"];
@@ -81,7 +81,7 @@ const _sfc_main = {
81
81
  return openBlock(), createBlock(_sfc_main$1, {
82
82
  isPopupOpen: __props.otpState.visible,
83
83
  onClosePopup: __props.cancelOtp,
84
- class: "bg-white w-min-20r w-max-30r w-max-100 radius-medium pd-medium"
84
+ class: "bg-white w-clamp-20r-30r-100 radius-medium pd-medium"
85
85
  }, {
86
86
  default: withCtx(() => [
87
87
  __props.otpState.mode !== "dual" ? (openBlock(), createElementBlock("section", _hoisted_1, [
@@ -1 +1 @@
1
- {"version":3,"file":"OtpDialog.vue.js","sources":["../../../../../../../../src/modules/auth/views/components/blocks/OtpDialog.vue"],"sourcesContent":["<template>\n <Popup\n :isPopupOpen=\"otpState.visible\"\n @close-popup=\"cancelOtp\"\n class=\"bg-white w-min-20r w-max-30r w-max-100 radius-medium pd-medium\"\n >\n <!-- Single mode -->\n <section v-if=\"otpState.mode !== 'dual'\" class=\"t-center\">\n <h3 class=\"mn-b-medium\">\n {{ otpState.challenge?.type === 'email' ? 'Verify Email' : 'Verify Phone' }}\n </h3>\n\n <p class=\"mn-b-big t-transp\">\n {{ otpState.challenge?.type === 'email'\n ? 'Enter the code sent to your email'\n : 'Enter the code sent to your phone' }}\n </p>\n\n <p class=\"mn-b-small t-transp\">{{ otpState.challenge?.identifier }}</p>\n\n <div class=\"pos-relative mn-b-big cursor-text\" @click=\"focusInput(0)\">\n <input\n ref=\"inputRefs\"\n v-model=\"code\"\n type=\"text\"\n inputmode=\"numeric\"\n pattern=\"[0-9]*\"\n maxlength=\"4\"\n class=\"pos-absolute inset-0 w-100 h-100 opacity-0 z-1\"\n @input=\"onInput\"\n @keydown=\"onKeydown\"\n autocomplete=\"one-time-code\"\n >\n <div class=\"d-flex flex-h-center gap-small\">\n <div\n v-for=\"i in 4\"\n :key=\"i\"\n class=\"w-[60px] h-[60px] d-flex flex-center text-[28px] fw-medium bg-light radius-small br-1px ease-cubic\"\n :class=\"code.length === i - 1 ? 'br-main' : 'br-grey'\"\n >\n {{ code[i - 1] || '' }}\n </div>\n </div>\n </div>\n </section>\n\n <!-- Dual mode -->\n <section v-else class=\"t-center\">\n <h3 class=\"mn-b-medium\">Verify Change</h3>\n\n <div v-for=\"(challenge, idx) in otpState.challenges\" :key=\"idx\" class=\"mn-b-big\">\n <p class=\"mn-b-thin t-transp\">\n {{ challenge.label === 'old' ? 'Current' : 'New' }}\n </p>\n <p class=\"mn-b-small\">{{ challenge.identifier }}</p>\n\n <div class=\"pos-relative cursor-text\" @click=\"focusDualInput(idx)\">\n <input\n :ref=\"el => dualInputRefs[idx] = el\"\n v-model=\"dualCodes[idx]\"\n type=\"text\"\n inputmode=\"numeric\"\n pattern=\"[0-9]*\"\n maxlength=\"4\"\n class=\"pos-absolute inset-0 w-100 h-100 opacity-0 z-1\"\n @input=\"onDualInput(idx)\"\n @keydown=\"onKeydown\"\n autocomplete=\"one-time-code\"\n >\n <div class=\"d-flex flex-h-center gap-small\">\n <div\n v-for=\"i in 4\"\n :key=\"i\"\n class=\"w-[48px] h-[48px] d-flex flex-center text-[24px] fw-medium bg-light radius-small br-1px ease-cubic\"\n :class=\"dualCodes[idx].length === i - 1 ? 'br-main' : 'br-grey'\"\n >\n {{ dualCodes[idx][i - 1] || '' }}\n </div>\n </div>\n </div>\n </div>\n\n <Button\n @click=\"submitDual\"\n :disabled=\"!bothComplete\"\n class=\"w-100\"\n >\n Confirm\n </Button>\n </section>\n </Popup>\n</template>\n\n<script setup>\nimport { ref, computed, watch } from 'vue'\nimport Popup from '@martyrs/src/components/Popup/Popup.vue'\nimport { Button } from '@ozdao/martyrs'\n\nconst props = defineProps({\n otpState: { type: Object, required: true },\n closeOtp: { type: Function, required: true },\n closeDualOtp: { type: Function, required: true },\n cancelOtp: { type: Function, required: true }\n})\n\nconst inputRefs = ref(null)\nconst dualInputRefs = ref([null, null])\nconst code = ref('')\nconst dualCodes = ref(['', ''])\n\nconst bothComplete = computed(() =>\n dualCodes.value[0].length === 4 && dualCodes.value[1].length === 4\n)\n\nwatch(() => props.otpState.visible, (visible) => {\n if (visible) {\n code.value = ''\n dualCodes.value = ['', '']\n setTimeout(() => {\n if (props.otpState.mode === 'dual') {\n dualInputRefs.value[0]?.focus()\n } else {\n inputRefs.value?.focus()\n }\n }, 100)\n }\n})\n\nfunction focusInput() {\n inputRefs.value?.focus()\n}\n\nfunction focusDualInput(idx) {\n dualInputRefs.value[idx]?.focus()\n}\n\nfunction onKeydown(e) {\n if (!/^\\d$/.test(e.key) && !['Backspace', 'Delete', 'ArrowLeft', 'ArrowRight', 'Tab'].includes(e.key) && !e.ctrlKey && !e.metaKey) {\n e.preventDefault()\n }\n}\n\nfunction onInput() {\n code.value = code.value.replace(/\\D/g, '').slice(0, 4)\n\n if (code.value.length === 4) {\n props.closeOtp(code.value)\n }\n}\n\nfunction onDualInput(idx) {\n dualCodes.value[idx] = dualCodes.value[idx].replace(/\\D/g, '').slice(0, 4)\n\n // Auto-focus next input when current is complete\n if (dualCodes.value[idx].length === 4 && idx === 0) {\n dualInputRefs.value[1]?.focus()\n }\n\n // Auto-submit when both are complete\n if (bothComplete.value) {\n submitDual()\n }\n}\n\nfunction submitDual() {\n props.closeDualOtp([dualCodes.value[0], dualCodes.value[1]])\n}\n</script>\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkGA,UAAM,QAAQ;AAOd,UAAM,YAAY,IAAI,IAAI;AAC1B,UAAM,gBAAgB,IAAI,CAAC,MAAM,IAAI,CAAC;AACtC,UAAM,OAAO,IAAI,EAAE;AACnB,UAAM,YAAY,IAAI,CAAC,IAAI,EAAE,CAAC;AAE9B,UAAM,eAAe;AAAA,MAAS,MAC5B,UAAU,MAAM,CAAC,EAAE,WAAW,KAAK,UAAU,MAAM,CAAC,EAAE,WAAW;AAAA,IACnE;AAEA,UAAM,MAAM,MAAM,SAAS,SAAS,CAAC,YAAY;AAC/C,UAAI,SAAS;AACX,aAAK,QAAQ;AACb,kBAAU,QAAQ,CAAC,IAAI,EAAE;AACzB,mBAAW,MAAM;AACf,cAAI,MAAM,SAAS,SAAS,QAAQ;AAClC,0BAAc,MAAM,CAAC,GAAG,MAAK;AAAA,UAC/B,OAAO;AACL,sBAAU,OAAO,MAAK;AAAA,UACxB;AAAA,QACF,GAAG,GAAG;AAAA,MACR;AAAA,IACF,CAAC;AAED,aAAS,aAAa;AACpB,gBAAU,OAAO,MAAK;AAAA,IACxB;AAEA,aAAS,eAAe,KAAK;AAC3B,oBAAc,MAAM,GAAG,GAAG,MAAK;AAAA,IACjC;AAEA,aAAS,UAAU,GAAG;AACpB,UAAI,CAAC,OAAO,KAAK,EAAE,GAAG,KAAK,CAAC,CAAC,aAAa,UAAU,aAAa,cAAc,KAAK,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC,EAAE,WAAW,CAAC,EAAE,SAAS;AACjI,UAAE,eAAc;AAAA,MAClB;AAAA,IACF;AAEA,aAAS,UAAU;AACjB,WAAK,QAAQ,KAAK,MAAM,QAAQ,OAAO,EAAE,EAAE,MAAM,GAAG,CAAC;AAErD,UAAI,KAAK,MAAM,WAAW,GAAG;AAC3B,cAAM,SAAS,KAAK,KAAK;AAAA,MAC3B;AAAA,IACF;AAEA,aAAS,YAAY,KAAK;AACxB,gBAAU,MAAM,GAAG,IAAI,UAAU,MAAM,GAAG,EAAE,QAAQ,OAAO,EAAE,EAAE,MAAM,GAAG,CAAC;AAGzE,UAAI,UAAU,MAAM,GAAG,EAAE,WAAW,KAAK,QAAQ,GAAG;AAClD,sBAAc,MAAM,CAAC,GAAG,MAAK;AAAA,MAC/B;AAGA,UAAI,aAAa,OAAO;AACtB,mBAAU;AAAA,MACZ;AAAA,IACF;AAEA,aAAS,aAAa;AACpB,YAAM,aAAa,CAAC,UAAU,MAAM,CAAC,GAAG,UAAU,MAAM,CAAC,CAAC,CAAC;AAAA,IAC7D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"OtpDialog.vue.js","sources":["../../../../../../../../src/modules/auth/views/components/blocks/OtpDialog.vue"],"sourcesContent":["<template>\n <Popup\n :isPopupOpen=\"otpState.visible\"\n @close-popup=\"cancelOtp\"\n class=\"bg-white w-clamp-20r-30r-100 radius-medium pd-medium\"\n >\n <!-- Single mode -->\n <section v-if=\"otpState.mode !== 'dual'\" class=\"t-center\">\n <h3 class=\"mn-b-medium\">\n {{ otpState.challenge?.type === 'email' ? 'Verify Email' : 'Verify Phone' }}\n </h3>\n\n <p class=\"mn-b-big opacity-50\">\n {{ otpState.challenge?.type === 'email'\n ? 'Enter the code sent to your email'\n : 'Enter the code sent to your phone' }}\n </p>\n\n <p class=\"mn-b-small opacity-50\">{{ otpState.challenge?.identifier }}</p>\n\n <div class=\"pos-relative mn-b-big cursor-text\" @click=\"focusInput(0)\">\n <input\n ref=\"inputRefs\"\n v-model=\"code\"\n type=\"text\"\n inputmode=\"numeric\"\n pattern=\"[0-9]*\"\n maxlength=\"4\"\n class=\"pos-absolute inset-0 w-100 h-100 opacity-0 z-1\"\n @input=\"onInput\"\n @keydown=\"onKeydown\"\n autocomplete=\"one-time-code\"\n >\n <div class=\"d-flex flex-h-center gap-small\">\n <div\n v-for=\"i in 4\"\n :key=\"i\"\n class=\"w-[60px] h-[60px] d-flex flex-center text-[28px] fw-medium bg-light radius-small br-1px ease-cubic\"\n :class=\"code.length === i - 1 ? 'br-main' : 'br-grey'\"\n >\n {{ code[i - 1] || '' }}\n </div>\n </div>\n </div>\n </section>\n\n <!-- Dual mode -->\n <section v-else class=\"t-center\">\n <h3 class=\"mn-b-medium\">Verify Change</h3>\n\n <div v-for=\"(challenge, idx) in otpState.challenges\" :key=\"idx\" class=\"mn-b-big\">\n <p class=\"mn-b-thin opacity-50\">\n {{ challenge.label === 'old' ? 'Current' : 'New' }}\n </p>\n <p class=\"mn-b-small\">{{ challenge.identifier }}</p>\n\n <div class=\"pos-relative cursor-text\" @click=\"focusDualInput(idx)\">\n <input\n :ref=\"el => dualInputRefs[idx] = el\"\n v-model=\"dualCodes[idx]\"\n type=\"text\"\n inputmode=\"numeric\"\n pattern=\"[0-9]*\"\n maxlength=\"4\"\n class=\"pos-absolute inset-0 w-100 h-100 opacity-0 z-1\"\n @input=\"onDualInput(idx)\"\n @keydown=\"onKeydown\"\n autocomplete=\"one-time-code\"\n >\n <div class=\"d-flex flex-h-center gap-small\">\n <div\n v-for=\"i in 4\"\n :key=\"i\"\n class=\"w-[48px] h-[48px] d-flex flex-center text-[24px] fw-medium bg-light radius-small br-1px ease-cubic\"\n :class=\"dualCodes[idx].length === i - 1 ? 'br-main' : 'br-grey'\"\n >\n {{ dualCodes[idx][i - 1] || '' }}\n </div>\n </div>\n </div>\n </div>\n\n <Button\n @click=\"submitDual\"\n :disabled=\"!bothComplete\"\n class=\"w-100\"\n >\n Confirm\n </Button>\n </section>\n </Popup>\n</template>\n\n<script setup>\nimport { ref, computed, watch } from 'vue'\nimport Popup from '@martyrs/src/components/Popup/Popup.vue'\nimport { Button } from '@ozdao/martyrs'\n\nconst props = defineProps({\n otpState: { type: Object, required: true },\n closeOtp: { type: Function, required: true },\n closeDualOtp: { type: Function, required: true },\n cancelOtp: { type: Function, required: true }\n})\n\nconst inputRefs = ref(null)\nconst dualInputRefs = ref([null, null])\nconst code = ref('')\nconst dualCodes = ref(['', ''])\n\nconst bothComplete = computed(() =>\n dualCodes.value[0].length === 4 && dualCodes.value[1].length === 4\n)\n\nwatch(() => props.otpState.visible, (visible) => {\n if (visible) {\n code.value = ''\n dualCodes.value = ['', '']\n setTimeout(() => {\n if (props.otpState.mode === 'dual') {\n dualInputRefs.value[0]?.focus()\n } else {\n inputRefs.value?.focus()\n }\n }, 100)\n }\n})\n\nfunction focusInput() {\n inputRefs.value?.focus()\n}\n\nfunction focusDualInput(idx) {\n dualInputRefs.value[idx]?.focus()\n}\n\nfunction onKeydown(e) {\n if (!/^\\d$/.test(e.key) && !['Backspace', 'Delete', 'ArrowLeft', 'ArrowRight', 'Tab'].includes(e.key) && !e.ctrlKey && !e.metaKey) {\n e.preventDefault()\n }\n}\n\nfunction onInput() {\n code.value = code.value.replace(/\\D/g, '').slice(0, 4)\n\n if (code.value.length === 4) {\n props.closeOtp(code.value)\n }\n}\n\nfunction onDualInput(idx) {\n dualCodes.value[idx] = dualCodes.value[idx].replace(/\\D/g, '').slice(0, 4)\n\n // Auto-focus next input when current is complete\n if (dualCodes.value[idx].length === 4 && idx === 0) {\n dualInputRefs.value[1]?.focus()\n }\n\n // Auto-submit when both are complete\n if (bothComplete.value) {\n submitDual()\n }\n}\n\nfunction submitDual() {\n props.closeDualOtp([dualCodes.value[0], dualCodes.value[1]])\n}\n</script>\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkGA,UAAM,QAAQ;AAOd,UAAM,YAAY,IAAI,IAAI;AAC1B,UAAM,gBAAgB,IAAI,CAAC,MAAM,IAAI,CAAC;AACtC,UAAM,OAAO,IAAI,EAAE;AACnB,UAAM,YAAY,IAAI,CAAC,IAAI,EAAE,CAAC;AAE9B,UAAM,eAAe;AAAA,MAAS,MAC5B,UAAU,MAAM,CAAC,EAAE,WAAW,KAAK,UAAU,MAAM,CAAC,EAAE,WAAW;AAAA,IACnE;AAEA,UAAM,MAAM,MAAM,SAAS,SAAS,CAAC,YAAY;AAC/C,UAAI,SAAS;AACX,aAAK,QAAQ;AACb,kBAAU,QAAQ,CAAC,IAAI,EAAE;AACzB,mBAAW,MAAM;AACf,cAAI,MAAM,SAAS,SAAS,QAAQ;AAClC,0BAAc,MAAM,CAAC,GAAG,MAAK;AAAA,UAC/B,OAAO;AACL,sBAAU,OAAO,MAAK;AAAA,UACxB;AAAA,QACF,GAAG,GAAG;AAAA,MACR;AAAA,IACF,CAAC;AAED,aAAS,aAAa;AACpB,gBAAU,OAAO,MAAK;AAAA,IACxB;AAEA,aAAS,eAAe,KAAK;AAC3B,oBAAc,MAAM,GAAG,GAAG,MAAK;AAAA,IACjC;AAEA,aAAS,UAAU,GAAG;AACpB,UAAI,CAAC,OAAO,KAAK,EAAE,GAAG,KAAK,CAAC,CAAC,aAAa,UAAU,aAAa,cAAc,KAAK,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC,EAAE,WAAW,CAAC,EAAE,SAAS;AACjI,UAAE,eAAc;AAAA,MAClB;AAAA,IACF;AAEA,aAAS,UAAU;AACjB,WAAK,QAAQ,KAAK,MAAM,QAAQ,OAAO,EAAE,EAAE,MAAM,GAAG,CAAC;AAErD,UAAI,KAAK,MAAM,WAAW,GAAG;AAC3B,cAAM,SAAS,KAAK,KAAK;AAAA,MAC3B;AAAA,IACF;AAEA,aAAS,YAAY,KAAK;AACxB,gBAAU,MAAM,GAAG,IAAI,UAAU,MAAM,GAAG,EAAE,QAAQ,OAAO,EAAE,EAAE,MAAM,GAAG,CAAC;AAGzE,UAAI,UAAU,MAAM,GAAG,EAAE,WAAW,KAAK,QAAQ,GAAG;AAClD,sBAAc,MAAM,CAAC,GAAG,MAAK;AAAA,MAC/B;AAGA,UAAI,aAAa,OAAO;AACtB,mBAAU;AAAA,MACZ;AAAA,IACF;AAEA,aAAS,aAAa;AACpB,YAAM,aAAa,CAAC,UAAU,MAAM,CAAC,GAAG,UAAU,MAAM,CAAC,CAAC,CAAC;AAAA,IAC7D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -5,7 +5,7 @@ import _sfc_main$1 from "../../../../../components/Popup/Popup.vue.js";
5
5
  import Button from "../../../../../components/Button/Button.vue2.js";
6
6
  const _hoisted_1 = { class: "t-center" };
7
7
  const _hoisted_2 = { class: "mn-b-medium" };
8
- const _hoisted_3 = { class: "mn-b-semi t-transp" };
8
+ const _hoisted_3 = { class: "mn-b-semi opacity-50" };
9
9
  const _hoisted_4 = { class: "flex-column flex gap-thin" };
10
10
  const _sfc_main = {
11
11
  __name: "PopupAuth",
@@ -1 +1 @@
1
- {"version":3,"file":"PopupAuth.vue.js","sources":["../../../../../../../../src/modules/auth/views/components/blocks/PopupAuth.vue"],"sourcesContent":["<!-- @martyrs/src/modules/auth/views/components/AuthDialog.vue -->\n<template>\n <Popup\n :isPopupOpen=\"authState.visible\"\n @close-popup=\"closeAuth\"\n @after-leave=\"$emit('after-leave')\"\n class=\"bg-white radius-medium pd-medium\"\n >\n <div class=\"t-center\">\n <img loading=\"lazy\" :src=\"'/logo/logo.svg'\" class=\"i-extra radius-small mn-b-medium\">\n <h3 class=\"mn-b-medium\">{{ authState.title || t('auth.popup.title') }}</h3>\n <p class=\"mn-b-semi t-transp\">{{ authState.subtitle || t('auth.popup.subtitle') }}</p>\n\n <div class=\"flex-column flex gap-thin\">\n <Button\n :submit=\"handleSignUp\"\n class=\"bg-main radius-small mn-b-small pd-thin\"\n >\n {{ authState.buttonText || t('auth.popup.signUp') }}\n </Button>\n\n <span>\n {{ t('auth.popup.haveAccount') }}\n <a @click=\"handleSignIn\" class=\"t-dark cursor-pointer\">{{ t('auth.popup.signIn') }}</a>\n </span>\n </div>\n </div>\n </Popup>\n</template>\n\n<script setup>\nimport { useRouter, useRoute } from 'vue-router';\nimport { useI18n } from 'vue-i18n';\nimport Popup from '@martyrs/src/components/Popup/Popup.vue';\nimport Button from '@martyrs/src/components/Button/Button.vue';\n\nconst { t } = useI18n();\n\ndefineEmits(['after-leave']);\n\nconst props = defineProps({\n authState: {\n type: Object,\n required: true\n },\n closeAuth: {\n type: Function,\n required: true\n }\n});\n\nconst router = useRouter();\nconst route = useRoute();\n\nconst handleSignIn = async () => {\n const returnUrl = props.authState.returnUrl || route.fullPath;\n await router.push({ \n name: 'Sign In',\n query: { returnUrl }\n });\n props.closeAuth('signin');\n};\n\nconst handleSignUp = async () => {\n const returnUrl = props.authState.returnUrl || route.fullPath;\n await router.push({ \n name: 'Sign Up',\n query: { returnUrl }\n });\n props.closeAuth('signup');\n};\n</script>"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAoCA,UAAM,EAAE,EAAC,IAAK,QAAO;AAIrB,UAAM,QAAQ;AAWd,UAAM,SAAS,UAAS;AACxB,UAAM,QAAQ,SAAQ;AAEtB,UAAM,eAAe,YAAY;AAC/B,YAAM,YAAY,MAAM,UAAU,aAAa,MAAM;AACrD,YAAM,OAAO,KAAK;AAAA,QAChB,MAAM;AAAA,QACN,OAAO,EAAE,UAAS;AAAA,MACtB,CAAG;AACD,YAAM,UAAU,QAAQ;AAAA,IAC1B;AAEA,UAAM,eAAe,YAAY;AAC/B,YAAM,YAAY,MAAM,UAAU,aAAa,MAAM;AACrD,YAAM,OAAO,KAAK;AAAA,QAChB,MAAM;AAAA,QACN,OAAO,EAAE,UAAS;AAAA,MACtB,CAAG;AACD,YAAM,UAAU,QAAQ;AAAA,IAC1B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"PopupAuth.vue.js","sources":["../../../../../../../../src/modules/auth/views/components/blocks/PopupAuth.vue"],"sourcesContent":["<!-- @martyrs/src/modules/auth/views/components/AuthDialog.vue -->\n<template>\n <Popup\n :isPopupOpen=\"authState.visible\"\n @close-popup=\"closeAuth\"\n @after-leave=\"$emit('after-leave')\"\n class=\"bg-white radius-medium pd-medium\"\n >\n <div class=\"t-center\">\n <img loading=\"lazy\" :src=\"'/logo/logo.svg'\" class=\"i-extra radius-small mn-b-medium\">\n <h3 class=\"mn-b-medium\">{{ authState.title || t('auth.popup.title') }}</h3>\n <p class=\"mn-b-semi opacity-50\">{{ authState.subtitle || t('auth.popup.subtitle') }}</p>\n\n <div class=\"flex-column flex gap-thin\">\n <Button\n :submit=\"handleSignUp\"\n class=\"bg-main radius-small mn-b-small pd-thin\"\n >\n {{ authState.buttonText || t('auth.popup.signUp') }}\n </Button>\n\n <span>\n {{ t('auth.popup.haveAccount') }}\n <a @click=\"handleSignIn\" class=\"t-dark cursor-pointer\">{{ t('auth.popup.signIn') }}</a>\n </span>\n </div>\n </div>\n </Popup>\n</template>\n\n<script setup>\nimport { useRouter, useRoute } from 'vue-router';\nimport { useI18n } from 'vue-i18n';\nimport Popup from '@martyrs/src/components/Popup/Popup.vue';\nimport Button from '@martyrs/src/components/Button/Button.vue';\n\nconst { t } = useI18n();\n\ndefineEmits(['after-leave']);\n\nconst props = defineProps({\n authState: {\n type: Object,\n required: true\n },\n closeAuth: {\n type: Function,\n required: true\n }\n});\n\nconst router = useRouter();\nconst route = useRoute();\n\nconst handleSignIn = async () => {\n const returnUrl = props.authState.returnUrl || route.fullPath;\n await router.push({ \n name: 'Sign In',\n query: { returnUrl }\n });\n props.closeAuth('signin');\n};\n\nconst handleSignUp = async () => {\n const returnUrl = props.authState.returnUrl || route.fullPath;\n await router.push({ \n name: 'Sign Up',\n query: { returnUrl }\n });\n props.closeAuth('signup');\n};\n</script>"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAoCA,UAAM,EAAE,EAAC,IAAK,QAAO;AAIrB,UAAM,QAAQ;AAWd,UAAM,SAAS,UAAS;AACxB,UAAM,QAAQ,SAAQ;AAEtB,UAAM,eAAe,YAAY;AAC/B,YAAM,YAAY,MAAM,UAAU,aAAa,MAAM;AACrD,YAAM,OAAO,KAAK;AAAA,QAChB,MAAM;AAAA,QACN,OAAO,EAAE,UAAS;AAAA,MACtB,CAAG;AACD,YAAM,UAAU,QAAQ;AAAA,IAC1B;AAEA,UAAM,eAAe,YAAY;AAC/B,YAAM,YAAY,MAAM,UAAU,aAAa,MAAM;AACrD,YAAM,OAAO,KAAK;AAAA,QAChB,MAAM;AAAA,QACN,OAAO,EAAE,UAAS;AAAA,MACtB,CAAG;AACD,YAAM,UAAU,QAAQ;AAAA,IAC1B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}