@ozdao/martyrs 0.2.570 → 0.2.572

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 (832) hide show
  1. package/dist/_virtual/dayjs.min.js +1 -1
  2. package/dist/_virtual/weekOfYear.js +1 -1
  3. package/dist/builder.js +1248 -106
  4. package/dist/{main-BFvlam0J.js → main-BfEQkhXS.js} +1173 -1191
  5. package/dist/martyrs/dist/{main-BFvlam0J.js → main-BfEQkhXS.js} +94 -112
  6. package/dist/martyrs/dist/main-BfEQkhXS.js.map +1 -0
  7. package/dist/martyrs/dist/{web-CH5wzMHy.js → web-BqTV9va1.js} +3 -3
  8. package/dist/martyrs/dist/{web-CH5wzMHy.js.map → web-BqTV9va1.js.map} +1 -1
  9. package/dist/martyrs/node_modules/.pnpm/{@capacitor_core@7.0.1 → @capacitor_core@7.4.4}/node_modules/@capacitor/core/dist/index.js +2 -1
  10. package/dist/martyrs/node_modules/.pnpm/@capacitor_core@7.4.4/node_modules/@capacitor/core/dist/index.js.map +1 -0
  11. package/dist/martyrs/node_modules/.pnpm/{@capacitor_preferences@7.0.0_@capacitor_core@7.0.1 → @capacitor_preferences@7.0.2_@capacitor_core@7.4.4}/node_modules/@capacitor/preferences/dist/esm/index.js +1 -1
  12. package/dist/martyrs/node_modules/.pnpm/{@capacitor_preferences@7.0.0_@capacitor_core@7.0.1 → @capacitor_preferences@7.0.2_@capacitor_core@7.4.4}/node_modules/@capacitor/preferences/dist/esm/index.js.map +1 -1
  13. package/dist/martyrs/node_modules/.pnpm/{@capacitor_preferences@7.0.0_@capacitor_core@7.0.1 → @capacitor_preferences@7.0.2_@capacitor_core@7.4.4}/node_modules/@capacitor/preferences/dist/esm/web.js +1 -1
  14. package/dist/martyrs/node_modules/.pnpm/{@capacitor_preferences@7.0.0_@capacitor_core@7.0.1 → @capacitor_preferences@7.0.2_@capacitor_core@7.4.4}/node_modules/@capacitor/preferences/dist/esm/web.js.map +1 -1
  15. package/dist/{node_modules/.pnpm/@vue_server-renderer@3.5.13_vue@3.5.13_typescript@5.8.3_ → martyrs}/node_modules/@vue/server-renderer/dist/server-renderer.esm-bundler.js +1 -1
  16. package/dist/martyrs/node_modules/@vue/server-renderer/dist/server-renderer.esm-bundler.js.map +1 -0
  17. package/dist/martyrs/node_modules/@vue/shared/dist/shared.esm-bundler.js.map +1 -0
  18. package/dist/{node_modules/.pnpm/dayjs@1.11.13 → martyrs}/node_modules/dayjs/dayjs.min.js +1 -1
  19. package/dist/martyrs/node_modules/dayjs/dayjs.min.js.map +1 -0
  20. package/dist/{node_modules/.pnpm/dayjs@1.11.13 → martyrs}/node_modules/dayjs/plugin/weekOfYear.js +1 -1
  21. package/dist/martyrs/node_modules/dayjs/plugin/weekOfYear.js.map +1 -0
  22. package/dist/martyrs/node_modules/uuid/dist/esm-browser/regex.js +5 -0
  23. package/dist/martyrs/node_modules/uuid/dist/esm-browser/regex.js.map +1 -0
  24. package/dist/martyrs/node_modules/uuid/dist/esm-browser/rng.js +15 -0
  25. package/dist/martyrs/node_modules/uuid/dist/esm-browser/rng.js.map +1 -0
  26. package/dist/martyrs/node_modules/uuid/dist/esm-browser/stringify.js +17 -0
  27. package/dist/martyrs/node_modules/uuid/dist/esm-browser/stringify.js.map +1 -0
  28. package/dist/martyrs/node_modules/uuid/dist/esm-browser/v4.js +13 -0
  29. package/dist/martyrs/node_modules/uuid/dist/esm-browser/v4.js.map +1 -0
  30. package/dist/martyrs/node_modules/uuid/dist/esm-browser/validate.js +8 -0
  31. package/dist/martyrs/node_modules/uuid/dist/esm-browser/validate.js.map +1 -0
  32. package/dist/martyrs/src/components/Block/Block.vue.js +1 -1
  33. package/dist/martyrs/src/components/Block/Block.vue.js.map +1 -1
  34. package/dist/martyrs/src/components/BottomSheet/BottomSheet.vue.js +1 -1
  35. package/dist/martyrs/src/components/BottomSheet/BottomSheet.vue.js.map +1 -1
  36. package/dist/martyrs/src/components/Button/{Button.vue.js → Button.vue2.js} +2 -2
  37. package/dist/martyrs/src/components/Button/Button.vue2.js.map +1 -0
  38. package/dist/martyrs/src/components/Calendar/Calendar.vue2.js +6 -6
  39. package/dist/martyrs/src/components/Calendar/Calendar.vue2.js.map +1 -1
  40. package/dist/martyrs/src/components/Checkbox/Checkbox.vue.js +2 -2
  41. package/dist/martyrs/src/components/Checkbox/Checkbox.vue.js.map +1 -1
  42. package/dist/martyrs/src/components/Chips/Chips.vue.js +2 -2
  43. package/dist/martyrs/src/components/Countdown/Countdown.vue.js +5 -5
  44. package/dist/martyrs/src/components/Countdown/Countdown.vue.js.map +1 -1
  45. package/dist/martyrs/src/components/DatePicker/DatePicker.vue.js +4 -4
  46. package/dist/martyrs/src/components/DatePicker/DatePicker.vue.js.map +1 -1
  47. package/dist/martyrs/src/components/Dropdown/{Dropdown.vue.js → Dropdown.vue2.js} +2 -2
  48. package/dist/martyrs/src/components/Dropdown/Dropdown.vue2.js.map +1 -0
  49. package/dist/martyrs/src/components/EditImages/EditImages.vue2.js +1 -1
  50. package/dist/martyrs/src/components/EditImages/EditImages.vue2.js.map +1 -1
  51. package/dist/martyrs/src/components/Feed/Feed.vue.js +2 -2
  52. package/dist/martyrs/src/components/Feed/Feed.vue.js.map +1 -1
  53. package/dist/martyrs/src/components/Field/{Field.vue2.js → Field.vue.js} +2 -2
  54. package/dist/martyrs/src/components/Field/Field.vue.js.map +1 -0
  55. package/dist/martyrs/src/components/FieldBig/FieldBig.vue.js +4 -4
  56. package/dist/martyrs/src/components/FieldBig/FieldBig.vue.js.map +1 -1
  57. package/dist/martyrs/src/components/FieldPhone/FieldPhone.vue.js +1 -1
  58. package/dist/martyrs/src/components/FieldPhone/FieldPhone.vue.js.map +1 -1
  59. package/dist/martyrs/src/components/FieldTags/BlockTags.vue.js +1 -1
  60. package/dist/martyrs/src/components/FieldTags/BlockTags.vue.js.map +1 -1
  61. package/dist/martyrs/src/components/Loader/Loader.vue2.js +1 -1
  62. package/dist/martyrs/src/components/Loader/Loader.vue2.js.map +1 -1
  63. package/dist/martyrs/src/components/Menu/{Menu.vue.js → Menu.vue2.js} +2 -2
  64. package/dist/martyrs/src/components/Menu/Menu.vue2.js.map +1 -0
  65. package/dist/martyrs/src/components/Menu/MenuItem.vue.js +2 -2
  66. package/dist/martyrs/src/components/Menu/MenuItem.vue.js.map +1 -1
  67. package/dist/martyrs/src/components/PhotoViewer/PhotoViewer.vue.js +2 -2
  68. package/dist/martyrs/src/components/PhotoViewer/PhotoViewer.vue.js.map +1 -1
  69. package/dist/martyrs/src/components/Radio/Radio.vue.js +1 -1
  70. package/dist/martyrs/src/components/Radio/Radio.vue.js.map +1 -1
  71. package/dist/martyrs/src/components/Select/{Select.vue2.js → Select.vue.js} +4 -4
  72. package/dist/martyrs/src/components/Select/Select.vue.js.map +1 -0
  73. package/dist/martyrs/src/components/SelectMulti/{SelectMulti.vue.js → SelectMulti.vue2.js} +2 -2
  74. package/dist/martyrs/src/components/SelectMulti/SelectMulti.vue2.js.map +1 -0
  75. package/dist/martyrs/src/components/Table/Table.vue.js +3 -3
  76. package/dist/martyrs/src/components/Table/Table.vue.js.map +1 -1
  77. package/dist/martyrs/src/components/Text/Text.vue.js +1 -1
  78. package/dist/martyrs/src/components/Text/Text.vue.js.map +1 -1
  79. package/dist/martyrs/src/components/UploadImage/UploadImage.vue.js +3 -3
  80. package/dist/martyrs/src/components/UploadImage/UploadImage.vue.js.map +1 -1
  81. package/dist/martyrs/src/components/UploadImageMultiple/UploadImageMultiple.vue.js +3 -3
  82. package/dist/martyrs/src/components/UploadImageMultiple/UploadImageMultiple.vue.js.map +1 -1
  83. package/dist/martyrs/src/modules/auth/views/components/blocks/CardUser.vue.js +2 -2
  84. package/dist/martyrs/src/modules/auth/views/components/blocks/ProfileCard.vue.js +4 -4
  85. package/dist/martyrs/src/modules/auth/views/components/blocks/ProfileCard.vue.js.map +1 -1
  86. package/dist/martyrs/src/modules/auth/views/components/layouts/Auth.vue.js +1 -1
  87. package/dist/martyrs/src/modules/auth/views/components/layouts/Auth.vue.js.map +1 -1
  88. package/dist/martyrs/src/modules/auth/views/components/pages/EnterCode.vue.js +1 -1
  89. package/dist/martyrs/src/modules/auth/views/components/pages/EnterPassword.vue.js +4 -4
  90. package/dist/martyrs/src/modules/auth/views/components/pages/EnterPassword.vue.js.map +1 -1
  91. package/dist/martyrs/src/modules/auth/views/components/pages/Invite.vue.js +2 -2
  92. package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.js +9 -9
  93. package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.js.map +1 -1
  94. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileBlogposts.vue.js +1 -1
  95. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileBlogposts.vue.js.map +1 -1
  96. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditAccount.vue.js +2 -2
  97. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditAccount.vue.js.map +1 -1
  98. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditProfile.vue.js +2 -2
  99. package/dist/martyrs/src/modules/auth/views/components/pages/ResetPassword.vue.js +3 -3
  100. package/dist/martyrs/src/modules/auth/views/components/pages/ResetPassword.vue.js.map +1 -1
  101. package/dist/martyrs/src/modules/auth/views/components/pages/SignIn.vue.js +5 -5
  102. package/dist/martyrs/src/modules/auth/views/components/pages/SignIn.vue.js.map +1 -1
  103. package/dist/martyrs/src/modules/auth/views/components/pages/SignUp.vue.js +3 -3
  104. package/dist/martyrs/src/modules/auth/views/components/pages/SignUp.vue.js.map +1 -1
  105. package/dist/martyrs/src/modules/auth/views/components/pages/UserDashboard.vue.js +3 -3
  106. package/dist/martyrs/src/modules/auth/views/components/pages/UserDashboard.vue.js.map +1 -1
  107. package/dist/martyrs/src/modules/auth/views/components/sections/FeaturedUsers.vue.js +1 -1
  108. package/dist/martyrs/src/modules/auth/views/components/sections/FeaturedUsers.vue.js.map +1 -1
  109. package/dist/martyrs/src/modules/auth/views/components/sections/ProfileEditCredentials.vue.js +9 -9
  110. package/dist/martyrs/src/modules/auth/views/components/sections/ProfileEditCredentials.vue.js.map +1 -1
  111. package/dist/martyrs/src/modules/auth/views/components/sections/SliderFeatures.vue.js +1 -1
  112. package/dist/martyrs/src/modules/auth/views/components/sections/SliderFeatures.vue.js.map +1 -1
  113. package/dist/martyrs/src/modules/auth/views/store/auth.js +1 -1
  114. package/dist/martyrs/src/modules/backoffice/components/pages/Dashboard.vue.js +4 -4
  115. package/dist/martyrs/src/modules/backoffice/components/pages/Dashboard.vue.js.map +1 -1
  116. package/dist/martyrs/src/modules/backoffice/components/partials/Sidebar.vue.js +6 -6
  117. package/dist/martyrs/src/modules/backoffice/components/partials/Sidebar.vue.js.map +1 -1
  118. package/dist/martyrs/src/modules/chats/components/blocks/ChatMessage.vue.js +1 -1
  119. package/dist/martyrs/src/modules/chats/components/blocks/ChatMessage.vue.js.map +1 -1
  120. package/dist/martyrs/src/modules/chats/components/sections/ChatWindow.vue.js +2 -2
  121. package/dist/martyrs/src/modules/chats/components/sections/ChatWindow.vue.js.map +1 -1
  122. package/dist/martyrs/src/modules/community/components/blocks/Activity.vue.js +7 -7
  123. package/dist/martyrs/src/modules/community/components/blocks/CardBlogpost.vue.js +1 -1
  124. package/dist/martyrs/src/modules/community/components/blocks/CardBlogpost.vue.js.map +1 -1
  125. package/dist/martyrs/src/modules/community/components/blocks/FooterBlogpost.vue.js +4 -4
  126. package/dist/martyrs/src/modules/community/components/blocks/FooterBlogpost.vue.js.map +1 -1
  127. package/dist/martyrs/src/modules/community/components/layouts/Community.vue.js +11 -11
  128. package/dist/martyrs/src/modules/community/components/layouts/Community.vue.js.map +1 -1
  129. package/dist/martyrs/src/modules/community/components/pages/BlogPost.vue.js +1 -1
  130. package/dist/martyrs/src/modules/community/components/pages/CreateBlogPost.vue.js +3 -3
  131. package/dist/martyrs/src/modules/community/components/pages/CreateBlogPost.vue.js.map +1 -1
  132. package/dist/martyrs/src/modules/community/components/pages/Posts.vue.js +2 -2
  133. package/dist/martyrs/src/modules/community/components/pages/Posts.vue.js.map +1 -1
  134. package/dist/martyrs/src/modules/community/components/sections/Comment.vue.js +3 -3
  135. package/dist/martyrs/src/modules/community/components/sections/Comment.vue.js.map +1 -1
  136. package/dist/martyrs/src/modules/community/components/sections/Comments.vue.js +1 -1
  137. package/dist/martyrs/src/modules/constructor/components/elements/Audio.vue.js +1 -1
  138. package/dist/martyrs/src/modules/constructor/components/elements/Audio.vue.js.map +1 -1
  139. package/dist/martyrs/src/modules/constructor/components/elements/Card.vue.js +1 -1
  140. package/dist/martyrs/src/modules/constructor/components/elements/Embed.vue.js +2 -2
  141. package/dist/martyrs/src/modules/constructor/components/elements/Embed.vue.js.map +1 -1
  142. package/dist/martyrs/src/modules/constructor/components/elements/Textarea.vue2.js +1 -1
  143. package/dist/martyrs/src/modules/constructor/components/elements/Textarea.vue2.js.map +1 -1
  144. package/dist/martyrs/src/modules/constructor/components/elements/Video.vue.js +1 -1
  145. package/dist/martyrs/src/modules/constructor/components/elements/Video.vue.js.map +1 -1
  146. package/dist/martyrs/src/modules/constructor/components/sections/Constructor.vue.js +1 -1
  147. package/dist/martyrs/src/modules/core/views/classes/core.app.js +2 -1
  148. package/dist/martyrs/src/modules/core/views/classes/core.app.js.map +1 -1
  149. package/dist/martyrs/src/modules/core/views/components/blocks/BlockSearch.vue.js +1 -1
  150. package/dist/martyrs/src/modules/core/views/components/blocks/BlockSorting.vue.js +2 -2
  151. package/dist/martyrs/src/modules/core/views/components/blocks/BlockSorting.vue.js.map +1 -1
  152. package/dist/martyrs/src/modules/core/views/components/blocks/CardHeader.vue.js +9 -9
  153. package/dist/martyrs/src/modules/core/views/components/blocks/CardHeader.vue.js.map +1 -1
  154. package/dist/martyrs/src/modules/core/views/components/blocks/HelpCard.vue.js +2 -2
  155. package/dist/martyrs/src/modules/core/views/components/blocks/HelpCard.vue.js.map +1 -1
  156. package/dist/martyrs/src/modules/core/views/components/blocks/PopupAuth.vue.js +2 -2
  157. package/dist/martyrs/src/modules/core/views/components/blocks/PopupAuth.vue.js.map +1 -1
  158. package/dist/martyrs/src/modules/core/views/components/blocks/PopupDateSelector.vue.js +1 -1
  159. package/dist/martyrs/src/modules/core/views/components/elements/ButtonDate.vue.js +1 -1
  160. package/dist/martyrs/src/modules/core/views/components/elements/ButtonDate.vue.js.map +1 -1
  161. package/dist/martyrs/src/modules/core/views/components/elements/PhotoStack.vue.js +3 -3
  162. package/dist/martyrs/src/modules/core/views/components/layouts/App.vue.js +25 -5
  163. package/dist/martyrs/src/modules/core/views/components/layouts/App.vue.js.map +1 -1
  164. package/dist/martyrs/src/modules/core/views/components/layouts/Client.vue.js +4 -4
  165. package/dist/martyrs/src/modules/core/views/components/layouts/Client.vue.js.map +1 -1
  166. package/dist/martyrs/src/modules/core/views/components/partials/BottomNavigationBar.vue.js +11 -11
  167. package/dist/martyrs/src/modules/core/views/components/partials/BottomNavigationBar.vue.js.map +1 -1
  168. package/dist/martyrs/src/modules/core/views/components/partials/CitySelection.vue.js +1 -1
  169. package/dist/martyrs/src/modules/core/views/components/partials/CitySelection.vue.js.map +1 -1
  170. package/dist/martyrs/src/modules/core/views/components/partials/Footer.vue.js +16 -16
  171. package/dist/martyrs/src/modules/core/views/components/partials/Footer.vue.js.map +1 -1
  172. package/dist/martyrs/src/modules/core/views/components/partials/Header.vue.js +9 -9
  173. package/dist/martyrs/src/modules/core/views/components/partials/Header.vue.js.map +1 -1
  174. package/dist/martyrs/src/modules/core/views/components/partials/LocationSelection.vue.js +1 -1
  175. package/dist/martyrs/src/modules/core/views/components/partials/LocationSelection.vue.js.map +1 -1
  176. package/dist/martyrs/src/modules/core/views/components/partials/Navigation.vue.js +24 -24
  177. package/dist/martyrs/src/modules/core/views/components/partials/Navigation.vue.js.map +1 -1
  178. package/dist/martyrs/src/modules/core/views/components/partials/NavigationBar.vue.js +4 -4
  179. package/dist/martyrs/src/modules/core/views/components/partials/NavigationBar.vue.js.map +1 -1
  180. package/dist/martyrs/src/modules/core/views/components/partials/Sidebar.vue.js +7 -7
  181. package/dist/martyrs/src/modules/core/views/components/partials/Sidebar.vue.js.map +1 -1
  182. package/dist/martyrs/src/modules/core/views/components/sections/SectionPageTitle.vue.js +2 -2
  183. package/dist/martyrs/src/modules/core/views/components/sections/SectionPageTitle.vue.js.map +1 -1
  184. package/dist/martyrs/src/modules/core/views/components/sections/Walkthrough.vue.js +1 -1
  185. package/dist/martyrs/src/modules/core/views/components/sections/filters/FilterCheckbox.vue2.js +2 -2
  186. package/dist/martyrs/src/modules/core/views/components/sections/filters/FilterCheckbox.vue2.js.map +1 -1
  187. package/dist/martyrs/src/modules/core/views/components/sections/filters/FilterDateRange.vue2.js +3 -3
  188. package/dist/martyrs/src/modules/core/views/components/sections/filters/FilterDateRange.vue2.js.map +1 -1
  189. package/dist/martyrs/src/modules/core/views/components/sections/filters/FilterRange.vue.js +3 -3
  190. package/dist/martyrs/src/modules/core/views/components/sections/filters/FilterRange.vue.js.map +1 -1
  191. package/dist/martyrs/src/modules/core/views/store/core.store.js +29 -47
  192. package/dist/martyrs/src/modules/core/views/store/core.store.js.map +1 -1
  193. package/dist/martyrs/src/modules/core/views/utils/vue-app-renderer.js +21 -2
  194. package/dist/martyrs/src/modules/core/views/utils/vue-app-renderer.js.map +1 -1
  195. package/dist/martyrs/src/modules/events/components/blocks/CardEvent.vue.js +5 -5
  196. package/dist/martyrs/src/modules/events/components/blocks/CardEvent.vue.js.map +1 -1
  197. package/dist/martyrs/src/modules/events/components/blocks/CardEventShort.vue.js +3 -3
  198. package/dist/martyrs/src/modules/events/components/blocks/CardEventShort.vue.js.map +1 -1
  199. package/dist/martyrs/src/modules/events/components/elements/ButtonCheck.vue.js +1 -1
  200. package/dist/martyrs/src/modules/events/components/elements/ButtonJoin.vue.js +1 -1
  201. package/dist/martyrs/src/modules/events/components/pages/EditEvent.vue.js +4 -4
  202. package/dist/martyrs/src/modules/events/components/pages/EditEvent.vue.js.map +1 -1
  203. package/dist/martyrs/src/modules/events/components/pages/EditEventTickets.vue.js +21 -21
  204. package/dist/martyrs/src/modules/events/components/pages/EditEventTickets.vue.js.map +1 -1
  205. package/dist/martyrs/src/modules/events/components/pages/Event.vue.js +7 -7
  206. package/dist/martyrs/src/modules/events/components/pages/Event.vue.js.map +1 -1
  207. package/dist/martyrs/src/modules/events/components/pages/Events.vue.js +2 -2
  208. package/dist/martyrs/src/modules/events/components/pages/Events.vue.js.map +1 -1
  209. package/dist/martyrs/src/modules/events/components/pages/EventsBackoffice.vue.js +2 -2
  210. package/dist/martyrs/src/modules/events/components/pages/EventsBackoffice.vue.js.map +1 -1
  211. package/dist/martyrs/src/modules/events/components/sections/EditTickets.vue.js +7 -7
  212. package/dist/martyrs/src/modules/events/components/sections/EditTickets.vue.js.map +1 -1
  213. package/dist/martyrs/src/modules/events/components/sections/EventsHot.vue.js +2 -2
  214. package/dist/martyrs/src/modules/events/components/sections/EventsHot.vue.js.map +1 -1
  215. package/dist/martyrs/src/modules/events/components/sections/List.vue.js +1 -1
  216. package/dist/martyrs/src/modules/events/components/sections/List.vue.js.map +1 -1
  217. package/dist/martyrs/src/modules/events/components/sections/SelectDate.vue.js +1 -1
  218. package/dist/martyrs/src/modules/events/components/sections/SelectDate.vue.js.map +1 -1
  219. package/dist/martyrs/src/modules/gallery/components/pages/Gallery.vue.js +1 -1
  220. package/dist/martyrs/src/modules/gallery/components/pages/Gallery.vue.js.map +1 -1
  221. package/dist/martyrs/src/modules/gallery/components/sections/BackofficeGallery.vue.js +5 -5
  222. package/dist/martyrs/src/modules/gallery/components/sections/BackofficeGallery.vue.js.map +1 -1
  223. package/dist/martyrs/src/modules/icons/components/IconSearchPopup.vue.js +4 -4
  224. package/dist/martyrs/src/modules/icons/components/IconSearchPopup.vue.js.map +1 -1
  225. package/dist/martyrs/src/modules/icons/navigation/IconSort.vue.js +4 -4
  226. package/dist/martyrs/src/modules/icons/pages/IconsPage.vue.js +7 -7
  227. package/dist/martyrs/src/modules/icons/pages/IconsPage.vue.js.map +1 -1
  228. package/dist/martyrs/src/modules/inventory/components/forms/AdjustmentForm.vue.js +6 -6
  229. package/dist/martyrs/src/modules/inventory/components/forms/AdjustmentForm.vue.js.map +1 -1
  230. package/dist/martyrs/src/modules/inventory/components/forms/ColumnSettingsMenu.vue.js +1 -1
  231. package/dist/martyrs/src/modules/inventory/components/forms/HistoryView.vue.js +3 -3
  232. package/dist/martyrs/src/modules/inventory/components/forms/HistoryView.vue.js.map +1 -1
  233. package/dist/martyrs/src/modules/inventory/components/forms/StockAlertsForm.vue.js +4 -4
  234. package/dist/martyrs/src/modules/inventory/components/forms/StockAlertsForm.vue.js.map +1 -1
  235. package/dist/martyrs/src/modules/inventory/components/pages/Inventory.vue.js +11 -11
  236. package/dist/martyrs/src/modules/inventory/components/pages/Inventory.vue.js.map +1 -1
  237. package/dist/martyrs/src/modules/inventory/components/pages/InventoryEdit.vue.js +9 -9
  238. package/dist/martyrs/src/modules/inventory/components/pages/InventoryEdit.vue.js.map +1 -1
  239. package/dist/martyrs/src/modules/landing/components/sections/SectionEarn.vue.js +5 -5
  240. package/dist/martyrs/src/modules/landing/components/sections/SectionEarn.vue.js.map +1 -1
  241. package/dist/martyrs/src/modules/landing/components/sections/SectionGuide.vue.js +2 -2
  242. package/dist/martyrs/src/modules/landing/components/sections/SectionGuide.vue.js.map +1 -1
  243. package/dist/martyrs/src/modules/landing/components/sections/SectionHeroToken.vue.js +1 -1
  244. package/dist/martyrs/src/modules/landing/components/sections/SectionHeroToken.vue.js.map +1 -1
  245. package/dist/martyrs/src/modules/landing/components/sections/SectionJoinUs.vue.js +2 -2
  246. package/dist/martyrs/src/modules/landing/components/sections/SectionJoinUs.vue.js.map +1 -1
  247. package/dist/martyrs/src/modules/landing/components/sections/SectionMobileApp.vue.js +3 -3
  248. package/dist/martyrs/src/modules/landing/components/sections/SectionMobileApp.vue.js.map +1 -1
  249. package/dist/martyrs/src/modules/landing/components/sections/SectionOverview.vue.js +2 -2
  250. package/dist/martyrs/src/modules/landing/components/sections/SectionOverview.vue.js.map +1 -1
  251. package/dist/martyrs/src/modules/landing/components/sections/SectionRoadmap.vue.js +3 -3
  252. package/dist/martyrs/src/modules/landing/components/sections/SectionRoadmap.vue.js.map +1 -1
  253. package/dist/martyrs/src/modules/marketplace/marketplace.client.js +3 -3
  254. package/dist/martyrs/src/modules/marketplace/marketplace.client.js.map +1 -1
  255. package/dist/martyrs/src/modules/marketplace/views/components/pages/Marketplace.vue.js +6 -6
  256. package/dist/martyrs/src/modules/marketplace/views/components/pages/Marketplace.vue.js.map +1 -1
  257. package/dist/martyrs/src/modules/marketplace/views/components/sections/SectionMenu.vue.js +5 -3
  258. package/dist/martyrs/src/modules/marketplace/views/components/sections/SectionMenu.vue.js.map +1 -1
  259. package/dist/martyrs/src/modules/music/components/blocks/ActionButtons.vue.js +4 -4
  260. package/dist/martyrs/src/modules/music/components/blocks/ActionButtons.vue.js.map +1 -1
  261. package/dist/martyrs/src/modules/music/components/cards/AlbumCard.vue.js +6 -6
  262. package/dist/martyrs/src/modules/music/components/cards/AlbumCard.vue.js.map +1 -1
  263. package/dist/martyrs/src/modules/music/components/cards/ArtistCard.vue.js +4 -4
  264. package/dist/martyrs/src/modules/music/components/cards/ArtistCard.vue.js.map +1 -1
  265. package/dist/martyrs/src/modules/music/components/cards/ArtistCardSmall.vue.js +4 -4
  266. package/dist/martyrs/src/modules/music/components/cards/ArtistCardSmall.vue.js.map +1 -1
  267. package/dist/martyrs/src/modules/music/components/cards/PlaylistCard.vue.js +6 -6
  268. package/dist/martyrs/src/modules/music/components/cards/PlaylistCard.vue.js.map +1 -1
  269. package/dist/martyrs/src/modules/music/components/cards/TrackListCard.vue.js +6 -6
  270. package/dist/martyrs/src/modules/music/components/cards/TrackListCard.vue.js.map +1 -1
  271. package/dist/martyrs/src/modules/music/components/forms/AlbumForm.vue.js +11 -11
  272. package/dist/martyrs/src/modules/music/components/forms/AlbumForm.vue.js.map +1 -1
  273. package/dist/martyrs/src/modules/music/components/forms/ArtistForm.vue.js +7 -7
  274. package/dist/martyrs/src/modules/music/components/forms/ArtistForm.vue.js.map +1 -1
  275. package/dist/martyrs/src/modules/music/components/forms/PlaylistForm.vue.js +9 -9
  276. package/dist/martyrs/src/modules/music/components/forms/PlaylistForm.vue.js.map +1 -1
  277. package/dist/martyrs/src/modules/music/components/forms/SearchForm.vue.js +3 -3
  278. package/dist/martyrs/src/modules/music/components/forms/SearchForm.vue.js.map +1 -1
  279. package/dist/martyrs/src/modules/music/components/forms/TrackForm.vue.js +16 -16
  280. package/dist/martyrs/src/modules/music/components/forms/TrackForm.vue.js.map +1 -1
  281. package/dist/martyrs/src/modules/music/components/pages/Album.vue.js +24 -24
  282. package/dist/martyrs/src/modules/music/components/pages/Album.vue.js.map +1 -1
  283. package/dist/martyrs/src/modules/music/components/pages/Artist.vue.js +8 -8
  284. package/dist/martyrs/src/modules/music/components/pages/Artist.vue.js.map +1 -1
  285. package/dist/martyrs/src/modules/music/components/pages/MusicHome.vue.js +10 -13
  286. package/dist/martyrs/src/modules/music/components/pages/MusicHome.vue.js.map +1 -1
  287. package/dist/martyrs/src/modules/music/components/pages/MusicLibrary.vue.js +10 -10
  288. package/dist/martyrs/src/modules/music/components/pages/MusicLibrary.vue.js.map +1 -1
  289. package/dist/martyrs/src/modules/music/components/pages/Playlist.vue.js +27 -27
  290. package/dist/martyrs/src/modules/music/components/pages/Playlist.vue.js.map +1 -1
  291. package/dist/martyrs/src/modules/music/components/pages/SearchResults.vue.js +17 -17
  292. package/dist/martyrs/src/modules/music/components/pages/SearchResults.vue.js.map +1 -1
  293. package/dist/martyrs/src/modules/music/components/pages/Track.vue.js +27 -27
  294. package/dist/martyrs/src/modules/music/components/pages/Track.vue.js.map +1 -1
  295. package/dist/martyrs/src/modules/music/components/pages/TrackCreate.vue.js +1 -1
  296. package/dist/martyrs/src/modules/music/components/player/FullscreenPlayer.vue.js +8 -8
  297. package/dist/martyrs/src/modules/music/components/player/FullscreenPlayer.vue.js.map +1 -1
  298. package/dist/martyrs/src/modules/music/components/player/MusicPlayer.vue.js +1 -1
  299. package/dist/martyrs/src/modules/music/components/player/PlayerControls.vue.js +1 -1
  300. package/dist/martyrs/src/modules/music/components/player/VolumeControl.vue.js +1 -1
  301. package/dist/martyrs/src/modules/music/music.client.js +6 -6
  302. package/dist/martyrs/src/modules/music/music.client.js.map +1 -1
  303. package/dist/martyrs/src/modules/notifications/components/blocks/NotificationItem.vue.js +2 -2
  304. package/dist/martyrs/src/modules/notifications/components/blocks/NotificationItem.vue.js.map +1 -1
  305. package/dist/martyrs/src/modules/notifications/components/elements/NotificationBadge.vue.js +1 -1
  306. package/dist/martyrs/src/modules/notifications/components/elements/NotificationBadge.vue.js.map +1 -1
  307. package/dist/martyrs/src/modules/notifications/notifications.client.js +2 -2
  308. package/dist/martyrs/src/modules/notifications/store/notifications.store.js +1 -1
  309. package/dist/martyrs/src/modules/orders/components/blocks/CardApplication.vue.js +2 -2
  310. package/dist/martyrs/src/modules/orders/components/blocks/CardCustomer.vue.js +2 -2
  311. package/dist/martyrs/src/modules/orders/components/blocks/CardOrder.vue.js +9 -9
  312. package/dist/martyrs/src/modules/orders/components/blocks/CardOrder.vue.js.map +1 -1
  313. package/dist/martyrs/src/modules/orders/components/blocks/CardOrderBackoffice.vue.js +5 -5
  314. package/dist/martyrs/src/modules/orders/components/blocks/CardOrderBackoffice.vue.js.map +1 -1
  315. package/dist/martyrs/src/modules/orders/components/blocks/CardOrderItem.vue.js +9 -9
  316. package/dist/martyrs/src/modules/orders/components/blocks/CardOrderItem.vue.js.map +1 -1
  317. package/dist/martyrs/src/modules/orders/components/blocks/CardOrderUser.vue.js +4 -4
  318. package/dist/martyrs/src/modules/orders/components/blocks/CardOrderUser.vue.js.map +1 -1
  319. package/dist/martyrs/src/modules/orders/components/blocks/StatusHistory.vue.js +2 -2
  320. package/dist/martyrs/src/modules/orders/components/blocks/StatusHistory.vue.js.map +1 -1
  321. package/dist/martyrs/src/modules/orders/components/elements/FieldSubscribeNewsletter.vue.js +1 -1
  322. package/dist/martyrs/src/modules/orders/components/elements/FieldSubscribeNewsletter.vue.js.map +1 -1
  323. package/dist/martyrs/src/modules/orders/components/elements/PriceTotal.vue.js +3 -3
  324. package/dist/martyrs/src/modules/orders/components/elements/PriceTotal.vue.js.map +1 -1
  325. package/dist/martyrs/src/modules/orders/components/forms/FormApplicationDetails.vue.js +5 -5
  326. package/dist/martyrs/src/modules/orders/components/forms/FormApplicationDetails.vue.js.map +1 -1
  327. package/dist/martyrs/src/modules/orders/components/forms/FormCustomerDetails.vue.js +6 -6
  328. package/dist/martyrs/src/modules/orders/components/forms/FormCustomerDetails.vue.js.map +1 -1
  329. package/dist/martyrs/src/modules/orders/components/forms/FormSelectCustomer.vue.js +1 -1
  330. package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.js +18 -18
  331. package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.js.map +1 -1
  332. package/dist/martyrs/src/modules/orders/components/pages/OrderCreate.vue.js +3 -3
  333. package/dist/martyrs/src/modules/orders/components/pages/OrderCreate.vue.js.map +1 -1
  334. package/dist/martyrs/src/modules/orders/components/pages/OrderCreateBackoffice.vue.js +6 -6
  335. package/dist/martyrs/src/modules/orders/components/pages/OrderCreateBackoffice.vue.js.map +1 -1
  336. package/dist/martyrs/src/modules/orders/components/partials/ShopCart.vue.js +2 -2
  337. package/dist/martyrs/src/modules/orders/components/partials/ShopCart.vue.js.map +1 -1
  338. package/dist/martyrs/src/modules/orders/components/sections/ApplicationDetails.vue.js +4 -4
  339. package/dist/martyrs/src/modules/orders/components/sections/ApplicationDetails.vue.js.map +1 -1
  340. package/dist/martyrs/src/modules/orders/components/sections/AskToLogin.vue.js +1 -1
  341. package/dist/martyrs/src/modules/orders/components/sections/AskToLogin.vue.js.map +1 -1
  342. package/dist/martyrs/src/modules/orders/components/sections/CustomerDetails.vue.js +4 -4
  343. package/dist/martyrs/src/modules/orders/components/sections/CustomerDetails.vue.js.map +1 -1
  344. package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.js +2 -2
  345. package/dist/martyrs/src/modules/orders/components/sections/FormPayment.vue.js +1 -1
  346. package/dist/martyrs/src/modules/orders/components/sections/Succes.vue.js +3 -3
  347. package/dist/martyrs/src/modules/orders/store/shopcart.js +1 -1
  348. package/dist/martyrs/src/modules/organizations/components/blocks/CardDepartment.vue.js +2 -2
  349. package/dist/martyrs/src/modules/organizations/components/blocks/CardOrganization.vue.js +3 -3
  350. package/dist/martyrs/src/modules/organizations/components/blocks/CardOrganization.vue.js.map +1 -1
  351. package/dist/martyrs/src/modules/organizations/components/blocks/Contacts.vue.js +8 -8
  352. package/dist/martyrs/src/modules/organizations/components/blocks/Contacts.vue.js.map +1 -1
  353. package/dist/martyrs/src/modules/organizations/components/blocks/Rating.vue.js +1 -1
  354. package/dist/martyrs/src/modules/organizations/components/elements/ButtonToggleMembership.vue.js +1 -1
  355. package/dist/martyrs/src/modules/organizations/components/forms/AddExistingMembersForm.vue.js +4 -4
  356. package/dist/martyrs/src/modules/organizations/components/forms/AddExistingMembersForm.vue.js.map +1 -1
  357. package/dist/martyrs/src/modules/organizations/components/forms/DepartmentForm.vue.js +3 -3
  358. package/dist/martyrs/src/modules/organizations/components/forms/DepartmentForm.vue.js.map +1 -1
  359. package/dist/martyrs/src/modules/organizations/components/forms/InviteForm.vue.js +3 -3
  360. package/dist/martyrs/src/modules/organizations/components/forms/InviteForm.vue.js.map +1 -1
  361. package/dist/martyrs/src/modules/organizations/components/pages/Department.vue.js +2 -2
  362. package/dist/martyrs/src/modules/organizations/components/pages/Department.vue.js.map +1 -1
  363. package/dist/martyrs/src/modules/organizations/components/pages/Members.vue.js +1 -1
  364. package/dist/martyrs/src/modules/organizations/components/pages/Members.vue.js.map +1 -1
  365. package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.js +6 -6
  366. package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.js.map +1 -1
  367. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationBackoffice.vue.js +2 -2
  368. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.js +4 -4
  369. package/dist/martyrs/src/modules/organizations/components/pages/Organizations.vue.js +2 -2
  370. package/dist/martyrs/src/modules/organizations/components/pages/Organizations.vue.js.map +1 -1
  371. package/dist/martyrs/src/modules/organizations/components/sections/Documents.vue.js +5 -5
  372. package/dist/martyrs/src/modules/organizations/components/sections/Documents.vue.js.map +1 -1
  373. package/dist/martyrs/src/modules/organizations/components/sections/MembersAdd.vue.js +4 -4
  374. package/dist/martyrs/src/modules/organizations/components/sections/MembersAdd.vue.js.map +1 -1
  375. package/dist/martyrs/src/modules/organizations/components/sections/Organizations.vue.js +2 -2
  376. package/dist/martyrs/src/modules/pages/views/components/blocks/CardPage.vue.js +4 -4
  377. package/dist/martyrs/src/modules/pages/views/components/blocks/CardPage.vue.js.map +1 -1
  378. package/dist/martyrs/src/modules/pages/views/components/pages/Page.vue.js +5 -5
  379. package/dist/martyrs/src/modules/pages/views/components/pages/Page.vue.js.map +1 -1
  380. package/dist/martyrs/src/modules/pages/views/components/pages/PageEdit.vue.js +2 -2
  381. package/dist/martyrs/src/modules/pages/views/components/partials/SidebarPages.vue.js +1 -1
  382. package/dist/martyrs/src/modules/products/components/blocks/CardCategory.vue.js +1 -1
  383. package/dist/martyrs/src/modules/products/components/blocks/CardCategory.vue.js.map +1 -1
  384. package/dist/martyrs/src/modules/products/components/blocks/CardPosition.vue.js +4 -4
  385. package/dist/martyrs/src/modules/products/components/blocks/CardPosition.vue.js.map +1 -1
  386. package/dist/martyrs/src/modules/products/components/blocks/CardProduct.vue.js +3 -3
  387. package/dist/martyrs/src/modules/products/components/blocks/CardProduct.vue.js.map +1 -1
  388. package/dist/martyrs/src/modules/products/components/blocks/ProductDiscounts.vue.js +4 -4
  389. package/dist/martyrs/src/modules/products/components/blocks/ProductDiscounts.vue.js.map +1 -1
  390. package/dist/martyrs/src/modules/products/components/blocks/ProductImages.vue.js +3 -3
  391. package/dist/martyrs/src/modules/products/components/blocks/ProductImages.vue.js.map +1 -1
  392. package/dist/martyrs/src/modules/products/components/blocks/ProductVariants.vue.js +2 -2
  393. package/dist/martyrs/src/modules/products/components/blocks/ProductVariants.vue.js.map +1 -1
  394. package/dist/martyrs/src/modules/products/components/elements/Image360.vue.js +4 -4
  395. package/dist/martyrs/src/modules/products/components/elements/Image360.vue.js.map +1 -1
  396. package/dist/martyrs/src/modules/products/components/elements/Price.vue.js +2 -2
  397. package/dist/martyrs/src/modules/products/components/elements/Price.vue.js.map +1 -1
  398. package/dist/martyrs/src/modules/products/components/elements/QuantitySelector.vue.js +3 -3
  399. package/dist/martyrs/src/modules/products/components/elements/QuantitySelector.vue.js.map +1 -1
  400. package/dist/martyrs/src/modules/products/components/elements/THC.vue.js +1 -1
  401. package/dist/martyrs/src/modules/products/components/pages/Categories.vue.js +2 -2
  402. package/dist/martyrs/src/modules/products/components/pages/Categories.vue.js.map +1 -1
  403. package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.js +5 -5
  404. package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.js.map +1 -1
  405. package/dist/martyrs/src/modules/products/components/pages/Product.vue.js +7 -7
  406. package/dist/martyrs/src/modules/products/components/pages/Product.vue.js.map +1 -1
  407. package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.js +10 -10
  408. package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.js.map +1 -1
  409. package/dist/martyrs/src/modules/products/components/pages/Products.vue.js +12 -12
  410. package/dist/martyrs/src/modules/products/components/pages/Products.vue.js.map +1 -1
  411. package/dist/martyrs/src/modules/products/components/sections/EditAttributes.vue.js +6 -6
  412. package/dist/martyrs/src/modules/products/components/sections/EditAttributes.vue.js.map +1 -1
  413. package/dist/martyrs/src/modules/products/components/sections/EditDiscounts.vue.js +9 -9
  414. package/dist/martyrs/src/modules/products/components/sections/EditDiscounts.vue.js.map +1 -1
  415. package/dist/martyrs/src/modules/products/components/sections/EditRecommended.vue.js +1 -1
  416. package/dist/martyrs/src/modules/products/components/sections/EditRecommended.vue.js.map +1 -1
  417. package/dist/martyrs/src/modules/products/components/sections/EditVariants.vue.js +11 -11
  418. package/dist/martyrs/src/modules/products/components/sections/EditVariants.vue.js.map +1 -1
  419. package/dist/martyrs/src/modules/products/components/sections/FilterProducts.vue.js +3 -3
  420. package/dist/martyrs/src/modules/products/components/sections/FilterProducts.vue.js.map +1 -1
  421. package/dist/martyrs/src/modules/products/components/sections/ProductConfigurator.vue.js +3 -3
  422. package/dist/martyrs/src/modules/products/components/sections/ProductConfigurator.vue.js.map +1 -1
  423. package/dist/martyrs/src/modules/products/components/sections/ProductsRecommended.vue.js +3 -3
  424. package/dist/martyrs/src/modules/products/components/sections/ProductsRecommended.vue.js.map +1 -1
  425. package/dist/martyrs/src/modules/products/components/sections/SectionProduct.vue.js +7 -7
  426. package/dist/martyrs/src/modules/products/components/sections/SectionProduct.vue.js.map +1 -1
  427. package/dist/martyrs/src/modules/rents/views/components/blocks/CardRent.vue.js +1 -1
  428. package/dist/martyrs/src/modules/rents/views/components/blocks/CardRent.vue.js.map +1 -1
  429. package/dist/martyrs/src/modules/rents/views/components/pages/Gant/DateLabel.vue.js +1 -1
  430. package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttBar.vue.js +2 -2
  431. package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttBar.vue.js.map +1 -1
  432. package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttChart.vue.js +8 -8
  433. package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttChart.vue.js.map +1 -1
  434. package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttHeaderCell.vue.js +1 -1
  435. package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttHeaderCell.vue.js.map +1 -1
  436. package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttToolbar.vue.js +2 -2
  437. package/dist/martyrs/src/modules/rents/views/components/pages/Rents.vue.js +1 -1
  438. package/dist/martyrs/src/modules/rents/views/components/pages/Rents.vue.js.map +1 -1
  439. package/dist/martyrs/src/modules/rents/views/components/pages/RentsEdit.vue.js +8 -8
  440. package/dist/martyrs/src/modules/rents/views/components/pages/RentsEdit.vue.js.map +1 -1
  441. package/dist/martyrs/src/modules/reports/components/pages/BackofficeReports.vue.js +3 -3
  442. package/dist/martyrs/src/modules/reports/components/pages/BackofficeReports.vue.js.map +1 -1
  443. package/dist/martyrs/src/modules/reports/components/sections/FormReport.vue.js +3 -3
  444. package/dist/martyrs/src/modules/reports/components/sections/FormReport.vue.js.map +1 -1
  445. package/dist/martyrs/src/modules/spots/components/blocks/CardSpot.vue.js +5 -5
  446. package/dist/martyrs/src/modules/spots/components/blocks/CardSpot.vue.js.map +1 -1
  447. package/dist/martyrs/src/modules/spots/components/blocks/SpotMemberModify.vue.js +4 -4
  448. package/dist/martyrs/src/modules/spots/components/blocks/SpotMemberModify.vue.js.map +1 -1
  449. package/dist/martyrs/src/modules/spots/components/layouts/Spots.vue.js +4 -4
  450. package/dist/martyrs/src/modules/spots/components/layouts/Spots.vue.js.map +1 -1
  451. package/dist/martyrs/src/modules/spots/components/pages/Map.vue.js +1 -1
  452. package/dist/martyrs/src/modules/spots/components/pages/Spot.vue.js +6 -6
  453. package/dist/martyrs/src/modules/spots/components/pages/Spot.vue.js.map +1 -1
  454. package/dist/martyrs/src/modules/spots/components/pages/SpotEdit.vue.js +5 -5
  455. package/dist/martyrs/src/modules/spots/components/pages/SpotEdit.vue.js.map +1 -1
  456. package/dist/martyrs/src/modules/spots/components/pages/Spots.vue.js +3 -3
  457. package/dist/martyrs/src/modules/spots/components/pages/Spots.vue.js.map +1 -1
  458. package/dist/martyrs/src/modules/spots/components/sections/WorktimeEdit.vue.js +8 -8
  459. package/dist/martyrs/src/modules/spots/components/sections/WorktimeEdit.vue.js.map +1 -1
  460. package/dist/martyrs/src/modules/wallet/views/components/blocks/CardBalanceReplenished.vue.js +5 -5
  461. package/dist/martyrs/src/modules/wallet/views/components/blocks/CardBalanceReplenished.vue.js.map +1 -1
  462. package/dist/martyrs/src/modules/wallet/views/components/blocks/CardDeposit.vue.js +6 -6
  463. package/dist/martyrs/src/modules/wallet/views/components/blocks/CardDeposit.vue.js.map +1 -1
  464. package/dist/martyrs/src/modules/wallet/views/components/blocks/CashDeposit.vue.js +2 -2
  465. package/dist/martyrs/src/modules/wallet/views/components/blocks/CashDeposit.vue.js.map +1 -1
  466. package/dist/martyrs/src/modules/wallet/views/components/blocks/CryptoDeposit.vue.js +6 -6
  467. package/dist/martyrs/src/modules/wallet/views/components/blocks/CryptoDeposit.vue.js.map +1 -1
  468. package/dist/martyrs/src/modules/wallet/views/components/blocks/CryptoDepositProcessing.vue.js +12 -12
  469. package/dist/martyrs/src/modules/wallet/views/components/blocks/CryptoDepositProcessing.vue.js.map +1 -1
  470. package/dist/martyrs/src/modules/wallet/views/components/elements/ConnectMetamask.vue.js +4 -4
  471. package/dist/martyrs/src/modules/wallet/views/components/elements/ConnectMetamask.vue.js.map +1 -1
  472. package/dist/martyrs/src/modules/wallet/views/components/pages/Wallet.vue.js +25 -25
  473. package/dist/martyrs/src/modules/wallet/views/components/pages/Wallet.vue.js.map +1 -1
  474. package/dist/martyrs.css +1 -1
  475. package/dist/martyrs.es.js +1 -1
  476. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/utils.js +1 -1
  477. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/renderer/utils.js +1 -1
  478. package/dist/style.css +194 -202
  479. package/dist/{web-CH5wzMHy.js → web-BqTV9va1.js} +1 -1
  480. package/package.json +6 -8
  481. package/src/builder/modes/ssr.prod.js +1 -0
  482. package/src/builder/modes/ssr.rspack.dev.js +82 -84
  483. package/src/builder/rspack/rspack.config.base.js +7 -0
  484. package/src/builder/rspack/rspack.config.ssr.client.js +19 -44
  485. package/src/builder/templates/page.js +21 -0
  486. package/src/components/Block/Block.vue +1 -1
  487. package/src/components/BottomSheet/BottomSheet.vue +1 -1
  488. package/src/components/Calendar/Calendar.vue +5 -5
  489. package/src/components/Checkbox/Checkbox.vue +2 -2
  490. package/src/components/Chips/Chips.vue +2 -2
  491. package/src/components/Completion/Completion.vue +2 -2
  492. package/src/components/Countdown/Countdown.vue +5 -5
  493. package/src/components/DatePicker/DatePicker.vue +4 -4
  494. package/src/components/EditImages/EditImages.vue +1 -1
  495. package/src/components/Feed/Feed.old.vue +1 -1
  496. package/src/components/Feed/Feed.vue +1 -1
  497. package/src/components/FieldBig/FieldBig.vue +2 -2
  498. package/src/components/FieldPhone/FieldPhone.vue +1 -1
  499. package/src/components/FieldTags/BlockTags.vue +1 -1
  500. package/src/components/Loader/Loader.vue +1 -1
  501. package/src/components/Menu/MenuItem.vue +2 -2
  502. package/src/components/PhotoViewer/PhotoViewer.vue +1 -1
  503. package/src/components/Radio/Radio.vue +1 -1
  504. package/src/components/Select/Select.vue +1 -1
  505. package/src/components/Table/Table.vue +2 -2
  506. package/src/components/Text/Text.vue +1 -1
  507. package/src/components/UploadImage/UploadImage.vue +2 -2
  508. package/src/components/UploadImageMultiple/UploadImageMultiple.vue +3 -3
  509. package/src/configurator/components/layouts/layoutConfigurator.vue +1 -1
  510. package/src/configurator/components/pages/Styles.vue +2 -2
  511. package/src/jit/.claude/settings.local.json +10 -0
  512. package/src/jit/CLAUDE.md +387 -0
  513. package/src/jit/core.js +274 -0
  514. package/src/jit/extractor.js +140 -0
  515. package/src/jit/index.js +19 -0
  516. package/src/jit/loader.js +46 -0
  517. package/src/jit/plugin.js +209 -0
  518. package/src/jit/rules.js +474 -0
  519. package/src/jit/variants.js +128 -0
  520. package/src/modules/auth/views/components/blocks/CardUser.vue +2 -2
  521. package/src/modules/auth/views/components/blocks/ProfileCard.vue +4 -4
  522. package/src/modules/auth/views/components/layouts/Auth.vue +1 -1
  523. package/src/modules/auth/views/components/pages/EnterPassword.vue +2 -2
  524. package/src/modules/auth/views/components/pages/Profile.vue +5 -5
  525. package/src/modules/auth/views/components/pages/ProfileBlogposts.vue +1 -1
  526. package/src/modules/auth/views/components/pages/ProfileEditAccount.vue +2 -2
  527. package/src/modules/auth/views/components/pages/ResetPassword.vue +1 -1
  528. package/src/modules/auth/views/components/pages/SignIn.vue +3 -3
  529. package/src/modules/auth/views/components/pages/SignUp.vue +1 -1
  530. package/src/modules/auth/views/components/pages/UserDashboard.vue +3 -3
  531. package/src/modules/auth/views/components/sections/FeaturedUsers.vue +1 -1
  532. package/src/modules/auth/views/components/sections/ProfileCompletion.vue +2 -2
  533. package/src/modules/auth/views/components/sections/ProfileEditCredentials.vue +7 -7
  534. package/src/modules/auth/views/components/sections/SliderFeatures.vue +1 -1
  535. package/src/modules/backoffice/components/admin/Backcalls.vue +1 -1
  536. package/src/modules/backoffice/components/admin/FastOrders.vue +1 -1
  537. package/src/modules/backoffice/components/admin/ProductEdit.vue +2 -2
  538. package/src/modules/backoffice/components/admin/UserEdit.vue +1 -1
  539. package/src/modules/backoffice/components/admin/Users.vue +2 -2
  540. package/src/modules/backoffice/components/pages/Dashboard.vue +4 -4
  541. package/src/modules/backoffice/components/partials/Sidebar.vue +5 -5
  542. package/src/modules/chats/components/blocks/ChatMessage.vue +1 -1
  543. package/src/modules/chats/components/sections/ChatWindow.vue +2 -2
  544. package/src/modules/community/components/blocks/Activity.vue +7 -7
  545. package/src/modules/community/components/blocks/CardBlogpost.vue +1 -1
  546. package/src/modules/community/components/blocks/FooterBlogpost.vue +4 -4
  547. package/src/modules/community/components/layouts/Community.vue +10 -10
  548. package/src/modules/community/components/pages/CreateBlogPost.vue +1 -1
  549. package/src/modules/community/components/pages/Posts.vue +2 -2
  550. package/src/modules/community/components/sections/Comment.vue +2 -2
  551. package/src/modules/constructor/components/elements/Audio.vue +1 -1
  552. package/src/modules/constructor/components/elements/Caption.vue +1 -1
  553. package/src/modules/constructor/components/elements/Embed.vue +1 -1
  554. package/src/modules/constructor/components/elements/Textarea.vue +1 -1
  555. package/src/modules/constructor/components/elements/Video.vue +1 -1
  556. package/src/modules/core/views/classes/core.app.js +2 -1
  557. package/src/modules/core/views/components/blocks/BlockSorting.vue +2 -2
  558. package/src/modules/core/views/components/blocks/CardFooter.vue +4 -4
  559. package/src/modules/core/views/components/blocks/CardHeader.vue +7 -7
  560. package/src/modules/core/views/components/blocks/HelpCard.vue +1 -1
  561. package/src/modules/core/views/components/blocks/PopupAuth.vue +1 -1
  562. package/src/modules/core/views/components/elements/ButtonDate.vue +1 -1
  563. package/src/modules/core/views/components/elements/PhotoStack.vue +3 -3
  564. package/src/modules/core/views/components/layouts/App.vue +28 -4
  565. package/src/modules/core/views/components/layouts/Client.vue +4 -4
  566. package/src/modules/core/views/components/partials/BottomNavigationBar.vue +15 -15
  567. package/src/modules/core/views/components/partials/CitySelection.vue +1 -1
  568. package/src/modules/core/views/components/partials/Footer.centered.vue +17 -17
  569. package/src/modules/core/views/components/partials/Footer.vue +18 -18
  570. package/src/modules/core/views/components/partials/Header.vue +10 -11
  571. package/src/modules/core/views/components/partials/LocationSelection.vue +1 -1
  572. package/src/modules/core/views/components/partials/Navigation.vue +20 -19
  573. package/src/modules/core/views/components/partials/NavigationBar.vue +3 -3
  574. package/src/modules/core/views/components/partials/Sidebar.vue +6 -6
  575. package/src/modules/core/views/components/sections/SectionPageTitle.vue +2 -2
  576. package/src/modules/core/views/components/sections/filters/FilterCheckbox.vue +1 -1
  577. package/src/modules/core/views/components/sections/filters/FilterDateRange.vue +2 -2
  578. package/src/modules/core/views/components/sections/filters/FilterPrice.vue +2 -2
  579. package/src/modules/core/views/components/sections/filters/FilterRange.vue +2 -2
  580. package/src/modules/core/views/store/core.store.js +36 -60
  581. package/src/modules/core/views/utils/vue-app-renderer.js +31 -1
  582. package/src/modules/events/components/blocks/CardEvent.vue +6 -6
  583. package/src/modules/events/components/blocks/CardEventShort.vue +3 -3
  584. package/src/modules/events/components/pages/EditEvent.vue +1 -1
  585. package/src/modules/events/components/pages/EditEventTickets.vue +18 -18
  586. package/src/modules/events/components/pages/Event.vue +5 -5
  587. package/src/modules/events/components/pages/Events.vue +2 -2
  588. package/src/modules/events/components/pages/EventsBackoffice.vue +2 -2
  589. package/src/modules/events/components/sections/EditTickets.vue +5 -5
  590. package/src/modules/events/components/sections/EventsHot.vue +2 -2
  591. package/src/modules/events/components/sections/List.vue +1 -1
  592. package/src/modules/events/components/sections/SelectDate.vue +1 -1
  593. package/src/modules/gallery/components/pages/Gallery.vue +1 -1
  594. package/src/modules/gallery/components/sections/BackofficeGallery.vue +1 -1
  595. package/src/modules/governance/reactcode/src/components/CreateInitiativeForm.tsx +14 -14
  596. package/src/modules/governance/reactcode/src/components/CreateMilestoneForm.tsx +13 -13
  597. package/src/modules/governance/reactcode/src/components/EmptyState.tsx +2 -2
  598. package/src/modules/governance/reactcode/src/components/InitiativeCard.tsx +1 -1
  599. package/src/modules/governance/reactcode/src/components/LinkedEntityCard.tsx +1 -1
  600. package/src/modules/governance/reactcode/src/components/MilestoneCard.tsx +2 -2
  601. package/src/modules/governance/reactcode/src/components/ProductRepositories.tsx +6 -6
  602. package/src/modules/governance/reactcode/src/components/ProductSummary.tsx +18 -18
  603. package/src/modules/governance/reactcode/src/components/ProductTeam.tsx +7 -7
  604. package/src/modules/governance/reactcode/src/components/ProposeTaskForm.tsx +9 -9
  605. package/src/modules/governance/reactcode/src/components/TaskAssignForm.tsx +4 -4
  606. package/src/modules/governance/reactcode/src/components/TaskCard.tsx +1 -1
  607. package/src/modules/governance/reactcode/src/components/TaskStatusBadge.tsx +1 -1
  608. package/src/modules/governance/reactcode/src/components/VoteForm.tsx +6 -6
  609. package/src/modules/governance/reactcode/src/components/VotingCard.tsx +2 -2
  610. package/src/modules/governance/reactcode/src/components/VotingResults.tsx +15 -15
  611. package/src/modules/governance/reactcode/src/pages/InitiativeDetailPage.tsx +41 -41
  612. package/src/modules/governance/reactcode/src/pages/InitiativeMilestonesPage.tsx +8 -8
  613. package/src/modules/governance/reactcode/src/pages/InitiativesListPage.tsx +6 -6
  614. package/src/modules/governance/reactcode/src/pages/MilestoneDetailPage.tsx +9 -9
  615. package/src/modules/governance/reactcode/src/pages/RoadmapPage.tsx +14 -14
  616. package/src/modules/governance/reactcode/src/pages/TaskDetailPage.tsx +44 -44
  617. package/src/modules/governance/reactcode/src/pages/VotingDetailPage.tsx +8 -8
  618. package/src/modules/governance/reactcode/src/pages/VotingsListPage.tsx +3 -3
  619. package/src/modules/governance/reactcode-2/App.tsx +28 -0
  620. package/src/modules/governance/reactcode-2/README.md +20 -0
  621. package/src/modules/governance/reactcode-2/components/Charts.tsx +58 -0
  622. package/src/modules/governance/reactcode-2/components/Layout.tsx +457 -0
  623. package/src/modules/governance/reactcode-2/components/TaskPage.tsx +325 -0
  624. package/src/modules/governance/reactcode-2/components/VoteBadge.tsx +27 -0
  625. package/src/modules/governance/reactcode-2/components/VotingsFeedPage.tsx +328 -0
  626. package/src/modules/governance/reactcode-2/constants.ts +154 -0
  627. package/src/modules/governance/reactcode-2/index.html +70 -0
  628. package/src/modules/governance/reactcode-2/index.tsx +15 -0
  629. package/src/modules/governance/reactcode-2/metadata.json +5 -0
  630. package/src/modules/governance/reactcode-2/package.json +23 -0
  631. package/src/modules/governance/reactcode-2/pnpm-lock.yaml +1410 -0
  632. package/src/modules/governance/reactcode-2/tsconfig.json +29 -0
  633. package/src/modules/governance/reactcode-2/types.ts +48 -0
  634. package/src/modules/governance/reactcode-2/vite.config.ts +23 -0
  635. package/src/modules/governance/views/components/blocks/CardInitiativeItem.vue +10 -10
  636. package/src/modules/governance/views/components/blocks/CardMilestoneItem.vue +15 -15
  637. package/src/modules/governance/views/components/blocks/CardTaskItem.vue +9 -9
  638. package/src/modules/governance/views/components/blocks/CardVotingItem.vue +11 -11
  639. package/src/modules/governance/views/components/layouts/Governance.vue +1 -1
  640. package/src/modules/governance/views/components/pages/Governance.vue +3 -3
  641. package/src/modules/governance/views/components/pages/Initiative.vue +112 -112
  642. package/src/modules/governance/views/components/pages/InitiativeMilestones.vue +31 -31
  643. package/src/modules/governance/views/components/pages/Initiatives.vue +20 -22
  644. package/src/modules/governance/views/components/pages/Milestone.vue +25 -25
  645. package/src/modules/governance/views/components/pages/Roadmap.vue +47 -47
  646. package/src/modules/governance/views/components/pages/Task.vue +106 -106
  647. package/src/modules/governance/views/components/pages/Tasks.vue +16 -16
  648. package/src/modules/governance/views/components/pages/Voting.vue +23 -23
  649. package/src/modules/governance/views/components/pages/Votings.vue +7 -7
  650. package/src/modules/governance/views/components/partials/EmptyState.vue +3 -3
  651. package/src/modules/governance/views/components/partials/LinkedEntityCard.vue +11 -11
  652. package/src/modules/governance/views/components/partials/TaskStatusBadge.vue +4 -4
  653. package/src/modules/governance/views/components/partials/VoteForm.vue +14 -14
  654. package/src/modules/governance/views/components/partials/VotingResults.vue +22 -22
  655. package/src/modules/icons/components/IconSearchPopup.vue +3 -3
  656. package/src/modules/icons/entities/IconCash.vue +23 -0
  657. package/src/modules/icons/navigation/IconSort.vue +4 -4
  658. package/src/modules/icons/pages/IconsPage.vue +7 -7
  659. package/src/modules/inventory/components/forms/AdjustmentForm.vue +3 -3
  660. package/src/modules/inventory/components/forms/HistoryView.vue +1 -1
  661. package/src/modules/inventory/components/forms/StockAlertsForm.vue +1 -1
  662. package/src/modules/inventory/components/pages/Inventory.vue +10 -10
  663. package/src/modules/inventory/components/pages/InventoryEdit.vue +6 -6
  664. package/src/modules/landing/components/blocks/MapBlock.vue +2 -2
  665. package/src/modules/landing/components/sections/Examples.vue +1 -1
  666. package/src/modules/landing/components/sections/InstagramSection.vue +1 -1
  667. package/src/modules/landing/components/sections/SectionEarn.vue +4 -4
  668. package/src/modules/landing/components/sections/SectionFeature.vue +1 -1
  669. package/src/modules/landing/components/sections/SectionFocus.vue +2 -2
  670. package/src/modules/landing/components/sections/SectionGuide.vue +2 -2
  671. package/src/modules/landing/components/sections/SectionHeroToken.vue +1 -1
  672. package/src/modules/landing/components/sections/SectionHeroVideo.vue +2 -2
  673. package/src/modules/landing/components/sections/SectionJoinUs.vue +2 -2
  674. package/src/modules/landing/components/sections/SectionMobileApp.vue +3 -3
  675. package/src/modules/landing/components/sections/SectionOverview.vue +2 -2
  676. package/src/modules/landing/components/sections/SectionRoadmap.vue +2 -2
  677. package/src/modules/marketplace/views/components/layouts/Marketplace.vue +8 -8
  678. package/src/modules/marketplace/views/components/pages/Marketplace.vue +5 -5
  679. package/src/modules/marketplace/views/components/sections/SectionMenu.vue +3 -3
  680. package/src/modules/music/components/SidebarMusic.vue +11 -11
  681. package/src/modules/music/components/blocks/ActionButtons.vue +2 -2
  682. package/src/modules/music/components/cards/AlbumCard.vue +4 -4
  683. package/src/modules/music/components/cards/ArtistCard.vue +3 -8
  684. package/src/modules/music/components/cards/ArtistCardSmall.vue +2 -2
  685. package/src/modules/music/components/cards/PlaylistCard.vue +4 -4
  686. package/src/modules/music/components/cards/TrackListCard.vue +5 -5
  687. package/src/modules/music/components/forms/AlbumForm.vue +8 -8
  688. package/src/modules/music/components/forms/ArtistForm.vue +4 -4
  689. package/src/modules/music/components/forms/PlaylistForm.vue +7 -7
  690. package/src/modules/music/components/forms/SearchForm.vue +1 -1
  691. package/src/modules/music/components/forms/TrackForm.vue +13 -13
  692. package/src/modules/music/components/pages/Album.vue +22 -22
  693. package/src/modules/music/components/pages/Artist.vue +7 -7
  694. package/src/modules/music/components/pages/MusicHome.vue +13 -18
  695. package/src/modules/music/components/pages/MusicLibrary.vue +9 -9
  696. package/src/modules/music/components/pages/Playlist.vue +25 -25
  697. package/src/modules/music/components/pages/SearchResults.vue +15 -15
  698. package/src/modules/music/components/pages/Track.vue +25 -25
  699. package/src/modules/music/components/player/FullscreenPlayer.vue +5 -5
  700. package/src/modules/notifications/components/blocks/NotificationItem.vue +1 -1
  701. package/src/modules/notifications/components/elements/NotificationBadge.vue +1 -1
  702. package/src/modules/orders/components/blocks/CardApplication.vue +1 -1
  703. package/src/modules/orders/components/blocks/CardCustomer.vue +1 -1
  704. package/src/modules/orders/components/blocks/CardOrder.vue +9 -9
  705. package/src/modules/orders/components/blocks/CardOrderBackoffice.vue +5 -5
  706. package/src/modules/orders/components/blocks/CardOrderItem.vue +9 -9
  707. package/src/modules/orders/components/blocks/CardOrderUser.vue +3 -3
  708. package/src/modules/orders/components/blocks/CardOrderVar1.vue +4 -4
  709. package/src/modules/orders/components/blocks/StatusHistory.vue +3 -3
  710. package/src/modules/orders/components/elements/FieldSubscribeNewsletter.vue +1 -1
  711. package/src/modules/orders/components/elements/PriceTotal.vue +3 -3
  712. package/src/modules/orders/components/forms/FormApplicationDetails.vue +2 -2
  713. package/src/modules/orders/components/forms/FormCustomerDetails.vue +3 -3
  714. package/src/modules/orders/components/pages/Favorites.vue +1 -1
  715. package/src/modules/orders/components/pages/OrderBackoffice.vue +15 -15
  716. package/src/modules/orders/components/pages/OrderCreate.vue +2 -2
  717. package/src/modules/orders/components/pages/OrderCreateBackoffice.vue +4 -4
  718. package/src/modules/orders/components/pages/Orders_refact.vue +3 -3
  719. package/src/modules/orders/components/partials/ShopCart.vue +2 -2
  720. package/src/modules/orders/components/sections/ApplicationDetails.vue +2 -2
  721. package/src/modules/orders/components/sections/AskToLogin.vue +1 -1
  722. package/src/modules/orders/components/sections/CustomerDetails.vue +2 -2
  723. package/src/modules/orders/components/sections/Succes.vue +4 -4
  724. package/src/modules/organizations/components/blocks/CardDepartment.vue +1 -1
  725. package/src/modules/organizations/components/blocks/CardOrganization.vue +4 -4
  726. package/src/modules/organizations/components/blocks/Contacts.vue +8 -8
  727. package/src/modules/organizations/components/blocks/Rating.vue +1 -1
  728. package/src/modules/organizations/components/forms/AddExistingMembersForm.vue +3 -3
  729. package/src/modules/organizations/components/forms/DepartmentForm.vue +1 -1
  730. package/src/modules/organizations/components/forms/InviteForm.vue +1 -1
  731. package/src/modules/organizations/components/pages/Department.vue +2 -2
  732. package/src/modules/organizations/components/pages/DepartmentEdit.vue +1 -1
  733. package/src/modules/organizations/components/pages/Members.vue +1 -1
  734. package/src/modules/organizations/components/pages/Organization.new.vue +8 -8
  735. package/src/modules/organizations/components/pages/Organization.vue +6 -6
  736. package/src/modules/organizations/components/pages/OrganizationDocuments.vue +2 -2
  737. package/src/modules/organizations/components/pages/Organizations.vue +3 -3
  738. package/src/modules/organizations/components/sections/Documents.vue +2 -2
  739. package/src/modules/organizations/components/sections/MembersAdd.vue +1 -1
  740. package/src/modules/organizations/components/sections/Unit.vue +1 -1
  741. package/src/modules/pages/views/components/blocks/CardPage.vue +2 -2
  742. package/src/modules/pages/views/components/pages/Page.vue +5 -5
  743. package/src/modules/products/components/blocks/CardCategory.vue +1 -1
  744. package/src/modules/products/components/blocks/CardPosition.vue +4 -4
  745. package/src/modules/products/components/blocks/CardProduct.vue +3 -3
  746. package/src/modules/products/components/blocks/ProductDiscounts.vue +3 -3
  747. package/src/modules/products/components/blocks/ProductImages.vue +2 -2
  748. package/src/modules/products/components/blocks/ProductVariants.vue +2 -2
  749. package/src/modules/products/components/elements/Image360.vue +2 -2
  750. package/src/modules/products/components/elements/Price.vue +2 -2
  751. package/src/modules/products/components/elements/QuantitySelector.vue +3 -3
  752. package/src/modules/products/components/elements/THC.vue +1 -1
  753. package/src/modules/products/components/forms/ReorderSettingsForm.vue +1 -1
  754. package/src/modules/products/components/forms/StockAuditForm.vue +2 -2
  755. package/src/modules/products/components/forms/StockHistoryView.vue +1 -1
  756. package/src/modules/products/components/pages/Categories.vue +1 -1
  757. package/src/modules/products/components/pages/CategoryEdit.vue +2 -2
  758. package/src/modules/products/components/pages/Product.vue +6 -6
  759. package/src/modules/products/components/pages/ProductEdit.vue +6 -6
  760. package/src/modules/products/components/pages/Products.vue +11 -11
  761. package/src/modules/products/components/sections/EditAttributes.vue +4 -4
  762. package/src/modules/products/components/sections/EditCategories.vue +1 -1
  763. package/src/modules/products/components/sections/EditDiscounts.vue +6 -6
  764. package/src/modules/products/components/sections/EditRecommended.vue +1 -1
  765. package/src/modules/products/components/sections/EditVariants.vue +8 -8
  766. package/src/modules/products/components/sections/FilterProducts.vue +3 -3
  767. package/src/modules/products/components/sections/ProductConfigurator.vue +2 -2
  768. package/src/modules/products/components/sections/ProductInformationSection.vue +10 -10
  769. package/src/modules/products/components/sections/ProductsRecommended.vue +2 -2
  770. package/src/modules/products/components/sections/SectionProduct.vue +7 -7
  771. package/src/modules/products/experiments/product-recommendation/components/HeroRecommendation.vue +3 -3
  772. package/src/modules/rents/views/components/blocks/CardRent.vue +1 -1
  773. package/src/modules/rents/views/components/pages/Gant/DateLabel.vue +1 -1
  774. package/src/modules/rents/views/components/pages/Gant/GanttBar.vue +2 -2
  775. package/src/modules/rents/views/components/pages/Gant/GanttChart.vue +8 -8
  776. package/src/modules/rents/views/components/pages/Gant/GanttHeaderCell.vue +1 -1
  777. package/src/modules/rents/views/components/pages/Rents.vue +1 -1
  778. package/src/modules/rents/views/components/pages/RentsEdit.vue +6 -6
  779. package/src/modules/reports/components/pages/BackofficeReports.vue +3 -3
  780. package/src/modules/reports/components/sections/FormReport.vue +1 -1
  781. package/src/modules/spots/components/blocks/CardSpot.vue +4 -4
  782. package/src/modules/spots/components/blocks/SpotMemberModify.vue +1 -1
  783. package/src/modules/spots/components/layouts/Spots.vue +2 -2
  784. package/src/modules/spots/components/pages/Spot.vue +5 -5
  785. package/src/modules/spots/components/pages/SpotEdit.vue +2 -2
  786. package/src/modules/spots/components/pages/Spots.vue +3 -3
  787. package/src/modules/spots/components/sections/MapSection.vue +1 -1
  788. package/src/modules/spots/components/sections/WorktimeEdit.vue +4 -4
  789. package/src/modules/wallet/views/components/blocks/CardBalanceReplenished.vue +5 -5
  790. package/src/modules/wallet/views/components/blocks/CardDeposit.vue +5 -5
  791. package/src/modules/wallet/views/components/blocks/CashDeposit.vue +2 -2
  792. package/src/modules/wallet/views/components/blocks/CryptoDeposit.vue +4 -4
  793. package/src/modules/wallet/views/components/blocks/CryptoDepositProcessing.vue +11 -11
  794. package/src/modules/wallet/views/components/elements/ConnectMetamask.vue +4 -4
  795. package/src/modules/wallet/views/components/pages/Wallet.vue +22 -22
  796. package/src/styles/config.scss +193 -507
  797. package/src/styles/layout.scss +81 -1
  798. package/src/styles/reset.scss +2 -0
  799. package/src/styles/theme.scss +1 -8
  800. package/dist/martyrs/dist/main-BFvlam0J.js.map +0 -1
  801. package/dist/martyrs/node_modules/.pnpm/@capacitor_core@7.0.1/node_modules/@capacitor/core/dist/index.js.map +0 -1
  802. package/dist/martyrs/src/components/Button/Button.vue.js.map +0 -1
  803. package/dist/martyrs/src/components/Dropdown/Dropdown.vue.js.map +0 -1
  804. package/dist/martyrs/src/components/Field/Field.vue2.js.map +0 -1
  805. package/dist/martyrs/src/components/Menu/Menu.vue.js.map +0 -1
  806. package/dist/martyrs/src/components/Select/Select.vue2.js.map +0 -1
  807. package/dist/martyrs/src/components/SelectMulti/SelectMulti.vue.js.map +0 -1
  808. package/dist/node_modules/.pnpm/@vue_server-renderer@3.5.13_vue@3.5.13_typescript@5.8.3_/node_modules/@vue/server-renderer/dist/server-renderer.esm-bundler.js.map +0 -1
  809. package/dist/node_modules/.pnpm/@vue_shared@3.5.13/node_modules/@vue/shared/dist/shared.esm-bundler.js.map +0 -1
  810. package/dist/node_modules/.pnpm/dayjs@1.11.13/node_modules/dayjs/dayjs.min.js.map +0 -1
  811. package/dist/node_modules/.pnpm/dayjs@1.11.13/node_modules/dayjs/plugin/weekOfYear.js.map +0 -1
  812. package/dist/node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm-browser/native.js +0 -6
  813. package/dist/node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm-browser/native.js.map +0 -1
  814. package/dist/node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm-browser/rng.js +0 -15
  815. package/dist/node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm-browser/rng.js.map +0 -1
  816. package/dist/node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm-browser/stringify.js +0 -11
  817. package/dist/node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm-browser/stringify.js.map +0 -1
  818. package/dist/node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm-browser/v4.js +0 -20
  819. package/dist/node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm-browser/v4.js.map +0 -1
  820. package/src/modules/LAYOUT.MD +0 -767
  821. package/src/modules/STYLES.MD +0 -298
  822. package/src/modules/inventory/inventory.router.js +0 -72
  823. package/src/modules/products/products.router.js +0 -299
  824. package/src/styles/base/all.scss +0 -233
  825. package/src/styles/base/backgrounds.scss +0 -70
  826. package/src/styles/base/borders.scss +0 -407
  827. package/src/styles/base/scrolling.scss +0 -137
  828. package/src/styles/base/shadow_transitions_hover_refactor.scss +0 -158
  829. package/src/styles/base/transitions.scss +0 -109
  830. package/src/styles/responsive.scss +0 -152
  831. package/src/styles/typography.scss +0 -161
  832. /package/dist/{node_modules/.pnpm/@vue_shared@3.5.13 → martyrs}/node_modules/@vue/shared/dist/shared.esm-bundler.js +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"EditVariants.vue.js","sources":["../../../../../../../src/modules/products/components/sections/EditVariants.vue"],"sourcesContent":["<template>\n <Block\n title=\"Variants\"\n placeholder=\"No variants added yet. At least one variant is required.\"\n :actions=\"[{\n label: '+',\n function: () => openVariantPopup()\n }]\"\n >\n <!-- is {{currentVariants}} -->\n <Feed\n v-model:items=\"currentVariants\"\n :store=\"variants\"\n :options=\"{\n product: route.params.product,\n }\"\n :skeleton=\"{\n structure: [\n { block: 'text', size: 'small' },\n { block: 'text', size: 'medium' },\n { block: 'text', size: 'small' }\n ]\n }\"\n :states=\"{\n empty: {\n title: 'No variants',\n description: 'Create your first variant'\n }\n }\"\n >\n <template #default=\"{ items }\">\n <li\n v-for=\"variant in items\"\n :key=\"variant._id\"\n class=\"bg-white radius-small pd-small flex-nowrap flex-v-center flex gap-thin mn-b-thin\"\n >\n <div class=\"aspect-1x1 h-3r flex-child-default radius-small o-hidden\">\n <img\n v-if=\"variant.images?.length > 0\"\n :src=\"(FILE_SERVER_URL || '') + variant.images[0]\"\n alt=\"Variant image\"\n class=\"w-100 h-100 object-fit-cover\"\n />\n <PlaceholderImage v-else class=\"w-100 h-100\" />\n </div>\n \n <div class=\"w-100\">\n <div class=\"flex-nowrap mn-b-nano flex-v-center flex\">\n <p class=\"p-regular t-medium d-block\">{{ variant.name || 'Unnamed variant' }}</p>\n <p v-if=\"variant.status\" class=\"t-small pd-thin mn-l-thin radius-thin bg-light\">{{ variant.status }}</p>\n </div>\n\n <p class=\"t-medium t-transp\">{{ returnCurrency() }}{{ variant.price }} per {{ variant.quantity }}{{ variant.unit }}</p>\n <p v-if=\"variant.ingredients?.length\" class=\"t-small t-transp\">{{ variant.ingredients.length }} ingredients</p>\n \n </div>\n \n <div class=\"flex gap-thin\">\n <Button\n :showSuccess=\"false\"\n :showLoader=\"true\"\n class=\"radius-small pd-small flex-center flex aspect-1x1 bg-light cursor-pointer hover-scale-1\"\n :submit=\"() => copyVariant(variant)\"\n >\n <IconDuplicate class=\"i-medium\" />\n </Button>\n <Button\n :showSuccess=\"false\"\n :showLoader=\"false\"\n class=\"radius-small pd-small flex-center flex aspect-1x1 bg-light cursor-pointer hover-scale-1\"\n :submit=\"() => openVariantPopup(variant)\"\n >\n <IconEdit class=\"i-medium\" />\n </Button>\n <Button\n :showSuccess=\"false\"\n :showLoader=\"true\"\n class=\"radius-small pd-small flex-center flex aspect-1x1 bg-red cursor-pointer hover-scale-1\"\n :submit=\"() => deleteVariant(variant)\"\n >\n <IconDelete class=\"i-medium\" />\n </Button>\n </div>\n </li>\n </template>\n </Feed>\n </Block>\n\n <Popup\n :title=\"editingVariant ? 'Edit Variant' : 'Create Variant'\"\n @close-popup=\"closeVariantPopup\"\n :isPopupOpen=\"isVariantPopupOpen\"\n align=\"center right\"\n class=\"bg-white h-min-100 w-max-50r pd-medium\"\n >\n <div class=\"cols-1 gap-thin o-y-scroll\">\n <!-- Status and Quantity at the top -->\n <div class=\"flex gap-thin\">\n <Select\n v-model:select=\"currentVariant.status\"\n label=\"Status\"\n placeholder=\"Select status\"\n :options=\"['published', 'draft', 'archived']\"\n class=\"w-100 bg-light radius-small pd-small\"\n />\n \n <Field \n v-model:field=\"currentVariant.quantity\" \n label=\"Quantity\"\n placeholder=\"Enter quantity\" \n class=\"w-100 bg-light radius-small pd-small\"\n type=\"number\"\n >\n <Select \n v-model:select=\"currentVariant.unit\" \n placeholder=\"Unit\"\n :options=\"['pcs', 'g', 'kg', 'ml', 'l', 'oz']\"\n class=\"pos-relative bg-white gap-small flex flex-column pd-thin radius-thin\"\n />\n </Field>\n </div>\n\n <!-- Price and Cost -->\n <div class=\"flex gap-thin\">\n <Field\n v-model:field=\"currentVariant.price\"\n label=\"Price\"\n type=\"number\"\n placeholder=\"Price\"\n class=\"w-100 bg-light radius-small pd-small\"\n />\n \n <Field\n v-model:field=\"currentVariant.cost\"\n label=\"Cost\"\n type=\"number\"\n placeholder=\"Cost\"\n class=\"w-100 bg-light radius-small pd-small\"\n />\n </div>\n \n <!-- Attributes Section -->\n <div class=\"t-medium mn-t-small mn-b-small\">Attributes</div>\n <div \n class=\"gap-micro flex-nowrap flex mn-b-small\" \n v-for=\"(attr, attrIndex) in currentVariant.attributes\" \n :key=\"attrIndex\"\n > \n <Field\n v-model:field=\"attr.name\"\n placeholder=\"Attribute Name\"\n class=\"w-100 bg-light radius-small pd-small\"\n /> \n <Field\n v-model:field=\"attr.value\"\n placeholder=\"Attribute Value\"\n class=\"w-100 bg-light radius-small pd-small\"\n />\n <div class=\"radius-small h-100 flex-center flex-child-default flex aspect-1x1 bg-red cursor-pointer hover-scale-1\">\n <IconDelete \n @click=\"() => currentVariant.attributes.splice(attrIndex, 1)\" \n class=\"i-medium\"\n />\n </div>\n </div>\n\n <Button\n class=\"bg-light w-100\"\n :showSuccess=\"false\"\n :showLoader=\"false\"\n @click=\"addAttribute\"\n >\n Add Attribute\n </Button>\n\n <!-- SKU and Name - auto-generated -->\n <Field\n v-model:field=\"currentVariant.sku\"\n label=\"SKU\"\n placeholder=\"SKU\"\n class=\"w-100 bg-light radius-small pd-small\"\n />\n\n <Field\n v-model:field=\"currentVariant.name\"\n label=\"Name\"\n placeholder=\"Variant Name\"\n class=\"w-100 bg-light radius-small pd-small\"\n />\n\n <Field\n v-model:field=\"currentVariant.description\"\n label=\"Description\"\n placeholder=\"Enter variant description\"\n class=\"w-100 bg-light radius-small pd-small\"\n style=\"resize: vertical\"\n type=\"textarea\"\n />\n\n <!-- Ingredients Section -->\n <div class=\"mn-t-medium\">\n <EditIngredients \n v-model:ingredients=\"currentVariant.ingredients\"\n />\n </div>\n\n <!-- Images Section -->\n <div class=\"t-medium mn-t-small mn-b-small\">Images</div>\n <EditImages\n :images=\"currentVariant.images || []\"\n :uploadPath=\"'variants'\"\n class=\"bg-light pd-small radius-small\"\n @update:images=\"(newImages) => { currentVariant.images = newImages }\"\n />\n \n <!-- Action Buttons -->\n <div class=\"flex gap-thin mn-t-medium\">\n <Button\n :showSuccess=\"false\"\n :showLoader=\"false\"\n class=\"bg-red t-white w-100\"\n :submit=\"closeVariantPopup\"\n >\n Cancel\n </Button>\n <Button\n class=\"bg-main w-100\"\n :submit=\"saveVariant\"\n >\n {{ editingVariant ? 'Update Variant' : 'Create Variant' }}\n </Button>\n </div>\n </div>\n </Popup>\n</template>\n\n<script setup>\nimport { ref, reactive, computed, watch } from 'vue';\nimport { useRoute } from 'vue-router';\n\nimport * as auth from '@martyrs/src/modules/auth/views/store/auth.js';\nimport variants from '@martyrs/src/modules/products/store/variants.store.js';\nimport * as products from '@martyrs/src/modules/products/store/products.js';\n\n// Components\nimport Block from '@martyrs/src/components/Block/Block.vue';\nimport Field from '@martyrs/src/components/Field/Field.vue';\nimport Button from '@martyrs/src/components/Button/Button.vue';\nimport Popup from '@martyrs/src/components/Popup/Popup.vue';\nimport Select from '@martyrs/src/components/Select/Select.vue';\nimport Feed from '@martyrs/src/components/Feed/Feed.vue';\nimport EditImages from '@martyrs/src/components/EditImages/EditImages.vue';\nimport EditIngredients from '@martyrs/src/modules/products/components/sections/EditIngredients.vue';\n\n// Icons\nimport PlaceholderImage from '@martyrs/src/modules/icons/placeholders/PlaceholderImage.vue';\nimport IconEdit from '@martyrs/src/modules/icons/navigation/IconEdit.vue';\nimport IconDelete from '@martyrs/src/modules/icons/navigation/IconDelete.vue';\nimport IconDuplicate from '@martyrs/src/modules/icons/actions/IconDuplicate.vue';\nimport { useGlobalMixins } from '@martyrs/src/modules/core/views/mixins/mixins.js';\n\nconst route = useRoute();\nconst { returnCurrency } = useGlobalMixins();\n\nconst productId = computed(() => route.params.product);\n\nconst productOwner = computed(() => {\n return products?.state?.current?.owner;\n});\n\n// Локальное состояние\nconst isVariantPopupOpen = ref(false);\nconst editingVariant = ref(null);\nconst currentVariants = ref([]);\n\n// Функция генерации SKU\nfunction generateSKU() {\n const timestamp = Date.now().toString(36);\n const random = Math.random().toString(36).substring(2, 5);\n return `VAR-${timestamp}-${random}`.toUpperCase();\n}\n\n// Функция генерации имени из атрибутов\nfunction generateNameFromAttributes() {\n if (currentVariant.attributes.length > 0) {\n const validAttributes = currentVariant.attributes\n .filter(attr => attr.name && attr.value)\n .map(attr => `${attr.value}`)\n .join(' ');\n \n if (validAttributes) {\n return validAttributes;\n }\n }\n \n // Если нет атрибутов, используем название продукта и количество\n const productName = products?.state?.current?.name || 'Product';\n return `${productName} ${currentVariant.quantity}${currentVariant.unit}`;\n}\n\n// Реактивный объект для текущего варианта\nconst currentVariant = reactive({\n name: '',\n description: '',\n sku: '',\n images: [],\n price: 0,\n cost: 0,\n quantity: 1,\n unit: 'pcs',\n status: 'published',\n ingredients: [],\n attributes: [],\n owner: null,\n creator: null,\n product: null\n});\n\n// Следим за изменениями атрибутов, количества и единиц для автогенерации имени\nwatch(\n () => [currentVariant.attributes, currentVariant.quantity, currentVariant.unit],\n () => {\n if (!editingVariant.value || !currentVariant.name) {\n currentVariant.name = generateNameFromAttributes();\n }\n },\n { deep: true }\n);\n\n// Функция открытия попапа варианта\nfunction openVariantPopup(variant = null) {\n editingVariant.value = variant;\n \n if (variant) {\n // Обновляем реактивный объект через Vue реактивность\n currentVariant.name = variant.name || '';\n currentVariant.description = variant.description || '';\n currentVariant.sku = variant.sku || '';\n currentVariant.images = [...(variant.images || [])];\n currentVariant.price = variant.price || 0;\n currentVariant.cost = variant.cost || 0;\n currentVariant.quantity = variant.quantity || 1;\n currentVariant.unit = variant.unit || 'pcs';\n currentVariant.status = variant.status || 'published';\n currentVariant.ingredients = [...(variant.ingredients || [])];\n currentVariant.attributes = (variant.attributes || []).map(attr => ({ ...attr }));\n currentVariant.owner = variant.owner;\n currentVariant.creator = variant.creator;\n currentVariant.product = variant.product;\n } else {\n // Для нового варианта генерируем SKU и устанавливаем только нужные поля\n currentVariant.sku = generateSKU();\n currentVariant.owner = {\n target: route.params._id || auth.state.user._id,\n type: route.params._id ? 'organization' : 'user'\n };\n currentVariant.creator = {\n target: auth.state.user._id,\n type: 'user',\n hidden: false\n };\n currentVariant.product = productId.value;\n \n // Генерируем имя после установки всех полей\n currentVariant.name = generateNameFromAttributes();\n }\n \n isVariantPopupOpen.value = true;\n}\n\nfunction closeVariantPopup() {\n isVariantPopupOpen.value = false;\n editingVariant.value = null;\n \n // Сбрасываем значения к дефолтным\n currentVariant.name = '';\n currentVariant.description = '';\n currentVariant.sku = '';\n currentVariant.images = [];\n currentVariant.price = 0;\n currentVariant.cost = 0;\n currentVariant.quantity = 1;\n currentVariant.unit = 'pcs';\n currentVariant.status = 'published';\n currentVariant.ingredients = [];\n currentVariant.attributes = [];\n currentVariant.owner = null;\n currentVariant.creator = null;\n currentVariant.product = null;\n}\n\nfunction addAttribute() {\n currentVariant.attributes.push({ name: '', value: '' });\n}\n\nasync function copyVariant(variant) {\n const variantCopy = {\n name: `${variant.name} (Copy)`,\n description: variant.description || '',\n sku: generateSKU(), // Генерируем новый SKU для копии\n images: [...(variant.images || [])],\n price: variant.price || 0,\n cost: variant.cost || 0,\n quantity: variant.quantity || 1,\n unit: variant.unit || 'pcs',\n status: variant.status || 'published',\n ingredients: (variant.ingredients || []).map(ing => ({ ...ing })),\n attributes: (variant.attributes || []).map(attr => ({ ...attr })),\n owner: {\n target: route.params._id || auth.state.user._id,\n type: route.params._id ? 'organization' : 'user'\n },\n creator: {\n target: auth.state.user._id,\n type: 'user',\n hidden: false\n },\n product: productId.value\n };\n \n try {\n const created = await variants.create(variantCopy);\n variants.addItem(created, currentVariants.value);\n } catch (error) {\n console.error('Error copying variant:', error);\n }\n}\n\nasync function deleteVariant(variant) {\n if (confirm('Are you sure you want to delete this variant?')) {\n try {\n console.log(variant)\n await variants.delete(variant);\n variants.removeItem(variant, currentVariants.value);\n } catch (error) {\n console.error('Error deleting variant:', error);\n }\n }\n}\n\nasync function saveVariant() {\n if (!currentVariant.name) {\n currentVariant.name = generateNameFromAttributes();\n }\n \n if (!currentVariant.sku) {\n currentVariant.sku = generateSKU();\n }\n\n const variantToSave = {\n name: currentVariant.name,\n description: currentVariant.description,\n sku: currentVariant.sku,\n images: [...currentVariant.images],\n price: parseFloat(currentVariant.price) || 0,\n cost: parseFloat(currentVariant.cost) || 0,\n quantity: parseInt(currentVariant.quantity) || 1,\n unit: currentVariant.unit || 'pcs',\n status: currentVariant.status,\n ingredients: currentVariant.ingredients.map(ing => ({ ...ing })),\n attributes: currentVariant.attributes.filter(attr => attr.name || attr.value),\n product: currentVariant.product\n };\n\n // Добавляем owner и creator только при создании нового варианта\n if (!editingVariant.value) {\n variantToSave.owner = {\n target: route.params._id || auth.state.user._id,\n type: route.params._id ? 'organization' : 'user'\n };\n variantToSave.creator = {\n target: auth.state.user._id,\n type: 'user',\n hidden: false\n };\n }\n\n try {\n if (editingVariant.value) {\n // Обновление существующего варианта\n variantToSave._id = editingVariant.value._id;\n const updated = await variants.update(variantToSave);\n variants.updateItem(updated, currentVariants.value);\n } else {\n // Создание нового варианта\n const created = await variants.create(variantToSave);\n variants.addItem(created, currentVariants.value);\n }\n \n closeVariantPopup();\n } catch (error) {\n console.error('Error saving variant:', error);\n throw error;\n }\n}\n</script>"],"names":["products?.state","auth.state","variants"],"mappings":"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"}
