@ozdao/martyrs 0.2.481 → 0.2.483

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 (541) hide show
  1. package/README.md +4 -13
  2. package/dist/{Media-CKk33U4A.js → Media-C57G7rnE.js} +1 -1
  3. package/dist/{Media-B1ZP3D7B.cjs → Media-DjnpKS62.cjs} +1 -1
  4. package/dist/_virtual/_commonjsHelpers.cjs +2 -0
  5. package/dist/_virtual/_commonjsHelpers.cjs.map +1 -1
  6. package/dist/_virtual/_commonjsHelpers.js +2 -0
  7. package/dist/_virtual/_commonjsHelpers.js.map +1 -1
  8. package/dist/_virtual/index2.cjs +8 -0
  9. package/dist/_virtual/index2.cjs.map +1 -0
  10. package/dist/_virtual/index2.js +8 -0
  11. package/dist/_virtual/index2.js.map +1 -0
  12. package/dist/_virtual/index3.cjs +5 -0
  13. package/dist/_virtual/index3.cjs.map +1 -0
  14. package/dist/_virtual/index3.js +5 -0
  15. package/dist/_virtual/index3.js.map +1 -0
  16. package/dist/{abac-XF1JVCLI.cjs → abac-6LjoG9u-.cjs} +107 -26
  17. package/dist/{abac-BuL5pUZ4.js → abac-Cf_9lCSh.js} +107 -26
  18. package/dist/globals.server.cjs +1 -1
  19. package/dist/globals.server.js +1 -1
  20. package/dist/{main-BhAiwmnI.js → main-CXQqAVVb.js} +3036 -4278
  21. package/dist/main-De5X_RUk.cjs +11 -0
  22. package/dist/martyrs/src/components/Button/{Button.vue2.cjs → Button.vue.cjs} +2 -2
  23. package/dist/martyrs/src/components/Button/{Button.vue2.js.map → Button.vue.cjs.map} +1 -1
  24. package/dist/martyrs/src/components/Button/{Button.vue2.js → Button.vue.js} +2 -2
  25. package/dist/martyrs/src/components/Button/Button.vue.js.map +1 -0
  26. package/dist/martyrs/src/components/Checkbox/Checkbox.vue.cjs +28 -7
  27. package/dist/martyrs/src/components/Checkbox/Checkbox.vue.cjs.map +1 -1
  28. package/dist/martyrs/src/components/Checkbox/Checkbox.vue.js +29 -8
  29. package/dist/martyrs/src/components/Checkbox/Checkbox.vue.js.map +1 -1
  30. package/dist/martyrs/src/components/Chips/Chips.vue.cjs +5 -8
  31. package/dist/martyrs/src/components/Chips/Chips.vue.cjs.map +1 -1
  32. package/dist/martyrs/src/components/Chips/Chips.vue.js +6 -9
  33. package/dist/martyrs/src/components/Chips/Chips.vue.js.map +1 -1
  34. package/dist/martyrs/src/components/Feed/Carousel.vue.cjs +84 -0
  35. package/dist/martyrs/src/components/Feed/Carousel.vue.cjs.map +1 -0
  36. package/dist/martyrs/src/components/Feed/Carousel.vue.js +84 -0
  37. package/dist/martyrs/src/components/Feed/Carousel.vue.js.map +1 -0
  38. package/dist/martyrs/src/components/Feed/Feed.vue.cjs +4 -4
  39. package/dist/martyrs/src/components/Feed/Feed.vue.cjs.map +1 -1
  40. package/dist/martyrs/src/components/Feed/Feed.vue.js +4 -4
  41. package/dist/martyrs/src/components/Feed/Feed.vue.js.map +1 -1
  42. package/dist/martyrs/src/components/Field/Field.vue.cjs +2 -1
  43. package/dist/martyrs/src/components/Field/Field.vue.cjs.map +1 -1
  44. package/dist/martyrs/src/components/Field/Field.vue.js +2 -1
  45. package/dist/martyrs/src/components/Field/Field.vue.js.map +1 -1
  46. package/dist/martyrs/src/components/FieldPhone/FieldPhone.vue.cjs +141 -113
  47. package/dist/martyrs/src/components/FieldPhone/FieldPhone.vue.cjs.map +1 -1
  48. package/dist/martyrs/src/components/FieldPhone/FieldPhone.vue.js +142 -114
  49. package/dist/martyrs/src/components/FieldPhone/FieldPhone.vue.js.map +1 -1
  50. package/dist/martyrs/src/components/Menu/{Menu.vue.cjs → Menu.vue2.cjs} +2 -2
  51. package/dist/martyrs/src/components/Menu/Menu.vue2.cjs.map +1 -0
  52. package/dist/martyrs/src/components/Menu/{Menu.vue.js → Menu.vue2.js} +2 -2
  53. package/dist/martyrs/src/components/Menu/Menu.vue2.js.map +1 -0
  54. package/dist/martyrs/src/components/PhotoViewer/PhotoViewer.vue.cjs +203 -151
  55. package/dist/martyrs/src/components/PhotoViewer/PhotoViewer.vue.cjs.map +1 -1
  56. package/dist/martyrs/src/components/PhotoViewer/PhotoViewer.vue.js +204 -152
  57. package/dist/martyrs/src/components/PhotoViewer/PhotoViewer.vue.js.map +1 -1
  58. package/dist/martyrs/src/components/Radio/Radio.vue.cjs +2 -2
  59. package/dist/martyrs/src/components/Radio/Radio.vue.cjs.map +1 -1
  60. package/dist/martyrs/src/components/Radio/Radio.vue.js +2 -2
  61. package/dist/martyrs/src/components/Radio/Radio.vue.js.map +1 -1
  62. package/dist/martyrs/src/components/Skeleton/Skeleton.vue.cjs +4 -3
  63. package/dist/martyrs/src/components/Skeleton/Skeleton.vue.cjs.map +1 -1
  64. package/dist/martyrs/src/components/Skeleton/Skeleton.vue.js +4 -3
  65. package/dist/martyrs/src/components/Skeleton/Skeleton.vue.js.map +1 -1
  66. package/dist/martyrs/src/components/Slider/{Slider.native.vue.cjs → Slider.vue.cjs} +22 -80
  67. package/dist/martyrs/src/components/Slider/Slider.vue.cjs.map +1 -0
  68. package/dist/martyrs/src/components/Slider/{Slider.native.vue.js → Slider.vue.js} +23 -81
  69. package/dist/martyrs/src/components/Slider/Slider.vue.js.map +1 -0
  70. package/dist/martyrs/src/components/Status/Status.vue.cjs +11 -5
  71. package/dist/martyrs/src/components/Status/Status.vue.cjs.map +1 -1
  72. package/dist/martyrs/src/components/Status/Status.vue.js +13 -7
  73. package/dist/martyrs/src/components/Status/Status.vue.js.map +1 -1
  74. package/dist/martyrs/src/components/Tooltip/Tooltip.vue2.cjs +4 -2
  75. package/dist/martyrs/src/components/Tooltip/Tooltip.vue2.cjs.map +1 -1
  76. package/dist/martyrs/src/components/Tooltip/Tooltip.vue2.js +4 -2
  77. package/dist/martyrs/src/components/Tooltip/Tooltip.vue2.js.map +1 -1
  78. package/dist/martyrs/src/modules/auth/views/components/layouts/Auth.vue.cjs +6 -4
  79. package/dist/martyrs/src/modules/auth/views/components/layouts/Auth.vue.cjs.map +1 -1
  80. package/dist/martyrs/src/modules/auth/views/components/layouts/Auth.vue.js +6 -4
  81. package/dist/martyrs/src/modules/auth/views/components/layouts/Auth.vue.js.map +1 -1
  82. package/dist/martyrs/src/modules/auth/views/components/pages/EnterPassword.vue.cjs +1 -1
  83. package/dist/martyrs/src/modules/auth/views/components/pages/EnterPassword.vue.js +1 -1
  84. package/dist/martyrs/src/modules/auth/views/components/pages/Invite.vue.cjs +1 -1
  85. package/dist/martyrs/src/modules/auth/views/components/pages/Invite.vue.js +1 -1
  86. package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.cjs +4 -2
  87. package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.cjs.map +1 -1
  88. package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.js +5 -3
  89. package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.js.map +1 -1
  90. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEdit.vue.cjs +22 -149
  91. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEdit.vue.cjs.map +1 -1
  92. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEdit.vue.js +24 -151
  93. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEdit.vue.js.map +1 -1
  94. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditAccount.vue.cjs +77 -0
  95. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditAccount.vue.cjs.map +1 -0
  96. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditAccount.vue.js +77 -0
  97. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditAccount.vue.js.map +1 -0
  98. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditProfile.vue.cjs +121 -0
  99. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditProfile.vue.cjs.map +1 -0
  100. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditProfile.vue.js +121 -0
  101. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditProfile.vue.js.map +1 -0
  102. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditSidebar.vue.cjs +38 -0
  103. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditSidebar.vue.cjs.map +1 -0
  104. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditSidebar.vue.js +38 -0
  105. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditSidebar.vue.js.map +1 -0
  106. package/dist/martyrs/src/modules/auth/views/components/pages/ResetPassword.vue.cjs +1 -1
  107. package/dist/martyrs/src/modules/auth/views/components/pages/ResetPassword.vue.js +1 -1
  108. package/dist/martyrs/src/modules/auth/views/components/pages/SignIn.vue.cjs +1 -1
  109. package/dist/martyrs/src/modules/auth/views/components/pages/SignIn.vue.js +1 -1
  110. package/dist/martyrs/src/modules/auth/views/components/pages/SignUp.vue.cjs +1 -1
  111. package/dist/martyrs/src/modules/auth/views/components/pages/SignUp.vue.js +1 -1
  112. package/dist/martyrs/src/modules/auth/views/components/sections/ProfileEditCredentials.vue.cjs +1 -1
  113. package/dist/martyrs/src/modules/auth/views/components/sections/ProfileEditCredentials.vue.js +1 -1
  114. package/dist/martyrs/src/modules/auth/views/components/sections/SliderFeatures.vue.cjs +17 -39
  115. package/dist/martyrs/src/modules/auth/views/components/sections/SliderFeatures.vue.cjs.map +1 -1
  116. package/dist/martyrs/src/modules/auth/views/components/sections/SliderFeatures.vue.js +18 -40
  117. package/dist/martyrs/src/modules/auth/views/components/sections/SliderFeatures.vue.js.map +1 -1
  118. package/dist/martyrs/src/modules/auth/views/localization/EnterCode.json.cjs +1 -1
  119. package/dist/martyrs/src/modules/auth/views/localization/EnterCode.json.js +1 -1
  120. package/dist/martyrs/src/modules/auth/views/localization/EnterPassword.json.cjs +1 -1
  121. package/dist/martyrs/src/modules/auth/views/localization/EnterPassword.json.js +1 -1
  122. package/dist/martyrs/src/modules/auth/views/localization/ResetPassword.json.cjs +1 -1
  123. package/dist/martyrs/src/modules/auth/views/localization/ResetPassword.json.js +1 -1
  124. package/dist/martyrs/src/modules/auth/views/localization/SignIn.json.cjs +1 -1
  125. package/dist/martyrs/src/modules/auth/views/localization/SignIn.json.js +1 -1
  126. package/dist/martyrs/src/modules/auth/views/localization/SignUp.json.cjs +1 -1
  127. package/dist/martyrs/src/modules/auth/views/localization/SignUp.json.js +1 -1
  128. package/dist/martyrs/src/modules/auth/views/router/users.cjs +23 -16
  129. package/dist/martyrs/src/modules/auth/views/router/users.cjs.map +1 -1
  130. package/dist/martyrs/src/modules/auth/views/router/users.js +23 -16
  131. package/dist/martyrs/src/modules/auth/views/router/users.js.map +1 -1
  132. package/dist/martyrs/src/modules/community/components/blocks/FooterBlogpost.vue.cjs +3 -3
  133. package/dist/martyrs/src/modules/community/components/blocks/FooterBlogpost.vue.cjs.map +1 -1
  134. package/dist/martyrs/src/modules/community/components/blocks/FooterBlogpost.vue.js +3 -3
  135. package/dist/martyrs/src/modules/community/components/blocks/FooterBlogpost.vue.js.map +1 -1
  136. package/dist/martyrs/src/modules/community/components/layouts/Community.vue.js +6 -6
  137. package/dist/martyrs/src/modules/community/components/pages/BlogPost.vue.cjs +4 -3
  138. package/dist/martyrs/src/modules/community/components/pages/BlogPost.vue.cjs.map +1 -1
  139. package/dist/martyrs/src/modules/community/components/pages/BlogPost.vue.js +4 -3
  140. package/dist/martyrs/src/modules/community/components/pages/BlogPost.vue.js.map +1 -1
  141. package/dist/martyrs/src/modules/community/components/pages/CreateBlogPost.vue.cjs +1 -1
  142. package/dist/martyrs/src/modules/community/components/pages/CreateBlogPost.vue.js +1 -1
  143. package/dist/martyrs/src/modules/community/components/sections/Comment.vue.cjs +92 -62
  144. package/dist/martyrs/src/modules/community/components/sections/Comment.vue.cjs.map +1 -1
  145. package/dist/martyrs/src/modules/community/components/sections/Comment.vue.js +93 -63
  146. package/dist/martyrs/src/modules/community/components/sections/Comment.vue.js.map +1 -1
  147. package/dist/martyrs/src/modules/community/components/sections/Comments.vue.cjs +82 -53
  148. package/dist/martyrs/src/modules/community/components/sections/Comments.vue.cjs.map +1 -1
  149. package/dist/martyrs/src/modules/community/components/sections/Comments.vue.js +82 -53
  150. package/dist/martyrs/src/modules/community/components/sections/Comments.vue.js.map +1 -1
  151. package/dist/martyrs/src/modules/community/components/sections/HotPosts.vue.cjs +2 -6
  152. package/dist/martyrs/src/modules/community/components/sections/HotPosts.vue.cjs.map +1 -1
  153. package/dist/martyrs/src/modules/community/components/sections/HotPosts.vue.js +2 -6
  154. package/dist/martyrs/src/modules/community/components/sections/HotPosts.vue.js.map +1 -1
  155. package/dist/martyrs/src/modules/events/components/elements/ButtonCheck.vue.cjs +1 -1
  156. package/dist/martyrs/src/modules/events/components/elements/ButtonCheck.vue.js +1 -1
  157. package/dist/martyrs/src/modules/events/components/elements/ButtonJoin.vue.cjs +1 -1
  158. package/dist/martyrs/src/modules/events/components/elements/ButtonJoin.vue.js +1 -1
  159. package/dist/martyrs/src/modules/events/components/pages/EditEvent.vue.cjs +1 -1
  160. package/dist/martyrs/src/modules/events/components/pages/EditEvent.vue.js +1 -1
  161. package/dist/martyrs/src/modules/events/components/pages/EditEventTickets.vue.cjs +1 -1
  162. package/dist/martyrs/src/modules/events/components/pages/EditEventTickets.vue.js +1 -1
  163. package/dist/martyrs/src/modules/events/components/sections/EventsHot.vue.cjs +3 -9
  164. package/dist/martyrs/src/modules/events/components/sections/EventsHot.vue.cjs.map +1 -1
  165. package/dist/martyrs/src/modules/events/components/sections/EventsHot.vue.js +3 -9
  166. package/dist/martyrs/src/modules/events/components/sections/EventsHot.vue.js.map +1 -1
  167. package/dist/martyrs/src/modules/gallery/components/pages/Gallery.vue.js +4 -4
  168. package/dist/martyrs/src/modules/gallery/components/sections/BackofficeGallery.vue.cjs +1 -1
  169. package/dist/martyrs/src/modules/gallery/components/sections/BackofficeGallery.vue.js +9 -9
  170. package/dist/martyrs/src/modules/globals/globals.client.cjs +13 -0
  171. package/dist/martyrs/src/modules/globals/globals.client.cjs.map +1 -1
  172. package/dist/martyrs/src/modules/globals/globals.client.js +13 -0
  173. package/dist/martyrs/src/modules/globals/globals.client.js.map +1 -1
  174. package/dist/martyrs/src/modules/globals/locales/en.cjs +24 -0
  175. package/dist/martyrs/src/modules/globals/locales/en.cjs.map +1 -0
  176. package/dist/martyrs/src/modules/globals/locales/en.js +24 -0
  177. package/dist/martyrs/src/modules/globals/locales/en.js.map +1 -0
  178. package/dist/martyrs/src/modules/globals/locales/ru.cjs +24 -0
  179. package/dist/martyrs/src/modules/globals/locales/ru.cjs.map +1 -0
  180. package/dist/martyrs/src/modules/globals/locales/ru.js +24 -0
  181. package/dist/martyrs/src/modules/globals/locales/ru.js.map +1 -0
  182. package/dist/martyrs/src/modules/globals/views/classes/globals.i18n.cjs +71 -0
  183. package/dist/martyrs/src/modules/globals/views/classes/globals.i18n.cjs.map +1 -0
  184. package/dist/martyrs/src/modules/globals/views/classes/globals.i18n.js +71 -0
  185. package/dist/martyrs/src/modules/globals/views/classes/globals.i18n.js.map +1 -0
  186. package/dist/martyrs/src/modules/globals/views/components/blocks/CardHeader.vue.cjs +2 -2
  187. package/dist/martyrs/src/modules/globals/views/components/blocks/CardHeader.vue.cjs.map +1 -1
  188. package/dist/martyrs/src/modules/globals/views/components/blocks/CardHeader.vue.js +2 -2
  189. package/dist/martyrs/src/modules/globals/views/components/blocks/CardHeader.vue.js.map +1 -1
  190. package/dist/martyrs/src/modules/globals/views/components/blocks/PopupAuth.vue.cjs +84 -0
  191. package/dist/martyrs/src/modules/globals/views/components/blocks/PopupAuth.vue.cjs.map +1 -0
  192. package/dist/martyrs/src/modules/globals/views/components/blocks/PopupAuth.vue.js +84 -0
  193. package/dist/martyrs/src/modules/globals/views/components/blocks/PopupAuth.vue.js.map +1 -0
  194. package/dist/martyrs/src/modules/globals/views/components/blocks/PopupDateSelector.vue.cjs +1 -1
  195. package/dist/martyrs/src/modules/globals/views/components/blocks/PopupDateSelector.vue.js +1 -1
  196. package/dist/martyrs/src/modules/globals/views/components/layouts/Client.vue.cjs +50 -44
  197. package/dist/martyrs/src/modules/globals/views/components/layouts/Client.vue.cjs.map +1 -1
  198. package/dist/martyrs/src/modules/globals/views/components/layouts/Client.vue.js +50 -44
  199. package/dist/martyrs/src/modules/globals/views/components/layouts/Client.vue.js.map +1 -1
  200. package/dist/martyrs/src/modules/globals/views/components/partials/Header.vue.cjs +1 -1
  201. package/dist/martyrs/src/modules/globals/views/components/partials/Header.vue.js +1 -1
  202. package/dist/martyrs/src/modules/globals/views/components/partials/NavigationBar.vue.cjs +1 -1
  203. package/dist/martyrs/src/modules/globals/views/components/partials/NavigationBar.vue.js +1 -1
  204. package/dist/martyrs/src/modules/globals/views/mixins/mixins.cjs +17 -0
  205. package/dist/martyrs/src/modules/globals/views/mixins/mixins.cjs.map +1 -1
  206. package/dist/martyrs/src/modules/globals/views/mixins/mixins.js +17 -0
  207. package/dist/martyrs/src/modules/globals/views/mixins/mixins.js.map +1 -1
  208. package/dist/martyrs/src/modules/globals/views/plugins/popup.auth.plugin.cjs +70 -0
  209. package/dist/martyrs/src/modules/globals/views/plugins/popup.auth.plugin.cjs.map +1 -0
  210. package/dist/martyrs/src/modules/globals/views/plugins/popup.auth.plugin.js +70 -0
  211. package/dist/martyrs/src/modules/globals/views/plugins/popup.auth.plugin.js.map +1 -0
  212. package/dist/martyrs/src/modules/globals/views/store/globals.cjs.map +1 -1
  213. package/dist/martyrs/src/modules/globals/views/store/globals.js.map +1 -1
  214. package/dist/martyrs/src/modules/icons/entities/IconList.vue.cjs +35 -0
  215. package/dist/martyrs/src/modules/icons/entities/IconList.vue.cjs.map +1 -0
  216. package/dist/martyrs/src/modules/icons/entities/IconList.vue.js +35 -0
  217. package/dist/martyrs/src/modules/icons/entities/IconList.vue.js.map +1 -0
  218. package/dist/martyrs/src/modules/icons/navigation/IconCheck.vue.cjs +1 -3
  219. package/dist/martyrs/src/modules/icons/navigation/IconCheck.vue.cjs.map +1 -1
  220. package/dist/martyrs/src/modules/icons/navigation/IconCheck.vue.js +1 -3
  221. package/dist/martyrs/src/modules/icons/navigation/IconCheck.vue.js.map +1 -1
  222. package/dist/martyrs/src/modules/icons/navigation/IconDoubleCheck.vue.cjs +1 -3
  223. package/dist/martyrs/src/modules/icons/navigation/IconDoubleCheck.vue.cjs.map +1 -1
  224. package/dist/martyrs/src/modules/icons/navigation/IconDoubleCheck.vue.js +1 -3
  225. package/dist/martyrs/src/modules/icons/navigation/IconDoubleCheck.vue.js.map +1 -1
  226. package/dist/martyrs/src/modules/icons/navigation/IconLike.vue.cjs +1 -3
  227. package/dist/martyrs/src/modules/icons/navigation/IconLike.vue.cjs.map +1 -1
  228. package/dist/martyrs/src/modules/icons/navigation/IconLike.vue.js +1 -3
  229. package/dist/martyrs/src/modules/icons/navigation/IconLike.vue.js.map +1 -1
  230. package/dist/martyrs/src/modules/icons/navigation/IconMute.vue.cjs +1 -3
  231. package/dist/martyrs/src/modules/icons/navigation/IconMute.vue.cjs.map +1 -1
  232. package/dist/martyrs/src/modules/icons/navigation/IconMute.vue.js +1 -3
  233. package/dist/martyrs/src/modules/icons/navigation/IconMute.vue.js.map +1 -1
  234. package/dist/martyrs/src/modules/icons/navigation/IconPause.vue.cjs +1 -3
  235. package/dist/martyrs/src/modules/icons/navigation/IconPause.vue.cjs.map +1 -1
  236. package/dist/martyrs/src/modules/icons/navigation/IconPause.vue.js +1 -3
  237. package/dist/martyrs/src/modules/icons/navigation/IconPause.vue.js.map +1 -1
  238. package/dist/martyrs/src/modules/icons/navigation/IconPlay.vue.cjs +21 -20
  239. package/dist/martyrs/src/modules/icons/navigation/IconPlay.vue.cjs.map +1 -1
  240. package/dist/martyrs/src/modules/icons/navigation/IconPlay.vue.js +21 -20
  241. package/dist/martyrs/src/modules/icons/navigation/IconPlay.vue.js.map +1 -1
  242. package/dist/martyrs/src/modules/icons/navigation/IconRefresh.vue.cjs +1 -3
  243. package/dist/martyrs/src/modules/icons/navigation/IconRefresh.vue.cjs.map +1 -1
  244. package/dist/martyrs/src/modules/icons/navigation/IconRefresh.vue.js +1 -3
  245. package/dist/martyrs/src/modules/icons/navigation/IconRefresh.vue.js.map +1 -1
  246. package/dist/martyrs/src/modules/icons/navigation/IconShuffle.vue.cjs +6 -13
  247. package/dist/martyrs/src/modules/icons/navigation/IconShuffle.vue.cjs.map +1 -1
  248. package/dist/martyrs/src/modules/icons/navigation/IconShuffle.vue.js +6 -13
  249. package/dist/martyrs/src/modules/icons/navigation/IconShuffle.vue.js.map +1 -1
  250. package/dist/martyrs/src/modules/icons/navigation/IconUnMute.vue.cjs +1 -3
  251. package/dist/martyrs/src/modules/icons/navigation/IconUnMute.vue.cjs.map +1 -1
  252. package/dist/martyrs/src/modules/icons/navigation/IconUnMute.vue.js +1 -3
  253. package/dist/martyrs/src/modules/icons/navigation/IconUnMute.vue.js.map +1 -1
  254. package/dist/martyrs/src/modules/icons/navigation/IconVolume.vue.cjs +1 -3
  255. package/dist/martyrs/src/modules/icons/navigation/IconVolume.vue.cjs.map +1 -1
  256. package/dist/martyrs/src/modules/icons/navigation/IconVolume.vue.js +1 -3
  257. package/dist/martyrs/src/modules/icons/navigation/IconVolume.vue.js.map +1 -1
  258. package/dist/martyrs/src/modules/icons/pages/IconsPage.vue.cjs +1 -3
  259. package/dist/martyrs/src/modules/icons/pages/IconsPage.vue.cjs.map +1 -1
  260. package/dist/martyrs/src/modules/icons/pages/IconsPage.vue.js +41 -43
  261. package/dist/martyrs/src/modules/icons/pages/IconsPage.vue.js.map +1 -1
  262. package/dist/martyrs/src/modules/marketplace/views/components/layouts/Marketplace.vue.cjs +52 -58
  263. package/dist/martyrs/src/modules/marketplace/views/components/layouts/Marketplace.vue.cjs.map +1 -1
  264. package/dist/martyrs/src/modules/marketplace/views/components/layouts/Marketplace.vue.js +52 -58
  265. package/dist/martyrs/src/modules/marketplace/views/components/layouts/Marketplace.vue.js.map +1 -1
  266. package/dist/martyrs/src/modules/notifications/components/blocks/NotificationItem.vue.cjs +8 -8
  267. package/dist/martyrs/src/modules/notifications/components/blocks/NotificationItem.vue.cjs.map +1 -1
  268. package/dist/martyrs/src/modules/notifications/components/blocks/NotificationItem.vue.js +8 -8
  269. package/dist/martyrs/src/modules/notifications/components/blocks/NotificationItem.vue.js.map +1 -1
  270. package/dist/martyrs/src/modules/notifications/components/elements/NotificationBadge.vue.cjs +50 -51
  271. package/dist/martyrs/src/modules/notifications/components/elements/NotificationBadge.vue.cjs.map +1 -1
  272. package/dist/martyrs/src/modules/notifications/components/elements/NotificationBadge.vue.js +51 -52
  273. package/dist/martyrs/src/modules/notifications/components/elements/NotificationBadge.vue.js.map +1 -1
  274. package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.cjs +1 -1
  275. package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.js +1 -1
  276. package/dist/martyrs/src/modules/orders/components/pages/OrderCreate.vue.cjs +1 -1
  277. package/dist/martyrs/src/modules/orders/components/pages/OrderCreate.vue.js +1 -1
  278. package/dist/martyrs/src/modules/orders/components/pages/OrderCreateBackoffice.vue.cjs +1 -1
  279. package/dist/martyrs/src/modules/orders/components/pages/OrderCreateBackoffice.vue.js +1 -1
  280. package/dist/martyrs/src/modules/orders/components/sections/FormAddCustomer.vue.cjs +1 -1
  281. package/dist/martyrs/src/modules/orders/components/sections/FormAddCustomer.vue.js +1 -1
  282. package/dist/martyrs/src/modules/organizations/components/elements/ButtonToggleMembership.vue.cjs +1 -1
  283. package/dist/martyrs/src/modules/organizations/components/elements/ButtonToggleMembership.vue.js +1 -1
  284. package/dist/martyrs/src/modules/organizations/components/pages/DepartmentEdit.vue.cjs +1 -1
  285. package/dist/martyrs/src/modules/organizations/components/pages/DepartmentEdit.vue.js +1 -1
  286. package/dist/martyrs/src/modules/organizations/components/pages/Members.vue.cjs +1 -1
  287. package/dist/martyrs/src/modules/organizations/components/pages/Members.vue.js +1 -1
  288. package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.cjs +1 -1
  289. package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.js +1 -1
  290. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationBackoffice.vue.cjs +1 -1
  291. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationBackoffice.vue.js +1 -1
  292. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.cjs +1 -1
  293. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.js +1 -1
  294. package/dist/martyrs/src/modules/organizations/components/sections/Documents.vue.cjs +1 -1
  295. package/dist/martyrs/src/modules/organizations/components/sections/Documents.vue.js +1 -1
  296. package/dist/martyrs/src/modules/organizations/components/sections/MembersAdd.vue.cjs +1 -1
  297. package/dist/martyrs/src/modules/organizations/components/sections/MembersAdd.vue.js +1 -1
  298. package/dist/martyrs/src/modules/organizations/components/sections/Organizations.vue.cjs +1 -1
  299. package/dist/martyrs/src/modules/organizations/components/sections/Organizations.vue.js +1 -1
  300. package/dist/martyrs/src/modules/organizations/configs/navigation.organization.config.cjs +7 -4
  301. package/dist/martyrs/src/modules/organizations/configs/navigation.organization.config.cjs.map +1 -1
  302. package/dist/martyrs/src/modules/organizations/configs/navigation.organization.config.js +18 -15
  303. package/dist/martyrs/src/modules/organizations/configs/navigation.organization.config.js.map +1 -1
  304. package/dist/martyrs/src/modules/organizations/router/organizations.cjs +1 -1
  305. package/dist/martyrs/src/modules/organizations/router/organizations.js +1 -1
  306. package/dist/martyrs/src/modules/pages/views/components/blocks/CardPage.vue.cjs +1 -1
  307. package/dist/martyrs/src/modules/pages/views/components/blocks/CardPage.vue.js +1 -1
  308. package/dist/martyrs/src/modules/pages/views/components/pages/PageEdit.vue.cjs +1 -1
  309. package/dist/martyrs/src/modules/pages/views/components/pages/PageEdit.vue.js +1 -1
  310. package/dist/martyrs/src/modules/pages/views/components/partials/SidebarPages.vue.cjs +1 -1
  311. package/dist/martyrs/src/modules/pages/views/components/partials/SidebarPages.vue.js +1 -1
  312. package/dist/martyrs/src/modules/products/components/blocks/CardProduct.vue.cjs +7 -2
  313. package/dist/martyrs/src/modules/products/components/blocks/CardProduct.vue.cjs.map +1 -1
  314. package/dist/martyrs/src/modules/products/components/blocks/CardProduct.vue.js +8 -3
  315. package/dist/martyrs/src/modules/products/components/blocks/CardProduct.vue.js.map +1 -1
  316. package/dist/martyrs/src/modules/products/components/blocks/ProductDiscounts.vue.cjs +11 -12
  317. package/dist/martyrs/src/modules/products/components/blocks/ProductDiscounts.vue.cjs.map +1 -1
  318. package/dist/martyrs/src/modules/products/components/blocks/ProductDiscounts.vue.js +12 -13
  319. package/dist/martyrs/src/modules/products/components/blocks/ProductDiscounts.vue.js.map +1 -1
  320. package/dist/martyrs/src/modules/products/components/blocks/ProductImages.vue.cjs +32 -23
  321. package/dist/martyrs/src/modules/products/components/blocks/ProductImages.vue.cjs.map +1 -1
  322. package/dist/martyrs/src/modules/products/components/blocks/ProductImages.vue.js +35 -26
  323. package/dist/martyrs/src/modules/products/components/blocks/ProductImages.vue.js.map +1 -1
  324. package/dist/martyrs/src/modules/products/components/blocks/ProductVariants.vue.cjs +4 -4
  325. package/dist/martyrs/src/modules/products/components/blocks/ProductVariants.vue.cjs.map +1 -1
  326. package/dist/martyrs/src/modules/products/components/blocks/ProductVariants.vue.js +4 -4
  327. package/dist/martyrs/src/modules/products/components/blocks/ProductVariants.vue.js.map +1 -1
  328. package/dist/martyrs/src/modules/products/components/elements/Price.vue.cjs +7 -5
  329. package/dist/martyrs/src/modules/products/components/elements/Price.vue.cjs.map +1 -1
  330. package/dist/martyrs/src/modules/products/components/elements/Price.vue.js +7 -5
  331. package/dist/martyrs/src/modules/products/components/elements/Price.vue.js.map +1 -1
  332. package/dist/martyrs/src/modules/products/components/pages/Categories.vue.cjs +1 -1
  333. package/dist/martyrs/src/modules/products/components/pages/Categories.vue.js +1 -1
  334. package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.cjs +2 -2
  335. package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.js +2 -2
  336. package/dist/martyrs/src/modules/products/components/pages/LeftoverEdit.vue.cjs +1 -1
  337. package/dist/martyrs/src/modules/products/components/pages/LeftoverEdit.vue.js +1 -1
  338. package/dist/martyrs/src/modules/products/components/pages/Leftovers.vue.cjs +1 -1
  339. package/dist/martyrs/src/modules/products/components/pages/Product.vue.cjs +57 -40
  340. package/dist/martyrs/src/modules/products/components/pages/Product.vue.cjs.map +1 -1
  341. package/dist/martyrs/src/modules/products/components/pages/Product.vue.js +59 -42
  342. package/dist/martyrs/src/modules/products/components/pages/Product.vue.js.map +1 -1
  343. package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.cjs +105 -85
  344. package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.cjs.map +1 -1
  345. package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.js +107 -87
  346. package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.js.map +1 -1
  347. package/dist/martyrs/src/modules/products/components/sections/EditAttributes.vue.cjs +1 -1
  348. package/dist/martyrs/src/modules/products/components/sections/EditAttributes.vue.js +1 -1
  349. package/dist/martyrs/src/modules/products/components/sections/EditDiscounts.vue.cjs +1 -1
  350. package/dist/martyrs/src/modules/products/components/sections/EditDiscounts.vue.js +1 -1
  351. package/dist/martyrs/src/modules/products/components/sections/EditRecommended.vue.cjs +145 -0
  352. package/dist/martyrs/src/modules/products/components/sections/EditRecommended.vue.cjs.map +1 -0
  353. package/dist/martyrs/src/modules/products/components/sections/EditRecommended.vue.js +145 -0
  354. package/dist/martyrs/src/modules/products/components/sections/EditRecommended.vue.js.map +1 -0
  355. package/dist/martyrs/src/modules/products/components/sections/EditVariants.vue.cjs +1 -1
  356. package/dist/martyrs/src/modules/products/components/sections/EditVariants.vue.js +1 -1
  357. package/dist/martyrs/src/modules/products/components/sections/ProductConfigurator.vue.cjs +46 -31
  358. package/dist/martyrs/src/modules/products/components/sections/ProductConfigurator.vue.cjs.map +1 -1
  359. package/dist/martyrs/src/modules/products/components/sections/ProductConfigurator.vue.js +50 -35
  360. package/dist/martyrs/src/modules/products/components/sections/ProductConfigurator.vue.js.map +1 -1
  361. package/dist/martyrs/src/modules/products/components/sections/ProductsPopular.vue.cjs +44 -0
  362. package/dist/martyrs/src/modules/products/components/sections/ProductsPopular.vue.cjs.map +1 -0
  363. package/dist/martyrs/src/modules/products/components/sections/ProductsPopular.vue.js +44 -0
  364. package/dist/martyrs/src/modules/products/components/sections/ProductsPopular.vue.js.map +1 -0
  365. package/dist/martyrs/src/modules/products/components/sections/ProductsRecommended.vue.cjs +131 -0
  366. package/dist/martyrs/src/modules/products/components/sections/ProductsRecommended.vue.cjs.map +1 -0
  367. package/dist/martyrs/src/modules/products/components/sections/ProductsRecommended.vue.js +131 -0
  368. package/dist/martyrs/src/modules/products/components/sections/ProductsRecommended.vue.js.map +1 -0
  369. package/dist/martyrs/src/modules/products/components/sections/SectionProduct.vue.cjs +1 -1
  370. package/dist/martyrs/src/modules/products/components/sections/SectionProduct.vue.js +1 -1
  371. package/dist/martyrs/src/modules/products/products.client.cjs +3 -3
  372. package/dist/martyrs/src/modules/products/products.client.cjs.map +1 -1
  373. package/dist/martyrs/src/modules/products/products.client.js +3 -3
  374. package/dist/martyrs/src/modules/products/products.client.js.map +1 -1
  375. package/dist/martyrs/src/modules/products/store/products.cjs +4 -0
  376. package/dist/martyrs/src/modules/products/store/products.cjs.map +1 -1
  377. package/dist/martyrs/src/modules/products/store/products.js +4 -0
  378. package/dist/martyrs/src/modules/products/store/products.js.map +1 -1
  379. package/dist/martyrs/src/modules/reports/components/sections/FormReport.vue.cjs +1 -1
  380. package/dist/martyrs/src/modules/reports/components/sections/FormReport.vue.js +1 -1
  381. package/dist/martyrs/src/modules/spots/components/pages/Map.vue.cjs +1 -1
  382. package/dist/martyrs/src/modules/spots/components/pages/Map.vue.js +1 -1
  383. package/dist/martyrs/src/modules/spots/components/pages/SpotEdit.vue.cjs +1 -1
  384. package/dist/martyrs/src/modules/spots/components/pages/SpotEdit.vue.js +1 -1
  385. package/dist/martyrs/src/modules/spots/components/sections/WorktimeEdit.vue.cjs +1 -1
  386. package/dist/martyrs/src/modules/spots/components/sections/WorktimeEdit.vue.js +1 -1
  387. package/dist/martyrs/src/modules/wallet/views/components/pages/Wallet.vue.cjs +1 -1
  388. package/dist/martyrs/src/modules/wallet/views/components/pages/Wallet.vue.js +1 -1
  389. package/dist/martyrs/src/modules/wallet/views/localization/wallet.json.cjs +1 -1
  390. package/dist/martyrs/src/modules/wallet/views/localization/wallet.json.js +1 -1
  391. package/dist/martyrs.cjs.js +1 -1
  392. package/dist/martyrs.css +1 -1
  393. package/dist/martyrs.es.js +1 -1
  394. package/dist/node_modules/lodash.merge/index.cjs +689 -0
  395. package/dist/node_modules/lodash.merge/index.cjs.map +1 -0
  396. package/dist/node_modules/lodash.merge/index.js +689 -0
  397. package/dist/node_modules/lodash.merge/index.js.map +1 -0
  398. package/dist/organizations.server.cjs +1 -1
  399. package/dist/organizations.server.js +1 -1
  400. package/dist/products.server.cjs +111 -34
  401. package/dist/products.server.js +111 -34
  402. package/dist/style.css +239 -235
  403. package/package.json +1 -1
  404. package/src/.martyrs/chunks.json +325 -0
  405. package/src/.martyrs/filemap.json +6802 -0
  406. package/src/.martyrs/semantic-analysis.json +307 -0
  407. package/src/.martyrs/toc.json +14 -0
  408. package/src/components/Button/Button.vue +2 -2
  409. package/src/components/Checkbox/Checkbox.vue +28 -16
  410. package/src/components/Chips/Chips.vue +4 -4
  411. package/src/components/Feed/Carousel.vue +72 -0
  412. package/src/components/Feed/Feed.vue +2 -2
  413. package/src/components/Field/Field.vue +1 -0
  414. package/src/components/FieldPhone/FieldPhone.vue +337 -238
  415. package/src/components/PhotoViewer/PhotoViewer.vue +307 -220
  416. package/src/components/Radio/Radio.vue +2 -10
  417. package/src/components/Skeleton/Skeleton.vue +9 -12
  418. package/src/components/Slider/Slider.vue +220 -100
  419. package/src/components/Status/Status.vue +10 -8
  420. package/src/components/Tooltip/Tooltip.vue +2 -2
  421. package/src/modules/auth/views/components/layouts/Auth.vue +1 -1
  422. package/src/modules/auth/views/components/pages/Profile.vue +1 -1
  423. package/src/modules/auth/views/components/pages/ProfileEdit.old.vue +189 -0
  424. package/src/modules/auth/views/components/pages/ProfileEdit.vue +19 -182
  425. package/src/modules/auth/views/components/pages/ProfileEditAccount.vue +72 -0
  426. package/src/modules/auth/views/components/pages/ProfileEditProfile.vue +110 -0
  427. package/src/modules/auth/views/components/pages/ProfileEditSidebar.vue +28 -0
  428. package/src/modules/auth/views/components/sections/SliderFeatures.vue +13 -79
  429. package/src/modules/auth/views/localization/EnterCode.json +2 -2
  430. package/src/modules/auth/views/localization/EnterPassword.json +2 -2
  431. package/src/modules/auth/views/localization/ResetPassword.json +2 -2
  432. package/src/modules/auth/views/localization/SignIn.json +2 -2
  433. package/src/modules/auth/views/localization/SignUp.json +2 -2
  434. package/src/modules/auth/views/router/users.js +23 -12
  435. package/src/modules/community/components/blocks/FooterBlogpost.vue +3 -3
  436. package/src/modules/community/components/pages/BlogPost.vue +2 -1
  437. package/src/modules/community/components/sections/Comment.vue +161 -57
  438. package/src/modules/community/components/sections/Comments.vue +120 -63
  439. package/src/modules/community/components/sections/HotPosts.vue +7 -7
  440. package/src/modules/events/components/sections/EventsHot.vue +26 -33
  441. package/src/modules/globals/controllers/classes/abac/abac.core.js +3 -1
  442. package/src/modules/globals/controllers/classes/abac/abac.fields.js +126 -42
  443. package/src/modules/globals/controllers/classes/abac/v2/abac-core-fixed.js +313 -0
  444. package/src/modules/globals/controllers/classes/abac/v2/abac-express-fixed.js +276 -0
  445. package/src/modules/globals/controllers/classes/abac/v2/abac-fields-fixed.js +422 -0
  446. package/src/modules/globals/controllers/classes/abac/v2/abac-main-fixed.js +295 -0
  447. package/src/modules/globals/controllers/classes/abac/v2/abac-policies-fixed.js +316 -0
  448. package/src/modules/globals/controllers/classes/abac/v2/abac-ws-fixed.js +237 -0
  449. package/src/modules/globals/globals.client.js +17 -1
  450. package/src/modules/globals/locales/en.js +21 -0
  451. package/src/modules/globals/locales/index.js +8 -0
  452. package/src/modules/globals/locales/ru.js +21 -0
  453. package/src/modules/globals/views/classes/globals.i18n.js +84 -0
  454. package/src/modules/globals/views/components/blocks/CardFooter.vue +3 -3
  455. package/src/modules/globals/views/components/blocks/CardHeader.vue +1 -1
  456. package/src/modules/globals/views/components/blocks/PopupAuth.vue +66 -0
  457. package/src/modules/globals/views/components/layouts/Client.vue +43 -40
  458. package/src/modules/globals/views/components/partials/Footer.vue +162 -162
  459. package/src/modules/globals/views/mixins/mixins.js +37 -17
  460. package/src/modules/globals/views/plugins/popup.auth.plugin.js +77 -0
  461. package/src/modules/globals/views/store/globals.js +0 -40
  462. package/src/modules/icons/entities/IconList.vue +14 -0
  463. package/src/modules/icons/navigation/IconCheck.vue +1 -3
  464. package/src/modules/icons/navigation/IconDoubleCheck.vue +1 -3
  465. package/src/modules/icons/navigation/IconLike.vue +1 -3
  466. package/src/modules/icons/navigation/IconMute.vue +1 -3
  467. package/src/modules/icons/navigation/IconPause.vue +1 -3
  468. package/src/modules/icons/navigation/IconPlay.vue +12 -15
  469. package/src/modules/icons/navigation/IconRefresh.vue +1 -3
  470. package/src/modules/icons/navigation/IconShuffle.vue +11 -26
  471. package/src/modules/icons/navigation/IconUnMute.vue +1 -3
  472. package/src/modules/icons/navigation/IconVolume.vue +1 -3
  473. package/src/modules/icons/pages/IconsPage.vue +0 -2
  474. package/src/modules/marketplace/views/components/layouts/Marketplace.vue +34 -38
  475. package/src/modules/music/components/pages/AlbumDetail.vue +2 -2
  476. package/src/modules/music/components/pages/PlaylistDetail.vue +2 -2
  477. package/src/modules/music/components/pages/TrackDetail.vue +1 -1
  478. package/src/modules/music/components/player/MusicPlayer.vue +2 -2
  479. package/src/modules/notifications/components/blocks/NotificationItem.vue +6 -51
  480. package/src/modules/notifications/components/elements/NotificationBadge.vue +53 -97
  481. package/src/modules/organizations/configs/navigation.organization.config.js +8 -4
  482. package/src/modules/products/components/blocks/CardProduct.vue +8 -2
  483. package/src/modules/products/components/blocks/ProductDiscounts.vue +3 -4
  484. package/src/modules/products/components/blocks/ProductImages.vue +32 -23
  485. package/src/modules/products/components/blocks/ProductVariants.vue +6 -4
  486. package/src/modules/products/components/elements/Price.vue +3 -3
  487. package/src/modules/products/components/pages/Product.vue +32 -26
  488. package/src/modules/products/components/pages/ProductEdit.vue +95 -72
  489. package/src/modules/products/components/sections/EditRecommended.vue +131 -0
  490. package/src/modules/products/components/sections/ProductConfigurator.vue +35 -21
  491. package/src/modules/products/components/sections/ProductsPopular.vue +45 -0
  492. package/src/modules/products/components/sections/ProductsRecommended.vue +134 -0
  493. package/src/modules/products/controllers/configs/products.lookup.config.js +20 -15
  494. package/src/modules/products/controllers/products.controller.js +7 -22
  495. package/src/modules/products/models/category.model.js +28 -1
  496. package/src/modules/products/models/leftover.model.js +32 -0
  497. package/src/modules/products/models/product.model.js +37 -1
  498. package/src/modules/products/models/variant.model.js +35 -0
  499. package/src/modules/products/products.client.js +3 -3
  500. package/src/modules/products/routes/products.routes.js +1 -0
  501. package/src/modules/products/store/products.js +4 -0
  502. package/src/modules/wallet/views/localization/wallet.json +2 -2
  503. package/src/styles/base/all.scss +0 -38
  504. package/src/styles/base/shadow_transitions_hover_refactor.scss +20 -51
  505. package/src/styles/config.scss +51 -1
  506. package/dist/main-C75EcBpE.cjs +0 -11
  507. package/dist/martyrs/src/components/Button/Button.vue2.cjs.map +0 -1
  508. package/dist/martyrs/src/components/Menu/Menu.vue.cjs.map +0 -1
  509. package/dist/martyrs/src/components/Menu/Menu.vue.js.map +0 -1
  510. package/dist/martyrs/src/components/Slider/Slider.native.vue.cjs.map +0 -1
  511. package/dist/martyrs/src/components/Slider/Slider.native.vue.js.map +0 -1
  512. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEdit.vue2.cjs +0 -2
  513. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEdit.vue2.cjs.map +0 -1
  514. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEdit.vue2.js +0 -2
  515. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEdit.vue2.js.map +0 -1
  516. package/dist/martyrs/src/modules/icons/navigation/IconHeart.vue.cjs +0 -34
  517. package/dist/martyrs/src/modules/icons/navigation/IconHeart.vue.cjs.map +0 -1
  518. package/dist/martyrs/src/modules/icons/navigation/IconHeart.vue.js +0 -34
  519. package/dist/martyrs/src/modules/icons/navigation/IconHeart.vue.js.map +0 -1
  520. package/dist/martyrs/src/modules/products/components/sections/PopularProducts.vue.cjs +0 -124
  521. package/dist/martyrs/src/modules/products/components/sections/PopularProducts.vue.cjs.map +0 -1
  522. package/dist/martyrs/src/modules/products/components/sections/PopularProducts.vue.js +0 -124
  523. package/dist/martyrs/src/modules/products/components/sections/PopularProducts.vue.js.map +0 -1
  524. package/dist/node_modules/.pnpm/embla-carousel-autoplay@8.6.0_embla-carousel@8.6.0/node_modules/embla-carousel-autoplay/esm/embla-carousel-autoplay.esm.cjs +0 -194
  525. package/dist/node_modules/.pnpm/embla-carousel-autoplay@8.6.0_embla-carousel@8.6.0/node_modules/embla-carousel-autoplay/esm/embla-carousel-autoplay.esm.cjs.map +0 -1
  526. package/dist/node_modules/.pnpm/embla-carousel-autoplay@8.6.0_embla-carousel@8.6.0/node_modules/embla-carousel-autoplay/esm/embla-carousel-autoplay.esm.js +0 -194
  527. package/dist/node_modules/.pnpm/embla-carousel-autoplay@8.6.0_embla-carousel@8.6.0/node_modules/embla-carousel-autoplay/esm/embla-carousel-autoplay.esm.js.map +0 -1
  528. package/dist/node_modules/.pnpm/embla-carousel-reactive-utils@8.6.0_embla-carousel@8.6.0/node_modules/embla-carousel-reactive-utils/esm/embla-carousel-reactive-utils.esm.cjs +0 -43
  529. package/dist/node_modules/.pnpm/embla-carousel-reactive-utils@8.6.0_embla-carousel@8.6.0/node_modules/embla-carousel-reactive-utils/esm/embla-carousel-reactive-utils.esm.cjs.map +0 -1
  530. package/dist/node_modules/.pnpm/embla-carousel-reactive-utils@8.6.0_embla-carousel@8.6.0/node_modules/embla-carousel-reactive-utils/esm/embla-carousel-reactive-utils.esm.js +0 -43
  531. package/dist/node_modules/.pnpm/embla-carousel-reactive-utils@8.6.0_embla-carousel@8.6.0/node_modules/embla-carousel-reactive-utils/esm/embla-carousel-reactive-utils.esm.js.map +0 -1
  532. package/dist/node_modules/.pnpm/embla-carousel-vue@8.6.0_vue@3.5.13_typescript@5.8.3_/node_modules/embla-carousel-vue/esm/embla-carousel-vue.esm.cjs +0 -43
  533. package/dist/node_modules/.pnpm/embla-carousel-vue@8.6.0_vue@3.5.13_typescript@5.8.3_/node_modules/embla-carousel-vue/esm/embla-carousel-vue.esm.cjs.map +0 -1
  534. package/dist/node_modules/.pnpm/embla-carousel-vue@8.6.0_vue@3.5.13_typescript@5.8.3_/node_modules/embla-carousel-vue/esm/embla-carousel-vue.esm.js +0 -43
  535. package/dist/node_modules/.pnpm/embla-carousel-vue@8.6.0_vue@3.5.13_typescript@5.8.3_/node_modules/embla-carousel-vue/esm/embla-carousel-vue.esm.js.map +0 -1
  536. package/dist/node_modules/.pnpm/embla-carousel@8.6.0/node_modules/embla-carousel/esm/embla-carousel.esm.cjs +0 -1630
  537. package/dist/node_modules/.pnpm/embla-carousel@8.6.0/node_modules/embla-carousel/esm/embla-carousel.esm.cjs.map +0 -1
  538. package/dist/node_modules/.pnpm/embla-carousel@8.6.0/node_modules/embla-carousel/esm/embla-carousel.esm.js +0 -1630
  539. package/dist/node_modules/.pnpm/embla-carousel@8.6.0/node_modules/embla-carousel/esm/embla-carousel.esm.js.map +0 -1
  540. package/src/components/Slider/Slider.native.vue +0 -313
  541. package/src/modules/products/components/sections/PopularProducts.vue +0 -156
