@ozdao/martyrs 0.2.547 → 0.2.548

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 (833) hide show
  1. package/dist/auth.server.cjs +9 -9
  2. package/dist/auth.server.js +9 -9
  3. package/dist/builder.cjs +12 -751
  4. package/dist/builder.js +21 -721
  5. package/dist/chats.server.cjs +61 -59
  6. package/dist/chats.server.js +61 -59
  7. package/dist/{common.schema-BzFEVNn3.cjs → common.schema-BtXLULba.cjs} +2 -2
  8. package/dist/{common.schema-Bw1O5_2Q.js → common.schema-GFSlNJo7.js} +2 -2
  9. package/dist/community.server.cjs +10 -10
  10. package/dist/community.server.js +10 -10
  11. package/dist/{credentials.schema-C9FB2EyY.js → credentials.schema--2vvcu8c.js} +2 -2
  12. package/dist/{credentials.schema-DwhGdrwC.cjs → credentials.schema-DVXaFnXl.cjs} +2 -2
  13. package/dist/{crud-Ed3dcRsC.js → crud-D_snnl2K.js} +78 -2
  14. package/dist/{crud-DGM6Xa1R.cjs → crud-pedHI2by.cjs} +78 -2
  15. package/dist/{engagement.schema-JADHu8pj.cjs → engagement.schema-DHw4iY_W.cjs} +2 -2
  16. package/dist/{engagement.schema-Dh1adRsn.js → engagement.schema-fh6W1fb_.js} +2 -2
  17. package/dist/events.server.cjs +452 -11
  18. package/dist/events.server.js +433 -9
  19. package/dist/files.server.cjs +2 -2
  20. package/dist/files.server.js +2 -2
  21. package/dist/gallery.server.cjs +5 -5
  22. package/dist/gallery.server.js +5 -5
  23. package/dist/globals.server.cjs +11 -373
  24. package/dist/globals.server.js +11 -356
  25. package/dist/globals.websocket-C2FxNmZ1.js +357 -0
  26. package/dist/globals.websocket-Cm72lPCs.cjs +374 -0
  27. package/dist/inventory.server.cjs +4 -5
  28. package/dist/inventory.server.js +2 -3
  29. package/dist/main-DvjCsGb1.cjs +11 -0
  30. package/dist/{main-d9n_ibdE.js → main-q-y0Lhcy.js} +28 -28
  31. package/dist/martyrs/node_modules/.pnpm/bignumber.js@9.2.1/node_modules/bignumber.js/bignumber.cjs +8 -8
  32. package/dist/martyrs/node_modules/.pnpm/bignumber.js@9.2.1/node_modules/bignumber.js/bignumber.cjs.map +1 -1
  33. package/dist/martyrs/node_modules/.pnpm/bignumber.js@9.2.1/node_modules/bignumber.js/bignumber.js +8 -8
  34. package/dist/martyrs/node_modules/.pnpm/bignumber.js@9.2.1/node_modules/bignumber.js/bignumber.js.map +1 -1
  35. package/dist/martyrs/node_modules/.pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js/es6/ParseError.cjs +2 -2
  36. package/dist/martyrs/node_modules/.pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js/es6/ParseError.cjs.map +1 -1
  37. package/dist/martyrs/node_modules/.pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js/es6/ParseError.js +2 -2
  38. package/dist/martyrs/node_modules/.pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js/es6/ParseError.js.map +1 -1
  39. package/dist/martyrs/node_modules/.pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js/es6/PhoneNumber.cjs +2 -2
  40. package/dist/martyrs/node_modules/.pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js/es6/PhoneNumber.cjs.map +1 -1
  41. package/dist/martyrs/node_modules/.pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js/es6/PhoneNumber.js +2 -2
  42. package/dist/martyrs/node_modules/.pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js/es6/PhoneNumber.js.map +1 -1
  43. package/dist/martyrs/node_modules/.pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js/es6/metadata.cjs +8 -8
  44. package/dist/martyrs/node_modules/.pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js/es6/metadata.cjs.map +1 -1
  45. package/dist/martyrs/node_modules/.pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js/es6/metadata.js +8 -8
  46. package/dist/martyrs/node_modules/.pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js/es6/metadata.js.map +1 -1
  47. package/dist/martyrs/src/components/Button/Button.vue.cjs.map +1 -1
  48. package/dist/martyrs/src/components/Button/Button.vue.js.map +1 -1
  49. package/dist/martyrs/src/components/Calendar/Calendar.vue2.cjs +3 -3
  50. package/dist/martyrs/src/components/Calendar/Calendar.vue2.cjs.map +1 -1
  51. package/dist/martyrs/src/components/Calendar/Calendar.vue2.js +3 -3
  52. package/dist/martyrs/src/components/Calendar/Calendar.vue2.js.map +1 -1
  53. package/dist/martyrs/src/components/Chips/Chips.vue2.cjs +1 -1
  54. package/dist/martyrs/src/components/Chips/Chips.vue2.js +1 -1
  55. package/dist/martyrs/src/components/Countdown/Countdown.vue.cjs +4 -4
  56. package/dist/martyrs/src/components/Countdown/Countdown.vue.cjs.map +1 -1
  57. package/dist/martyrs/src/components/Countdown/Countdown.vue.js +4 -4
  58. package/dist/martyrs/src/components/Countdown/Countdown.vue.js.map +1 -1
  59. package/dist/martyrs/src/components/Dropdown/{Dropdown.vue2.cjs → Dropdown.vue.cjs} +2 -2
  60. package/dist/martyrs/src/components/Dropdown/{Dropdown.vue2.js.map → Dropdown.vue.cjs.map} +1 -1
  61. package/dist/martyrs/src/components/Dropdown/{Dropdown.vue2.js → Dropdown.vue.js} +2 -2
  62. package/dist/martyrs/src/components/Dropdown/Dropdown.vue.js.map +1 -0
  63. package/dist/martyrs/src/components/EditImages/EditImages.vue2.cjs +1 -1
  64. package/dist/martyrs/src/components/EditImages/EditImages.vue2.js +1 -1
  65. package/dist/martyrs/src/components/EmptyState/EmptyState.vue.cjs +1 -1
  66. package/dist/martyrs/src/components/EmptyState/EmptyState.vue.js +1 -1
  67. package/dist/martyrs/src/components/Feed/Feed.vue.cjs +1 -1
  68. package/dist/martyrs/src/components/Feed/Feed.vue.js +1 -1
  69. package/dist/martyrs/src/components/Field/{Field.vue.cjs → Field.vue2.cjs} +2 -2
  70. package/dist/martyrs/src/components/Field/Field.vue2.cjs.map +1 -0
  71. package/dist/martyrs/src/components/Field/{Field.vue.js → Field.vue2.js} +2 -2
  72. package/dist/martyrs/src/components/Field/{Field.vue.cjs.map → Field.vue2.js.map} +1 -1
  73. package/dist/martyrs/src/components/FieldBig/FieldBig.vue.cjs +2 -2
  74. package/dist/martyrs/src/components/FieldBig/FieldBig.vue.cjs.map +1 -1
  75. package/dist/martyrs/src/components/FieldBig/FieldBig.vue.js +2 -2
  76. package/dist/martyrs/src/components/FieldBig/FieldBig.vue.js.map +1 -1
  77. package/dist/martyrs/src/components/FieldPhone/FieldPhone.vue.cjs +1 -1
  78. package/dist/martyrs/src/components/FieldPhone/FieldPhone.vue.cjs.map +1 -1
  79. package/dist/martyrs/src/components/FieldPhone/FieldPhone.vue.js +1 -1
  80. package/dist/martyrs/src/components/FieldPhone/FieldPhone.vue.js.map +1 -1
  81. package/dist/martyrs/src/components/LocationMarker/LocationMarker.vue.cjs +2 -2
  82. package/dist/martyrs/src/components/LocationMarker/LocationMarker.vue.cjs.map +1 -1
  83. package/dist/martyrs/src/components/LocationMarker/LocationMarker.vue.js +2 -2
  84. package/dist/martyrs/src/components/LocationMarker/LocationMarker.vue.js.map +1 -1
  85. package/dist/martyrs/src/components/Menu/{Menu.vue2.cjs → Menu.vue.cjs} +2 -2
  86. package/dist/martyrs/src/components/Menu/Menu.vue.cjs.map +1 -0
  87. package/dist/martyrs/src/components/Menu/{Menu.vue2.js → Menu.vue.js} +2 -2
  88. package/dist/martyrs/src/components/Menu/Menu.vue.js.map +1 -0
  89. package/dist/martyrs/src/components/Menu/MenuItem.vue.cjs +1 -1
  90. package/dist/martyrs/src/components/Menu/MenuItem.vue.cjs.map +1 -1
  91. package/dist/martyrs/src/components/Menu/MenuItem.vue.js +1 -1
  92. package/dist/martyrs/src/components/Menu/MenuItem.vue.js.map +1 -1
  93. package/dist/martyrs/src/components/Select/{Select.vue2.cjs → Select.vue.cjs} +2 -2
  94. package/dist/martyrs/src/components/Select/{Select.vue2.js.map → Select.vue.cjs.map} +1 -1
  95. package/dist/martyrs/src/components/Select/{Select.vue2.js → Select.vue.js} +2 -2
  96. package/dist/martyrs/src/components/Select/Select.vue.js.map +1 -0
  97. package/dist/martyrs/src/components/Status/Snack.vue.cjs +1 -1
  98. package/dist/martyrs/src/components/Status/Snack.vue.cjs.map +1 -1
  99. package/dist/martyrs/src/components/Status/Snack.vue.js +1 -1
  100. package/dist/martyrs/src/components/Status/Snack.vue.js.map +1 -1
  101. package/dist/martyrs/src/components/Status/Status.vue.cjs +1 -1
  102. package/dist/martyrs/src/components/Status/Status.vue.cjs.map +1 -1
  103. package/dist/martyrs/src/components/Status/Status.vue.js +1 -1
  104. package/dist/martyrs/src/components/Status/Status.vue.js.map +1 -1
  105. package/dist/martyrs/src/components/UploadImage/{UploadImage.vue.cjs → UploadImage.vue2.cjs} +5 -5
  106. package/dist/martyrs/src/components/UploadImage/UploadImage.vue2.cjs.map +1 -0
  107. package/dist/martyrs/src/components/UploadImage/{UploadImage.vue.js → UploadImage.vue2.js} +5 -5
  108. package/dist/martyrs/src/components/UploadImage/UploadImage.vue2.js.map +1 -0
  109. package/dist/martyrs/src/modules/auth/views/components/pages/EnterCode.vue.cjs +1 -1
  110. package/dist/martyrs/src/modules/auth/views/components/pages/EnterCode.vue.js +1 -1
  111. package/dist/martyrs/src/modules/auth/views/components/pages/EnterPassword.vue.cjs +2 -2
  112. package/dist/martyrs/src/modules/auth/views/components/pages/EnterPassword.vue.cjs.map +1 -1
  113. package/dist/martyrs/src/modules/auth/views/components/pages/EnterPassword.vue.js +2 -2
  114. package/dist/martyrs/src/modules/auth/views/components/pages/EnterPassword.vue.js.map +1 -1
  115. package/dist/martyrs/src/modules/auth/views/components/pages/Invite.vue.cjs +1 -1
  116. package/dist/martyrs/src/modules/auth/views/components/pages/Invite.vue.js +1 -1
  117. package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.cjs +7 -7
  118. package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.cjs.map +1 -1
  119. package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.js +7 -7
  120. package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.js.map +1 -1
  121. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEdit.vue.cjs +1 -1
  122. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEdit.vue.cjs.map +1 -1
  123. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEdit.vue.js +1 -1
  124. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEdit.vue.js.map +1 -1
  125. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditProfile.vue.cjs +2 -2
  126. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditProfile.vue.js +2 -2
  127. package/dist/martyrs/src/modules/auth/views/components/pages/ResetPassword.vue.cjs +1 -1
  128. package/dist/martyrs/src/modules/auth/views/components/pages/ResetPassword.vue.js +1 -1
  129. package/dist/martyrs/src/modules/auth/views/components/pages/SignIn.vue.cjs +1 -1
  130. package/dist/martyrs/src/modules/auth/views/components/pages/SignIn.vue.js +1 -1
  131. package/dist/martyrs/src/modules/auth/views/components/pages/SignUp.vue.cjs +1 -1
  132. package/dist/martyrs/src/modules/auth/views/components/pages/SignUp.vue.js +1 -1
  133. package/dist/martyrs/src/modules/auth/views/components/sections/FeaturedUsers.vue.cjs +1 -1
  134. package/dist/martyrs/src/modules/auth/views/components/sections/FeaturedUsers.vue.cjs.map +1 -1
  135. package/dist/martyrs/src/modules/auth/views/components/sections/FeaturedUsers.vue.js +1 -1
  136. package/dist/martyrs/src/modules/auth/views/components/sections/FeaturedUsers.vue.js.map +1 -1
  137. package/dist/martyrs/src/modules/auth/views/components/sections/ProfileEditCredentials.vue.cjs +1 -1
  138. package/dist/martyrs/src/modules/auth/views/components/sections/ProfileEditCredentials.vue.js +1 -1
  139. package/dist/martyrs/src/modules/backoffice/components/pages/Dashboard.vue.cjs +3 -3
  140. package/dist/martyrs/src/modules/backoffice/components/pages/Dashboard.vue.cjs.map +1 -1
  141. package/dist/martyrs/src/modules/backoffice/components/pages/Dashboard.vue.js +3 -3
  142. package/dist/martyrs/src/modules/backoffice/components/pages/Dashboard.vue.js.map +1 -1
  143. package/dist/martyrs/src/modules/backoffice/components/partials/Sidebar.vue.cjs +2 -2
  144. package/dist/martyrs/src/modules/backoffice/components/partials/Sidebar.vue.cjs.map +1 -1
  145. package/dist/martyrs/src/modules/backoffice/components/partials/Sidebar.vue.js +2 -2
  146. package/dist/martyrs/src/modules/backoffice/components/partials/Sidebar.vue.js.map +1 -1
  147. package/dist/martyrs/src/modules/chats/components/sections/ChatWindow.vue.cjs.map +1 -1
  148. package/dist/martyrs/src/modules/chats/components/sections/ChatWindow.vue.js.map +1 -1
  149. package/dist/martyrs/src/modules/community/components/blocks/CardBlogpost.vue.cjs +1 -1
  150. package/dist/martyrs/src/modules/community/components/blocks/CardBlogpost.vue.cjs.map +1 -1
  151. package/dist/martyrs/src/modules/community/components/blocks/CardBlogpost.vue.js +1 -1
  152. package/dist/martyrs/src/modules/community/components/blocks/CardBlogpost.vue.js.map +1 -1
  153. package/dist/martyrs/src/modules/community/components/layouts/Community.vue.cjs +3 -3
  154. package/dist/martyrs/src/modules/community/components/layouts/Community.vue.cjs.map +1 -1
  155. package/dist/martyrs/src/modules/community/components/layouts/Community.vue.js +3 -3
  156. package/dist/martyrs/src/modules/community/components/layouts/Community.vue.js.map +1 -1
  157. package/dist/martyrs/src/modules/community/components/pages/CreateBlogPost.vue.cjs +1 -1
  158. package/dist/martyrs/src/modules/community/components/pages/CreateBlogPost.vue.js +1 -1
  159. package/dist/martyrs/src/modules/community/components/sections/Comment.vue.cjs +2 -2
  160. package/dist/martyrs/src/modules/community/components/sections/Comment.vue.cjs.map +1 -1
  161. package/dist/martyrs/src/modules/community/components/sections/Comment.vue.js +2 -2
  162. package/dist/martyrs/src/modules/community/components/sections/Comment.vue.js.map +1 -1
  163. package/dist/martyrs/src/modules/community/components/sections/Comments.vue.cjs +1 -1
  164. package/dist/martyrs/src/modules/community/components/sections/Comments.vue.cjs.map +1 -1
  165. package/dist/martyrs/src/modules/community/components/sections/Comments.vue.js +1 -1
  166. package/dist/martyrs/src/modules/community/components/sections/Comments.vue.js.map +1 -1
  167. package/dist/martyrs/src/modules/constructor/components/elements/Card.vue.cjs +3 -3
  168. package/dist/martyrs/src/modules/constructor/components/elements/Card.vue.cjs.map +1 -1
  169. package/dist/martyrs/src/modules/constructor/components/elements/Card.vue.js +3 -3
  170. package/dist/martyrs/src/modules/constructor/components/elements/Card.vue.js.map +1 -1
  171. package/dist/martyrs/src/modules/constructor/components/elements/Embed.vue.cjs +1 -1
  172. package/dist/martyrs/src/modules/constructor/components/elements/Embed.vue.js +1 -1
  173. package/dist/martyrs/src/modules/constructor/components/sections/Constructor.vue.cjs +2 -2
  174. package/dist/martyrs/src/modules/constructor/components/sections/Constructor.vue.cjs.map +1 -1
  175. package/dist/martyrs/src/modules/constructor/components/sections/Constructor.vue.js +2 -2
  176. package/dist/martyrs/src/modules/constructor/components/sections/Constructor.vue.js.map +1 -1
  177. package/dist/martyrs/src/modules/constructor/components/sections/Viewer.vue.cjs +1 -1
  178. package/dist/martyrs/src/modules/constructor/components/sections/Viewer.vue.cjs.map +1 -1
  179. package/dist/martyrs/src/modules/constructor/components/sections/Viewer.vue.js +1 -1
  180. package/dist/martyrs/src/modules/constructor/components/sections/Viewer.vue.js.map +1 -1
  181. package/dist/martyrs/src/modules/events/components/blocks/CardEvent.vue.cjs +4 -4
  182. package/dist/martyrs/src/modules/events/components/blocks/CardEvent.vue.cjs.map +1 -1
  183. package/dist/martyrs/src/modules/events/components/blocks/CardEvent.vue.js +4 -4
  184. package/dist/martyrs/src/modules/events/components/blocks/CardEvent.vue.js.map +1 -1
  185. package/dist/martyrs/src/modules/events/components/pages/EditEvent.vue.cjs +3 -3
  186. package/dist/martyrs/src/modules/events/components/pages/EditEvent.vue.js +3 -3
  187. package/dist/martyrs/src/modules/events/components/pages/EditEventTickets.vue.cjs +1 -1
  188. package/dist/martyrs/src/modules/events/components/pages/EditEventTickets.vue.js +1 -1
  189. package/dist/martyrs/src/modules/events/components/pages/Event.vue.cjs +5 -5
  190. package/dist/martyrs/src/modules/events/components/pages/Event.vue.cjs.map +1 -1
  191. package/dist/martyrs/src/modules/events/components/pages/Event.vue.js +5 -5
  192. package/dist/martyrs/src/modules/events/components/pages/Event.vue.js.map +1 -1
  193. package/dist/martyrs/src/modules/events/components/pages/Events.vue.cjs +4 -4
  194. package/dist/martyrs/src/modules/events/components/pages/Events.vue.cjs.map +1 -1
  195. package/dist/martyrs/src/modules/events/components/pages/Events.vue.js +4 -4
  196. package/dist/martyrs/src/modules/events/components/pages/Events.vue.js.map +1 -1
  197. package/dist/martyrs/src/modules/events/components/sections/SelectDate.vue.cjs +2 -2
  198. package/dist/martyrs/src/modules/events/components/sections/SelectDate.vue.cjs.map +1 -1
  199. package/dist/martyrs/src/modules/events/components/sections/SelectDate.vue.js +2 -2
  200. package/dist/martyrs/src/modules/events/components/sections/SelectDate.vue.js.map +1 -1
  201. package/dist/martyrs/src/modules/gallery/components/sections/BackofficeGallery.vue.cjs +2 -2
  202. package/dist/martyrs/src/modules/gallery/components/sections/BackofficeGallery.vue.js +2 -2
  203. package/dist/martyrs/src/modules/globals/views/classes/globals.app.cjs +4 -1
  204. package/dist/martyrs/src/modules/globals/views/classes/globals.app.cjs.map +1 -1
  205. package/dist/martyrs/src/modules/globals/views/classes/globals.app.js +4 -1
  206. package/dist/martyrs/src/modules/globals/views/classes/globals.app.js.map +1 -1
  207. package/dist/martyrs/src/modules/globals/views/components/blocks/BlockSearch.vue.cjs +1 -1
  208. package/dist/martyrs/src/modules/globals/views/components/blocks/BlockSearch.vue.js +1 -1
  209. package/dist/martyrs/src/modules/globals/views/components/blocks/CardHeader.vue.cjs +5 -5
  210. package/dist/martyrs/src/modules/globals/views/components/blocks/CardHeader.vue.cjs.map +1 -1
  211. package/dist/martyrs/src/modules/globals/views/components/blocks/CardHeader.vue.js +5 -5
  212. package/dist/martyrs/src/modules/globals/views/components/blocks/CardHeader.vue.js.map +1 -1
  213. package/dist/martyrs/src/modules/globals/views/components/blocks/PopupDateSelector.vue.cjs +1 -1
  214. package/dist/martyrs/src/modules/globals/views/components/blocks/PopupDateSelector.vue.cjs.map +1 -1
  215. package/dist/martyrs/src/modules/globals/views/components/blocks/PopupDateSelector.vue.js +1 -1
  216. package/dist/martyrs/src/modules/globals/views/components/blocks/PopupDateSelector.vue.js.map +1 -1
  217. package/dist/martyrs/src/modules/globals/views/components/elements/PhotoStack.vue.cjs +4 -4
  218. package/dist/martyrs/src/modules/globals/views/components/elements/PhotoStack.vue.js +4 -4
  219. package/dist/martyrs/src/modules/globals/views/components/partials/CitySelection.vue.cjs +2 -2
  220. package/dist/martyrs/src/modules/globals/views/components/partials/CitySelection.vue.cjs.map +1 -1
  221. package/dist/martyrs/src/modules/globals/views/components/partials/CitySelection.vue.js +2 -2
  222. package/dist/martyrs/src/modules/globals/views/components/partials/CitySelection.vue.js.map +1 -1
  223. package/dist/martyrs/src/modules/globals/views/components/partials/Footer.vue.cjs +6 -6
  224. package/dist/martyrs/src/modules/globals/views/components/partials/Footer.vue.cjs.map +1 -1
  225. package/dist/martyrs/src/modules/globals/views/components/partials/Footer.vue.js +6 -6
  226. package/dist/martyrs/src/modules/globals/views/components/partials/Footer.vue.js.map +1 -1
  227. package/dist/martyrs/src/modules/globals/views/components/partials/Header.vue.cjs +4 -4
  228. package/dist/martyrs/src/modules/globals/views/components/partials/Header.vue.cjs.map +1 -1
  229. package/dist/martyrs/src/modules/globals/views/components/partials/Header.vue.js +4 -4
  230. package/dist/martyrs/src/modules/globals/views/components/partials/Header.vue.js.map +1 -1
  231. package/dist/martyrs/src/modules/globals/views/components/partials/LocationSelection.vue.cjs +1 -1
  232. package/dist/martyrs/src/modules/globals/views/components/partials/LocationSelection.vue.cjs.map +1 -1
  233. package/dist/martyrs/src/modules/globals/views/components/partials/LocationSelection.vue.js +1 -1
  234. package/dist/martyrs/src/modules/globals/views/components/partials/LocationSelection.vue.js.map +1 -1
  235. package/dist/martyrs/src/modules/globals/views/components/partials/Navigation.vue.cjs +3 -3
  236. package/dist/martyrs/src/modules/globals/views/components/partials/Navigation.vue.cjs.map +1 -1
  237. package/dist/martyrs/src/modules/globals/views/components/partials/Navigation.vue.js +3 -3
  238. package/dist/martyrs/src/modules/globals/views/components/partials/Navigation.vue.js.map +1 -1
  239. package/dist/martyrs/src/modules/globals/views/components/sections/Filters.vue2.cjs +1 -1
  240. package/dist/martyrs/src/modules/globals/views/components/sections/Filters.vue2.js +1 -1
  241. package/dist/martyrs/src/modules/globals/views/components/sections/SectionPageTitle.vue.cjs +2 -2
  242. package/dist/martyrs/src/modules/globals/views/components/sections/SectionPageTitle.vue.cjs.map +1 -1
  243. package/dist/martyrs/src/modules/globals/views/components/sections/SectionPageTitle.vue.js +2 -2
  244. package/dist/martyrs/src/modules/globals/views/components/sections/SectionPageTitle.vue.js.map +1 -1
  245. package/dist/martyrs/src/modules/globals/views/components/sections/Walkthrough.vue.cjs +10 -10
  246. package/dist/martyrs/src/modules/globals/views/components/sections/Walkthrough.vue.cjs.map +1 -1
  247. package/dist/martyrs/src/modules/globals/views/components/sections/Walkthrough.vue.js +10 -10
  248. package/dist/martyrs/src/modules/globals/views/components/sections/Walkthrough.vue.js.map +1 -1
  249. package/dist/martyrs/src/modules/inventory/components/forms/AdjustmentForm.vue.cjs +3 -3
  250. package/dist/martyrs/src/modules/inventory/components/forms/AdjustmentForm.vue.cjs.map +1 -1
  251. package/dist/martyrs/src/modules/inventory/components/forms/AdjustmentForm.vue.js +3 -3
  252. package/dist/martyrs/src/modules/inventory/components/forms/AdjustmentForm.vue.js.map +1 -1
  253. package/dist/martyrs/src/modules/inventory/components/forms/StockAlertsForm.vue.cjs +2 -2
  254. package/dist/martyrs/src/modules/inventory/components/forms/StockAlertsForm.vue.js +2 -2
  255. package/dist/martyrs/src/modules/inventory/components/pages/Inventory.vue.cjs +2 -2
  256. package/dist/martyrs/src/modules/inventory/components/pages/Inventory.vue.js +1 -1
  257. package/dist/martyrs/src/modules/inventory/components/pages/InventoryEdit.vue.cjs +3 -3
  258. package/dist/martyrs/src/modules/inventory/components/pages/InventoryEdit.vue.js +3 -3
  259. package/dist/martyrs/src/modules/landing/components/sections/SectionEarn.vue.cjs +3 -3
  260. package/dist/martyrs/src/modules/landing/components/sections/SectionEarn.vue.cjs.map +1 -1
  261. package/dist/martyrs/src/modules/landing/components/sections/SectionEarn.vue.js +3 -3
  262. package/dist/martyrs/src/modules/landing/components/sections/SectionEarn.vue.js.map +1 -1
  263. package/dist/martyrs/src/modules/landing/components/sections/SectionFeaturesImages.vue.cjs +2 -2
  264. package/dist/martyrs/src/modules/landing/components/sections/SectionFeaturesImages.vue.cjs.map +1 -1
  265. package/dist/martyrs/src/modules/landing/components/sections/SectionFeaturesImages.vue.js +2 -2
  266. package/dist/martyrs/src/modules/landing/components/sections/SectionFeaturesImages.vue.js.map +1 -1
  267. package/dist/martyrs/src/modules/landing/components/sections/SectionGuide.vue.cjs +2 -2
  268. package/dist/martyrs/src/modules/landing/components/sections/SectionGuide.vue.cjs.map +1 -1
  269. package/dist/martyrs/src/modules/landing/components/sections/SectionGuide.vue.js +2 -2
  270. package/dist/martyrs/src/modules/landing/components/sections/SectionGuide.vue.js.map +1 -1
  271. package/dist/martyrs/src/modules/landing/components/sections/SectionHeroToken.vue.cjs +1 -1
  272. package/dist/martyrs/src/modules/landing/components/sections/SectionHeroToken.vue.cjs.map +1 -1
  273. package/dist/martyrs/src/modules/landing/components/sections/SectionHeroToken.vue.js +1 -1
  274. package/dist/martyrs/src/modules/landing/components/sections/SectionHeroToken.vue.js.map +1 -1
  275. package/dist/martyrs/src/modules/landing/components/sections/SectionJoinUs.vue.cjs +1 -1
  276. package/dist/martyrs/src/modules/landing/components/sections/SectionJoinUs.vue.cjs.map +1 -1
  277. package/dist/martyrs/src/modules/landing/components/sections/SectionJoinUs.vue.js +1 -1
  278. package/dist/martyrs/src/modules/landing/components/sections/SectionJoinUs.vue.js.map +1 -1
  279. package/dist/martyrs/src/modules/landing/components/sections/SectionMobileApp.vue.cjs +3 -3
  280. package/dist/martyrs/src/modules/landing/components/sections/SectionMobileApp.vue.cjs.map +1 -1
  281. package/dist/martyrs/src/modules/landing/components/sections/SectionMobileApp.vue.js +3 -3
  282. package/dist/martyrs/src/modules/landing/components/sections/SectionMobileApp.vue.js.map +1 -1
  283. package/dist/martyrs/src/modules/landing/components/sections/SubscribeNewsletter.vue.cjs +1 -1
  284. package/dist/martyrs/src/modules/landing/components/sections/SubscribeNewsletter.vue.cjs.map +1 -1
  285. package/dist/martyrs/src/modules/landing/components/sections/SubscribeNewsletter.vue.js +1 -1
  286. package/dist/martyrs/src/modules/landing/components/sections/SubscribeNewsletter.vue.js.map +1 -1
  287. package/dist/martyrs/src/modules/marketplace/views/components/layouts/Marketplace.vue.cjs +4 -4
  288. package/dist/martyrs/src/modules/marketplace/views/components/layouts/Marketplace.vue.cjs.map +1 -1
  289. package/dist/martyrs/src/modules/marketplace/views/components/layouts/Marketplace.vue.js +4 -4
  290. package/dist/martyrs/src/modules/marketplace/views/components/layouts/Marketplace.vue.js.map +1 -1
  291. package/dist/martyrs/src/modules/marketplace/views/components/sections/SectionMenu.vue.cjs +1 -1
  292. package/dist/martyrs/src/modules/marketplace/views/components/sections/SectionMenu.vue.cjs.map +1 -1
  293. package/dist/martyrs/src/modules/marketplace/views/components/sections/SectionMenu.vue.js +1 -1
  294. package/dist/martyrs/src/modules/marketplace/views/components/sections/SectionMenu.vue.js.map +1 -1
  295. package/dist/martyrs/src/modules/music/components/forms/AlbumForm.vue.cjs +5 -5
  296. package/dist/martyrs/src/modules/music/components/forms/AlbumForm.vue.cjs.map +1 -1
  297. package/dist/martyrs/src/modules/music/components/forms/AlbumForm.vue.js +5 -5
  298. package/dist/martyrs/src/modules/music/components/forms/AlbumForm.vue.js.map +1 -1
  299. package/dist/martyrs/src/modules/music/components/forms/ArtistForm.vue.cjs +7 -7
  300. package/dist/martyrs/src/modules/music/components/forms/ArtistForm.vue.cjs.map +1 -1
  301. package/dist/martyrs/src/modules/music/components/forms/ArtistForm.vue.js +7 -7
  302. package/dist/martyrs/src/modules/music/components/forms/ArtistForm.vue.js.map +1 -1
  303. package/dist/martyrs/src/modules/music/components/forms/PlaylistForm.vue.cjs +8 -8
  304. package/dist/martyrs/src/modules/music/components/forms/PlaylistForm.vue.cjs.map +1 -1
  305. package/dist/martyrs/src/modules/music/components/forms/PlaylistForm.vue.js +8 -8
  306. package/dist/martyrs/src/modules/music/components/forms/PlaylistForm.vue.js.map +1 -1
  307. package/dist/martyrs/src/modules/music/components/forms/TrackForm.vue.cjs +7 -7
  308. package/dist/martyrs/src/modules/music/components/forms/TrackForm.vue.cjs.map +1 -1
  309. package/dist/martyrs/src/modules/music/components/forms/TrackForm.vue.js +7 -7
  310. package/dist/martyrs/src/modules/music/components/forms/TrackForm.vue.js.map +1 -1
  311. package/dist/martyrs/src/modules/music/components/pages/Album.vue.cjs +9 -9
  312. package/dist/martyrs/src/modules/music/components/pages/Album.vue.cjs.map +1 -1
  313. package/dist/martyrs/src/modules/music/components/pages/Album.vue.js +9 -9
  314. package/dist/martyrs/src/modules/music/components/pages/Album.vue.js.map +1 -1
  315. package/dist/martyrs/src/modules/music/components/pages/Artist.vue.cjs +10 -10
  316. package/dist/martyrs/src/modules/music/components/pages/Artist.vue.cjs.map +1 -1
  317. package/dist/martyrs/src/modules/music/components/pages/Artist.vue.js +10 -10
  318. package/dist/martyrs/src/modules/music/components/pages/Artist.vue.js.map +1 -1
  319. package/dist/martyrs/src/modules/music/components/pages/MusicLibrary.vue.cjs +4 -4
  320. package/dist/martyrs/src/modules/music/components/pages/MusicLibrary.vue.cjs.map +1 -1
  321. package/dist/martyrs/src/modules/music/components/pages/MusicLibrary.vue.js +4 -4
  322. package/dist/martyrs/src/modules/music/components/pages/MusicLibrary.vue.js.map +1 -1
  323. package/dist/martyrs/src/modules/music/components/pages/Playlist.vue.cjs +6 -6
  324. package/dist/martyrs/src/modules/music/components/pages/Playlist.vue.cjs.map +1 -1
  325. package/dist/martyrs/src/modules/music/components/pages/Playlist.vue.js +6 -6
  326. package/dist/martyrs/src/modules/music/components/pages/Playlist.vue.js.map +1 -1
  327. package/dist/martyrs/src/modules/music/components/pages/Track.vue.cjs +10 -10
  328. package/dist/martyrs/src/modules/music/components/pages/Track.vue.cjs.map +1 -1
  329. package/dist/martyrs/src/modules/music/components/pages/Track.vue.js +10 -10
  330. package/dist/martyrs/src/modules/music/components/pages/Track.vue.js.map +1 -1
  331. package/dist/martyrs/src/modules/notifications/components/blocks/NotificationItem.vue.cjs +2 -2
  332. package/dist/martyrs/src/modules/notifications/components/blocks/NotificationItem.vue.cjs.map +1 -1
  333. package/dist/martyrs/src/modules/notifications/components/blocks/NotificationItem.vue.js +2 -2
  334. package/dist/martyrs/src/modules/notifications/components/blocks/NotificationItem.vue.js.map +1 -1
  335. package/dist/martyrs/src/modules/notifications/components/elements/NotificationBadge.vue.cjs +2 -2
  336. package/dist/martyrs/src/modules/notifications/components/elements/NotificationBadge.vue.cjs.map +1 -1
  337. package/dist/martyrs/src/modules/notifications/components/elements/NotificationBadge.vue.js +2 -2
  338. package/dist/martyrs/src/modules/notifications/components/elements/NotificationBadge.vue.js.map +1 -1
  339. package/dist/martyrs/src/modules/orders/components/blocks/CardOrder.vue.cjs +8 -8
  340. package/dist/martyrs/src/modules/orders/components/blocks/CardOrder.vue.cjs.map +1 -1
  341. package/dist/martyrs/src/modules/orders/components/blocks/CardOrder.vue.js +8 -8
  342. package/dist/martyrs/src/modules/orders/components/blocks/CardOrder.vue.js.map +1 -1
  343. package/dist/martyrs/src/modules/orders/components/blocks/CardOrderBackoffice.vue.cjs +1 -1
  344. package/dist/martyrs/src/modules/orders/components/blocks/CardOrderBackoffice.vue.cjs.map +1 -1
  345. package/dist/martyrs/src/modules/orders/components/blocks/CardOrderBackoffice.vue.js +1 -1
  346. package/dist/martyrs/src/modules/orders/components/blocks/CardOrderBackoffice.vue.js.map +1 -1
  347. package/dist/martyrs/src/modules/orders/components/blocks/CardOrderUser.vue.cjs +4 -4
  348. package/dist/martyrs/src/modules/orders/components/blocks/CardOrderUser.vue.cjs.map +1 -1
  349. package/dist/martyrs/src/modules/orders/components/blocks/CardOrderUser.vue.js +4 -4
  350. package/dist/martyrs/src/modules/orders/components/blocks/CardOrderUser.vue.js.map +1 -1
  351. package/dist/martyrs/src/modules/orders/components/elements/FieldSubscribeNewsletter.vue.cjs +2 -2
  352. package/dist/martyrs/src/modules/orders/components/elements/FieldSubscribeNewsletter.vue.cjs.map +1 -1
  353. package/dist/martyrs/src/modules/orders/components/elements/FieldSubscribeNewsletter.vue.js +2 -2
  354. package/dist/martyrs/src/modules/orders/components/elements/FieldSubscribeNewsletter.vue.js.map +1 -1
  355. package/dist/martyrs/src/modules/orders/components/elements/PriceTotal.vue.cjs +1 -1
  356. package/dist/martyrs/src/modules/orders/components/elements/PriceTotal.vue.cjs.map +1 -1
  357. package/dist/martyrs/src/modules/orders/components/elements/PriceTotal.vue.js +1 -1
  358. package/dist/martyrs/src/modules/orders/components/elements/PriceTotal.vue.js.map +1 -1
  359. package/dist/martyrs/src/modules/orders/components/forms/FormApplicationDetails.vue.cjs +2 -2
  360. package/dist/martyrs/src/modules/orders/components/forms/FormApplicationDetails.vue.js +2 -2
  361. package/dist/martyrs/src/modules/orders/components/forms/FormCustomerDetails.vue.cjs +2 -2
  362. package/dist/martyrs/src/modules/orders/components/forms/FormCustomerDetails.vue.js +2 -2
  363. package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.cjs +9 -9
  364. package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.cjs.map +1 -1
  365. package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.js +9 -9
  366. package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.js.map +1 -1
  367. package/dist/martyrs/src/modules/orders/components/pages/OrderCreateBackoffice.vue.cjs +1 -1
  368. package/dist/martyrs/src/modules/orders/components/pages/OrderCreateBackoffice.vue.js +1 -1
  369. package/dist/martyrs/src/modules/orders/components/partials/ShopCart.vue.cjs +1 -1
  370. package/dist/martyrs/src/modules/orders/components/partials/ShopCart.vue.cjs.map +1 -1
  371. package/dist/martyrs/src/modules/orders/components/partials/ShopCart.vue.js +1 -1
  372. package/dist/martyrs/src/modules/orders/components/partials/ShopCart.vue.js.map +1 -1
  373. package/dist/martyrs/src/modules/orders/components/sections/AskToLogin.vue.cjs +1 -1
  374. package/dist/martyrs/src/modules/orders/components/sections/AskToLogin.vue.cjs.map +1 -1
  375. package/dist/martyrs/src/modules/orders/components/sections/AskToLogin.vue.js +1 -1
  376. package/dist/martyrs/src/modules/orders/components/sections/AskToLogin.vue.js.map +1 -1
  377. package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.cjs +2 -2
  378. package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.js +2 -2
  379. package/dist/martyrs/src/modules/orders/components/sections/FormPayment.vue.cjs +1 -1
  380. package/dist/martyrs/src/modules/orders/components/sections/FormPayment.vue.js +1 -1
  381. package/dist/martyrs/src/modules/orders/components/sections/Succes.vue.cjs +1 -1
  382. package/dist/martyrs/src/modules/orders/components/sections/Succes.vue.js +1 -1
  383. package/dist/martyrs/src/modules/organizations/components/blocks/CardDepartment.vue.cjs +5 -5
  384. package/dist/martyrs/src/modules/organizations/components/blocks/CardDepartment.vue.js +5 -5
  385. package/dist/martyrs/src/modules/organizations/components/blocks/CardOrganization.vue.cjs +3 -3
  386. package/dist/martyrs/src/modules/organizations/components/blocks/CardOrganization.vue.cjs.map +1 -1
  387. package/dist/martyrs/src/modules/organizations/components/blocks/CardOrganization.vue.js +3 -3
  388. package/dist/martyrs/src/modules/organizations/components/blocks/CardOrganization.vue.js.map +1 -1
  389. package/dist/martyrs/src/modules/organizations/components/blocks/EmptyState.vue.cjs +1 -1
  390. package/dist/martyrs/src/modules/organizations/components/blocks/EmptyState.vue.js +1 -1
  391. package/dist/martyrs/src/modules/organizations/components/blocks/Rating.vue.cjs +2 -2
  392. package/dist/martyrs/src/modules/organizations/components/blocks/Rating.vue.js +2 -2
  393. package/dist/martyrs/src/modules/organizations/components/forms/AddExistingMembersForm.vue.cjs +1 -1
  394. package/dist/martyrs/src/modules/organizations/components/forms/AddExistingMembersForm.vue.cjs.map +1 -1
  395. package/dist/martyrs/src/modules/organizations/components/forms/AddExistingMembersForm.vue.js +1 -1
  396. package/dist/martyrs/src/modules/organizations/components/forms/AddExistingMembersForm.vue.js.map +1 -1
  397. package/dist/martyrs/src/modules/organizations/components/forms/DepartmentForm.vue.cjs +4 -4
  398. package/dist/martyrs/src/modules/organizations/components/forms/DepartmentForm.vue.cjs.map +1 -1
  399. package/dist/martyrs/src/modules/organizations/components/forms/DepartmentForm.vue.js +4 -4
  400. package/dist/martyrs/src/modules/organizations/components/forms/DepartmentForm.vue.js.map +1 -1
  401. package/dist/martyrs/src/modules/organizations/components/forms/InviteForm.vue.cjs +2 -2
  402. package/dist/martyrs/src/modules/organizations/components/forms/InviteForm.vue.cjs.map +1 -1
  403. package/dist/martyrs/src/modules/organizations/components/forms/InviteForm.vue.js +2 -2
  404. package/dist/martyrs/src/modules/organizations/components/forms/InviteForm.vue.js.map +1 -1
  405. package/dist/martyrs/src/modules/organizations/components/pages/Department.vue.cjs +7 -7
  406. package/dist/martyrs/src/modules/organizations/components/pages/Department.vue.cjs.map +1 -1
  407. package/dist/martyrs/src/modules/organizations/components/pages/Department.vue.js +7 -7
  408. package/dist/martyrs/src/modules/organizations/components/pages/Department.vue.js.map +1 -1
  409. package/dist/martyrs/src/modules/organizations/components/pages/Members.vue.cjs +5 -5
  410. package/dist/martyrs/src/modules/organizations/components/pages/Members.vue.js +5 -5
  411. package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.cjs +10 -10
  412. package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.cjs.map +1 -1
  413. package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.js +10 -10
  414. package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.js.map +1 -1
  415. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationBackoffice.vue.cjs +9 -9
  416. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationBackoffice.vue.cjs.map +1 -1
  417. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationBackoffice.vue.js +9 -9
  418. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationBackoffice.vue.js.map +1 -1
  419. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.cjs +3 -3
  420. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.js +3 -3
  421. package/dist/martyrs/src/modules/organizations/components/sections/Documents.vue.cjs +1 -1
  422. package/dist/martyrs/src/modules/organizations/components/sections/Documents.vue.js +1 -1
  423. package/dist/martyrs/src/modules/organizations/components/sections/MembersAdd.vue.cjs +3 -3
  424. package/dist/martyrs/src/modules/organizations/components/sections/MembersAdd.vue.cjs.map +1 -1
  425. package/dist/martyrs/src/modules/organizations/components/sections/MembersAdd.vue.js +3 -3
  426. package/dist/martyrs/src/modules/organizations/components/sections/MembersAdd.vue.js.map +1 -1
  427. package/dist/martyrs/src/modules/organizations/components/sections/Organizations.vue.cjs +2 -2
  428. package/dist/martyrs/src/modules/organizations/components/sections/Organizations.vue.js +2 -2
  429. package/dist/martyrs/src/modules/organizations/router/organizations.cjs +1 -1
  430. package/dist/martyrs/src/modules/organizations/router/organizations.js +1 -1
  431. package/dist/martyrs/src/modules/pages/views/components/blocks/CardPage.vue.cjs +1 -1
  432. package/dist/martyrs/src/modules/pages/views/components/blocks/CardPage.vue.js +1 -1
  433. package/dist/martyrs/src/modules/pages/views/components/pages/PageEdit.vue.cjs +1 -1
  434. package/dist/martyrs/src/modules/pages/views/components/pages/PageEdit.vue.js +1 -1
  435. package/dist/martyrs/src/modules/products/components/blocks/CardCategory.vue.cjs +2 -2
  436. package/dist/martyrs/src/modules/products/components/blocks/CardCategory.vue.cjs.map +1 -1
  437. package/dist/martyrs/src/modules/products/components/blocks/CardCategory.vue.js +2 -2
  438. package/dist/martyrs/src/modules/products/components/blocks/CardCategory.vue.js.map +1 -1
  439. package/dist/martyrs/src/modules/products/components/blocks/CardPosition.vue.cjs +1 -1
  440. package/dist/martyrs/src/modules/products/components/blocks/CardPosition.vue.cjs.map +1 -1
  441. package/dist/martyrs/src/modules/products/components/blocks/CardPosition.vue.js +1 -1
  442. package/dist/martyrs/src/modules/products/components/blocks/CardPosition.vue.js.map +1 -1
  443. package/dist/martyrs/src/modules/products/components/blocks/CardProduct.vue.cjs +3 -3
  444. package/dist/martyrs/src/modules/products/components/blocks/CardProduct.vue.cjs.map +1 -1
  445. package/dist/martyrs/src/modules/products/components/blocks/CardProduct.vue.js +3 -3
  446. package/dist/martyrs/src/modules/products/components/blocks/CardProduct.vue.js.map +1 -1
  447. package/dist/martyrs/src/modules/products/components/blocks/ProductDiscounts.vue.cjs +3 -3
  448. package/dist/martyrs/src/modules/products/components/blocks/ProductDiscounts.vue.cjs.map +1 -1
  449. package/dist/martyrs/src/modules/products/components/blocks/ProductDiscounts.vue.js +3 -3
  450. package/dist/martyrs/src/modules/products/components/blocks/ProductDiscounts.vue.js.map +1 -1
  451. package/dist/martyrs/src/modules/products/components/elements/Price.vue.cjs +4 -4
  452. package/dist/martyrs/src/modules/products/components/elements/Price.vue.cjs.map +1 -1
  453. package/dist/martyrs/src/modules/products/components/elements/Price.vue.js +4 -4
  454. package/dist/martyrs/src/modules/products/components/elements/Price.vue.js.map +1 -1
  455. package/dist/martyrs/src/modules/products/components/elements/QuantitySelector.vue.cjs +2 -2
  456. package/dist/martyrs/src/modules/products/components/elements/QuantitySelector.vue.cjs.map +1 -1
  457. package/dist/martyrs/src/modules/products/components/elements/QuantitySelector.vue.js +2 -2
  458. package/dist/martyrs/src/modules/products/components/elements/QuantitySelector.vue.js.map +1 -1
  459. package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.cjs +4 -4
  460. package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.js +4 -4
  461. package/dist/martyrs/src/modules/products/components/pages/Product.vue.cjs +2 -2
  462. package/dist/martyrs/src/modules/products/components/pages/Product.vue.cjs.map +1 -1
  463. package/dist/martyrs/src/modules/products/components/pages/Product.vue.js +2 -2
  464. package/dist/martyrs/src/modules/products/components/pages/Product.vue.js.map +1 -1
  465. package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.cjs +2 -2
  466. package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.js +2 -2
  467. package/dist/martyrs/src/modules/products/components/pages/Products.vue.cjs +5 -5
  468. package/dist/martyrs/src/modules/products/components/pages/Products.vue.cjs.map +1 -1
  469. package/dist/martyrs/src/modules/products/components/pages/Products.vue.js +5 -5
  470. package/dist/martyrs/src/modules/products/components/pages/Products.vue.js.map +1 -1
  471. package/dist/martyrs/src/modules/products/components/sections/EditAttributes.vue.cjs +4 -4
  472. package/dist/martyrs/src/modules/products/components/sections/EditAttributes.vue.cjs.map +1 -1
  473. package/dist/martyrs/src/modules/products/components/sections/EditAttributes.vue.js +4 -4
  474. package/dist/martyrs/src/modules/products/components/sections/EditAttributes.vue.js.map +1 -1
  475. package/dist/martyrs/src/modules/products/components/sections/EditDiscounts.vue.cjs +5 -5
  476. package/dist/martyrs/src/modules/products/components/sections/EditDiscounts.vue.cjs.map +1 -1
  477. package/dist/martyrs/src/modules/products/components/sections/EditDiscounts.vue.js +5 -5
  478. package/dist/martyrs/src/modules/products/components/sections/EditDiscounts.vue.js.map +1 -1
  479. package/dist/martyrs/src/modules/products/components/sections/EditVariants.vue.cjs +7 -7
  480. package/dist/martyrs/src/modules/products/components/sections/EditVariants.vue.cjs.map +1 -1
  481. package/dist/martyrs/src/modules/products/components/sections/EditVariants.vue.js +7 -7
  482. package/dist/martyrs/src/modules/products/components/sections/EditVariants.vue.js.map +1 -1
  483. package/dist/martyrs/src/modules/products/components/sections/FilterProducts.vue.cjs +3 -3
  484. package/dist/martyrs/src/modules/products/components/sections/FilterProducts.vue.cjs.map +1 -1
  485. package/dist/martyrs/src/modules/products/components/sections/FilterProducts.vue.js +3 -3
  486. package/dist/martyrs/src/modules/products/components/sections/FilterProducts.vue.js.map +1 -1
  487. package/dist/martyrs/src/modules/products/components/sections/HeroRecommendation.vue.cjs +2 -2
  488. package/dist/martyrs/src/modules/products/components/sections/HeroRecommendation.vue.cjs.map +1 -1
  489. package/dist/martyrs/src/modules/products/components/sections/HeroRecommendation.vue.js +2 -2
  490. package/dist/martyrs/src/modules/products/components/sections/HeroRecommendation.vue.js.map +1 -1
  491. package/dist/martyrs/src/modules/products/components/sections/ProductConfigurator.vue.cjs +1 -1
  492. package/dist/martyrs/src/modules/products/components/sections/ProductConfigurator.vue.cjs.map +1 -1
  493. package/dist/martyrs/src/modules/products/components/sections/ProductConfigurator.vue.js +1 -1
  494. package/dist/martyrs/src/modules/products/components/sections/ProductConfigurator.vue.js.map +1 -1
  495. package/dist/martyrs/src/modules/products/components/sections/ProductsRecommended.vue.cjs +1 -1
  496. package/dist/martyrs/src/modules/products/components/sections/ProductsRecommended.vue.cjs.map +1 -1
  497. package/dist/martyrs/src/modules/products/components/sections/ProductsRecommended.vue.js +1 -1
  498. package/dist/martyrs/src/modules/products/components/sections/ProductsRecommended.vue.js.map +1 -1
  499. package/dist/martyrs/src/modules/products/components/sections/SectionProduct.vue.cjs +2 -2
  500. package/dist/martyrs/src/modules/products/components/sections/SectionProduct.vue.cjs.map +1 -1
  501. package/dist/martyrs/src/modules/products/components/sections/SectionProduct.vue.js +2 -2
  502. package/dist/martyrs/src/modules/products/components/sections/SectionProduct.vue.js.map +1 -1
  503. package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttToolbar.vue.cjs +1 -1
  504. package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttToolbar.vue.js +1 -1
  505. package/dist/martyrs/src/modules/rents/views/components/pages/RentsEdit.vue.cjs +1 -1
  506. package/dist/martyrs/src/modules/rents/views/components/pages/RentsEdit.vue.js +1 -1
  507. package/dist/martyrs/src/modules/reports/components/sections/FormReport.vue.cjs +3 -3
  508. package/dist/martyrs/src/modules/reports/components/sections/FormReport.vue.cjs.map +1 -1
  509. package/dist/martyrs/src/modules/reports/components/sections/FormReport.vue.js +3 -3
  510. package/dist/martyrs/src/modules/reports/components/sections/FormReport.vue.js.map +1 -1
  511. package/dist/martyrs/src/modules/spots/components/blocks/CardSpot.vue.cjs +6 -6
  512. package/dist/martyrs/src/modules/spots/components/blocks/CardSpot.vue.cjs.map +1 -1
  513. package/dist/martyrs/src/modules/spots/components/blocks/CardSpot.vue.js +6 -6
  514. package/dist/martyrs/src/modules/spots/components/blocks/CardSpot.vue.js.map +1 -1
  515. package/dist/martyrs/src/modules/spots/components/blocks/SpotMemberModify.vue.cjs +2 -2
  516. package/dist/martyrs/src/modules/spots/components/blocks/SpotMemberModify.vue.js +2 -2
  517. package/dist/martyrs/src/modules/spots/components/layouts/Spots.vue.cjs +2 -2
  518. package/dist/martyrs/src/modules/spots/components/layouts/Spots.vue.js +2 -2
  519. package/dist/martyrs/src/modules/spots/components/pages/Spot.vue.cjs +3 -3
  520. package/dist/martyrs/src/modules/spots/components/pages/Spot.vue.cjs.map +1 -1
  521. package/dist/martyrs/src/modules/spots/components/pages/Spot.vue.js +3 -3
  522. package/dist/martyrs/src/modules/spots/components/pages/Spot.vue.js.map +1 -1
  523. package/dist/martyrs/src/modules/spots/components/pages/SpotEdit.vue.cjs +6 -6
  524. package/dist/martyrs/src/modules/spots/components/pages/SpotEdit.vue.cjs.map +1 -1
  525. package/dist/martyrs/src/modules/spots/components/pages/SpotEdit.vue.js +6 -6
  526. package/dist/martyrs/src/modules/spots/components/pages/SpotEdit.vue.js.map +1 -1
  527. package/dist/martyrs/src/modules/spots/components/sections/WorktimeEdit.vue.cjs +2 -2
  528. package/dist/martyrs/src/modules/spots/components/sections/WorktimeEdit.vue.js +2 -2
  529. package/dist/martyrs/src/modules/wallet/views/components/blocks/CardDeposit.vue.cjs +1 -1
  530. package/dist/martyrs/src/modules/wallet/views/components/blocks/CardDeposit.vue.js +1 -1
  531. package/dist/martyrs/src/modules/wallet/views/components/blocks/CryptoDeposit.vue.cjs +2 -2
  532. package/dist/martyrs/src/modules/wallet/views/components/blocks/CryptoDeposit.vue.js +2 -2
  533. package/dist/martyrs/src/modules/wallet/views/components/pages/Wallet.vue.cjs +4 -4
  534. package/dist/martyrs/src/modules/wallet/views/components/pages/Wallet.vue.cjs.map +1 -1
  535. package/dist/martyrs/src/modules/wallet/views/components/pages/Wallet.vue.js +4 -4
  536. package/dist/martyrs/src/modules/wallet/views/components/pages/Wallet.vue.js.map +1 -1
  537. package/dist/martyrs.cjs.js +1 -1
  538. package/dist/martyrs.css +1 -1
  539. package/dist/martyrs.es.js +1 -1
  540. package/dist/{metadata.schema-RlxNv46L.cjs → metadata.schema-BGykn-_r.cjs} +2 -2
  541. package/dist/{metadata.schema-CWmcDJN7.js → metadata.schema-CIRR_WQ-.js} +2 -2
  542. package/dist/music.server.cjs +30 -33
  543. package/dist/music.server.js +30 -33
  544. package/dist/node_modules/.pnpm/@vue_shared@3.5.21/node_modules/@vue/shared/dist/shared.esm-bundler.cjs +2 -2
  545. package/dist/node_modules/.pnpm/@vue_shared@3.5.21/node_modules/@vue/shared/dist/shared.esm-bundler.cjs.map +1 -1
  546. package/dist/node_modules/.pnpm/@vue_shared@3.5.21/node_modules/@vue/shared/dist/shared.esm-bundler.js +2 -2
  547. package/dist/node_modules/.pnpm/@vue_shared@3.5.21/node_modules/@vue/shared/dist/shared.esm-bundler.js.map +1 -1
  548. package/dist/node_modules/.pnpm/dayjs@1.11.18/node_modules/dayjs/dayjs.min.cjs +13 -13
  549. package/dist/node_modules/.pnpm/dayjs@1.11.18/node_modules/dayjs/dayjs.min.cjs.map +1 -1
  550. package/dist/node_modules/.pnpm/dayjs@1.11.18/node_modules/dayjs/dayjs.min.js +13 -13
  551. package/dist/node_modules/.pnpm/dayjs@1.11.18/node_modules/dayjs/dayjs.min.js.map +1 -1
  552. package/dist/node_modules/.pnpm/dayjs@1.11.18/node_modules/dayjs/plugin/weekOfYear.cjs +3 -3
  553. package/dist/node_modules/.pnpm/dayjs@1.11.18/node_modules/dayjs/plugin/weekOfYear.cjs.map +1 -1
  554. package/dist/node_modules/.pnpm/dayjs@1.11.18/node_modules/dayjs/plugin/weekOfYear.js +3 -3
  555. package/dist/node_modules/.pnpm/dayjs@1.11.18/node_modules/dayjs/plugin/weekOfYear.js.map +1 -1
  556. package/dist/node_modules/.pnpm/lodash.merge@4.6.2/node_modules/lodash.merge/index.cjs +10 -10
  557. package/dist/node_modules/.pnpm/lodash.merge@4.6.2/node_modules/lodash.merge/index.cjs.map +1 -1
  558. package/dist/node_modules/.pnpm/lodash.merge@4.6.2/node_modules/lodash.merge/index.js +10 -10
  559. package/dist/node_modules/.pnpm/lodash.merge@4.6.2/node_modules/lodash.merge/index.js.map +1 -1
  560. package/dist/node_modules/.pnpm/vue-draggable-next@2.3.0_sortablejs@1.15.6_vue@3.5.21_typescript@5.9.2_/node_modules/vue-draggable-next/dist/vue-draggable-next.esm-bundler.cjs +2 -2
  561. package/dist/node_modules/.pnpm/vue-draggable-next@2.3.0_sortablejs@1.15.6_vue@3.5.21_typescript@5.9.2_/node_modules/vue-draggable-next/dist/vue-draggable-next.esm-bundler.cjs.map +1 -1
  562. package/dist/node_modules/.pnpm/vue-draggable-next@2.3.0_sortablejs@1.15.6_vue@3.5.21_typescript@5.9.2_/node_modules/vue-draggable-next/dist/vue-draggable-next.esm-bundler.js +2 -2
  563. package/dist/node_modules/.pnpm/vue-draggable-next@2.3.0_sortablejs@1.15.6_vue@3.5.21_typescript@5.9.2_/node_modules/vue-draggable-next/dist/vue-draggable-next.esm-bundler.js.map +1 -1
  564. package/dist/notifications.server.cjs +22 -18
  565. package/dist/notifications.server.js +22 -18
  566. package/dist/orders.server.cjs +10 -10
  567. package/dist/orders.server.js +10 -10
  568. package/dist/organizations.server.cjs +13 -13
  569. package/dist/organizations.server.js +13 -13
  570. package/dist/{ownership.schema-D1p5XSpt.cjs → ownership.schema-CRYdbemm.cjs} +2 -2
  571. package/dist/{ownership.schema-BqH4v5vH.js → ownership.schema-fwwDf_e5.js} +2 -2
  572. package/dist/pages.server.cjs +2 -2
  573. package/dist/pages.server.js +2 -2
  574. package/dist/products.server.cjs +13 -13
  575. package/dist/products.server.js +13 -13
  576. package/dist/{profile.schema-BGAe5VN5.js → profile.schema-CjLOfG7b.js} +2 -2
  577. package/dist/{profile.schema-pidHrksV.cjs → profile.schema-l0Dk4Ptu.cjs} +2 -2
  578. package/dist/rents.server.cjs +2 -2
  579. package/dist/rents.server.js +2 -2
  580. package/dist/reports.server.cjs +2 -2
  581. package/dist/reports.server.js +2 -2
  582. package/dist/{socials.schema-CtpSF9dE.cjs → socials.schema-CqEHax2w.cjs} +2 -2
  583. package/dist/{socials.schema-BOZV82Mp.js → socials.schema-DxnnaBgO.js} +2 -2
  584. package/dist/spots.server.cjs +4 -4
  585. package/dist/spots.server.js +4 -4
  586. package/dist/style.css +75 -76
  587. package/dist/{web-BkaOiiSn.js → web-8cpb2Zat.js} +1 -1
  588. package/dist/{web-CROHFHoW.cjs → web-B0k809Uc.cjs} +1 -1
  589. package/package.json +8 -12
  590. package/src/builder/builder.js +0 -6
  591. package/src/components/Button/Button.vue +0 -1
  592. package/src/components/Calendar/Calendar.vue +2 -2
  593. package/src/components/Chips/Chips.vue +1 -1
  594. package/src/components/Countdown/Countdown.vue +4 -4
  595. package/src/components/EmptyState/EmptyState.vue +1 -1
  596. package/src/components/FieldBig/FieldBig.vue +1 -1
  597. package/src/components/FieldPhone/FieldPhone.vue +1 -1
  598. package/src/components/LocationMarker/LocationMarker.vue +2 -2
  599. package/src/components/Menu/MenuItem.vue +1 -1
  600. package/src/components/Status/Snack.vue +1 -1
  601. package/src/components/Status/Status.vue +1 -1
  602. package/src/components/UploadImage/UploadImage.vue +2 -2
  603. package/src/configurator/components/layouts/layoutConfigurator.vue +1 -1
  604. package/src/modules/STYLES.MD +59 -77
  605. package/src/modules/TASK-CORE-TRANSFER.MD +62 -0
  606. package/src/modules/auth/views/components/pages/EnterPassword.vue +1 -1
  607. package/src/modules/auth/views/components/pages/Profile.vue +3 -3
  608. package/src/modules/auth/views/components/pages/ProfileEdit.vue +1 -1
  609. package/src/modules/auth/views/components/sections/FeaturedUsers.vue +1 -1
  610. package/src/modules/backoffice/components/admin/Users.vue +1 -1
  611. package/src/modules/backoffice/components/pages/Dashboard.vue +3 -3
  612. package/src/modules/backoffice/components/partials/Sidebar.vue +2 -2
  613. package/src/modules/chats/components/sections/ChatWindow.vue +1 -1
  614. package/src/modules/chats/routes/chats.routes.js +6 -4
  615. package/src/modules/community/components/blocks/CardBlogpost.vue +1 -1
  616. package/src/modules/community/components/layouts/Community.vue +2 -2
  617. package/src/modules/community/components/sections/Comment.vue +1 -1
  618. package/src/modules/community/components/sections/Comments.vue +1 -1
  619. package/src/modules/constructor/components/elements/Card.vue +1 -1
  620. package/src/modules/constructor/components/sections/Constructor.vue +2 -2
  621. package/src/modules/constructor/components/sections/Viewer.vue +1 -1
  622. package/src/modules/events/TASKS.MD +0 -0
  623. package/src/modules/events/components/blocks/CardEvent.vue +4 -4
  624. package/src/modules/events/components/pages/Event.vue +3 -3
  625. package/src/modules/events/components/pages/Events.vue +4 -4
  626. package/src/modules/events/components/sections/SelectDate.vue +2 -2
  627. package/src/modules/globals/globals.server.js +14 -1
  628. package/src/modules/globals/views/classes/globals.app.js +8 -4
  629. package/src/modules/globals/views/components/blocks/CardHeader.vue +4 -4
  630. package/src/modules/globals/views/components/blocks/PopupDateSelector.vue +1 -1
  631. package/src/modules/globals/views/components/elements/PhotoStack.vue +4 -4
  632. package/src/modules/globals/views/components/partials/CitySelection.vue +2 -2
  633. package/src/modules/globals/views/components/partials/Footer.centered.vue +6 -6
  634. package/src/modules/globals/views/components/partials/Footer.vue +6 -6
  635. package/src/modules/globals/views/components/partials/Header.vue +3 -3
  636. package/src/modules/globals/views/components/partials/LocationSelection.vue +1 -1
  637. package/src/modules/globals/views/components/partials/Navigation.vue +1 -1
  638. package/src/modules/globals/views/components/sections/SectionPageTitle.vue +2 -2
  639. package/src/modules/globals/views/components/sections/Walkthrough.vue +10 -10
  640. package/src/modules/governance/TASK-TRACKER.MD +192 -0
  641. package/src/modules/governance/controllers/routes/initiatives.routes.js +106 -11
  642. package/src/modules/governance/controllers/routes/milestones.routes.js +111 -0
  643. package/src/modules/governance/controllers/routes/tasks.routes.js +164 -11
  644. package/src/modules/governance/controllers/routes/votes.routes.js +50 -9
  645. package/src/modules/governance/controllers/routes/votings.routes.js +209 -12
  646. package/src/modules/governance/data/mockData.js +654 -0
  647. package/src/modules/governance/governance.server.js +6 -11
  648. package/src/modules/governance/middlewares/initiatives.verifier.js +197 -0
  649. package/src/modules/governance/middlewares/milestones.verifier.js +243 -0
  650. package/src/modules/governance/middlewares/tasks.verifier.js +224 -0
  651. package/src/modules/governance/middlewares/votes.verifier.js +115 -0
  652. package/src/modules/governance/middlewares/votings.verifier.js +237 -0
  653. package/src/modules/governance/models/initiative.model.js +14 -8
  654. package/src/modules/governance/models/task.model.js +13 -1
  655. package/src/modules/governance/models/voting.model.js +68 -2
  656. package/src/modules/governance/reactcode/.bolt/config.json +3 -0
  657. package/src/modules/governance/reactcode/.bolt/prompt +5 -0
  658. package/src/modules/governance/reactcode/eslint.config.js +28 -0
  659. package/src/modules/governance/reactcode/index.html +13 -0
  660. package/src/modules/governance/reactcode/package-lock.json +4229 -0
  661. package/src/modules/governance/reactcode/package.json +36 -0
  662. package/src/modules/governance/reactcode/postcss.config.js +6 -0
  663. package/src/modules/governance/reactcode/src/App.tsx +29 -0
  664. package/src/modules/governance/reactcode/src/components/CreateInitiativeForm.tsx +258 -0
  665. package/src/modules/governance/reactcode/src/components/CreateMilestoneForm.tsx +257 -0
  666. package/src/modules/governance/reactcode/src/components/EmptyState.tsx +29 -0
  667. package/src/modules/governance/reactcode/src/components/InitiativeCard.tsx +59 -0
  668. package/src/modules/governance/reactcode/src/components/LinkedEntityCard.tsx +58 -0
  669. package/src/modules/governance/reactcode/src/components/MilestoneCard.tsx +82 -0
  670. package/src/modules/governance/reactcode/src/components/ProductRepositories.tsx +70 -0
  671. package/src/modules/governance/reactcode/src/components/ProductSummary.tsx +183 -0
  672. package/src/modules/governance/reactcode/src/components/ProductTeam.tsx +100 -0
  673. package/src/modules/governance/reactcode/src/components/ProposeTaskForm.tsx +184 -0
  674. package/src/modules/governance/reactcode/src/components/TaskAssignForm.tsx +74 -0
  675. package/src/modules/governance/reactcode/src/components/TaskCard.tsx +88 -0
  676. package/src/modules/governance/reactcode/src/components/TaskStatusBadge.tsx +27 -0
  677. package/src/modules/governance/reactcode/src/components/VoteForm.tsx +96 -0
  678. package/src/modules/governance/reactcode/src/components/VotingCard.tsx +78 -0
  679. package/src/modules/governance/reactcode/src/components/VotingResults.tsx +155 -0
  680. package/src/modules/governance/reactcode/src/data/mockData.ts +1465 -0
  681. package/src/modules/governance/reactcode/src/index.css +3 -0
  682. package/src/modules/governance/reactcode/src/main.tsx +10 -0
  683. package/src/modules/governance/reactcode/src/pages/InitiativeDetailPage.tsx +569 -0
  684. package/src/modules/governance/reactcode/src/pages/InitiativeMilestonesPage.tsx +171 -0
  685. package/src/modules/governance/reactcode/src/pages/InitiativesListPage.tsx +182 -0
  686. package/src/modules/governance/reactcode/src/pages/MilestoneDetailPage.tsx +178 -0
  687. package/src/modules/governance/reactcode/src/pages/RoadmapPage.tsx +256 -0
  688. package/src/modules/governance/reactcode/src/pages/TaskDetailPage.tsx +529 -0
  689. package/src/modules/governance/reactcode/src/pages/VotingDetailPage.tsx +191 -0
  690. package/src/modules/governance/reactcode/src/pages/VotingsListPage.tsx +86 -0
  691. package/src/modules/governance/reactcode/src/vite-env.d.ts +1 -0
  692. package/src/modules/governance/reactcode/tailwind.config.js +8 -0
  693. package/src/modules/governance/reactcode/tsconfig.app.json +24 -0
  694. package/src/modules/governance/reactcode/tsconfig.json +7 -0
  695. package/src/modules/governance/reactcode/tsconfig.node.json +22 -0
  696. package/src/modules/governance/reactcode/vite.config.ts +10 -0
  697. package/src/modules/governance/seed-governance.js +348 -0
  698. package/src/modules/governance/views/components/blocks/CardInitiativeItem.vue +58 -7
  699. package/src/modules/governance/views/components/blocks/CardMilestoneItem.vue +70 -0
  700. package/src/modules/governance/views/components/blocks/CardTaskItem.vue +58 -7
  701. package/src/modules/governance/views/components/blocks/CardVotingItem.vue +65 -7
  702. package/src/modules/governance/views/components/layouts/Governance.vue +23 -0
  703. package/src/modules/governance/views/components/pages/Governance.vue +44 -0
  704. package/src/modules/governance/views/components/pages/Initiative.vue +413 -8
  705. package/src/modules/governance/views/components/pages/InitiativeMilestones.vue +159 -0
  706. package/src/modules/governance/views/components/pages/Initiatives.vue +164 -6
  707. package/src/modules/governance/views/components/pages/Milestone.vue +170 -0
  708. package/src/modules/governance/views/components/pages/Roadmap.vue +238 -0
  709. package/src/modules/governance/views/components/pages/Task.vue +393 -14
  710. package/src/modules/governance/views/components/pages/Tasks.vue +164 -10
  711. package/src/modules/governance/views/components/pages/Voting.vue +167 -20
  712. package/src/modules/governance/views/components/pages/Votings.vue +86 -9
  713. package/src/modules/governance/views/components/partials/EmptyState.vue +41 -0
  714. package/src/modules/governance/views/components/partials/LinkedEntityCard.vue +73 -0
  715. package/src/modules/governance/views/components/partials/TaskStatusBadge.vue +35 -0
  716. package/src/modules/governance/views/components/partials/VoteForm.vue +100 -0
  717. package/src/modules/governance/views/components/partials/VotingResults.vue +127 -0
  718. package/src/modules/governance/views/router/goverance.router.js +52 -1
  719. package/src/modules/governance/views/store/initiatives.js +10 -7
  720. package/src/modules/governance/views/store/tasks.js +10 -7
  721. package/src/modules/governance/views/store/votes.js +10 -7
  722. package/src/modules/governance/views/store/votings.js +9 -6
  723. package/src/modules/inventory/components/forms/AdjustmentForm.vue +1 -1
  724. package/src/modules/landing/components/sections/Examples.vue +1 -1
  725. package/src/modules/landing/components/sections/SectionEarn.vue +2 -2
  726. package/src/modules/landing/components/sections/SectionFeature.vue +1 -1
  727. package/src/modules/landing/components/sections/SectionFeaturesImages.vue +1 -1
  728. package/src/modules/landing/components/sections/SectionFocus.vue +1 -1
  729. package/src/modules/landing/components/sections/SectionGuide.vue +2 -2
  730. package/src/modules/landing/components/sections/SectionHeroToken.vue +1 -1
  731. package/src/modules/landing/components/sections/SectionHeroVideo.vue +2 -2
  732. package/src/modules/landing/components/sections/SectionJoinUs.vue +1 -1
  733. package/src/modules/landing/components/sections/SectionMobileApp.vue +3 -3
  734. package/src/modules/landing/components/sections/SubscribeNewsletter.vue +1 -1
  735. package/src/modules/marketplace/views/components/layouts/Marketplace.vue +3 -3
  736. package/src/modules/marketplace/views/components/sections/SectionMenu.vue +1 -1
  737. package/src/modules/music/components/forms/AlbumForm.vue +2 -2
  738. package/src/modules/music/components/forms/ArtistForm.vue +4 -4
  739. package/src/modules/music/components/forms/PlaylistForm.vue +6 -6
  740. package/src/modules/music/components/forms/TrackForm.vue +4 -4
  741. package/src/modules/music/components/pages/Album.vue +8 -8
  742. package/src/modules/music/components/pages/Artist.vue +10 -10
  743. package/src/modules/music/components/pages/MusicLibrary.vue +4 -4
  744. package/src/modules/music/components/pages/Playlist.vue +5 -5
  745. package/src/modules/music/components/pages/Track.vue +9 -9
  746. package/src/modules/music/music.server.js +0 -1
  747. package/src/modules/notifications/components/blocks/NotificationItem.vue +1 -1
  748. package/src/modules/notifications/components/elements/NotificationBadge.vue +1 -1
  749. package/src/modules/notifications/notifications.server.js +26 -20
  750. package/src/modules/orders/components/blocks/CardOrder.vue +7 -7
  751. package/src/modules/orders/components/blocks/CardOrderBackoffice.vue +1 -1
  752. package/src/modules/orders/components/blocks/CardOrderUser.vue +3 -3
  753. package/src/modules/orders/components/elements/FieldSubscribeNewsletter.vue +2 -2
  754. package/src/modules/orders/components/elements/PriceTotal.vue +1 -1
  755. package/src/modules/orders/components/pages/Favorites.vue +1 -1
  756. package/src/modules/orders/components/pages/OrderBackoffice.vue +7 -7
  757. package/src/modules/orders/components/pages/Orders_refact.vue +3 -3
  758. package/src/modules/orders/components/partials/ShopCart.vue +1 -1
  759. package/src/modules/orders/components/sections/AskToLogin.vue +1 -1
  760. package/src/modules/orders/components/sections/Succes.vue +1 -1
  761. package/src/modules/organizations/components/blocks/CardOrganization.vue +3 -3
  762. package/src/modules/organizations/components/blocks/EmptyState.vue +1 -1
  763. package/src/modules/organizations/components/blocks/Rating.vue +2 -2
  764. package/src/modules/organizations/components/forms/AddExistingMembersForm.vue +1 -1
  765. package/src/modules/organizations/components/forms/DepartmentForm.vue +2 -2
  766. package/src/modules/organizations/components/forms/InviteForm.vue +1 -1
  767. package/src/modules/organizations/components/pages/Department.vue +2 -2
  768. package/src/modules/organizations/components/pages/DepartmentEdit.vue +2 -2
  769. package/src/modules/organizations/components/pages/Organization.new.vue +7 -7
  770. package/src/modules/organizations/components/pages/Organization.vue +6 -6
  771. package/src/modules/organizations/components/pages/OrganizationBackoffice.vue +8 -8
  772. package/src/modules/organizations/components/sections/MembersAdd.vue +1 -1
  773. package/src/modules/products/components/blocks/CardCategory.vue +2 -2
  774. package/src/modules/products/components/blocks/CardPosition.vue +1 -1
  775. package/src/modules/products/components/blocks/CardProduct.vue +3 -3
  776. package/src/modules/products/components/blocks/ProductDiscounts.vue +2 -2
  777. package/src/modules/products/components/elements/Price.vue +4 -4
  778. package/src/modules/products/components/elements/QuantitySelector.vue +2 -2
  779. package/src/modules/products/components/forms/StockAuditForm.vue +1 -1
  780. package/src/modules/products/components/pages/Product.vue +2 -2
  781. package/src/modules/products/components/pages/Products.vue +4 -4
  782. package/src/modules/products/components/sections/EditAttributes.vue +3 -3
  783. package/src/modules/products/components/sections/EditDiscounts.vue +3 -3
  784. package/src/modules/products/components/sections/EditVariants.vue +5 -5
  785. package/src/modules/products/components/sections/FilterProducts.vue +3 -3
  786. package/src/modules/products/components/sections/HeroRecommendation.vue +2 -2
  787. package/src/modules/products/components/sections/ProductConfigurator.vue +1 -1
  788. package/src/modules/products/components/sections/ProductsRecommended.vue +1 -1
  789. package/src/modules/products/components/sections/SectionProduct.vue +2 -2
  790. package/src/modules/reports/components/sections/FormReport.vue +2 -2
  791. package/src/modules/spots/components/blocks/CardSpot.vue +5 -5
  792. package/src/modules/spots/components/pages/Spot.vue +2 -2
  793. package/src/modules/spots/components/pages/SpotEdit.vue +3 -3
  794. package/src/modules/wallet/views/components/pages/Wallet.vue +4 -4
  795. package/src/styles/base/all.scss +20 -0
  796. package/src/styles/config.scss +10 -9
  797. package/src/styles/typography.scss +13 -13
  798. package/dist/globals.observer-C_FYclgV.cjs +0 -78
  799. package/dist/globals.observer-MZsqaE6F.js +0 -79
  800. package/dist/main-8f945Ngn.cjs +0 -11
  801. package/dist/martyrs/src/components/Dropdown/Dropdown.vue2.cjs.map +0 -1
  802. package/dist/martyrs/src/components/EditImages/EditImages.vue.cjs +0 -2
  803. package/dist/martyrs/src/components/EditImages/EditImages.vue.cjs.map +0 -1
  804. package/dist/martyrs/src/components/EditImages/EditImages.vue.js +0 -2
  805. package/dist/martyrs/src/components/EditImages/EditImages.vue.js.map +0 -1
  806. package/dist/martyrs/src/components/Field/Field.vue.js.map +0 -1
  807. package/dist/martyrs/src/components/Menu/Menu.vue2.cjs.map +0 -1
  808. package/dist/martyrs/src/components/Menu/Menu.vue2.js.map +0 -1
  809. package/dist/martyrs/src/components/Select/Select.vue2.cjs.map +0 -1
  810. package/dist/martyrs/src/components/UploadImage/UploadImage.vue.cjs.map +0 -1
  811. package/dist/martyrs/src/components/UploadImage/UploadImage.vue.js.map +0 -1
  812. package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue2.cjs +0 -2
  813. package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue2.cjs.map +0 -1
  814. package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue2.js +0 -2
  815. package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue2.js.map +0 -1
  816. package/dist/tickets.controller-9zoaVPcx.cjs +0 -444
  817. package/dist/tickets.controller-C8sWVqbB.js +0 -428
  818. package/dist/wallet.server.cjs +0 -528
  819. package/dist/wallet.server.js +0 -511
  820. package/src/builder/modes/ssr.vite.dev.js +0 -180
  821. package/src/builder/ssr/ssr-render-html.vite.js +0 -35
  822. package/src/builder/vite/index.js +0 -13
  823. package/src/builder/vite/vite.config.api.js +0 -52
  824. package/src/builder/vite/vite.config.base.js +0 -110
  825. package/src/builder/vite/vite.config.spa.client.js +0 -81
  826. package/src/builder/vite/vite.config.ssr.client.js +0 -244
  827. package/src/builder/vite/vite.config.ssr.server.js +0 -74
  828. package/src/modules/governance/controllers/factories/initiatives.controller.js +0 -90
  829. package/src/modules/governance/controllers/factories/tasks.controller.js +0 -88
  830. package/src/modules/governance/controllers/factories/votes.controller.js +0 -64
  831. package/src/modules/governance/controllers/factories/votings.controller.js +0 -105
  832. package/src/modules/governance/views/store/projects.js +0 -148
  833. /package/src/modules/governance/{DESCRIPTION.MD → IGNORE-ITS FOR FUTURE-DESCRIPTION.MD} +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-medium 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-regular\" />\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-regular\" />\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-regular\" />\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-regular\"\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/globals/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 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/globals/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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"}