1
+ {"version":3,"file":"EditVariants.vue.js","sources":["../../../../../../../src/modules/products/components/sections/EditVariants.vue"],"sourcesContent":["<template>\n <Block\n title=\"Variants\"\n placeholder=\"No variants added yet. At least one variant is required.\"\n :actions=\"[{\n label: '+',\n function: () => openVariantPopup()\n }]\"\n >\n <!-- is {{currentVariants}} -->\n <Feed\n v-model:items=\"currentVariants\"\n :store=\"variants\"\n :options=\"{\n product: route.params.product,\n }\"\n :skeleton=\"{\n structure: [\n { block: 'text', size: 'small' },\n { block: 'text', size: 'medium' },\n { block: 'text', size: 'small' }\n ]\n }\"\n :states=\"{\n empty: {\n title: 'No variants',\n description: 'Create your first variant'\n }\n }\"\n >\n <template #default=\"{ items }\">\n <li\n v-for=\"variant in items\"\n :key=\"variant._id\"\n class=\"bg-white radius-small pd-small flex-nowrap flex-v-center flex gap-thin mn-b-thin\"\n >\n <div class=\"aspect-1x1 h-3r flex-child-default radius-small o-hidden\">\n <img\n v-if=\"variant.images?.length > 0\"\n :src=\"(FILE_SERVER_URL || '') + variant.images[0]\"\n alt=\"Variant image\"\n class=\"w-100 h-100 object-fit-cover\"\n />\n <PlaceholderImage v-else class=\"w-100 h-100\" />\n </div>\n \n <div class=\"w-100\">\n <div class=\"flex-nowrap mn-b-nano flex-v-center flex\">\n <p class=\"p-regular fw-medium d-block\">{{ variant.name || 'Unnamed variant' }}</p>\n <p v-if=\"variant.status\" class=\"t-small pd-thin mn-l-thin radius-thin bg-light\">{{ variant.status }}</p>\n </div>\n\n <p class=\"fw-medium t-transp\">{{ returnCurrency() }}{{ variant.price }} per {{ variant.quantity }}{{ variant.unit }}</p>\n <p v-if=\"variant.ingredients?.length\" class=\"t-small t-transp\">{{ variant.ingredients.length }} ingredients</p>\n \n </div>\n \n <div class=\"flex gap-thin\">\n <Button\n :showSuccess=\"false\"\n :showLoader=\"true\"\n class=\"radius-small pd-small flex-center flex aspect-1x1 bg-light cursor-pointer hover:scale-[1.05]\"\n :submit=\"() => copyVariant(variant)\"\n >\n <IconDuplicate class=\"i-medium\" />\n </Button>\n <Button\n :showSuccess=\"false\"\n :showLoader=\"false\"\n class=\"radius-small pd-small flex-center flex aspect-1x1 bg-light cursor-pointer hover:scale-[1.05]\"\n :submit=\"() => openVariantPopup(variant)\"\n >\n <IconEdit class=\"i-medium\" />\n </Button>\n <Button\n :showSuccess=\"false\"\n :showLoader=\"true\"\n class=\"radius-small pd-small flex-center flex aspect-1x1 bg-red cursor-pointer hover:scale-[1.05]\"\n :submit=\"() => deleteVariant(variant)\"\n >\n <IconDelete class=\"i-medium\" />\n </Button>\n </div>\n </li>\n </template>\n </Feed>\n </Block>\n\n <Popup\n :title=\"editingVariant ? 'Edit Variant' : 'Create Variant'\"\n @close-popup=\"closeVariantPopup\"\n :isPopupOpen=\"isVariantPopupOpen\"\n align=\"center right\"\n class=\"bg-white h-min-100 w-max-50r pd-medium\"\n >\n <div class=\"cols-1 gap-thin o-y-scroll\">\n <!-- Status and Quantity at the top -->\n <div class=\"flex gap-thin\">\n <Select\n v-model:select=\"currentVariant.status\"\n label=\"Status\"\n placeholder=\"Select status\"\n :options=\"['published', 'draft', 'archived']\"\n class=\"w-100 bg-light radius-small pd-small\"\n />\n \n <Field \n v-model:field=\"currentVariant.quantity\" \n label=\"Quantity\"\n placeholder=\"Enter quantity\" \n class=\"w-100 bg-light radius-small pd-small\"\n type=\"number\"\n >\n <Select \n v-model:select=\"currentVariant.unit\" \n placeholder=\"Unit\"\n :options=\"['pcs', 'g', 'kg', 'ml', 'l', 'oz']\"\n class=\"pos-relative bg-white gap-small flex flex-column pd-thin radius-thin\"\n />\n </Field>\n </div>\n\n <!-- Price and Cost -->\n <div class=\"flex gap-thin\">\n <Field\n v-model:field=\"currentVariant.price\"\n label=\"Price\"\n type=\"number\"\n placeholder=\"Price\"\n class=\"w-100 bg-light radius-small pd-small\"\n />\n \n <Field\n v-model:field=\"currentVariant.cost\"\n label=\"Cost\"\n type=\"number\"\n placeholder=\"Cost\"\n class=\"w-100 bg-light radius-small pd-small\"\n />\n </div>\n \n <!-- Attributes Section -->\n <div class=\"fw-medium mn-t-small mn-b-small\">Attributes</div>\n <div \n class=\"gap-micro flex-nowrap flex mn-b-small\" \n v-for=\"(attr, attrIndex) in currentVariant.attributes\" \n :key=\"attrIndex\"\n > \n <Field\n v-model:field=\"attr.name\"\n placeholder=\"Attribute Name\"\n class=\"w-100 bg-light radius-small pd-small\"\n /> \n <Field\n v-model:field=\"attr.value\"\n placeholder=\"Attribute Value\"\n class=\"w-100 bg-light radius-small pd-small\"\n />\n <div class=\"radius-small h-100 flex-center flex-child-default flex aspect-1x1 bg-red cursor-pointer hover:scale-[1.05]\">\n <IconDelete \n @click=\"() => currentVariant.attributes.splice(attrIndex, 1)\" \n class=\"i-medium\"\n />\n </div>\n </div>\n\n <Button\n class=\"bg-light w-100\"\n :showSuccess=\"false\"\n :showLoader=\"false\"\n @click=\"addAttribute\"\n >\n Add Attribute\n </Button>\n\n <!-- SKU and Name - auto-generated -->\n <Field\n v-model:field=\"currentVariant.sku\"\n label=\"SKU\"\n placeholder=\"SKU\"\n class=\"w-100 bg-light radius-small pd-small\"\n />\n\n <Field\n v-model:field=\"currentVariant.name\"\n label=\"Name\"\n placeholder=\"Variant Name\"\n class=\"w-100 bg-light radius-small pd-small\"\n />\n\n <Field\n v-model:field=\"currentVariant.description\"\n label=\"Description\"\n placeholder=\"Enter variant description\"\n class=\"w-100 bg-light radius-small pd-small\"\n style=\"resize: vertical\"\n type=\"textarea\"\n />\n\n <!-- Ingredients Section -->\n <div class=\"mn-t-medium\">\n <EditIngredients \n v-model:ingredients=\"currentVariant.ingredients\"\n />\n </div>\n\n <!-- Images Section -->\n <div class=\"fw-medium mn-t-small mn-b-small\">Images</div>\n <EditImages\n :images=\"currentVariant.images || []\"\n :uploadPath=\"'variants'\"\n class=\"bg-light pd-small radius-small\"\n @update:images=\"(newImages) => { currentVariant.images = newImages }\"\n />\n \n <!-- Action Buttons -->\n <div class=\"flex gap-thin mn-t-medium\">\n <Button\n :showSuccess=\"false\"\n :showLoader=\"false\"\n class=\"bg-red t-white w-100\"\n :submit=\"closeVariantPopup\"\n >\n Cancel\n </Button>\n <Button\n class=\"bg-main w-100\"\n :submit=\"saveVariant\"\n >\n {{ editingVariant ? 'Update Variant' : 'Create Variant' }}\n </Button>\n </div>\n </div>\n </Popup>\n</template>\n\n<script setup>\nimport { ref, reactive, computed, watch } from 'vue';\nimport { useRoute } from 'vue-router';\n\nimport * as auth from '@martyrs/src/modules/auth/views/store/auth.js';\nimport variants from '@martyrs/src/modules/products/store/variants.store.js';\nimport * as products from '@martyrs/src/modules/products/store/products.js';\n\n// Components\nimport Block from '@martyrs/src/components/Block/Block.vue';\nimport Field from '@martyrs/src/components/Field/Field.vue';\nimport Button from '@martyrs/src/components/Button/Button.vue';\nimport Popup from '@martyrs/src/components/Popup/Popup.vue';\nimport Select from '@martyrs/src/components/Select/Select.vue';\nimport Feed from '@martyrs/src/components/Feed/Feed.vue';\nimport EditImages from '@martyrs/src/components/EditImages/EditImages.vue';\nimport EditIngredients from '@martyrs/src/modules/products/components/sections/EditIngredients.vue';\n\n// Icons\nimport PlaceholderImage from '@martyrs/src/modules/icons/placeholders/PlaceholderImage.vue';\nimport IconEdit from '@martyrs/src/modules/icons/navigation/IconEdit.vue';\nimport IconDelete from '@martyrs/src/modules/icons/navigation/IconDelete.vue';\nimport IconDuplicate from '@martyrs/src/modules/icons/actions/IconDuplicate.vue';\nimport { useGlobalMixins } from '@martyrs/src/modules/core/views/mixins/mixins.js';\n\nconst route = useRoute();\nconst { returnCurrency } = useGlobalMixins();\n\nconst productId = computed(() => route.params.product);\n\nconst productOwner = computed(() => {\n return products?.state?.current?.owner;\n});\n\n// Локальное состояние\nconst isVariantPopupOpen = ref(false);\nconst editingVariant = ref(null);\nconst currentVariants = ref([]);\n\n// Функция генерации SKU\nfunction generateSKU() {\n const timestamp = Date.now().toString(36);\n const random = Math.random().toString(36).substring(2, 5);\n return `VAR-${timestamp}-${random}`.toUpperCase();\n}\n\n// Функция генерации имени из атрибутов\nfunction generateNameFromAttributes() {\n if (currentVariant.attributes.length > 0) {\n const validAttributes = currentVariant.attributes\n .filter(attr => attr.name && attr.value)\n .map(attr => `${attr.value}`)\n .join(' ');\n \n if (validAttributes) {\n return validAttributes;\n }\n }\n \n // Если нет атрибутов, используем название продукта и количество\n const productName = products?.state?.current?.name || 'Product';\n return `${productName} ${currentVariant.quantity}${currentVariant.unit}`;\n}\n\n// Реактивный объект для текущего варианта\nconst currentVariant = reactive({\n name: '',\n description: '',\n sku: '',\n images: [],\n price: 0,\n cost: 0,\n quantity: 1,\n unit: 'pcs',\n status: 'published',\n ingredients: [],\n attributes: [],\n owner: null,\n creator: null,\n product: null\n});\n\n// Следим за изменениями атрибутов, количества и единиц для автогенерации имени\nwatch(\n () => [currentVariant.attributes, currentVariant.quantity, currentVariant.unit],\n () => {\n if (!editingVariant.value || !currentVariant.name) {\n currentVariant.name = generateNameFromAttributes();\n }\n },\n { deep: true }\n);\n\n// Функция открытия попапа варианта\nfunction openVariantPopup(variant = null) {\n editingVariant.value = variant;\n \n if (variant) {\n // Обновляем реактивный объект через Vue реактивность\n currentVariant.name = variant.name || '';\n currentVariant.description = variant.description || '';\n currentVariant.sku = variant.sku || '';\n currentVariant.images = [...(variant.images || [])];\n currentVariant.price = variant.price || 0;\n currentVariant.cost = variant.cost || 0;\n currentVariant.quantity = variant.quantity || 1;\n currentVariant.unit = variant.unit || 'pcs';\n currentVariant.status = variant.status || 'published';\n currentVariant.ingredients = [...(variant.ingredients || [])];\n currentVariant.attributes = (variant.attributes || []).map(attr => ({ ...attr }));\n currentVariant.owner = variant.owner;\n currentVariant.creator = variant.creator;\n currentVariant.product = variant.product;\n } else {\n // Для нового варианта генерируем SKU и устанавливаем только нужные поля\n currentVariant.sku = generateSKU();\n currentVariant.owner = {\n target: route.params._id || auth.state.user._id,\n type: route.params._id ? 'organization' : 'user'\n };\n currentVariant.creator = {\n target: auth.state.user._id,\n type: 'user',\n hidden: false\n };\n currentVariant.product = productId.value;\n \n // Генерируем имя после установки всех полей\n currentVariant.name = generateNameFromAttributes();\n }\n \n isVariantPopupOpen.value = true;\n}\n\nfunction closeVariantPopup() {\n isVariantPopupOpen.value = false;\n editingVariant.value = null;\n \n // Сбрасываем значения к дефолтным\n currentVariant.name = '';\n currentVariant.description = '';\n currentVariant.sku = '';\n currentVariant.images = [];\n currentVariant.price = 0;\n currentVariant.cost = 0;\n currentVariant.quantity = 1;\n currentVariant.unit = 'pcs';\n currentVariant.status = 'published';\n currentVariant.ingredients = [];\n currentVariant.attributes = [];\n currentVariant.owner = null;\n currentVariant.creator = null;\n currentVariant.product = null;\n}\n\nfunction addAttribute() {\n currentVariant.attributes.push({ name: '', value: '' });\n}\n\nasync function copyVariant(variant) {\n const variantCopy = {\n name: `${variant.name} (Copy)`,\n description: variant.description || '',\n sku: generateSKU(), // Генерируем новый SKU для копии\n images: [...(variant.images || [])],\n price: variant.price || 0,\n cost: variant.cost || 0,\n quantity: variant.quantity || 1,\n unit: variant.unit || 'pcs',\n status: variant.status || 'published',\n ingredients: (variant.ingredients || []).map(ing => ({ ...ing })),\n attributes: (variant.attributes || []).map(attr => ({ ...attr })),\n owner: {\n target: route.params._id || auth.state.user._id,\n type: route.params._id ? 'organization' : 'user'\n },\n creator: {\n target: auth.state.user._id,\n type: 'user',\n hidden: false\n },\n product: productId.value\n };\n \n try {\n const created = await variants.create(variantCopy);\n variants.addItem(created, currentVariants.value);\n } catch (error) {\n console.error('Error copying variant:', error);\n }\n}\n\nasync function deleteVariant(variant) {\n if (confirm('Are you sure you want to delete this variant?')) {\n try {\n console.log(variant)\n await variants.delete(variant);\n variants.removeItem(variant, currentVariants.value);\n } catch (error) {\n console.error('Error deleting variant:', error);\n }\n }\n}\n\nasync function saveVariant() {\n if (!currentVariant.name) {\n currentVariant.name = generateNameFromAttributes();\n }\n \n if (!currentVariant.sku) {\n currentVariant.sku = generateSKU();\n }\n\n const variantToSave = {\n name: currentVariant.name,\n description: currentVariant.description,\n sku: currentVariant.sku,\n images: [...currentVariant.images],\n price: parseFloat(currentVariant.price) || 0,\n cost: parseFloat(currentVariant.cost) || 0,\n quantity: parseInt(currentVariant.quantity) || 1,\n unit: currentVariant.unit || 'pcs',\n status: currentVariant.status,\n ingredients: currentVariant.ingredients.map(ing => ({ ...ing })),\n attributes: currentVariant.attributes.filter(attr => attr.name || attr.value),\n product: currentVariant.product\n };\n\n // Добавляем owner и creator только при создании нового варианта\n if (!editingVariant.value) {\n variantToSave.owner = {\n target: route.params._id || auth.state.user._id,\n type: route.params._id ? 'organization' : 'user'\n };\n variantToSave.creator = {\n target: auth.state.user._id,\n type: 'user',\n hidden: false\n };\n }\n\n try {\n if (editingVariant.value) {\n // Обновление существующего варианта\n variantToSave._id = editingVariant.value._id;\n const updated = await variants.update(variantToSave);\n variants.updateItem(updated, currentVariants.value);\n } else {\n // Создание нового варианта\n const created = await variants.create(variantToSave);\n variants.addItem(created, currentVariants.value);\n }\n \n closeVariantPopup();\n } catch (error) {\n console.error('Error saving variant:', error);\n throw error;\n }\n}\n</script>"],"names":["products?.state","auth.state","variants"],"mappings":"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"}
@@ -7,8 +7,8 @@ import { actions, state as state$1 } from "../../store/categories.js";
7
7
  import { state } from "../../../marketplace/views/store/marketplace.js";