@@ -1 +1 @@
1
- {"version":3,"file":"Price.vue.js","sources":["../../../../../../../src/modules/products/components/elements/Price.vue"],"sourcesContent":["<template>\n <div class=\"radius-small\">\n <span\n :class=\"{\n 'h4': !size,\n 'p-medium t-semi': size === 'small',\n 'h3 t-semi': size === 'big'\n }\"\n class=\"t-second\"\n >\n {{ returnCurrency() + variant.price }}\n </span>\n\n <span\n :class=\"{\n 'p-medium': !size,\n 'p-small': size === 'small',\n 'p-big': size === 'big'\n }\"\n class=\"p-small mn-l-micro t-transp\"\n >\n {{ product.listing === 'rent' ? 'per day' : 'for ' + variant.quantity + variant.unit }}\n </span>\n\n <p\n v-if=\"variant.sale\"\n class=\"pd-r-small t-transp p-medium line-through price\"\n >\n {{ returnCurrency() + ((variant.price / 100) * (100 + variant.sale)) }}\n </p>\n </div>\n</template>\n\n<script setup>\nimport { computed } from 'vue';\n\nconst props = defineProps({\n product: Object,\n size: String\n});\n\nconst variant = computed(() => {\n return props.product?.variants?.[0] || props.product;\n});\n</script>\n"],"names":[],"mappings":";;;;;;;;;;;;;AAoCA,UAAM,QAAQ;AAKd,UAAM,UAAU,SAAS,MAAM;;AAC7B,eAAO,iBAAM,YAAN,mBAAe,aAAf,mBAA0B,OAAM,MAAM;AAAA,IAC/C,CAAC;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"Price.vue.js","sources":["../../../../../../../src/modules/products/components/elements/Price.vue"],"sourcesContent":["<template>\n <div class=\"radius-small\">\n <span\n :class=\"{\n 'h4': !size,\n 'p-medium t-semi': size === 'small',\n 'h3 t-semi': size === 'big'\n }\"\n >\n {{ returnCurrency() + variant.price }}\n </span>\n\n <span\n :class=\"{\n 'p-medium': !size,\n 'p-small': size === 'small',\n 'p-big': size === 'big'\n }\"\n class=\"p-small mn-l-micro t-transp\"\n >\n {{ product?.listing === 'rent' ? 'per day' : 'for ' + variant.quantity + variant.unit }}\n </span>\n\n <p\n v-if=\"variant.sale\"\n class=\"pd-r-small t-transp p-medium line-through price\"\n >\n {{ returnCurrency() + ((variant.price / 100) * (100 + variant.sale)) }}\n </p>\n </div>\n</template>\n\n<script setup>\nimport { computed } from 'vue';\n\nconst props = defineProps({\n product: Object,\n variants: Array,\n size: String\n});\n\nconst variant = computed(() => {\n return props.product?.variants?.[0] || props.variants?.[0] || props.product;\n});\n</script>\n"],"names":[],"mappings":";;;;;;;;;;;;;;AAmCA,UAAM,QAAQ;AAMd,UAAM,UAAU,SAAS,MAAM;;AAC7B,eAAO,iBAAM,YAAN,mBAAe,aAAf,mBAA0B,SAAM,WAAM,aAAN,mBAAiB,OAAM,MAAM;AAAA,IACtE,CAAC;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -6,7 +6,7 @@ const globals = require("../../../globals/views/store/globals.cjs");
6
6
  const auth = require("../../../auth/views/store/auth.cjs");
