@ozdao/martyrs 0.2.526 → 0.2.527

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 (691) hide show
  1. package/dist/_virtual/dayjs.min.cjs +1 -1
  2. package/dist/_virtual/dayjs.min.js +1 -1
  3. package/dist/_virtual/index.cjs +4 -4
  4. package/dist/_virtual/index.js +4 -4
  5. package/dist/_virtual/index2.cjs +4 -4
  6. package/dist/_virtual/index2.js +4 -4
  7. package/dist/_virtual/weekOfYear.cjs +1 -1
  8. package/dist/_virtual/weekOfYear.js +1 -1
  9. package/dist/builder.cjs +618 -972
  10. package/dist/builder.js +619 -973
  11. package/dist/main-BNqX4N59.cjs +11 -0
  12. package/dist/{main-Bk4xq-K0.js → main-DFvn9trs.js} +1293 -1287
  13. package/dist/martyrs/src/components/Address/Address.vue.cjs +1 -1
  14. package/dist/martyrs/src/components/Address/Address.vue.js +1 -1
  15. package/dist/martyrs/src/components/Chips/{Chips.vue.cjs → Chips.vue2.cjs} +2 -2
  16. package/dist/martyrs/src/components/Chips/Chips.vue2.cjs.map +1 -0
  17. package/dist/martyrs/src/components/Chips/{Chips.vue.js → Chips.vue2.js} +2 -2
  18. package/dist/martyrs/src/components/Chips/Chips.vue2.js.map +1 -0
  19. package/dist/martyrs/src/components/EditImages/EditImages.vue2.cjs +1 -1
  20. package/dist/martyrs/src/components/EditImages/EditImages.vue2.js +1 -1
  21. package/dist/martyrs/src/components/Feed/{Feed.vue.cjs → Feed.vue2.cjs} +2 -2
  22. package/dist/martyrs/src/components/Feed/Feed.vue2.cjs.map +1 -0
  23. package/dist/martyrs/src/components/Feed/{Feed.vue.js → Feed.vue2.js} +2 -2
  24. package/dist/martyrs/src/components/Feed/{Feed.vue.cjs.map → Feed.vue2.js.map} +1 -1
  25. package/dist/martyrs/src/components/Field/{Field.vue.cjs → Field.vue2.cjs} +2 -2
  26. package/dist/martyrs/src/components/Field/Field.vue2.cjs.map +1 -0
  27. package/dist/martyrs/src/components/Field/{Field.vue.js → Field.vue2.js} +2 -2
  28. package/dist/martyrs/src/components/Field/{Field.vue.cjs.map → Field.vue2.js.map} +1 -1
  29. package/dist/martyrs/src/components/FieldBig/FieldBig.vue.cjs +1 -1
  30. package/dist/martyrs/src/components/FieldBig/FieldBig.vue.js +1 -1
  31. package/dist/martyrs/src/components/FieldTags/{BlockTags.vue.cjs → BlockTags.vue2.cjs} +2 -2
  32. package/dist/martyrs/src/components/FieldTags/BlockTags.vue2.cjs.map +1 -0
  33. package/dist/martyrs/src/components/FieldTags/{BlockTags.vue.js → BlockTags.vue2.js} +2 -2
  34. package/dist/martyrs/src/components/FieldTags/{BlockTags.vue.cjs.map → BlockTags.vue2.js.map} +1 -1
  35. package/dist/martyrs/src/components/FieldTags/FieldTags.vue.cjs +1 -1
  36. package/dist/martyrs/src/components/FieldTags/FieldTags.vue.js +1 -1
  37. package/dist/martyrs/src/components/LocationMarker/LocationMarker.vue.cjs +1 -1
  38. package/dist/martyrs/src/components/LocationMarker/LocationMarker.vue.js +1 -1
  39. package/dist/martyrs/src/components/Map/Map.vue.cjs +1 -1
  40. package/dist/martyrs/src/components/Map/Map.vue.js +1 -1
  41. package/dist/martyrs/src/components/Menu/{Menu.vue2.cjs → Menu.vue.cjs} +2 -2
  42. package/dist/martyrs/src/components/Menu/Menu.vue.cjs.map +1 -0
  43. package/dist/martyrs/src/components/Menu/{Menu.vue2.js → Menu.vue.js} +2 -2
  44. package/dist/martyrs/src/components/Menu/Menu.vue.js.map +1 -0
  45. package/dist/martyrs/src/components/Select/{Select.vue2.cjs → Select.vue.cjs} +2 -2
  46. package/dist/martyrs/src/components/Select/{Select.vue2.js.map → Select.vue.cjs.map} +1 -1
  47. package/dist/martyrs/src/components/Select/{Select.vue2.js → Select.vue.js} +2 -2
  48. package/dist/martyrs/src/components/Select/Select.vue.js.map +1 -0
  49. package/dist/martyrs/src/components/Tree/Tree.vue.cjs +1 -1
  50. package/dist/martyrs/src/components/Tree/Tree.vue.js +1 -1
  51. package/dist/martyrs/src/modules/auth/auth.client.cjs +32 -30
  52. package/dist/martyrs/src/modules/auth/auth.client.cjs.map +1 -1
  53. package/dist/martyrs/src/modules/auth/auth.client.js +30 -28
  54. package/dist/martyrs/src/modules/auth/auth.client.js.map +1 -1
  55. package/dist/martyrs/src/modules/auth/views/components/pages/EnterCode.vue.cjs +1 -1
  56. package/dist/martyrs/src/modules/auth/views/components/pages/EnterCode.vue.js +1 -1
  57. package/dist/martyrs/src/modules/auth/views/components/pages/EnterPassword.vue.cjs +1 -1
  58. package/dist/martyrs/src/modules/auth/views/components/pages/EnterPassword.vue.js +1 -1
  59. package/dist/martyrs/src/modules/auth/views/components/pages/Invite.vue.cjs +1 -1
  60. package/dist/martyrs/src/modules/auth/views/components/pages/Invite.vue.js +1 -1
  61. package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.cjs +2 -2
  62. package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.js +2 -2
  63. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileBlogposts.vue.cjs +1 -1
  64. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileBlogposts.vue.js +1 -1
  65. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditProfile.vue.cjs +1 -2
  66. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditProfile.vue.cjs.map +1 -1
  67. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditProfile.vue.js +1 -2
  68. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditProfile.vue.js.map +1 -1
  69. package/dist/martyrs/src/modules/auth/views/components/pages/ResetPassword.vue.cjs +1 -2
  70. package/dist/martyrs/src/modules/auth/views/components/pages/ResetPassword.vue.cjs.map +1 -1
  71. package/dist/martyrs/src/modules/auth/views/components/pages/ResetPassword.vue.js +1 -2
  72. package/dist/martyrs/src/modules/auth/views/components/pages/ResetPassword.vue.js.map +1 -1
  73. package/dist/martyrs/src/modules/auth/views/components/pages/SignIn.vue.cjs +1 -1
  74. package/dist/martyrs/src/modules/auth/views/components/pages/SignIn.vue.js +1 -1
  75. package/dist/martyrs/src/modules/auth/views/components/pages/SignUp.vue.cjs +1 -1
  76. package/dist/martyrs/src/modules/auth/views/components/pages/SignUp.vue.js +1 -1
  77. package/dist/martyrs/src/modules/auth/views/components/sections/ProfileEditCredentials.vue.cjs +1 -1
  78. package/dist/martyrs/src/modules/auth/views/components/sections/ProfileEditCredentials.vue.js +1 -1
  79. package/dist/martyrs/src/modules/auth/views/middlewares/ownership.validation.cjs +0 -1
  80. package/dist/martyrs/src/modules/auth/views/middlewares/ownership.validation.cjs.map +1 -1
  81. package/dist/martyrs/src/modules/auth/views/middlewares/ownership.validation.js +0 -1
  82. package/dist/martyrs/src/modules/auth/views/middlewares/ownership.validation.js.map +1 -1
  83. package/dist/martyrs/src/modules/auth/views/store/auth.cjs +2 -0
  84. package/dist/martyrs/src/modules/auth/views/store/auth.cjs.map +1 -1
  85. package/dist/martyrs/src/modules/auth/views/store/auth.js +2 -0
  86. package/dist/martyrs/src/modules/auth/views/store/auth.js.map +1 -1
  87. package/dist/martyrs/src/modules/backoffice/components/pages/Dashboard.vue.cjs +1 -2
  88. package/dist/martyrs/src/modules/backoffice/components/pages/Dashboard.vue.cjs.map +1 -1
  89. package/dist/martyrs/src/modules/backoffice/components/pages/Dashboard.vue.js +1 -2
  90. package/dist/martyrs/src/modules/backoffice/components/pages/Dashboard.vue.js.map +1 -1
  91. package/dist/martyrs/src/modules/backoffice/components/partials/Sidebar.vue.cjs +0 -2
  92. package/dist/martyrs/src/modules/backoffice/components/partials/Sidebar.vue.cjs.map +1 -1
  93. package/dist/martyrs/src/modules/backoffice/components/partials/Sidebar.vue.js +0 -2
  94. package/dist/martyrs/src/modules/backoffice/components/partials/Sidebar.vue.js.map +1 -1
  95. package/dist/martyrs/src/modules/chats/store/chat.store.js +1 -1
  96. package/dist/martyrs/src/modules/community/components/blocks/CardBlogpost.vue.cjs +1 -1
  97. package/dist/martyrs/src/modules/community/components/blocks/CardBlogpost.vue.js +1 -1
  98. package/dist/martyrs/src/modules/community/components/layouts/Community.vue.cjs +2 -2
  99. package/dist/martyrs/src/modules/community/components/layouts/Community.vue.js +2 -2
  100. package/dist/martyrs/src/modules/community/components/pages/Blog.vue.cjs +1 -1
  101. package/dist/martyrs/src/modules/community/components/pages/Blog.vue.js +1 -1
  102. package/dist/martyrs/src/modules/community/components/pages/BlogPost.vue.cjs +2 -4
  103. package/dist/martyrs/src/modules/community/components/pages/BlogPost.vue.cjs.map +1 -1
  104. package/dist/martyrs/src/modules/community/components/pages/BlogPost.vue.js +2 -4
  105. package/dist/martyrs/src/modules/community/components/pages/BlogPost.vue.js.map +1 -1
  106. package/dist/martyrs/src/modules/community/components/pages/CreateBlogPost.vue.cjs +4 -4
  107. package/dist/martyrs/src/modules/community/components/pages/CreateBlogPost.vue.js +4 -4
  108. package/dist/martyrs/src/modules/community/components/pages/Posts.vue.cjs +1 -1
  109. package/dist/martyrs/src/modules/community/components/pages/Posts.vue.js +1 -1
  110. package/dist/martyrs/src/modules/community/router/blogposts.cjs +4 -2
  111. package/dist/martyrs/src/modules/community/router/blogposts.cjs.map +1 -1
  112. package/dist/martyrs/src/modules/community/router/blogposts.js +4 -2
  113. package/dist/martyrs/src/modules/community/router/blogposts.js.map +1 -1
  114. package/dist/martyrs/src/modules/constructor/components/elements/Card.vue.cjs +1 -1
  115. package/dist/martyrs/src/modules/constructor/components/elements/Card.vue.js +1 -1
  116. package/dist/martyrs/src/modules/constructor/components/elements/Embed.vue.cjs +1 -1
  117. package/dist/martyrs/src/modules/constructor/components/elements/Embed.vue.js +1 -1
  118. package/dist/martyrs/src/modules/events/components/blocks/CardEvent.vue.cjs +1 -2
  119. package/dist/martyrs/src/modules/events/components/blocks/CardEvent.vue.cjs.map +1 -1
  120. package/dist/martyrs/src/modules/events/components/blocks/CardEvent.vue.js +1 -2
  121. package/dist/martyrs/src/modules/events/components/blocks/CardEvent.vue.js.map +1 -1
  122. package/dist/martyrs/src/modules/events/components/elements/ButtonCheck.vue.cjs +1 -1
  123. package/dist/martyrs/src/modules/events/components/elements/ButtonCheck.vue.js +1 -1
  124. package/dist/martyrs/src/modules/events/components/elements/ButtonJoin.vue.cjs +0 -1
  125. package/dist/martyrs/src/modules/events/components/elements/ButtonJoin.vue.cjs.map +1 -1
  126. package/dist/martyrs/src/modules/events/components/elements/ButtonJoin.vue.js +0 -1
  127. package/dist/martyrs/src/modules/events/components/elements/ButtonJoin.vue.js.map +1 -1
  128. package/dist/martyrs/src/modules/events/components/pages/EditEvent.vue.cjs +4 -5
  129. package/dist/martyrs/src/modules/events/components/pages/EditEvent.vue.cjs.map +1 -1
  130. package/dist/martyrs/src/modules/events/components/pages/EditEvent.vue.js +4 -5
  131. package/dist/martyrs/src/modules/events/components/pages/EditEvent.vue.js.map +1 -1
  132. package/dist/martyrs/src/modules/events/components/pages/EditEventTickets.vue.cjs +2 -3
  133. package/dist/martyrs/src/modules/events/components/pages/EditEventTickets.vue.cjs.map +1 -1
  134. package/dist/martyrs/src/modules/events/components/pages/EditEventTickets.vue.js +2 -3
  135. package/dist/martyrs/src/modules/events/components/pages/EditEventTickets.vue.js.map +1 -1
  136. package/dist/martyrs/src/modules/events/components/pages/Event.vue.cjs +4 -5
  137. package/dist/martyrs/src/modules/events/components/pages/Event.vue.cjs.map +1 -1
  138. package/dist/martyrs/src/modules/events/components/pages/Event.vue.js +4 -5
  139. package/dist/martyrs/src/modules/events/components/pages/Event.vue.js.map +1 -1
  140. package/dist/martyrs/src/modules/events/components/pages/Events.vue.cjs +1 -1
  141. package/dist/martyrs/src/modules/events/components/pages/Events.vue.js +1 -1
  142. package/dist/martyrs/src/modules/events/components/pages/EventsBackoffice.vue.cjs +1 -1
  143. package/dist/martyrs/src/modules/events/components/pages/EventsBackoffice.vue.js +1 -1
  144. package/dist/martyrs/src/modules/events/components/pages/EventsSearch.vue.cjs +1 -1
  145. package/dist/martyrs/src/modules/events/components/pages/EventsSearch.vue.js +1 -1
  146. package/dist/martyrs/src/modules/events/components/sections/FeaturedEvents.vue.cjs +0 -1
  147. package/dist/martyrs/src/modules/events/components/sections/FeaturedEvents.vue.cjs.map +1 -1
  148. package/dist/martyrs/src/modules/events/components/sections/FeaturedEvents.vue.js +0 -1
  149. package/dist/martyrs/src/modules/events/components/sections/FeaturedEvents.vue.js.map +1 -1
  150. package/dist/martyrs/src/modules/events/router/events.cjs +7 -7
  151. package/dist/martyrs/src/modules/events/router/events.cjs.map +1 -1
  152. package/dist/martyrs/src/modules/events/router/events.js +7 -7
  153. package/dist/martyrs/src/modules/events/router/events.js.map +1 -1
  154. package/dist/martyrs/src/modules/gallery/components/pages/Gallery.vue.cjs +1 -1
  155. package/dist/martyrs/src/modules/gallery/components/pages/Gallery.vue.js +1 -1
  156. package/dist/martyrs/src/modules/gallery/components/sections/BackofficeGallery.vue.cjs +5 -6
  157. package/dist/martyrs/src/modules/gallery/components/sections/BackofficeGallery.vue.cjs.map +1 -1
  158. package/dist/martyrs/src/modules/gallery/components/sections/BackofficeGallery.vue.js +5 -6
  159. package/dist/martyrs/src/modules/gallery/components/sections/BackofficeGallery.vue.js.map +1 -1
  160. package/dist/martyrs/src/modules/gallery/router/gallery.router.cjs +1 -1
  161. package/dist/martyrs/src/modules/gallery/router/gallery.router.cjs.map +1 -1
  162. package/dist/martyrs/src/modules/gallery/router/gallery.router.js +1 -1
  163. package/dist/martyrs/src/modules/gallery/router/gallery.router.js.map +1 -1
  164. package/dist/martyrs/src/modules/globals/globals.client.cjs +21 -38
  165. package/dist/martyrs/src/modules/globals/globals.client.cjs.map +1 -1
  166. package/dist/martyrs/src/modules/globals/globals.client.js +26 -43
  167. package/dist/martyrs/src/modules/globals/globals.client.js.map +1 -1
  168. package/dist/martyrs/src/modules/globals/views/classes/globals.i18n.cjs +1 -1
  169. package/dist/martyrs/src/modules/globals/views/classes/globals.i18n.js +1 -1
  170. package/dist/martyrs/src/modules/globals/views/classes/module-registry.cjs +156 -0
  171. package/dist/martyrs/src/modules/globals/views/classes/module-registry.cjs.map +1 -0
  172. package/dist/martyrs/src/modules/globals/views/classes/module-registry.js +156 -0
  173. package/dist/martyrs/src/modules/globals/views/classes/module-registry.js.map +1 -0
  174. package/dist/martyrs/src/modules/globals/views/classes/store.cjs +24 -7
  175. package/dist/martyrs/src/modules/globals/views/classes/store.cjs.map +1 -1
  176. package/dist/martyrs/src/modules/globals/views/classes/store.js +24 -7
  177. package/dist/martyrs/src/modules/globals/views/classes/store.js.map +1 -1
  178. package/dist/martyrs/src/modules/globals/views/components/blocks/BlockMultiselect.vue.cjs +1 -1
  179. package/dist/martyrs/src/modules/globals/views/components/blocks/BlockMultiselect.vue.js +1 -1
  180. package/dist/martyrs/src/modules/globals/views/components/blocks/BlockSearch.vue.cjs +1 -1
  181. package/dist/martyrs/src/modules/globals/views/components/blocks/BlockSearch.vue.js +1 -1
  182. package/dist/martyrs/src/modules/globals/views/components/blocks/CardHeader.vue.cjs +0 -2
  183. package/dist/martyrs/src/modules/globals/views/components/blocks/CardHeader.vue.cjs.map +1 -1
  184. package/dist/martyrs/src/modules/globals/views/components/blocks/CardHeader.vue.js +0 -2
  185. package/dist/martyrs/src/modules/globals/views/components/blocks/CardHeader.vue.js.map +1 -1
  186. package/dist/martyrs/src/modules/globals/views/components/layouts/App.vue.cjs +2 -3
  187. package/dist/martyrs/src/modules/globals/views/components/layouts/App.vue.cjs.map +1 -1
  188. package/dist/martyrs/src/modules/globals/views/components/layouts/App.vue.js +2 -3
  189. package/dist/martyrs/src/modules/globals/views/components/layouts/App.vue.js.map +1 -1
  190. package/dist/martyrs/src/modules/globals/views/components/layouts/Client.vue.cjs +5 -8
  191. package/dist/martyrs/src/modules/globals/views/components/layouts/Client.vue.cjs.map +1 -1
  192. package/dist/martyrs/src/modules/globals/views/components/layouts/Client.vue.js +5 -8
  193. package/dist/martyrs/src/modules/globals/views/components/layouts/Client.vue.js.map +1 -1
  194. package/dist/martyrs/src/modules/globals/views/components/partials/Footer.vue.js +2 -2
  195. package/dist/martyrs/src/modules/globals/views/components/partials/Header.vue.cjs +1 -1
  196. package/dist/martyrs/src/modules/globals/views/components/partials/Header.vue.js +1 -1
  197. package/dist/martyrs/src/modules/globals/views/components/sections/Filters.vue2.cjs +1 -1
  198. package/dist/martyrs/src/modules/globals/views/components/sections/Filters.vue2.js +1 -1
  199. package/dist/martyrs/src/modules/globals/views/components/sections/Walkthrough.vue.cjs +44 -45
  200. package/dist/martyrs/src/modules/globals/views/components/sections/Walkthrough.vue.cjs.map +1 -1
  201. package/dist/martyrs/src/modules/globals/views/components/sections/Walkthrough.vue.js +44 -45
  202. package/dist/martyrs/src/modules/globals/views/components/sections/Walkthrough.vue.js.map +1 -1
  203. package/dist/martyrs/src/modules/globals/views/plugins/alert.plugin.cjs +4 -2
  204. package/dist/martyrs/src/modules/globals/views/plugins/alert.plugin.cjs.map +1 -1
  205. package/dist/martyrs/src/modules/globals/views/plugins/alert.plugin.js +5 -3
  206. package/dist/martyrs/src/modules/globals/views/plugins/alert.plugin.js.map +1 -1
  207. package/dist/martyrs/src/modules/globals/views/plugins/date-picker.plugin.cjs +4 -2
  208. package/dist/martyrs/src/modules/globals/views/plugins/date-picker.plugin.cjs.map +1 -1
  209. package/dist/martyrs/src/modules/globals/views/plugins/date-picker.plugin.js +5 -3
  210. package/dist/martyrs/src/modules/globals/views/plugins/date-picker.plugin.js.map +1 -1
  211. package/dist/martyrs/src/modules/globals/views/plugins/popup.auth.plugin.cjs +4 -2
  212. package/dist/martyrs/src/modules/globals/views/plugins/popup.auth.plugin.cjs.map +1 -1
  213. package/dist/martyrs/src/modules/globals/views/plugins/popup.auth.plugin.js +5 -3
  214. package/dist/martyrs/src/modules/globals/views/plugins/popup.auth.plugin.js.map +1 -1
  215. package/dist/martyrs/src/modules/globals/views/store/globals.cjs +15 -8
  216. package/dist/martyrs/src/modules/globals/views/store/globals.cjs.map +1 -1
  217. package/dist/martyrs/src/modules/globals/views/store/globals.js +15 -8
  218. package/dist/martyrs/src/modules/globals/views/store/globals.js.map +1 -1
  219. package/dist/martyrs/src/modules/globals/views/utils/polyfills.cjs +26 -0
  220. package/dist/martyrs/src/modules/globals/views/utils/polyfills.cjs.map +1 -0
  221. package/dist/martyrs/src/modules/globals/views/utils/polyfills.js +26 -0
  222. package/dist/martyrs/src/modules/globals/views/utils/polyfills.js.map +1 -0
  223. package/dist/martyrs/src/modules/globals/views/utils/vue-app-renderer.cjs +28 -12
  224. package/dist/martyrs/src/modules/globals/views/utils/vue-app-renderer.cjs.map +1 -1
  225. package/dist/martyrs/src/modules/globals/views/utils/vue-app-renderer.js +28 -12
  226. package/dist/martyrs/src/modules/globals/views/utils/vue-app-renderer.js.map +1 -1
  227. package/dist/martyrs/src/modules/icons/components/IconSearchPopup.vue.cjs +2 -2
  228. package/dist/martyrs/src/modules/icons/components/IconSearchPopup.vue.cjs.map +1 -1
  229. package/dist/martyrs/src/modules/icons/components/IconSearchPopup.vue.js +2 -2
  230. package/dist/martyrs/src/modules/icons/components/IconSearchPopup.vue.js.map +1 -1
  231. package/dist/martyrs/src/modules/icons/entities/IconTime.vue.cjs +2 -2
  232. package/dist/martyrs/src/modules/icons/entities/IconTime.vue.js +2 -2
  233. package/dist/martyrs/src/modules/icons/icons.client.cjs.map +1 -1
  234. package/dist/martyrs/src/modules/icons/icons.client.js.map +1 -1
  235. package/dist/martyrs/src/modules/icons/pages/IconsPage.vue.js +2 -2
  236. package/dist/martyrs/src/modules/icons/pages/IconsPage.vue.js.map +1 -1
  237. package/dist/martyrs/src/modules/icons/router/icons.router.cjs +0 -1
  238. package/dist/martyrs/src/modules/icons/router/icons.router.cjs.map +1 -1
  239. package/dist/martyrs/src/modules/icons/router/icons.router.js +0 -1
  240. package/dist/martyrs/src/modules/icons/router/icons.router.js.map +1 -1
  241. package/dist/martyrs/src/modules/inventory/components/forms/AdjustmentForm.vue.cjs +2 -2
  242. package/dist/martyrs/src/modules/inventory/components/forms/AdjustmentForm.vue.js +2 -2
  243. package/dist/martyrs/src/modules/inventory/components/forms/StockAlertsForm.vue.cjs +2 -2
  244. package/dist/martyrs/src/modules/inventory/components/forms/StockAlertsForm.vue.js +2 -2
  245. package/dist/martyrs/src/modules/inventory/components/pages/Inventory.vue.cjs +3 -4
  246. package/dist/martyrs/src/modules/inventory/components/pages/Inventory.vue.cjs.map +1 -1
  247. package/dist/martyrs/src/modules/inventory/components/pages/Inventory.vue.js +2 -3
  248. package/dist/martyrs/src/modules/inventory/components/pages/Inventory.vue.js.map +1 -1
  249. package/dist/martyrs/src/modules/inventory/components/pages/InventoryEdit.vue.cjs +3 -3
  250. package/dist/martyrs/src/modules/inventory/components/pages/InventoryEdit.vue.js +3 -3
  251. package/dist/martyrs/src/modules/inventory/inventory.client.cjs.map +1 -1
  252. package/dist/martyrs/src/modules/inventory/inventory.client.js.map +1 -1
  253. package/dist/martyrs/src/modules/inventory/router/inventory.router.cjs +2 -2
  254. package/dist/martyrs/src/modules/inventory/router/inventory.router.cjs.map +1 -1
  255. package/dist/martyrs/src/modules/inventory/router/inventory.router.js +2 -2
  256. package/dist/martyrs/src/modules/inventory/router/inventory.router.js.map +1 -1
  257. package/dist/martyrs/src/modules/landing/components/sections/SectionEarn.vue.cjs +5 -3
  258. package/dist/martyrs/src/modules/landing/components/sections/SectionEarn.vue.cjs.map +1 -1
  259. package/dist/martyrs/src/modules/landing/components/sections/SectionEarn.vue.js +5 -3
  260. package/dist/martyrs/src/modules/landing/components/sections/SectionEarn.vue.js.map +1 -1
  261. package/dist/martyrs/src/modules/landing/components/sections/SectionMobileApp.vue.cjs +44 -30
  262. package/dist/martyrs/src/modules/landing/components/sections/SectionMobileApp.vue.cjs.map +1 -1
  263. package/dist/martyrs/src/modules/landing/components/sections/SectionMobileApp.vue.js +44 -30
  264. package/dist/martyrs/src/modules/landing/components/sections/SectionMobileApp.vue.js.map +1 -1
  265. package/dist/martyrs/src/modules/marketplace/marketplace.client.cjs +2 -2
  266. package/dist/martyrs/src/modules/marketplace/marketplace.client.cjs.map +1 -1
  267. package/dist/martyrs/src/modules/marketplace/marketplace.client.js +2 -2
  268. package/dist/martyrs/src/modules/marketplace/marketplace.client.js.map +1 -1
  269. package/dist/martyrs/src/modules/marketplace/views/components/layouts/Marketplace.vue.cjs +1 -1
  270. package/dist/martyrs/src/modules/marketplace/views/components/layouts/Marketplace.vue.js +1 -1
  271. package/dist/martyrs/src/modules/marketplace/views/components/pages/Catalog.vue.cjs +1 -1
  272. package/dist/martyrs/src/modules/marketplace/views/components/pages/Catalog.vue.js +1 -1
  273. package/dist/martyrs/src/modules/music/components/forms/AlbumForm.vue.cjs +2 -2
  274. package/dist/martyrs/src/modules/music/components/forms/AlbumForm.vue.js +2 -2
  275. package/dist/martyrs/src/modules/music/components/forms/ArtistForm.vue.cjs +2 -2
  276. package/dist/martyrs/src/modules/music/components/forms/ArtistForm.vue.js +2 -2
  277. package/dist/martyrs/src/modules/music/components/forms/PlaylistForm.vue.cjs +1 -1
  278. package/dist/martyrs/src/modules/music/components/forms/PlaylistForm.vue.js +1 -1
  279. package/dist/martyrs/src/modules/music/components/forms/TrackForm.vue.cjs +2 -2
  280. package/dist/martyrs/src/modules/music/components/forms/TrackForm.vue.js +2 -2
  281. package/dist/martyrs/src/modules/music/components/pages/Album.vue.cjs +1 -1
  282. package/dist/martyrs/src/modules/music/components/pages/Album.vue.js +3 -3
  283. package/dist/martyrs/src/modules/music/components/pages/MusicHome.vue.cjs +1 -1
  284. package/dist/martyrs/src/modules/music/components/pages/MusicHome.vue.js +1 -1
  285. package/dist/martyrs/src/modules/music/components/pages/MusicLibrary.vue.cjs +1 -1
  286. package/dist/martyrs/src/modules/music/components/pages/MusicLibrary.vue.js +1 -1
  287. package/dist/martyrs/src/modules/music/components/pages/Playlist.vue.cjs +1 -2
  288. package/dist/martyrs/src/modules/music/components/pages/Playlist.vue.cjs.map +1 -1
  289. package/dist/martyrs/src/modules/music/components/pages/Playlist.vue.js +3 -4
  290. package/dist/martyrs/src/modules/music/components/pages/Playlist.vue.js.map +1 -1
  291. package/dist/martyrs/src/modules/music/components/pages/Track.vue.cjs +1 -1
  292. package/dist/martyrs/src/modules/music/components/pages/Track.vue.js +3 -3
  293. package/dist/martyrs/src/modules/music/components/pages/TrackCreate.vue.cjs +0 -1
  294. package/dist/martyrs/src/modules/music/components/pages/TrackCreate.vue.cjs.map +1 -1
  295. package/dist/martyrs/src/modules/music/components/pages/TrackCreate.vue.js +0 -1
  296. package/dist/martyrs/src/modules/music/components/pages/TrackCreate.vue.js.map +1 -1
  297. package/dist/martyrs/src/modules/music/router/music.cjs +5 -22
  298. package/dist/martyrs/src/modules/music/router/music.cjs.map +1 -1
  299. package/dist/martyrs/src/modules/music/router/music.js +5 -22
  300. package/dist/martyrs/src/modules/music/router/music.js.map +1 -1
  301. package/dist/martyrs/src/modules/notifications/notifications.client.cjs +2 -2
  302. package/dist/martyrs/src/modules/notifications/notifications.client.js +2 -2
  303. package/dist/martyrs/src/modules/notifications/store/notifications.store.js +1 -1
  304. package/dist/martyrs/src/modules/orders/components/blocks/CardOrderBackoffice.vue.js +2 -2
  305. package/dist/martyrs/src/modules/orders/components/blocks/CardOrderItem.vue.cjs.map +1 -1
  306. package/dist/martyrs/src/modules/orders/components/blocks/CardOrderItem.vue.js.map +1 -1
  307. package/dist/martyrs/src/modules/orders/components/elements/FieldSubscribeNewsletter.vue.cjs +0 -1
  308. package/dist/martyrs/src/modules/orders/components/elements/FieldSubscribeNewsletter.vue.cjs.map +1 -1
  309. package/dist/martyrs/src/modules/orders/components/elements/FieldSubscribeNewsletter.vue.js +0 -1
  310. package/dist/martyrs/src/modules/orders/components/elements/FieldSubscribeNewsletter.vue.js.map +1 -1
  311. package/dist/martyrs/src/modules/orders/components/forms/FormApplicationDetails.vue.cjs +2 -2
  312. package/dist/martyrs/src/modules/orders/components/forms/FormApplicationDetails.vue.js +2 -2
  313. package/dist/martyrs/src/modules/orders/components/forms/FormCustomerDetails.vue.cjs +2 -2
  314. package/dist/martyrs/src/modules/orders/components/forms/FormCustomerDetails.vue.js +2 -2
  315. package/dist/martyrs/src/modules/orders/components/forms/FormSelectCustomer.vue.cjs +1 -1
  316. package/dist/martyrs/src/modules/orders/components/forms/FormSelectCustomer.vue.js +1 -1
  317. package/dist/martyrs/src/modules/orders/components/pages/Applications.vue.cjs +1 -1
  318. package/dist/martyrs/src/modules/orders/components/pages/Applications.vue.js +1 -1
  319. package/dist/martyrs/src/modules/orders/components/pages/Customers.vue.cjs +1 -1
  320. package/dist/martyrs/src/modules/orders/components/pages/Customers.vue.js +1 -1
  321. package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.cjs +1 -2
  322. package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.cjs.map +1 -1
  323. package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.js +3 -4
  324. package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.js.map +1 -1
  325. package/dist/martyrs/src/modules/orders/components/pages/OrderCreateBackoffice.vue.cjs +2 -3
  326. package/dist/martyrs/src/modules/orders/components/pages/OrderCreateBackoffice.vue.cjs.map +1 -1
  327. package/dist/martyrs/src/modules/orders/components/pages/OrderCreateBackoffice.vue.js +2 -3
  328. package/dist/martyrs/src/modules/orders/components/pages/OrderCreateBackoffice.vue.js.map +1 -1
  329. package/dist/martyrs/src/modules/orders/components/pages/Orders.vue.cjs +1 -1
  330. package/dist/martyrs/src/modules/orders/components/pages/Orders.vue.js +1 -1
  331. package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.cjs +3 -4
  332. package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.cjs.map +1 -1
  333. package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.js +3 -4
  334. package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.js.map +1 -1
  335. package/dist/martyrs/src/modules/orders/components/sections/FormPayment.vue.cjs +1 -1
  336. package/dist/martyrs/src/modules/orders/components/sections/FormPayment.vue.js +1 -1
  337. package/dist/martyrs/src/modules/orders/router/orders.router.cjs +20 -9
  338. package/dist/martyrs/src/modules/orders/router/orders.router.cjs.map +1 -1
  339. package/dist/martyrs/src/modules/orders/router/orders.router.js +20 -9
  340. package/dist/martyrs/src/modules/orders/router/orders.router.js.map +1 -1
  341. package/dist/martyrs/src/modules/orders/store/shopcart.js +1 -1
  342. package/dist/martyrs/src/modules/organizations/components/blocks/CardDepartment.vue.cjs +36 -3
  343. package/dist/martyrs/src/modules/organizations/components/blocks/CardDepartment.vue.cjs.map +1 -1
  344. package/dist/martyrs/src/modules/organizations/components/blocks/CardDepartment.vue.js +36 -3
  345. package/dist/martyrs/src/modules/organizations/components/blocks/CardDepartment.vue.js.map +1 -1
  346. package/dist/martyrs/src/modules/organizations/components/blocks/CardOrganization.vue.cjs +1 -1
  347. package/dist/martyrs/src/modules/organizations/components/blocks/CardOrganization.vue.js +3 -3
  348. package/dist/martyrs/src/modules/organizations/components/elements/ButtonToggleMembership.vue.cjs +0 -1
  349. package/dist/martyrs/src/modules/organizations/components/elements/ButtonToggleMembership.vue.cjs.map +1 -1
  350. package/dist/martyrs/src/modules/organizations/components/elements/ButtonToggleMembership.vue.js +0 -1
  351. package/dist/martyrs/src/modules/organizations/components/elements/ButtonToggleMembership.vue.js.map +1 -1
  352. package/dist/martyrs/src/modules/organizations/components/forms/AddExistingMembersForm.vue.cjs +1 -1
  353. package/dist/martyrs/src/modules/organizations/components/forms/AddExistingMembersForm.vue.js +1 -1
  354. package/dist/martyrs/src/modules/organizations/components/forms/DepartmentForm.vue.cjs +2 -2
  355. package/dist/martyrs/src/modules/organizations/components/forms/DepartmentForm.vue.js +2 -2
  356. package/dist/martyrs/src/modules/organizations/components/forms/InviteForm.vue.cjs +1 -1
  357. package/dist/martyrs/src/modules/organizations/components/forms/InviteForm.vue.js +1 -1
  358. package/dist/martyrs/src/modules/organizations/components/pages/Department.vue.cjs +36 -3
  359. package/dist/martyrs/src/modules/organizations/components/pages/Department.vue.cjs.map +1 -1
  360. package/dist/martyrs/src/modules/organizations/components/pages/Department.vue.js +36 -3
  361. package/dist/martyrs/src/modules/organizations/components/pages/Department.vue.js.map +1 -1
  362. package/dist/martyrs/src/modules/organizations/components/pages/Members.vue.cjs +45 -14
  363. package/dist/martyrs/src/modules/organizations/components/pages/Members.vue.cjs.map +1 -1
  364. package/dist/martyrs/src/modules/organizations/components/pages/Members.vue.js +45 -14
  365. package/dist/martyrs/src/modules/organizations/components/pages/Members.vue.js.map +1 -1
  366. package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.cjs +34 -11
  367. package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.cjs.map +1 -1
  368. package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.js +35 -12
  369. package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.js.map +1 -1
  370. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationBackoffice.vue.cjs +1 -2
  371. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationBackoffice.vue.cjs.map +1 -1
  372. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationBackoffice.vue.js +1 -2
  373. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationBackoffice.vue.js.map +1 -1
  374. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.cjs +3 -4
  375. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.cjs.map +1 -1
  376. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.js +3 -4
  377. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.js.map +1 -1
  378. package/dist/martyrs/src/modules/organizations/components/pages/Organizations.vue.cjs +1 -1
  379. package/dist/martyrs/src/modules/organizations/components/pages/Organizations.vue.js +1 -1
  380. package/dist/martyrs/src/modules/organizations/components/sections/Documents.vue.cjs +1 -1
  381. package/dist/martyrs/src/modules/organizations/components/sections/Documents.vue.js +1 -1
  382. package/dist/martyrs/src/modules/organizations/components/sections/MembersAdd.vue.cjs +3 -3
  383. package/dist/martyrs/src/modules/organizations/components/sections/MembersAdd.vue.js +3 -3
  384. package/dist/martyrs/src/modules/organizations/components/sections/Organizations.vue.cjs +2 -3
  385. package/dist/martyrs/src/modules/organizations/components/sections/Organizations.vue.cjs.map +1 -1
  386. package/dist/martyrs/src/modules/organizations/components/sections/Organizations.vue.js +2 -3
  387. package/dist/martyrs/src/modules/organizations/components/sections/Organizations.vue.js.map +1 -1
  388. package/dist/martyrs/src/modules/organizations/organizations.client.cjs +1 -28
  389. package/dist/martyrs/src/modules/organizations/organizations.client.cjs.map +1 -1
  390. package/dist/martyrs/src/modules/organizations/organizations.client.js +43 -70
  391. package/dist/martyrs/src/modules/organizations/organizations.client.js.map +1 -1
  392. package/dist/martyrs/src/modules/organizations/router/organizations.cjs +1 -3
  393. package/dist/martyrs/src/modules/organizations/router/organizations.cjs.map +1 -1
  394. package/dist/martyrs/src/modules/organizations/router/organizations.js +1 -3
  395. package/dist/martyrs/src/modules/organizations/router/organizations.js.map +1 -1
  396. package/dist/martyrs/src/modules/pages/views/components/blocks/CardPage.vue.cjs +1 -1
  397. package/dist/martyrs/src/modules/pages/views/components/blocks/CardPage.vue.js +1 -1
  398. package/dist/martyrs/src/modules/pages/views/components/pages/PageEdit.vue.cjs +1 -1
  399. package/dist/martyrs/src/modules/pages/views/components/pages/PageEdit.vue.js +1 -1
  400. package/dist/martyrs/src/modules/pages/views/router/pages.backoffice.router.cjs +1 -1
  401. package/dist/martyrs/src/modules/pages/views/router/pages.backoffice.router.cjs.map +1 -1
  402. package/dist/martyrs/src/modules/pages/views/router/pages.backoffice.router.js +1 -1
  403. package/dist/martyrs/src/modules/pages/views/router/pages.backoffice.router.js.map +1 -1
  404. package/dist/martyrs/src/modules/pages/views/router/pages.router.cjs +1 -1
  405. package/dist/martyrs/src/modules/pages/views/router/pages.router.cjs.map +1 -1
  406. package/dist/martyrs/src/modules/pages/views/router/pages.router.js +1 -1
  407. package/dist/martyrs/src/modules/pages/views/router/pages.router.js.map +1 -1
  408. package/dist/martyrs/src/modules/products/components/blocks/CardProduct.vue.cjs +1 -1
  409. package/dist/martyrs/src/modules/products/components/blocks/CardProduct.vue.js +1 -1
  410. package/dist/martyrs/src/modules/products/components/blocks/ProductDiscounts.vue.cjs +3 -2
  411. package/dist/martyrs/src/modules/products/components/blocks/ProductDiscounts.vue.cjs.map +1 -1
  412. package/dist/martyrs/src/modules/products/components/blocks/ProductDiscounts.vue.js +3 -2
  413. package/dist/martyrs/src/modules/products/components/blocks/ProductDiscounts.vue.js.map +1 -1
  414. package/dist/martyrs/src/modules/products/components/elements/{THC.vue.cjs → THC.vue2.cjs} +2 -2
  415. package/dist/martyrs/src/modules/products/components/elements/THC.vue2.cjs.map +1 -0
  416. package/dist/martyrs/src/modules/products/components/elements/{THC.vue.js → THC.vue2.js} +2 -2
  417. package/dist/martyrs/src/modules/products/components/elements/THC.vue2.js.map +1 -0
  418. package/dist/martyrs/src/modules/products/components/pages/Categories.vue.cjs +1 -1
  419. package/dist/martyrs/src/modules/products/components/pages/Categories.vue.js +1 -1
  420. package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.cjs +4 -4
  421. package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.js +4 -4
  422. package/dist/martyrs/src/modules/products/components/pages/Product.vue.cjs +0 -2
  423. package/dist/martyrs/src/modules/products/components/pages/Product.vue.cjs.map +1 -1
  424. package/dist/martyrs/src/modules/products/components/pages/Product.vue.js +0 -2
  425. package/dist/martyrs/src/modules/products/components/pages/Product.vue.js.map +1 -1
  426. package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.cjs +2 -2
  427. package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.js +2 -2
  428. package/dist/martyrs/src/modules/products/components/pages/Products.vue.cjs +2 -3
  429. package/dist/martyrs/src/modules/products/components/pages/Products.vue.cjs.map +1 -1
  430. package/dist/martyrs/src/modules/products/components/pages/Products.vue.js +2 -3
  431. package/dist/martyrs/src/modules/products/components/pages/Products.vue.js.map +1 -1
  432. package/dist/martyrs/src/modules/products/components/sections/EditAttributes.vue.cjs +1 -1
  433. package/dist/martyrs/src/modules/products/components/sections/EditAttributes.vue.js +1 -1
  434. package/dist/martyrs/src/modules/products/components/sections/EditDiscounts.vue.cjs +2 -2
  435. package/dist/martyrs/src/modules/products/components/sections/EditDiscounts.vue.js +2 -2
  436. package/dist/martyrs/src/modules/products/components/sections/EditIngredients.vue.cjs +1 -2
  437. package/dist/martyrs/src/modules/products/components/sections/EditIngredients.vue.cjs.map +1 -1
  438. package/dist/martyrs/src/modules/products/components/sections/EditIngredients.vue.js +1 -2
  439. package/dist/martyrs/src/modules/products/components/sections/EditIngredients.vue.js.map +1 -1
  440. package/dist/martyrs/src/modules/products/components/sections/EditRecommended.vue.cjs +1 -2
  441. package/dist/martyrs/src/modules/products/components/sections/EditRecommended.vue.cjs.map +1 -1
  442. package/dist/martyrs/src/modules/products/components/sections/EditRecommended.vue.js +1 -2
  443. package/dist/martyrs/src/modules/products/components/sections/EditRecommended.vue.js.map +1 -1
  444. package/dist/martyrs/src/modules/products/components/sections/EditVariants.vue.cjs +3 -3
  445. package/dist/martyrs/src/modules/products/components/sections/EditVariants.vue.js +3 -3
  446. package/dist/martyrs/src/modules/products/components/sections/HeroRecommendation.vue.cjs +0 -1
  447. package/dist/martyrs/src/modules/products/components/sections/HeroRecommendation.vue.cjs.map +1 -1
  448. package/dist/martyrs/src/modules/products/components/sections/HeroRecommendation.vue.js +0 -1
  449. package/dist/martyrs/src/modules/products/components/sections/HeroRecommendation.vue.js.map +1 -1
  450. package/dist/martyrs/src/modules/products/components/sections/SectionProduct.vue.cjs +1 -1
  451. package/dist/martyrs/src/modules/products/components/sections/SectionProduct.vue.js +1 -1
  452. package/dist/martyrs/src/modules/products/router/products.router.cjs +15 -6
  453. package/dist/martyrs/src/modules/products/router/products.router.cjs.map +1 -1
  454. package/dist/martyrs/src/modules/products/router/products.router.js +15 -6
  455. package/dist/martyrs/src/modules/products/router/products.router.js.map +1 -1
  456. package/dist/martyrs/src/modules/rents/views/components/pages/Rents.vue.cjs +1 -1
  457. package/dist/martyrs/src/modules/rents/views/components/pages/Rents.vue.js +1 -1
  458. package/dist/martyrs/src/modules/rents/views/components/pages/RentsEdit.vue.cjs +2 -3
  459. package/dist/martyrs/src/modules/rents/views/components/pages/RentsEdit.vue.cjs.map +1 -1
  460. package/dist/martyrs/src/modules/rents/views/components/pages/RentsEdit.vue.js +2 -3
  461. package/dist/martyrs/src/modules/rents/views/components/pages/RentsEdit.vue.js.map +1 -1
  462. package/dist/martyrs/src/modules/reports/components/sections/FormReport.vue.cjs +1 -1
  463. package/dist/martyrs/src/modules/reports/components/sections/FormReport.vue.js +1 -1
  464. package/dist/martyrs/src/modules/spots/components/blocks/CardSpot.vue.cjs +1 -1
  465. package/dist/martyrs/src/modules/spots/components/blocks/CardSpot.vue.js +1 -1
  466. package/dist/martyrs/src/modules/spots/components/blocks/SpotMemberModify.vue.cjs +2 -2
  467. package/dist/martyrs/src/modules/spots/components/blocks/SpotMemberModify.vue.js +2 -2
  468. package/dist/martyrs/src/modules/spots/components/layouts/Spots.vue.cjs +1 -1
  469. package/dist/martyrs/src/modules/spots/components/layouts/Spots.vue.js +1 -1
  470. package/dist/martyrs/src/modules/spots/components/pages/Map.vue.cjs +1 -1
  471. package/dist/martyrs/src/modules/spots/components/pages/Map.vue.js +1 -1
  472. package/dist/martyrs/src/modules/spots/components/pages/SpotEdit.vue.cjs +2 -2
  473. package/dist/martyrs/src/modules/spots/components/pages/SpotEdit.vue.js +2 -2
  474. package/dist/martyrs/src/modules/spots/components/pages/Spots.vue.cjs +1 -1
  475. package/dist/martyrs/src/modules/spots/components/pages/Spots.vue.js +1 -1
  476. package/dist/martyrs/src/modules/spots/components/sections/WorktimeEdit.vue.cjs +2 -2
  477. package/dist/martyrs/src/modules/spots/components/sections/WorktimeEdit.vue.js +2 -2
  478. package/dist/martyrs/src/modules/wallet/views/components/blocks/CardDeposit.vue.cjs +1 -1
  479. package/dist/martyrs/src/modules/wallet/views/components/blocks/CardDeposit.vue.js +1 -1
  480. package/dist/martyrs/src/modules/wallet/views/components/blocks/CryptoDeposit.vue.cjs +2 -2
  481. package/dist/martyrs/src/modules/wallet/views/components/blocks/CryptoDeposit.vue.js +2 -2
  482. package/dist/martyrs/src/modules/wallet/views/components/pages/Payments.vue.cjs +1 -1
  483. package/dist/martyrs/src/modules/wallet/views/components/pages/Payments.vue.js +1 -1
  484. package/dist/martyrs/src/modules/wallet/views/components/pages/Wallet.vue.cjs +2 -6
  485. package/dist/martyrs/src/modules/wallet/views/components/pages/Wallet.vue.cjs.map +1 -1
  486. package/dist/martyrs/src/modules/wallet/views/components/pages/Wallet.vue.js +2 -6
  487. package/dist/martyrs/src/modules/wallet/views/components/pages/Wallet.vue.js.map +1 -1
  488. package/dist/martyrs.cjs.js +1 -1
  489. package/dist/martyrs.css +1 -1
  490. package/dist/martyrs.es.js +1 -1
  491. package/dist/node_modules/.pnpm/{@capacitor-mlkit_barcode-scanning@7.2.1_@capacitor_core@7.2.0 → @capacitor-mlkit_barcode-scanning@7.3.0_@capacitor_core@7.4.3}/node_modules/@capacitor-mlkit/barcode-scanning/dist/esm/definitions.cjs.map +1 -1
  492. package/dist/node_modules/.pnpm/{@capacitor-mlkit_barcode-scanning@7.2.1_@capacitor_core@7.2.0 → @capacitor-mlkit_barcode-scanning@7.3.0_@capacitor_core@7.4.3}/node_modules/@capacitor-mlkit/barcode-scanning/dist/esm/definitions.js.map +1 -1
  493. package/dist/node_modules/.pnpm/{@capacitor-mlkit_barcode-scanning@7.2.1_@capacitor_core@7.2.0 → @capacitor-mlkit_barcode-scanning@7.3.0_@capacitor_core@7.4.3}/node_modules/@capacitor-mlkit/barcode-scanning/dist/esm/index.cjs +1 -1
  494. package/dist/node_modules/.pnpm/{@capacitor-mlkit_barcode-scanning@7.2.1_@capacitor_core@7.2.0 → @capacitor-mlkit_barcode-scanning@7.3.0_@capacitor_core@7.4.3}/node_modules/@capacitor-mlkit/barcode-scanning/dist/esm/index.cjs.map +1 -1
  495. package/dist/node_modules/.pnpm/{@capacitor-mlkit_barcode-scanning@7.2.1_@capacitor_core@7.2.0 → @capacitor-mlkit_barcode-scanning@7.3.0_@capacitor_core@7.4.3}/node_modules/@capacitor-mlkit/barcode-scanning/dist/esm/index.js +1 -1
  496. package/dist/node_modules/.pnpm/{@capacitor-mlkit_barcode-scanning@7.2.1_@capacitor_core@7.2.0 → @capacitor-mlkit_barcode-scanning@7.3.0_@capacitor_core@7.4.3}/node_modules/@capacitor-mlkit/barcode-scanning/dist/esm/index.js.map +1 -1
  497. package/dist/node_modules/.pnpm/{@capacitor-mlkit_barcode-scanning@7.2.1_@capacitor_core@7.2.0 → @capacitor-mlkit_barcode-scanning@7.3.0_@capacitor_core@7.4.3}/node_modules/@capacitor-mlkit/barcode-scanning/dist/esm/web.cjs +1 -1
  498. package/dist/node_modules/.pnpm/{@capacitor-mlkit_barcode-scanning@7.2.1_@capacitor_core@7.2.0 → @capacitor-mlkit_barcode-scanning@7.3.0_@capacitor_core@7.4.3}/node_modules/@capacitor-mlkit/barcode-scanning/dist/esm/web.cjs.map +1 -1
  499. package/dist/node_modules/.pnpm/{@capacitor-mlkit_barcode-scanning@7.2.1_@capacitor_core@7.2.0 → @capacitor-mlkit_barcode-scanning@7.3.0_@capacitor_core@7.4.3}/node_modules/@capacitor-mlkit/barcode-scanning/dist/esm/web.js +1 -1
  500. package/dist/node_modules/.pnpm/{@capacitor-mlkit_barcode-scanning@7.2.1_@capacitor_core@7.2.0 → @capacitor-mlkit_barcode-scanning@7.3.0_@capacitor_core@7.4.3}/node_modules/@capacitor-mlkit/barcode-scanning/dist/esm/web.js.map +1 -1
  501. package/dist/node_modules/.pnpm/{@capacitor_core@7.2.0 → @capacitor_core@7.4.3}/node_modules/@capacitor/core/dist/index.cjs +2 -1
  502. package/dist/node_modules/.pnpm/@capacitor_core@7.4.3/node_modules/@capacitor/core/dist/index.cjs.map +1 -0
  503. package/dist/node_modules/.pnpm/{@capacitor_core@7.2.0 → @capacitor_core@7.4.3}/node_modules/@capacitor/core/dist/index.js +2 -1
  504. package/dist/node_modules/.pnpm/@capacitor_core@7.4.3/node_modules/@capacitor/core/dist/index.js.map +1 -0
  505. package/dist/node_modules/.pnpm/{@capacitor_device@7.0.1_@capacitor_core@7.2.0 → @capacitor_device@7.0.2_@capacitor_core@7.4.3}/node_modules/@capacitor/device/dist/esm/index.cjs +1 -1
  506. package/dist/node_modules/.pnpm/{@capacitor_device@7.0.1_@capacitor_core@7.2.0 → @capacitor_device@7.0.2_@capacitor_core@7.4.3}/node_modules/@capacitor/device/dist/esm/index.cjs.map +1 -1
  507. package/dist/node_modules/.pnpm/{@capacitor_device@7.0.1_@capacitor_core@7.2.0 → @capacitor_device@7.0.2_@capacitor_core@7.4.3}/node_modules/@capacitor/device/dist/esm/index.js +1 -1
  508. package/dist/node_modules/.pnpm/{@capacitor_device@7.0.1_@capacitor_core@7.2.0 → @capacitor_device@7.0.2_@capacitor_core@7.4.3}/node_modules/@capacitor/device/dist/esm/index.js.map +1 -1
  509. package/dist/node_modules/.pnpm/{@capacitor_device@7.0.1_@capacitor_core@7.2.0 → @capacitor_device@7.0.2_@capacitor_core@7.4.3}/node_modules/@capacitor/device/dist/esm/web.cjs +1 -1
  510. package/dist/node_modules/.pnpm/{@capacitor_device@7.0.1_@capacitor_core@7.2.0 → @capacitor_device@7.0.2_@capacitor_core@7.4.3}/node_modules/@capacitor/device/dist/esm/web.cjs.map +1 -1
  511. package/dist/node_modules/.pnpm/{@capacitor_device@7.0.1_@capacitor_core@7.2.0 → @capacitor_device@7.0.2_@capacitor_core@7.4.3}/node_modules/@capacitor/device/dist/esm/web.js +1 -1
  512. package/dist/node_modules/.pnpm/{@capacitor_device@7.0.1_@capacitor_core@7.2.0 → @capacitor_device@7.0.2_@capacitor_core@7.4.3}/node_modules/@capacitor/device/dist/esm/web.js.map +1 -1
  513. package/dist/node_modules/.pnpm/{@capacitor_keyboard@7.0.1_@capacitor_core@7.2.0 → @capacitor_keyboard@7.0.2_@capacitor_core@7.4.3}/node_modules/@capacitor/keyboard/dist/esm/definitions.cjs.map +1 -1
  514. package/dist/node_modules/.pnpm/{@capacitor_keyboard@7.0.1_@capacitor_core@7.2.0 → @capacitor_keyboard@7.0.2_@capacitor_core@7.4.3}/node_modules/@capacitor/keyboard/dist/esm/definitions.js.map +1 -1
  515. package/dist/node_modules/.pnpm/{@capacitor_keyboard@7.0.1_@capacitor_core@7.2.0 → @capacitor_keyboard@7.0.2_@capacitor_core@7.4.3}/node_modules/@capacitor/keyboard/dist/esm/index.cjs +1 -1
  516. package/dist/node_modules/.pnpm/{@capacitor_keyboard@7.0.1_@capacitor_core@7.2.0 → @capacitor_keyboard@7.0.2_@capacitor_core@7.4.3}/node_modules/@capacitor/keyboard/dist/esm/index.cjs.map +1 -1
  517. package/dist/node_modules/.pnpm/{@capacitor_keyboard@7.0.1_@capacitor_core@7.2.0 → @capacitor_keyboard@7.0.2_@capacitor_core@7.4.3}/node_modules/@capacitor/keyboard/dist/esm/index.js +1 -1
  518. package/dist/node_modules/.pnpm/{@capacitor_keyboard@7.0.1_@capacitor_core@7.2.0 → @capacitor_keyboard@7.0.2_@capacitor_core@7.4.3}/node_modules/@capacitor/keyboard/dist/esm/index.js.map +1 -1
  519. package/dist/node_modules/.pnpm/{@capacitor_push-notifications@7.0.1_@capacitor_core@7.2.0 → @capacitor_push-notifications@7.0.2_@capacitor_core@7.4.3}/node_modules/@capacitor/push-notifications/dist/esm/index.cjs +1 -1
  520. package/dist/node_modules/.pnpm/{@capacitor_push-notifications@7.0.1_@capacitor_core@7.2.0 → @capacitor_push-notifications@7.0.2_@capacitor_core@7.4.3}/node_modules/@capacitor/push-notifications/dist/esm/index.cjs.map +1 -1
  521. package/dist/node_modules/.pnpm/{@capacitor_push-notifications@7.0.1_@capacitor_core@7.2.0 → @capacitor_push-notifications@7.0.2_@capacitor_core@7.4.3}/node_modules/@capacitor/push-notifications/dist/esm/index.js +1 -1
  522. package/dist/node_modules/.pnpm/{@capacitor_push-notifications@7.0.1_@capacitor_core@7.2.0 → @capacitor_push-notifications@7.0.2_@capacitor_core@7.4.3}/node_modules/@capacitor/push-notifications/dist/esm/index.js.map +1 -1
  523. package/dist/node_modules/.pnpm/{@googlemaps_js-api-loader@1.16.8 → @googlemaps_js-api-loader@1.16.10}/node_modules/@googlemaps/js-api-loader/dist/index.cjs +34 -26
  524. package/dist/node_modules/.pnpm/@googlemaps_js-api-loader@1.16.10/node_modules/@googlemaps/js-api-loader/dist/index.cjs.map +1 -0
  525. package/dist/node_modules/.pnpm/{@googlemaps_js-api-loader@1.16.8 → @googlemaps_js-api-loader@1.16.10}/node_modules/@googlemaps/js-api-loader/dist/index.js +34 -26
  526. package/dist/node_modules/.pnpm/@googlemaps_js-api-loader@1.16.10/node_modules/@googlemaps/js-api-loader/dist/index.js.map +1 -0
  527. package/dist/node_modules/.pnpm/{@unhead_vue@1.11.20_vue@3.5.13_typescript@5.8.3_ → @unhead_vue@1.11.20_vue@3.5.21_typescript@5.9.2_}/node_modules/@unhead/vue/dist/shared/vue.-sixQ7xP.cjs.map +1 -1
  528. package/dist/node_modules/.pnpm/{@unhead_vue@1.11.20_vue@3.5.13_typescript@5.8.3_ → @unhead_vue@1.11.20_vue@3.5.21_typescript@5.9.2_}/node_modules/@unhead/vue/dist/shared/vue.-sixQ7xP.js.map +1 -1
  529. package/dist/node_modules/.pnpm/{@unhead_vue@1.11.20_vue@3.5.13_typescript@5.8.3_ → @unhead_vue@1.11.20_vue@3.5.21_typescript@5.9.2_}/node_modules/@unhead/vue/dist/shared/vue.ziyDaVMR.cjs.map +1 -1
  530. package/dist/node_modules/.pnpm/{@unhead_vue@1.11.20_vue@3.5.13_typescript@5.8.3_ → @unhead_vue@1.11.20_vue@3.5.21_typescript@5.9.2_}/node_modules/@unhead/vue/dist/shared/vue.ziyDaVMR.js.map +1 -1
  531. package/dist/node_modules/.pnpm/{@vue_server-renderer@3.5.13_vue@3.5.13_typescript@5.8.3_ → @vue_server-renderer@3.5.21_vue@3.5.21_typescript@5.9.2_}/node_modules/@vue/server-renderer/dist/server-renderer.esm-bundler.cjs +18 -13
  532. package/dist/node_modules/.pnpm/@vue_server-renderer@3.5.21_vue@3.5.21_typescript@5.9.2_/node_modules/@vue/server-renderer/dist/server-renderer.esm-bundler.cjs.map +1 -0
  533. package/dist/node_modules/.pnpm/{@vue_server-renderer@3.5.13_vue@3.5.13_typescript@5.8.3_ → @vue_server-renderer@3.5.21_vue@3.5.21_typescript@5.9.2_}/node_modules/@vue/server-renderer/dist/server-renderer.esm-bundler.js +19 -14
  534. package/dist/node_modules/.pnpm/@vue_server-renderer@3.5.21_vue@3.5.21_typescript@5.9.2_/node_modules/@vue/server-renderer/dist/server-renderer.esm-bundler.js.map +1 -0
  535. package/dist/node_modules/.pnpm/{@vue_shared@3.5.13 → @vue_shared@3.5.21}/node_modules/@vue/shared/dist/shared.esm-bundler.cjs +19 -2
  536. package/dist/node_modules/.pnpm/@vue_shared@3.5.21/node_modules/@vue/shared/dist/shared.esm-bundler.cjs.map +1 -0
  537. package/dist/node_modules/.pnpm/{@vue_shared@3.5.13 → @vue_shared@3.5.21}/node_modules/@vue/shared/dist/shared.esm-bundler.js +19 -2
  538. package/dist/node_modules/.pnpm/@vue_shared@3.5.21/node_modules/@vue/shared/dist/shared.esm-bundler.js.map +1 -0
  539. package/dist/node_modules/.pnpm/{@vuepic_vue-datepicker@11.0.2_vue@3.5.13_typescript@5.8.3_ → @vuepic_vue-datepicker@11.0.2_vue@3.5.21_typescript@5.9.2_}/node_modules/@vuepic/vue-datepicker/dist/vue-datepicker.cjs.map +1 -1
  540. package/dist/node_modules/.pnpm/{@vuepic_vue-datepicker@11.0.2_vue@3.5.13_typescript@5.8.3_ → @vuepic_vue-datepicker@11.0.2_vue@3.5.21_typescript@5.9.2_}/node_modules/@vuepic/vue-datepicker/dist/vue-datepicker.js +1 -1
  541. package/dist/node_modules/.pnpm/{@vuepic_vue-datepicker@11.0.2_vue@3.5.13_typescript@5.8.3_ → @vuepic_vue-datepicker@11.0.2_vue@3.5.21_typescript@5.9.2_}/node_modules/@vuepic/vue-datepicker/dist/vue-datepicker.js.map +1 -1
  542. package/dist/node_modules/.pnpm/{capacitor-plugin-app-tracking-transparency@2.0.5_@capacitor_core@7.2.0 → capacitor-plugin-app-tracking-transparency@2.0.5_@capacitor_core@7.4.3}/node_modules/capacitor-plugin-app-tracking-transparency/dist/esm/index.cjs +1 -1
  543. package/dist/node_modules/.pnpm/{capacitor-plugin-app-tracking-transparency@2.0.5_@capacitor_core@7.2.0 → capacitor-plugin-app-tracking-transparency@2.0.5_@capacitor_core@7.4.3}/node_modules/capacitor-plugin-app-tracking-transparency/dist/esm/index.cjs.map +1 -1
  544. package/dist/node_modules/.pnpm/{capacitor-plugin-app-tracking-transparency@2.0.5_@capacitor_core@7.2.0 → capacitor-plugin-app-tracking-transparency@2.0.5_@capacitor_core@7.4.3}/node_modules/capacitor-plugin-app-tracking-transparency/dist/esm/index.js +1 -1
  545. package/dist/node_modules/.pnpm/{capacitor-plugin-app-tracking-transparency@2.0.5_@capacitor_core@7.2.0 → capacitor-plugin-app-tracking-transparency@2.0.5_@capacitor_core@7.4.3}/node_modules/capacitor-plugin-app-tracking-transparency/dist/esm/index.js.map +1 -1
  546. package/dist/node_modules/.pnpm/{capacitor-plugin-app-tracking-transparency@2.0.5_@capacitor_core@7.2.0 → capacitor-plugin-app-tracking-transparency@2.0.5_@capacitor_core@7.4.3}/node_modules/capacitor-plugin-app-tracking-transparency/dist/esm/web.cjs +1 -1
  547. package/dist/node_modules/.pnpm/{capacitor-plugin-app-tracking-transparency@2.0.5_@capacitor_core@7.2.0 → capacitor-plugin-app-tracking-transparency@2.0.5_@capacitor_core@7.4.3}/node_modules/capacitor-plugin-app-tracking-transparency/dist/esm/web.cjs.map +1 -1
  548. package/dist/node_modules/.pnpm/{capacitor-plugin-app-tracking-transparency@2.0.5_@capacitor_core@7.2.0 → capacitor-plugin-app-tracking-transparency@2.0.5_@capacitor_core@7.4.3}/node_modules/capacitor-plugin-app-tracking-transparency/dist/esm/web.js +1 -1
  549. package/dist/node_modules/.pnpm/{capacitor-plugin-app-tracking-transparency@2.0.5_@capacitor_core@7.2.0 → capacitor-plugin-app-tracking-transparency@2.0.5_@capacitor_core@7.4.3}/node_modules/capacitor-plugin-app-tracking-transparency/dist/esm/web.js.map +1 -1
  550. package/dist/node_modules/.pnpm/{dayjs@1.11.13 → dayjs@1.11.18}/node_modules/dayjs/dayjs.min.cjs.map +1 -1
  551. package/dist/node_modules/.pnpm/{dayjs@1.11.13 → dayjs@1.11.18}/node_modules/dayjs/dayjs.min.js.map +1 -1
  552. package/dist/node_modules/.pnpm/{dayjs@1.11.13 → dayjs@1.11.18}/node_modules/dayjs/plugin/weekOfYear.cjs.map +1 -1
  553. package/dist/node_modules/.pnpm/{dayjs@1.11.13 → dayjs@1.11.18}/node_modules/dayjs/plugin/weekOfYear.js.map +1 -1
  554. package/dist/node_modules/.pnpm/{embla-carousel-vue@8.6.0_vue@3.5.13_typescript@5.8.3_ → embla-carousel-vue@8.6.0_vue@3.5.21_typescript@5.9.2_}/node_modules/embla-carousel-vue/esm/embla-carousel-vue.esm.cjs.map +1 -1
  555. package/dist/node_modules/.pnpm/{embla-carousel-vue@8.6.0_vue@3.5.13_typescript@5.8.3_ → embla-carousel-vue@8.6.0_vue@3.5.21_typescript@5.9.2_}/node_modules/embla-carousel-vue/esm/embla-carousel-vue.esm.js.map +1 -1
  556. package/dist/node_modules/.pnpm/fast-deep-equal@3.1.3/node_modules/fast-deep-equal/index.cjs.map +1 -0
  557. package/dist/node_modules/.pnpm/fast-deep-equal@3.1.3/node_modules/fast-deep-equal/index.js.map +1 -0
  558. package/dist/node_modules/{lodash.merge → .pnpm/lodash.merge@4.6.2/node_modules/lodash.merge}/index.cjs +2 -2
  559. package/dist/node_modules/.pnpm/lodash.merge@4.6.2/node_modules/lodash.merge/index.cjs.map +1 -0
  560. package/dist/node_modules/{lodash.merge → .pnpm/lodash.merge@4.6.2/node_modules/lodash.merge}/index.js +2 -2
  561. package/dist/node_modules/.pnpm/lodash.merge@4.6.2/node_modules/lodash.merge/index.js.map +1 -0
  562. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/utils.cjs +1 -1
  563. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/utils.js +1 -1
  564. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/renderer/utils.cjs +1 -1
  565. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/renderer/utils.js +1 -1
  566. package/dist/node_modules/.pnpm/{vue-draggable-next@2.2.1_sortablejs@1.15.6_vue@3.5.13_typescript@5.8.3_ → vue-draggable-next@2.3.0_sortablejs@1.15.6_vue@3.5.21_typescript@5.9.2_}/node_modules/vue-draggable-next/dist/vue-draggable-next.esm-bundler.cjs +304 -267
  567. package/dist/node_modules/.pnpm/vue-draggable-next@2.3.0_sortablejs@1.15.6_vue@3.5.21_typescript@5.9.2_/node_modules/vue-draggable-next/dist/vue-draggable-next.esm-bundler.cjs.map +1 -0
  568. package/dist/node_modules/.pnpm/{vue-draggable-next@2.2.1_sortablejs@1.15.6_vue@3.5.13_typescript@5.8.3_ → vue-draggable-next@2.3.0_sortablejs@1.15.6_vue@3.5.21_typescript@5.9.2_}/node_modules/vue-draggable-next/dist/vue-draggable-next.esm-bundler.js +305 -268
  569. package/dist/node_modules/.pnpm/vue-draggable-next@2.3.0_sortablejs@1.15.6_vue@3.5.21_typescript@5.9.2_/node_modules/vue-draggable-next/dist/vue-draggable-next.esm-bundler.js.map +1 -0
  570. package/dist/rents.server.js +1 -1
  571. package/dist/style.css +110 -111
  572. package/dist/{web-BS-4Xl3x.js → web-cWW0_Tbe.js} +1 -1
  573. package/dist/{web-CjndIDjT.cjs → web-xomD1Wpp.cjs} +1 -1
  574. package/package.json +6 -1
  575. package/src/builder/builder.js +6 -13
  576. package/src/builder/modes/spa.prod.js +19 -14
  577. package/src/builder/modes/spa.rspack.dev.js +14 -23
  578. package/src/builder/modes/ssr.prod.js +33 -21
  579. package/src/builder/modes/ssr.rspack.dev.js +76 -34
  580. package/src/builder/rspack/rspack.config.base.js +12 -7
  581. package/src/builder/rspack/rspack.config.spa.client.js +1 -1
  582. package/src/builder/rspack/rspack.config.ssr.client.js +74 -10
  583. package/src/builder/rspack/rspack.config.ssr.server.js +2 -5
  584. package/src/builder/ssr/asset-resolver.js +148 -0
  585. package/src/builder/ssr/beasties-processor.js +107 -0
  586. package/src/builder/templates/page.js +20 -36
  587. package/src/modules/STYLES.MD +118 -0
  588. package/src/modules/auth/auth.client.js +25 -33
  589. package/src/modules/auth/views/store/auth.js +2 -0
  590. package/src/modules/community/router/blogposts.js +2 -2
  591. package/src/modules/events/router/events.js +7 -7
  592. package/src/modules/gallery/router/gallery.router.js +1 -1
  593. package/src/modules/globals/controllers/classes/abac/v2/abac-fields-fixed.js +9 -6
  594. package/src/modules/globals/globals.client.js +22 -53
  595. package/src/modules/globals/views/classes/module-registry.js +241 -0
  596. package/src/modules/globals/views/classes/store.js +30 -7
  597. package/src/modules/globals/views/components/layouts/Client.vue +6 -6
  598. package/src/modules/globals/views/components/sections/Walkthrough.vue +51 -48
  599. package/src/modules/globals/views/plugins/alert.plugin.js +6 -3
  600. package/src/modules/globals/views/plugins/date-picker.plugin.js +6 -2
  601. package/src/modules/globals/views/plugins/popup.auth.plugin.js +6 -2
  602. package/src/modules/globals/views/plugins/store-debugger/StoreDebugger.vue +5 -2
  603. package/src/modules/globals/views/plugins/store-debugger/store-debugger.plugin.js +6 -2
  604. package/src/modules/globals/views/store/globals.js +17 -10
  605. package/src/modules/globals/views/utils/polyfills.js +28 -0
  606. package/src/modules/globals/views/utils/vue-app-renderer.js +32 -14
  607. package/src/modules/icons/components/IconSearchPopup.vue +4 -4
  608. package/src/modules/icons/icons.client.js +1 -1
  609. package/src/modules/inventory/inventory.client.js +1 -1
  610. package/src/modules/inventory/router/inventory.router.js +2 -2
  611. package/src/modules/landing/components/sections/SectionEarn.vue +2 -2
  612. package/src/modules/landing/components/sections/SectionMobileApp.vue +18 -4
  613. package/src/modules/marketplace/marketplace.client.js +3 -3
  614. package/src/modules/music/router/music.js +3 -2
  615. package/src/modules/orders/components/blocks/CardOrderItem.vue +0 -1
  616. package/src/modules/orders/router/orders.router.js +6 -9
  617. package/src/modules/organizations/components/blocks/CardDepartment.vue +1 -1
  618. package/src/modules/organizations/components/pages/Department.vue +1 -2
  619. package/src/modules/organizations/components/pages/DepartmentEdit.vue +30 -28
  620. package/src/modules/organizations/components/pages/Members.vue +10 -8
  621. package/src/modules/organizations/components/pages/Organization.vue +7 -5
  622. package/src/modules/organizations/organizations.client.js +25 -73
  623. package/src/modules/organizations/policies/organizations.policies.js +1 -1
  624. package/src/modules/pages/views/router/pages.backoffice.router.js +1 -1
  625. package/src/modules/pages/views/router/pages.router.js +1 -1
  626. package/src/modules/products/components/sections/HeroRecommendation.vue +2 -3
  627. package/src/modules/products/router/products.router.js +6 -6
  628. package/src/styles/base/all.scss +154 -267
  629. package/src/styles/base/backgrounds.scss +1 -0
  630. package/src/styles/config.scss +163 -55
  631. package/src/styles/layout.scss +2 -0
  632. package/src/styles/theme.scss +3 -2
  633. package/src/styles/typography.scss +12 -12
  634. package/dist/main-4KvvKtzH.cjs +0 -11
  635. package/dist/martyrs/src/components/Chips/Chips.vue.cjs.map +0 -1
  636. package/dist/martyrs/src/components/Chips/Chips.vue.js.map +0 -1
  637. package/dist/martyrs/src/components/Feed/Feed.vue.js.map +0 -1
  638. package/dist/martyrs/src/components/Field/Field.vue.js.map +0 -1
  639. package/dist/martyrs/src/components/FieldTags/BlockTags.vue.js.map +0 -1
  640. package/dist/martyrs/src/components/Menu/Menu.vue2.cjs.map +0 -1
  641. package/dist/martyrs/src/components/Menu/Menu.vue2.js.map +0 -1
  642. package/dist/martyrs/src/components/Select/Select.vue2.cjs.map +0 -1
  643. package/dist/martyrs/src/modules/globals/views/plugins/store-debugger/StoreDebugger.vue.cjs +0 -2
  644. package/dist/martyrs/src/modules/globals/views/plugins/store-debugger/StoreDebugger.vue.cjs.map +0 -1
  645. package/dist/martyrs/src/modules/globals/views/plugins/store-debugger/StoreDebugger.vue.js +0 -2
  646. package/dist/martyrs/src/modules/globals/views/plugins/store-debugger/StoreDebugger.vue.js.map +0 -1
  647. package/dist/martyrs/src/modules/products/components/elements/THC.vue.cjs.map +0 -1
  648. package/dist/martyrs/src/modules/products/components/elements/THC.vue.js.map +0 -1
  649. package/dist/node_modules/.pnpm/@capacitor_core@7.2.0/node_modules/@capacitor/core/dist/index.cjs.map +0 -1
  650. package/dist/node_modules/.pnpm/@capacitor_core@7.2.0/node_modules/@capacitor/core/dist/index.js.map +0 -1
  651. package/dist/node_modules/.pnpm/@googlemaps_js-api-loader@1.16.8/node_modules/@googlemaps/js-api-loader/dist/index.cjs.map +0 -1
  652. package/dist/node_modules/.pnpm/@googlemaps_js-api-loader@1.16.8/node_modules/@googlemaps/js-api-loader/dist/index.js.map +0 -1
  653. package/dist/node_modules/.pnpm/@vue_server-renderer@3.5.13_vue@3.5.13_typescript@5.8.3_/node_modules/@vue/server-renderer/dist/server-renderer.esm-bundler.cjs.map +0 -1
  654. package/dist/node_modules/.pnpm/@vue_server-renderer@3.5.13_vue@3.5.13_typescript@5.8.3_/node_modules/@vue/server-renderer/dist/server-renderer.esm-bundler.js.map +0 -1
  655. package/dist/node_modules/.pnpm/@vue_shared@3.5.13/node_modules/@vue/shared/dist/shared.esm-bundler.cjs.map +0 -1
  656. package/dist/node_modules/.pnpm/@vue_shared@3.5.13/node_modules/@vue/shared/dist/shared.esm-bundler.js.map +0 -1
  657. 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.cjs.map +0 -1
  658. 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
  659. package/dist/node_modules/fast-deep-equal/index.cjs.map +0 -1
  660. package/dist/node_modules/fast-deep-equal/index.js.map +0 -1
  661. package/dist/node_modules/lodash.merge/index.cjs.map +0 -1
  662. package/dist/node_modules/lodash.merge/index.js.map +0 -1
  663. package/src/builder/modes/spa.dev.js +0 -106
  664. package/src/builder/modes/ssr.dev.js +0 -184
  665. package/src/builder/ssr/ssr-transform-webpack-stats.js +0 -66
  666. package/src/builder/ssr/utils.js +0 -47
  667. package/src/builder/webpack/index.js +0 -13
  668. package/src/builder/webpack/webpack.config.api.js +0 -35
  669. package/src/builder/webpack/webpack.config.base.js +0 -142
  670. package/src/builder/webpack/webpack.config.spa.client.js +0 -68
  671. package/src/builder/webpack/webpack.config.ssr.client.js +0 -93
  672. package/src/builder/webpack/webpack.config.ssr.server.js +0 -59
  673. package/src/modules/core/classes/module-manager.js +0 -88
  674. /package/dist/node_modules/.pnpm/{@capacitor-mlkit_barcode-scanning@7.2.1_@capacitor_core@7.2.0 → @capacitor-mlkit_barcode-scanning@7.3.0_@capacitor_core@7.4.3}/node_modules/@capacitor-mlkit/barcode-scanning/dist/esm/definitions.cjs +0 -0
  675. /package/dist/node_modules/.pnpm/{@capacitor-mlkit_barcode-scanning@7.2.1_@capacitor_core@7.2.0 → @capacitor-mlkit_barcode-scanning@7.3.0_@capacitor_core@7.4.3}/node_modules/@capacitor-mlkit/barcode-scanning/dist/esm/definitions.js +0 -0
  676. /package/dist/node_modules/.pnpm/{@capacitor_keyboard@7.0.1_@capacitor_core@7.2.0 → @capacitor_keyboard@7.0.2_@capacitor_core@7.4.3}/node_modules/@capacitor/keyboard/dist/esm/definitions.cjs +0 -0
  677. /package/dist/node_modules/.pnpm/{@capacitor_keyboard@7.0.1_@capacitor_core@7.2.0 → @capacitor_keyboard@7.0.2_@capacitor_core@7.4.3}/node_modules/@capacitor/keyboard/dist/esm/definitions.js +0 -0
  678. /package/dist/node_modules/.pnpm/{@unhead_vue@1.11.20_vue@3.5.13_typescript@5.8.3_ → @unhead_vue@1.11.20_vue@3.5.21_typescript@5.9.2_}/node_modules/@unhead/vue/dist/shared/vue.-sixQ7xP.cjs +0 -0
  679. /package/dist/node_modules/.pnpm/{@unhead_vue@1.11.20_vue@3.5.13_typescript@5.8.3_ → @unhead_vue@1.11.20_vue@3.5.21_typescript@5.9.2_}/node_modules/@unhead/vue/dist/shared/vue.-sixQ7xP.js +0 -0
  680. /package/dist/node_modules/.pnpm/{@unhead_vue@1.11.20_vue@3.5.13_typescript@5.8.3_ → @unhead_vue@1.11.20_vue@3.5.21_typescript@5.9.2_}/node_modules/@unhead/vue/dist/shared/vue.ziyDaVMR.cjs +0 -0
  681. /package/dist/node_modules/.pnpm/{@unhead_vue@1.11.20_vue@3.5.13_typescript@5.8.3_ → @unhead_vue@1.11.20_vue@3.5.21_typescript@5.9.2_}/node_modules/@unhead/vue/dist/shared/vue.ziyDaVMR.js +0 -0
  682. /package/dist/node_modules/.pnpm/{@vuepic_vue-datepicker@11.0.2_vue@3.5.13_typescript@5.8.3_ → @vuepic_vue-datepicker@11.0.2_vue@3.5.21_typescript@5.9.2_}/node_modules/@vuepic/vue-datepicker/dist/vue-datepicker.cjs +0 -0
  683. /package/dist/node_modules/.pnpm/{dayjs@1.11.13 → dayjs@1.11.18}/node_modules/dayjs/dayjs.min.cjs +0 -0
  684. /package/dist/node_modules/.pnpm/{dayjs@1.11.13 → dayjs@1.11.18}/node_modules/dayjs/dayjs.min.js +0 -0
  685. /package/dist/node_modules/.pnpm/{dayjs@1.11.13 → dayjs@1.11.18}/node_modules/dayjs/plugin/weekOfYear.cjs +0 -0
  686. /package/dist/node_modules/.pnpm/{dayjs@1.11.13 → dayjs@1.11.18}/node_modules/dayjs/plugin/weekOfYear.js +0 -0
  687. /package/dist/node_modules/.pnpm/{embla-carousel-vue@8.6.0_vue@3.5.13_typescript@5.8.3_ → embla-carousel-vue@8.6.0_vue@3.5.21_typescript@5.9.2_}/node_modules/embla-carousel-vue/esm/embla-carousel-vue.esm.cjs +0 -0
  688. /package/dist/node_modules/.pnpm/{embla-carousel-vue@8.6.0_vue@3.5.13_typescript@5.8.3_ → embla-carousel-vue@8.6.0_vue@3.5.21_typescript@5.9.2_}/node_modules/embla-carousel-vue/esm/embla-carousel-vue.esm.js +0 -0
  689. /package/dist/node_modules/{fast-deep-equal → .pnpm/fast-deep-equal@3.1.3/node_modules/fast-deep-equal}/index.cjs +0 -0
  690. /package/dist/node_modules/{fast-deep-equal → .pnpm/fast-deep-equal@3.1.3/node_modules/fast-deep-equal}/index.js +0 -0
  691. /package/src/modules/core/classes/{event.js → event-bus.js} +0 -0