@@ -9,8 +9,8 @@ const categories = require("../../store/categories.cjs");
9
9
  const marketplace = require("../../../marketplace/views/store/marketplace.cjs");
10
10
  ;/* empty css */
11
11
  const _hoisted_1 = { class: "pd-medium bg-light radius-medium" };
12
- const _hoisted_2 = { class: "cursor-pointer mn-r-auto t-medium p-semi" };
13
- const _hoisted_3 = { class: "cursor-pointer mn-r-auto t-medium p-semi" };
12
+ const _hoisted_2 = { class: "cursor-pointer mn-r-auto t-medium p-medium" };
13
+ const _hoisted_3 = { class: "cursor-pointer mn-r-auto t-medium p-medium" };
14
14
  const _sfc_main = {
15
15
  __name: "FilterProducts",
16
16
  props: {
@@ -166,7 +166,7 @@ const _sfc_main = {
166
166
  status: false
167
167
  }, {
168
168
  header: vue.withCtx(() => _cache[3] || (_cache[3] = [
169
- vue.createElementVNode("p", { class: "cursor-pointer mn-r-auto t-medium p-semi" }, "Delivery", -1)
169
+ vue.createElementVNode("p", { class: "cursor-pointer mn-r-auto t-medium p-medium" }, "Delivery", -1)
170
170
  ])),
171
171
  content: vue.withCtx(() => [
172
172
  (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(__props.deliveryOptions, (deliveryOption, index) => {
@@ -1 +1 @@
1
- {"version":3,"file":"FilterProducts.vue.cjs","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-semi\">{{ 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-semi\">{{ 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-semi\">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":["useRoute","useRouter","ref","watch","marketplace.state","onMounted","categories.actions","categories.state","useI18n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuFA,UAAM,QAAQA,UAAAA,SAAQ;AACtB,UAAM,SAASC,UAAAA,UAAS;AAKxB,QAAI,UAAU;AAAA,MACZ,QAAQ;AAAA,IACV;AAEsBC,QAAAA,IAAI;AAAA,MACxB,YAAY,CAAA;AAAA,MACZ,QAAQ,CAAA;AAAA,MACR,UAAU,CAAA;AAAA,MACV,OAAO,CAAA;AAAA,IACT,CAAC;AAwBDC,QAAAA,MAAM,MAAMC,YAAAA,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;AAEjBC,QAAAA,UAAU,YAAY;AACpB,YAAMC,WAAAA,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;AACIF,0BAAkB,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;AAEEG,qBAAiB,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,MAAMC,QAAAA,QAAQ,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"FilterProducts.vue.cjs","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":["useRoute","useRouter","ref","watch","marketplace.state","onMounted","categories.actions","categories.state","useI18n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuFA,UAAM,QAAQA,UAAAA,SAAQ;AACtB,UAAM,SAASC,UAAAA,UAAS;AAKxB,QAAI,UAAU;AAAA,MACZ,QAAQ;AAAA,IACV;AAEsBC,QAAAA,IAAI;AAAA,MACxB,YAAY,CAAA;AAAA,MACZ,QAAQ,CAAA;AAAA,MACR,UAAU,CAAA;AAAA,MACV,OAAO,CAAA;AAAA,IACT,CAAC;AAwBDC,QAAAA,MAAM,MAAMC,YAAAA,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;AAEjBC,QAAAA,UAAU,YAAY;AACpB,YAAMC,WAAAA,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;AACIF,0BAAkB,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;AAEEG,qBAAiB,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,MAAMC,QAAAA,QAAQ,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -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-semi" };
11
- const _hoisted_3 = { class: "cursor-pointer mn-r-auto t-medium p-semi" };
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" };
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-semi" }, "Delivery", -1)
167
+ createElementVNode("p", { class: "cursor-pointer mn-r-auto t-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-semi\">{{ 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-semi\">{{ 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-semi\">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 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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -77,7 +77,7 @@ const _sfc_main = {
77
77
  innerHTML: vue.unref(t)("title")
78
78
  }, null, 8, _hoisted_3),
79
79
  vue.createElementVNode("p", {
80
- class: "mn-b-big p-semi t-transp",
80
+ class: "mn-b-big p-medium t-transp",
81
81
  innerHTML: vue.unref(t)("description")
82
82
  }, null, 8, _hoisted_4),
83
83
  vue.createVNode(FieldBig.default, {
@@ -92,7 +92,7 @@ const _sfc_main = {
92
92
  class: "mn-b-big pd-big bg-dark-transp-50 bg-blur-thin w-100 w-max-40r"
93
93
  }, null, 8, ["input", "placeholder", "action"]),
94
94
  vue.createElementVNode("p", {
95
- class: "w-m-60r t-transp mn-b-semi p-medium",
95
+ class: "w-m-60r t-transp mn-b-semi p-regular",
96
96
  innerHTML: vue.unref(t)("subdescription")
97
97
  }, null, 8, _hoisted_5),
98
98
  vue.createElementVNode("div", _hoisted_6, [
@@ -1 +1 @@
1
- {"version":3,"file":"HeroRecommendation.vue.cjs","sources":["../../../../../../../src/modules/products/components/sections/HeroRecommendation.vue"],"sourcesContent":["<script setup>\n\timport { ref, onMounted } from 'vue'\n\n\timport FieldBig from \"@martyrs/src/components/FieldBig/FieldBig.vue\";\n\timport Shader from \"@martyrs/src/components/Shader/Shader.vue\";\n\n\timport { useRouter } from 'vue-router'\n\timport { useI18n } from 'vue-i18n'\n\n\timport * as products from '@martyrs/src/modules/products/store/products.js';\n\n\tconst router = useRouter()\n\n\tconst text = {\n messages: {\n \"en\": {\n\t\t \"title\": \"Increase Your High <br><b class='t-main'>Boosted by AI Budtender</b>\",\n\t\t \"description\": \"Just tell us what you're want, and Weeder will find your ideal match.\",\n\t\t \"placeholderTexts\": [\n\t\t \t'Lowest THC, please!',\n\t\t \t'Something with banana flavors?',\n\t\t \t\"I'm in the mood for trippy vibes.\"\n\t\t ],\n\t\t \"subdescription\": \"AI Curated Recommendations for Your Mood:\",\n\t\t \"presets\": {\n\t\t \"sleep\": \"sleep\",\n\t\t \"creative\": \"creative\",\n\t\t \"giggly\": \"giggly\",\n\t\t \"libido\": \"libido\",\n\t\t \"trippy\": \"trippy\",\n\t\t \"euphoric\": \"euphoric\"\n\t\t },\n\t\t \"placeholder\": \"Tell us what you're after...\",\n\t\t \"action\": \"Transmit\"\n\t\t },\n\t\t \"ru\": {\n\t\t \"title\": \"Персональный Накур,<br><b class='t-main'>Напрямую от AI</b>\",\n\t\t \"description\": \"AI на страже твоего релакса, бро. Мы подбираем самые космические товары с учетом твоего желаемого настроения:\",\n\t\t \"placeholderTexts\": [\n\t\t \t'Я хочу самый низкий THC',\n\t\t \t'Я хочу чего-нибудь бананового',\n\t\t \t'Я хочу курнуть хейза'\n\t\t ],\n\t\t \t \"presets\": {\n\t\t \"sleep\": \"сон\",\n\t\t \"creative\": \"креатив\",\n\t\t \"giggly\": \"смех\",\n\t\t \"libido\": \"либидо\",\n\t\t \"trippy\": \"трип\",\n\t\t \"euphoric\": \"кайф\"\n\t\t },\n\t\t \"subdescription\": \"Или выберите тег, и наш AI направит тебя к самым крутым вариантам:\",\n\t\t \"placeholder\": \"Опиши свой желаемый хай, bro...\",\n\t\t \"action\": \"Передать\"\n\t\t }\n\t\t}\t\n\t}\n\n\tconst { t, rt } = useI18n(text)\n\n\tlet mood = ref('')\n\n\tconst presets = ['sleep','creative','giggly','libido','trippy','euphoric'];\n\n\tasync function submitMood(presetMood = null) {\n\t\tconst moodToSend = presetMood || mood.value;\n\t\tawait products.actions.submitMood(moodToSend);\n\t}\n\n\t\n</script>\n\n<template>\n\t<div \n\t\tclass=\"pd-big bg-black t-white pos-relative o-hidden \"\n\t>\n\t\t<div class=\"flex-column flex-center flex t-center pos-relative z-index-1\">\n\t\t\t\n\t\t\t<h1 \n\t\t\t\tclass=\"mn-b-semi\" \n\t\t\t\tv-html=\"t('title')\"\n\t\t\t/>\n\n\t\t\t<p \n\t\t\t\tclass=\"mn-b-big p-semi t-transp\" \n\t\t\t\tv-html=\"t('description')\"\n\t\t\t/>\n\t\t\t\n\t\t\t<FieldBig \n\t\t\t\t:input=\"mood\" \n\t\t :typingSpeed=\"100\"\n\t\t :loopTyping=\"true\"\n\t\t :enableTyping=\"true\"\n\t\t :placeholder=\"t('placeholder')\"\n\t\t :action=\"t('action')\"\n\t\t @update:input=\"mood = $event\"\n\t\t @action=\"router.push({name: 'Product Recommmendation', query: {mood: mood}})\"\n\t\t\t\tclass=\"mn-b-big pd-big bg-dark-transp-50 bg-blur-thin w-100 w-max-40r\"\n\t\t\t/>\n\n\t\t\t<p \n\t\t\t\tclass=\"w-m-60r t-transp mn-b-semi p-medium\" \n\t\t\t\tv-html=\"t('subdescription')\"\n\t\t\t/>\n\n\t\t\t<div style=\"max-width: 50rem;\" class=\"w-100 h-max gap-thin cols-6\">\n\n\t\t\t\t<button \n\t\t\t\t\tv-for=\"(preset,index) in presets\" \n\t\t\t\t\t:key=\"preset\" \n\t\t\t\t\t@click.stop=\"router.push({name: 'ProductRecommmendation', query: {mood: preset}})\"\n\t\t\t\t\tclass=\"\n\t\t\t\t\t\tuppercase \n\t\t\t\t\t\tpd-thin\n\t\t\t\t\t\tt-medium\n\t\t\t\t\t\tflex-center\n\t\t\t\t\t\tflex-column\n\t\t\t\t\t\tflex-nowrap\n\t\t\t\t\t\tflex\n\t\t\t\t\t\tbg-dark-transp-50 \n\t\t\t\t\t\tbg-blur-thin\n\t\t\t\t\t\tradius-semi\n\t\t\t\t\t\tcursor-pointer\n\t\t\t\t\t\ttransition-elastic\n\t\t\t\t\t\thover-easeInOut-1 \n\t\t\t\t\t\"\n\t\t\t\t>\n\t\t\t\t\t<img loading=\"lazy\" \n\t\t\t\t\t\t:src=\"(FILE_SERVER_URL || '') + '/icons/moods/' + preset + '.svg'\" \n\t\t\t\t\t\tclass=\"w-100\"\n\t\t\t\t\t/>\n\n\t\t\t\t\t<span class=\"t-white\"> \n\t\t\t\t\t\t{{ t(`presets.` + preset) }}\n\t\t\t\t\t</span>\n\t\t\t\t</button>\n\n\t\t\t</div>\n\n\t\t</div>\n\n\t\t<!-- <Shader class=\"w-100 h-100 flex flex-center pos-absolute pos-t-0 pos-r-0 z-index-0\"/> -->\n\n <!-- <div class=\"w-100 h-100 flex flex-center pos-absolute pos-t-0 pos-r-0 z-index-0\">\n \t <img src=\"/spiral.webp\" loading=\"lazy\" alt=\"\" class=\"spiral\"/>\n </div> -->\n\n\t</div>\n</template>\n\n<style style=\"scoped\">\n.spiral {\n object-fit: cover;\n width: 100rem;\n height: 100rem;\n position: absolute;\n top: 50%;\n left: 50%;\n opacity: 0.066;\n transform: translate(-50%, -50%) rotate(0deg);\n transform-origin: center center;\n animation: spin 5s linear infinite;\n}\n\n@keyframes spin {\n 0% {\n transform: translate(-50%, -50%) rotate(0deg);\n }\n 100% {\n transform: translate(-50%, -50%) rotate(360deg);\n }\n}\n</style>"],"names":["useRouter","useI18n","ref"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAWC,UAAM,SAASA,UAAAA,UAAS;AAExB,UAAM,OAAO;AAAA,MACV,UAAU;AAAA,QACR,MAAM;AAAA,UACN,SAAS;AAAA,UACT,eAAe;AAAA,UACf,oBAAoB;AAAA,YACnB;AAAA,YACA;AAAA,YACA;AAAA,UACP;AAAA,UACM,kBAAkB;AAAA,UAClB,WAAW;AAAA,YACT,SAAS;AAAA,YACT,YAAY;AAAA,YACZ,UAAU;AAAA,YACV,UAAU;AAAA,YACV,UAAU;AAAA,YACV,YAAY;AAAA,UACpB;AAAA,UACM,eAAe;AAAA,UACf,UAAU;AAAA,QAChB;AAAA,QACI,MAAM;AAAA,UACJ,SAAS;AAAA,UACT,eAAe;AAAA,UACf,oBAAoB;AAAA,YACnB;AAAA,YACA;AAAA,YACA;AAAA,UACP;AAAA,UACO,WAAW;AAAA,YACV,SAAS;AAAA,YACT,YAAY;AAAA,YACZ,UAAU;AAAA,YACV,UAAU;AAAA,YACV,UAAU;AAAA,YACV,YAAY;AAAA,UACpB;AAAA,UACM,kBAAkB;AAAA,UAClB,eAAe;AAAA,UACf,UAAU;AAAA,QAChB;AAAA,MACA;AAAA,IACA;AAEC,UAAM,EAAE,GAAG,GAAE,IAAKC,QAAAA,QAAQ,IAAI;AAE9B,QAAI,OAAOC,IAAAA,IAAI,EAAE;AAEjB,UAAM,UAAU,CAAC,SAAQ,YAAW,UAAS,UAAS,UAAS,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"HeroRecommendation.vue.cjs","sources":["../../../../../../../src/modules/products/components/sections/HeroRecommendation.vue"],"sourcesContent":["<script setup>\n\timport { ref, onMounted } from 'vue'\n\n\timport FieldBig from \"@martyrs/src/components/FieldBig/FieldBig.vue\";\n\timport Shader from \"@martyrs/src/components/Shader/Shader.vue\";\n\n\timport { useRouter } from 'vue-router'\n\timport { useI18n } from 'vue-i18n'\n\n\timport * as products from '@martyrs/src/modules/products/store/products.js';\n\n\tconst router = useRouter()\n\n\tconst text = {\n messages: {\n \"en\": {\n\t\t \"title\": \"Increase Your High <br><b class='t-main'>Boosted by AI Budtender</b>\",\n\t\t \"description\": \"Just tell us what you're want, and Weeder will find your ideal match.\",\n\t\t \"placeholderTexts\": [\n\t\t \t'Lowest THC, please!',\n\t\t \t'Something with banana flavors?',\n\t\t \t\"I'm in the mood for trippy vibes.\"\n\t\t ],\n\t\t \"subdescription\": \"AI Curated Recommendations for Your Mood:\",\n\t\t \"presets\": {\n\t\t \"sleep\": \"sleep\",\n\t\t \"creative\": \"creative\",\n\t\t \"giggly\": \"giggly\",\n\t\t \"libido\": \"libido\",\n\t\t \"trippy\": \"trippy\",\n\t\t \"euphoric\": \"euphoric\"\n\t\t },\n\t\t \"placeholder\": \"Tell us what you're after...\",\n\t\t \"action\": \"Transmit\"\n\t\t },\n\t\t \"ru\": {\n\t\t \"title\": \"Персональный Накур,<br><b class='t-main'>Напрямую от AI</b>\",\n\t\t \"description\": \"AI на страже твоего релакса, бро. Мы подбираем самые космические товары с учетом твоего желаемого настроения:\",\n\t\t \"placeholderTexts\": [\n\t\t \t'Я хочу самый низкий THC',\n\t\t \t'Я хочу чего-нибудь бананового',\n\t\t \t'Я хочу курнуть хейза'\n\t\t ],\n\t\t \t \"presets\": {\n\t\t \"sleep\": \"сон\",\n\t\t \"creative\": \"креатив\",\n\t\t \"giggly\": \"смех\",\n\t\t \"libido\": \"либидо\",\n\t\t \"trippy\": \"трип\",\n\t\t \"euphoric\": \"кайф\"\n\t\t },\n\t\t \"subdescription\": \"Или выберите тег, и наш AI направит тебя к самым крутым вариантам:\",\n\t\t \"placeholder\": \"Опиши свой желаемый хай, bro...\",\n\t\t \"action\": \"Передать\"\n\t\t }\n\t\t}\t\n\t}\n\n\tconst { t, rt } = useI18n(text)\n\n\tlet mood = ref('')\n\n\tconst presets = ['sleep','creative','giggly','libido','trippy','euphoric'];\n\n\tasync function submitMood(presetMood = null) {\n\t\tconst moodToSend = presetMood || mood.value;\n\t\tawait products.actions.submitMood(moodToSend);\n\t}\n\n\t\n</script>\n\n<template>\n\t<div \n\t\tclass=\"pd-big bg-black t-white pos-relative o-hidden \"\n\t>\n\t\t<div class=\"flex-column flex-center flex t-center pos-relative z-index-1\">\n\t\t\t\n\t\t\t<h1 \n\t\t\t\tclass=\"mn-b-semi\" \n\t\t\t\tv-html=\"t('title')\"\n\t\t\t/>\n\n\t\t\t<p \n\t\t\t\tclass=\"mn-b-big p-medium t-transp\" \n\t\t\t\tv-html=\"t('description')\"\n\t\t\t/>\n\t\t\t\n\t\t\t<FieldBig \n\t\t\t\t:input=\"mood\" \n\t\t :typingSpeed=\"100\"\n\t\t :loopTyping=\"true\"\n\t\t :enableTyping=\"true\"\n\t\t :placeholder=\"t('placeholder')\"\n\t\t :action=\"t('action')\"\n\t\t @update:input=\"mood = $event\"\n\t\t @action=\"router.push({name: 'Product Recommmendation', query: {mood: mood}})\"\n\t\t\t\tclass=\"mn-b-big pd-big bg-dark-transp-50 bg-blur-thin w-100 w-max-40r\"\n\t\t\t/>\n\n\t\t\t<p \n\t\t\t\tclass=\"w-m-60r t-transp mn-b-semi p-regular\" \n\t\t\t\tv-html=\"t('subdescription')\"\n\t\t\t/>\n\n\t\t\t<div style=\"max-width: 50rem;\" class=\"w-100 h-max gap-thin cols-6\">\n\n\t\t\t\t<button \n\t\t\t\t\tv-for=\"(preset,index) in presets\" \n\t\t\t\t\t:key=\"preset\" \n\t\t\t\t\t@click.stop=\"router.push({name: 'ProductRecommmendation', query: {mood: preset}})\"\n\t\t\t\t\tclass=\"\n\t\t\t\t\t\tuppercase \n\t\t\t\t\t\tpd-thin\n\t\t\t\t\t\tt-medium\n\t\t\t\t\t\tflex-center\n\t\t\t\t\t\tflex-column\n\t\t\t\t\t\tflex-nowrap\n\t\t\t\t\t\tflex\n\t\t\t\t\t\tbg-dark-transp-50 \n\t\t\t\t\t\tbg-blur-thin\n\t\t\t\t\t\tradius-semi\n\t\t\t\t\t\tcursor-pointer\n\t\t\t\t\t\ttransition-elastic\n\t\t\t\t\t\thover-easeInOut-1 \n\t\t\t\t\t\"\n\t\t\t\t>\n\t\t\t\t\t<img loading=\"lazy\" \n\t\t\t\t\t\t:src=\"(FILE_SERVER_URL || '') + '/icons/moods/' + preset + '.svg'\" \n\t\t\t\t\t\tclass=\"w-100\"\n\t\t\t\t\t/>\n\n\t\t\t\t\t<span class=\"t-white\"> \n\t\t\t\t\t\t{{ t(`presets.` + preset) }}\n\t\t\t\t\t</span>\n\t\t\t\t</button>\n\n\t\t\t</div>\n\n\t\t</div>\n\n\t\t<!-- <Shader class=\"w-100 h-100 flex flex-center pos-absolute pos-t-0 pos-r-0 z-index-0\"/> -->\n\n <!-- <div class=\"w-100 h-100 flex flex-center pos-absolute pos-t-0 pos-r-0 z-index-0\">\n \t <img src=\"/spiral.webp\" loading=\"lazy\" alt=\"\" class=\"spiral\"/>\n </div> -->\n\n\t</div>\n</template>\n\n<style style=\"scoped\">\n.spiral {\n object-fit: cover;\n width: 100rem;\n height: 100rem;\n position: absolute;\n top: 50%;\n left: 50%;\n opacity: 0.066;\n transform: translate(-50%, -50%) rotate(0deg);\n transform-origin: center center;\n animation: spin 5s linear infinite;\n}\n\n@keyframes spin {\n 0% {\n transform: translate(-50%, -50%) rotate(0deg);\n }\n 100% {\n transform: translate(-50%, -50%) rotate(360deg);\n }\n}\n</style>"],"names":["useRouter","useI18n","ref"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAWC,UAAM,SAASA,UAAAA,UAAS;AAExB,UAAM,OAAO;AAAA,MACV,UAAU;AAAA,QACR,MAAM;AAAA,UACN,SAAS;AAAA,UACT,eAAe;AAAA,UACf,oBAAoB;AAAA,YACnB;AAAA,YACA;AAAA,YACA;AAAA,UACP;AAAA,UACM,kBAAkB;AAAA,UAClB,WAAW;AAAA,YACT,SAAS;AAAA,YACT,YAAY;AAAA,YACZ,UAAU;AAAA,YACV,UAAU;AAAA,YACV,UAAU;AAAA,YACV,YAAY;AAAA,UACpB;AAAA,UACM,eAAe;AAAA,UACf,UAAU;AAAA,QAChB;AAAA,QACI,MAAM;AAAA,UACJ,SAAS;AAAA,UACT,eAAe;AAAA,UACf,oBAAoB;AAAA,YACnB;AAAA,YACA;AAAA,YACA;AAAA,UACP;AAAA,UACO,WAAW;AAAA,YACV,SAAS;AAAA,YACT,YAAY;AAAA,YACZ,UAAU;AAAA,YACV,UAAU;AAAA,YACV,UAAU;AAAA,YACV,YAAY;AAAA,UACpB;AAAA,UACM,kBAAkB;AAAA,UAClB,eAAe;AAAA,UACf,UAAU;AAAA,QAChB;AAAA,MACA;AAAA,IACA;AAEC,UAAM,EAAE,GAAG,GAAE,IAAKC,QAAAA,QAAQ,IAAI;AAE9B,QAAI,OAAOC,IAAAA,IAAI,EAAE;AAEjB,UAAM,UAAU,CAAC,SAAQ,YAAW,UAAS,UAAS,UAAS,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -75,7 +75,7 @@ const _sfc_main = {
75
75
  innerHTML: unref(t)("title")
76
76
  }, null, 8, _hoisted_3),
77
77
  createElementVNode("p", {
78
- class: "mn-b-big p-semi t-transp",
78
+ class: "mn-b-big p-medium t-transp",
79
79
  innerHTML: unref(t)("description")
80
80
  }, null, 8, _hoisted_4),
81
81
  createVNode(_sfc_main$1, {
@@ -90,7 +90,7 @@ const _sfc_main = {
90
90
  class: "mn-b-big pd-big bg-dark-transp-50 bg-blur-thin w-100 w-max-40r"
91
91
  }, null, 8, ["input", "placeholder", "action"]),
92
92
  createElementVNode("p", {
93
- class: "w-m-60r t-transp mn-b-semi p-medium",
93
+ class: "w-m-60r t-transp mn-b-semi p-regular",
94
94
  innerHTML: unref(t)("subdescription")
95
95
  }, null, 8, _hoisted_5),
96
96
  createElementVNode("div", _hoisted_6, [
@@ -1 +1 @@
1
- {"version":3,"file":"HeroRecommendation.vue.js","sources":["../../../../../../../src/modules/products/components/sections/HeroRecommendation.vue"],"sourcesContent":["<script setup>\n\timport { ref, onMounted } from 'vue'\n\n\timport FieldBig from \"@martyrs/src/components/FieldBig/FieldBig.vue\";\n\timport Shader from \"@martyrs/src/components/Shader/Shader.vue\";\n\n\timport { useRouter } from 'vue-router'\n\timport { useI18n } from 'vue-i18n'\n\n\timport * as products from '@martyrs/src/modules/products/store/products.js';\n\n\tconst router = useRouter()\n\n\tconst text = {\n messages: {\n \"en\": {\n\t\t \"title\": \"Increase Your High <br><b class='t-main'>Boosted by AI Budtender</b>\",\n\t\t \"description\": \"Just tell us what you're want, and Weeder will find your ideal match.\",\n\t\t \"placeholderTexts\": [\n\t\t \t'Lowest THC, please!',\n\t\t \t'Something with banana flavors?',\n\t\t \t\"I'm in the mood for trippy vibes.\"\n\t\t ],\n\t\t \"subdescription\": \"AI Curated Recommendations for Your Mood:\",\n\t\t \"presets\": {\n\t\t \"sleep\": \"sleep\",\n\t\t \"creative\": \"creative\",\n\t\t \"giggly\": \"giggly\",\n\t\t \"libido\": \"libido\",\n\t\t \"trippy\": \"trippy\",\n\t\t \"euphoric\": \"euphoric\"\n\t\t },\n\t\t \"placeholder\": \"Tell us what you're after...\",\n\t\t \"action\": \"Transmit\"\n\t\t },\n\t\t \"ru\": {\n\t\t \"title\": \"Персональный Накур,<br><b class='t-main'>Напрямую от AI</b>\",\n\t\t \"description\": \"AI на страже твоего релакса, бро. Мы подбираем самые космические товары с учетом твоего желаемого настроения:\",\n\t\t \"placeholderTexts\": [\n\t\t \t'Я хочу самый низкий THC',\n\t\t \t'Я хочу чего-нибудь бананового',\n\t\t \t'Я хочу курнуть хейза'\n\t\t ],\n\t\t \t \"presets\": {\n\t\t \"sleep\": \"сон\",\n\t\t \"creative\": \"креатив\",\n\t\t \"giggly\": \"смех\",\n\t\t \"libido\": \"либидо\",\n\t\t \"trippy\": \"трип\",\n\t\t \"euphoric\": \"кайф\"\n\t\t },\n\t\t \"subdescription\": \"Или выберите тег, и наш AI направит тебя к самым крутым вариантам:\",\n\t\t \"placeholder\": \"Опиши свой желаемый хай, bro...\",\n\t\t \"action\": \"Передать\"\n\t\t }\n\t\t}\t\n\t}\n\n\tconst { t, rt } = useI18n(text)\n\n\tlet mood = ref('')\n\n\tconst presets = ['sleep','creative','giggly','libido','trippy','euphoric'];\n\n\tasync function submitMood(presetMood = null) {\n\t\tconst moodToSend = presetMood || mood.value;\n\t\tawait products.actions.submitMood(moodToSend);\n\t}\n\n\t\n</script>\n\n<template>\n\t<div \n\t\tclass=\"pd-big bg-black t-white pos-relative o-hidden \"\n\t>\n\t\t<div class=\"flex-column flex-center flex t-center pos-relative z-index-1\">\n\t\t\t\n\t\t\t<h1 \n\t\t\t\tclass=\"mn-b-semi\" \n\t\t\t\tv-html=\"t('title')\"\n\t\t\t/>\n\n\t\t\t<p \n\t\t\t\tclass=\"mn-b-big p-semi t-transp\" \n\t\t\t\tv-html=\"t('description')\"\n\t\t\t/>\n\t\t\t\n\t\t\t<FieldBig \n\t\t\t\t:input=\"mood\" \n\t\t :typingSpeed=\"100\"\n\t\t :loopTyping=\"true\"\n\t\t :enableTyping=\"true\"\n\t\t :placeholder=\"t('placeholder')\"\n\t\t :action=\"t('action')\"\n\t\t @update:input=\"mood = $event\"\n\t\t @action=\"router.push({name: 'Product Recommmendation', query: {mood: mood}})\"\n\t\t\t\tclass=\"mn-b-big pd-big bg-dark-transp-50 bg-blur-thin w-100 w-max-40r\"\n\t\t\t/>\n\n\t\t\t<p \n\t\t\t\tclass=\"w-m-60r t-transp mn-b-semi p-medium\" \n\t\t\t\tv-html=\"t('subdescription')\"\n\t\t\t/>\n\n\t\t\t<div style=\"max-width: 50rem;\" class=\"w-100 h-max gap-thin cols-6\">\n\n\t\t\t\t<button \n\t\t\t\t\tv-for=\"(preset,index) in presets\" \n\t\t\t\t\t:key=\"preset\" \n\t\t\t\t\t@click.stop=\"router.push({name: 'ProductRecommmendation', query: {mood: preset}})\"\n\t\t\t\t\tclass=\"\n\t\t\t\t\t\tuppercase \n\t\t\t\t\t\tpd-thin\n\t\t\t\t\t\tt-medium\n\t\t\t\t\t\tflex-center\n\t\t\t\t\t\tflex-column\n\t\t\t\t\t\tflex-nowrap\n\t\t\t\t\t\tflex\n\t\t\t\t\t\tbg-dark-transp-50 \n\t\t\t\t\t\tbg-blur-thin\n\t\t\t\t\t\tradius-semi\n\t\t\t\t\t\tcursor-pointer\n\t\t\t\t\t\ttransition-elastic\n\t\t\t\t\t\thover-easeInOut-1 \n\t\t\t\t\t\"\n\t\t\t\t>\n\t\t\t\t\t<img loading=\"lazy\" \n\t\t\t\t\t\t:src=\"(FILE_SERVER_URL || '') + '/icons/moods/' + preset + '.svg'\" \n\t\t\t\t\t\tclass=\"w-100\"\n\t\t\t\t\t/>\n\n\t\t\t\t\t<span class=\"t-white\"> \n\t\t\t\t\t\t{{ t(`presets.` + preset) }}\n\t\t\t\t\t</span>\n\t\t\t\t</button>\n\n\t\t\t</div>\n\n\t\t</div>\n\n\t\t<!-- <Shader class=\"w-100 h-100 flex flex-center pos-absolute pos-t-0 pos-r-0 z-index-0\"/> -->\n\n <!-- <div class=\"w-100 h-100 flex flex-center pos-absolute pos-t-0 pos-r-0 z-index-0\">\n \t <img src=\"/spiral.webp\" loading=\"lazy\" alt=\"\" class=\"spiral\"/>\n </div> -->\n\n\t</div>\n</template>\n\n<style style=\"scoped\">\n.spiral {\n object-fit: cover;\n width: 100rem;\n height: 100rem;\n position: absolute;\n top: 50%;\n left: 50%;\n opacity: 0.066;\n transform: translate(-50%, -50%) rotate(0deg);\n transform-origin: center center;\n animation: spin 5s linear infinite;\n}\n\n@keyframes spin {\n 0% {\n transform: translate(-50%, -50%) rotate(0deg);\n }\n 100% {\n transform: translate(-50%, -50%) rotate(360deg);\n }\n}\n</style>"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;AAWC,UAAM,SAAS,UAAS;AAExB,UAAM,OAAO;AAAA,MACV,UAAU;AAAA,QACR,MAAM;AAAA,UACN,SAAS;AAAA,UACT,eAAe;AAAA,UACf,oBAAoB;AAAA,YACnB;AAAA,YACA;AAAA,YACA;AAAA,UACP;AAAA,UACM,kBAAkB;AAAA,UAClB,WAAW;AAAA,YACT,SAAS;AAAA,YACT,YAAY;AAAA,YACZ,UAAU;AAAA,YACV,UAAU;AAAA,YACV,UAAU;AAAA,YACV,YAAY;AAAA,UACpB;AAAA,UACM,eAAe;AAAA,UACf,UAAU;AAAA,QAChB;AAAA,QACI,MAAM;AAAA,UACJ,SAAS;AAAA,UACT,eAAe;AAAA,UACf,oBAAoB;AAAA,YACnB;AAAA,YACA;AAAA,YACA;AAAA,UACP;AAAA,UACO,WAAW;AAAA,YACV,SAAS;AAAA,YACT,YAAY;AAAA,YACZ,UAAU;AAAA,YACV,UAAU;AAAA,YACV,UAAU;AAAA,YACV,YAAY;AAAA,UACpB;AAAA,UACM,kBAAkB;AAAA,UAClB,eAAe;AAAA,UACf,UAAU;AAAA,QAChB;AAAA,MACA;AAAA,IACA;AAEC,UAAM,EAAE,GAAG,GAAE,IAAK,QAAQ,IAAI;AAE9B,QAAI,OAAO,IAAI,EAAE;AAEjB,UAAM,UAAU,CAAC,SAAQ,YAAW,UAAS,UAAS,UAAS,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"HeroRecommendation.vue.js","sources":["../../../../../../../src/modules/products/components/sections/HeroRecommendation.vue"],"sourcesContent":["<script setup>\n\timport { ref, onMounted } from 'vue'\n\n\timport FieldBig from \"@martyrs/src/components/FieldBig/FieldBig.vue\";\n\timport Shader from \"@martyrs/src/components/Shader/Shader.vue\";\n\n\timport { useRouter } from 'vue-router'\n\timport { useI18n } from 'vue-i18n'\n\n\timport * as products from '@martyrs/src/modules/products/store/products.js';\n\n\tconst router = useRouter()\n\n\tconst text = {\n messages: {\n \"en\": {\n\t\t \"title\": \"Increase Your High <br><b class='t-main'>Boosted by AI Budtender</b>\",\n\t\t \"description\": \"Just tell us what you're want, and Weeder will find your ideal match.\",\n\t\t \"placeholderTexts\": [\n\t\t \t'Lowest THC, please!',\n\t\t \t'Something with banana flavors?',\n\t\t \t\"I'm in the mood for trippy vibes.\"\n\t\t ],\n\t\t \"subdescription\": \"AI Curated Recommendations for Your Mood:\",\n\t\t \"presets\": {\n\t\t \"sleep\": \"sleep\",\n\t\t \"creative\": \"creative\",\n\t\t \"giggly\": \"giggly\",\n\t\t \"libido\": \"libido\",\n\t\t \"trippy\": \"trippy\",\n\t\t \"euphoric\": \"euphoric\"\n\t\t },\n\t\t \"placeholder\": \"Tell us what you're after...\",\n\t\t \"action\": \"Transmit\"\n\t\t },\n\t\t \"ru\": {\n\t\t \"title\": \"Персональный Накур,<br><b class='t-main'>Напрямую от AI</b>\",\n\t\t \"description\": \"AI на страже твоего релакса, бро. Мы подбираем самые космические товары с учетом твоего желаемого настроения:\",\n\t\t \"placeholderTexts\": [\n\t\t \t'Я хочу самый низкий THC',\n\t\t \t'Я хочу чего-нибудь бананового',\n\t\t \t'Я хочу курнуть хейза'\n\t\t ],\n\t\t \t \"presets\": {\n\t\t \"sleep\": \"сон\",\n\t\t \"creative\": \"креатив\",\n\t\t \"giggly\": \"смех\",\n\t\t \"libido\": \"либидо\",\n\t\t \"trippy\": \"трип\",\n\t\t \"euphoric\": \"кайф\"\n\t\t },\n\t\t \"subdescription\": \"Или выберите тег, и наш AI направит тебя к самым крутым вариантам:\",\n\t\t \"placeholder\": \"Опиши свой желаемый хай, bro...\",\n\t\t \"action\": \"Передать\"\n\t\t }\n\t\t}\t\n\t}\n\n\tconst { t, rt } = useI18n(text)\n\n\tlet mood = ref('')\n\n\tconst presets = ['sleep','creative','giggly','libido','trippy','euphoric'];\n\n\tasync function submitMood(presetMood = null) {\n\t\tconst moodToSend = presetMood || mood.value;\n\t\tawait products.actions.submitMood(moodToSend);\n\t}\n\n\t\n</script>\n\n<template>\n\t<div \n\t\tclass=\"pd-big bg-black t-white pos-relative o-hidden \"\n\t>\n\t\t<div class=\"flex-column flex-center flex t-center pos-relative z-index-1\">\n\t\t\t\n\t\t\t<h1 \n\t\t\t\tclass=\"mn-b-semi\" \n\t\t\t\tv-html=\"t('title')\"\n\t\t\t/>\n\n\t\t\t<p \n\t\t\t\tclass=\"mn-b-big p-medium t-transp\" \n\t\t\t\tv-html=\"t('description')\"\n\t\t\t/>\n\t\t\t\n\t\t\t<FieldBig \n\t\t\t\t:input=\"mood\" \n\t\t :typingSpeed=\"100\"\n\t\t :loopTyping=\"true\"\n\t\t :enableTyping=\"true\"\n\t\t :placeholder=\"t('placeholder')\"\n\t\t :action=\"t('action')\"\n\t\t @update:input=\"mood = $event\"\n\t\t @action=\"router.push({name: 'Product Recommmendation', query: {mood: mood}})\"\n\t\t\t\tclass=\"mn-b-big pd-big bg-dark-transp-50 bg-blur-thin w-100 w-max-40r\"\n\t\t\t/>\n\n\t\t\t<p \n\t\t\t\tclass=\"w-m-60r t-transp mn-b-semi p-regular\" \n\t\t\t\tv-html=\"t('subdescription')\"\n\t\t\t/>\n\n\t\t\t<div style=\"max-width: 50rem;\" class=\"w-100 h-max gap-thin cols-6\">\n\n\t\t\t\t<button \n\t\t\t\t\tv-for=\"(preset,index) in presets\" \n\t\t\t\t\t:key=\"preset\" \n\t\t\t\t\t@click.stop=\"router.push({name: 'ProductRecommmendation', query: {mood: preset}})\"\n\t\t\t\t\tclass=\"\n\t\t\t\t\t\tuppercase \n\t\t\t\t\t\tpd-thin\n\t\t\t\t\t\tt-medium\n\t\t\t\t\t\tflex-center\n\t\t\t\t\t\tflex-column\n\t\t\t\t\t\tflex-nowrap\n\t\t\t\t\t\tflex\n\t\t\t\t\t\tbg-dark-transp-50 \n\t\t\t\t\t\tbg-blur-thin\n\t\t\t\t\t\tradius-semi\n\t\t\t\t\t\tcursor-pointer\n\t\t\t\t\t\ttransition-elastic\n\t\t\t\t\t\thover-easeInOut-1 \n\t\t\t\t\t\"\n\t\t\t\t>\n\t\t\t\t\t<img loading=\"lazy\" \n\t\t\t\t\t\t:src=\"(FILE_SERVER_URL || '') + '/icons/moods/' + preset + '.svg'\" \n\t\t\t\t\t\tclass=\"w-100\"\n\t\t\t\t\t/>\n\n\t\t\t\t\t<span class=\"t-white\"> \n\t\t\t\t\t\t{{ t(`presets.` + preset) }}\n\t\t\t\t\t</span>\n\t\t\t\t</button>\n\n\t\t\t</div>\n\n\t\t</div>\n\n\t\t<!-- <Shader class=\"w-100 h-100 flex flex-center pos-absolute pos-t-0 pos-r-0 z-index-0\"/> -->\n\n <!-- <div class=\"w-100 h-100 flex flex-center pos-absolute pos-t-0 pos-r-0 z-index-0\">\n \t <img src=\"/spiral.webp\" loading=\"lazy\" alt=\"\" class=\"spiral\"/>\n </div> -->\n\n\t</div>\n</template>\n\n<style style=\"scoped\">\n.spiral {\n object-fit: cover;\n width: 100rem;\n height: 100rem;\n position: absolute;\n top: 50%;\n left: 50%;\n opacity: 0.066;\n transform: translate(-50%, -50%) rotate(0deg);\n transform-origin: center center;\n animation: spin 5s linear infinite;\n}\n\n@keyframes spin {\n 0% {\n transform: translate(-50%, -50%) rotate(0deg);\n }\n 100% {\n transform: translate(-50%, -50%) rotate(360deg);\n }\n}\n</style>"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;AAWC,UAAM,SAAS,UAAS;AAExB,UAAM,OAAO;AAAA,MACV,UAAU;AAAA,QACR,MAAM;AAAA,UACN,SAAS;AAAA,UACT,eAAe;AAAA,UACf,oBAAoB;AAAA,YACnB;AAAA,YACA;AAAA,YACA;AAAA,UACP;AAAA,UACM,kBAAkB;AAAA,UAClB,WAAW;AAAA,YACT,SAAS;AAAA,YACT,YAAY;AAAA,YACZ,UAAU;AAAA,YACV,UAAU;AAAA,YACV,UAAU;AAAA,YACV,YAAY;AAAA,UACpB;AAAA,UACM,eAAe;AAAA,UACf,UAAU;AAAA,QAChB;AAAA,QACI,MAAM;AAAA,UACJ,SAAS;AAAA,UACT,eAAe;AAAA,UACf,oBAAoB;AAAA,YACnB;AAAA,YACA;AAAA,YACA;AAAA,UACP;AAAA,UACO,WAAW;AAAA,YACV,SAAS;AAAA,YACT,YAAY;AAAA,YACZ,UAAU;AAAA,YACV,UAAU;AAAA,YACV,UAAU;AAAA,YACV,YAAY;AAAA,UACpB;AAAA,UACM,kBAAkB;AAAA,UAClB,eAAe;AAAA,UACf,UAAU;AAAA,QAChB;AAAA,MACA;AAAA,IACA;AAEC,UAAM,EAAE,GAAG,GAAE,IAAK,QAAQ,IAAI;AAE9B,QAAI,OAAO,IAAI,EAAE;AAEjB,UAAM,UAAU,CAAC,SAAQ,YAAW,UAAS,UAAS,UAAS,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -125,7 +125,7 @@ const _sfc_main = {
125
125
  }, {
126
126
  default: vue.withCtx(() => [
127
127
  isVariantAvailable.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_9, [
128
- vue.createVNode(IconShopcartAdd.default, { class: "i-semi" }),
128
+ vue.createVNode(IconShopcartAdd.default, { class: "i-medium" }),
129
129
  vue.createElementVNode("span", _hoisted_10, vue.toDisplayString(vue.unref(t)("addtoorder")), 1)
130
130
  ])) : (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 1 }, [
131
131
  !selectedVariant.value && __props.productVariants.length > 1 ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_11, "Select variant")) : (vue.openBlock(), vue.createElementBlock("span", _hoisted_12, "Out of Stock"))
@@ -1 +1 @@
1
- {"version":3,"file":"ProductConfigurator.vue.cjs","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-semi\"/>\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":["useI18n","ref","computed"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsFA,UAAM,QAAQ;AAQd,UAAM,QAAQ;AACd,UAAM,EAAE,EAAC,IAAKA,QAAAA,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,cAAa,GAAI,IAAI,EAAE,YAAY,qBAAoB,EAAE,EAAE,CAAE;AAEnH,UAAM,kBAAkBC,IAAAA,IAAI,IAAI;AAChC,UAAM,WAAWA,IAAAA,IAAI,CAAC;AAGtB,UAAM,qBAAqBC,IAAAA;AAAAA,MAAS,MAClC,gBAAgB,QAAQ,gBAAgB,MAAM,YAC9C,MAAM,gBAAgB,WAAW,IAAI,MAAM,gBAAgB,CAAC,EAAE,YAAY;AAAA,IAC5E;AAEA,UAAM,cAAcA,IAAAA;AAAAA,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.cjs","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":["useI18n","ref","computed"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsFA,UAAM,QAAQ;AAQd,UAAM,QAAQ;AACd,UAAM,EAAE,EAAC,IAAKA,QAAAA,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,cAAa,GAAI,IAAI,EAAE,YAAY,qBAAoB,EAAE,EAAE,CAAE;AAEnH,UAAM,kBAAkBC,IAAAA,IAAI,IAAI;AAChC,UAAM,WAAWA,IAAAA,IAAI,CAAC;AAGtB,UAAM,qBAAqBC,IAAAA;AAAAA,MAAS,MAClC,gBAAgB,QAAQ,gBAAgB,MAAM,YAC9C,MAAM,gBAAgB,WAAW,IAAI,MAAM,gBAAgB,CAAC,EAAE,YAAY;AAAA,IAC5E;AAEA,UAAM,cAAcA,IAAAA;AAAAA,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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -123,7 +123,7 @@ const _sfc_main = {
123
123
  }, {
124
124
  default: withCtx(() => [
125
125
  isVariantAvailable.value ? (openBlock(), createElementBlock("div", _hoisted_9, [
126
- createVNode(_sfc_main$5, { class: "i-semi" }),
126
+ createVNode(_sfc_main$5, { class: "i-medium" }),
127
127
  createElementVNode("span", _hoisted_10, toDisplayString(unref(t)("addtoorder")), 1)
128
128
  ])) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [
129
129
  !selectedVariant.value && __props.productVariants.length > 1 ? (openBlock(), createElementBlock("span", _hoisted_11, "Select variant")) : (openBlock(), createElementBlock("span", _hoisted_12, "Out of Stock"))
@@ -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-semi\"/>\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=\"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -140,7 +140,7 @@ const _sfc_main = {
140
140
  submit: canAddToCart.value ? addSelectedToCart : void 0
141
141
  }, {
142
142
  default: vue.withCtx(() => [
143
- vue.createVNode(IconShopcartAdd.default, { class: "i-semi" }),
143
+ vue.createVNode(IconShopcartAdd.default, { class: "i-medium" }),
144
144
  _cache[2] || (_cache[2] = vue.createElementVNode("span", null, "Add to Cart", -1))
145
145
  ]),
146
146
  _: 1
@@ -1 +1 @@
1
- {"version":3,"file":"ProductsRecommended.vue.cjs","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({\n name: 'Organization_Product', \n params: { \n _id: product.owner.target, \n product: product._id \n } \n })\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-semi\"/>\n <span>Add to Cart</span>\n </Button>\n </div>\n </div>\n </div>\n</template>"],"names":["useRouter","getCurrentInstance","ref","computed","shopcart.state","shopcart.actions"],"mappings":"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"}
1
+ {"version":3,"file":"ProductsRecommended.vue.cjs","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({\n name: 'Organization_Product', \n params: { \n _id: product.owner.target, \n product: product._id \n } \n })\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":["useRouter","getCurrentInstance","ref","computed","shopcart.state","shopcart.actions"],"mappings":"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"}
@@ -138,7 +138,7 @@ const _sfc_main = {
138
138
  submit: canAddToCart.value ? addSelectedToCart : void 0
139
139
  }, {
140
140
  default: withCtx(() => [
141
- createVNode(_sfc_main$5, { class: "i-semi" }),
141
+ createVNode(_sfc_main$5, { class: "i-medium" }),
142
142
  _cache[2] || (_cache[2] = createElementVNode("span", null, "Add to Cart", -1))
143
143
  ]),
144
144
  _: 1