7
7
  const categories = require("../../store/categories.cjs");
8
8
  ;/* empty css */
9
- ;/* empty css */
9
+ ;/* empty css */
10
10
  const Block = require("../../../../components/Block/Block.vue.cjs");
11
11
  const Feed = require("../../../../components/Feed/Feed.vue.cjs");
12
12
  const Tree = require("../../../../components/Tree/Tree.vue.cjs");
@@ -4,7 +4,7 @@ import { state as state$1 } from "../../../globals/views/store/globals.js";
4
4
  import { state } from "../../../auth/views/store/auth.js";
5
5
  import { state as state$2, actions } from "../../store/categories.js";
6
6
  /* empty css */
7
- /* empty css */
7
+ /* empty css */
8
8
  import _sfc_main$2 from "../../../../components/Block/Block.vue.js";
9
9
  import _sfc_main$3 from "../../../../components/Feed/Feed.vue.js";
10
10
  import _sfc_main$4 from "../../../../components/Tree/Tree.vue.js";
@@ -3,16 +3,16 @@ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toString
3
3
  const vue = require("vue");
4
4
  const vueRouter = require("vue-router");
5
5
  const IconDelete = require("../../../icons/navigation/IconDelete.vue.cjs");
6
- const Button = require("../../../../components/Button/Button.vue2.cjs");
6
+ const Button = require("../../../../components/Button/Button.vue.cjs");
7
7
  const Select = require("../../../../components/Select/Select.vue.cjs");