@@ -2,21 +2,21 @@ import { ref, onMounted, computed, onUnmounted, createElementBlock, createCommen
2
2
  import { useRoute, useRouter } from "vue-router";
3
3
  import _sfc_main$5 from "../../../icons/navigation/IconDelete.vue.js";
4
4
  import _sfc_main$3 from "../../../../components/Button/Button.vue.js";
5
- import Select from "../../../../components/Select/Select.vue2.js";
5
+ import Select from "../../../../components/Select/Select.vue.js";
6
6
  import _sfc_main$4 from "../../../../components/UploadImage/UploadImage.vue.js";
7
- import Field from "../../../../components/Field/Field.vue.js";
7
+ import Field from "../../../../components/Field/Field.vue2.js";
8
8
  import _sfc_main$6 from "../../../../components/FieldTags/FieldTags.vue.js";
9
9
  /* empty css */
10
10
  /* empty css */
11
11
  /* empty css */
12
12
  /* empty css */
13
- import { state as state$2 } from "../../../globals/views/store/globals.js";
14
13
  /* empty css */
15
14
  import _sfc_main$1 from "../../../icons/navigation/IconCheckmark.vue.js";
16
15
  /* empty css */
17
16
  /* empty css */
18
- /* empty css */
17
+ /* empty css */
19
18
  import _sfc_main$2 from "../../../../components/Block/Block.vue.js";
19
+ import { state as state$2 } from "../../../globals/views/store/globals.js";
20
20
  import { state as state$1 } from "../../../auth/views/store/auth.js";
21
21
  import { actions, state } from "../../store/categories.js";
22
22
  /* empty css */
@@ -5,9 +5,7 @@ const vueRouter = require("vue-router");
5
5
  const vueI18n = require("vue-i18n");
6
6
  const mixins = require("../../../globals/views/mixins/mixins.cjs");
7
7
  const auth = require("../../../auth/views/store/auth.cjs");
8
- require("../../../globals/views/store/globals.cjs");
9
8
  const products = require("../../store/products.cjs");
10
- require("../../store/categories.cjs");
11
9
  const shopcart = require("../../../orders/store/shopcart.cjs");
12
10
  ;/* empty css */
13
11
  ;/* empty css */
@@ -1 +1 @@
1
- {"version":3,"file":"Product.vue.cjs","sources":["../../../../../../../src/modules/products/components/pages/Product.vue"],"sourcesContent":["<template>\n <div v-if=\"products.state.current\" class=\"w-100 mobile:pd-thin pd-small bg-white\">\n <div class=\"cols-2 mobile:cols-1 tablet:cols-1 w-100 gap-medium\">\n\n <ProductImages\n :images=\"currentImages\"\n :product=\"product\"\n />\n\n <div class=\"pos-relative w-100 h-100 flex-column flex-h-center flex\">\n <!-- Edit Button -->\n <router-link\n v-if=\"hasAccess(route.params._id, 'products', 'edit', auth.state.accesses, auth.state.access.roles)\"\n :to=\"\n route.params._id \n ? { name: 'Organization_ProductEdit', params: { id: route.params._id, product: product._id } } \n : { name: 'ProductEdit', params: { product: product._id } }\n \"\n class=\"\n z-index-2\n cursor-pointer \n pos-absolute pos-t-zero pos-r-zero\n radius-extra pd-thin bg-second\n \"\n >\n <IconEdit\n class=\"i-regular\"\n classes=\"fill-white\"\n />\n </router-link>\n\n <h2 class=\"w-100 h1-product mn-b-medium\">{{ product.name }}</h2>\n\n <p v-if=\"product.description\" class=\"w-100 mn-b-medium\" style=\"white-space: pre-line;\">\n {{ product.translations?.length > 1 ? t('description') : product.description }}\n </p>\n \n <!-- Компонент выбора вариантов товара -->\n <ProductConfigurator\n v-if=\"product.variants?.length > 0\"\n :product-variants=\"product.variants\"\n :product-id=\"product._id\"\n :product-name=\"product.name\"\n :discounts=\"product.discounts\"\n :regularPrice=\"100\"\n @variant-selected=\"handleVariantSelected\"\n @add-to-cart=\"handleAddToCart\"\n @update-images=\"handleUpdateImages\"\n />\n\n <div v-if=\"product.included\" class=\"mn-b-small flex-nowrap flex flex-v-center\">\n <IconList class=\"mn-r-micro i-medium\"/>\n <p class=\"t-medium \">Included</p>\n </div>\n\n <div v-if=\"product.included\" class=\"cols-1 mn-b-medium w-100 \">\n <div\n class=\"w-100 pd-small radius-small flex flex-column gap-small bg-light\"\n >\n <p class=\"t-medium\" style=\"white-space: pre-line;\" v-html=\"product.included\"></p>\n </div>\n </div>\n\n\n <div v-if=\"product.attributes && product.attributes.length > 0\" class=\"mn-b-small flex-nowrap flex flex-v-center\">\n <IconInfo class=\"mn-r-micro i-medium\"/>\n <p class=\"t-medium \">Product Details</p>\n </div>\n\n <div class=\"cols-2 mn-b-medium w-100 gap-small\">\n <div\n v-if=\"product.attributes && product.attributes.length > 0\"\n v-for=\"attributes in product.attributes\"\n class=\"w-100 pd-small radius-small bg-light product-attributes\"\n >\n <p class=\"mn-b-thin t-demi\">{{ attributes.name }}</p>\n <p>{{ attributes.value }}</p>\n </div>\n </div>\n\n <div class=\"mn-b-small flex-nowrap flex flex-v-center\">\n <IconGroups class=\"mn-r-micro i-medium\"/>\n <p class=\"t-medium \">Provided by</p>\n </div>\n\n <CardOrganization \n v-if=\"product.owner\"\n :organization=\"product.owner.target\"\n :showRating=\"true\"\n :showFollowers=\"false\"\n :showProducts=\"false\"\n class=\"bg-light w-100 o-hidden radius-medium pd-small \"\n />\n </div>\n </div>\n \n <ProductsRecommended \n v-if=\"product.recommended.length > 0\"\n :products=\"product.recommended\"\n class=\" mn-t-big h-max pos-relative\"\n />\n\n <div class=\"h-max mn-t-big pos-relative\">\n <h3 class=\"pd-b-small\">Most Popular</h3>\n <ProductsPopular class=\"mn-r-big-negative mn-l-big-negative\"/>\n </div>\n </div>\n</template>\n\n<script setup>\nimport { computed, ref, onMounted, getCurrentInstance } from 'vue'\nimport { useRoute, useRouter } from 'vue-router'\nimport { useI18n } from 'vue-i18n'\nimport { useGlobalMixins } from \"@martyrs/src/modules/globals/views/mixins/mixins.js\"\n\nimport * as auth from '@martyrs/src/modules/auth/views/store/auth.js'\nimport * as globals from '@martyrs/src/modules/globals/views/store/globals.js'\nimport * as products from '@martyrs/src/modules/products/store/products.js'\nimport * as categories from '@martyrs/src/modules/products/store/categories.js'\nimport * as shopcart from '@martyrs/src/modules/orders/store/shopcart.js'\n\nimport Button from '@martyrs/src/components/Button/Button.vue'\nimport Popup from '@martyrs/src/components/Popup/Popup.vue'\nimport Tab from '@martyrs/src/components/Tab/Tab.vue'\nimport Calendar from '@martyrs/src/components/Calendar/Calendar.vue'\n\nimport IconEdit from '@martyrs/src/modules/icons/navigation/IconEdit.vue'\nimport IconInfo from '@martyrs/src/modules/icons/navigation/IconInfo.vue'\n\nimport IconShopcartAdd from '@martyrs/src/modules/icons/actions/IconShopcartAdd.vue'\n\nimport IconList from '@martyrs/src/modules/icons/entities/IconList.vue';\nimport IconGroups from '@martyrs/src/modules/icons/entities/IconGroups.vue'\n\nimport ProductImages from '@martyrs/src/modules/products/components/blocks/ProductImages.vue'\nimport ProductConfigurator from '@martyrs/src/modules/products/components/sections/ProductConfigurator.vue'\nimport ProductsRecommended from '@martyrs/src/modules/products/components/sections/ProductsRecommended.vue';\nimport ProductsPopular from '@martyrs/src/modules/products/components/sections/ProductsPopular.vue'\n\nimport CardOrganization from '@martyrs/src/modules/organizations/components/blocks/CardOrganization.vue'\n\nconst route = useRoute()\nconst router = useRouter()\nconst { proxy } = getCurrentInstance()\nconst { returnCurrency, hasAccess } = useGlobalMixins()\n\nconst product = computed(() => products.state.current)\nconst productImages = computed(() => products.state.current.images || [])\n\n// Состояние для отслеживания текущих изображений (товара или варианта)\nconst currentImages = ref([])\n// Выбранный вариант товара\nconst selectedVariant = ref(null)\n\nconst text = {\n en: { addtoorder: 'Add to Cart', fastorder: 'Fast Order', description: 'Description' },\n ru: { addtoorder: 'Добавить в корзину', fastorder: 'Быстрый заказ', description: 'Описание' }\n}\n\nconst { t } = useI18n({ messages: text })\n\nconst emits = defineEmits(['page-loading', 'page-loaded']);\n\nconst recommendation = defineProps({\n recommendation: {\n type: Boolean,\n default: false\n }\n})\n \nproducts.state.current = null\n\nonMounted(async () => {\n emits('page-loading');\n \n await products.actions.read({ _id: route.params.product, lookup: ['variants','recommended','inventory'] })\n \n // Инициализируем текущие изображения изображениями товара\n currentImages.value = [...productImages.value]\n\n if (typeof gtag === 'function') {\n gtag('event', 'view_item', {\n currency: returnCurrency(),\n value: product.value.price || 0,\n items: [{\n item_id: product.value._id,\n item_name: product.value.name,\n price: product.value.price || 0,\n item_category: product.value.category || '',\n item_brand: product.value.owner?.target?.profile.name || ''\n }]\n });\n }\n\n emits('page-loaded');\n})\n\n// Обработчик выбора варианта\nfunction handleVariantSelected(variant) {\n selectedVariant.value = variant\n}\n\n// Обработчик обновления изображений при выборе варианта\nfunction handleUpdateImages(images) {\n if (images && images.length > 0) {\n currentImages.value = [...images]\n } else {\n // Если у варианта нет изображений, возвращаем изображения товара\n currentImages.value = [...productImages.value]\n }\n}\n\n// Функция добавления товара в корзину - теперь требует выбранный вариант\nasync function handleAddToCart({variant, quantity}) {\n console.log('variant is', variant)\n console.log('quantity is', quantity)\n let selectedDates = null\n\n try {\n if (!variant) {\n throw new Error('Variant is required for adding product to cart')\n }\n\n if (!shopcart.state.organization) {\n shopcart.state.organization = product.value.owner.target._id\n }\n \n if (product.value.listing === 'rent') {\n selectedDates = await proxy.$dateSelector(\n product.value._id,\n variant._id,\n quantity,\n variant.price || product.value.price\n );\n \n if (!selectedDates) throw new Error('Date selection cancelled')\n }\n \n // Если организация товара отличается от текущей в корзине\n if (shopcart.state.organization !== product.value.owner.target._id) {\n const result = await proxy.$alert({\n title: 'Replace items in your cart?',\n message: `Your cart has items from another vendor. If you continue, we'll clear it so you can order from this one instead.`,\n actions: [\n { label: 'Cancel', value: false },\n { label: 'Replace', value: true }\n ]\n })\n\n if (!result) throw new Error('Cart replacement cancelled')\n\n shopcart.state.positions = []\n shopcart.state.organization = product.value.owner.target._id\n }\n\n if (typeof gtag === 'function') {\n gtag('event', 'add_to_cart', {\n currency: returnCurrency(),\n value: variant.price || 0,\n items: [{\n item_id: product.value._id,\n item_name: product.value.name,\n price: variant.price || product.value.price || 0,\n quantity: 1,\n item_category: product.value.category || '',\n item_brand: product.value.owner?.target?.profile?.name || ''\n }]\n });\n }\n \n await shopcart.actions.addProductToCart(product.value, variant, product.value.owner.target._id, selectedDates, quantity)\n return true\n } catch (error) {\n console.error('Error while adding product to cart:', error)\n throw error\n }\n}\n</script>"],"names":["useRoute","useRouter","getCurrentInstance","useGlobalMixins","computed","products.state","ref","useI18n","onMounted","products.actions","shopcart.state","shopcart.actions"],"mappings":"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"}
1
+ {"version":3,"file":"Product.vue.cjs","sources":["../../../../../../../src/modules/products/components/pages/Product.vue"],"sourcesContent":["<template>\n <div v-if=\"products.state.current\" class=\"w-100 mobile:pd-thin pd-small bg-white\">\n <div class=\"cols-2 mobile:cols-1 tablet:cols-1 w-100 gap-medium\">\n\n <ProductImages\n :images=\"currentImages\"\n :product=\"product\"\n />\n\n <div class=\"pos-relative w-100 h-100 flex-column flex-h-center flex\">\n <!-- Edit Button -->\n <router-link\n v-if=\"hasAccess(route.params._id, 'products', 'edit', auth.state.accesses, auth.state.access.roles)\"\n :to=\"\n route.params._id \n ? { name: 'Organization_ProductEdit', params: { id: route.params._id, product: product._id } } \n : { name: 'ProductEdit', params: { product: product._id } }\n \"\n class=\"\n z-index-2\n cursor-pointer \n pos-absolute pos-t-zero pos-r-zero\n radius-extra pd-thin bg-second\n \"\n >\n <IconEdit\n class=\"i-regular\"\n classes=\"fill-white\"\n />\n </router-link>\n\n <h2 class=\"w-100 h1-product mn-b-medium\">{{ product.name }}</h2>\n\n <p v-if=\"product.description\" class=\"w-100 mn-b-medium\" style=\"white-space: pre-line;\">\n {{ product.translations?.length > 1 ? t('description') : product.description }}\n </p>\n \n <!-- Компонент выбора вариантов товара -->\n <ProductConfigurator\n v-if=\"product.variants?.length > 0\"\n :product-variants=\"product.variants\"\n :product-id=\"product._id\"\n :product-name=\"product.name\"\n :discounts=\"product.discounts\"\n :regularPrice=\"100\"\n @variant-selected=\"handleVariantSelected\"\n @add-to-cart=\"handleAddToCart\"\n @update-images=\"handleUpdateImages\"\n />\n\n <div v-if=\"product.included\" class=\"mn-b-small flex-nowrap flex flex-v-center\">\n <IconList class=\"mn-r-micro i-medium\"/>\n <p class=\"t-medium \">Included</p>\n </div>\n\n <div v-if=\"product.included\" class=\"cols-1 mn-b-medium w-100 \">\n <div\n class=\"w-100 pd-small radius-small flex flex-column gap-small bg-light\"\n >\n <p class=\"t-medium\" style=\"white-space: pre-line;\" v-html=\"product.included\"></p>\n </div>\n </div>\n\n\n <div v-if=\"product.attributes && product.attributes.length > 0\" class=\"mn-b-small flex-nowrap flex flex-v-center\">\n <IconInfo class=\"mn-r-micro i-medium\"/>\n <p class=\"t-medium \">Product Details</p>\n </div>\n\n <div class=\"cols-2 mn-b-medium w-100 gap-small\">\n <div\n v-if=\"product.attributes && product.attributes.length > 0\"\n v-for=\"attributes in product.attributes\"\n class=\"w-100 pd-small radius-small bg-light product-attributes\"\n >\n <p class=\"mn-b-thin t-demi\">{{ attributes.name }}</p>\n <p>{{ attributes.value }}</p>\n </div>\n </div>\n\n <div class=\"mn-b-small flex-nowrap flex flex-v-center\">\n <IconGroups class=\"mn-r-micro i-medium\"/>\n <p class=\"t-medium \">Provided by</p>\n </div>\n\n <CardOrganization \n v-if=\"product.owner\"\n :organization=\"product.owner.target\"\n :showRating=\"true\"\n :showFollowers=\"false\"\n :showProducts=\"false\"\n class=\"bg-light w-100 o-hidden radius-medium pd-small \"\n />\n </div>\n </div>\n \n <ProductsRecommended \n v-if=\"product.recommended.length > 0\"\n :products=\"product.recommended\"\n class=\" mn-t-big h-max pos-relative\"\n />\n\n <div class=\"h-max mn-t-big pos-relative\">\n <h3 class=\"pd-b-small\">Most Popular</h3>\n <ProductsPopular class=\"mn-r-big-negative mn-l-big-negative\"/>\n </div>\n </div>\n</template>\n\n<script setup>\nimport { computed, ref, onMounted, getCurrentInstance } from 'vue'\nimport { useRoute, useRouter } from 'vue-router'\nimport { useI18n } from 'vue-i18n'\nimport { useGlobalMixins } from \"@martyrs/src/modules/globals/views/mixins/mixins.js\"\n\nimport * as auth from '@martyrs/src/modules/auth/views/store/auth.js'\nimport * as globals from '@martyrs/src/modules/globals/views/store/globals.js'\nimport * as products from '@martyrs/src/modules/products/store/products.js'\nimport * as categories from '@martyrs/src/modules/products/store/categories.js'\nimport * as shopcart from '@martyrs/src/modules/orders/store/shopcart.js'\n\nimport Button from '@martyrs/src/components/Button/Button.vue'\nimport Popup from '@martyrs/src/components/Popup/Popup.vue'\nimport Tab from '@martyrs/src/components/Tab/Tab.vue'\nimport Calendar from '@martyrs/src/components/Calendar/Calendar.vue'\n\nimport IconEdit from '@martyrs/src/modules/icons/navigation/IconEdit.vue'\nimport IconInfo from '@martyrs/src/modules/icons/navigation/IconInfo.vue'\n\nimport IconShopcartAdd from '@martyrs/src/modules/icons/actions/IconShopcartAdd.vue'\n\nimport IconList from '@martyrs/src/modules/icons/entities/IconList.vue';\nimport IconGroups from '@martyrs/src/modules/icons/entities/IconGroups.vue'\n\nimport ProductImages from '@martyrs/src/modules/products/components/blocks/ProductImages.vue'\nimport ProductConfigurator from '@martyrs/src/modules/products/components/sections/ProductConfigurator.vue'\nimport ProductsRecommended from '@martyrs/src/modules/products/components/sections/ProductsRecommended.vue';\nimport ProductsPopular from '@martyrs/src/modules/products/components/sections/ProductsPopular.vue'\n\nimport CardOrganization from '@martyrs/src/modules/organizations/components/blocks/CardOrganization.vue'\n\nconst route = useRoute()\nconst router = useRouter()\nconst { proxy } = getCurrentInstance()\nconst { returnCurrency, hasAccess } = useGlobalMixins()\n\nconst product = computed(() => products.state.current)\nconst productImages = computed(() => products.state.current.images || [])\n\n// Состояние для отслеживания текущих изображений (товара или варианта)\nconst currentImages = ref([])\n// Выбранный вариант товара\nconst selectedVariant = ref(null)\n\nconst text = {\n en: { addtoorder: 'Add to Cart', fastorder: 'Fast Order', description: 'Description' },\n ru: { addtoorder: 'Добавить в корзину', fastorder: 'Быстрый заказ', description: 'Описание' }\n}\n\nconst { t } = useI18n({ messages: text })\n\nconst emits = defineEmits(['page-loading', 'page-loaded']);\n\nconst recommendation = defineProps({\n recommendation: {\n type: Boolean,\n default: false\n }\n})\n \nproducts.state.current = null\n\nonMounted(async () => {\n emits('page-loading');\n \n await products.actions.read({ _id: route.params.product, lookup: ['variants','recommended','inventory'] })\n \n // Инициализируем текущие изображения изображениями товара\n currentImages.value = [...productImages.value]\n\n if (typeof gtag === 'function') {\n gtag('event', 'view_item', {\n currency: returnCurrency(),\n value: product.value.price || 0,\n items: [{\n item_id: product.value._id,\n item_name: product.value.name,\n price: product.value.price || 0,\n item_category: product.value.category || '',\n item_brand: product.value.owner?.target?.profile.name || ''\n }]\n });\n }\n\n emits('page-loaded');\n})\n\n// Обработчик выбора варианта\nfunction handleVariantSelected(variant) {\n selectedVariant.value = variant\n}\n\n// Обработчик обновления изображений при выборе варианта\nfunction handleUpdateImages(images) {\n if (images && images.length > 0) {\n currentImages.value = [...images]\n } else {\n // Если у варианта нет изображений, возвращаем изображения товара\n currentImages.value = [...productImages.value]\n }\n}\n\n// Функция добавления товара в корзину - теперь требует выбранный вариант\nasync function handleAddToCart({variant, quantity}) {\n console.log('variant is', variant)\n console.log('quantity is', quantity)\n let selectedDates = null\n\n try {\n if (!variant) {\n throw new Error('Variant is required for adding product to cart')\n }\n\n if (!shopcart.state.organization) {\n shopcart.state.organization = product.value.owner.target._id\n }\n \n if (product.value.listing === 'rent') {\n selectedDates = await proxy.$dateSelector(\n product.value._id,\n variant._id,\n quantity,\n variant.price || product.value.price\n );\n \n if (!selectedDates) throw new Error('Date selection cancelled')\n }\n \n // Если организация товара отличается от текущей в корзине\n if (shopcart.state.organization !== product.value.owner.target._id) {\n const result = await proxy.$alert({\n title: 'Replace items in your cart?',\n message: `Your cart has items from another vendor. If you continue, we'll clear it so you can order from this one instead.`,\n actions: [\n { label: 'Cancel', value: false },\n { label: 'Replace', value: true }\n ]\n })\n\n if (!result) throw new Error('Cart replacement cancelled')\n\n shopcart.state.positions = []\n shopcart.state.organization = product.value.owner.target._id\n }\n\n if (typeof gtag === 'function') {\n gtag('event', 'add_to_cart', {\n currency: returnCurrency(),\n value: variant.price || 0,\n items: [{\n item_id: product.value._id,\n item_name: product.value.name,\n price: variant.price || product.value.price || 0,\n quantity: 1,\n item_category: product.value.category || '',\n item_brand: product.value.owner?.target?.profile?.name || ''\n }]\n });\n }\n \n await shopcart.actions.addProductToCart(product.value, variant, product.value.owner.target._id, selectedDates, quantity)\n return true\n } catch (error) {\n console.error('Error while adding product to cart:', error)\n throw error\n }\n}\n</script>"],"names":["useRoute","useRouter","getCurrentInstance","useGlobalMixins","computed","products.state","ref","useI18n","onMounted","products.actions","shopcart.state","shopcart.actions"],"mappings":"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"}
@@ -3,9 +3,7 @@ import { useRoute, useRouter } from "vue-router";
3
3
  import { useI18n } from "vue-i18n";
4
4
  import { useGlobalMixins } from "../../../globals/views/mixins/mixins.js";
5
5
  import { state as state$1 } from "../../../auth/views/store/auth.js";
6
- import "../../../globals/views/store/globals.js";
7
6
  import { state, actions } from "../../store/products.js";
8
- import "../../store/categories.js";
9
7
  import { state as state$2, actions as actions$1 } from "../../../orders/store/shopcart.js";
10
8
  /* empty css */
11
9
  /* empty css */
@@ -1 +1 @@
1
- {"version":3,"file":"Product.vue.js","sources":["../../../../../../../src/modules/products/components/pages/Product.vue"],"sourcesContent":["<template>\n <div v-if=\"products.state.current\" class=\"w-100 mobile:pd-thin pd-small bg-white\">\n <div class=\"cols-2 mobile:cols-1 tablet:cols-1 w-100 gap-medium\">\n\n <ProductImages\n :images=\"currentImages\"\n :product=\"product\"\n />\n\n <div class=\"pos-relative w-100 h-100 flex-column flex-h-center flex\">\n <!-- Edit Button -->\n <router-link\n v-if=\"hasAccess(route.params._id, 'products', 'edit', auth.state.accesses, auth.state.access.roles)\"\n :to=\"\n route.params._id \n ? { name: 'Organization_ProductEdit', params: { id: route.params._id, product: product._id } } \n : { name: 'ProductEdit', params: { product: product._id } }\n \"\n class=\"\n z-index-2\n cursor-pointer \n pos-absolute pos-t-zero pos-r-zero\n radius-extra pd-thin bg-second\n \"\n >\n <IconEdit\n class=\"i-regular\"\n classes=\"fill-white\"\n />\n </router-link>\n\n <h2 class=\"w-100 h1-product mn-b-medium\">{{ product.name }}</h2>\n\n <p v-if=\"product.description\" class=\"w-100 mn-b-medium\" style=\"white-space: pre-line;\">\n {{ product.translations?.length > 1 ? t('description') : product.description }}\n </p>\n \n <!-- Компонент выбора вариантов товара -->\n <ProductConfigurator\n v-if=\"product.variants?.length > 0\"\n :product-variants=\"product.variants\"\n :product-id=\"product._id\"\n :product-name=\"product.name\"\n :discounts=\"product.discounts\"\n :regularPrice=\"100\"\n @variant-selected=\"handleVariantSelected\"\n @add-to-cart=\"handleAddToCart\"\n @update-images=\"handleUpdateImages\"\n />\n\n <div v-if=\"product.included\" class=\"mn-b-small flex-nowrap flex flex-v-center\">\n <IconList class=\"mn-r-micro i-medium\"/>\n <p class=\"t-medium \">Included</p>\n </div>\n\n <div v-if=\"product.included\" class=\"cols-1 mn-b-medium w-100 \">\n <div\n class=\"w-100 pd-small radius-small flex flex-column gap-small bg-light\"\n >\n <p class=\"t-medium\" style=\"white-space: pre-line;\" v-html=\"product.included\"></p>\n </div>\n </div>\n\n\n <div v-if=\"product.attributes && product.attributes.length > 0\" class=\"mn-b-small flex-nowrap flex flex-v-center\">\n <IconInfo class=\"mn-r-micro i-medium\"/>\n <p class=\"t-medium \">Product Details</p>\n </div>\n\n <div class=\"cols-2 mn-b-medium w-100 gap-small\">\n <div\n v-if=\"product.attributes && product.attributes.length > 0\"\n v-for=\"attributes in product.attributes\"\n class=\"w-100 pd-small radius-small bg-light product-attributes\"\n >\n <p class=\"mn-b-thin t-demi\">{{ attributes.name }}</p>\n <p>{{ attributes.value }}</p>\n </div>\n </div>\n\n <div class=\"mn-b-small flex-nowrap flex flex-v-center\">\n <IconGroups class=\"mn-r-micro i-medium\"/>\n <p class=\"t-medium \">Provided by</p>\n </div>\n\n <CardOrganization \n v-if=\"product.owner\"\n :organization=\"product.owner.target\"\n :showRating=\"true\"\n :showFollowers=\"false\"\n :showProducts=\"false\"\n class=\"bg-light w-100 o-hidden radius-medium pd-small \"\n />\n </div>\n </div>\n \n <ProductsRecommended \n v-if=\"product.recommended.length > 0\"\n :products=\"product.recommended\"\n class=\" mn-t-big h-max pos-relative\"\n />\n\n <div class=\"h-max mn-t-big pos-relative\">\n <h3 class=\"pd-b-small\">Most Popular</h3>\n <ProductsPopular class=\"mn-r-big-negative mn-l-big-negative\"/>\n </div>\n </div>\n</template>\n\n<script setup>\nimport { computed, ref, onMounted, getCurrentInstance } from 'vue'\nimport { useRoute, useRouter } from 'vue-router'\nimport { useI18n } from 'vue-i18n'\nimport { useGlobalMixins } from \"@martyrs/src/modules/globals/views/mixins/mixins.js\"\n\nimport * as auth from '@martyrs/src/modules/auth/views/store/auth.js'\nimport * as globals from '@martyrs/src/modules/globals/views/store/globals.js'\nimport * as products from '@martyrs/src/modules/products/store/products.js'\nimport * as categories from '@martyrs/src/modules/products/store/categories.js'\nimport * as shopcart from '@martyrs/src/modules/orders/store/shopcart.js'\n\nimport Button from '@martyrs/src/components/Button/Button.vue'\nimport Popup from '@martyrs/src/components/Popup/Popup.vue'\nimport Tab from '@martyrs/src/components/Tab/Tab.vue'\nimport Calendar from '@martyrs/src/components/Calendar/Calendar.vue'\n\nimport IconEdit from '@martyrs/src/modules/icons/navigation/IconEdit.vue'\nimport IconInfo from '@martyrs/src/modules/icons/navigation/IconInfo.vue'\n\nimport IconShopcartAdd from '@martyrs/src/modules/icons/actions/IconShopcartAdd.vue'\n\nimport IconList from '@martyrs/src/modules/icons/entities/IconList.vue';\nimport IconGroups from '@martyrs/src/modules/icons/entities/IconGroups.vue'\n\nimport ProductImages from '@martyrs/src/modules/products/components/blocks/ProductImages.vue'\nimport ProductConfigurator from '@martyrs/src/modules/products/components/sections/ProductConfigurator.vue'\nimport ProductsRecommended from '@martyrs/src/modules/products/components/sections/ProductsRecommended.vue';\nimport ProductsPopular from '@martyrs/src/modules/products/components/sections/ProductsPopular.vue'\n\nimport CardOrganization from '@martyrs/src/modules/organizations/components/blocks/CardOrganization.vue'\n\nconst route = useRoute()\nconst router = useRouter()\nconst { proxy } = getCurrentInstance()\nconst { returnCurrency, hasAccess } = useGlobalMixins()\n\nconst product = computed(() => products.state.current)\nconst productImages = computed(() => products.state.current.images || [])\n\n// Состояние для отслеживания текущих изображений (товара или варианта)\nconst currentImages = ref([])\n// Выбранный вариант товара\nconst selectedVariant = ref(null)\n\nconst text = {\n en: { addtoorder: 'Add to Cart', fastorder: 'Fast Order', description: 'Description' },\n ru: { addtoorder: 'Добавить в корзину', fastorder: 'Быстрый заказ', description: 'Описание' }\n}\n\nconst { t } = useI18n({ messages: text })\n\nconst emits = defineEmits(['page-loading', 'page-loaded']);\n\nconst recommendation = defineProps({\n recommendation: {\n type: Boolean,\n default: false\n }\n})\n \nproducts.state.current = null\n\nonMounted(async () => {\n emits('page-loading');\n \n await products.actions.read({ _id: route.params.product, lookup: ['variants','recommended','inventory'] })\n \n // Инициализируем текущие изображения изображениями товара\n currentImages.value = [...productImages.value]\n\n if (typeof gtag === 'function') {\n gtag('event', 'view_item', {\n currency: returnCurrency(),\n value: product.value.price || 0,\n items: [{\n item_id: product.value._id,\n item_name: product.value.name,\n price: product.value.price || 0,\n item_category: product.value.category || '',\n item_brand: product.value.owner?.target?.profile.name || ''\n }]\n });\n }\n\n emits('page-loaded');\n})\n\n// Обработчик выбора варианта\nfunction handleVariantSelected(variant) {\n selectedVariant.value = variant\n}\n\n// Обработчик обновления изображений при выборе варианта\nfunction handleUpdateImages(images) {\n if (images && images.length > 0) {\n currentImages.value = [...images]\n } else {\n // Если у варианта нет изображений, возвращаем изображения товара\n currentImages.value = [...productImages.value]\n }\n}\n\n// Функция добавления товара в корзину - теперь требует выбранный вариант\nasync function handleAddToCart({variant, quantity}) {\n console.log('variant is', variant)\n console.log('quantity is', quantity)\n let selectedDates = null\n\n try {\n if (!variant) {\n throw new Error('Variant is required for adding product to cart')\n }\n\n if (!shopcart.state.organization) {\n shopcart.state.organization = product.value.owner.target._id\n }\n \n if (product.value.listing === 'rent') {\n selectedDates = await proxy.$dateSelector(\n product.value._id,\n variant._id,\n quantity,\n variant.price || product.value.price\n );\n \n if (!selectedDates) throw new Error('Date selection cancelled')\n }\n \n // Если организация товара отличается от текущей в корзине\n if (shopcart.state.organization !== product.value.owner.target._id) {\n const result = await proxy.$alert({\n title: 'Replace items in your cart?',\n message: `Your cart has items from another vendor. If you continue, we'll clear it so you can order from this one instead.`,\n actions: [\n { label: 'Cancel', value: false },\n { label: 'Replace', value: true }\n ]\n })\n\n if (!result) throw new Error('Cart replacement cancelled')\n\n shopcart.state.positions = []\n shopcart.state.organization = product.value.owner.target._id\n }\n\n if (typeof gtag === 'function') {\n gtag('event', 'add_to_cart', {\n currency: returnCurrency(),\n value: variant.price || 0,\n items: [{\n item_id: product.value._id,\n item_name: product.value.name,\n price: variant.price || product.value.price || 0,\n quantity: 1,\n item_category: product.value.category || '',\n item_brand: product.value.owner?.target?.profile?.name || ''\n }]\n });\n }\n \n await shopcart.actions.addProductToCart(product.value, variant, product.value.owner.target._id, selectedDates, quantity)\n return true\n } catch (error) {\n console.error('Error while adding product to cart:', error)\n throw error\n }\n}\n</script>"],"names":["products.state","products.actions","shopcart.state","shopcart.actions"],"mappings":"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"}
1
+ {"version":3,"file":"Product.vue.js","sources":["../../../../../../../src/modules/products/components/pages/Product.vue"],"sourcesContent":["<template>\n <div v-if=\"products.state.current\" class=\"w-100 mobile:pd-thin pd-small bg-white\">\n <div class=\"cols-2 mobile:cols-1 tablet:cols-1 w-100 gap-medium\">\n\n <ProductImages\n :images=\"currentImages\"\n :product=\"product\"\n />\n\n <div class=\"pos-relative w-100 h-100 flex-column flex-h-center flex\">\n <!-- Edit Button -->\n <router-link\n v-if=\"hasAccess(route.params._id, 'products', 'edit', auth.state.accesses, auth.state.access.roles)\"\n :to=\"\n route.params._id \n ? { name: 'Organization_ProductEdit', params: { id: route.params._id, product: product._id } } \n : { name: 'ProductEdit', params: { product: product._id } }\n \"\n class=\"\n z-index-2\n cursor-pointer \n pos-absolute pos-t-zero pos-r-zero\n radius-extra pd-thin bg-second\n \"\n >\n <IconEdit\n class=\"i-regular\"\n classes=\"fill-white\"\n />\n </router-link>\n\n <h2 class=\"w-100 h1-product mn-b-medium\">{{ product.name }}</h2>\n\n <p v-if=\"product.description\" class=\"w-100 mn-b-medium\" style=\"white-space: pre-line;\">\n {{ product.translations?.length > 1 ? t('description') : product.description }}\n </p>\n \n <!-- Компонент выбора вариантов товара -->\n <ProductConfigurator\n v-if=\"product.variants?.length > 0\"\n :product-variants=\"product.variants\"\n :product-id=\"product._id\"\n :product-name=\"product.name\"\n :discounts=\"product.discounts\"\n :regularPrice=\"100\"\n @variant-selected=\"handleVariantSelected\"\n @add-to-cart=\"handleAddToCart\"\n @update-images=\"handleUpdateImages\"\n />\n\n <div v-if=\"product.included\" class=\"mn-b-small flex-nowrap flex flex-v-center\">\n <IconList class=\"mn-r-micro i-medium\"/>\n <p class=\"t-medium \">Included</p>\n </div>\n\n <div v-if=\"product.included\" class=\"cols-1 mn-b-medium w-100 \">\n <div\n class=\"w-100 pd-small radius-small flex flex-column gap-small bg-light\"\n >\n <p class=\"t-medium\" style=\"white-space: pre-line;\" v-html=\"product.included\"></p>\n </div>\n </div>\n\n\n <div v-if=\"product.attributes && product.attributes.length > 0\" class=\"mn-b-small flex-nowrap flex flex-v-center\">\n <IconInfo class=\"mn-r-micro i-medium\"/>\n <p class=\"t-medium \">Product Details</p>\n </div>\n\n <div class=\"cols-2 mn-b-medium w-100 gap-small\">\n <div\n v-if=\"product.attributes && product.attributes.length > 0\"\n v-for=\"attributes in product.attributes\"\n class=\"w-100 pd-small radius-small bg-light product-attributes\"\n >\n <p class=\"mn-b-thin t-demi\">{{ attributes.name }}</p>\n <p>{{ attributes.value }}</p>\n </div>\n </div>\n\n <div class=\"mn-b-small flex-nowrap flex flex-v-center\">\n <IconGroups class=\"mn-r-micro i-medium\"/>\n <p class=\"t-medium \">Provided by</p>\n </div>\n\n <CardOrganization \n v-if=\"product.owner\"\n :organization=\"product.owner.target\"\n :showRating=\"true\"\n :showFollowers=\"false\"\n :showProducts=\"false\"\n class=\"bg-light w-100 o-hidden radius-medium pd-small \"\n />\n </div>\n </div>\n \n <ProductsRecommended \n v-if=\"product.recommended.length > 0\"\n :products=\"product.recommended\"\n class=\" mn-t-big h-max pos-relative\"\n />\n\n <div class=\"h-max mn-t-big pos-relative\">\n <h3 class=\"pd-b-small\">Most Popular</h3>\n <ProductsPopular class=\"mn-r-big-negative mn-l-big-negative\"/>\n </div>\n </div>\n</template>\n\n<script setup>\nimport { computed, ref, onMounted, getCurrentInstance } from 'vue'\nimport { useRoute, useRouter } from 'vue-router'\nimport { useI18n } from 'vue-i18n'\nimport { useGlobalMixins } from \"@martyrs/src/modules/globals/views/mixins/mixins.js\"\n\nimport * as auth from '@martyrs/src/modules/auth/views/store/auth.js'\nimport * as globals from '@martyrs/src/modules/globals/views/store/globals.js'\nimport * as products from '@martyrs/src/modules/products/store/products.js'\nimport * as categories from '@martyrs/src/modules/products/store/categories.js'\nimport * as shopcart from '@martyrs/src/modules/orders/store/shopcart.js'\n\nimport Button from '@martyrs/src/components/Button/Button.vue'\nimport Popup from '@martyrs/src/components/Popup/Popup.vue'\nimport Tab from '@martyrs/src/components/Tab/Tab.vue'\nimport Calendar from '@martyrs/src/components/Calendar/Calendar.vue'\n\nimport IconEdit from '@martyrs/src/modules/icons/navigation/IconEdit.vue'\nimport IconInfo from '@martyrs/src/modules/icons/navigation/IconInfo.vue'\n\nimport IconShopcartAdd from '@martyrs/src/modules/icons/actions/IconShopcartAdd.vue'\n\nimport IconList from '@martyrs/src/modules/icons/entities/IconList.vue';\nimport IconGroups from '@martyrs/src/modules/icons/entities/IconGroups.vue'\n\nimport ProductImages from '@martyrs/src/modules/products/components/blocks/ProductImages.vue'\nimport ProductConfigurator from '@martyrs/src/modules/products/components/sections/ProductConfigurator.vue'\nimport ProductsRecommended from '@martyrs/src/modules/products/components/sections/ProductsRecommended.vue';\nimport ProductsPopular from '@martyrs/src/modules/products/components/sections/ProductsPopular.vue'\n\nimport CardOrganization from '@martyrs/src/modules/organizations/components/blocks/CardOrganization.vue'\n\nconst route = useRoute()\nconst router = useRouter()\nconst { proxy } = getCurrentInstance()\nconst { returnCurrency, hasAccess } = useGlobalMixins()\n\nconst product = computed(() => products.state.current)\nconst productImages = computed(() => products.state.current.images || [])\n\n// Состояние для отслеживания текущих изображений (товара или варианта)\nconst currentImages = ref([])\n// Выбранный вариант товара\nconst selectedVariant = ref(null)\n\nconst text = {\n en: { addtoorder: 'Add to Cart', fastorder: 'Fast Order', description: 'Description' },\n ru: { addtoorder: 'Добавить в корзину', fastorder: 'Быстрый заказ', description: 'Описание' }\n}\n\nconst { t } = useI18n({ messages: text })\n\nconst emits = defineEmits(['page-loading', 'page-loaded']);\n\nconst recommendation = defineProps({\n recommendation: {\n type: Boolean,\n default: false\n }\n})\n \nproducts.state.current = null\n\nonMounted(async () => {\n emits('page-loading');\n \n await products.actions.read({ _id: route.params.product, lookup: ['variants','recommended','inventory'] })\n \n // Инициализируем текущие изображения изображениями товара\n currentImages.value = [...productImages.value]\n\n if (typeof gtag === 'function') {\n gtag('event', 'view_item', {\n currency: returnCurrency(),\n value: product.value.price || 0,\n items: [{\n item_id: product.value._id,\n item_name: product.value.name,\n price: product.value.price || 0,\n item_category: product.value.category || '',\n item_brand: product.value.owner?.target?.profile.name || ''\n }]\n });\n }\n\n emits('page-loaded');\n})\n\n// Обработчик выбора варианта\nfunction handleVariantSelected(variant) {\n selectedVariant.value = variant\n}\n\n// Обработчик обновления изображений при выборе варианта\nfunction handleUpdateImages(images) {\n if (images && images.length > 0) {\n currentImages.value = [...images]\n } else {\n // Если у варианта нет изображений, возвращаем изображения товара\n currentImages.value = [...productImages.value]\n }\n}\n\n// Функция добавления товара в корзину - теперь требует выбранный вариант\nasync function handleAddToCart({variant, quantity}) {\n console.log('variant is', variant)\n console.log('quantity is', quantity)\n let selectedDates = null\n\n try {\n if (!variant) {\n throw new Error('Variant is required for adding product to cart')\n }\n\n if (!shopcart.state.organization) {\n shopcart.state.organization = product.value.owner.target._id\n }\n \n if (product.value.listing === 'rent') {\n selectedDates = await proxy.$dateSelector(\n product.value._id,\n variant._id,\n quantity,\n variant.price || product.value.price\n );\n \n if (!selectedDates) throw new Error('Date selection cancelled')\n }\n \n // Если организация товара отличается от текущей в корзине\n if (shopcart.state.organization !== product.value.owner.target._id) {\n const result = await proxy.$alert({\n title: 'Replace items in your cart?',\n message: `Your cart has items from another vendor. If you continue, we'll clear it so you can order from this one instead.`,\n actions: [\n { label: 'Cancel', value: false },\n { label: 'Replace', value: true }\n ]\n })\n\n if (!result) throw new Error('Cart replacement cancelled')\n\n shopcart.state.positions = []\n shopcart.state.organization = product.value.owner.target._id\n }\n\n if (typeof gtag === 'function') {\n gtag('event', 'add_to_cart', {\n currency: returnCurrency(),\n value: variant.price || 0,\n items: [{\n item_id: product.value._id,\n item_name: product.value.name,\n price: variant.price || product.value.price || 0,\n quantity: 1,\n item_category: product.value.category || '',\n item_brand: product.value.owner?.target?.profile?.name || ''\n }]\n });\n }\n \n await shopcart.actions.addProductToCart(product.value, variant, product.value.owner.target._id, selectedDates, quantity)\n return true\n } catch (error) {\n console.error('Error while adding product to cart:', error)\n throw error\n }\n}\n</script>"],"names":["products.state","products.actions","shopcart.state","shopcart.actions"],"mappings":"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"}
@@ -4,8 +4,8 @@ const vue = require("vue");
4
4
  const vueRouter = require("vue-router");
5
5
  const Block = require("../../../../components/Block/Block.vue.cjs");
6
6
  const Tab = require("../../../../components/Tab/Tab.vue2.cjs");
7
- const Field = require("../../../../components/Field/Field.vue.cjs");
8
- const Select = require("../../../../components/Select/Select.vue2.cjs");
7
+ const Field = require("../../../../components/Field/Field.vue2.cjs");
8
+ const Select = require("../../../../components/Select/Select.vue.cjs");
9
9
  const Button = require("../../../../components/Button/Button.vue.cjs");
10
10
  const EditImages = require("../../../../components/EditImages/EditImages.vue2.cjs");
11
11
  const BlockMultiselect = require("../../../globals/views/components/blocks/BlockMultiselect.vue.cjs");
@@ -2,8 +2,8 @@ import { ref, onMounted, createElementBlock, createCommentVNode, unref, openBloc
2
2
  import { useRoute, useRouter } from "vue-router";
3
3
  import _sfc_main$1 from "../../../../components/Block/Block.vue.js";
4
4
  import _sfc_main$3 from "../../../../components/Tab/Tab.vue2.js";
5
- import Field from "../../../../components/Field/Field.vue.js";
6
- import Select from "../../../../components/Select/Select.vue2.js";
5
+ import Field from "../../../../components/Field/Field.vue2.js";
6
+ import Select from "../../../../components/Select/Select.vue.js";
7
7
  import _sfc_main$2 from "../../../../components/Button/Button.vue.js";
8
8
  import _sfc_main$4 from "../../../../components/EditImages/EditImages.vue2.js";
9
9
  import BlockMultiselect from "../../../globals/views/components/blocks/BlockMultiselect.vue.js";
@@ -3,14 +3,13 @@ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toString
3
3
  const vue = require("vue");
4
4
  const vueRouter = require("vue-router");
5
5
  ;/* empty css */
6
- const Feed = require("../../../../components/Feed/Feed.vue.cjs");
6
+ const Feed = require("../../../../components/Feed/Feed.vue2.cjs");
7
7
  const Spoiler = require("../../../../components/Spoiler/Spoiler.vue2.cjs");
8
8
  const Checkbox = require("../../../../components/Checkbox/Checkbox.vue.cjs");
9
9
  require("vue-i18n");
10
10
  const categories = require("../../store/categories.cjs");
11
- require("../../../marketplace/views/store/marketplace.cjs");
12
11
  ;/* empty css */
13
- const Field = require("../../../../components/Field/Field.vue.cjs");
12
+ const Field = require("../../../../components/Field/Field.vue2.cjs");
14
13
  const Filters = require("../../../globals/views/components/sections/Filters.vue2.cjs");
15
14
  const Calendar = require("../../../../components/Calendar/Calendar.vue2.cjs");
16
15
  const Popup = require("../../../../components/Popup/Popup.vue.cjs");
@@ -1 +1 @@
1
- {"version":3,"file":"Products.vue.cjs","sources":["../../../../../../../src/modules/products/components/pages/Products.vue"],"sourcesContent":["<template>\n <div class=\"pos-relative\">\n <header \n v-if=\"route.name !== 'Organization' && !MOBILE_APP\"\n class=\"pd-medium flex-v-center flex-nowrap flex\"\n >\n <h2 class=\"mn-r-medium\">{{ currentCategory ? currentCategory.name : 'All Products' }}</h2>\n <button \n v-if=\"route.params._id && hasAccess(route.params._id, 'products', 'create', auth.state.accesses, auth.state.access.roles)\"\n @click=\"$router.push({\n name: route.params?._id ? 'Organization_ProductAdd' : 'ProductAdd'\n })\" \n class=\"radius-100 i-big hover-scale-1 cursor-pointer t-white bg-second\">\n +\n </button>\n </header>\n\n <div class=\"cols-2-1_3 br-1px br-solid br-light z-index-3 pos-relative\">\n\n <div class=\"o-y-scroll br-r br-solid br-light pd-medium z-index-2 desktop-only h-100 pos-relative\">\n <div class=\"w-100 o-y-scroll h-100\">\n <!-- Категории -->\n <div class=\"mn-b-medium\" v-if=\"currentCategories.length > 0\">\n <h4 class=\"mn-b-medium\">\n {{ route.params.categoryPath ? 'Subcategories' : 'Categories' }}\n </h4>\n <div class=\"gap-micro\">\n <div\n v-for=\"category in currentCategories\"\n :key=\"category._id\"\n @click=\"selectCategory(category)\"\n class=\"cursor-pointer hover-t-underline mn-b-regular transition-all\"\n >\n {{ category.name }}\n <br>\n <span v-for=\"subcategory in category.children\">{{subcategory.name}}</span>\n </div>\n </div>\n </div>\n\n <!-- Фильтры категории -->\n <Spoiler \n v-for=\"filter in categoryFilters\"\n :key=\"filter.name\"\n class=\"o-hidden mn-b-medium\"\n :status=\"true\"\n >\n <template #header=\"{ isOpen }\">\n <div class=\"cursor-pointer w-100 flex-v-center flex-nowrap flex\">\n <h4 class=\"w-100\">{{ filter.name }}</h4>\n <div class=\"h-2r w-2r flex-child-auto aspect-1x1 flex-center flex bg-light radius-extra\">\n <IconChevronBottom :class=\"{ 'rotate-180 mn-t-micro-negative': isOpen }\" fill=\"rgb(var(--black))\" class=\"i-regular\"/>\n </div>\n </div>\n </template>\n\n <template #content>\n <div class=\"mn-t-small\">\n <Checkbox \n v-for=\"option in filter.options\"\n :key=\"option.text || option\"\n v-model:radio=\"selectedFilters[filter.name]\"\n :label=\"option.text || option\"\n :value=\"option.text || option\"\n mode=\"checkbox\"\n class=\"mn-b-micro\"\n />\n </div>\n </template>\n </Spoiler>\n \n <!-- Цена за сутки -->\n <Spoiler \n class=\"o-hidden mn-b-medium\"\n :status=\"true\"\n >\n <template #header=\"{ isOpen }\">\n <div class=\"cursor-pointer w-100 flex-v-center flex-nowrap flex\">\n <h4 class=\"w-100\"> Price</h4>\n <div class=\"h-2r w-2r flex-child-auto aspect-1x1 flex-center flex bg-light radius-extra\">\n <IconChevronBottom :class=\"{ 'rotate-180 mn-t-micro-negative': isOpen }\" fill=\"rgb(var(--black))\" class=\"i-regular\"/>\n </div>\n </div>\n </template>\n\n <template #content>\n <div class=\"mn-t-small flex gap-thin\">\n <Field\n v-model:field=\"selectedFilters.price.min\"\n placeholder=\"From\"\n type=\"number\"\n :label=\"returnCurrency()\"\n class=\"w-50 bg-light pd-small radius-small\"\n />\n <Field\n v-model:field=\"selectedFilters.price.max\"\n placeholder=\"To\"\n type=\"number\"\n :label=\"returnCurrency()\"\n class=\"w-50 bg-light pd-small radius-small\"\n />\n </div>\n </template>\n </Spoiler>\n\n <!-- Доступность -->\n <Spoiler \n class=\"o-hidden mn-b-medium\"\n :status=\"true\"\n >\n <template #header=\"{ isOpen }\">\n <div class=\"cursor-pointer w-100 flex-v-center flex-nowrap flex\">\n <h4 class=\"w-100\">Availability</h4>\n <div class=\"h-2r w-2r flex-child-auto aspect-1x1 flex-center flex bg-light radius-extra\">\n <IconChevronBottom :class=\"{ 'rotate-180 mn-t-micro-negative': isOpen }\" fill=\"rgb(var(--black))\" class=\"i-regular\"/>\n </div>\n </div>\n </template>\n\n <template #content>\n <div class=\"mn-t-small\">\n <div \n @click=\"() => { tempSelectedDates = selectedFilters.availability; showDatePickerPopup = true; }\"\n :class=\"{ 'bg-light': selectedFilters?.availability }\"\n class=\"pd-small field-wrapper radius-small bg-light cursor-pointer hover-bg-light transition-all flex-v-center flex gap-thin\"\n >\n <IconCalendar class=\"i-regular\" />\n <span class=\"h-1r\">{{ selectedFilters.availability ? `${formatDate(selectedFilters.availability.start, { dayMonth: true, language: 'en' })} - ${formatDate(selectedFilters.availability.end, { dayMonth: true, language: 'en' })}` : 'Select dates'}}</span>\n </div>\n </div>\n </template>\n </Spoiler>\n\n <!-- Кнопка очистки фильтров -->\n <button \n @click=\"clearAllFilters\"\n class=\"bg-main w-100 button mn-t-medium\"\n >\n Clear Filters\n </button>\n </div>\n </div>\n\n <div class=\"w-100 rows-1 pd-thin pos-relative o-hidden\">\n \n <slot></slot>\n\n <div class=\"mn-b-thin mobile-only w-100 o-y-scroll scroll-hide scroll-snap-type-x-mandatory scroll-pd-regular\">\n <div class=\"gap-thin flex-nowrap flex\">\n <div\n v-for=\"category in currentCategories\"\n :key=\"category._id\"\n @click=\"selectCategory(category)\"\n class=\" flex-child-default bg-light flex t-nowrap pd-medium radius-medium cursor-pointer hover-bg-light transition-all\"\n >\n {{ category.name }}\n </div>\n </div>\n </div>\n\n <Feed\n :search=\"true\"\n v-model:sort=\"products.state.sort\"\n :showLoadMore=\"false\"\n :states=\"{\n empty: {\n title: 'No Products Found',\n description: 'Currently, there are no products available.'\n }\n }\"\n :store=\"{\n read: (options) => products.actions.read(options),\n state: products.state\n }\"\n :options=\"{\n limit: 16,\n owner: route.name?.includes('Organization') ? route.params._id : null,\n lookup: ['variants','rents','inventory'],\n categories: route.params.categoryPath ? `/${route.params.categoryPath}` : null,\n filters: processedFilters,\n priceMin: selectedFilters.price?.min,\n priceMax: selectedFilters.price?.max,\n dateStart: selectedFilters.availability?.start,\n dateEnd: selectedFilters.availability?.end\n }\"\n v-slot=\"{ \n items \n }\"\n class=\"\"\n \n >\n <div class=\"mn-b-thin mobile-only\">\n <Filters\n v-model:filters=\"availableFilters\"\n v-model:selected=\"selectedFilters\"\n class=\"\"\n />\n </div>\n <div class=\"cols-4 z-index-1 pos-relative w-100 rows-1 gap-thin\">\n <router-link \n v-for=\"product in items\" \n :to=\"route.params._id ? { name: 'Organization_Product', params: { _id: route.params._id, product: product._id } } : { name: 'Product', params: { product: product._id } }\"\n class=\"pos-relative h-100 w-100\"\n >\n <CardProduct\n :key=\"product._id\"\n :product=\"product\"\n :user=\"auth.state.access\"\n :organization=\"route.params._id\"\n :access=\"hasAccess(route.params._id, 'products', 'edit', auth.state.accesses, auth.state.access.roles)\"\n class=\"pos-relative h-100 w-100 bg-light\"\n />\n </router-link>\n </div>\n </Feed>\n\n </div>\n </div>\n \n <!-- Date Picker Popup -->\n <Popup\n :isPopupOpen=\"showDatePickerPopup\"\n @close-popup=\"showDatePickerPopup = false\"\n class=\"pd-medium bg-white radius-medium\"\n style=\"min-width: 350px;\"\n >\n <h3 class=\"mn-b-medium\">Select Date Range</h3>\n \n <Calendar\n v-model:date=\"tempSelectedDates\"\n :allowRange=\"true\"\n :disablePastDates=\"true\"\n class=\"mn-b-medium radius-small bg-light\"\n />\n \n <div class=\"flex gap-small\">\n <button \n @click=\"showDatePickerPopup = false\"\n class=\"bg-light button flex-child-full\"\n >\n Cancel\n </button>\n <button \n @click=\"applyDateFilter\"\n class=\"bg-main button w-100 flex-child-full\"\n >\n Apply\n </button>\n \n </div>\n </Popup>\n</div>\n\n</template>\n\n\n<script setup=\"props\">\n // Import libs\n import { ref, computed, watch, onMounted, onUnmounted } from 'vue'\n import { useRoute, useRouter } from 'vue-router'\n\n // Import components\n import Tab from '@martyrs/src/components/Tab/Tab.vue'\n import Feed from '@martyrs/src/components/Feed/Feed.vue'\n\n import FilterProducts from '@martyrs/src/modules/products/components/sections/FilterProducts.vue'\n import BlockSearch from '@martyrs/src/modules/globals/views/components/blocks/BlockSearch.vue'\n import Filters from '@martyrs/src/modules/globals/views/components/sections/Filters.vue'\n import Spoiler from \"@martyrs/src/components/Spoiler/Spoiler.vue\"\n import Field from \"@martyrs/src/components/Field/Field.vue\"\n import Calendar from \"@martyrs/src/components/Calendar/Calendar.vue\"\n import Popup from \"@martyrs/src/components/Popup/Popup.vue\"\n import Checkbox from \"@martyrs/src/components/Checkbox/Checkbox.vue\"\n\n import CardProduct from '@martyrs/src/modules/products/components/blocks/CardProduct.vue'\n\n import IconPlus from '@martyrs/src/modules/icons/navigation/IconPlus.vue'\n import IconChevronBottom from '@martyrs/src/modules/icons/navigation/IconChevronBottom.vue'\n import IconCalendar from '@martyrs/src/modules/icons/entities/IconCalendar.vue'\n\n\n // Accessing router and store\n import * as auth from '@martyrs/src/modules/auth/views/store/auth.js';\n import * as globals from '@martyrs/src/modules/globals/views/store/globals.js';\n import * as products from '@martyrs/src/modules/products/store/products.js';\n import * as categories from '@martyrs/src/modules/products/store/categories.js';\n import { useGlobalMixins } from '@martyrs/src/modules/globals/views/mixins/mixins.js';\n\n const emits = defineEmits(['page-loading', 'page-loaded']);\n const route = useRoute()\n const router = useRouter()\n const { generateFilters, formatDate } = useGlobalMixins()\n\n // Категории и фильтры\n const currentCategories = ref([]);\n const currentCategory = ref(null);\n const categoryFilters = ref([]);\n // const selectedFilters = ref({});\n\n const availableFilters = ref([\n {\n title: 'Price',\n value: 'price',\n type: 'range',\n minPlaceholder: 'From',\n maxPlaceholder: 'To'\n },\n {\n title: 'Availability',\n value: 'availability',\n type: 'date'\n }\n ])\n\n const selectedFilters = ref({\n price: { min: '', max: '' },\n availability: null\n })\n\n const showDatePickerPopup = ref(false);\n const tempSelectedDates = ref(null);\n\n // Computed property for processed filters\n const processedFilters = computed(() => {\n const filters = [];\n \n // Обрабатываем фильтры категорий\n Object.entries(selectedFilters.value).forEach(([key, value]) => {\n if (key === 'price' || key === 'availability') return; // эти обрабатываются отдельно\n \n if (Array.isArray(value) && value.length > 0) {\n filters.push({\n parameter: key,\n values: value,\n caseSensitive: false\n });\n } else if (value && typeof value === 'string' && value.trim() !== '') {\n filters.push({\n parameter: key,\n values: [value],\n caseSensitive: false\n });\n }\n });\n \n return filters.length > 0 ? JSON.stringify(filters) : '';\n });\n\n\n\n\n const processedLookups = computed(() => {\n const lookups = ['variants'];\n if (selectedFilters.value.availability) {\n lookups.push('rents');\n }\n return lookups;\n });\n\n const loadCategoryData = async () => {\n const categoryPath = route.params.categoryPath;\n \n // Очищаем фильтры категории из предыдущей загрузки\n availableFilters.value = availableFilters.value.filter(f => f.value === 'price' || f.value === 'availability');\n \n try {\n if (categoryPath) {\n // Загружаем категорию и её прямых детей\n const result = await categories.actions.read({ \n url: `/${categoryPath}`,\n depth: 1,\n tree: false\n });\n \n if (result.length > 0) {\n currentCategory.value = result[0];\n currentCategories.value = result[0].children || [];\n categoryFilters.value = result[0].filters || [];\n \n // Добавляем фильтры категории в availableFilters\n (result[0].filters || []).forEach(filter => {\n availableFilters.value.push({\n title: filter.name,\n value: filter.name,\n type: 'checkbox',\n options: (filter.options || []).map(option => ({\n label: typeof option === 'string' ? option : option.text,\n value: typeof option === 'string' ? option : option.text\n }))\n });\n // Инициализируем массив для фильтра\n if (!selectedFilters.value[filter.name]) {\n selectedFilters.value[filter.name] = [];\n }\n });\n }\n } else {\n // Загружаем только корневые категории\n const result = await categories.actions.read({ \n root: true,\n tree: false\n });\n \n currentCategories.value = result;\n categoryFilters.value = [];\n }\n } catch (error) {\n console.error('Error loading categories:', error);\n currentCategories.value = [];\n categoryFilters.value = [];\n }\n };\n\n // Функция для выбора категории\n const selectCategory = (category) => {\n const categoryPath = category.url ? category.url.substring(1) : '';\n \n if (!categoryPath) {\n console.warn('No URL found for category:', category);\n return;\n }\n \n // Переходим к странице категории используя wildcard роут\n if (route.params._id) {\n router.push(`/organizations/${route.params._id}/products/categories/${categoryPath}`);\n } else {\n router.push(`/products/categories/${categoryPath}`);\n }\n };\n\n\n // Функция применения фильтра дат\n const applyDateFilter = () => {\n selectedFilters.value.availability = tempSelectedDates.value;\n showDatePickerPopup.value = false;\n };\n \n // Функция очистки всех фильтров\n const clearAllFilters = () => {\n selectedFilters.value.price = { min: '', max: '' };\n selectedFilters.value.availability = null;\n \n // Очищаем фильтры категорий\n categoryFilters.value.forEach(filter => {\n selectedFilters.value[filter.name] = [];\n });\n };\n\n if (route.params?._id) {\n globals.state.navigation_bar.actions = [{\n component: IconPlus,\n props: {\n fill: \"rgb(var(--main))\" \n },\n condition: () => auth.state.user && auth.state.user._id,\n action: () => route.params._id ? router.push({ name: 'Organization_ProductAdd', params: { _id: route.params._id} }) : router.push({ name: 'ProductAdd' })\n }];\n }\n\n onMounted(async () => {\n emits('page-loading');\n await loadCategoryData();\n emits('page-loaded');\n });\n\n onUnmounted(() => {\n globals.state.navigation_bar.actions = [];\n });\n\n</script>\n\n<style lang=\"scss\">\n\n\n</style>\n"],"names":["useRoute","useRouter","useGlobalMixins","ref","computed","categories.actions","globals.state","IconPlus","auth.state","onMounted","onUnmounted"],"mappings":"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"}
1
+ {"version":3,"file":"Products.vue.cjs","sources":["../../../../../../../src/modules/products/components/pages/Products.vue"],"sourcesContent":["<template>\n <div class=\"pos-relative\">\n <header \n v-if=\"route.name !== 'Organization' && !MOBILE_APP\"\n class=\"pd-medium flex-v-center flex-nowrap flex\"\n >\n <h2 class=\"mn-r-medium\">{{ currentCategory ? currentCategory.name : 'All Products' }}</h2>\n <button \n v-if=\"route.params._id && hasAccess(route.params._id, 'products', 'create', auth.state.accesses, auth.state.access.roles)\"\n @click=\"$router.push({\n name: route.params?._id ? 'Organization_ProductAdd' : 'ProductAdd'\n })\" \n class=\"radius-100 i-big hover-scale-1 cursor-pointer t-white bg-second\">\n +\n </button>\n </header>\n\n <div class=\"cols-2-1_3 br-1px br-solid br-light z-index-3 pos-relative\">\n\n <div class=\"o-y-scroll br-r br-solid br-light pd-medium z-index-2 desktop-only h-100 pos-relative\">\n <div class=\"w-100 o-y-scroll h-100\">\n <!-- Категории -->\n <div class=\"mn-b-medium\" v-if=\"currentCategories.length > 0\">\n <h4 class=\"mn-b-medium\">\n {{ route.params.categoryPath ? 'Subcategories' : 'Categories' }}\n </h4>\n <div class=\"gap-micro\">\n <div\n v-for=\"category in currentCategories\"\n :key=\"category._id\"\n @click=\"selectCategory(category)\"\n class=\"cursor-pointer hover-t-underline mn-b-regular transition-all\"\n >\n {{ category.name }}\n <br>\n <span v-for=\"subcategory in category.children\">{{subcategory.name}}</span>\n </div>\n </div>\n </div>\n\n <!-- Фильтры категории -->\n <Spoiler \n v-for=\"filter in categoryFilters\"\n :key=\"filter.name\"\n class=\"o-hidden mn-b-medium\"\n :status=\"true\"\n >\n <template #header=\"{ isOpen }\">\n <div class=\"cursor-pointer w-100 flex-v-center flex-nowrap flex\">\n <h4 class=\"w-100\">{{ filter.name }}</h4>\n <div class=\"h-2r w-2r flex-child-auto aspect-1x1 flex-center flex bg-light radius-extra\">\n <IconChevronBottom :class=\"{ 'rotate-180 mn-t-micro-negative': isOpen }\" fill=\"rgb(var(--black))\" class=\"i-regular\"/>\n </div>\n </div>\n </template>\n\n <template #content>\n <div class=\"mn-t-small\">\n <Checkbox \n v-for=\"option in filter.options\"\n :key=\"option.text || option\"\n v-model:radio=\"selectedFilters[filter.name]\"\n :label=\"option.text || option\"\n :value=\"option.text || option\"\n mode=\"checkbox\"\n class=\"mn-b-micro\"\n />\n </div>\n </template>\n </Spoiler>\n \n <!-- Цена за сутки -->\n <Spoiler \n class=\"o-hidden mn-b-medium\"\n :status=\"true\"\n >\n <template #header=\"{ isOpen }\">\n <div class=\"cursor-pointer w-100 flex-v-center flex-nowrap flex\">\n <h4 class=\"w-100\"> Price</h4>\n <div class=\"h-2r w-2r flex-child-auto aspect-1x1 flex-center flex bg-light radius-extra\">\n <IconChevronBottom :class=\"{ 'rotate-180 mn-t-micro-negative': isOpen }\" fill=\"rgb(var(--black))\" class=\"i-regular\"/>\n </div>\n </div>\n </template>\n\n <template #content>\n <div class=\"mn-t-small flex gap-thin\">\n <Field\n v-model:field=\"selectedFilters.price.min\"\n placeholder=\"From\"\n type=\"number\"\n :label=\"returnCurrency()\"\n class=\"w-50 bg-light pd-small radius-small\"\n />\n <Field\n v-model:field=\"selectedFilters.price.max\"\n placeholder=\"To\"\n type=\"number\"\n :label=\"returnCurrency()\"\n class=\"w-50 bg-light pd-small radius-small\"\n />\n </div>\n </template>\n </Spoiler>\n\n <!-- Доступность -->\n <Spoiler \n class=\"o-hidden mn-b-medium\"\n :status=\"true\"\n >\n <template #header=\"{ isOpen }\">\n <div class=\"cursor-pointer w-100 flex-v-center flex-nowrap flex\">\n <h4 class=\"w-100\">Availability</h4>\n <div class=\"h-2r w-2r flex-child-auto aspect-1x1 flex-center flex bg-light radius-extra\">\n <IconChevronBottom :class=\"{ 'rotate-180 mn-t-micro-negative': isOpen }\" fill=\"rgb(var(--black))\" class=\"i-regular\"/>\n </div>\n </div>\n </template>\n\n <template #content>\n <div class=\"mn-t-small\">\n <div \n @click=\"() => { tempSelectedDates = selectedFilters.availability; showDatePickerPopup = true; }\"\n :class=\"{ 'bg-light': selectedFilters?.availability }\"\n class=\"pd-small field-wrapper radius-small bg-light cursor-pointer hover-bg-light transition-all flex-v-center flex gap-thin\"\n >\n <IconCalendar class=\"i-regular\" />\n <span class=\"h-1r\">{{ selectedFilters.availability ? `${formatDate(selectedFilters.availability.start, { dayMonth: true, language: 'en' })} - ${formatDate(selectedFilters.availability.end, { dayMonth: true, language: 'en' })}` : 'Select dates'}}</span>\n </div>\n </div>\n </template>\n </Spoiler>\n\n <!-- Кнопка очистки фильтров -->\n <button \n @click=\"clearAllFilters\"\n class=\"bg-main w-100 button mn-t-medium\"\n >\n Clear Filters\n </button>\n </div>\n </div>\n\n <div class=\"w-100 rows-1 pd-thin pos-relative o-hidden\">\n \n <slot></slot>\n\n <div class=\"mn-b-thin mobile-only w-100 o-y-scroll scroll-hide scroll-snap-type-x-mandatory scroll-pd-regular\">\n <div class=\"gap-thin flex-nowrap flex\">\n <div\n v-for=\"category in currentCategories\"\n :key=\"category._id\"\n @click=\"selectCategory(category)\"\n class=\" flex-child-default bg-light flex t-nowrap pd-medium radius-medium cursor-pointer hover-bg-light transition-all\"\n >\n {{ category.name }}\n </div>\n </div>\n </div>\n\n <Feed\n :search=\"true\"\n v-model:sort=\"products.state.sort\"\n :showLoadMore=\"false\"\n :states=\"{\n empty: {\n title: 'No Products Found',\n description: 'Currently, there are no products available.'\n }\n }\"\n :store=\"{\n read: (options) => products.actions.read(options),\n state: products.state\n }\"\n :options=\"{\n limit: 16,\n owner: route.name?.includes('Organization') ? route.params._id : null,\n lookup: ['variants','rents','inventory'],\n categories: route.params.categoryPath ? `/${route.params.categoryPath}` : null,\n filters: processedFilters,\n priceMin: selectedFilters.price?.min,\n priceMax: selectedFilters.price?.max,\n dateStart: selectedFilters.availability?.start,\n dateEnd: selectedFilters.availability?.end\n }\"\n v-slot=\"{ \n items \n }\"\n class=\"\"\n \n >\n <div class=\"mn-b-thin mobile-only\">\n <Filters\n v-model:filters=\"availableFilters\"\n v-model:selected=\"selectedFilters\"\n class=\"\"\n />\n </div>\n <div class=\"cols-4 z-index-1 pos-relative w-100 rows-1 gap-thin\">\n <router-link \n v-for=\"product in items\" \n :to=\"route.params._id ? { name: 'Organization_Product', params: { _id: route.params._id, product: product._id } } : { name: 'Product', params: { product: product._id } }\"\n class=\"pos-relative h-100 w-100\"\n >\n <CardProduct\n :key=\"product._id\"\n :product=\"product\"\n :user=\"auth.state.access\"\n :organization=\"route.params._id\"\n :access=\"hasAccess(route.params._id, 'products', 'edit', auth.state.accesses, auth.state.access.roles)\"\n class=\"pos-relative h-100 w-100 bg-light\"\n />\n </router-link>\n </div>\n </Feed>\n\n </div>\n </div>\n \n <!-- Date Picker Popup -->\n <Popup\n :isPopupOpen=\"showDatePickerPopup\"\n @close-popup=\"showDatePickerPopup = false\"\n class=\"pd-medium bg-white radius-medium\"\n style=\"min-width: 350px;\"\n >\n <h3 class=\"mn-b-medium\">Select Date Range</h3>\n \n <Calendar\n v-model:date=\"tempSelectedDates\"\n :allowRange=\"true\"\n :disablePastDates=\"true\"\n class=\"mn-b-medium radius-small bg-light\"\n />\n \n <div class=\"flex gap-small\">\n <button \n @click=\"showDatePickerPopup = false\"\n class=\"bg-light button flex-child-full\"\n >\n Cancel\n </button>\n <button \n @click=\"applyDateFilter\"\n class=\"bg-main button w-100 flex-child-full\"\n >\n Apply\n </button>\n \n </div>\n </Popup>\n</div>\n\n</template>\n\n\n<script setup=\"props\">\n // Import libs\n import { ref, computed, watch, onMounted, onUnmounted } from 'vue'\n import { useRoute, useRouter } from 'vue-router'\n\n // Import components\n import Tab from '@martyrs/src/components/Tab/Tab.vue'\n import Feed from '@martyrs/src/components/Feed/Feed.vue'\n\n import FilterProducts from '@martyrs/src/modules/products/components/sections/FilterProducts.vue'\n import BlockSearch from '@martyrs/src/modules/globals/views/components/blocks/BlockSearch.vue'\n import Filters from '@martyrs/src/modules/globals/views/components/sections/Filters.vue'\n import Spoiler from \"@martyrs/src/components/Spoiler/Spoiler.vue\"\n import Field from \"@martyrs/src/components/Field/Field.vue\"\n import Calendar from \"@martyrs/src/components/Calendar/Calendar.vue\"\n import Popup from \"@martyrs/src/components/Popup/Popup.vue\"\n import Checkbox from \"@martyrs/src/components/Checkbox/Checkbox.vue\"\n\n import CardProduct from '@martyrs/src/modules/products/components/blocks/CardProduct.vue'\n\n import IconPlus from '@martyrs/src/modules/icons/navigation/IconPlus.vue'\n import IconChevronBottom from '@martyrs/src/modules/icons/navigation/IconChevronBottom.vue'\n import IconCalendar from '@martyrs/src/modules/icons/entities/IconCalendar.vue'\n\n\n // Accessing router and store\n import * as auth from '@martyrs/src/modules/auth/views/store/auth.js';\n import * as globals from '@martyrs/src/modules/globals/views/store/globals.js';\n import * as products from '@martyrs/src/modules/products/store/products.js';\n import * as categories from '@martyrs/src/modules/products/store/categories.js';\n import { useGlobalMixins } from '@martyrs/src/modules/globals/views/mixins/mixins.js';\n\n const emits = defineEmits(['page-loading', 'page-loaded']);\n const route = useRoute()\n const router = useRouter()\n const { generateFilters, formatDate } = useGlobalMixins()\n\n // Категории и фильтры\n const currentCategories = ref([]);\n const currentCategory = ref(null);\n const categoryFilters = ref([]);\n // const selectedFilters = ref({});\n\n const availableFilters = ref([\n {\n title: 'Price',\n value: 'price',\n type: 'range',\n minPlaceholder: 'From',\n maxPlaceholder: 'To'\n },\n {\n title: 'Availability',\n value: 'availability',\n type: 'date'\n }\n ])\n\n const selectedFilters = ref({\n price: { min: '', max: '' },\n availability: null\n })\n\n const showDatePickerPopup = ref(false);\n const tempSelectedDates = ref(null);\n\n // Computed property for processed filters\n const processedFilters = computed(() => {\n const filters = [];\n \n // Обрабатываем фильтры категорий\n Object.entries(selectedFilters.value).forEach(([key, value]) => {\n if (key === 'price' || key === 'availability') return; // эти обрабатываются отдельно\n \n if (Array.isArray(value) && value.length > 0) {\n filters.push({\n parameter: key,\n values: value,\n caseSensitive: false\n });\n } else if (value && typeof value === 'string' && value.trim() !== '') {\n filters.push({\n parameter: key,\n values: [value],\n caseSensitive: false\n });\n }\n });\n \n return filters.length > 0 ? JSON.stringify(filters) : '';\n });\n\n\n\n\n const processedLookups = computed(() => {\n const lookups = ['variants'];\n if (selectedFilters.value.availability) {\n lookups.push('rents');\n }\n return lookups;\n });\n\n const loadCategoryData = async () => {\n const categoryPath = route.params.categoryPath;\n \n // Очищаем фильтры категории из предыдущей загрузки\n availableFilters.value = availableFilters.value.filter(f => f.value === 'price' || f.value === 'availability');\n \n try {\n if (categoryPath) {\n // Загружаем категорию и её прямых детей\n const result = await categories.actions.read({ \n url: `/${categoryPath}`,\n depth: 1,\n tree: false\n });\n \n if (result.length > 0) {\n currentCategory.value = result[0];\n currentCategories.value = result[0].children || [];\n categoryFilters.value = result[0].filters || [];\n \n // Добавляем фильтры категории в availableFilters\n (result[0].filters || []).forEach(filter => {\n availableFilters.value.push({\n title: filter.name,\n value: filter.name,\n type: 'checkbox',\n options: (filter.options || []).map(option => ({\n label: typeof option === 'string' ? option : option.text,\n value: typeof option === 'string' ? option : option.text\n }))\n });\n // Инициализируем массив для фильтра\n if (!selectedFilters.value[filter.name]) {\n selectedFilters.value[filter.name] = [];\n }\n });\n }\n } else {\n // Загружаем только корневые категории\n const result = await categories.actions.read({ \n root: true,\n tree: false\n });\n \n currentCategories.value = result;\n categoryFilters.value = [];\n }\n } catch (error) {\n console.error('Error loading categories:', error);\n currentCategories.value = [];\n categoryFilters.value = [];\n }\n };\n\n // Функция для выбора категории\n const selectCategory = (category) => {\n const categoryPath = category.url ? category.url.substring(1) : '';\n \n if (!categoryPath) {\n console.warn('No URL found for category:', category);\n return;\n }\n \n // Переходим к странице категории используя wildcard роут\n if (route.params._id) {\n router.push(`/organizations/${route.params._id}/products/categories/${categoryPath}`);\n } else {\n router.push(`/products/categories/${categoryPath}`);\n }\n };\n\n\n // Функция применения фильтра дат\n const applyDateFilter = () => {\n selectedFilters.value.availability = tempSelectedDates.value;\n showDatePickerPopup.value = false;\n };\n \n // Функция очистки всех фильтров\n const clearAllFilters = () => {\n selectedFilters.value.price = { min: '', max: '' };\n selectedFilters.value.availability = null;\n \n // Очищаем фильтры категорий\n categoryFilters.value.forEach(filter => {\n selectedFilters.value[filter.name] = [];\n });\n };\n\n if (route.params?._id) {\n globals.state.navigation_bar.actions = [{\n component: IconPlus,\n props: {\n fill: \"rgb(var(--main))\" \n },\n condition: () => auth.state.user && auth.state.user._id,\n action: () => route.params._id ? router.push({ name: 'Organization_ProductAdd', params: { _id: route.params._id} }) : router.push({ name: 'ProductAdd' })\n }];\n }\n\n onMounted(async () => {\n emits('page-loading');\n await loadCategoryData();\n emits('page-loaded');\n });\n\n onUnmounted(() => {\n globals.state.navigation_bar.actions = [];\n });\n\n</script>\n\n<style lang=\"scss\">\n\n\n</style>\n"],"names":["useRoute","useRouter","useGlobalMixins","ref","computed","categories.actions","globals.state","IconPlus","auth.state","onMounted","onUnmounted"],"mappings":"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"}
@@ -1,14 +1,13 @@
1
1
  import { ref, computed, onMounted, onUnmounted, resolveComponent, createElementBlock, openBlock, createCommentVNode, createElementVNode, createVNode, unref, toDisplayString, Fragment, renderList, createTextVNode, createBlock, withCtx, normalizeClass, renderSlot } from "vue";
2
2
  import { useRoute, useRouter } from "vue-router";
3
3
  /* empty css */
4
- import _sfc_main$5 from "../../../../components/Feed/Feed.vue.js";
4
+ import _sfc_main$5 from "../../../../components/Feed/Feed.vue2.js";
5
5
  import _sfc_main$2 from "../../../../components/Spoiler/Spoiler.vue2.js";
6
6
  import _sfc_main$3 from "../../../../components/Checkbox/Checkbox.vue.js";
7
7
  import "vue-i18n";
8
8
  import { actions as actions$1 } from "../../store/categories.js";
9
- import "../../../marketplace/views/store/marketplace.js";
10
9
  /* empty css */
11
- import Field from "../../../../components/Field/Field.vue.js";
10
+ import Field from "../../../../components/Field/Field.vue2.js";
12
11
  import Filters from "../../../globals/views/components/sections/Filters.vue2.js";
13
12
  import Calendar from "../../../../components/Calendar/Calendar.vue2.js";
14
13
  import _sfc_main$7 from "../../../../components/Popup/Popup.vue.js";
@@ -1 +1 @@
1
- {"version":3,"file":"Products.vue.js","sources":["../../../../../../../src/modules/products/components/pages/Products.vue"],"sourcesContent":["<template>\n <div class=\"pos-relative\">\n <header \n v-if=\"route.name !== 'Organization' && !MOBILE_APP\"\n class=\"pd-medium flex-v-center flex-nowrap flex\"\n >\n <h2 class=\"mn-r-medium\">{{ currentCategory ? currentCategory.name : 'All Products' }}</h2>\n <button \n v-if=\"route.params._id && hasAccess(route.params._id, 'products', 'create', auth.state.accesses, auth.state.access.roles)\"\n @click=\"$router.push({\n name: route.params?._id ? 'Organization_ProductAdd' : 'ProductAdd'\n })\" \n class=\"radius-100 i-big hover-scale-1 cursor-pointer t-white bg-second\">\n +\n </button>\n </header>\n\n <div class=\"cols-2-1_3 br-1px br-solid br-light z-index-3 pos-relative\">\n\n <div class=\"o-y-scroll br-r br-solid br-light pd-medium z-index-2 desktop-only h-100 pos-relative\">\n <div class=\"w-100 o-y-scroll h-100\">\n <!-- Категории -->\n <div class=\"mn-b-medium\" v-if=\"currentCategories.length > 0\">\n <h4 class=\"mn-b-medium\">\n {{ route.params.categoryPath ? 'Subcategories' : 'Categories' }}\n </h4>\n <div class=\"gap-micro\">\n <div\n v-for=\"category in currentCategories\"\n :key=\"category._id\"\n @click=\"selectCategory(category)\"\n class=\"cursor-pointer hover-t-underline mn-b-regular transition-all\"\n >\n {{ category.name }}\n <br>\n <span v-for=\"subcategory in category.children\">{{subcategory.name}}</span>\n </div>\n </div>\n </div>\n\n <!-- Фильтры категории -->\n <Spoiler \n v-for=\"filter in categoryFilters\"\n :key=\"filter.name\"\n class=\"o-hidden mn-b-medium\"\n :status=\"true\"\n >\n <template #header=\"{ isOpen }\">\n <div class=\"cursor-pointer w-100 flex-v-center flex-nowrap flex\">\n <h4 class=\"w-100\">{{ filter.name }}</h4>\n <div class=\"h-2r w-2r flex-child-auto aspect-1x1 flex-center flex bg-light radius-extra\">\n <IconChevronBottom :class=\"{ 'rotate-180 mn-t-micro-negative': isOpen }\" fill=\"rgb(var(--black))\" class=\"i-regular\"/>\n </div>\n </div>\n </template>\n\n <template #content>\n <div class=\"mn-t-small\">\n <Checkbox \n v-for=\"option in filter.options\"\n :key=\"option.text || option\"\n v-model:radio=\"selectedFilters[filter.name]\"\n :label=\"option.text || option\"\n :value=\"option.text || option\"\n mode=\"checkbox\"\n class=\"mn-b-micro\"\n />\n </div>\n </template>\n </Spoiler>\n \n <!-- Цена за сутки -->\n <Spoiler \n class=\"o-hidden mn-b-medium\"\n :status=\"true\"\n >\n <template #header=\"{ isOpen }\">\n <div class=\"cursor-pointer w-100 flex-v-center flex-nowrap flex\">\n <h4 class=\"w-100\"> Price</h4>\n <div class=\"h-2r w-2r flex-child-auto aspect-1x1 flex-center flex bg-light radius-extra\">\n <IconChevronBottom :class=\"{ 'rotate-180 mn-t-micro-negative': isOpen }\" fill=\"rgb(var(--black))\" class=\"i-regular\"/>\n </div>\n </div>\n </template>\n\n <template #content>\n <div class=\"mn-t-small flex gap-thin\">\n <Field\n v-model:field=\"selectedFilters.price.min\"\n placeholder=\"From\"\n type=\"number\"\n :label=\"returnCurrency()\"\n class=\"w-50 bg-light pd-small radius-small\"\n />\n <Field\n v-model:field=\"selectedFilters.price.max\"\n placeholder=\"To\"\n type=\"number\"\n :label=\"returnCurrency()\"\n class=\"w-50 bg-light pd-small radius-small\"\n />\n </div>\n </template>\n </Spoiler>\n\n <!-- Доступность -->\n <Spoiler \n class=\"o-hidden mn-b-medium\"\n :status=\"true\"\n >\n <template #header=\"{ isOpen }\">\n <div class=\"cursor-pointer w-100 flex-v-center flex-nowrap flex\">\n <h4 class=\"w-100\">Availability</h4>\n <div class=\"h-2r w-2r flex-child-auto aspect-1x1 flex-center flex bg-light radius-extra\">\n <IconChevronBottom :class=\"{ 'rotate-180 mn-t-micro-negative': isOpen }\" fill=\"rgb(var(--black))\" class=\"i-regular\"/>\n </div>\n </div>\n </template>\n\n <template #content>\n <div class=\"mn-t-small\">\n <div \n @click=\"() => { tempSelectedDates = selectedFilters.availability; showDatePickerPopup = true; }\"\n :class=\"{ 'bg-light': selectedFilters?.availability }\"\n class=\"pd-small field-wrapper radius-small bg-light cursor-pointer hover-bg-light transition-all flex-v-center flex gap-thin\"\n >\n <IconCalendar class=\"i-regular\" />\n <span class=\"h-1r\">{{ selectedFilters.availability ? `${formatDate(selectedFilters.availability.start, { dayMonth: true, language: 'en' })} - ${formatDate(selectedFilters.availability.end, { dayMonth: true, language: 'en' })}` : 'Select dates'}}</span>\n </div>\n </div>\n </template>\n </Spoiler>\n\n <!-- Кнопка очистки фильтров -->\n <button \n @click=\"clearAllFilters\"\n class=\"bg-main w-100 button mn-t-medium\"\n >\n Clear Filters\n </button>\n </div>\n </div>\n\n <div class=\"w-100 rows-1 pd-thin pos-relative o-hidden\">\n \n <slot></slot>\n\n <div class=\"mn-b-thin mobile-only w-100 o-y-scroll scroll-hide scroll-snap-type-x-mandatory scroll-pd-regular\">\n <div class=\"gap-thin flex-nowrap flex\">\n <div\n v-for=\"category in currentCategories\"\n :key=\"category._id\"\n @click=\"selectCategory(category)\"\n class=\" flex-child-default bg-light flex t-nowrap pd-medium radius-medium cursor-pointer hover-bg-light transition-all\"\n >\n {{ category.name }}\n </div>\n </div>\n </div>\n\n <Feed\n :search=\"true\"\n v-model:sort=\"products.state.sort\"\n :showLoadMore=\"false\"\n :states=\"{\n empty: {\n title: 'No Products Found',\n description: 'Currently, there are no products available.'\n }\n }\"\n :store=\"{\n read: (options) => products.actions.read(options),\n state: products.state\n }\"\n :options=\"{\n limit: 16,\n owner: route.name?.includes('Organization') ? route.params._id : null,\n lookup: ['variants','rents','inventory'],\n categories: route.params.categoryPath ? `/${route.params.categoryPath}` : null,\n filters: processedFilters,\n priceMin: selectedFilters.price?.min,\n priceMax: selectedFilters.price?.max,\n dateStart: selectedFilters.availability?.start,\n dateEnd: selectedFilters.availability?.end\n }\"\n v-slot=\"{ \n items \n }\"\n class=\"\"\n \n >\n <div class=\"mn-b-thin mobile-only\">\n <Filters\n v-model:filters=\"availableFilters\"\n v-model:selected=\"selectedFilters\"\n class=\"\"\n />\n </div>\n <div class=\"cols-4 z-index-1 pos-relative w-100 rows-1 gap-thin\">\n <router-link \n v-for=\"product in items\" \n :to=\"route.params._id ? { name: 'Organization_Product', params: { _id: route.params._id, product: product._id } } : { name: 'Product', params: { product: product._id } }\"\n class=\"pos-relative h-100 w-100\"\n >\n <CardProduct\n :key=\"product._id\"\n :product=\"product\"\n :user=\"auth.state.access\"\n :organization=\"route.params._id\"\n :access=\"hasAccess(route.params._id, 'products', 'edit', auth.state.accesses, auth.state.access.roles)\"\n class=\"pos-relative h-100 w-100 bg-light\"\n />\n </router-link>\n </div>\n </Feed>\n\n </div>\n </div>\n \n <!-- Date Picker Popup -->\n <Popup\n :isPopupOpen=\"showDatePickerPopup\"\n @close-popup=\"showDatePickerPopup = false\"\n class=\"pd-medium bg-white radius-medium\"\n style=\"min-width: 350px;\"\n >\n <h3 class=\"mn-b-medium\">Select Date Range</h3>\n \n <Calendar\n v-model:date=\"tempSelectedDates\"\n :allowRange=\"true\"\n :disablePastDates=\"true\"\n class=\"mn-b-medium radius-small bg-light\"\n />\n \n <div class=\"flex gap-small\">\n <button \n @click=\"showDatePickerPopup = false\"\n class=\"bg-light button flex-child-full\"\n >\n Cancel\n </button>\n <button \n @click=\"applyDateFilter\"\n class=\"bg-main button w-100 flex-child-full\"\n >\n Apply\n </button>\n \n </div>\n </Popup>\n</div>\n\n</template>\n\n\n<script setup=\"props\">\n // Import libs\n import { ref, computed, watch, onMounted, onUnmounted } from 'vue'\n import { useRoute, useRouter } from 'vue-router'\n\n // Import components\n import Tab from '@martyrs/src/components/Tab/Tab.vue'\n import Feed from '@martyrs/src/components/Feed/Feed.vue'\n\n import FilterProducts from '@martyrs/src/modules/products/components/sections/FilterProducts.vue'\n import BlockSearch from '@martyrs/src/modules/globals/views/components/blocks/BlockSearch.vue'\n import Filters from '@martyrs/src/modules/globals/views/components/sections/Filters.vue'\n import Spoiler from \"@martyrs/src/components/Spoiler/Spoiler.vue\"\n import Field from \"@martyrs/src/components/Field/Field.vue\"\n import Calendar from \"@martyrs/src/components/Calendar/Calendar.vue\"\n import Popup from \"@martyrs/src/components/Popup/Popup.vue\"\n import Checkbox from \"@martyrs/src/components/Checkbox/Checkbox.vue\"\n\n import CardProduct from '@martyrs/src/modules/products/components/blocks/CardProduct.vue'\n\n import IconPlus from '@martyrs/src/modules/icons/navigation/IconPlus.vue'\n import IconChevronBottom from '@martyrs/src/modules/icons/navigation/IconChevronBottom.vue'\n import IconCalendar from '@martyrs/src/modules/icons/entities/IconCalendar.vue'\n\n\n // Accessing router and store\n import * as auth from '@martyrs/src/modules/auth/views/store/auth.js';\n import * as globals from '@martyrs/src/modules/globals/views/store/globals.js';\n import * as products from '@martyrs/src/modules/products/store/products.js';\n import * as categories from '@martyrs/src/modules/products/store/categories.js';\n import { useGlobalMixins } from '@martyrs/src/modules/globals/views/mixins/mixins.js';\n\n const emits = defineEmits(['page-loading', 'page-loaded']);\n const route = useRoute()\n const router = useRouter()\n const { generateFilters, formatDate } = useGlobalMixins()\n\n // Категории и фильтры\n const currentCategories = ref([]);\n const currentCategory = ref(null);\n const categoryFilters = ref([]);\n // const selectedFilters = ref({});\n\n const availableFilters = ref([\n {\n title: 'Price',\n value: 'price',\n type: 'range',\n minPlaceholder: 'From',\n maxPlaceholder: 'To'\n },\n {\n title: 'Availability',\n value: 'availability',\n type: 'date'\n }\n ])\n\n const selectedFilters = ref({\n price: { min: '', max: '' },\n availability: null\n })\n\n const showDatePickerPopup = ref(false);\n const tempSelectedDates = ref(null);\n\n // Computed property for processed filters\n const processedFilters = computed(() => {\n const filters = [];\n \n // Обрабатываем фильтры категорий\n Object.entries(selectedFilters.value).forEach(([key, value]) => {\n if (key === 'price' || key === 'availability') return; // эти обрабатываются отдельно\n \n if (Array.isArray(value) && value.length > 0) {\n filters.push({\n parameter: key,\n values: value,\n caseSensitive: false\n });\n } else if (value && typeof value === 'string' && value.trim() !== '') {\n filters.push({\n parameter: key,\n values: [value],\n caseSensitive: false\n });\n }\n });\n \n return filters.length > 0 ? JSON.stringify(filters) : '';\n });\n\n\n\n\n const processedLookups = computed(() => {\n const lookups = ['variants'];\n if (selectedFilters.value.availability) {\n lookups.push('rents');\n }\n return lookups;\n });\n\n const loadCategoryData = async () => {\n const categoryPath = route.params.categoryPath;\n \n // Очищаем фильтры категории из предыдущей загрузки\n availableFilters.value = availableFilters.value.filter(f => f.value === 'price' || f.value === 'availability');\n \n try {\n if (categoryPath) {\n // Загружаем категорию и её прямых детей\n const result = await categories.actions.read({ \n url: `/${categoryPath}`,\n depth: 1,\n tree: false\n });\n \n if (result.length > 0) {\n currentCategory.value = result[0];\n currentCategories.value = result[0].children || [];\n categoryFilters.value = result[0].filters || [];\n \n // Добавляем фильтры категории в availableFilters\n (result[0].filters || []).forEach(filter => {\n availableFilters.value.push({\n title: filter.name,\n value: filter.name,\n type: 'checkbox',\n options: (filter.options || []).map(option => ({\n label: typeof option === 'string' ? option : option.text,\n value: typeof option === 'string' ? option : option.text\n }))\n });\n // Инициализируем массив для фильтра\n if (!selectedFilters.value[filter.name]) {\n selectedFilters.value[filter.name] = [];\n }\n });\n }\n } else {\n // Загружаем только корневые категории\n const result = await categories.actions.read({ \n root: true,\n tree: false\n });\n \n currentCategories.value = result;\n categoryFilters.value = [];\n }\n } catch (error) {\n console.error('Error loading categories:', error);\n currentCategories.value = [];\n categoryFilters.value = [];\n }\n };\n\n // Функция для выбора категории\n const selectCategory = (category) => {\n const categoryPath = category.url ? category.url.substring(1) : '';\n \n if (!categoryPath) {\n console.warn('No URL found for category:', category);\n return;\n }\n \n // Переходим к странице категории используя wildcard роут\n if (route.params._id) {\n router.push(`/organizations/${route.params._id}/products/categories/${categoryPath}`);\n } else {\n router.push(`/products/categories/${categoryPath}`);\n }\n };\n\n\n // Функция применения фильтра дат\n const applyDateFilter = () => {\n selectedFilters.value.availability = tempSelectedDates.value;\n showDatePickerPopup.value = false;\n };\n \n // Функция очистки всех фильтров\n const clearAllFilters = () => {\n selectedFilters.value.price = { min: '', max: '' };\n selectedFilters.value.availability = null;\n \n // Очищаем фильтры категорий\n categoryFilters.value.forEach(filter => {\n selectedFilters.value[filter.name] = [];\n });\n };\n\n if (route.params?._id) {\n globals.state.navigation_bar.actions = [{\n component: IconPlus,\n props: {\n fill: \"rgb(var(--main))\" \n },\n condition: () => auth.state.user && auth.state.user._id,\n action: () => route.params._id ? router.push({ name: 'Organization_ProductAdd', params: { _id: route.params._id} }) : router.push({ name: 'ProductAdd' })\n }];\n }\n\n onMounted(async () => {\n emits('page-loading');\n await loadCategoryData();\n emits('page-loaded');\n });\n\n onUnmounted(() => {\n globals.state.navigation_bar.actions = [];\n });\n\n</script>\n\n<style lang=\"scss\">\n\n\n</style>\n"],"names":["categories.actions","globals.state","IconPlus","auth.state"],"mappings":"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"}
1
+ {"version":3,"file":"Products.vue.js","sources":["../../../../../../../src/modules/products/components/pages/Products.vue"],"sourcesContent":["<template>\n <div class=\"pos-relative\">\n <header \n v-if=\"route.name !== 'Organization' && !MOBILE_APP\"\n class=\"pd-medium flex-v-center flex-nowrap flex\"\n >\n <h2 class=\"mn-r-medium\">{{ currentCategory ? currentCategory.name : 'All Products' }}</h2>\n <button \n v-if=\"route.params._id && hasAccess(route.params._id, 'products', 'create', auth.state.accesses, auth.state.access.roles)\"\n @click=\"$router.push({\n name: route.params?._id ? 'Organization_ProductAdd' : 'ProductAdd'\n })\" \n class=\"radius-100 i-big hover-scale-1 cursor-pointer t-white bg-second\">\n +\n </button>\n </header>\n\n <div class=\"cols-2-1_3 br-1px br-solid br-light z-index-3 pos-relative\">\n\n <div class=\"o-y-scroll br-r br-solid br-light pd-medium z-index-2 desktop-only h-100 pos-relative\">\n <div class=\"w-100 o-y-scroll h-100\">\n <!-- Категории -->\n <div class=\"mn-b-medium\" v-if=\"currentCategories.length > 0\">\n <h4 class=\"mn-b-medium\">\n {{ route.params.categoryPath ? 'Subcategories' : 'Categories' }}\n </h4>\n <div class=\"gap-micro\">\n <div\n v-for=\"category in currentCategories\"\n :key=\"category._id\"\n @click=\"selectCategory(category)\"\n class=\"cursor-pointer hover-t-underline mn-b-regular transition-all\"\n >\n {{ category.name }}\n <br>\n <span v-for=\"subcategory in category.children\">{{subcategory.name}}</span>\n </div>\n </div>\n </div>\n\n <!-- Фильтры категории -->\n <Spoiler \n v-for=\"filter in categoryFilters\"\n :key=\"filter.name\"\n class=\"o-hidden mn-b-medium\"\n :status=\"true\"\n >\n <template #header=\"{ isOpen }\">\n <div class=\"cursor-pointer w-100 flex-v-center flex-nowrap flex\">\n <h4 class=\"w-100\">{{ filter.name }}</h4>\n <div class=\"h-2r w-2r flex-child-auto aspect-1x1 flex-center flex bg-light radius-extra\">\n <IconChevronBottom :class=\"{ 'rotate-180 mn-t-micro-negative': isOpen }\" fill=\"rgb(var(--black))\" class=\"i-regular\"/>\n </div>\n </div>\n </template>\n\n <template #content>\n <div class=\"mn-t-small\">\n <Checkbox \n v-for=\"option in filter.options\"\n :key=\"option.text || option\"\n v-model:radio=\"selectedFilters[filter.name]\"\n :label=\"option.text || option\"\n :value=\"option.text || option\"\n mode=\"checkbox\"\n class=\"mn-b-micro\"\n />\n </div>\n </template>\n </Spoiler>\n \n <!-- Цена за сутки -->\n <Spoiler \n class=\"o-hidden mn-b-medium\"\n :status=\"true\"\n >\n <template #header=\"{ isOpen }\">\n <div class=\"cursor-pointer w-100 flex-v-center flex-nowrap flex\">\n <h4 class=\"w-100\"> Price</h4>\n <div class=\"h-2r w-2r flex-child-auto aspect-1x1 flex-center flex bg-light radius-extra\">\n <IconChevronBottom :class=\"{ 'rotate-180 mn-t-micro-negative': isOpen }\" fill=\"rgb(var(--black))\" class=\"i-regular\"/>\n </div>\n </div>\n </template>\n\n <template #content>\n <div class=\"mn-t-small flex gap-thin\">\n <Field\n v-model:field=\"selectedFilters.price.min\"\n placeholder=\"From\"\n type=\"number\"\n :label=\"returnCurrency()\"\n class=\"w-50 bg-light pd-small radius-small\"\n />\n <Field\n v-model:field=\"selectedFilters.price.max\"\n placeholder=\"To\"\n type=\"number\"\n :label=\"returnCurrency()\"\n class=\"w-50 bg-light pd-small radius-small\"\n />\n </div>\n </template>\n </Spoiler>\n\n <!-- Доступность -->\n <Spoiler \n class=\"o-hidden mn-b-medium\"\n :status=\"true\"\n >\n <template #header=\"{ isOpen }\">\n <div class=\"cursor-pointer w-100 flex-v-center flex-nowrap flex\">\n <h4 class=\"w-100\">Availability</h4>\n <div class=\"h-2r w-2r flex-child-auto aspect-1x1 flex-center flex bg-light radius-extra\">\n <IconChevronBottom :class=\"{ 'rotate-180 mn-t-micro-negative': isOpen }\" fill=\"rgb(var(--black))\" class=\"i-regular\"/>\n </div>\n </div>\n </template>\n\n <template #content>\n <div class=\"mn-t-small\">\n <div \n @click=\"() => { tempSelectedDates = selectedFilters.availability; showDatePickerPopup = true; }\"\n :class=\"{ 'bg-light': selectedFilters?.availability }\"\n class=\"pd-small field-wrapper radius-small bg-light cursor-pointer hover-bg-light transition-all flex-v-center flex gap-thin\"\n >\n <IconCalendar class=\"i-regular\" />\n <span class=\"h-1r\">{{ selectedFilters.availability ? `${formatDate(selectedFilters.availability.start, { dayMonth: true, language: 'en' })} - ${formatDate(selectedFilters.availability.end, { dayMonth: true, language: 'en' })}` : 'Select dates'}}</span>\n </div>\n </div>\n </template>\n </Spoiler>\n\n <!-- Кнопка очистки фильтров -->\n <button \n @click=\"clearAllFilters\"\n class=\"bg-main w-100 button mn-t-medium\"\n >\n Clear Filters\n </button>\n </div>\n </div>\n\n <div class=\"w-100 rows-1 pd-thin pos-relative o-hidden\">\n \n <slot></slot>\n\n <div class=\"mn-b-thin mobile-only w-100 o-y-scroll scroll-hide scroll-snap-type-x-mandatory scroll-pd-regular\">\n <div class=\"gap-thin flex-nowrap flex\">\n <div\n v-for=\"category in currentCategories\"\n :key=\"category._id\"\n @click=\"selectCategory(category)\"\n class=\" flex-child-default bg-light flex t-nowrap pd-medium radius-medium cursor-pointer hover-bg-light transition-all\"\n >\n {{ category.name }}\n </div>\n </div>\n </div>\n\n <Feed\n :search=\"true\"\n v-model:sort=\"products.state.sort\"\n :showLoadMore=\"false\"\n :states=\"{\n empty: {\n title: 'No Products Found',\n description: 'Currently, there are no products available.'\n }\n }\"\n :store=\"{\n read: (options) => products.actions.read(options),\n state: products.state\n }\"\n :options=\"{\n limit: 16,\n owner: route.name?.includes('Organization') ? route.params._id : null,\n lookup: ['variants','rents','inventory'],\n categories: route.params.categoryPath ? `/${route.params.categoryPath}` : null,\n filters: processedFilters,\n priceMin: selectedFilters.price?.min,\n priceMax: selectedFilters.price?.max,\n dateStart: selectedFilters.availability?.start,\n dateEnd: selectedFilters.availability?.end\n }\"\n v-slot=\"{ \n items \n }\"\n class=\"\"\n \n >\n <div class=\"mn-b-thin mobile-only\">\n <Filters\n v-model:filters=\"availableFilters\"\n v-model:selected=\"selectedFilters\"\n class=\"\"\n />\n </div>\n <div class=\"cols-4 z-index-1 pos-relative w-100 rows-1 gap-thin\">\n <router-link \n v-for=\"product in items\" \n :to=\"route.params._id ? { name: 'Organization_Product', params: { _id: route.params._id, product: product._id } } : { name: 'Product', params: { product: product._id } }\"\n class=\"pos-relative h-100 w-100\"\n >\n <CardProduct\n :key=\"product._id\"\n :product=\"product\"\n :user=\"auth.state.access\"\n :organization=\"route.params._id\"\n :access=\"hasAccess(route.params._id, 'products', 'edit', auth.state.accesses, auth.state.access.roles)\"\n class=\"pos-relative h-100 w-100 bg-light\"\n />\n </router-link>\n </div>\n </Feed>\n\n </div>\n </div>\n \n <!-- Date Picker Popup -->\n <Popup\n :isPopupOpen=\"showDatePickerPopup\"\n @close-popup=\"showDatePickerPopup = false\"\n class=\"pd-medium bg-white radius-medium\"\n style=\"min-width: 350px;\"\n >\n <h3 class=\"mn-b-medium\">Select Date Range</h3>\n \n <Calendar\n v-model:date=\"tempSelectedDates\"\n :allowRange=\"true\"\n :disablePastDates=\"true\"\n class=\"mn-b-medium radius-small bg-light\"\n />\n \n <div class=\"flex gap-small\">\n <button \n @click=\"showDatePickerPopup = false\"\n class=\"bg-light button flex-child-full\"\n >\n Cancel\n </button>\n <button \n @click=\"applyDateFilter\"\n class=\"bg-main button w-100 flex-child-full\"\n >\n Apply\n </button>\n \n </div>\n </Popup>\n</div>\n\n</template>\n\n\n<script setup=\"props\">\n // Import libs\n import { ref, computed, watch, onMounted, onUnmounted } from 'vue'\n import { useRoute, useRouter } from 'vue-router'\n\n // Import components\n import Tab from '@martyrs/src/components/Tab/Tab.vue'\n import Feed from '@martyrs/src/components/Feed/Feed.vue'\n\n import FilterProducts from '@martyrs/src/modules/products/components/sections/FilterProducts.vue'\n import BlockSearch from '@martyrs/src/modules/globals/views/components/blocks/BlockSearch.vue'\n import Filters from '@martyrs/src/modules/globals/views/components/sections/Filters.vue'\n import Spoiler from \"@martyrs/src/components/Spoiler/Spoiler.vue\"\n import Field from \"@martyrs/src/components/Field/Field.vue\"\n import Calendar from \"@martyrs/src/components/Calendar/Calendar.vue\"\n import Popup from \"@martyrs/src/components/Popup/Popup.vue\"\n import Checkbox from \"@martyrs/src/components/Checkbox/Checkbox.vue\"\n\n import CardProduct from '@martyrs/src/modules/products/components/blocks/CardProduct.vue'\n\n import IconPlus from '@martyrs/src/modules/icons/navigation/IconPlus.vue'\n import IconChevronBottom from '@martyrs/src/modules/icons/navigation/IconChevronBottom.vue'\n import IconCalendar from '@martyrs/src/modules/icons/entities/IconCalendar.vue'\n\n\n // Accessing router and store\n import * as auth from '@martyrs/src/modules/auth/views/store/auth.js';\n import * as globals from '@martyrs/src/modules/globals/views/store/globals.js';\n import * as products from '@martyrs/src/modules/products/store/products.js';\n import * as categories from '@martyrs/src/modules/products/store/categories.js';\n import { useGlobalMixins } from '@martyrs/src/modules/globals/views/mixins/mixins.js';\n\n const emits = defineEmits(['page-loading', 'page-loaded']);\n const route = useRoute()\n const router = useRouter()\n const { generateFilters, formatDate } = useGlobalMixins()\n\n // Категории и фильтры\n const currentCategories = ref([]);\n const currentCategory = ref(null);\n const categoryFilters = ref([]);\n // const selectedFilters = ref({});\n\n const availableFilters = ref([\n {\n title: 'Price',\n value: 'price',\n type: 'range',\n minPlaceholder: 'From',\n maxPlaceholder: 'To'\n },\n {\n title: 'Availability',\n value: 'availability',\n type: 'date'\n }\n ])\n\n const selectedFilters = ref({\n price: { min: '', max: '' },\n availability: null\n })\n\n const showDatePickerPopup = ref(false);\n const tempSelectedDates = ref(null);\n\n // Computed property for processed filters\n const processedFilters = computed(() => {\n const filters = [];\n \n // Обрабатываем фильтры категорий\n Object.entries(selectedFilters.value).forEach(([key, value]) => {\n if (key === 'price' || key === 'availability') return; // эти обрабатываются отдельно\n \n if (Array.isArray(value) && value.length > 0) {\n filters.push({\n parameter: key,\n values: value,\n caseSensitive: false\n });\n } else if (value && typeof value === 'string' && value.trim() !== '') {\n filters.push({\n parameter: key,\n values: [value],\n caseSensitive: false\n });\n }\n });\n \n return filters.length > 0 ? JSON.stringify(filters) : '';\n });\n\n\n\n\n const processedLookups = computed(() => {\n const lookups = ['variants'];\n if (selectedFilters.value.availability) {\n lookups.push('rents');\n }\n return lookups;\n });\n\n const loadCategoryData = async () => {\n const categoryPath = route.params.categoryPath;\n \n // Очищаем фильтры категории из предыдущей загрузки\n availableFilters.value = availableFilters.value.filter(f => f.value === 'price' || f.value === 'availability');\n \n try {\n if (categoryPath) {\n // Загружаем категорию и её прямых детей\n const result = await categories.actions.read({ \n url: `/${categoryPath}`,\n depth: 1,\n tree: false\n });\n \n if (result.length > 0) {\n currentCategory.value = result[0];\n currentCategories.value = result[0].children || [];\n categoryFilters.value = result[0].filters || [];\n \n // Добавляем фильтры категории в availableFilters\n (result[0].filters || []).forEach(filter => {\n availableFilters.value.push({\n title: filter.name,\n value: filter.name,\n type: 'checkbox',\n options: (filter.options || []).map(option => ({\n label: typeof option === 'string' ? option : option.text,\n value: typeof option === 'string' ? option : option.text\n }))\n });\n // Инициализируем массив для фильтра\n if (!selectedFilters.value[filter.name]) {\n selectedFilters.value[filter.name] = [];\n }\n });\n }\n } else {\n // Загружаем только корневые категории\n const result = await categories.actions.read({ \n root: true,\n tree: false\n });\n \n currentCategories.value = result;\n categoryFilters.value = [];\n }\n } catch (error) {\n console.error('Error loading categories:', error);\n currentCategories.value = [];\n categoryFilters.value = [];\n }\n };\n\n // Функция для выбора категории\n const selectCategory = (category) => {\n const categoryPath = category.url ? category.url.substring(1) : '';\n \n if (!categoryPath) {\n console.warn('No URL found for category:', category);\n return;\n }\n \n // Переходим к странице категории используя wildcard роут\n if (route.params._id) {\n router.push(`/organizations/${route.params._id}/products/categories/${categoryPath}`);\n } else {\n router.push(`/products/categories/${categoryPath}`);\n }\n };\n\n\n // Функция применения фильтра дат\n const applyDateFilter = () => {\n selectedFilters.value.availability = tempSelectedDates.value;\n showDatePickerPopup.value = false;\n };\n \n // Функция очистки всех фильтров\n const clearAllFilters = () => {\n selectedFilters.value.price = { min: '', max: '' };\n selectedFilters.value.availability = null;\n \n // Очищаем фильтры категорий\n categoryFilters.value.forEach(filter => {\n selectedFilters.value[filter.name] = [];\n });\n };\n\n if (route.params?._id) {\n globals.state.navigation_bar.actions = [{\n component: IconPlus,\n props: {\n fill: \"rgb(var(--main))\" \n },\n condition: () => auth.state.user && auth.state.user._id,\n action: () => route.params._id ? router.push({ name: 'Organization_ProductAdd', params: { _id: route.params._id} }) : router.push({ name: 'ProductAdd' })\n }];\n }\n\n onMounted(async () => {\n emits('page-loading');\n await loadCategoryData();\n emits('page-loaded');\n });\n\n onUnmounted(() => {\n globals.state.navigation_bar.actions = [];\n });\n\n</script>\n\n<style lang=\"scss\">\n\n\n</style>\n"],"names":["categories.actions","globals.state","IconPlus","auth.state"],"mappings":"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"}
@@ -2,7 +2,7 @@
2
2
  Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
3
  const vue = require("vue");
4
4
  const Block = require("../../../../components/Block/Block.vue.cjs");
5
- const Field = require("../../../../components/Field/Field.vue.cjs");
5
+ const Field = require("../../../../components/Field/Field.vue2.cjs");
6
6
  const Button = require("../../../../components/Button/Button.vue.cjs");
7
7
  const Popup = require("../../../../components/Popup/Popup.vue.cjs");
8
8
  const IconEdit = require("../../../icons/navigation/IconEdit.vue.cjs");
@@ -1,6 +1,6 @@
1
1
  import { useModel, ref, reactive, createElementBlock, openBlock, Fragment, createVNode, withCtx, createCommentVNode, renderList, createElementVNode, toDisplayString, createTextVNode } from "vue";
2
2
  import _sfc_main$1 from "../../../../components/Block/Block.vue.js";
3
- import Field from "../../../../components/Field/Field.vue.js";
3
+ import Field from "../../../../components/Field/Field.vue2.js";
4
4
  import _sfc_main$5 from "../../../../components/Button/Button.vue.js";
5
5
  import _sfc_main$4 from "../../../../components/Popup/Popup.vue.js";
6
6
  import _sfc_main$2 from "../../../icons/navigation/IconEdit.vue.js";
@@ -2,10 +2,10 @@
2
2
  Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
3
  const vue = require("vue");
4
4
  const Block = require("../../../../components/Block/Block.vue.cjs");
5
- const Field = require("../../../../components/Field/Field.vue.cjs");
5
+ const Field = require("../../../../components/Field/Field.vue2.cjs");
6
6
  const Button = require("../../../../components/Button/Button.vue.cjs");
7
7
  const Popup = require("../../../../components/Popup/Popup.vue.cjs");
8
- const Select = require("../../../../components/Select/Select.vue2.cjs");
8
+ const Select = require("../../../../components/Select/Select.vue.cjs");
9
9
  const IconEdit = require("../../../icons/navigation/IconEdit.vue.cjs");
10
10
  const IconDelete = require("../../../icons/navigation/IconDelete.vue.cjs");
11
11
  const _hoisted_1 = {
@@ -1,9 +1,9 @@
1
1
  import { useModel, ref, reactive, createElementBlock, openBlock, Fragment, createVNode, withCtx, createCommentVNode, renderList, createElementVNode, toDisplayString, createTextVNode } from "vue";
2
2
  import _sfc_main$1 from "../../../../components/Block/Block.vue.js";
3
- import Field from "../../../../components/Field/Field.vue.js";
3
+ import Field from "../../../../components/Field/Field.vue2.js";
4
4
  import _sfc_main$5 from "../../../../components/Button/Button.vue.js";
5
5
  import _sfc_main$4 from "../../../../components/Popup/Popup.vue.js";
6
- import Select from "../../../../components/Select/Select.vue2.js";
6
+ import Select from "../../../../components/Select/Select.vue.js";
7
7
  import _sfc_main$2 from "../../../icons/navigation/IconEdit.vue.js";
8
8
  import _sfc_main$3 from "../../../icons/navigation/IconDelete.vue.js";
9
9
  const _hoisted_1 = {
@@ -4,9 +4,8 @@ const vue = require("vue");
4
4
  const vueRouter = require("vue-router");
5
5
  const Block = require("../../../../components/Block/Block.vue.cjs");
6
6
  const Popup = require("../../../../components/Popup/Popup.vue.cjs");
7
- const Feed = require("../../../../components/Feed/Feed.vue.cjs");
7
+ const Feed = require("../../../../components/Feed/Feed.vue2.cjs");
8
8
  const globals = require("../../../globals/views/store/globals.cjs");
9
- require("../../../auth/views/store/auth.cjs");
10
9
  const products = require("../../store/products.cjs");
11
10
  const CardPosition = require("../blocks/CardPosition.vue.cjs");
12
11
  const CardOrderItem = require("../../../orders/components/blocks/CardOrderItem.vue.cjs");