8
8
  /* empty css */
9
9
  const _hoisted_1 = { class: "pd-medium bg-light radius-medium" };
10
- const _hoisted_2 = { class: "cursor-pointer mn-r-auto t-medium p-medium" };
11
- const _hoisted_3 = { class: "cursor-pointer mn-r-auto t-medium p-medium" };
10
+ const _hoisted_2 = { class: "cursor-pointer mn-r-auto fw-medium p-medium" };
11
+ const _hoisted_3 = { class: "cursor-pointer mn-r-auto fw-medium p-medium" };
12
12
  const _sfc_main = {
13
13
  __name: "FilterProducts",
14
14
  props: {
@@ -164,7 +164,7 @@ const _sfc_main = {
164
164
  status: false
165
165
  }, {
166
166
  header: withCtx(() => _cache[3] || (_cache[3] = [
167
- createElementVNode("p", { class: "cursor-pointer mn-r-auto t-medium p-medium" }, "Delivery", -1)
167
+ createElementVNode("p", { class: "cursor-pointer mn-r-auto fw-medium p-medium" }, "Delivery", -1)
168
168
  ])),
169
169
  content: withCtx(() => [
170
170
  (openBlock(true), createElementBlock(Fragment, null, renderList(__props.deliveryOptions, (deliveryOption, index) => {
@@ -1 +1 @@
1
- {"version":3,"file":"FilterProducts.vue.js","sources":["../../../../../../../src/modules/products/components/sections/FilterProducts.vue"],"sourcesContent":[" <template>\n <div class=\"pd-medium bg-light radius-medium\">\n <!-- Categories Filter -->\n <Spoiler \n class=\"radius-small o-hidden mn-b-small\"\n :status=\"true\"\n >\n <template #header>\n <p class=\"cursor-pointer mn-r-auto t-medium p-medium\">{{ t('categoriesTitle') }}</p>\n <!-- SVG Icon -->\n </template>\n <template #content>\n <Checkbox \n v-for=\"(category, index) in categories.state.all\"\n :key=\"index\"\n :label=\"category.name\"\n :value=\"category.url\"\n class=\"w-100 mn-t-small mn-b-small bg-white radius-small pd-small\"\n :radio=\"marketplace.state.filter.categories\"\n @update:radio=\"event => marketplace.state.filter.categories = event\"\n />\n </template>\n </Spoiler>\n\n <hr class=\"mn-b-small t-transp\">\n\n <!-- Prices Filter -->\n <Spoiler \n class=\"radius-small o-hidden mn-b-small\"\n :status=\"false\"\n >\n <template #header>\n <p class=\"cursor-pointer mn-r-auto t-medium p-medium\">{{ t('filters.price.title') }}</p>\n <!-- SVG Icon -->\n </template>\n <template #content>\n <Checkbox \n v-for=\"(price, index) in prices\"\n :key=\"index\"\n :label=\"price.label\"\n :value=\"price.value\"\n class=\"w-100 mn-t-small bg-white radius-small pd-small\"\n :radio=\"marketplace.state.filter.prices\"\n @update:radio=\"event => marketplace.state.filter.prices = event\"\n />\n </template>\n </Spoiler>\n\n <hr class=\"mn-b-small\">\n\n <!-- Delivery Filter -->\n <Spoiler \n class=\"radius-small o-hidden mn-b-small\"\n :status=\"false\"\n >\n <template #header>\n <p class=\"cursor-pointer mn-r-auto t-medium p-medium\">Delivery</p>\n </template>\n <template #content>\n <Checkbox \n v-for=\"(deliveryOption, index) in deliveryOptions\"\n :key=\"index\"\n :label=\"deliveryOption.label\"\n :value=\"deliveryOption.value\"\n class=\"w-100 mn-t-small bg-white radius-small pd-small\"\n :radio=\"marketplace.state.filter.delivery\"\n @update:radio=\"event => marketplace.state.filter.delivery = event\"\n />\n </template>\n </Spoiler>\n\n <hr class=\"mn-b-semi\">\n\n <!-- Reset filter -->\n <button @click=\"resetFilters\" class=\"bg-main w-100 button\">{{ t('filters.reset') }}</button>\n </div>\n </template>\n\n<script setup>\nimport { ref, watch, onMounted } from 'vue'\n\nimport Spoiler from \"@martyrs/src/components/Spoiler/Spoiler.vue\"\nimport Checkbox from \"@martyrs/src/components/Checkbox/Checkbox.vue\"\n\nimport { useI18n } from 'vue-i18n'\nimport { useRoute, useRouter,onBeforeRouteLeave } from 'vue-router'\n\nconst route = useRoute()\nconst router = useRouter()\n\nimport * as categories from '@martyrs/src/modules/products/store/categories.js';\nimport * as marketplace from '@martyrs/src/modules/marketplace/views/store/marketplace.js';\n\nlet options = {\n status: 'published'\n}\n\nlet selectedFilters = ref({\n categories: [],\n prices: [],\n delivery: [],\n extra: []\n})\n\n// Пропсы и данные, которые вы передаёте в компонент\nconst props = defineProps({\n selectedFilters: Object,\n prices: {\n type: Array,\n default: () => [\n { label: 'Under 300฿', value: '<300' },\n { label: '300฿ to 600฿', value: '300-600' },\n { label: '600฿ to 1200฿', value: '600-1200' },\n { label: '$1200 and above', value: '>1200' }\n ]\n },\n deliveryOptions: {\n type: Array,\n default: () => [\n { label: 'Pickup', value: { min: 0, max: 25 } },\n { label: 'Courier', value: { min: 25, max: 50 } },\n { label: 'Post', value: { min: 50, max: 100 } }\n ]\n }\n})\n\nwatch(() => marketplace.state.filter, (newFilterValue, oldFilterValue) => {\n // Переводим фильтр в формат query\n const query = { ...route.query };\n\n // Удаляем старые значения фильтра из query\n Object.keys(oldFilterValue).forEach(key => {\n if (query[key]) {\n delete query[key];\n }\n });\n\n // Добавляем новые значения фильтра в query\n const newQueryValues = Object.fromEntries(\n Object.entries(newFilterValue)\n .filter(([key, value]) => Array.isArray(value) && value.length > 0)\n .map(([key, value]) => [key, value.join(',')])\n );\n Object.assign(query, newQueryValues);\n\n // Обновляем маршрут с новым query\n router.repalce({ query });\n}, { deep: true })\n\nonMounted(async () => {\n await categories.actions.read(options)\n \n if (route.query) {\n const query = route.query;\n const newFilterValue = {\n categories: query.categories ? query.categories.split(',') : [],\n prices: query.prices ? query.prices.split(',') : [],\n delivery: query.delivery ? query.delivery.split(',') : [],\n // Продолжайте этот паттерн для остальных полей фильтра\n };\n marketplace.state.filter.innerHTML = newFilterValue;\n }\n})\n\nconst emit = defineEmits(['updateFilters', 'resetFilters'])\n\nconst emitFilterChange = (filterType, value) => {\n emit('updateFilters', { filterType, value })\n}\n\nconst resetFilters = () => {\n emit('resetFilters')\n}\nconst text = {\n locale: 'en',\n messages: {\n en: {\n categoriesTitle: 'Category',\n categories: [],\n filters: {\n title: 'Filters',\n price: {\n title: 'Price',\n from: 'From',\n to: 'To'\n },\n filters: [],\n reset: 'Reset Filters'\n }\n },\n ru: {\n categoriesTitle: 'Категория',\n categories: [],\n filters: {\n title: 'Фильтры',\n price: {\n title: 'Цена',\n from: 'От',\n to: 'До'\n },\n filters: [],\n reset: 'Сбросить фильтры',\n }\n }\n }\n }\n\n categories.state.all.forEach( category => {\n category.translations.forEach( localization => {\n text.messages[localization.locale].categories.push(localization.text)\n })\n })\n\n const { t } = useI18n(text)\n \n\n\n// Добавьте свою локализацию и методы t, если они нужны\n</script>\n\n<style>\n/* Ваши стили */\n</style>\n"],"names":["marketplace.state","categories.actions","categories.state"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuFA,UAAM,QAAQ,SAAQ;AACtB,UAAM,SAAS,UAAS;AAKxB,QAAI,UAAU;AAAA,MACZ,QAAQ;AAAA,IACV;AAEsB,QAAI;AAAA,MACxB,YAAY,CAAA;AAAA,MACZ,QAAQ,CAAA;AAAA,MACR,UAAU,CAAA;AAAA,MACV,OAAO,CAAA;AAAA,IACT,CAAC;AAwBD,UAAM,MAAMA,MAAkB,QAAQ,CAAC,gBAAgB,mBAAmB;AAExE,YAAM,QAAQ,EAAE,GAAG,MAAM,MAAK;AAG9B,aAAO,KAAK,cAAc,EAAE,QAAQ,SAAO;AACzC,YAAI,MAAM,GAAG,GAAG;AACd,iBAAO,MAAM,GAAG;AAAA,QAClB;AAAA,MACF,CAAC;AAGD,YAAM,iBAAiB,OAAO;AAAA,QAC5B,OAAO,QAAQ,cAAc,EAC1B,OAAO,CAAC,CAAC,KAAK,KAAK,MAAM,MAAM,QAAQ,KAAK,KAAK,MAAM,SAAS,CAAC,EACjE,IAAI,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK,MAAM,KAAK,GAAG,CAAC,CAAC;AAAA,MACnD;AACE,aAAO,OAAO,OAAO,cAAc;AAGnC,aAAO,QAAQ,EAAE,OAAO;AAAA,IAC1B,GAAG,EAAE,MAAM,KAAI,CAAE;AAEjB,cAAU,YAAY;AACpB,YAAMC,QAAmB,KAAK,OAAO;AAErC,UAAI,MAAM,OAAO;AACf,cAAM,QAAQ,MAAM;AACpB,cAAM,iBAAiB;AAAA,UACrB,YAAY,MAAM,aAAa,MAAM,WAAW,MAAM,GAAG,IAAI,CAAA;AAAA,UAC7D,QAAQ,MAAM,SAAS,MAAM,OAAO,MAAM,GAAG,IAAI,CAAA;AAAA,UACjD,UAAU,MAAM,WAAW,MAAM,SAAS,MAAM,GAAG,IAAI,CAAA;AAAA;AAAA,QAE7D;AACID,cAAkB,OAAO,YAAY;AAAA,MACvC;AAAA,IACF,CAAC;AAED,UAAM,OAAO;AAMb,UAAM,eAAe,MAAM;AACzB,WAAK,cAAc;AAAA,IACrB;AACA,UAAM,OAAO;AAAA,MACT,QAAQ;AAAA,MACR,UAAU;AAAA,QACR,IAAI;AAAA,UACF,iBAAiB;AAAA,UACjB,YAAY,CAAA;AAAA,UACZ,SAAS;AAAA,YACP,OAAO;AAAA,YACP,OAAO;AAAA,cACL,OAAO;AAAA,cACP,MAAM;AAAA,cACN,IAAI;AAAA,YAChB;AAAA,YACU,SAAS,CAAA;AAAA,YACT,OAAO;AAAA,UACjB;AAAA,QACA;AAAA,QACM,IAAI;AAAA,UACF,iBAAiB;AAAA,UACjB,YAAY,CAAA;AAAA,UACZ,SAAS;AAAA,YACP,OAAO;AAAA,YACP,OAAO;AAAA,cACL,OAAO;AAAA,cACP,MAAM;AAAA,cACN,IAAI;AAAA,YAChB;AAAA,YACU,SAAS,CAAA;AAAA,YACT,OAAO;AAAA,UACjB;AAAA,QACA;AAAA,MACA;AAAA,IACA;AAEEE,YAAiB,IAAI,QAAS,cAAY;AACxC,eAAS,aAAa,QAAS,kBAAgB;AAC7C,aAAK,SAAS,aAAa,MAAM,EAAE,WAAW,KAAK,aAAa,IAAI;AAAA,MACtE,CAAC;AAAA,IACH,CAAC;AAED,UAAM,EAAE,MAAM,QAAQ,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"FilterProducts.vue.js","sources":["../../../../../../../src/modules/products/components/sections/FilterProducts.vue"],"sourcesContent":[" <template>\n <div class=\"pd-medium bg-light radius-medium\">\n <!-- Categories Filter -->\n <Spoiler \n class=\"radius-small o-hidden mn-b-small\"\n :status=\"true\"\n >\n <template #header>\n <p class=\"cursor-pointer mn-r-auto fw-medium p-medium\">{{ t('categoriesTitle') }}</p>\n <!-- SVG Icon -->\n </template>\n <template #content>\n <Checkbox \n v-for=\"(category, index) in categories.state.all\"\n :key=\"index\"\n :label=\"category.name\"\n :value=\"category.url\"\n class=\"w-100 mn-t-small mn-b-small bg-white radius-small pd-small\"\n :radio=\"marketplace.state.filter.categories\"\n @update:radio=\"event => marketplace.state.filter.categories = event\"\n />\n </template>\n </Spoiler>\n\n <hr class=\"mn-b-small t-transp\">\n\n <!-- Prices Filter -->\n <Spoiler \n class=\"radius-small o-hidden mn-b-small\"\n :status=\"false\"\n >\n <template #header>\n <p class=\"cursor-pointer mn-r-auto fw-medium p-medium\">{{ t('filters.price.title') }}</p>\n <!-- SVG Icon -->\n </template>\n <template #content>\n <Checkbox \n v-for=\"(price, index) in prices\"\n :key=\"index\"\n :label=\"price.label\"\n :value=\"price.value\"\n class=\"w-100 mn-t-small bg-white radius-small pd-small\"\n :radio=\"marketplace.state.filter.prices\"\n @update:radio=\"event => marketplace.state.filter.prices = event\"\n />\n </template>\n </Spoiler>\n\n <hr class=\"mn-b-small\">\n\n <!-- Delivery Filter -->\n <Spoiler \n class=\"radius-small o-hidden mn-b-small\"\n :status=\"false\"\n >\n <template #header>\n <p class=\"cursor-pointer mn-r-auto fw-medium p-medium\">Delivery</p>\n </template>\n <template #content>\n <Checkbox \n v-for=\"(deliveryOption, index) in deliveryOptions\"\n :key=\"index\"\n :label=\"deliveryOption.label\"\n :value=\"deliveryOption.value\"\n class=\"w-100 mn-t-small bg-white radius-small pd-small\"\n :radio=\"marketplace.state.filter.delivery\"\n @update:radio=\"event => marketplace.state.filter.delivery = event\"\n />\n </template>\n </Spoiler>\n\n <hr class=\"mn-b-semi\">\n\n <!-- Reset filter -->\n <button @click=\"resetFilters\" class=\"bg-main w-100 button\">{{ t('filters.reset') }}</button>\n </div>\n </template>\n\n<script setup>\nimport { ref, watch, onMounted } from 'vue'\n\nimport Spoiler from \"@martyrs/src/components/Spoiler/Spoiler.vue\"\nimport Checkbox from \"@martyrs/src/components/Checkbox/Checkbox.vue\"\n\nimport { useI18n } from 'vue-i18n'\nimport { useRoute, useRouter,onBeforeRouteLeave } from 'vue-router'\n\nconst route = useRoute()\nconst router = useRouter()\n\nimport * as categories from '@martyrs/src/modules/products/store/categories.js';\nimport * as marketplace from '@martyrs/src/modules/marketplace/views/store/marketplace.js';\n\nlet options = {\n status: 'published'\n}\n\nlet selectedFilters = ref({\n categories: [],\n prices: [],\n delivery: [],\n extra: []\n})\n\n// Пропсы и данные, которые вы передаёте в компонент\nconst props = defineProps({\n selectedFilters: Object,\n prices: {\n type: Array,\n default: () => [\n { label: 'Under 300฿', value: '<300' },\n { label: '300฿ to 600฿', value: '300-600' },\n { label: '600฿ to 1200฿', value: '600-1200' },\n { label: '$1200 and above', value: '>1200' }\n ]\n },\n deliveryOptions: {\n type: Array,\n default: () => [\n { label: 'Pickup', value: { min: 0, max: 25 } },\n { label: 'Courier', value: { min: 25, max: 50 } },\n { label: 'Post', value: { min: 50, max: 100 } }\n ]\n }\n})\n\nwatch(() => marketplace.state.filter, (newFilterValue, oldFilterValue) => {\n // Переводим фильтр в формат query\n const query = { ...route.query };\n\n // Удаляем старые значения фильтра из query\n Object.keys(oldFilterValue).forEach(key => {\n if (query[key]) {\n delete query[key];\n }\n });\n\n // Добавляем новые значения фильтра в query\n const newQueryValues = Object.fromEntries(\n Object.entries(newFilterValue)\n .filter(([key, value]) => Array.isArray(value) && value.length > 0)\n .map(([key, value]) => [key, value.join(',')])\n );\n Object.assign(query, newQueryValues);\n\n // Обновляем маршрут с новым query\n router.repalce({ query });\n}, { deep: true })\n\nonMounted(async () => {\n await categories.actions.read(options)\n \n if (route.query) {\n const query = route.query;\n const newFilterValue = {\n categories: query.categories ? query.categories.split(',') : [],\n prices: query.prices ? query.prices.split(',') : [],\n delivery: query.delivery ? query.delivery.split(',') : [],\n // Продолжайте этот паттерн для остальных полей фильтра\n };\n marketplace.state.filter.innerHTML = newFilterValue;\n }\n})\n\nconst emit = defineEmits(['updateFilters', 'resetFilters'])\n\nconst emitFilterChange = (filterType, value) => {\n emit('updateFilters', { filterType, value })\n}\n\nconst resetFilters = () => {\n emit('resetFilters')\n}\nconst text = {\n locale: 'en',\n messages: {\n en: {\n categoriesTitle: 'Category',\n categories: [],\n filters: {\n title: 'Filters',\n price: {\n title: 'Price',\n from: 'From',\n to: 'To'\n },\n filters: [],\n reset: 'Reset Filters'\n }\n },\n ru: {\n categoriesTitle: 'Категория',\n categories: [],\n filters: {\n title: 'Фильтры',\n price: {\n title: 'Цена',\n from: 'От',\n to: 'До'\n },\n filters: [],\n reset: 'Сбросить фильтры',\n }\n }\n }\n }\n\n categories.state.all.forEach( category => {\n category.translations.forEach( localization => {\n text.messages[localization.locale].categories.push(localization.text)\n })\n })\n\n const { t } = useI18n(text)\n \n\n\n// Добавьте свою локализацию и методы t, если они нужны\n</script>\n\n<style>\n/* Ваши стили */\n</style>\n"],"names":["marketplace.state","categories.actions","categories.state"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuFA,UAAM,QAAQ,SAAQ;AACtB,UAAM,SAAS,UAAS;AAKxB,QAAI,UAAU;AAAA,MACZ,QAAQ;AAAA,IACV;AAEsB,QAAI;AAAA,MACxB,YAAY,CAAA;AAAA,MACZ,QAAQ,CAAA;AAAA,MACR,UAAU,CAAA;AAAA,MACV,OAAO,CAAA;AAAA,IACT,CAAC;AAwBD,UAAM,MAAMA,MAAkB,QAAQ,CAAC,gBAAgB,mBAAmB;AAExE,YAAM,QAAQ,EAAE,GAAG,MAAM,MAAK;AAG9B,aAAO,KAAK,cAAc,EAAE,QAAQ,SAAO;AACzC,YAAI,MAAM,GAAG,GAAG;AACd,iBAAO,MAAM,GAAG;AAAA,QAClB;AAAA,MACF,CAAC;AAGD,YAAM,iBAAiB,OAAO;AAAA,QAC5B,OAAO,QAAQ,cAAc,EAC1B,OAAO,CAAC,CAAC,KAAK,KAAK,MAAM,MAAM,QAAQ,KAAK,KAAK,MAAM,SAAS,CAAC,EACjE,IAAI,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK,MAAM,KAAK,GAAG,CAAC,CAAC;AAAA,MACnD;AACE,aAAO,OAAO,OAAO,cAAc;AAGnC,aAAO,QAAQ,EAAE,OAAO;AAAA,IAC1B,GAAG,EAAE,MAAM,KAAI,CAAE;AAEjB,cAAU,YAAY;AACpB,YAAMC,QAAmB,KAAK,OAAO;AAErC,UAAI,MAAM,OAAO;AACf,cAAM,QAAQ,MAAM;AACpB,cAAM,iBAAiB;AAAA,UACrB,YAAY,MAAM,aAAa,MAAM,WAAW,MAAM,GAAG,IAAI,CAAA;AAAA,UAC7D,QAAQ,MAAM,SAAS,MAAM,OAAO,MAAM,GAAG,IAAI,CAAA;AAAA,UACjD,UAAU,MAAM,WAAW,MAAM,SAAS,MAAM,GAAG,IAAI,CAAA;AAAA;AAAA,QAE7D;AACID,cAAkB,OAAO,YAAY;AAAA,MACvC;AAAA,IACF,CAAC;AAED,UAAM,OAAO;AAMb,UAAM,eAAe,MAAM;AACzB,WAAK,cAAc;AAAA,IACrB;AACA,UAAM,OAAO;AAAA,MACT,QAAQ;AAAA,MACR,UAAU;AAAA,QACR,IAAI;AAAA,UACF,iBAAiB;AAAA,UACjB,YAAY,CAAA;AAAA,UACZ,SAAS;AAAA,YACP,OAAO;AAAA,YACP,OAAO;AAAA,cACL,OAAO;AAAA,cACP,MAAM;AAAA,cACN,IAAI;AAAA,YAChB;AAAA,YACU,SAAS,CAAA;AAAA,YACT,OAAO;AAAA,UACjB;AAAA,QACA;AAAA,QACM,IAAI;AAAA,UACF,iBAAiB;AAAA,UACjB,YAAY,CAAA;AAAA,UACZ,SAAS;AAAA,YACP,OAAO;AAAA,YACP,OAAO;AAAA,cACL,OAAO;AAAA,cACP,MAAM;AAAA,cACN,IAAI;AAAA,YAChB;AAAA,YACU,SAAS,CAAA;AAAA,YACT,OAAO;AAAA,UACjB;AAAA,QACA;AAAA,MACA;AAAA,IACA;AAEEE,YAAiB,IAAI,QAAS,cAAY;AACxC,eAAS,aAAa,QAAS,kBAAgB;AAC7C,aAAK,SAAS,aAAa,MAAM,EAAE,WAAW,KAAK,aAAa,IAAI;AAAA,MACtE,CAAC;AAAA,IACH,CAAC;AAED,UAAM,EAAE,MAAM,QAAQ,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,7 +1,7 @@
1
1
  import { ref, computed, createElementBlock, createCommentVNode, openBlock, createVNode, createElementVNode, toDisplayString, withCtx, unref, Fragment } from "vue";
2
2
  import { useI18n } from "vue-i18n";
3
3
  import _sfc_main$5 from "../../../icons/actions/IconShopcartAdd.vue.js";
4
- import _sfc_main$4 from "../../../../components/Button/Button.vue.js";
4
+ import _sfc_main$4 from "../../../../components/Button/Button.vue2.js";
5
5
  import _sfc_main$1 from "../blocks/ProductVariants.vue.js";
6
6
  import ProductDiscounts from "../blocks/ProductDiscounts.vue.js";
7
7
  import _sfc_main$3 from "../elements/QuantitySelector.vue.js";
@@ -90,7 +90,7 @@ const _sfc_main = {
90
90
  }, null, 8, ["discounts", "regularPrice", "selectedVariant", "productVariants"]),
91
91
  createElementVNode("div", _hoisted_2, [
92
92
  createElementVNode("div", _hoisted_3, [
93
- _cache[2] || (_cache[2] = createElementVNode("p", { class: "t-medium mn-b-thin" }, "Price", -1)),
93
+ _cache[2] || (_cache[2] = createElementVNode("p", { class: "fw-medium mn-b-thin" }, "Price", -1)),
94
94
  createVNode(_sfc_main$2, {
95
95
  product: selectedVariant.value || __props.productVariants[0],
96
96
  variants: __props.productVariants,
@@ -100,7 +100,7 @@ const _sfc_main = {
100
100
  ]),
101
101
  createElementVNode("div", _hoisted_4, [
102
102
  createElementVNode("div", _hoisted_5, [
103
- _cache[3] || (_cache[3] = createElementVNode("p", { class: "t-medium" }, "Quantity", -1)),
103
+ _cache[3] || (_cache[3] = createElementVNode("p", { class: "fw-medium" }, "Quantity", -1)),
104
104
  selectedVariant.value ? (openBlock(), createElementBlock("span", _hoisted_6, " (Max: " + toDisplayString(maxQuantity.value) + ") ", 1)) : createCommentVNode("", true)
105
105
  ]),
106
106
  createVNode(_sfc_main$3, {
@@ -1 +1 @@
1
- {"version":3,"file":"ProductConfigurator.vue.js","sources":["../../../../../../../src/modules/products/components/sections/ProductConfigurator.vue"],"sourcesContent":["<template>\n <div v-if=\"productVariants?.length\" class=\"w-100\">\n <!-- Variants Selection Component -->\n <ProductVariants\n :productVariants=\"productVariants\"\n :productId=\"productId\"\n :productName=\"productName\"\n @variant-selected=\"handleVariantSelected\"\n @update-images=\"$emit('update-images', $event)\"\n />\n \n <!-- Discounts Component -->\n <ProductDiscounts\n :discounts=\"discounts\"\n :regularPrice=\"regularPrice\"\n :selectedVariant=\"selectedVariant\"\n :productVariants=\"productVariants\"\n @select-discount=\"handleDiscountSelected\"\n class=\"mn-b-medium\"\n />\n \n <!-- Показываем цену, если нет вариантов или не выбран ни один вариант -->\n <div class=\"flex-nowrap flex gap-thin\">\n <div class=\"\">\n <p class=\"t-medium mn-b-thin\">Price</p>\n <Price \n :product=\"selectedVariant || productVariants[0]\"\n :variants=\"productVariants\" \n size=\"big\" \n class=\"flex gap-micro flex-center pd-small bg-second t-white w-max mn-b-medium\" \n />\n </div>\n \n \n <!-- Quantity Selection -->\n <div class=\"w-100\">\n <div class=\"flex flex-nowrap flex-v-center mn-b-thin\">\n <p class=\"t-medium\">Quantity</p>\n <span v-if=\"selectedVariant\" class=\"t-small t-transp mn-l-thin\">\n (Max: {{ maxQuantity }})\n </span>\n </div>\n \n <QuantitySelector v-model=\"quantity\" :maxValue=\"maxQuantity\" />\n </div>\n </div>\n\n <!-- Out of stock notice -->\n <div v-if=\"selectedVariant && !selectedVariant.available\" class=\"mn-b-medium\">\n <div class=\"flex flex-nowrap gap-small pd-small bg-error-light radius-small t-error\">\n <span>Out of stock</span>\n </div>\n </div>\n\n <!-- Add to cart button -->\n <div class=\"w-100 mn-b-medium\">\n <Button\n :submit=\"isVariantAvailable ? addProductToCart : undefined\"\n :disabled=\"!isVariantAvailable\"\n class=\"cursor-pointer pd-medium radius-big w-100 bg-main button h-3r\"\n >\n <div v-if=\"isVariantAvailable\" class=\"gap-micro flex flex-center flex-nowrap\">\n <IconShopcartAdd class=\"i-medium\"/>\n <span class=\"t-nowrap\">{{ t('addtoorder') }}</span>\n </div>\n <template v-else>\n <span v-if=\"!selectedVariant && productVariants.length > 1\">Select variant</span>\n <span v-else>Out of Stock</span>\n </template>\n </Button>\n </div>\n </div>\n</template>\n\n<script setup>\nimport { ref, computed, watch } from 'vue';\nimport { useI18n } from 'vue-i18n';\nimport IconShopcartAdd from '@martyrs/src/modules/icons/actions/IconShopcartAdd.vue';\nimport Button from '@martyrs/src/components/Button/Button.vue';\n\nimport ProductVariants from '../blocks/ProductVariants.vue';\nimport ProductDiscounts from '../blocks/ProductDiscounts.vue';\nimport QuantitySelector from '../elements/QuantitySelector.vue';\n\nimport Price from '@martyrs/src/modules/products/components/elements/Price.vue'\n\nconst props = defineProps({\n productVariants: { type: Array, default: () => [] },\n productId: { type: String, required: true },\n productName: { type: String, required: true },\n discounts: { type: Array, default: () => [] },\n regularPrice: { type: String, required: true }\n});\n\nconst emits = defineEmits(['variant-selected', 'add-to-cart', 'update-images']);\nconst { t } = useI18n({ messages: { en: { addtoorder: 'Add to Cart' }, ru: { addtoorder: 'Добавить в корзину' } } });\n\nconst selectedVariant = ref(null);\nconst quantity = ref(1);\n\n// Computed properties\nconst isVariantAvailable = computed(() => \n selectedVariant.value ? selectedVariant.value.available :\n props.productVariants.length === 1 ? props.productVariants[0].available : false\n);\n\nconst maxQuantity = computed(() => \n selectedVariant.value ? selectedVariant.value.available : \n props.productVariants.length === 1 ? props.productVariants[0].available || 1 : 1\n);\n\n// Methods\nfunction handleVariantSelected(variant) {\n selectedVariant.value = variant;\n if (quantity.value > variant.available) quantity.value = variant.available;\n emits('variant-selected', variant);\n}\n\nfunction handleDiscountSelected(discount) {\n // Update quantity based on discount requirements\n if (discount.quantity && discount.quantity > quantity.value) {\n quantity.value = discount.quantity;\n }\n}\n\nfunction addProductToCart() {\n const variant = selectedVariant.value || \n (props.productVariants.length === 1 ? props.productVariants[0] : null);\n \n if (!variant || !variant.available || quantity.value > variant.available) return false;\n \n emits('add-to-cart', {\n variant: variant,\n quantity: quantity.value\n });\n \n return true;\n}\n</script>"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsFA,UAAM,QAAQ;AAQd,UAAM,QAAQ;AACd,UAAM,EAAE,EAAC,IAAK,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,cAAa,GAAI,IAAI,EAAE,YAAY,qBAAoB,EAAE,EAAE,CAAE;AAEnH,UAAM,kBAAkB,IAAI,IAAI;AAChC,UAAM,WAAW,IAAI,CAAC;AAGtB,UAAM,qBAAqB;AAAA,MAAS,MAClC,gBAAgB,QAAQ,gBAAgB,MAAM,YAC9C,MAAM,gBAAgB,WAAW,IAAI,MAAM,gBAAgB,CAAC,EAAE,YAAY;AAAA,IAC5E;AAEA,UAAM,cAAc;AAAA,MAAS,MAC3B,gBAAgB,QAAQ,gBAAgB,MAAM,YAC9C,MAAM,gBAAgB,WAAW,IAAI,MAAM,gBAAgB,CAAC,EAAE,aAAa,IAAI;AAAA,IACjF;AAGA,aAAS,sBAAsB,SAAS;AACtC,sBAAgB,QAAQ;AACxB,UAAI,SAAS,QAAQ,QAAQ,UAAW,UAAS,QAAQ,QAAQ;AACjE,YAAM,oBAAoB,OAAO;AAAA,IACnC;AAEA,aAAS,uBAAuB,UAAU;AAExC,UAAI,SAAS,YAAY,SAAS,WAAW,SAAS,OAAO;AAC3D,iBAAS,QAAQ,SAAS;AAAA,MAC5B;AAAA,IACF;AAEA,aAAS,mBAAmB;AAC1B,YAAM,UAAU,gBAAgB,UAC7B,MAAM,gBAAgB,WAAW,IAAI,MAAM,gBAAgB,CAAC,IAAI;AAEnE,UAAI,CAAC,WAAW,CAAC,QAAQ,aAAa,SAAS,QAAQ,QAAQ,UAAW,QAAO;AAEjF,YAAM,eAAe;AAAA,QACnB;AAAA,QACA,UAAU,SAAS;AAAA,MACvB,CAAG;AAED,aAAO;AAAA,IACT;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"ProductConfigurator.vue.js","sources":["../../../../../../../src/modules/products/components/sections/ProductConfigurator.vue"],"sourcesContent":["<template>\n <div v-if=\"productVariants?.length\" class=\"w-100\">\n <!-- Variants Selection Component -->\n <ProductVariants\n :productVariants=\"productVariants\"\n :productId=\"productId\"\n :productName=\"productName\"\n @variant-selected=\"handleVariantSelected\"\n @update-images=\"$emit('update-images', $event)\"\n />\n \n <!-- Discounts Component -->\n <ProductDiscounts\n :discounts=\"discounts\"\n :regularPrice=\"regularPrice\"\n :selectedVariant=\"selectedVariant\"\n :productVariants=\"productVariants\"\n @select-discount=\"handleDiscountSelected\"\n class=\"mn-b-medium\"\n />\n \n <!-- Показываем цену, если нет вариантов или не выбран ни один вариант -->\n <div class=\"flex-nowrap flex gap-thin\">\n <div class=\"\">\n <p class=\"fw-medium mn-b-thin\">Price</p>\n <Price \n :product=\"selectedVariant || productVariants[0]\"\n :variants=\"productVariants\" \n size=\"big\" \n class=\"flex gap-micro flex-center pd-small bg-second t-white w-max mn-b-medium\" \n />\n </div>\n \n \n <!-- Quantity Selection -->\n <div class=\"w-100\">\n <div class=\"flex flex-nowrap flex-v-center mn-b-thin\">\n <p class=\"fw-medium\">Quantity</p>\n <span v-if=\"selectedVariant\" class=\"t-small t-transp mn-l-thin\">\n (Max: {{ maxQuantity }})\n </span>\n </div>\n \n <QuantitySelector v-model=\"quantity\" :maxValue=\"maxQuantity\" />\n </div>\n </div>\n\n <!-- Out of stock notice -->\n <div v-if=\"selectedVariant && !selectedVariant.available\" class=\"mn-b-medium\">\n <div class=\"flex flex-nowrap gap-small pd-small bg-error-light radius-small t-error\">\n <span>Out of stock</span>\n </div>\n </div>\n\n <!-- Add to cart button -->\n <div class=\"w-100 mn-b-medium\">\n <Button\n :submit=\"isVariantAvailable ? addProductToCart : undefined\"\n :disabled=\"!isVariantAvailable\"\n class=\"cursor-pointer pd-medium radius-big w-100 bg-main button h-3r\"\n >\n <div v-if=\"isVariantAvailable\" class=\"gap-micro flex flex-center flex-nowrap\">\n <IconShopcartAdd class=\"i-medium\"/>\n <span class=\"t-nowrap\">{{ t('addtoorder') }}</span>\n </div>\n <template v-else>\n <span v-if=\"!selectedVariant && productVariants.length > 1\">Select variant</span>\n <span v-else>Out of Stock</span>\n </template>\n </Button>\n </div>\n </div>\n</template>\n\n<script setup>\nimport { ref, computed, watch } from 'vue';\nimport { useI18n } from 'vue-i18n';\nimport IconShopcartAdd from '@martyrs/src/modules/icons/actions/IconShopcartAdd.vue';\nimport Button from '@martyrs/src/components/Button/Button.vue';\n\nimport ProductVariants from '../blocks/ProductVariants.vue';\nimport ProductDiscounts from '../blocks/ProductDiscounts.vue';\nimport QuantitySelector from '../elements/QuantitySelector.vue';\n\nimport Price from '@martyrs/src/modules/products/components/elements/Price.vue'\n\nconst props = defineProps({\n productVariants: { type: Array, default: () => [] },\n productId: { type: String, required: true },\n productName: { type: String, required: true },\n discounts: { type: Array, default: () => [] },\n regularPrice: { type: String, required: true }\n});\n\nconst emits = defineEmits(['variant-selected', 'add-to-cart', 'update-images']);\nconst { t } = useI18n({ messages: { en: { addtoorder: 'Add to Cart' }, ru: { addtoorder: 'Добавить в корзину' } } });\n\nconst selectedVariant = ref(null);\nconst quantity = ref(1);\n\n// Computed properties\nconst isVariantAvailable = computed(() => \n selectedVariant.value ? selectedVariant.value.available :\n props.productVariants.length === 1 ? props.productVariants[0].available : false\n);\n\nconst maxQuantity = computed(() => \n selectedVariant.value ? selectedVariant.value.available : \n props.productVariants.length === 1 ? props.productVariants[0].available || 1 : 1\n);\n\n// Methods\nfunction handleVariantSelected(variant) {\n selectedVariant.value = variant;\n if (quantity.value > variant.available) quantity.value = variant.available;\n emits('variant-selected', variant);\n}\n\nfunction handleDiscountSelected(discount) {\n // Update quantity based on discount requirements\n if (discount.quantity && discount.quantity > quantity.value) {\n quantity.value = discount.quantity;\n }\n}\n\nfunction addProductToCart() {\n const variant = selectedVariant.value || \n (props.productVariants.length === 1 ? props.productVariants[0] : null);\n \n if (!variant || !variant.available || quantity.value > variant.available) return false;\n \n emits('add-to-cart', {\n variant: variant,\n quantity: quantity.value\n });\n \n return true;\n}\n</script>"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsFA,UAAM,QAAQ;AAQd,UAAM,QAAQ;AACd,UAAM,EAAE,EAAC,IAAK,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,cAAa,GAAI,IAAI,EAAE,YAAY,qBAAoB,EAAE,EAAE,CAAE;AAEnH,UAAM,kBAAkB,IAAI,IAAI;AAChC,UAAM,WAAW,IAAI,CAAC;AAGtB,UAAM,qBAAqB;AAAA,MAAS,MAClC,gBAAgB,QAAQ,gBAAgB,MAAM,YAC9C,MAAM,gBAAgB,WAAW,IAAI,MAAM,gBAAgB,CAAC,EAAE,YAAY;AAAA,IAC5E;AAEA,UAAM,cAAc;AAAA,MAAS,MAC3B,gBAAgB,QAAQ,gBAAgB,MAAM,YAC9C,MAAM,gBAAgB,WAAW,IAAI,MAAM,gBAAgB,CAAC,EAAE,aAAa,IAAI;AAAA,IACjF;AAGA,aAAS,sBAAsB,SAAS;AACtC,sBAAgB,QAAQ;AACxB,UAAI,SAAS,QAAQ,QAAQ,UAAW,UAAS,QAAQ,QAAQ;AACjE,YAAM,oBAAoB,OAAO;AAAA,IACnC;AAEA,aAAS,uBAAuB,UAAU;AAExC,UAAI,SAAS,YAAY,SAAS,WAAW,SAAS,OAAO;AAC3D,iBAAS,QAAQ,SAAS;AAAA,MAC5B;AAAA,IACF;AAEA,aAAS,mBAAmB;AAC1B,YAAM,UAAU,gBAAgB,UAC7B,MAAM,gBAAgB,WAAW,IAAI,MAAM,gBAAgB,CAAC,IAAI;AAEnE,UAAI,CAAC,WAAW,CAAC,QAAQ,aAAa,SAAS,QAAQ,QAAQ,UAAW,QAAO;AAEjF,YAAM,eAAe;AAAA,QACnB;AAAA,QACA,UAAU,SAAS;AAAA,MACvB,CAAG;AAED,aAAO;AAAA,IACT;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,15 +1,15 @@
1
1
  import { getCurrentInstance, ref, computed, createElementBlock, openBlock, createElementVNode, Fragment, renderList, createBlock, withCtx, createVNode, withModifiers, toDisplayString } from "vue";
2
2
  import { useRouter } from "vue-router";
3
- import _sfc_main$4 from "../../../../components/Button/Button.vue.js";
3
+ import _sfc_main$4 from "../../../../components/Button/Button.vue2.js";
4
4
  import _sfc_main$2 from "../../../../components/Checkbox/Checkbox.vue.js";
5
5
  import _sfc_main$1 from "../blocks/CardProduct.vue.js";
6
6
  import _sfc_main$3 from "../../../icons/entities/IconProducts.vue.js";
7
7
  import _sfc_main$5 from "../../../icons/actions/IconShopcartAdd.vue.js";
8
8
  import { state, actions } from "../../../orders/store/shopcart.js";
9
9
  const _hoisted_1 = { class: "recommended-products cols-4 rows-auto-1fr mobile:cols-2 gap-thin" };
10
- const _hoisted_2 = { class: "flex-center flex flex-column pd-small radius-small br-solid br-1px br-light" };
10
+ const _hoisted_2 = { class: "flex-center flex flex-column pd-small radius-small br-1px br-light" };
11
11
  const _hoisted_3 = { class: "mn-b-thin i-extra pd-small bg-light radius-extra" };
12
- const _hoisted_4 = { class: "mn-b-medium h3 t-medium" };
12
+ const _hoisted_4 = { class: "mn-b-medium h3 fw-medium" };
13
13
  const _sfc_main = {
14
14
  __name: "ProductsRecommended",
15
15
  props: {
@@ -1 +1 @@
1
- {"version":3,"file":"ProductsRecommended.vue.js","sources":["../../../../../../../src/modules/products/components/sections/ProductsRecommended.vue"],"sourcesContent":["<script setup>\nimport { ref, computed, getCurrentInstance } from 'vue'\nimport { useRouter } from 'vue-router'\n\nimport Button from '@martyrs/src/components/Button/Button.vue'\nimport Checkbox from '@martyrs/src/components/Checkbox/Checkbox.vue'\n\nimport CardProduct from '@martyrs/src/modules/products/components/blocks/CardProduct.vue'\n\nimport IconShopcart from '@martyrs/src/modules/icons/entities/IconShopcart.vue';\nimport IconProducts from '@martyrs/src/modules/icons/entities/IconProducts.vue';\nimport IconShopcartAdd from '@martyrs/src/modules/icons/actions/IconShopcartAdd.vue'\n\nimport * as shopcart from '@martyrs/src/modules/orders/store/shopcart.js'\n\nconst router = useRouter()\nconst { proxy } = getCurrentInstance()\n\n// Props\nconst props = defineProps({\n products: {\n type: Array,\n required: true,\n default: () => []\n }\n})\n\n// Состояние выбранных товаров - массив id товаров с вариантами\nconst selectedProducts = ref(props.products.filter(p => p.variants?.length > 0).map(p => p._id))\n\n// Состояние для хранения выбранных дат для товаров типа rent\nconst selectedDates = ref(null)\n\n// Вычисляемая общая цена\nconst totalPrice = computed(() => {\n return props.products\n .filter(p => selectedProducts.value.includes(p._id))\n .reduce((sum, p) => {\n const price = p.variants?.[0]?.price || 0\n return sum + price\n }, 0)\n .toFixed(2)\n})\n\n// Проверка возможности добавления в корзину\nconst canAddToCart = computed(() => {\n const selected = props.products.filter(p => selectedProducts.value.includes(p._id))\n return selected.length > 0 && selected.some(p => p.variants?.length > 0)\n})\n\nconst handleProductClick = (product) => {\n if (product?._id && product?.owner?.target) {\n router.push(`/organizations/${product.owner.target}/products/${product._id}`)\n }\n}\n\n// Добавление выбранных товаров в корзину\nconst addSelectedToCart = async () => {\n const selected = props.products.filter(p => selectedProducts.value.includes(p._id))\n \n if (selected.length === 0) return\n \n try {\n // Берем организацию первого товара\n const firstProduct = selected[0]\n const organizationId = firstProduct.owner?.target?._id || firstProduct.owner?.target\n \n // Проверяем, что в корзине товары той же организации\n if (shopcart.state.organization && shopcart.state.organization !== organizationId) {\n // Можно добавить подтверждение замены корзины\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) return\n \n shopcart.state.positions = []\n }\n \n shopcart.state.organization = organizationId\n \n // Проверяем, есть ли товары типа rent среди выбранных\n const rentProducts = selected.filter(p => p.listing === 'rent')\n let rentalDates = null\n \n // Если есть товары типа rent, получаем даты для первого товара\n if (rentProducts.length > 0) {\n const firstRentProduct = rentProducts[0]\n const firstVariant = firstRentProduct.variants?.[0]\n \n if (firstVariant) {\n rentalDates = await proxy.$dateSelector(\n firstRentProduct._id,\n firstVariant._id,\n 1,\n firstVariant.price || firstRentProduct.price\n )\n \n if (!rentalDates) return // Пользователь отменил выбор дат\n }\n }\n \n // Добавляем каждый выбранный товар\n for (const product of selected) {\n // Проверяем наличие варианта\n if (!product.variants || product.variants.length === 0) continue\n \n // Используем первый вариант по умолчанию\n const variant = product.variants[0]\n \n // Для товаров типа rent используем полученные даты\n const datesToUse = product.listing === 'rent' ? rentalDates : null\n \n await shopcart.actions.addProductToCart(\n product, \n variant,\n organizationId,\n datesToUse,\n 1 // quantity\n )\n }\n } catch (error) {\n console.error('Error adding to cart:', error)\n }\n}\n</script>\n\n<template>\n <div>\n <h3 class=\"mn-b-small\">Frequently Bought Together</h3>\n <div class=\"recommended-products cols-4 rows-auto-1fr mobile:cols-2 gap-thin\">\n \n <CardProduct \n v-for=\"(product, index) in products\" \n :key=\"product?._id || index\"\n :product=\"product\"\n class=\"h-100 bg-light\"\n @click=\"handleProductClick(product)\"\n :showAddToCart=\"false\"\n >\n <Checkbox\n v-model:radio=\"selectedProducts\"\n :value=\"product._id\"\n mode=\"checkbox\"\n :validation=\"!product.variants || product.variants.length === 0\"\n class=\"pos-r-small pos-t-small pos-absolute\"\n @click.stop\n />\n </CardProduct>\n\n <div class=\"flex-center flex flex-column pd-small radius-small br-solid br-1px br-light\">\n <div class=\"mn-b-thin i-extra pd-small bg-light radius-extra\">\n <IconProducts class=\"i-big\"/>\n </div>\n <p class=\"mn-b-small\">Total price:</p>\n <p class=\"mn-b-medium h3 t-medium\">${{ totalPrice }}</p>\n <Button \n :disabled=\"selectedProducts.length < 1\"\n class=\"bg-main gap-micro\"\n :showSuccess=\"false\"\n :showLoader=\"false\"\n :submit=\"canAddToCart ? addSelectedToCart : undefined\"\n >\n <IconShopcartAdd class=\"i-medium\"/>\n <span>Add to Cart</span>\n </Button>\n </div>\n </div>\n </div>\n</template>"],"names":["shopcart.state","shopcart.actions"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAeA,UAAM,SAAS,UAAS;AACxB,UAAM,EAAE,MAAK,IAAK,mBAAkB;AAGpC,UAAM,QAAQ;AASd,UAAM,mBAAmB,IAAI,MAAM,SAAS,OAAO,OAAK,EAAE,UAAU,SAAS,CAAC,EAAE,IAAI,OAAK,EAAE,GAAG,CAAC;AAGzE,QAAI,IAAI;AAG9B,UAAM,aAAa,SAAS,MAAM;AAChC,aAAO,MAAM,SACV,OAAO,OAAK,iBAAiB,MAAM,SAAS,EAAE,GAAG,CAAC,EAClD,OAAO,CAAC,KAAK,MAAM;AAClB,cAAM,QAAQ,EAAE,WAAW,CAAC,GAAG,SAAS;AACxC,eAAO,MAAM;AAAA,MACf,GAAG,CAAC,EACH,QAAQ,CAAC;AAAA,IACd,CAAC;AAGD,UAAM,eAAe,SAAS,MAAM;AAClC,YAAM,WAAW,MAAM,SAAS,OAAO,OAAK,iBAAiB,MAAM,SAAS,EAAE,GAAG,CAAC;AAClF,aAAO,SAAS,SAAS,KAAK,SAAS,KAAK,OAAK,EAAE,UAAU,SAAS,CAAC;AAAA,IACzE,CAAC;AAED,UAAM,qBAAqB,CAAC,YAAY;AACtC,UAAI,SAAS,OAAO,SAAS,OAAO,QAAQ;AAC1C,eAAO,KAAK,kBAAkB,QAAQ,MAAM,MAAM,aAAa,QAAQ,GAAG,EAAE;AAAA,MAC9E;AAAA,IACF;AAGA,UAAM,oBAAoB,YAAY;AACpC,YAAM,WAAW,MAAM,SAAS,OAAO,OAAK,iBAAiB,MAAM,SAAS,EAAE,GAAG,CAAC;AAElF,UAAI,SAAS,WAAW,EAAG;AAE3B,UAAI;AAEF,cAAM,eAAe,SAAS,CAAC;AAC/B,cAAM,iBAAiB,aAAa,OAAO,QAAQ,OAAO,aAAa,OAAO;AAG9E,YAAIA,MAAe,gBAAgBA,MAAe,iBAAiB,gBAAgB;AAEjF,gBAAM,SAAS,MAAM,MAAM,OAAO;AAAA,YAChC,OAAO;AAAA,YACP,SAAS;AAAA,YACT,SAAS;AAAA,cACP,EAAE,OAAO,UAAU,OAAO,MAAK;AAAA,cAC/B,EAAE,OAAO,WAAW,OAAO,KAAI;AAAA,YACzC;AAAA,UACA,CAAO;AAED,cAAI,CAAC,OAAQ;AAEbA,gBAAe,YAAY,CAAA;AAAA,QAC7B;AAEAA,cAAe,eAAe;AAG9B,cAAM,eAAe,SAAS,OAAO,OAAK,EAAE,YAAY,MAAM;AAC9D,YAAI,cAAc;AAGlB,YAAI,aAAa,SAAS,GAAG;AAC3B,gBAAM,mBAAmB,aAAa,CAAC;AACvC,gBAAM,eAAe,iBAAiB,WAAW,CAAC;AAElD,cAAI,cAAc;AAChB,0BAAc,MAAM,MAAM;AAAA,cACxB,iBAAiB;AAAA,cACjB,aAAa;AAAA,cACb;AAAA,cACA,aAAa,SAAS,iBAAiB;AAAA,YACjD;AAEQ,gBAAI,CAAC,YAAa;AAAA,UACpB;AAAA,QACF;AAGA,mBAAW,WAAW,UAAU;AAE9B,cAAI,CAAC,QAAQ,YAAY,QAAQ,SAAS,WAAW,EAAG;AAGxD,gBAAM,UAAU,QAAQ,SAAS,CAAC;AAGlC,gBAAM,aAAa,QAAQ,YAAY,SAAS,cAAc;AAE9D,gBAAMC,QAAiB;AAAA,YACrB;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA;AAAA,UACR;AAAA,QACI;AAAA,MACF,SAAS,OAAO;AACd,gBAAQ,MAAM,yBAAyB,KAAK;AAAA,MAC9C;AAAA,IACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"ProductsRecommended.vue.js","sources":["../../../../../../../src/modules/products/components/sections/ProductsRecommended.vue"],"sourcesContent":["<script setup>\nimport { ref, computed, getCurrentInstance } from 'vue'\nimport { useRouter } from 'vue-router'\n\nimport Button from '@martyrs/src/components/Button/Button.vue'\nimport Checkbox from '@martyrs/src/components/Checkbox/Checkbox.vue'\n\nimport CardProduct from '@martyrs/src/modules/products/components/blocks/CardProduct.vue'\n\nimport IconShopcart from '@martyrs/src/modules/icons/entities/IconShopcart.vue';\nimport IconProducts from '@martyrs/src/modules/icons/entities/IconProducts.vue';\nimport IconShopcartAdd from '@martyrs/src/modules/icons/actions/IconShopcartAdd.vue'\n\nimport * as shopcart from '@martyrs/src/modules/orders/store/shopcart.js'\n\nconst router = useRouter()\nconst { proxy } = getCurrentInstance()\n\n// Props\nconst props = defineProps({\n products: {\n type: Array,\n required: true,\n default: () => []\n }\n})\n\n// Состояние выбранных товаров - массив id товаров с вариантами\nconst selectedProducts = ref(props.products.filter(p => p.variants?.length > 0).map(p => p._id))\n\n// Состояние для хранения выбранных дат для товаров типа rent\nconst selectedDates = ref(null)\n\n// Вычисляемая общая цена\nconst totalPrice = computed(() => {\n return props.products\n .filter(p => selectedProducts.value.includes(p._id))\n .reduce((sum, p) => {\n const price = p.variants?.[0]?.price || 0\n return sum + price\n }, 0)\n .toFixed(2)\n})\n\n// Проверка возможности добавления в корзину\nconst canAddToCart = computed(() => {\n const selected = props.products.filter(p => selectedProducts.value.includes(p._id))\n return selected.length > 0 && selected.some(p => p.variants?.length > 0)\n})\n\nconst handleProductClick = (product) => {\n if (product?._id && product?.owner?.target) {\n router.push(`/organizations/${product.owner.target}/products/${product._id}`)\n }\n}\n\n// Добавление выбранных товаров в корзину\nconst addSelectedToCart = async () => {\n const selected = props.products.filter(p => selectedProducts.value.includes(p._id))\n \n if (selected.length === 0) return\n \n try {\n // Берем организацию первого товара\n const firstProduct = selected[0]\n const organizationId = firstProduct.owner?.target?._id || firstProduct.owner?.target\n \n // Проверяем, что в корзине товары той же организации\n if (shopcart.state.organization && shopcart.state.organization !== organizationId) {\n // Можно добавить подтверждение замены корзины\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) return\n \n shopcart.state.positions = []\n }\n \n shopcart.state.organization = organizationId\n \n // Проверяем, есть ли товары типа rent среди выбранных\n const rentProducts = selected.filter(p => p.listing === 'rent')\n let rentalDates = null\n \n // Если есть товары типа rent, получаем даты для первого товара\n if (rentProducts.length > 0) {\n const firstRentProduct = rentProducts[0]\n const firstVariant = firstRentProduct.variants?.[0]\n \n if (firstVariant) {\n rentalDates = await proxy.$dateSelector(\n firstRentProduct._id,\n firstVariant._id,\n 1,\n firstVariant.price || firstRentProduct.price\n )\n \n if (!rentalDates) return // Пользователь отменил выбор дат\n }\n }\n \n // Добавляем каждый выбранный товар\n for (const product of selected) {\n // Проверяем наличие варианта\n if (!product.variants || product.variants.length === 0) continue\n \n // Используем первый вариант по умолчанию\n const variant = product.variants[0]\n \n // Для товаров типа rent используем полученные даты\n const datesToUse = product.listing === 'rent' ? rentalDates : null\n \n await shopcart.actions.addProductToCart(\n product, \n variant,\n organizationId,\n datesToUse,\n 1 // quantity\n )\n }\n } catch (error) {\n console.error('Error adding to cart:', error)\n }\n}\n</script>\n\n<template>\n <div>\n <h3 class=\"mn-b-small\">Frequently Bought Together</h3>\n <div class=\"recommended-products cols-4 rows-auto-1fr mobile:cols-2 gap-thin\">\n \n <CardProduct \n v-for=\"(product, index) in products\" \n :key=\"product?._id || index\"\n :product=\"product\"\n class=\"h-100 bg-light\"\n @click=\"handleProductClick(product)\"\n :showAddToCart=\"false\"\n >\n <Checkbox\n v-model:radio=\"selectedProducts\"\n :value=\"product._id\"\n mode=\"checkbox\"\n :validation=\"!product.variants || product.variants.length === 0\"\n class=\"pos-r-small pos-t-small pos-absolute\"\n @click.stop\n />\n </CardProduct>\n\n <div class=\"flex-center flex flex-column pd-small radius-small br-1px br-light\">\n <div class=\"mn-b-thin i-extra pd-small bg-light radius-extra\">\n <IconProducts class=\"i-big\"/>\n </div>\n <p class=\"mn-b-small\">Total price:</p>\n <p class=\"mn-b-medium h3 fw-medium\">${{ totalPrice }}</p>\n <Button \n :disabled=\"selectedProducts.length < 1\"\n class=\"bg-main gap-micro\"\n :showSuccess=\"false\"\n :showLoader=\"false\"\n :submit=\"canAddToCart ? addSelectedToCart : undefined\"\n >\n <IconShopcartAdd class=\"i-medium\"/>\n <span>Add to Cart</span>\n </Button>\n </div>\n </div>\n </div>\n</template>"],"names":["shopcart.state","shopcart.actions"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAeA,UAAM,SAAS,UAAS;AACxB,UAAM,EAAE,MAAK,IAAK,mBAAkB;AAGpC,UAAM,QAAQ;AASd,UAAM,mBAAmB,IAAI,MAAM,SAAS,OAAO,OAAK,EAAE,UAAU,SAAS,CAAC,EAAE,IAAI,OAAK,EAAE,GAAG,CAAC;AAGzE,QAAI,IAAI;AAG9B,UAAM,aAAa,SAAS,MAAM;AAChC,aAAO,MAAM,SACV,OAAO,OAAK,iBAAiB,MAAM,SAAS,EAAE,GAAG,CAAC,EAClD,OAAO,CAAC,KAAK,MAAM;AAClB,cAAM,QAAQ,EAAE,WAAW,CAAC,GAAG,SAAS;AACxC,eAAO,MAAM;AAAA,MACf,GAAG,CAAC,EACH,QAAQ,CAAC;AAAA,IACd,CAAC;AAGD,UAAM,eAAe,SAAS,MAAM;AAClC,YAAM,WAAW,MAAM,SAAS,OAAO,OAAK,iBAAiB,MAAM,SAAS,EAAE,GAAG,CAAC;AAClF,aAAO,SAAS,SAAS,KAAK,SAAS,KAAK,OAAK,EAAE,UAAU,SAAS,CAAC;AAAA,IACzE,CAAC;AAED,UAAM,qBAAqB,CAAC,YAAY;AACtC,UAAI,SAAS,OAAO,SAAS,OAAO,QAAQ;AAC1C,eAAO,KAAK,kBAAkB,QAAQ,MAAM,MAAM,aAAa,QAAQ,GAAG,EAAE;AAAA,MAC9E;AAAA,IACF;AAGA,UAAM,oBAAoB,YAAY;AACpC,YAAM,WAAW,MAAM,SAAS,OAAO,OAAK,iBAAiB,MAAM,SAAS,EAAE,GAAG,CAAC;AAElF,UAAI,SAAS,WAAW,EAAG;AAE3B,UAAI;AAEF,cAAM,eAAe,SAAS,CAAC;AAC/B,cAAM,iBAAiB,aAAa,OAAO,QAAQ,OAAO,aAAa,OAAO;AAG9E,YAAIA,MAAe,gBAAgBA,MAAe,iBAAiB,gBAAgB;AAEjF,gBAAM,SAAS,MAAM,MAAM,OAAO;AAAA,YAChC,OAAO;AAAA,YACP,SAAS;AAAA,YACT,SAAS;AAAA,cACP,EAAE,OAAO,UAAU,OAAO,MAAK;AAAA,cAC/B,EAAE,OAAO,WAAW,OAAO,KAAI;AAAA,YACzC;AAAA,UACA,CAAO;AAED,cAAI,CAAC,OAAQ;AAEbA,gBAAe,YAAY,CAAA;AAAA,QAC7B;AAEAA,cAAe,eAAe;AAG9B,cAAM,eAAe,SAAS,OAAO,OAAK,EAAE,YAAY,MAAM;AAC9D,YAAI,cAAc;AAGlB,YAAI,aAAa,SAAS,GAAG;AAC3B,gBAAM,mBAAmB,aAAa,CAAC;AACvC,gBAAM,eAAe,iBAAiB,WAAW,CAAC;AAElD,cAAI,cAAc;AAChB,0BAAc,MAAM,MAAM;AAAA,cACxB,iBAAiB;AAAA,cACjB,aAAa;AAAA,cACb;AAAA,cACA,aAAa,SAAS,iBAAiB;AAAA,YACjD;AAEQ,gBAAI,CAAC,YAAa;AAAA,UACpB;AAAA,QACF;AAGA,mBAAW,WAAW,UAAU;AAE9B,cAAI,CAAC,QAAQ,YAAY,QAAQ,SAAS,WAAW,EAAG;AAGxD,gBAAM,UAAU,QAAQ,SAAS,CAAC;AAGlC,gBAAM,aAAa,QAAQ,YAAY,SAAS,cAAc;AAE9D,gBAAMC,QAAiB;AAAA,YACrB;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA;AAAA,UACR;AAAA,QACI;AAAA,MACF,SAAS,OAAO;AACd,gBAAQ,MAAM,yBAAyB,KAAK;AAAA,MAC9C;AAAA,IACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,5 +1,5 @@
1
1
  import { computed, ref, createElementBlock, openBlock, createElementVNode, createBlock, createCommentVNode, createVNode, unref, toDisplayString, Transition, withCtx, Fragment, renderList, createTextVNode } from "vue";
2
- import _sfc_main$4 from "../../../../components/Button/Button.vue.js";
2
+ import _sfc_main$4 from "../../../../components/Button/Button.vue2.js";
3
3
  import _sfc_main$3 from "../../../../components/Tab/Tab.vue2.js";
4
4
  import _sfc_main$1 from "../../../icons/navigation/IconEdit.vue.js";
5
5
  import PlaceholderImage from "../../../icons/placeholders/PlaceholderImage.vue.js";
@@ -10,7 +10,7 @@ import _sfc_main$2 from "../elements/Price.vue.js";
10
10
  import { useRoute, useRouter } from "vue-router";
11
11
  import { useI18n } from "vue-i18n";
12
12
  import { state, actions } from "../../../orders/store/shopcart.js";
13
- const _hoisted_1 = { class: "cols-2-1_2 pd-small w-100 gap-thin" };
13
+ const _hoisted_1 = { class: "cols-[1fr_2fr] mobile:cols-1 pd-small w-100 gap-thin" };
14
14
  const _hoisted_2 = { class: "pd-small bg-light radius-medium flex-nowrap flex-column flex pos-relative" };
15
15
  const _hoisted_3 = { class: "w-100 bg-light radius-semi o-hidden" };
16
16
  const _hoisted_4 = ["src"];
@@ -31,21 +31,21 @@ const _hoisted_10 = {
31
31
  };
32
32
  const _hoisted_11 = {
33
33
  key: 1,
34
- class: "cols-2 w-100 bg-light radius-medium pd-medium gap-small"
34
+ class: "cols-2 mobile:cols-1 w-100 bg-light radius-medium pd-medium gap-small"
35
35
  };
36
36
  const _hoisted_12 = { class: "w-100 pd-small radius-small bg-white product-attributes" };
37
- const _hoisted_13 = { class: "t-demi" };
37
+ const _hoisted_13 = { class: "fw-demi" };
38
38
  const _hoisted_14 = {
39
39
  key: 2,
40
- class: "mn-t-small max-w-33rem mobile-w-100 t-white gap-small cols-2"
40
+ class: "mn-t-small max-w-33rem mobile-w-100 t-white gap-small cols-2 mobile:cols-1"
41
41
  };
42
42
  const _hoisted_15 = {
43
43
  key: 3,
44
- class: "mn-t-small max-w-33rem mobile-w-100 t-white gap-small cols-2"
44
+ class: "mn-t-small max-w-33rem mobile-w-100 t-white gap-small cols-2 mobile:cols-1"
45
45
  };
46
46
  const _hoisted_16 = {
47
47
  key: 1,
48
- class: "flex-center flex uppercase radius-medium t-black w-max pd-small t-medium bg-grey h-3r w-100 mn-r-smallbutton"
48
+ class: "flex-center flex uppercase radius-medium t-black w-max pd-small fw-medium bg-grey h-3r w-100 mn-r-smallbutton"
49
49
  };
50
50
  const _sfc_main = {
51
51
  __name: "SectionProduct",
@@ -1 +1 @@
1
- {"version":3,"file":"SectionProduct.vue.js","sources":["../../../../../../../src/modules/products/components/sections/SectionProduct.vue"],"sourcesContent":["<template>\n\t<div class=\"cols-2-1_2 pd-small w-100 gap-thin\">\n\t\t\n\t\t<div class=\"pd-small bg-light radius-medium flex-nowrap flex-column flex pos-relative\">\n\t\t\t<div class=\"w-100 bg-light radius-semi o-hidden\">\n\t\t\t\t<!-- PRODUCT IMAGE -->\n\t\t\t\t<Image360\n\t\t\t\t\tv-if=\"product && product.image3d\"\n\t\t\t\t\tclass=\"h-100 w-100\"\n\t\t\t\t\t:imagePath=\"`/assets/images/products/${product.image3d}`\"\n\t\t\t\t\t:imageCount=\"36\"\n\t\t\t\t/>\n\n\t\t\t\t<img loading=\"lazy\" \n\t\t\t\t\tv-if=\"images[0] && !product.image3d\"\n\t\t\t\t\tclass=\"h-max bg-light w-100\"\n\t\t\t\t\tstyle=\"object-fit: contain;\"\n\t\t\t\t\t:src=\"(FILE_SERVER_URL || '') + images[0]\"\n\t\t\t\t/>\n\n\t\t\t\t<PlaceholderImage\n\t\t\t\t\tv-if=\"!images[0] && !product.image3d\"\n\t\t\t\t\tclass=\"h-max-20r h-100 w-100\"\n\t\t\t\t\tstyle=\"object-fit: cover;\"\n\t\t\t\t/>\n\n\t\t\t</div>\n\n\t\t\t<ProductImages\n\t\t\t\tv-if=\"images.length > 1\"\n\t\t\t\t:images=\"images\"\n\t\t\t\tclass=\"mn-t-thin\"\n\t\t\t/>\n\t\t</div>\n\n\t\t<div class=\"radius-medium pos-relative w-100 h-100 flex-column flex-justify flex col\">\n\n\t\t\t<IconEdit\n\t\t\t\tv-if=\"accesses && hasAccess(route.params._id, 'products', 'edit', accesses)\"\n\t\t\t\t@click=\"$router.push(editPath)\"\n\t\t\t\tclass=\"pos-absolute pos-t-regular pos-r-regular i-medium t-transp\"\n\t\t\t/>\n\n\t\t\t<!-- Name -->\n\t\t\t<h1 class=\"w-100 h1-product mn-b-small\">{{ product.name }}</h1>\n\t\t\t<!-- Price -->\n\t\t\t<Price v-if=\"product.listing !== 'rent'\" :product=\"product\" size=\"big\" class=\"mn-b-semi\" />\n\t\t\t<!-- Variants -->\n\t\t\t<!-- <div v-if=\"product.variants.length > 0\" class=\"flex-nojustify flex\">\n\t\t\t\t<SelectElement v-if=\"sizes2.length > 0\" :elements=\"sizes2\" :selected=\"product.selectedSize\" class=\"mn-r-medium\" />\n\t\t\t</div> -->\n\t\t\t<!-- Description -->\n\n\t\t\t<Tab \n\t\t\t\tv-model:selected=\"tabProduct\"\n\t\t\t\t:tabs=\"[\n\t\t\t\t\t{name: 'Description', value: 'description'},\n\t\t\t\t\t{name: 'Specifications', value: 'specifications'}\n\t\t\t\t]\"\n\t\t\t\tclassTab=\"pd-small pd-r-medium pd-l-medium w-100 pd-small radius-small\"\n\t\t\t\tclass=\"bg-light mn-b-small\"\n\t\t\t/>\n\n\t\t\t<div class=\"h-min-5r pos-relative\">\n\t\t\t\t<transition name=\"slide-fade\">\n\n\t\t\t\t\t<div v-if=\"tabProduct === 'description'\" class=\"pd-medium radius-medium bg-light \">\n\t\t\t\t\t\t<p v-if=\"product.description && !product.translations < 1\" class=\"w-100 t-transp\">\n\t\t\t\t\t\t\t{{ product.description }}\n\t\t\t\t\t\t</p>\n\n\t\t\t\t\t\t<p v-if=\"product.translations && product.translations.length > 1\" class=\"w-100 t-transp\">\n\t\t\t\t\t\t\t{{ t('description') }}\n\t\t\t\t\t\t</p>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<div \n\t\t\t\t\t\tv-else\n\t\t\t\t\t\tclass=\"cols-2 w-100 bg-light radius-medium pd-medium gap-small\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<div \n\t\t\t\t\t\t\tv-if=\"product.attributes.length > 0\" \n\t\t\t\t\t\t\tv-for=\"attributes in product.attributes\" \n\t\t\t\t\t\t\tclass=\"w-100 pd-small radius-small bg-white product-attributes\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<p class=\"t-demi\">{{ attributes.name }}</p>\n\t\t\t\t\t\t\t<p>{{ attributes.value }}</p>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</transition>\n\t\t\t</div>\n\n\t\t\t<div v-if=\"product.listing === 'rent'\" class=\"mn-t-small max-w-33rem mobile-w-100 t-white gap-small cols-2\">\n\t\t\t\t<Button\n\t\t\t\t\t:submit=\"() => { addToCart(product) } \" \n\t\t\t\t\t:text=\"{\n\t\t\t\t\t\tsuccess: ' ✔ Added',\n\t\t\t\t\t\terror: 'error'\n\t\t\t\t\t}\"\n\t\t\t\t\tclass=\"h-3r w-100 mn-r-small bg-main button\"\n\t\t\t\t> \n\t\t\t\t\t{{ t('addtoorder') }}\n\t\t\t\t</Button>\n\t\t\t</div>\n\n\t\t\t<!-- Actions -->\n\t\t\t<div v-else class=\"mn-t-small max-w-33rem mobile-w-100 t-white gap-small cols-2\">\n\t\t\t\t<Button\n\t\t\t\t\tv-if=\"product.quantity > 0\"\n\t\t\t\t\t:submit=\"a => addToCart(product)\" \n\t\t\t\t\t:disabled=\"validateToCard(product)\" \n\t\t\t\t\t:text=\"{\n\t\t\t\t\t\tsuccess: ' ✔ Added',\n\t\t\t\t\t\terror: 'error'\n\t\t\t\t\t}\"\n\t\t\t\t\tclass=\"h-3r w-100 mn-r-small bg-main button\"\n\t\t\t\t> \n\t\t\t\t\t\t{{ t('addtoorder') }}\n\t\t\t\t</Button>\n\t\t\t\t<div v-else class=\"flex-center flex uppercase radius-medium t-black w-max pd-small t-medium bg-grey h-3r w-100 mn-r-smallbutton\">\n\t\t\t\t\tOut of Stock\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</template>\n\n<script setup>\nimport Button from '@martyrs/src/components/Button/Button.vue'\nimport Tab from '@martyrs/src/components/Tab/Tab.vue'\nimport IconEdit from '@martyrs/src/modules/icons/navigation/IconEdit.vue'\nimport PlaceholderImage from '@martyrs/src/modules/icons/placeholders/PlaceholderImage.vue'\n\nimport Image360 \tfrom '@martyrs/src/modules/products/components/elements/Image360.vue'\nimport ProductImages from \"@martyrs/src/modules/products/components/blocks/ProductImages.vue\";\n\nimport THC from '@martyrs/src/modules/products/components/elements/THC.vue'\nimport Price from '@martyrs/src/modules/products/components/elements/Price.vue'\n// import SelectElement \tfrom '@/components/elements/SelectElement.vue'\n\nimport { computed, ref } from 'vue'\n\n\timport { useRoute,useRouter } from 'vue-router'\nimport { useI18n } from 'vue-i18n'\n\nimport * as shopcart from '@martyrs/src/modules/orders/store/shopcart.js';\n\n// Props\nconst props = defineProps({\n product: {\n type: Object,\n required: true\n },\n user: {\n type: String,\n },\n accesses: {\n type: Object,\n\t default: null\n }\n})\n\n\n\n\tconst route = useRoute()\n\tconst router = useRouter()\n\n// Computed properties\nconst images = computed(() => {\n return props.product.images\n})\n\nconst editPath = computed(() => {\n\tif (route.meta.context === 'backoffice') {\n\t\treturn `/backoffice/products/${props.product._id}/edit`\n\t}\n\tif (route.meta.context === 'organization') {\n\t\treturn `/organizations/${props.product.owner.target}/products/${props.product._id}/edit`\n\t}\n\treturn `/products/${props.product._id}/edit`\n})\n\nconst tabProduct = ref('description')\n\nconst text = {\n\tmessages: {\n\t en: {\n\t \tairecommend: 'AI Recommends You',\n\t \tdescription: '',\n\t \taddtoorder: 'Add to order',\n\t fastorder: 'Fast Order'\n\t },\n\t ru: {\n\t \tairecommend: 'AI Рекомендует вам',\n\t \tdescription: '',\n\t \taddtoorder: 'Добавить в корзину',\n\t fastorder: 'Быстрый заказ'\n\t }\n\t}\n}\n\nconst { t } = useI18n(text)\n\n// Methods\nfunction validateToCard(product) {\n if (product.quantity > 0) {\n return false\n }\n return true\n}\nasync function addToCart(product) {\n\tconsole.log(product)\n try {\n if (shopcart.state.organization !== product.owner.target) {\n shopcart.state.organization = product.owner.target\n shopcart.state.positions = []\n }\n await shopcart.actions.addProductToCart(product, product.owner.target)\n return true // Make sure we return something\n } catch (error) {\n console.error('Ошибка при добавлении товара в корзину:', error)\n throw error\n }\n}\n</script>\n"],"names":["shopcart.state","shopcart.actions"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoJA,UAAM,QAAQ;AAgBb,UAAM,QAAQ,SAAQ;AACP,cAAS;AAGzB,UAAM,SAAS,SAAS,MAAM;AAC5B,aAAO,MAAM,QAAQ;AAAA,IACvB,CAAC;AAED,UAAM,WAAW,SAAS,MAAM;AAC/B,UAAI,MAAM,KAAK,YAAY,cAAc;AACxC,eAAO,wBAAwB,MAAM,QAAQ,GAAG;AAAA,MACjD;AACA,UAAI,MAAM,KAAK,YAAY,gBAAgB;AAC1C,eAAO,kBAAkB,MAAM,QAAQ,MAAM,MAAM,aAAa,MAAM,QAAQ,GAAG;AAAA,MAClF;AACA,aAAO,aAAa,MAAM,QAAQ,GAAG;AAAA,IACtC,CAAC;AAED,UAAM,aAAa,IAAI,aAAa;AAEpC,UAAM,OAAO;AAAA,MACZ,UAAU;AAAA,QACR,IAAI;AAAA,UACH,aAAa;AAAA,UACb,aAAa;AAAA,UACb,YAAY;AAAA,UACX,WAAW;AAAA,QAChB;AAAA,QACG,IAAI;AAAA,UACH,aAAa;AAAA,UACb,aAAa;AAAA,UACb,YAAY;AAAA,UACX,WAAW;AAAA,QAChB;AAAA,MACA;AAAA,IACA;AAEA,UAAM,EAAE,EAAC,IAAK,QAAQ,IAAI;AAG1B,aAAS,eAAe,SAAS;AAC/B,UAAI,QAAQ,WAAW,GAAG;AACxB,eAAO;AAAA,MACT;AACA,aAAO;AAAA,IACT;AACA,mBAAe,UAAU,SAAS;AACjC,cAAQ,IAAI,OAAO;AAChB,UAAI;AACA,YAAIA,MAAe,iBAAiB,QAAQ,MAAM,QAAQ;AACtDA,gBAAe,eAAe,QAAQ,MAAM;AAC5CA,gBAAe,YAAY,CAAA;AAAA,QAC/B;AACA,cAAMC,QAAiB,iBAAiB,SAAS,QAAQ,MAAM,MAAM;AACrE,eAAO;AAAA,MACX,SAAS,OAAO;AACZ,gBAAQ,MAAM,2CAA2C,KAAK;AAC9D,cAAM;AAAA,MACV;AAAA,IACJ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"SectionProduct.vue.js","sources":["../../../../../../../src/modules/products/components/sections/SectionProduct.vue"],"sourcesContent":["<template>\n\t<div class=\"cols-[1fr_2fr] mobile:cols-1 pd-small w-100 gap-thin\">\n\t\t\n\t\t<div class=\"pd-small bg-light radius-medium flex-nowrap flex-column flex pos-relative\">\n\t\t\t<div class=\"w-100 bg-light radius-semi o-hidden\">\n\t\t\t\t<!-- PRODUCT IMAGE -->\n\t\t\t\t<Image360\n\t\t\t\t\tv-if=\"product && product.image3d\"\n\t\t\t\t\tclass=\"h-100 w-100\"\n\t\t\t\t\t:imagePath=\"`/assets/images/products/${product.image3d}`\"\n\t\t\t\t\t:imageCount=\"36\"\n\t\t\t\t/>\n\n\t\t\t\t<img loading=\"lazy\" \n\t\t\t\t\tv-if=\"images[0] && !product.image3d\"\n\t\t\t\t\tclass=\"h-max bg-light w-100\"\n\t\t\t\t\tstyle=\"object-fit: contain;\"\n\t\t\t\t\t:src=\"(FILE_SERVER_URL || '') + images[0]\"\n\t\t\t\t/>\n\n\t\t\t\t<PlaceholderImage\n\t\t\t\t\tv-if=\"!images[0] && !product.image3d\"\n\t\t\t\t\tclass=\"h-max-20r h-100 w-100\"\n\t\t\t\t\tstyle=\"object-fit: cover;\"\n\t\t\t\t/>\n\n\t\t\t</div>\n\n\t\t\t<ProductImages\n\t\t\t\tv-if=\"images.length > 1\"\n\t\t\t\t:images=\"images\"\n\t\t\t\tclass=\"mn-t-thin\"\n\t\t\t/>\n\t\t</div>\n\n\t\t<div class=\"radius-medium pos-relative w-100 h-100 flex-column flex-justify flex col\">\n\n\t\t\t<IconEdit\n\t\t\t\tv-if=\"accesses && hasAccess(route.params._id, 'products', 'edit', accesses)\"\n\t\t\t\t@click=\"$router.push(editPath)\"\n\t\t\t\tclass=\"pos-absolute pos-t-regular pos-r-regular i-medium t-transp\"\n\t\t\t/>\n\n\t\t\t<!-- Name -->\n\t\t\t<h1 class=\"w-100 h1-product mn-b-small\">{{ product.name }}</h1>\n\t\t\t<!-- Price -->\n\t\t\t<Price v-if=\"product.listing !== 'rent'\" :product=\"product\" size=\"big\" class=\"mn-b-semi\" />\n\t\t\t<!-- Variants -->\n\t\t\t<!-- <div v-if=\"product.variants.length > 0\" class=\"flex-justify-start flex\">\n\t\t\t\t<SelectElement v-if=\"sizes2.length > 0\" :elements=\"sizes2\" :selected=\"product.selectedSize\" class=\"mn-r-medium\" />\n\t\t\t</div> -->\n\t\t\t<!-- Description -->\n\n\t\t\t<Tab \n\t\t\t\tv-model:selected=\"tabProduct\"\n\t\t\t\t:tabs=\"[\n\t\t\t\t\t{name: 'Description', value: 'description'},\n\t\t\t\t\t{name: 'Specifications', value: 'specifications'}\n\t\t\t\t]\"\n\t\t\t\tclassTab=\"pd-small pd-r-medium pd-l-medium w-100 pd-small radius-small\"\n\t\t\t\tclass=\"bg-light mn-b-small\"\n\t\t\t/>\n\n\t\t\t<div class=\"h-min-5r pos-relative\">\n\t\t\t\t<transition name=\"slide-fade\">\n\n\t\t\t\t\t<div v-if=\"tabProduct === 'description'\" class=\"pd-medium radius-medium bg-light \">\n\t\t\t\t\t\t<p v-if=\"product.description && !product.translations < 1\" class=\"w-100 t-transp\">\n\t\t\t\t\t\t\t{{ product.description }}\n\t\t\t\t\t\t</p>\n\n\t\t\t\t\t\t<p v-if=\"product.translations && product.translations.length > 1\" class=\"w-100 t-transp\">\n\t\t\t\t\t\t\t{{ t('description') }}\n\t\t\t\t\t\t</p>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<div \n\t\t\t\t\t\tv-else\n\t\t\t\t\t\tclass=\"cols-2 mobile:cols-1 w-100 bg-light radius-medium pd-medium gap-small\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<div \n\t\t\t\t\t\t\tv-if=\"product.attributes.length > 0\" \n\t\t\t\t\t\t\tv-for=\"attributes in product.attributes\" \n\t\t\t\t\t\t\tclass=\"w-100 pd-small radius-small bg-white product-attributes\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<p class=\"fw-demi\">{{ attributes.name }}</p>\n\t\t\t\t\t\t\t<p>{{ attributes.value }}</p>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</transition>\n\t\t\t</div>\n\n\t\t\t<div v-if=\"product.listing === 'rent'\" class=\"mn-t-small max-w-33rem mobile-w-100 t-white gap-small cols-2 mobile:cols-1\">\n\t\t\t\t<Button\n\t\t\t\t\t:submit=\"() => { addToCart(product) } \" \n\t\t\t\t\t:text=\"{\n\t\t\t\t\t\tsuccess: ' ✔ Added',\n\t\t\t\t\t\terror: 'error'\n\t\t\t\t\t}\"\n\t\t\t\t\tclass=\"h-3r w-100 mn-r-small bg-main button\"\n\t\t\t\t> \n\t\t\t\t\t{{ t('addtoorder') }}\n\t\t\t\t</Button>\n\t\t\t</div>\n\n\t\t\t<!-- Actions -->\n\t\t\t<div v-else class=\"mn-t-small max-w-33rem mobile-w-100 t-white gap-small cols-2 mobile:cols-1\">\n\t\t\t\t<Button\n\t\t\t\t\tv-if=\"product.quantity > 0\"\n\t\t\t\t\t:submit=\"a => addToCart(product)\" \n\t\t\t\t\t:disabled=\"validateToCard(product)\" \n\t\t\t\t\t:text=\"{\n\t\t\t\t\t\tsuccess: ' ✔ Added',\n\t\t\t\t\t\terror: 'error'\n\t\t\t\t\t}\"\n\t\t\t\t\tclass=\"h-3r w-100 mn-r-small bg-main button\"\n\t\t\t\t> \n\t\t\t\t\t\t{{ t('addtoorder') }}\n\t\t\t\t</Button>\n\t\t\t\t<div v-else class=\"flex-center flex uppercase radius-medium t-black w-max pd-small fw-medium bg-grey h-3r w-100 mn-r-smallbutton\">\n\t\t\t\t\tOut of Stock\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</template>\n\n<script setup>\nimport Button from '@martyrs/src/components/Button/Button.vue'\nimport Tab from '@martyrs/src/components/Tab/Tab.vue'\nimport IconEdit from '@martyrs/src/modules/icons/navigation/IconEdit.vue'\nimport PlaceholderImage from '@martyrs/src/modules/icons/placeholders/PlaceholderImage.vue'\n\nimport Image360 \tfrom '@martyrs/src/modules/products/components/elements/Image360.vue'\nimport ProductImages from \"@martyrs/src/modules/products/components/blocks/ProductImages.vue\";\n\nimport THC from '@martyrs/src/modules/products/components/elements/THC.vue'\nimport Price from '@martyrs/src/modules/products/components/elements/Price.vue'\n// import SelectElement \tfrom '@/components/elements/SelectElement.vue'\n\nimport { computed, ref } from 'vue'\n\n\timport { useRoute,useRouter } from 'vue-router'\nimport { useI18n } from 'vue-i18n'\n\nimport * as shopcart from '@martyrs/src/modules/orders/store/shopcart.js';\n\n// Props\nconst props = defineProps({\n product: {\n type: Object,\n required: true\n },\n user: {\n type: String,\n },\n accesses: {\n type: Object,\n\t default: null\n }\n})\n\n\n\n\tconst route = useRoute()\n\tconst router = useRouter()\n\n// Computed properties\nconst images = computed(() => {\n return props.product.images\n})\n\nconst editPath = computed(() => {\n\tif (route.meta.context === 'backoffice') {\n\t\treturn `/backoffice/products/${props.product._id}/edit`\n\t}\n\tif (route.meta.context === 'organization') {\n\t\treturn `/organizations/${props.product.owner.target}/products/${props.product._id}/edit`\n\t}\n\treturn `/products/${props.product._id}/edit`\n})\n\nconst tabProduct = ref('description')\n\nconst text = {\n\tmessages: {\n\t en: {\n\t \tairecommend: 'AI Recommends You',\n\t \tdescription: '',\n\t \taddtoorder: 'Add to order',\n\t fastorder: 'Fast Order'\n\t },\n\t ru: {\n\t \tairecommend: 'AI Рекомендует вам',\n\t \tdescription: '',\n\t \taddtoorder: 'Добавить в корзину',\n\t fastorder: 'Быстрый заказ'\n\t }\n\t}\n}\n\nconst { t } = useI18n(text)\n\n// Methods\nfunction validateToCard(product) {\n if (product.quantity > 0) {\n return false\n }\n return true\n}\nasync function addToCart(product) {\n\tconsole.log(product)\n try {\n if (shopcart.state.organization !== product.owner.target) {\n shopcart.state.organization = product.owner.target\n shopcart.state.positions = []\n }\n await shopcart.actions.addProductToCart(product, product.owner.target)\n return true // Make sure we return something\n } catch (error) {\n console.error('Ошибка при добавлении товара в корзину:', error)\n throw error\n }\n}\n</script>\n"],"names":["shopcart.state","shopcart.actions"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoJA,UAAM,QAAQ;AAgBb,UAAM,QAAQ,SAAQ;AACP,cAAS;AAGzB,UAAM,SAAS,SAAS,MAAM;AAC5B,aAAO,MAAM,QAAQ;AAAA,IACvB,CAAC;AAED,UAAM,WAAW,SAAS,MAAM;AAC/B,UAAI,MAAM,KAAK,YAAY,cAAc;AACxC,eAAO,wBAAwB,MAAM,QAAQ,GAAG;AAAA,MACjD;AACA,UAAI,MAAM,KAAK,YAAY,gBAAgB;AAC1C,eAAO,kBAAkB,MAAM,QAAQ,MAAM,MAAM,aAAa,MAAM,QAAQ,GAAG;AAAA,MAClF;AACA,aAAO,aAAa,MAAM,QAAQ,GAAG;AAAA,IACtC,CAAC;AAED,UAAM,aAAa,IAAI,aAAa;AAEpC,UAAM,OAAO;AAAA,MACZ,UAAU;AAAA,QACR,IAAI;AAAA,UACH,aAAa;AAAA,UACb,aAAa;AAAA,UACb,YAAY;AAAA,UACX,WAAW;AAAA,QAChB;AAAA,QACG,IAAI;AAAA,UACH,aAAa;AAAA,UACb,aAAa;AAAA,UACb,YAAY;AAAA,UACX,WAAW;AAAA,QAChB;AAAA,MACA;AAAA,IACA;AAEA,UAAM,EAAE,EAAC,IAAK,QAAQ,IAAI;AAG1B,aAAS,eAAe,SAAS;AAC/B,UAAI,QAAQ,WAAW,GAAG;AACxB,eAAO;AAAA,MACT;AACA,aAAO;AAAA,IACT;AACA,mBAAe,UAAU,SAAS;AACjC,cAAQ,IAAI,OAAO;AAChB,UAAI;AACA,YAAIA,MAAe,iBAAiB,QAAQ,MAAM,QAAQ;AACtDA,gBAAe,eAAe,QAAQ,MAAM;AAC5CA,gBAAe,YAAY,CAAA;AAAA,QAC/B;AACA,cAAMC,QAAiB,iBAAiB,SAAS,QAAQ,MAAM,MAAM;AACrE,eAAO;AAAA,MACX,SAAS,OAAO;AACZ,gBAAQ,MAAM,2CAA2C,KAAK;AAC9D,cAAM;AAAA,MACV;AAAA,IACJ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,7 +1,7 @@
1
1
  import { computed, createElementBlock, openBlock, createElementVNode, toDisplayString, createCommentVNode, createTextVNode } from "vue";
2
2
  /* empty css */
3
3
  const _hoisted_1 = { class: "order-card" };
4
- const _hoisted_2 = { class: "order-status flex-v-center flex-nojustify flex" };
4
+ const _hoisted_2 = { class: "order-status flex-v-center flex-justify-start flex" };
5
5
  const _hoisted_3 = { class: "mn-l-auto" };
6
6
  const _hoisted_4 = { class: "pd-small" };
7
7
  const _hoisted_5 = { key: 0 };
@@ -1 +1 @@
1
- {"version":3,"file":"CardRent.vue.js","sources":["../../../../../../../../src/modules/rents/views/components/blocks/CardRent.vue"],"sourcesContent":["<template>\n <div class=\"order-card\">\n <div class=\"order-status flex-v-center flex-nojustify flex\">\n <span>{{ rent.status }}</span>\n <span class=\"mn-l-auto\">{{ totalDays }} days</span>\n </div>\n <div class=\"pd-small\">\n <p><strong>Start:</strong> {{ formatDate(rent.startDate) }}</p>\n <p><strong>End:</strong> {{ formatDate(rent.endDate) }}</p>\n <p v-if=\"rent.comment\"><strong>Comment:</strong> {{ rent.comment }}</p>\n <button \n @click=\"$router.push({ name: 'Edit Rent', params: { _id: rent._id } })\"\n class=\"bg-main t-white button mn-t-small\"\n >\n Edit\n </button>\n </div>\n </div>\n</template>\n\n<script setup>\nimport { computed } from 'vue';\n\nconst props = defineProps({\n rent: { type: Object, required: true },\n});\n\nconst totalDays = computed(() => {\n const start = new Date(props.rent.startDate);\n const end = new Date(props.rent.endDate);\n const diffTime = Math.abs(end - start);\n return Math.ceil(diffTime / (1000 * 60 * 60 * 24));\n});\n\n\n\nfunction formatDate(date) {\n return new Date(date).toLocaleDateString();\n}\n</script>\n\n<style lang=\"scss\">\n.order-card {\n border-radius: 0.25rem;\n overflow: hidden;\n box-shadow: 0 8px 8px -8px rgb(36 36 36 / 10%);\n .order-status {\n color: black;\n background: #EEF2F6;\n width: 100%;\n padding: 0.75rem 1.5rem;\n margin: 0;\n }\n}\n</style>"],"names":[],"mappings":";;;;;;;;;;;;;AAuBA,UAAM,QAAQ;AAId,UAAM,YAAY,SAAS,MAAM;AAC/B,YAAM,QAAQ,IAAI,KAAK,MAAM,KAAK,SAAS;AAC3C,YAAM,MAAM,IAAI,KAAK,MAAM,KAAK,OAAO;AACvC,YAAM,WAAW,KAAK,IAAI,MAAM,KAAK;AACrC,aAAO,KAAK,KAAK,YAAY,MAAO,KAAK,KAAK,GAAG;AAAA,IACnD,CAAC;AAID,aAAS,WAAW,MAAM;AACxB,aAAO,IAAI,KAAK,IAAI,EAAE,mBAAkB;AAAA,IAC1C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"CardRent.vue.js","sources":["../../../../../../../../src/modules/rents/views/components/blocks/CardRent.vue"],"sourcesContent":["<template>\n <div class=\"order-card\">\n <div class=\"order-status flex-v-center flex-justify-start flex\">\n <span>{{ rent.status }}</span>\n <span class=\"mn-l-auto\">{{ totalDays }} days</span>\n </div>\n <div class=\"pd-small\">\n <p><strong>Start:</strong> {{ formatDate(rent.startDate) }}</p>\n <p><strong>End:</strong> {{ formatDate(rent.endDate) }}</p>\n <p v-if=\"rent.comment\"><strong>Comment:</strong> {{ rent.comment }}</p>\n <button \n @click=\"$router.push({ name: 'Edit Rent', params: { _id: rent._id } })\"\n class=\"bg-main t-white button mn-t-small\"\n >\n Edit\n </button>\n </div>\n </div>\n</template>\n\n<script setup>\nimport { computed } from 'vue';\n\nconst props = defineProps({\n rent: { type: Object, required: true },\n});\n\nconst totalDays = computed(() => {\n const start = new Date(props.rent.startDate);\n const end = new Date(props.rent.endDate);\n const diffTime = Math.abs(end - start);\n return Math.ceil(diffTime / (1000 * 60 * 60 * 24));\n});\n\n\n\nfunction formatDate(date) {\n return new Date(date).toLocaleDateString();\n}\n</script>\n\n<style lang=\"scss\">\n.order-card {\n border-radius: 0.25rem;\n overflow: hidden;\n box-shadow: 0 8px 8px -8px rgb(36 36 36 / 10%);\n .order-status {\n color: black;\n background: #EEF2F6;\n width: 100%;\n padding: 0.75rem 1.5rem;\n margin: 0;\n }\n}\n</style>"],"names":[],"mappings":";;;;;;;;;;;;;AAuBA,UAAM,QAAQ;AAId,UAAM,YAAY,SAAS,MAAM;AAC/B,YAAM,QAAQ,IAAI,KAAK,MAAM,KAAK,SAAS;AAC3C,YAAM,MAAM,IAAI,KAAK,MAAM,KAAK,OAAO;AACvC,YAAM,WAAW,KAAK,IAAI,MAAM,KAAK;AACrC,aAAO,KAAK,KAAK,YAAY,MAAO,KAAK,KAAK,GAAG;AAAA,IACnD,CAAC;AAID,aAAS,WAAW,MAAM;AACxB,aAAO,IAAI,KAAK,IAAI,EAAE,mBAAkB;AAAA,IAC1C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,7 +1,7 @@
1
1
  import { createElementBlock, openBlock, createVNode, createElementVNode, toDisplayString } from "vue";
2
2
  import _sfc_main$1 from "../../../../../icons/entities/IconCalendar.vue.js";
3
3
  const _hoisted_1 = { class: "flex flex-v-center gap-thin" };
4
- const _hoisted_2 = { class: "t-medium" };
4
+ const _hoisted_2 = { class: "fw-medium" };
5
5
  const _sfc_main = {
6
6
  __name: "DateLabel",
7
7
  props: {
@@ -1,6 +1,6 @@
1
1
  import { computed, createElementBlock, openBlock, normalizeStyle, normalizeClass, createElementVNode, toDisplayString } from "vue";
2
2
  /* empty css */
3
- const _hoisted_1 = { class: "pd-micro t-micro t-white t-truncate" };
3
+ const _hoisted_1 = { class: "pd-micro t-micro t-white truncate" };
4
4
  const _sfc_main = {
5
5
  __name: "GanttBar",
6
6
  props: {
@@ -29,7 +29,7 @@ const _sfc_main = {
29
29
  }));
30
30
  return (_ctx, _cache) => {
31
31
  return openBlock(), createElementBlock("div", {
32
- class: normalizeClass(["gantt-bar pos-absolute radius-small cursor-pointer shadow-small transition-ease-out hover-scale-0", barClass.value]),
32
+ class: normalizeClass(["gantt-bar pos-absolute radius-small cursor-pointer shadow-small ease-out hover:scale-[1.015]", barClass.value]),
33
33
  style: normalizeStyle(barStyle.value),
34
34
  onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit("click"))
35
35
  }, [
@@ -1 +1 @@
1
- {"version":3,"file":"GanttBar.vue.js","sources":["../../../../../../../../../src/modules/rents/views/components/pages/Gant/GanttBar.vue"],"sourcesContent":["<template>\n <div \n class=\"gantt-bar pos-absolute radius-small cursor-pointer shadow-small transition-ease-out hover-scale-0\"\n :class=\"barClass\"\n :style=\"barStyle\"\n @click=\"$emit('click')\"\n >\n <div class=\"pd-micro t-micro t-white t-truncate\">\n {{ bar.item.productDetails.name || 'Task' }}\n </div>\n </div>\n</template>\n\n<script setup>\nimport { computed } from 'vue'\n\nconst props = defineProps({\n bar: { type: Object, required: true },\n view: { type: String, required: true }\n})\n\nconst emit = defineEmits(['click'])\n\n// Bar class based on status\nconst barClass = computed(() => {\n const statusMap = {\n active: 'bg-main',\n completed: 'bg-green',\n canceled: 'bg-red',\n pending : 'bg-grey',\n default: 'bg-second'\n }\n \n return statusMap[props.bar.status] || statusMap.default\n})\n\n// Bar style\nconst barStyle = computed(() => ({\n left: props.bar.left + 'px',\n width: props.bar.width + 'px',\n top: (10 + props.bar.row * 22) + 'px',\n height: '20px',\n zIndex: 10 - props.bar.row\n}))\n</script>\n\n<style>\n.gantt-bar {\n max-height: 20px;\n line-height: 20px;\n}\n</style>"],"names":[],"mappings":";;;;;;;;;;;AAgBA,UAAM,QAAQ;AAQd,UAAM,WAAW,SAAS,MAAM;AAC9B,YAAM,YAAY;AAAA,QAChB,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,UAAU;AAAA,QACV,SAAU;AAAA,QACV,SAAS;AAAA,MACb;AAEE,aAAO,UAAU,MAAM,IAAI,MAAM,KAAK,UAAU;AAAA,IAClD,CAAC;AAGD,UAAM,WAAW,SAAS,OAAO;AAAA,MAC/B,MAAM,MAAM,IAAI,OAAO;AAAA,MACvB,OAAO,MAAM,IAAI,QAAQ;AAAA,MACzB,KAAM,KAAK,MAAM,IAAI,MAAM,KAAM;AAAA,MACjC,QAAQ;AAAA,MACR,QAAQ,KAAK,MAAM,IAAI;AAAA,IACzB,EAAE;;;;;;;;;;;;"}
1
+ {"version":3,"file":"GanttBar.vue.js","sources":["../../../../../../../../../src/modules/rents/views/components/pages/Gant/GanttBar.vue"],"sourcesContent":["<template>\n <div \n class=\"gantt-bar pos-absolute radius-small cursor-pointer shadow-small ease-out hover:scale-[1.015]\"\n :class=\"barClass\"\n :style=\"barStyle\"\n @click=\"$emit('click')\"\n >\n <div class=\"pd-micro t-micro t-white truncate\">\n {{ bar.item.productDetails.name || 'Task' }}\n </div>\n </div>\n</template>\n\n<script setup>\nimport { computed } from 'vue'\n\nconst props = defineProps({\n bar: { type: Object, required: true },\n view: { type: String, required: true }\n})\n\nconst emit = defineEmits(['click'])\n\n// Bar class based on status\nconst barClass = computed(() => {\n const statusMap = {\n active: 'bg-main',\n completed: 'bg-green',\n canceled: 'bg-red',\n pending : 'bg-grey',\n default: 'bg-second'\n }\n \n return statusMap[props.bar.status] || statusMap.default\n})\n\n// Bar style\nconst barStyle = computed(() => ({\n left: props.bar.left + 'px',\n width: props.bar.width + 'px',\n top: (10 + props.bar.row * 22) + 'px',\n height: '20px',\n zIndex: 10 - props.bar.row\n}))\n</script>\n\n<style>\n.gantt-bar {\n max-height: 20px;\n line-height: 20px;\n}\n</style>"],"names":[],"mappings":";;;;;;;;;;;AAgBA,UAAM,QAAQ;AAQd,UAAM,WAAW,SAAS,MAAM;AAC9B,YAAM,YAAY;AAAA,QAChB,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,UAAU;AAAA,QACV,SAAU;AAAA,QACV,SAAS;AAAA,MACb;AAEE,aAAO,UAAU,MAAM,IAAI,MAAM,KAAK,UAAU;AAAA,IAClD,CAAC;AAGD,UAAM,WAAW,SAAS,OAAO;AAAA,MAC/B,MAAM,MAAM,IAAI,OAAO;AAAA,MACvB,OAAO,MAAM,IAAI,QAAQ;AAAA,MACzB,KAAM,KAAK,MAAM,IAAI,MAAM,KAAM;AAAA,MACjC,QAAQ;AAAA,MACR,QAAQ,KAAK,MAAM,IAAI;AAAA,IACzB,EAAE;;;;;;;;;;;;"}
@@ -5,12 +5,12 @@ import _sfc_main$2 from "./GanttHeaderCell.vue.js";
5
5
  import _sfc_main$3 from "./GanttBar.vue.js";
6
6
  /* empty css */
7
7
  const _hoisted_1 = { class: "gantt-content" };
8
- const _hoisted_2 = { class: "gantt-header pos-sticky top-0 z-index-2 bg-white br-b br-solid br-black-transp-10" };
8
+ const _hoisted_2 = { class: "gantt-header pos-sticky top-0 z-index-2 bg-white br-b-1px br-black-transp-10" };
9
9
  const _hoisted_3 = { class: "flex" };
10
10
  const _hoisted_4 = { class: "gantt-timeline flex" };
11
11
  const _hoisted_5 = { class: "gantt-body" };
12
- const _hoisted_6 = { class: "gantt-product-col pos-sticky left-0 z-index-1 bg-white pd-small br-r br-solid br-black-transp-10" };
13
- const _hoisted_7 = { class: "t-medium mn-b-micro" };
12
+ const _hoisted_6 = { class: "gantt-product-col pos-sticky left-0 z-index-1 bg-white pd-small br-r-1px br-black-transp-10" };
13
+ const _hoisted_7 = { class: "fw-medium mn-b-micro" };
14
14
  const _hoisted_8 = { class: "gantt-timeline pos-relative" };
15
15
  const _hoisted_9 = { class: "gantt-cells flex pos-absolute h-100" };
16
16
  const _hoisted_10 = { class: "gantt-bars pos-absolute h-100" };
@@ -328,7 +328,7 @@ const _sfc_main = {
328
328
  onLoadMore: _cache[3] || (_cache[3] = ($event) => _ctx.$emit("load-more", $event))
329
329
  }, null, 8, ["view", "views", "date"]),
330
330
  createElementVNode("div", {
331
- class: "gantt-container scroller o-scroll bg-white radius-small br-solid br-1px br-black-transp-10",
331
+ class: "gantt-container scroller o-scroll bg-white radius-small br-1px br-black-transp-10",
332
332
  ref_key: "container",
333
333
  ref: container,
334
334
  onScroll: handleScroll
@@ -336,12 +336,12 @@ const _sfc_main = {
336
336
  createElementVNode("div", _hoisted_1, [
337
337
  createElementVNode("div", _hoisted_2, [
338
338
  createElementVNode("div", _hoisted_3, [
339
- _cache[4] || (_cache[4] = createElementVNode("div", { class: "gantt-product-col pos-sticky left-0 z-index-3 bg-light pd-small br-r br-solid br-black-transp-10" }, " Product ", -1)),
339
+ _cache[4] || (_cache[4] = createElementVNode("div", { class: "gantt-product-col pos-sticky left-0 z-index-3 bg-light pd-small br-r-1px br-black-transp-10" }, " Product ", -1)),
340
340
  createElementVNode("div", _hoisted_4, [
341
341
  (openBlock(true), createElementBlock(Fragment, null, renderList(visibleCells.value, (cell, i) => {
342
342
  return openBlock(), createElementBlock("div", {
343
343
  key: cell.key,
344
- class: normalizeClass(["gantt-cell br-r br-solid br-black-transp-10 t-center pd-small", getCellClass(cell)]),
344
+ class: normalizeClass(["gantt-cell br-r-1px br-black-transp-10 t-center pd-small", getCellClass(cell)]),
345
345
  style: normalizeStyle({ width: cellWidth.value + "px" })
346
346
  }, [
347
347
  createVNode(_sfc_main$2, {
@@ -358,7 +358,7 @@ const _sfc_main = {
358
358
  (openBlock(true), createElementBlock(Fragment, null, renderList(groups.value, (group, i) => {
359
359
  return openBlock(), createElementBlock("div", {
360
360
  key: group.key,
361
- class: normalizeClass(["gantt-row flex br-b br-solid br-black-transp-10", i % 2 === 0 ? "bg-light-transp" : ""]),
361
+ class: normalizeClass(["gantt-row flex br-b-1px br-black-transp-10", i % 2 === 0 ? "bg-light-transp" : ""]),
362
362
  style: normalizeStyle({ height: __props.rowHeight + "px" })
363
363
  }, [
364
364
  createElementVNode("div", _hoisted_6, [
@@ -372,7 +372,7 @@ const _sfc_main = {
372
372
  (openBlock(true), createElementBlock(Fragment, null, renderList(visibleCells.value, (cell) => {
373
373
  return openBlock(), createElementBlock("div", {
374
374
  key: cell.key + "-bg",
375
- class: normalizeClass(["gantt-cell h-100 br-r br-solid br-black-transp-10", getCellClass(cell)]),
375
+ class: normalizeClass(["gantt-cell h-100 br-r-1px br-black-transp-10", getCellClass(cell)]),
376
376
  style: normalizeStyle({ width: cellWidth.value + "px" })
377
377
  }, null, 6);
378
378
  }), 128))