8
8
  const UploadImage = require("../../../../components/UploadImage/UploadImage.vue.cjs");
9
9
  const Field = require("../../../../components/Field/Field.vue.cjs");
10
10
  ;/* empty css */
11
11
  ;/* empty css */
12
+ const IconCheckmark = require("../../../icons/navigation/IconCheckmark.vue.cjs");
12
13
  ;/* empty css */
13
14
  ;/* empty css */
14
15
  const Block = require("../../../../components/Block/Block.vue.cjs");
15
- const IconCheckmark = require("../../../icons/navigation/IconCheckmark.vue.cjs");
16
16
  const globals = require("../../../globals/views/store/globals.cjs");
17
17
  const auth = require("../../../auth/views/store/auth.cjs");
18
18
  const categories = require("../../store/categories.cjs");
@@ -1,16 +1,16 @@
1
1
  import { ref, onMounted, computed, onUnmounted, createElementBlock, createCommentVNode, openBlock, createBlock, createVNode, withCtx, createElementVNode, toDisplayString, unref, createTextVNode, Fragment, renderList } from "vue";
2
2
  import { useRoute, useRouter } from "vue-router";
3
3
  import _sfc_main$5 from "../../../icons/navigation/IconDelete.vue.js";
4
- import _sfc_main$3 from "../../../../components/Button/Button.vue2.js";
4
+ import _sfc_main$3 from "../../../../components/Button/Button.vue.js";
5
5
  import Select from "../../../../components/Select/Select.vue.js";
6
6
  import _sfc_main$4 from "../../../../components/UploadImage/UploadImage.vue.js";
7
7
  import Field from "../../../../components/Field/Field.vue.js";
8
8
  /* empty css */
9
9
  /* empty css */
10
+ import _sfc_main$1 from "../../../icons/navigation/IconCheckmark.vue.js";
10
11
  /* empty css */
11
12
  /* empty css */
12
13
  import _sfc_main$2 from "../../../../components/Block/Block.vue.js";
13
- import _sfc_main$1 from "../../../icons/navigation/IconCheckmark.vue.js";
14
14
  import { state as state$2 } from "../../../globals/views/store/globals.js";
15
15
  import { state as state$1 } from "../../../auth/views/store/auth.js";
16
16
  import { actions, state } from "../../store/categories.js";
@@ -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 Button = require("../../../../components/Button/Button.vue2.cjs");
5
+ const Button = require("../../../../components/Button/Button.vue.cjs");
6
6
  const Field = require("../../../../components/Field/Field.vue.cjs");
7
7
  const Feed = require("../../../../components/Feed/Feed.vue.cjs");
8
8
  ;/* empty css */
@@ -1,6 +1,6 @@
1
1
  import { ref, computed, onMounted, createElementBlock, openBlock, createElementVNode, createVNode, toDisplayString, unref, withCtx, Fragment, renderList, createBlock, createCommentVNode } from "vue";
2
2
  import _sfc_main$4 from "../../../../components/Block/Block.vue.js";
3
- import _sfc_main$7 from "../../../../components/Button/Button.vue2.js";
3
+ import _sfc_main$7 from "../../../../components/Button/Button.vue.js";
4
4
  import Field from "../../../../components/Field/Field.vue.js";
5
5
  import _sfc_main$2 from "../../../../components/Feed/Feed.vue.js";
6
6
  /* empty css */
@@ -12,7 +12,7 @@ const IconEllipsis = require("../../../icons/navigation/IconEllipsis.vue.cjs");
12
12
  const StockAuditForm = require("../forms/StockAuditForm.vue.cjs");
13
13
  const ReorderSettingsForm = require("../forms/ReorderSettingsForm.vue.cjs");
14
14
  const StockHistoryView = require("../forms/StockHistoryView.vue.cjs");
15
- const ColumnSettingsMenu = require("../forms/ColumnSettingsMenu.vue.cjs");
15
+ const ColumnSettingsMenu = ;/* empty css */
16
16
  const products = require("../../store/products.cjs");
17
17
  const leftovers = require("../../store/leftovers.cjs");
18
18
  ;/* empty css */
@@ -10,39 +10,46 @@ const products = require("../../store/products.cjs");
10
10
  require("../../store/categories.cjs");
11
11
  const shopcart = require("../../../orders/store/shopcart.cjs");
12
12
  ;/* empty css */
13
- ;/* empty css */
13
+ ;/* empty css */
14
14
  ;/* empty css */
15
15
  ;/* empty css */
16
16
  const IconEdit = require("../../../icons/navigation/IconEdit.vue.cjs");
17
17
  const IconInfo = require("../../../icons/navigation/IconInfo.vue.cjs");
18
+ const IconList = require("../../../icons/entities/IconList.vue.cjs");
18
19
  const IconGroups = require("../../../icons/entities/IconGroups.vue.cjs");
19
20
  const ProductImages = require("../blocks/ProductImages.vue.cjs");
20
- const Price = require("../elements/Price.vue.cjs");
21
- const PopularProducts = require("../sections/PopularProducts.vue.cjs");
22
21
  const ProductConfigurator = require("../sections/ProductConfigurator.vue.cjs");
22
+ const ProductsRecommended = require("../sections/ProductsRecommended.vue.cjs");
23
+ const ProductsPopular = require("../sections/ProductsPopular.vue.cjs");
23
24
  const CardOrganization = require("../../../organizations/components/blocks/CardOrganization.vue.cjs");
24
25
  const _hoisted_1 = {
25
26
  key: 0,
26
- class: "h-100 w-100 mobile:pd-thin pd-big bg-white"
27
+ class: "w-100 mobile:pd-thin pd-small bg-white"
27
28
  };
28
- const _hoisted_2 = { class: "cols-2-1_2 w-100 gap-medium" };
29
+ const _hoisted_2 = { class: "cols-2 mobile:cols-1 w-100 gap-medium" };
29
30
  const _hoisted_3 = { class: "pos-relative w-100 h-100 flex-column flex-h-center flex" };
30
- const _hoisted_4 = { class: "w-100 h1-product mn-b-small" };
31
+ const _hoisted_4 = { class: "w-100 h1-product mn-b-medium" };
31
32
  const _hoisted_5 = {
32
- key: 2,
33
- class: "flex gap-micro flex-center pd-small br-solid br-1px br-black-transp-10 w-max mn-b-medium"
33
+ key: 1,
34
+ class: "w-100 mn-b-medium",
35
+ style: { "white-space": "pre-line" }
34
36
  };
35
- const _hoisted_6 = { class: "h2 t-bold" };
36
- const _hoisted_7 = {
37
+ const _hoisted_6 = {
37
38
  key: 3,
38
- class: "w-100 mn-b-medium"
39
+ class: "mn-b-small flex-nowrap flex flex-v-center"
39
40
  };
40
- const _hoisted_8 = { class: "mn-b-small flex-nowrap flex flex-v-center" };
41
- const _hoisted_9 = { class: "cols-2 mn-b-medium w-100 gap-small" };
42
- const _hoisted_10 = { class: "w-100 pd-small radius-small bg-light product-attributes" };
43
- const _hoisted_11 = { class: "mn-b-thin t-demi" };
44
- const _hoisted_12 = { class: "mn-b-small flex-nowrap flex flex-v-center" };
45
- const _hoisted_13 = { class: "h-max mn-t-big pos-relative" };
41
+ const _hoisted_7 = {
42
+ key: 4,
43
+ class: "cols-1 mn-b-medium w-100"
44
+ };
45
+ const _hoisted_8 = { class: "w-100 pd-small radius-small flex flex-column gap-small bg-light" };
46
+ const _hoisted_9 = ["innerHTML"];
47
+ const _hoisted_10 = { class: "mn-b-small flex-nowrap flex flex-v-center" };
48
+ const _hoisted_11 = { class: "cols-2 mn-b-medium w-100 gap-small" };
49
+ const _hoisted_12 = { class: "w-100 pd-small radius-small bg-light product-attributes" };
50
+ const _hoisted_13 = { class: "mn-b-thin t-demi" };
51
+ const _hoisted_14 = { class: "mn-b-small flex-nowrap flex flex-v-center" };
52
+ const _hoisted_15 = { class: "h-max mn-t-big pos-relative" };
46
53
  const _sfc_main = {
47
54
  __name: "Product",
48
55
  props: {
@@ -71,7 +78,7 @@ const _sfc_main = {
71
78
  vue.onMounted(async () => {
72
79
  var _a, _b;
73
80
  emits("page-loading");
74
- await products.actions.read({ _id: route.params.product });
81
+ await products.actions.read({ _id: route.params.product, lookup: ["recommended"] });
75
82
  currentImages.value = [...productImages.value];
76
83
  if (typeof gtag === "function") {
77
84
  gtag("event", "view_item", {
@@ -146,7 +153,7 @@ const _sfc_main = {
146
153
  }
147
154
  }
148
155
  return (_ctx, _cache) => {
149
- var _a;
156
+ var _a, _b;
150
157
  const _component_router_link = vue.resolveComponent("router-link");
151
158
  return products.state.current ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1, [
152
159
  vue.createElementVNode("div", _hoisted_2, [
@@ -169,17 +176,9 @@ const _sfc_main = {
169
176
  _: 1
170
177
  }, 8, ["to"])) : vue.createCommentVNode("", true),
171
178
  vue.createElementVNode("h2", _hoisted_4, vue.toDisplayString(product.value.name), 1),
172
- !selectedVariant.value ? (vue.openBlock(), vue.createBlock(Price.default, {
173
- key: 1,
174
- product: product.value,
175
- size: "big",
176
- class: "flex gap-micro flex-center pd-small br-solid br-1px br-black-transp-10 w-max mn-b-medium"
177
- }, null, 8, ["product"])) : (vue.openBlock(), vue.createElementBlock("div", _hoisted_5, [
178
- vue.createElementVNode("span", _hoisted_6, vue.toDisplayString(vue.unref(returnCurrency)()) + vue.toDisplayString(selectedVariant.value.price.toFixed(2)), 1)
179
- ])),
180
- product.value.description ? (vue.openBlock(), vue.createElementBlock("p", _hoisted_7, vue.toDisplayString(((_a = product.value.translations) == null ? void 0 : _a.length) > 1 ? vue.unref(t)("description") : product.value.description), 1)) : vue.createCommentVNode("", true),
181
- product.value.variants.length > 0 ? (vue.openBlock(), vue.createBlock(ProductConfigurator.default, {
182
- key: 4,
179
+ product.value.description ? (vue.openBlock(), vue.createElementBlock("p", _hoisted_5, vue.toDisplayString(((_a = product.value.translations) == null ? void 0 : _a.length) > 1 ? vue.unref(t)("description") : product.value.description), 1)) : vue.createCommentVNode("", true),
180
+ ((_b = product.value.variants) == null ? void 0 : _b.length) > 0 ? (vue.openBlock(), vue.createBlock(ProductConfigurator.default, {
181
+ key: 2,
183
182
  "product-variants": product.value.variants,
184
183
  "product-id": product.value._id,
185
184
  "product-name": product.value.name,
@@ -189,21 +188,34 @@ const _sfc_main = {
189
188
  onAddToCart: handleAddVariantToCart,
190
189
  onUpdateImages: handleUpdateImages
191
190
  }, null, 8, ["product-variants", "product-id", "product-name", "discounts"])) : vue.createCommentVNode("", true),
192
- vue.createElementVNode("div", _hoisted_8, [
191
+ product.value.included ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_6, [
192
+ vue.createVNode(IconList.default, { class: "mn-r-micro i-medium" }),
193
+ _cache[0] || (_cache[0] = vue.createElementVNode("p", { class: "t-medium" }, "Included", -1))
194
+ ])) : vue.createCommentVNode("", true),
195
+ product.value.included ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_7, [
196
+ vue.createElementVNode("div", _hoisted_8, [
197
+ vue.createElementVNode("p", {
198
+ class: "t-medium",
199
+ style: { "white-space": "pre-line" },
200
+ innerHTML: product.value.included
201
+ }, null, 8, _hoisted_9)
202
+ ])
203
+ ])) : vue.createCommentVNode("", true),
204
+ vue.createElementVNode("div", _hoisted_10, [
193
205
  vue.createVNode(IconInfo.default, { class: "mn-r-micro i-medium" }),
194
- _cache[0] || (_cache[0] = vue.createElementVNode("p", { class: "t-medium" }, "Product Details", -1))
206
+ _cache[1] || (_cache[1] = vue.createElementVNode("p", { class: "t-medium" }, "Product Details", -1))
195
207
  ]),
196
- vue.createElementVNode("div", _hoisted_9, [
208
+ vue.createElementVNode("div", _hoisted_11, [
197
209
  product.value.attributes && product.value.attributes.length > 0 ? (vue.openBlock(true), vue.createElementBlock(vue.Fragment, { key: 0 }, vue.renderList(product.value.attributes, (attributes) => {
198
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_10, [
199
- vue.createElementVNode("p", _hoisted_11, vue.toDisplayString(attributes.name), 1),
210
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_12, [
211
+ vue.createElementVNode("p", _hoisted_13, vue.toDisplayString(attributes.name), 1),
200
212
  vue.createElementVNode("p", null, vue.toDisplayString(attributes.value), 1)
201
213
  ]);
202
214
  }), 256)) : vue.createCommentVNode("", true)
203
215
  ]),
204
- vue.createElementVNode("div", _hoisted_12, [
216
+ vue.createElementVNode("div", _hoisted_14, [
205
217
  vue.createVNode(IconGroups.default, { class: "mn-r-micro i-medium" }),
206
- _cache[1] || (_cache[1] = vue.createElementVNode("p", { class: "t-medium" }, "Provided by", -1))
218
+ _cache[2] || (_cache[2] = vue.createElementVNode("p", { class: "t-medium" }, "Provided by", -1))
207
219
  ]),
208
220
  product.value.owner ? (vue.openBlock(), vue.createBlock(CardOrganization.default, {
209
221
  key: 5,
@@ -215,9 +227,14 @@ const _sfc_main = {
215
227
  }, null, 8, ["organization"])) : vue.createCommentVNode("", true)
216
228
  ])
217
229
  ]),
218
- vue.createElementVNode("div", _hoisted_13, [
219
- _cache[2] || (_cache[2] = vue.createElementVNode("h3", { class: "pd-b-small" }, "Most Popular", -1)),
220
- vue.createVNode(PopularProducts.default, { class: "mn-r-big-negative mn-l-big-negative" })
230
+ product.value.recommended.length > 0 ? (vue.openBlock(), vue.createBlock(ProductsRecommended.default, {
231
+ key: 0,
232
+ products: product.value.recommended,
233
+ class: "mn-t-big h-max pos-relative"
234
+ }, null, 8, ["products"])) : vue.createCommentVNode("", true),
235
+ vue.createElementVNode("div", _hoisted_15, [
236
+ _cache[3] || (_cache[3] = vue.createElementVNode("h3", { class: "pd-b-small" }, "Most Popular", -1)),
237
+ vue.createVNode(ProductsPopular.default, { class: "mn-r-big-negative mn-l-big-negative" })
221
238
  ])
222
239
  ])) : vue.createCommentVNode("", true);
223
240
  };
@@ -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=\"h-100 w-100 mobile:pd-thin pd-big bg-white\">\n <div class=\"cols-2-1_2 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-small\">{{ product.name }}</h2>\n \n <!-- Показываем цену, если нет вариантов или не выбран ни один вариант -->\n <Price \n v-if=\"!selectedVariant\"\n :product=\"product\" \n size=\"big\" \n class=\"flex gap-micro flex-center pd-small br-solid br-1px br-black-transp-10 w-max mn-b-medium\" \n />\n \n <!-- Показываем цену выбранного варианта -->\n <div \n v-else \n class=\"flex gap-micro flex-center pd-small br-solid br-1px br-black-transp-10 w-max mn-b-medium\"\n >\n <span class=\"h2 t-bold\">{{ returnCurrency() }}{{ selectedVariant.price.toFixed(2) }}</span>\n </div>\n\n <p v-if=\"product.description\" class=\"w-100 mn-b-medium\">\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=\"handleAddVariantToCart\"\n @update-images=\"handleUpdateImages\"\n />\n\n <div 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 <div class=\"h-max mn-t-big pos-relative\">\n <h3 class=\"pd-b-small\">Most Popular</h3>\n <PopularProducts 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/DatePicker/Calendar.vue'\n\nimport IconEdit from '@martyrs/src/modules/icons/navigation/IconEdit.vue'\nimport IconShopcartAdd from '@martyrs/src/modules/icons/actions/IconShopcartAdd.vue'\n\nimport IconInfo from '@martyrs/src/modules/icons/navigation/IconInfo.vue'\nimport IconGroups from '@martyrs/src/modules/icons/entities/IconGroups.vue'\n\nimport ProductImages from '@martyrs/src/modules/products/components/blocks/ProductImages.vue'\nimport Price from '@martyrs/src/modules/products/components/elements/Price.vue'\nimport PopularProducts from '@martyrs/src/modules/products/components/sections/PopularProducts.vue'\nimport ProductConfigurator from '@martyrs/src/modules/products/components/sections/ProductConfigurator.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 })\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 handleAddVariantToCart(variantItem) {\n try {\n if (!shopcart.state.organization) {\n shopcart.state.organization = product.value.owner.target._id\n }\n \n // Проверка на товар с арендой\n if (product.value.listing === 'rent') {\n const selectedDates = await proxy.$dateSelector({\n product: product.value\n });\n \n if (!selectedDates) throw new Error('Date selection cancelled')\n \n variantItem.selectedDates = selectedDates\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 // Аналитика: регистрируем добавление в корзину\n if (typeof gtag === 'function') {\n gtag('event', 'add_to_cart', {\n currency: returnCurrency(),\n value: variantItem.price || 0,\n items: [{\n item_id: variantItem._id,\n item_name: variantItem.name,\n price: variantItem.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 // Добавляем вариант в корзину\n await shopcart.actions.addVariantToCart(variantItem, product.value.owner.target._id)\n return true\n } catch (error) {\n console.error('Error while adding variant to cart:', error)\n throw error\n }\n}\n\n// Оригинальная функция добавления товара в корзину (для товаров без вариантов)\nasync function addToCart(product) {\n let selectedDates = null\n\n try {\n if (!shopcart.state.organization) {\n shopcart.state.organization = product.owner.target._id\n }\n if (product.listing === 'rent') {\n selectedDates = await proxy.$dateSelector({\n product: product.value\n });\n \n if (!selectedDates) throw new Error('Date selection cancelled')\n \n }\n // Если организация товара отличается от текущей в корзине\n if (shopcart.state.organization !== product.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.owner.target._id\n }\n\n if (typeof gtag === 'function') {\n gtag('event', 'add_to_cart', {\n currency: returnCurrency(),\n value: product.price || 0,\n items: [{\n item_id: product._id,\n item_name: product.name,\n price: product.price || 0,\n quantity: 1,\n item_category: product.category || '',\n item_brand: product.owner?.target?.profile?.name || ''\n }]\n });\n }\n \n await shopcart.actions.addProductToCart(product, product.owner.target._id, selectedDates)\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 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=\"handleAddVariantToCart\"\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 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/DatePicker/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: ['recommended'] })\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 handleAddVariantToCart(variantItem) {\n try {\n if (!shopcart.state.organization) {\n shopcart.state.organization = product.value.owner.target._id\n }\n \n // Проверка на товар с арендой\n if (product.value.listing === 'rent') {\n const selectedDates = await proxy.$dateSelector({\n product: product.value\n });\n \n if (!selectedDates) throw new Error('Date selection cancelled')\n \n variantItem.selectedDates = selectedDates\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 // Аналитика: регистрируем добавление в корзину\n if (typeof gtag === 'function') {\n gtag('event', 'add_to_cart', {\n currency: returnCurrency(),\n value: variantItem.price || 0,\n items: [{\n item_id: variantItem._id,\n item_name: variantItem.name,\n price: variantItem.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 // Добавляем вариант в корзину\n await shopcart.actions.addVariantToCart(variantItem, product.value.owner.target._id)\n return true\n } catch (error) {\n console.error('Error while adding variant to cart:', error)\n throw error\n }\n}\n\n// Оригинальная функция добавления товара в корзину (для товаров без вариантов)\nasync function addToCart(product) {\n let selectedDates = null\n\n try {\n if (!shopcart.state.organization) {\n shopcart.state.organization = product.owner.target._id\n }\n if (product.listing === 'rent') {\n selectedDates = await proxy.$dateSelector({\n product: product.value\n });\n \n if (!selectedDates) throw new Error('Date selection cancelled')\n \n }\n // Если организация товара отличается от текущей в корзине\n if (shopcart.state.organization !== product.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.owner.target._id\n }\n\n if (typeof gtag === 'function') {\n gtag('event', 'add_to_cart', {\n currency: returnCurrency(),\n value: product.price || 0,\n items: [{\n item_id: product._id,\n item_name: product.name,\n price: product.price || 0,\n quantity: 1,\n item_category: product.category || '',\n item_brand: product.owner?.target?.profile?.name || ''\n }]\n });\n }\n \n await shopcart.actions.addProductToCart(product, product.owner.target._id, selectedDates)\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,4 +1,4 @@
1
- import { getCurrentInstance, computed, ref, onMounted, resolveComponent, createElementBlock, createCommentVNode, openBlock, createElementVNode, createVNode, createBlock, unref, withCtx, toDisplayString, Fragment, renderList } from "vue";
1
+ import { getCurrentInstance, computed, ref, onMounted, resolveComponent, createElementBlock, createCommentVNode, openBlock, createElementVNode, createBlock, createVNode, unref, withCtx, toDisplayString, Fragment, renderList } from "vue";
2
2
  import { useRoute, useRouter } from "vue-router";
3
3
  import { useI18n } from "vue-i18n";
4
4
  import { useGlobalMixins } from "../../../globals/views/mixins/mixins.js";
@@ -8,39 +8,46 @@ import { state, actions } from "../../store/products.js";
8
8
  import "../../store/categories.js";
9
9
  import { state as state$2, actions as actions$1 } from "../../../orders/store/shopcart.js";
10
10
  /* empty css */
11
- /* empty css */
11
+ /* empty css */
12
12
  /* empty css */
13
13
  /* empty css */
14
14
  import _sfc_main$1 from "../../../icons/navigation/IconEdit.vue.js";
15
15
  import _sfc_main$4 from "../../../icons/navigation/IconInfo.vue.js";
16
+ import _sfc_main$3 from "../../../icons/entities/IconList.vue.js";
16
17
  import _sfc_main$5 from "../../../icons/entities/IconGroups.vue.js";
17
18
  import ProductImages from "../blocks/ProductImages.vue.js";
18
- import _sfc_main$2 from "../elements/Price.vue.js";
19
- import _sfc_main$7 from "../sections/PopularProducts.vue.js";
20
- import _sfc_main$3 from "../sections/ProductConfigurator.vue.js";
19
+ import _sfc_main$2 from "../sections/ProductConfigurator.vue.js";
20
+ import _sfc_main$7 from "../sections/ProductsRecommended.vue.js";
21
+ import _sfc_main$8 from "../sections/ProductsPopular.vue.js";
21
22
  import _sfc_main$6 from "../../../organizations/components/blocks/CardOrganization.vue.js";
22
23
  const _hoisted_1 = {
23
24
  key: 0,
24
- class: "h-100 w-100 mobile:pd-thin pd-big bg-white"
25
+ class: "w-100 mobile:pd-thin pd-small bg-white"
25
26
  };
26
- const _hoisted_2 = { class: "cols-2-1_2 w-100 gap-medium" };
27
+ const _hoisted_2 = { class: "cols-2 mobile:cols-1 w-100 gap-medium" };
27
28
  const _hoisted_3 = { class: "pos-relative w-100 h-100 flex-column flex-h-center flex" };
28
- const _hoisted_4 = { class: "w-100 h1-product mn-b-small" };
29
+ const _hoisted_4 = { class: "w-100 h1-product mn-b-medium" };
29
30
  const _hoisted_5 = {
30
- key: 2,
31
- class: "flex gap-micro flex-center pd-small br-solid br-1px br-black-transp-10 w-max mn-b-medium"
31
+ key: 1,
32
+ class: "w-100 mn-b-medium",
33
+ style: { "white-space": "pre-line" }
32
34
  };
33
- const _hoisted_6 = { class: "h2 t-bold" };
34
- const _hoisted_7 = {
35
+ const _hoisted_6 = {
35
36
  key: 3,
36
- class: "w-100 mn-b-medium"
37
+ class: "mn-b-small flex-nowrap flex flex-v-center"
37
38
  };
38
- const _hoisted_8 = { class: "mn-b-small flex-nowrap flex flex-v-center" };
39
- const _hoisted_9 = { class: "cols-2 mn-b-medium w-100 gap-small" };
40
- const _hoisted_10 = { class: "w-100 pd-small radius-small bg-light product-attributes" };
41
- const _hoisted_11 = { class: "mn-b-thin t-demi" };
42
- const _hoisted_12 = { class: "mn-b-small flex-nowrap flex flex-v-center" };
43
- const _hoisted_13 = { class: "h-max mn-t-big pos-relative" };
39
+ const _hoisted_7 = {
40
+ key: 4,
41
+ class: "cols-1 mn-b-medium w-100"
42
+ };
43
+ const _hoisted_8 = { class: "w-100 pd-small radius-small flex flex-column gap-small bg-light" };
44
+ const _hoisted_9 = ["innerHTML"];
45
+ const _hoisted_10 = { class: "mn-b-small flex-nowrap flex flex-v-center" };
46
+ const _hoisted_11 = { class: "cols-2 mn-b-medium w-100 gap-small" };
47
+ const _hoisted_12 = { class: "w-100 pd-small radius-small bg-light product-attributes" };
48
+ const _hoisted_13 = { class: "mn-b-thin t-demi" };
49
+ const _hoisted_14 = { class: "mn-b-small flex-nowrap flex flex-v-center" };
50
+ const _hoisted_15 = { class: "h-max mn-t-big pos-relative" };
44
51
  const _sfc_main = {
45
52
  __name: "Product",
46
53
  props: {
@@ -69,7 +76,7 @@ const _sfc_main = {
69
76
  onMounted(async () => {
70
77
  var _a, _b;
71
78
  emits("page-loading");
72
- await actions.read({ _id: route.params.product });
79
+ await actions.read({ _id: route.params.product, lookup: ["recommended"] });
73
80
  currentImages.value = [...productImages.value];
74
81
  if (typeof gtag === "function") {
75
82
  gtag("event", "view_item", {
@@ -144,7 +151,7 @@ const _sfc_main = {
144
151
  }
145
152
  }
146
153
  return (_ctx, _cache) => {
147
- var _a;
154
+ var _a, _b;
148
155
  const _component_router_link = resolveComponent("router-link");
149
156
  return state.current ? (openBlock(), createElementBlock("div", _hoisted_1, [
150
157
  createElementVNode("div", _hoisted_2, [
@@ -167,17 +174,9 @@ const _sfc_main = {
167
174
  _: 1
168
175
  }, 8, ["to"])) : createCommentVNode("", true),
169
176
  createElementVNode("h2", _hoisted_4, toDisplayString(product.value.name), 1),
170
- !selectedVariant.value ? (openBlock(), createBlock(_sfc_main$2, {
171
- key: 1,
172
- product: product.value,
173
- size: "big",
174
- class: "flex gap-micro flex-center pd-small br-solid br-1px br-black-transp-10 w-max mn-b-medium"
175
- }, null, 8, ["product"])) : (openBlock(), createElementBlock("div", _hoisted_5, [
176
- createElementVNode("span", _hoisted_6, toDisplayString(unref(returnCurrency)()) + toDisplayString(selectedVariant.value.price.toFixed(2)), 1)
177
- ])),
178
- product.value.description ? (openBlock(), createElementBlock("p", _hoisted_7, toDisplayString(((_a = product.value.translations) == null ? void 0 : _a.length) > 1 ? unref(t)("description") : product.value.description), 1)) : createCommentVNode("", true),
179
- product.value.variants.length > 0 ? (openBlock(), createBlock(_sfc_main$3, {
180
- key: 4,
177
+ product.value.description ? (openBlock(), createElementBlock("p", _hoisted_5, toDisplayString(((_a = product.value.translations) == null ? void 0 : _a.length) > 1 ? unref(t)("description") : product.value.description), 1)) : createCommentVNode("", true),
178
+ ((_b = product.value.variants) == null ? void 0 : _b.length) > 0 ? (openBlock(), createBlock(_sfc_main$2, {
179
+ key: 2,
181
180
  "product-variants": product.value.variants,
182
181
  "product-id": product.value._id,
183
182
  "product-name": product.value.name,
@@ -187,21 +186,34 @@ const _sfc_main = {
187
186
  onAddToCart: handleAddVariantToCart,
188
187
  onUpdateImages: handleUpdateImages
189
188
  }, null, 8, ["product-variants", "product-id", "product-name", "discounts"])) : createCommentVNode("", true),
190
- createElementVNode("div", _hoisted_8, [
189
+ product.value.included ? (openBlock(), createElementBlock("div", _hoisted_6, [
190
+ createVNode(_sfc_main$3, { class: "mn-r-micro i-medium" }),
191
+ _cache[0] || (_cache[0] = createElementVNode("p", { class: "t-medium" }, "Included", -1))
192
+ ])) : createCommentVNode("", true),
193
+ product.value.included ? (openBlock(), createElementBlock("div", _hoisted_7, [
194
+ createElementVNode("div", _hoisted_8, [
195
+ createElementVNode("p", {
196
+ class: "t-medium",
197
+ style: { "white-space": "pre-line" },
198
+ innerHTML: product.value.included
199
+ }, null, 8, _hoisted_9)
200
+ ])
201
+ ])) : createCommentVNode("", true),
202
+ createElementVNode("div", _hoisted_10, [
191
203
  createVNode(_sfc_main$4, { class: "mn-r-micro i-medium" }),
192
- _cache[0] || (_cache[0] = createElementVNode("p", { class: "t-medium" }, "Product Details", -1))
204
+ _cache[1] || (_cache[1] = createElementVNode("p", { class: "t-medium" }, "Product Details", -1))
193
205
  ]),
194
- createElementVNode("div", _hoisted_9, [
206
+ createElementVNode("div", _hoisted_11, [
195
207
  product.value.attributes && product.value.attributes.length > 0 ? (openBlock(true), createElementBlock(Fragment, { key: 0 }, renderList(product.value.attributes, (attributes) => {
196
- return openBlock(), createElementBlock("div", _hoisted_10, [
197
- createElementVNode("p", _hoisted_11, toDisplayString(attributes.name), 1),
208
+ return openBlock(), createElementBlock("div", _hoisted_12, [
209
+ createElementVNode("p", _hoisted_13, toDisplayString(attributes.name), 1),
198
210
  createElementVNode("p", null, toDisplayString(attributes.value), 1)
199
211
  ]);
200
212
  }), 256)) : createCommentVNode("", true)
201
213
  ]),
202
- createElementVNode("div", _hoisted_12, [
214
+ createElementVNode("div", _hoisted_14, [
203
215
  createVNode(_sfc_main$5, { class: "mn-r-micro i-medium" }),
204
- _cache[1] || (_cache[1] = createElementVNode("p", { class: "t-medium" }, "Provided by", -1))
216
+ _cache[2] || (_cache[2] = createElementVNode("p", { class: "t-medium" }, "Provided by", -1))
205
217
  ]),
206
218
  product.value.owner ? (openBlock(), createBlock(_sfc_main$6, {
207
219
  key: 5,
@@ -213,9 +225,14 @@ const _sfc_main = {
213
225
  }, null, 8, ["organization"])) : createCommentVNode("", true)
214
226
  ])
215
227
  ]),
216
- createElementVNode("div", _hoisted_13, [
217
- _cache[2] || (_cache[2] = createElementVNode("h3", { class: "pd-b-small" }, "Most Popular", -1)),
218
- createVNode(_sfc_main$7, { class: "mn-r-big-negative mn-l-big-negative" })
228
+ product.value.recommended.length > 0 ? (openBlock(), createBlock(_sfc_main$7, {
229
+ key: 0,
230
+ products: product.value.recommended,
231
+ class: "mn-t-big h-max pos-relative"
232
+ }, null, 8, ["products"])) : createCommentVNode("", true),
233
+ createElementVNode("div", _hoisted_15, [
234
+ _cache[3] || (_cache[3] = createElementVNode("h3", { class: "pd-b-small" }, "Most Popular", -1)),
235
+ createVNode(_sfc_main$8, { class: "mn-r-big-negative mn-l-big-negative" })
219
236
  ])
220
237
  ])) : createCommentVNode("", true);
221
238
  };
@@ -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=\"h-100 w-100 mobile:pd-thin pd-big bg-white\">\n <div class=\"cols-2-1_2 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-small\">{{ product.name }}</h2>\n \n <!-- Показываем цену, если нет вариантов или не выбран ни один вариант -->\n <Price \n v-if=\"!selectedVariant\"\n :product=\"product\" \n size=\"big\" \n class=\"flex gap-micro flex-center pd-small br-solid br-1px br-black-transp-10 w-max mn-b-medium\" \n />\n \n <!-- Показываем цену выбранного варианта -->\n <div \n v-else \n class=\"flex gap-micro flex-center pd-small br-solid br-1px br-black-transp-10 w-max mn-b-medium\"\n >\n <span class=\"h2 t-bold\">{{ returnCurrency() }}{{ selectedVariant.price.toFixed(2) }}</span>\n </div>\n\n <p v-if=\"product.description\" class=\"w-100 mn-b-medium\">\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=\"handleAddVariantToCart\"\n @update-images=\"handleUpdateImages\"\n />\n\n <div 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 <div class=\"h-max mn-t-big pos-relative\">\n <h3 class=\"pd-b-small\">Most Popular</h3>\n <PopularProducts 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/DatePicker/Calendar.vue'\n\nimport IconEdit from '@martyrs/src/modules/icons/navigation/IconEdit.vue'\nimport IconShopcartAdd from '@martyrs/src/modules/icons/actions/IconShopcartAdd.vue'\n\nimport IconInfo from '@martyrs/src/modules/icons/navigation/IconInfo.vue'\nimport IconGroups from '@martyrs/src/modules/icons/entities/IconGroups.vue'\n\nimport ProductImages from '@martyrs/src/modules/products/components/blocks/ProductImages.vue'\nimport Price from '@martyrs/src/modules/products/components/elements/Price.vue'\nimport PopularProducts from '@martyrs/src/modules/products/components/sections/PopularProducts.vue'\nimport ProductConfigurator from '@martyrs/src/modules/products/components/sections/ProductConfigurator.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 })\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 handleAddVariantToCart(variantItem) {\n try {\n if (!shopcart.state.organization) {\n shopcart.state.organization = product.value.owner.target._id\n }\n \n // Проверка на товар с арендой\n if (product.value.listing === 'rent') {\n const selectedDates = await proxy.$dateSelector({\n product: product.value\n });\n \n if (!selectedDates) throw new Error('Date selection cancelled')\n \n variantItem.selectedDates = selectedDates\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 // Аналитика: регистрируем добавление в корзину\n if (typeof gtag === 'function') {\n gtag('event', 'add_to_cart', {\n currency: returnCurrency(),\n value: variantItem.price || 0,\n items: [{\n item_id: variantItem._id,\n item_name: variantItem.name,\n price: variantItem.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 // Добавляем вариант в корзину\n await shopcart.actions.addVariantToCart(variantItem, product.value.owner.target._id)\n return true\n } catch (error) {\n console.error('Error while adding variant to cart:', error)\n throw error\n }\n}\n\n// Оригинальная функция добавления товара в корзину (для товаров без вариантов)\nasync function addToCart(product) {\n let selectedDates = null\n\n try {\n if (!shopcart.state.organization) {\n shopcart.state.organization = product.owner.target._id\n }\n if (product.listing === 'rent') {\n selectedDates = await proxy.$dateSelector({\n product: product.value\n });\n \n if (!selectedDates) throw new Error('Date selection cancelled')\n \n }\n // Если организация товара отличается от текущей в корзине\n if (shopcart.state.organization !== product.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.owner.target._id\n }\n\n if (typeof gtag === 'function') {\n gtag('event', 'add_to_cart', {\n currency: returnCurrency(),\n value: product.price || 0,\n items: [{\n item_id: product._id,\n item_name: product.name,\n price: product.price || 0,\n quantity: 1,\n item_category: product.category || '',\n item_brand: product.owner?.target?.profile?.name || ''\n }]\n });\n }\n \n await shopcart.actions.addProductToCart(product, product.owner.target._id, selectedDates)\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 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=\"handleAddVariantToCart\"\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 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/DatePicker/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: ['recommended'] })\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 handleAddVariantToCart(variantItem) {\n try {\n if (!shopcart.state.organization) {\n shopcart.state.organization = product.value.owner.target._id\n }\n \n // Проверка на товар с арендой\n if (product.value.listing === 'rent') {\n const selectedDates = await proxy.$dateSelector({\n product: product.value\n });\n \n if (!selectedDates) throw new Error('Date selection cancelled')\n \n variantItem.selectedDates = selectedDates\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 // Аналитика: регистрируем добавление в корзину\n if (typeof gtag === 'function') {\n gtag('event', 'add_to_cart', {\n currency: returnCurrency(),\n value: variantItem.price || 0,\n items: [{\n item_id: variantItem._id,\n item_name: variantItem.name,\n price: variantItem.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 // Добавляем вариант в корзину\n await shopcart.actions.addVariantToCart(variantItem, product.value.owner.target._id)\n return true\n } catch (error) {\n console.error('Error while adding variant to cart:', error)\n throw error\n }\n}\n\n// Оригинальная функция добавления товара в корзину (для товаров без вариантов)\nasync function addToCart(product) {\n let selectedDates = null\n\n try {\n if (!shopcart.state.organization) {\n shopcart.state.organization = product.owner.target._id\n }\n if (product.listing === 'rent') {\n selectedDates = await proxy.$dateSelector({\n product: product.value\n });\n \n if (!selectedDates) throw new Error('Date selection cancelled')\n \n }\n // Если организация товара отличается от текущей в корзине\n if (shopcart.state.organization !== product.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.owner.target._id\n }\n\n if (typeof gtag === 'function') {\n gtag('event', 'add_to_cart', {\n currency: returnCurrency(),\n value: product.price || 0,\n items: [{\n item_id: product._id,\n item_name: product.name,\n price: product.price || 0,\n quantity: 1,\n item_category: product.category || '',\n item_brand: product.owner?.target?.profile?.name || ''\n }]\n });\n }\n \n await shopcart.actions.addProductToCart(product, product.owner.target._id, selectedDates)\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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"}