@ozdao/martyrs 0.2.564 → 0.2.566

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 (366) hide show
  1. package/dist/abac-BPl9Bmf9.js +1527 -0
  2. package/dist/builder.js +51 -39
  3. package/dist/{common.schema-GFSlNJo7.js → common.schema-DswiUXKB.js} +1 -1
  4. package/dist/community.server.js +48 -9
  5. package/dist/core.server.js +6 -4
  6. package/dist/{crud-C7FSTUes.js → crud-q1ye5IhV.js} +7 -7
  7. package/dist/events.server.js +3 -3
  8. package/dist/gallery.server.js +2 -2
  9. package/dist/inventory.server.js +4 -6
  10. package/dist/{main-CmjWiDVF.js → main-B9o1iBAZ.js} +1279 -1287
  11. package/dist/marketplace.server.js +1 -1
  12. package/dist/martyrs/dist/main-B9o1iBAZ.js +943 -0
  13. package/dist/martyrs/dist/main-B9o1iBAZ.js.map +1 -0
  14. package/dist/martyrs/dist/web-BF3ijvEr.js +55 -0
  15. package/dist/martyrs/dist/web-BF3ijvEr.js.map +1 -0
  16. package/dist/martyrs/src/components/BottomSheet/BottomSheet.vue.js +96 -0
  17. package/dist/martyrs/src/components/BottomSheet/BottomSheet.vue.js.map +1 -0
  18. package/dist/martyrs/src/components/Button/{Button.vue.js → Button.vue2.js} +36 -45
  19. package/dist/martyrs/src/components/Button/Button.vue2.js.map +1 -0
  20. package/dist/martyrs/src/components/Feed/Carousel.vue.js +1 -1
  21. package/dist/martyrs/src/components/Feed/Feed.vue.js +1 -1
  22. package/dist/martyrs/src/components/Field/{Field.vue2.js → Field.vue.js} +2 -2
  23. package/dist/martyrs/src/components/Field/Field.vue.js.map +1 -0
  24. package/dist/martyrs/src/components/FieldBig/FieldBig.vue.js +2 -2
  25. package/dist/martyrs/src/components/FieldPhone/FieldPhone.vue.js +1 -1
  26. package/dist/martyrs/src/components/FieldPhone/FieldPhone.vue.js.map +1 -1
  27. package/dist/martyrs/src/components/Loader/{Loader.vue2.js → Loader.vue.js} +3 -4
  28. package/dist/martyrs/src/components/Loader/Loader.vue.js.map +1 -0
  29. package/dist/martyrs/src/components/LocationMarker/LocationMarker.vue.js +1 -1
  30. package/dist/martyrs/src/components/Media/Media.vue.js +1 -1
  31. package/dist/martyrs/src/components/Menu/{Menu.vue.js → Menu.vue2.js} +2 -2
  32. package/dist/martyrs/src/components/Menu/Menu.vue2.js.map +1 -0
  33. package/dist/martyrs/src/components/Select/{Select.vue2.js → Select.vue.js} +2 -2
  34. package/dist/martyrs/src/components/Select/Select.vue.js.map +1 -0
  35. package/dist/martyrs/src/components/SelectMulti/{SelectMulti.vue.js → SelectMulti.vue2.js} +2 -2
  36. package/dist/martyrs/src/components/SelectMulti/SelectMulti.vue2.js.map +1 -0
  37. package/dist/martyrs/src/components/Tree/Tree.vue.js +6 -3
  38. package/dist/martyrs/src/components/Tree/Tree.vue.js.map +1 -1
  39. package/dist/martyrs/src/components/UploadImage/UploadImage.vue.js +1 -1
  40. package/dist/martyrs/src/components/UploadImageMultiple/UploadImageMultiple.vue.js +1 -1
  41. package/dist/martyrs/src/modules/auth/auth.client.js +10 -7
  42. package/dist/martyrs/src/modules/auth/auth.client.js.map +1 -1
  43. package/dist/martyrs/src/modules/auth/views/components/pages/EnterCode.vue.js +1 -1
  44. package/dist/martyrs/src/modules/auth/views/components/pages/EnterPassword.vue.js +2 -2
  45. package/dist/martyrs/src/modules/auth/views/components/pages/Invite.vue.js +2 -2
  46. package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.js +3 -3
  47. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEdit.vue.js +1 -1
  48. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditAccount.vue.js +1 -1
  49. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditProfile.vue.js +2 -2
  50. package/dist/martyrs/src/modules/auth/views/components/pages/ResetPassword.vue.js +2 -2
  51. package/dist/martyrs/src/modules/auth/views/components/pages/SignIn.vue.js +13 -13
  52. package/dist/martyrs/src/modules/auth/views/components/pages/SignIn.vue.js.map +1 -1
  53. package/dist/martyrs/src/modules/auth/views/components/pages/SignUp.vue.js +2 -2
  54. package/dist/martyrs/src/modules/auth/views/components/sections/ProfileEditCredentials.vue.js +2 -2
  55. package/dist/martyrs/src/modules/auth/views/router/auth.router.js +116 -0
  56. package/dist/martyrs/src/modules/auth/views/router/auth.router.js.map +1 -0
  57. package/dist/martyrs/src/modules/auth/views/router/users.router.js +180 -0
  58. package/dist/martyrs/src/modules/auth/views/router/users.router.js.map +1 -0
  59. package/dist/martyrs/src/modules/backoffice/components/partials/Sidebar.vue.js +4 -4
  60. package/dist/martyrs/src/modules/backoffice/components/partials/Sidebar.vue.js.map +1 -1
  61. package/dist/martyrs/src/modules/community/components/layouts/Community.vue.js +1 -1
  62. package/dist/martyrs/src/modules/community/components/pages/BlogPost.vue.js +2 -2
  63. package/dist/martyrs/src/modules/community/components/pages/CreateBlogPost.vue.js +2 -2
  64. package/dist/martyrs/src/modules/constructor/components/elements/Card.vue.js +1 -1
  65. package/dist/martyrs/src/modules/constructor/components/elements/Embed.vue.js +1 -1
  66. package/dist/martyrs/src/modules/core/locales/en.js +45 -0
  67. package/dist/martyrs/src/modules/core/locales/en.js.map +1 -1
  68. package/dist/martyrs/src/modules/core/locales/ru.js +45 -0
  69. package/dist/martyrs/src/modules/core/locales/ru.js.map +1 -1
  70. package/dist/martyrs/src/modules/core/views/classes/i18n.manager.js +9 -0
  71. package/dist/martyrs/src/modules/core/views/classes/i18n.manager.js.map +1 -1
  72. package/dist/martyrs/src/modules/core/views/components/blocks/BlockSearch.vue.js +1 -1
  73. package/dist/martyrs/src/modules/core/views/components/blocks/CardHeader.vue.js +1 -1
  74. package/dist/martyrs/src/modules/core/views/components/blocks/PopupAuth.vue.js +1 -1
  75. package/dist/martyrs/src/modules/core/views/components/blocks/PopupDateSelector.vue.js +2 -2
  76. package/dist/martyrs/src/modules/core/views/components/layouts/App.vue.js +1 -1
  77. package/dist/martyrs/src/modules/core/views/components/layouts/Client.vue.js +3 -2
  78. package/dist/martyrs/src/modules/core/views/components/layouts/Client.vue.js.map +1 -1
  79. package/dist/martyrs/src/modules/core/views/components/partials/Header.vue.js +2 -2
  80. package/dist/martyrs/src/modules/core/views/components/partials/NavigationBar.vue.js +1 -1
  81. package/dist/martyrs/src/modules/core/views/components/sections/Walkthrough.vue.js +1 -1
  82. package/dist/martyrs/src/modules/core/views/components/sections/filters/FilterRange.vue.js +1 -1
  83. package/dist/martyrs/src/modules/core/views/mixins/mixins.js +1 -2
  84. package/dist/martyrs/src/modules/core/views/mixins/mixins.js.map +1 -1
  85. package/dist/martyrs/src/modules/core/views/router/addRoutes.js +6 -1
  86. package/dist/martyrs/src/modules/core/views/router/addRoutes.js.map +1 -1
  87. package/dist/martyrs/src/modules/events/components/elements/ButtonCheck.vue.js +2 -2
  88. package/dist/martyrs/src/modules/events/components/elements/ButtonJoin.vue.js +1 -1
  89. package/dist/martyrs/src/modules/events/components/pages/EditEvent.vue.js +4 -4
  90. package/dist/martyrs/src/modules/events/components/pages/EditEventTickets.vue.js +2 -2
  91. package/dist/martyrs/src/modules/events/components/pages/Event.vue.js +2 -2
  92. package/dist/martyrs/src/modules/events/components/sections/EditTickets.vue.js +2 -2
  93. package/dist/martyrs/src/modules/events/components/sections/Feed.vue.js +1 -1
  94. package/dist/martyrs/src/modules/events/components/sections/List.vue.js +1 -1
  95. package/dist/martyrs/src/modules/events/events.client.js +15 -12
  96. package/dist/martyrs/src/modules/events/events.client.js.map +1 -1
  97. package/dist/martyrs/src/modules/gallery/components/sections/BackofficeGallery.vue.js +4 -4
  98. package/dist/martyrs/src/modules/inventory/components/forms/AdjustmentForm.vue.js +3 -3
  99. package/dist/martyrs/src/modules/inventory/components/forms/ColumnSettingsMenu.vue.js +1 -1
  100. package/dist/martyrs/src/modules/inventory/components/forms/HistoryView.vue.js +1 -1
  101. package/dist/martyrs/src/modules/inventory/components/forms/StockAlertsForm.vue.js +3 -3
  102. package/dist/martyrs/src/modules/inventory/components/pages/InventoryEdit.vue.js +5 -5
  103. package/dist/martyrs/src/modules/inventory/components/pages/InventoryEdit.vue.js.map +1 -1
  104. package/dist/martyrs/src/modules/marketplace/views/components/pages/Marketplace.vue.js +1 -1
  105. package/dist/martyrs/src/modules/marketplace/views/components/sections/SectionMenu.vue.js +1 -1
  106. package/dist/martyrs/src/modules/music/components/blocks/ActionButtons.vue.js +95 -0
  107. package/dist/martyrs/src/modules/music/components/blocks/ActionButtons.vue.js.map +1 -0
  108. package/dist/martyrs/src/modules/music/components/cards/AlbumCard.vue.js +6 -3
  109. package/dist/martyrs/src/modules/music/components/cards/AlbumCard.vue.js.map +1 -1
  110. package/dist/martyrs/src/modules/music/components/cards/ArtistCardSmall.vue.js +25 -25
  111. package/dist/martyrs/src/modules/music/components/cards/ArtistCardSmall.vue.js.map +1 -1
  112. package/dist/martyrs/src/modules/music/components/cards/PlaylistCard.vue.js +1 -1
  113. package/dist/martyrs/src/modules/music/components/cards/TrackListCard.vue.js +1 -1
  114. package/dist/martyrs/src/modules/music/components/forms/AlbumForm.vue.js +3 -3
  115. package/dist/martyrs/src/modules/music/components/forms/ArtistForm.vue.js +4 -4
  116. package/dist/martyrs/src/modules/music/components/forms/PlaylistForm.vue.js +2 -2
  117. package/dist/martyrs/src/modules/music/components/forms/SearchForm.vue.js +1 -1
  118. package/dist/martyrs/src/modules/music/components/forms/TrackForm.vue.js +3 -3
  119. package/dist/martyrs/src/modules/music/components/layouts/MusicBottomPlayer.vue.js +31 -6
  120. package/dist/martyrs/src/modules/music/components/layouts/MusicBottomPlayer.vue.js.map +1 -1
  121. package/dist/martyrs/src/modules/music/components/pages/Album.vue.js +121 -206
  122. package/dist/martyrs/src/modules/music/components/pages/Album.vue.js.map +1 -1
  123. package/dist/martyrs/src/modules/music/components/pages/Artist.vue.js +2 -2
  124. package/dist/martyrs/src/modules/music/components/pages/MusicHome.vue.js +9 -13
  125. package/dist/martyrs/src/modules/music/components/pages/MusicHome.vue.js.map +1 -1
  126. package/dist/martyrs/src/modules/music/components/pages/MusicLibrary.vue.js +1 -1
  127. package/dist/martyrs/src/modules/music/components/pages/Playlist.vue.js +167 -246
  128. package/dist/martyrs/src/modules/music/components/pages/Playlist.vue.js.map +1 -1
  129. package/dist/martyrs/src/modules/music/components/pages/SearchResults.vue.js +2 -2
  130. package/dist/martyrs/src/modules/music/components/pages/Track.vue.js +136 -221
  131. package/dist/martyrs/src/modules/music/components/pages/Track.vue.js.map +1 -1
  132. package/dist/martyrs/src/modules/music/components/pages/TrackCreate.vue.js +1 -1
  133. package/dist/martyrs/src/modules/music/components/player/FullscreenPlayer.vue.js +171 -0
  134. package/dist/martyrs/src/modules/music/components/player/FullscreenPlayer.vue.js.map +1 -0
  135. package/dist/martyrs/src/modules/music/components/player/MusicPlayer.vue.js +32 -154
  136. package/dist/martyrs/src/modules/music/components/player/MusicPlayer.vue.js.map +1 -1
  137. package/dist/martyrs/src/modules/music/components/player/PlayerControls.vue.js +96 -0
  138. package/dist/martyrs/src/modules/music/components/player/PlayerControls.vue.js.map +1 -0
  139. package/dist/martyrs/src/modules/music/components/player/VolumeControl.vue.js +55 -27
  140. package/dist/martyrs/src/modules/music/components/player/VolumeControl.vue.js.map +1 -1
  141. package/dist/martyrs/src/modules/music/components/player/tonar.png.js +5 -0
  142. package/dist/martyrs/src/modules/music/components/player/tonar.png.js.map +1 -0
  143. package/dist/martyrs/src/modules/music/store/albums.js +8 -2
  144. package/dist/martyrs/src/modules/music/store/albums.js.map +1 -1
  145. package/dist/martyrs/src/modules/music/store/player.js +83 -65
  146. package/dist/martyrs/src/modules/music/store/player.js.map +1 -1
  147. package/dist/martyrs/src/modules/music/store/tracks.js +4 -13
  148. package/dist/martyrs/src/modules/music/store/tracks.js.map +1 -1
  149. package/dist/martyrs/src/modules/notifications/components/elements/NotificationBadge.vue.js +4 -4
  150. package/dist/martyrs/src/modules/notifications/components/elements/NotificationBadge.vue.js.map +1 -1
  151. package/dist/martyrs/src/modules/notifications/notifications.client.js +2 -2
  152. package/dist/martyrs/src/modules/orders/components/elements/FieldSubscribeNewsletter.vue.js +3 -0
  153. package/dist/martyrs/src/modules/orders/components/elements/FieldSubscribeNewsletter.vue.js.map +1 -1
  154. package/dist/martyrs/src/modules/orders/components/forms/FormApplicationDetails.vue.js +3 -3
  155. package/dist/martyrs/src/modules/orders/components/forms/FormCustomerDetails.vue.js +3 -3
  156. package/dist/martyrs/src/modules/orders/components/forms/FormSelectCustomer.vue.js +2 -2
  157. package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.js +2 -2
  158. package/dist/martyrs/src/modules/orders/components/pages/OrderCreate.vue.js +1 -1
  159. package/dist/martyrs/src/modules/orders/components/pages/OrderCreateBackoffice.vue.js +2 -2
  160. package/dist/martyrs/src/modules/orders/components/sections/ApplicationDetails.vue.js +1 -1
  161. package/dist/martyrs/src/modules/orders/components/sections/CustomerDetails.vue.js +1 -1
  162. package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.js +2 -2
  163. package/dist/martyrs/src/modules/orders/components/sections/FormPayment.vue.js +1 -1
  164. package/dist/martyrs/src/modules/organizations/components/blocks/CardOrganization.vue.js +1 -1
  165. package/dist/martyrs/src/modules/organizations/components/blocks/CardOrganization.vue.js.map +1 -1
  166. package/dist/martyrs/src/modules/organizations/components/elements/ButtonToggleMembership.vue.js +1 -1
  167. package/dist/martyrs/src/modules/organizations/components/forms/AddExistingMembersForm.vue.js +1 -1
  168. package/dist/martyrs/src/modules/organizations/components/forms/DepartmentForm.vue.js +2 -2
  169. package/dist/martyrs/src/modules/organizations/components/forms/InviteForm.vue.js +2 -2
  170. package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.js +1 -1
  171. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationBackoffice.vue.js +2 -2
  172. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.js +5 -5
  173. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.js.map +1 -1
  174. package/dist/martyrs/src/modules/organizations/components/sections/Documents.vue.js +3 -3
  175. package/dist/martyrs/src/modules/organizations/components/sections/MembersAdd.vue.js +3 -3
  176. package/dist/martyrs/src/modules/organizations/components/sections/Organizations.vue.js +3 -3
  177. package/dist/martyrs/src/modules/pages/views/components/blocks/CardPage.vue.js +2 -2
  178. package/dist/martyrs/src/modules/pages/views/components/pages/PageEdit.vue.js +2 -2
  179. package/dist/martyrs/src/modules/pages/views/components/partials/SidebarPages.vue.js +1 -1
  180. package/dist/martyrs/src/modules/products/components/blocks/CardCategory.vue.js +1 -1
  181. package/dist/martyrs/src/modules/products/components/blocks/CardCategory.vue.js.map +1 -1
  182. package/dist/martyrs/src/modules/products/components/blocks/CardProduct.vue.js +15 -2
  183. package/dist/martyrs/src/modules/products/components/blocks/CardProduct.vue.js.map +1 -1
  184. package/dist/martyrs/src/modules/products/components/elements/Image360.vue.js +1 -1
  185. package/dist/martyrs/src/modules/products/components/pages/Categories.vue.js +10 -7
  186. package/dist/martyrs/src/modules/products/components/pages/Categories.vue.js.map +1 -1
  187. package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.js +7 -6
  188. package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.js.map +1 -1
  189. package/dist/martyrs/src/modules/products/components/pages/Product.vue.js +11 -2
  190. package/dist/martyrs/src/modules/products/components/pages/Product.vue.js.map +1 -1
  191. package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.js +4 -4
  192. package/dist/martyrs/src/modules/products/components/pages/ProductRecommmendation.vue.js +1 -1
  193. package/dist/martyrs/src/modules/products/components/pages/Products.vue.js +1 -1
  194. package/dist/martyrs/src/modules/products/components/sections/EditAttributes.vue.js +2 -2
  195. package/dist/martyrs/src/modules/products/components/sections/EditDiscounts.vue.js +3 -3
  196. package/dist/martyrs/src/modules/products/components/sections/EditVariants.vue.js +3 -3
  197. package/dist/martyrs/src/modules/products/components/sections/ProductConfigurator.vue.js +1 -1
  198. package/dist/martyrs/src/modules/products/components/sections/ProductsRecommended.vue.js +1 -1
  199. package/dist/martyrs/src/modules/products/components/sections/SectionProduct.vue.js +11 -8
  200. package/dist/martyrs/src/modules/products/components/sections/SectionProduct.vue.js.map +1 -1
  201. package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttToolbar.vue.js +1 -1
  202. package/dist/martyrs/src/modules/rents/views/components/pages/RentsEdit.vue.js +211 -61
  203. package/dist/martyrs/src/modules/rents/views/components/pages/RentsEdit.vue.js.map +1 -1
  204. package/dist/martyrs/src/modules/reports/components/sections/FormReport.vue.js +2 -2
  205. package/dist/martyrs/src/modules/spots/components/blocks/SpotMemberModify.vue.js +2 -2
  206. package/dist/martyrs/src/modules/spots/components/layouts/Spots.vue.js +1 -1
  207. package/dist/martyrs/src/modules/spots/components/pages/Map.vue.js +4 -4
  208. package/dist/martyrs/src/modules/spots/components/pages/Map.vue.js.map +1 -1
  209. package/dist/martyrs/src/modules/spots/components/pages/SpotEdit.vue.js +3 -3
  210. package/dist/martyrs/src/modules/spots/components/sections/WorktimeEdit.vue.js +3 -3
  211. package/dist/martyrs/src/modules/wallet/views/components/blocks/CardDeposit.vue.js +1 -1
  212. package/dist/martyrs/src/modules/wallet/views/components/blocks/CryptoDeposit.vue.js +2 -2
  213. package/dist/martyrs/src/modules/wallet/views/components/pages/Wallet.vue.js +2 -2
  214. package/dist/martyrs.css +1 -1
  215. package/dist/martyrs.es.js +1 -1
  216. package/dist/music.server.js +44 -18
  217. package/dist/node_modules/.pnpm/{@capacitor-mlkit_barcode-scanning@7.1.0_@capacitor_core@7.0.1 → @capacitor-mlkit_barcode-scanning@7.3.0_@capacitor_core@7.4.4}/node_modules/@capacitor-mlkit/barcode-scanning/dist/esm/definitions.js +1 -0
  218. package/dist/node_modules/.pnpm/@capacitor-mlkit_barcode-scanning@7.3.0_@capacitor_core@7.4.4/node_modules/@capacitor-mlkit/barcode-scanning/dist/esm/definitions.js.map +1 -0
  219. package/dist/node_modules/.pnpm/{@capacitor-mlkit_barcode-scanning@7.1.0_@capacitor_core@7.0.1 → @capacitor-mlkit_barcode-scanning@7.3.0_@capacitor_core@7.4.4}/node_modules/@capacitor-mlkit/barcode-scanning/dist/esm/index.js +1 -1
  220. package/dist/node_modules/.pnpm/{@capacitor-mlkit_barcode-scanning@7.1.0_@capacitor_core@7.0.1 → @capacitor-mlkit_barcode-scanning@7.3.0_@capacitor_core@7.4.4}/node_modules/@capacitor-mlkit/barcode-scanning/dist/esm/index.js.map +1 -1
  221. package/dist/node_modules/.pnpm/{@capacitor-mlkit_barcode-scanning@7.1.0_@capacitor_core@7.0.1 → @capacitor-mlkit_barcode-scanning@7.3.0_@capacitor_core@7.4.4}/node_modules/@capacitor-mlkit/barcode-scanning/dist/esm/web.js +16 -1
  222. package/dist/node_modules/.pnpm/@capacitor-mlkit_barcode-scanning@7.3.0_@capacitor_core@7.4.4/node_modules/@capacitor-mlkit/barcode-scanning/dist/esm/web.js.map +1 -0
  223. package/dist/node_modules/.pnpm/{@capacitor_core@7.0.1 → @capacitor_core@7.4.4}/node_modules/@capacitor/core/dist/index.js +2 -1
  224. package/dist/node_modules/.pnpm/@capacitor_core@7.4.4/node_modules/@capacitor/core/dist/index.js.map +1 -0
  225. package/dist/node_modules/.pnpm/{@capacitor_device@7.0.0_@capacitor_core@7.0.1 → @capacitor_device@7.0.1_@capacitor_core@7.4.4}/node_modules/@capacitor/device/dist/esm/index.js +1 -1
  226. package/dist/node_modules/.pnpm/{@capacitor_device@7.0.0_@capacitor_core@7.0.1 → @capacitor_device@7.0.1_@capacitor_core@7.4.4}/node_modules/@capacitor/device/dist/esm/index.js.map +1 -1
  227. package/dist/node_modules/.pnpm/{@capacitor_device@7.0.0_@capacitor_core@7.0.1 → @capacitor_device@7.0.1_@capacitor_core@7.4.4}/node_modules/@capacitor/device/dist/esm/web.js +1 -1
  228. package/dist/node_modules/.pnpm/{@capacitor_device@7.0.0_@capacitor_core@7.0.1 → @capacitor_device@7.0.1_@capacitor_core@7.4.4}/node_modules/@capacitor/device/dist/esm/web.js.map +1 -1
  229. package/dist/node_modules/.pnpm/{@capacitor_keyboard@7.0.0_@capacitor_core@7.0.1 → @capacitor_keyboard@7.0.1_@capacitor_core@7.4.4}/node_modules/@capacitor/keyboard/dist/esm/definitions.js.map +1 -1
  230. package/dist/node_modules/.pnpm/{@capacitor_keyboard@7.0.0_@capacitor_core@7.0.1 → @capacitor_keyboard@7.0.1_@capacitor_core@7.4.4}/node_modules/@capacitor/keyboard/dist/esm/index.js +1 -1
  231. package/dist/node_modules/.pnpm/{@capacitor_keyboard@7.0.0_@capacitor_core@7.0.1 → @capacitor_keyboard@7.0.1_@capacitor_core@7.4.4}/node_modules/@capacitor/keyboard/dist/esm/index.js.map +1 -1
  232. package/dist/node_modules/.pnpm/{@capacitor_push-notifications@7.0.0_@capacitor_core@7.0.1 → @capacitor_push-notifications@7.0.3_@capacitor_core@7.4.4}/node_modules/@capacitor/push-notifications/dist/esm/index.js +1 -1
  233. package/dist/node_modules/.pnpm/{@capacitor_push-notifications@7.0.0_@capacitor_core@7.0.1 → @capacitor_push-notifications@7.0.3_@capacitor_core@7.4.4}/node_modules/@capacitor/push-notifications/dist/esm/index.js.map +1 -1
  234. package/dist/node_modules/.pnpm/{capacitor-plugin-app-tracking-transparency@2.0.5_@capacitor_core@7.0.1 → capacitor-plugin-app-tracking-transparency@2.0.5_@capacitor_core@7.4.4}/node_modules/capacitor-plugin-app-tracking-transparency/dist/esm/index.js +1 -1
  235. package/dist/node_modules/.pnpm/{capacitor-plugin-app-tracking-transparency@2.0.5_@capacitor_core@7.0.1 → capacitor-plugin-app-tracking-transparency@2.0.5_@capacitor_core@7.4.4}/node_modules/capacitor-plugin-app-tracking-transparency/dist/esm/index.js.map +1 -1
  236. package/dist/node_modules/.pnpm/{capacitor-plugin-app-tracking-transparency@2.0.5_@capacitor_core@7.0.1 → capacitor-plugin-app-tracking-transparency@2.0.5_@capacitor_core@7.4.4}/node_modules/capacitor-plugin-app-tracking-transparency/dist/esm/web.js +1 -1
  237. package/dist/node_modules/.pnpm/{capacitor-plugin-app-tracking-transparency@2.0.5_@capacitor_core@7.0.1 → capacitor-plugin-app-tracking-transparency@2.0.5_@capacitor_core@7.4.4}/node_modules/capacitor-plugin-app-tracking-transparency/dist/esm/web.js.map +1 -1
  238. package/dist/notifications.server.js +0 -3
  239. package/dist/orders.server.js +5 -6
  240. package/dist/organizations.server.js +9 -10
  241. package/dist/products.server.js +27 -26
  242. package/dist/{queryProcessor-CBQgZycY.js → queryProcessor-C_5Iipam.js} +4 -1
  243. package/dist/rents.server.js +2 -3
  244. package/dist/spots.server.js +1 -1
  245. package/dist/style.css +252 -161
  246. package/dist/{web-cNKIl_cL.js → web-BF3ijvEr.js} +1 -1
  247. package/package.json +1 -1
  248. package/src/builder/modes/ssr.rspack.dev.js +4 -3
  249. package/src/builder/rspack/rspack.config.api.js +15 -4
  250. package/src/builder/rspack/rspack.config.base.js +3 -3
  251. package/src/builder/rspack/rspack.config.ssr.client.js +28 -28
  252. package/src/builder/templates/page.js +2 -2
  253. package/src/components/BottomSheet/BottomSheet.vue +4 -4
  254. package/src/components/Button/Button.vue +50 -37
  255. package/src/components/FieldPhone/FieldPhone.vue +1 -1
  256. package/src/components/Loader/Loader.vue +1 -1
  257. package/src/components/Tree/Tree.vue +6 -3
  258. package/src/modules/LAYOUT.MD +767 -0
  259. package/src/modules/PROCESS.md +0 -0
  260. package/src/modules/TASKS.MD +17 -0
  261. package/src/modules/auth/auth.client.js +11 -7
  262. package/src/modules/auth/views/components/pages/SignIn.vue +1 -1
  263. package/src/modules/auth/views/router/auth.router.js +94 -0
  264. package/src/modules/auth/views/router/users.router.js +153 -0
  265. package/src/modules/backoffice/components/partials/Sidebar.vue +7 -7
  266. package/src/modules/community/community.server.js +8 -0
  267. package/src/modules/community/policies/blog.policies.js +55 -0
  268. package/src/modules/community/routes/blog.routes.js +1 -1
  269. package/src/modules/community/routes/comments.routes.js +1 -1
  270. package/src/modules/community/routes/reactions.routes.js +1 -4
  271. package/src/modules/core/controllers/classes/abac/abac.adapter.express.js +206 -124
  272. package/src/modules/core/controllers/classes/abac/abac.adapter.ws.js +203 -50
  273. package/src/modules/core/controllers/classes/abac/abac.core.js +127 -36
  274. package/src/modules/core/controllers/classes/abac/abac.fields.js +144 -179
  275. package/src/modules/core/controllers/classes/abac/abac.js +201 -10
  276. package/src/modules/core/controllers/classes/abac/abac.policies.js +147 -57
  277. package/src/modules/core/controllers/classes/crud/crud.policies.js +5 -5
  278. package/src/modules/core/controllers/policies/core.policies.js +5 -2
  279. package/src/modules/core/controllers/utils/queryProcessor.js +4 -1
  280. package/src/modules/core/core.server.js +1 -0
  281. package/src/modules/core/locales/en.js +45 -0
  282. package/src/modules/core/locales/ru.js +45 -0
  283. package/src/modules/core/models/schemas/common.schema.js +1 -1
  284. package/src/modules/core/views/classes/i18n.manager.js +13 -0
  285. package/src/modules/core/views/components/layouts/Client.vue +1 -1
  286. package/src/modules/core/views/components/sections/filters/FilterPrice.vue +81 -0
  287. package/src/modules/core/views/mixins/mixins.js +1 -2
  288. package/src/modules/core/views/router/addRoutes.js +6 -1
  289. package/src/modules/events/events.client.js +3 -0
  290. package/src/modules/events/routes/events.routes.js +1 -1
  291. package/src/modules/inventory/components/pages/InventoryEdit.vue +3 -3
  292. package/src/modules/inventory/policies/inventory.policies.js +1 -1
  293. package/src/modules/inventory/routes/inventory.routes.js +1 -1
  294. package/src/modules/marketplace/marketplace.router.js +66 -0
  295. package/src/modules/marketplace/views/components/layouts/Marketplace.vue +363 -0
  296. package/src/modules/marketplace/views/components/pages/Catalog.vue +73 -0
  297. package/src/modules/music/components/blocks/ActionButtons.vue +74 -0
  298. package/src/modules/music/components/cards/AlbumCard.vue +1 -1
  299. package/src/modules/music/components/cards/ArtistCardSmall.vue +8 -6
  300. package/src/modules/music/components/layouts/MusicBottomPlayer.vue +94 -4
  301. package/src/modules/music/components/pages/Album.vue +55 -67
  302. package/src/modules/music/components/pages/MusicHome.vue +4 -6
  303. package/src/modules/music/components/pages/Playlist.vue +61 -70
  304. package/src/modules/music/components/pages/Track.vue +54 -71
  305. package/src/modules/music/components/player/FullscreenPlayer.vue +248 -0
  306. package/src/modules/music/components/player/MusicPlayer.vue +21 -216
  307. package/src/modules/music/components/player/PlayerControls.vue +112 -0
  308. package/src/modules/music/components/player/Visualizer.vue +151 -0
  309. package/src/modules/music/components/player/VolumeControl.vue +75 -23
  310. package/src/modules/music/components/player/tonar.png +0 -0
  311. package/src/modules/music/controllers/stream.controller.js +1 -1
  312. package/src/modules/music/music.server.js +1 -1
  313. package/src/modules/music/policies/music.policies.js +3 -2
  314. package/src/modules/music/router/library.router.js +26 -0
  315. package/src/modules/music/router/music.router.js +176 -0
  316. package/src/modules/music/routes/albums.routes.js +13 -12
  317. package/src/modules/music/routes/tracks.routes.js +39 -0
  318. package/src/modules/music/store/albums.js +10 -2
  319. package/src/modules/music/store/player.js +101 -89
  320. package/src/modules/music/store/tracks.js +5 -21
  321. package/src/modules/notifications/components/elements/NotificationBadge.vue +5 -6
  322. package/src/modules/notifications/notifications.server.js +1 -3
  323. package/src/modules/orders/components/elements/FieldSubscribeNewsletter.vue +5 -0
  324. package/src/modules/orders/orders.server.js +0 -1
  325. package/src/modules/organizations/components/blocks/CardOrganization.vue +2 -2
  326. package/src/modules/organizations/components/pages/DepartmentEdit.vue +2 -2
  327. package/src/modules/organizations/components/pages/OrganizationEdit.vue +2 -2
  328. package/src/modules/organizations/policies/organizations.policies.js +12 -6
  329. package/src/modules/organizations/routes/organizations.routes.js +1 -3
  330. package/src/modules/products/components/blocks/CardCategory.vue +1 -1
  331. package/src/modules/products/components/blocks/CardProduct.vue +16 -2
  332. package/src/modules/products/components/pages/Categories.vue +9 -6
  333. package/src/modules/products/components/pages/CategoryEdit.vue +8 -4
  334. package/src/modules/products/components/pages/Product.vue +11 -5
  335. package/src/modules/products/components/sections/SectionProduct.vue +11 -7
  336. package/src/modules/products/controllers/categories.controller.js +32 -27
  337. package/src/modules/products/routes/categories.routes.js +1 -1
  338. package/src/modules/rents/controllers/routes/rents.routes.js +1 -1
  339. package/src/modules/rents/views/components/pages/RentsEdit.vue +208 -49
  340. package/src/modules/spots/components/pages/Map.vue +2 -2
  341. package/src/styles/config.scss +6 -6
  342. package/dist/abac-DYoheWuc.js +0 -1031
  343. package/dist/core.abac-DUPBnlk6.js +0 -298
  344. package/dist/core.logger-C3q8A9dl.js +0 -51
  345. package/dist/martyrs/src/components/Button/Button.vue.js.map +0 -1
  346. package/dist/martyrs/src/components/Field/Field.vue2.js.map +0 -1
  347. package/dist/martyrs/src/components/Loader/Loader.vue2.js.map +0 -1
  348. package/dist/martyrs/src/components/Menu/Menu.vue.js.map +0 -1
  349. package/dist/martyrs/src/components/Select/Select.vue2.js.map +0 -1
  350. package/dist/martyrs/src/components/SelectMulti/SelectMulti.vue.js.map +0 -1
  351. package/dist/martyrs/src/modules/auth/auth.router.js +0 -342
  352. package/dist/martyrs/src/modules/auth/auth.router.js.map +0 -1
  353. package/dist/node_modules/.pnpm/@capacitor-mlkit_barcode-scanning@7.1.0_@capacitor_core@7.0.1/node_modules/@capacitor-mlkit/barcode-scanning/dist/esm/definitions.js.map +0 -1
  354. package/dist/node_modules/.pnpm/@capacitor-mlkit_barcode-scanning@7.1.0_@capacitor_core@7.0.1/node_modules/@capacitor-mlkit/barcode-scanning/dist/esm/web.js.map +0 -1
  355. package/dist/node_modules/.pnpm/@capacitor_core@7.0.1/node_modules/@capacitor/core/dist/index.js.map +0 -1
  356. package/src/modules/auth/auth.router.js +0 -262
  357. package/src/modules/core/controllers/classes/abac/v2/abac-core-fixed.js +0 -313
  358. package/src/modules/core/controllers/classes/abac/v2/abac-express-fixed.js +0 -276
  359. package/src/modules/core/controllers/classes/abac/v2/abac-fields-fixed.js +0 -425
  360. package/src/modules/core/controllers/classes/abac/v2/abac-main-fixed.js +0 -295
  361. package/src/modules/core/controllers/classes/abac/v2/abac-policies-fixed.js +0 -316
  362. package/src/modules/core/controllers/classes/abac/v2/abac-ws-fixed.js +0 -237
  363. package/src/modules/core/controllers/classes/core.abac.js +0 -310
  364. package/src/modules/core/controllers/classes/core.crud.js +0 -89
  365. package/src/modules/governance/reactcode/eslint.config.js +0 -28
  366. /package/dist/node_modules/.pnpm/{@capacitor_keyboard@7.0.0_@capacitor_core@7.0.1 → @capacitor_keyboard@7.0.1_@capacitor_core@7.4.4}/node_modules/@capacitor/keyboard/dist/esm/definitions.js +0 -0
@@ -1,10 +1,10 @@
1
1
  import { ref, createElementBlock, openBlock, createVNode, unref, isRef, withCtx, Fragment, renderList, createElementVNode, toDisplayString, createBlock, createCommentVNode, createTextVNode } from "vue";
2
2
  import { useRoute } from "vue-router";
3
- /* empty css */
4
- import _sfc_main$8 from "../../../../components/Button/Button.vue.js";
5
- /* empty css */
3
+ /* empty css */
4
+ import _sfc_main$8 from "../../../../components/Button/Button.vue2.js";
5
+ /* empty css */
6
6
  import _sfc_main$4 from "../../../../components/Chips/Chips.vue.js";
7
- /* empty css */
7
+ /* empty css */
8
8
  import _sfc_main$5 from "../../../../components/Popup/Popup.vue.js";
9
9
  import _sfc_main$2 from "../../../../components/Feed/Feed.vue.js";
10
10
  import PhotoViewer from "../../../../components/PhotoViewer/PhotoViewer.vue.js";
@@ -1,8 +1,8 @@
1
1
  import { ref, onMounted, createElementBlock, openBlock, createElementVNode, createCommentVNode, createVNode, Fragment, renderList, normalizeClass, createBlock, resolveDynamicComponent, toDisplayString, withCtx, createTextVNode } from "vue";
2
2
  import { useRoute } from "vue-router";
3
- import Field from "../../../../components/Field/Field.vue2.js";
4
- import Select from "../../../../components/Select/Select.vue2.js";
5
- import _sfc_main$2 from "../../../../components/Button/Button.vue.js";
3
+ import Field from "../../../../components/Field/Field.vue.js";
4
+ import Select from "../../../../components/Select/Select.vue.js";
5
+ import _sfc_main$2 from "../../../../components/Button/Button.vue2.js";
6
6
  import { state } from "../../../auth/views/store/auth.js";
7
7
  import { actions } from "../../../spots/store/spots.js";
8
8
  import variantsStore from "../../../products/store/variants.store.js";
@@ -1,6 +1,6 @@
1
1
  import { ref, watch, createElementBlock, openBlock, createElementVNode, Fragment, renderList, createVNode, withCtx, createTextVNode } from "vue";
2
2
  import _sfc_main$1 from "../../../../components/Checkbox/Checkbox.vue.js";
3
- import _sfc_main$2 from "../../../../components/Button/Button.vue.js";
3
+ import _sfc_main$2 from "../../../../components/Button/Button.vue2.js";
4
4
  const _hoisted_1 = { class: "w-100" };
5
5
  const _hoisted_2 = { class: "mn-b-medium" };
6
6
  const _hoisted_3 = { class: "flex-nowrap flex gap-small" };
@@ -1,6 +1,6 @@
1
1
  import { ref, onMounted, createElementBlock, openBlock, createElementVNode, createVNode, createBlock, toDisplayString, createCommentVNode, Fragment, renderList, normalizeClass, createTextVNode, withCtx } from "vue";
2
2
  import PlaceholderImage from "../../../icons/placeholders/PlaceholderImage.vue.js";
3
- import _sfc_main$1 from "../../../../components/Button/Button.vue.js";
3
+ import _sfc_main$1 from "../../../../components/Button/Button.vue2.js";
4
4
  import { actions } from "../../store/inventory.store.js";
5
5
  /* empty css */
6
6
  import _export_sfc from "../../../../../../_virtual/_plugin-vue_export-helper.js";
@@ -1,8 +1,8 @@
1
1
  import { ref, computed, onMounted, createElementBlock, openBlock, createElementVNode, createVNode, toDisplayString, withCtx, createTextVNode } from "vue";
2
2
  import { useRoute } from "vue-router";
3
- import Field from "../../../../components/Field/Field.vue2.js";
4
- import Select from "../../../../components/Select/Select.vue2.js";
5
- import _sfc_main$1 from "../../../../components/Button/Button.vue.js";
3
+ import Field from "../../../../components/Field/Field.vue.js";
4
+ import Select from "../../../../components/Select/Select.vue.js";
5
+ import _sfc_main$1 from "../../../../components/Button/Button.vue2.js";
6
6
  import { state } from "../../../auth/views/store/auth.js";
7
7
  import { actions } from "../../../spots/store/spots.js";
8
8
  import variantsStore from "../../../products/store/variants.store.js";
@@ -1,9 +1,9 @@
1
1
  import { ref, computed, onMounted, createElementBlock, openBlock, createElementVNode, createVNode, withCtx, unref, Fragment, renderList, createBlock, createCommentVNode, toDisplayString } from "vue";
2
2
  import _sfc_main$4 from "../../../../components/Block/Block.vue.js";
3
- import _sfc_main$7 from "../../../../components/Button/Button.vue.js";
4
- import Field from "../../../../components/Field/Field.vue2.js";
3
+ import _sfc_main$7 from "../../../../components/Button/Button.vue2.js";
4
+ import Field from "../../../../components/Field/Field.vue.js";
5
5
  import _sfc_main$2 from "../../../../components/Feed/Feed.vue.js";
6
- /* empty css */
6
+ /* empty css */
7
7
  /* empty css */
8
8
  import _sfc_main$1 from "../../../../components/Popup/Popup.vue.js";
9
9
  import _sfc_main$3 from "../../../orders/components/blocks/CardOrderItem.vue.js";
@@ -37,7 +37,7 @@ const _hoisted_10 = { class: "h3 mn-r-auto" };
37
37
  const _sfc_main = {
38
38
  __name: "InventoryEdit",
39
39
  setup(__props) {
40
- const core = useStore();
40
+ const store = useStore();
41
41
  const route = useRoute();
42
42
  const router = useRouter();
43
43
  const { formatPrice } = useGlobalMixins();
@@ -90,7 +90,7 @@ const _sfc_main = {
90
90
  attributes: variant.attributes || []
91
91
  }
92
92
  };
93
- core.actions.add(state.current.positions, position);
93
+ store.core.actions.add(state.current.positions, position);
94
94
  closeVariantsPopup();
95
95
  }
96
96
  onMounted(async () => {
@@ -1 +1 @@
1
- {"version":3,"file":"InventoryEdit.vue.js","sources":["../../../../../../../src/modules/inventory/components/pages/InventoryEdit.vue"],"sourcesContent":["<template>\n <div class=\"pd-medium mobile:pd-thin\">\n <header class=\"mn-b-medium gap-small flex-v-center flex-nowrap flex\">\n <h2 class=\"\">Create Inventory Audit</h2>\n </header>\n \n <Popup \n title=\"Add position\" \n @close-popup=\"closeProductsPopup\" \n :isPopupOpen=\"isOpenProductsPopup\"\n class=\"bg-white w-100 w-max-30r radius-medium pd-medium\"\n >\n <Feed\n :search=\"{\n class: 'bg-light radius-small'\n }\"\n :states=\"{\n empty: {\n title: 'No Products Found',\n description: 'Currently, there are no such products available.'\n }\n }\"\n :store=\"{\n read: (options) => products.actions.read(options),\n state: null\n }\"\n :options=\"{\n owner: route.params._id,\n }\"\n v-slot=\"{ \n items \n }\"\n class=\"flex-column flex gap-thin h-max-20r o-scroll\"\n >\n <CardOrderItem\n v-for=\"(product, index) in items\" \n :key=\"`${product._id}_${product.variant || 'no-variant'}_${index}`\"\n :editable=\"false\" \n :productId=\"product._id\"\n :variantId=\"product.variant\"\n :images=\"product.images\"\n :name=\"product.name\"\n :quantity=\"product.quantity || 1\"\n :unit=\"product.unit\"\n :dates=\"product.date\"\n :listing=\"product.listing\"\n :price=\"product.price\"\n @click=\"() => selectProduct(product)\"\n class=\"bg-light pd-small radius-small w-100\"\n />\n </Feed>\n </Popup>\n \n <!-- Popup for selecting variant of the product -->\n <Popup \n title=\"Select variant\" \n @close-popup=\"closeVariantsPopup\" \n :isPopupOpen=\"isVariantsPopupOpen\"\n class=\"bg-white w-100 w-max-30r radius-medium pd-medium\"\n >\n <Feed\n :store=\"variants\"\n :options=\"{\n product: selectedProduct._id,\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 v-slot=\"{ items }\"\n >\n <div class=\"gap-thin flex flex-column\">\n <div \n v-for=\"(variant, index) in items\" \n :key=\"index\"\n @click=\"addVariantToInventory(variant)\"\n class=\"w-100 cursor-pointer hover-scale-1 bg-light pd-small radius-small flex-v-center flex-nowrap flex gap-thin\"\n >\n <div v-if=\"variant.images && variant.images.length\" class=\"aspect-1x1 h-3r radius-small o-hidden\">\n <img \n :src=\"(FILE_SERVER_URL || '') + variant.images[0]\" \n class=\"w-100 h-100 object-fit-cover\"\n />\n </div>\n <div>\n <p class=\"t-medium\">{{ variant.name || 'Default variant' }}</p>\n <p v-if=\"variant.attributes && variant.attributes.length\" class=\"t-small t-transp\">\n {{ variant.attributes.map(attr => `${attr.name}: ${attr.value}`).join(', ') }}\n </p>\n </div>\n <p class=\"mn-l-auto\">{{ formatPrice(variant.cost) }}</p>\n </div>\n </div>\n </Feed>\n </Popup>\n\n <Block\n class=\"mn-b-thin\"\n >\n <Field\n v-model:field=\"inventory.state.current.comment\"\n placeholder=\"Describe details of the inventory audit\"\n type=\"textarea\"\n class=\"w-100 bg-white radius-small pd-medium\"\n /> \n <div class=\"t-medium mn-t-small mn-b-thin\">Select Storage:</div>\n <Feed\n :states=\"{\n empty: {\n title: 'No Spots Found',\n description: 'Currently, there are no spots available.'\n }\n }\"\n :store=\"{\n read: (options) => spots.actions.read(options),\n state: null\n }\"\n :options=\"{\n user: auth.state.user._id,\n organization: route.params._id,\n limit: 3\n }\"\n v-slot=\"{ \n items \n }\"\n class=\"flex-nowrap flex-column gap-thin flex\"\n >\n <CardSpot\n v-for=\"(spot, index) in items\"\n :key=\"index\"\n :spot=\"spot\"\n :organization=\"route.params._id\"\n :selected=\"inventory.state.current.storage === spot._id\"\n @click=\"() => inventory.state.current.storage = inventory.state.current.storage === spot._id ? null : spot._id\"\n class=\"radius-small h-min-big clickable bg-white\"\n />\n </Feed>\n\n\n </Block>\n\n <Block\n title=\"Positions\"\n :actions=\"[{\n label: '+',\n function: () => openProductsPopup()\n }]\"\n placeholder=\"No positions added yet\"\n class=\"h-100 flex-column flex gap-thin mn-b-thin\"\n >\n <CardPosition\n v-for=\"(position, index) in inventory.state.current.positions\" \n :key=\"position._id || index\" \n :image=\"position.image\"\n :name=\"position.name\"\n :title=\"formatPrice(position.cost * position.quantity)\"\n :title_class=\"[position.cost * position.quantity < 0 ? 't-red' : 't-second']\"\n :subtitle=\"`${formatPrice(position.cost)} × ${Math.abs(position.quantity)}${position.unit} `\"\n >\n <template v-slot:actions>\n <QuantitySelector v-model=\"position.quantity\"/>\n \n <!-- <Dropdown\n :label=\"{ component: IconEllipsis, class: 't-transp i-medium' }\"\n class=\"cursor-pointer aspect-1x1 pd-nano radius-small hover-bg-light\"\n align=\"right\"\n >\n <div class=\"bg-white radius-small\">\n <button @click=\"leftovers.state.current.positions.splice(index, 1)\" class=\"cursor-pointer t-left t-nowrap w-100 pd-small\">\n Delete\n </button>\n </div>\n </Dropdown> -->\n\n </template>\n </CardPosition>\n \n </Block>\n\n <!-- :actions=\"[{\n component: IconEdit,\n handler: () => core.actions.add(leftovers.state.current.positions, position),\n class: 'bg-light'\n },{\n component: IconDelete,\n handler: () => leftovers.state.current.positions.splice(index, 1),\n class: 'bg-red'\n }]\" -->\n\n <Block class=\"\">\n <section class=\"gap-thin flex-v-center flex-nojustify flex\">\n <span class=\"h3 mn-r-auto\">\n In total: {{formatPrice(totalPrice)}}\n </span>\n\n <!-- Save Draft -->\n <Button\n :submit=\"onSaveDraft\"\n class=\"bg-second w-min-5r button\"\n >\n <span>Save Draft</span>\n </Button>\n\n <!-- Publish -->\n <Button\n :submit=\"onPublish\"\n class=\"bg-main w-min-5r button\"\n >\n <span>Publish</span>\n </Button>\n\n <!-- Reset -->\n <Button\n :submit=\"onReset\"\n class=\"t-white w-min-5r bg-second button\"\n >\n <span>Reset</span>\n </Button>\n\n <!-- Delete button removed - only create mode supported -->\n </section>\n </Block>\n </div>\n</template>\n\n\n<script setup>\n import Block from '@martyrs/src/components/Block/Block.vue';\n import Button from \"@martyrs/src/components/Button/Button.vue\";\n import Field from '@martyrs/src/components/Field/Field.vue';\n import Feed from '@martyrs/src/components/Feed/Feed.vue';\n import Select from '@martyrs/src/components/Select/Select.vue';\n import Dropdown from '@martyrs/src/components/Dropdown/Dropdown.vue'\n import Popup from '@martyrs/src/components/Popup/Popup.vue';\n\n import CardOrderItem from '@martyrs/src/modules/orders/components/blocks/CardOrderItem.vue';\n import CardSpot from '@martyrs/src/modules/spots/components/blocks/CardSpot.vue'; \n\n import CardPosition from '@martyrs/src/modules/products/components/blocks/CardPosition.vue';\n import QuantitySelector from '@martyrs/src/modules/products/components/elements/QuantitySelector.vue';\n\n import { computed, onMounted, ref, reactive } from 'vue';\n import { useRoute, useRouter } from 'vue-router';\n import { useGlobalMixins } from '@martyrs/src/modules/core/views/mixins/mixins.js';\n\n import { useStore } from '@martyrs/src/modules/core/views/store/core.store.js';\n import * as auth from '@martyrs/src/modules/auth/views/store/auth.js';\n const core = useStore();\n import * as inventory from '@martyrs/src/modules/inventory/store/inventory.store.js';\n import * as products from '@martyrs/src/modules/products/store/products.js';\n import * as spots from '@martyrs/src/modules/spots/store/spots.js';\n import variants from '@martyrs/src/modules/products/store/variants.store.js';\n\n import IconEdit from '@martyrs/src/modules/icons/navigation/IconEdit.vue';\n import IconDelete from '@martyrs/src/modules/icons/navigation/IconDelete.vue';\n import IconEllipsis from '@martyrs/src/modules/icons/navigation/IconEllipsis.vue'\n\n const route = useRoute();\n const router = useRouter();\n const { formatPrice } = useGlobalMixins();\n \n const isOpenProductsPopup = ref(false);\n const isVariantsPopupOpen = ref(false);\n const selectedProduct = ref(null);\n\n const totalPrice = computed(() => {\n return inventory.state.current.positions.reduce((sum, position) => {\n return Number(sum) + Number(position.cost || 0) * Number(position.quantity || 1);\n }, 0);\n });\n\n function openProductsPopup() {\n isOpenProductsPopup.value = true;\n }\n\n function closeProductsPopup() {\n isOpenProductsPopup.value = false;\n }\n \n function closeVariantsPopup() {\n isVariantsPopupOpen.value = false;\n selectedProduct.value = null;\n }\n \n function selectProduct(product) {\n selectedProduct.value = product;\n closeProductsPopup();\n \n // If product has only one variant, add it directly without showing popup\n if (product.variants && product.variants.length === 1) {\n addVariantToInventory(product.variants[0]);\n return;\n }\n \n // If product has multiple variants or no variants defined, show popup\n isVariantsPopupOpen.value = true;\n }\n\n function formatProductName(product, variant) {\n if (!variant || product.variants?.length === 1 && !(variant.attributes?.length))\n return product.name;\n\n const attrs = variant.attributes?.map(a => a.value).filter(Boolean);\n return attrs?.length\n ? `${product.name} / ${attrs.join(' / ')}`\n : `${product.name} / ${variant.name}`;\n }\n\n \n function addVariantToInventory(variant) {\n // Create a position object that includes variant information\n console.log('variant',variant)\n const position = {\n _id: variant._id,\n product: selectedProduct.value._id, \n name: formatProductName(selectedProduct.value, variant),\n image: variant.images?.[0] || selectedProduct.value?.images?.[0] || null,\n cost: variant.cost || variant.price || 0,\n unit: variant.unit || 'pcs',\n quantity: 1,\n variant: {\n _id: variant._id,\n name: variant.name,\n attributes: variant.attributes || []\n }\n };\n // Add position to inventory state\n core.actions.add(inventory.state.current.positions, position);\n closeVariantsPopup();\n }\n\n onMounted(async () => {\n // Reset inventory state for new audit\n inventory.mutations.resetCurrent();\n });\n\n async function onReset() {\n inventory.mutations.resetCurrent();\n return true;\n }\n\n\n function prepareInventoryData(status = 'draft') {\n return {\n storage: inventory.state.current.storage,\n comment: inventory.state.current.comment,\n status: status,\n positions: inventory.state.current.positions.map(pos => ({\n product: pos.product,\n variant: pos.variant?._id,\n storage: inventory.state.current.storage,\n quantity: pos.quantity,\n reason: 'custom',\n comment: `Inventory audit: ${pos.name}`,\n cost: pos.cost\n })),\n owner: {\n type: 'organization',\n target: route.params._id\n },\n creator: {\n type: 'user',\n target: auth.state.user._id\n }\n };\n }\n\n function navigateBack() {\n if (route.meta.context === 'backoffice') {\n router.push({ name: 'BackofficeInventoryList' });\n } else if (route.meta.context === 'organization') {\n router.push({ name: 'OrganizationInventoryList', params: { _id: route.params._id } });\n }\n }\n\n async function onSaveDraft() {\n try {\n const inventoryData = prepareInventoryData('draft');\n await inventory.actions.createInventory(inventoryData);\n navigateBack();\n } catch (error) {\n console.error('Error creating draft inventory:', error);\n }\n }\n\n async function onPublish() {\n try {\n const inventoryData = prepareInventoryData('published');\n await inventory.actions.createInventory(inventoryData);\n navigateBack();\n } catch (error) {\n console.error('Error publishing inventory:', error);\n }\n }\n\n // Remove delete function as we only support creation mode\n</script>"],"names":["inventory.state","inventory.mutations","auth.state","inventory.actions"],"mappings":"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"}
1
+ {"version":3,"file":"InventoryEdit.vue.js","sources":["../../../../../../../src/modules/inventory/components/pages/InventoryEdit.vue"],"sourcesContent":["<template>\n <div class=\"pd-medium mobile:pd-thin\">\n <header class=\"mn-b-medium gap-small flex-v-center flex-nowrap flex\">\n <h2 class=\"\">Create Inventory Audit</h2>\n </header>\n \n <Popup \n title=\"Add position\" \n @close-popup=\"closeProductsPopup\" \n :isPopupOpen=\"isOpenProductsPopup\"\n class=\"bg-white w-100 w-max-30r radius-medium pd-medium\"\n >\n <Feed\n :search=\"{\n class: 'bg-light radius-small'\n }\"\n :states=\"{\n empty: {\n title: 'No Products Found',\n description: 'Currently, there are no such products available.'\n }\n }\"\n :store=\"{\n read: (options) => products.actions.read(options),\n state: null\n }\"\n :options=\"{\n owner: route.params._id,\n }\"\n v-slot=\"{ \n items \n }\"\n class=\"flex-column flex gap-thin h-max-20r o-scroll\"\n >\n <CardOrderItem\n v-for=\"(product, index) in items\" \n :key=\"`${product._id}_${product.variant || 'no-variant'}_${index}`\"\n :editable=\"false\" \n :productId=\"product._id\"\n :variantId=\"product.variant\"\n :images=\"product.images\"\n :name=\"product.name\"\n :quantity=\"product.quantity || 1\"\n :unit=\"product.unit\"\n :dates=\"product.date\"\n :listing=\"product.listing\"\n :price=\"product.price\"\n @click=\"() => selectProduct(product)\"\n class=\"bg-light pd-small radius-small w-100\"\n />\n </Feed>\n </Popup>\n \n <!-- Popup for selecting variant of the product -->\n <Popup \n title=\"Select variant\" \n @close-popup=\"closeVariantsPopup\" \n :isPopupOpen=\"isVariantsPopupOpen\"\n class=\"bg-white w-100 w-max-30r radius-medium pd-medium\"\n >\n <Feed\n :store=\"variants\"\n :options=\"{\n product: selectedProduct._id,\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 v-slot=\"{ items }\"\n >\n <div class=\"gap-thin flex flex-column\">\n <div \n v-for=\"(variant, index) in items\" \n :key=\"index\"\n @click=\"addVariantToInventory(variant)\"\n class=\"w-100 cursor-pointer hover-scale-1 bg-light pd-small radius-small flex-v-center flex-nowrap flex gap-thin\"\n >\n <div v-if=\"variant.images && variant.images.length\" class=\"aspect-1x1 h-3r radius-small o-hidden\">\n <img \n :src=\"(FILE_SERVER_URL || '') + variant.images[0]\" \n class=\"w-100 h-100 object-fit-cover\"\n />\n </div>\n <div>\n <p class=\"t-medium\">{{ variant.name || 'Default variant' }}</p>\n <p v-if=\"variant.attributes && variant.attributes.length\" class=\"t-small t-transp\">\n {{ variant.attributes.map(attr => `${attr.name}: ${attr.value}`).join(', ') }}\n </p>\n </div>\n <p class=\"mn-l-auto\">{{ formatPrice(variant.cost) }}</p>\n </div>\n </div>\n </Feed>\n </Popup>\n\n <Block\n class=\"mn-b-thin\"\n >\n <Field\n v-model:field=\"inventory.state.current.comment\"\n placeholder=\"Describe details of the inventory audit\"\n type=\"textarea\"\n class=\"w-100 bg-white radius-small pd-medium\"\n /> \n <div class=\"t-medium mn-t-small mn-b-thin\">Select Storage:</div>\n <Feed\n :states=\"{\n empty: {\n title: 'No Spots Found',\n description: 'Currently, there are no spots available.'\n }\n }\"\n :store=\"{\n read: (options) => spots.actions.read(options),\n state: null\n }\"\n :options=\"{\n user: auth.state.user._id,\n organization: route.params._id,\n limit: 3\n }\"\n v-slot=\"{ \n items \n }\"\n class=\"flex-nowrap flex-column gap-thin flex\"\n >\n <CardSpot\n v-for=\"(spot, index) in items\"\n :key=\"index\"\n :spot=\"spot\"\n :organization=\"route.params._id\"\n :selected=\"inventory.state.current.storage === spot._id\"\n @click=\"() => inventory.state.current.storage = inventory.state.current.storage === spot._id ? null : spot._id\"\n class=\"radius-small h-min-big clickable bg-white\"\n />\n </Feed>\n\n\n </Block>\n\n <Block\n title=\"Positions\"\n :actions=\"[{\n label: '+',\n function: () => openProductsPopup()\n }]\"\n placeholder=\"No positions added yet\"\n class=\"h-100 flex-column flex gap-thin mn-b-thin\"\n >\n <CardPosition\n v-for=\"(position, index) in inventory.state.current.positions\" \n :key=\"position._id || index\" \n :image=\"position.image\"\n :name=\"position.name\"\n :title=\"formatPrice(position.cost * position.quantity)\"\n :title_class=\"[position.cost * position.quantity < 0 ? 't-red' : 't-second']\"\n :subtitle=\"`${formatPrice(position.cost)} × ${Math.abs(position.quantity)}${position.unit} `\"\n >\n <template v-slot:actions>\n <QuantitySelector v-model=\"position.quantity\"/>\n \n <!-- <Dropdown\n :label=\"{ component: IconEllipsis, class: 't-transp i-medium' }\"\n class=\"cursor-pointer aspect-1x1 pd-nano radius-small hover-bg-light\"\n align=\"right\"\n >\n <div class=\"bg-white radius-small\">\n <button @click=\"leftovers.state.current.positions.splice(index, 1)\" class=\"cursor-pointer t-left t-nowrap w-100 pd-small\">\n Delete\n </button>\n </div>\n </Dropdown> -->\n\n </template>\n </CardPosition>\n \n </Block>\n\n <!-- :actions=\"[{\n component: IconEdit,\n handler: () => store.core.actions.add(leftovers.state.current.positions, position),\n class: 'bg-light'\n },{\n component: IconDelete,\n handler: () => leftovers.state.current.positions.splice(index, 1),\n class: 'bg-red'\n }]\" -->\n\n <Block class=\"\">\n <section class=\"gap-thin flex-v-center flex-nojustify flex\">\n <span class=\"h3 mn-r-auto\">\n In total: {{formatPrice(totalPrice)}}\n </span>\n\n <!-- Save Draft -->\n <Button\n :submit=\"onSaveDraft\"\n class=\"bg-second w-min-5r button\"\n >\n <span>Save Draft</span>\n </Button>\n\n <!-- Publish -->\n <Button\n :submit=\"onPublish\"\n class=\"bg-main w-min-5r button\"\n >\n <span>Publish</span>\n </Button>\n\n <!-- Reset -->\n <Button\n :submit=\"onReset\"\n class=\"t-white w-min-5r bg-second button\"\n >\n <span>Reset</span>\n </Button>\n\n <!-- Delete button removed - only create mode supported -->\n </section>\n </Block>\n </div>\n</template>\n\n\n<script setup>\n import Block from '@martyrs/src/components/Block/Block.vue';\n import Button from \"@martyrs/src/components/Button/Button.vue\";\n import Field from '@martyrs/src/components/Field/Field.vue';\n import Feed from '@martyrs/src/components/Feed/Feed.vue';\n import Select from '@martyrs/src/components/Select/Select.vue';\n import Dropdown from '@martyrs/src/components/Dropdown/Dropdown.vue'\n import Popup from '@martyrs/src/components/Popup/Popup.vue';\n\n import CardOrderItem from '@martyrs/src/modules/orders/components/blocks/CardOrderItem.vue';\n import CardSpot from '@martyrs/src/modules/spots/components/blocks/CardSpot.vue'; \n\n import CardPosition from '@martyrs/src/modules/products/components/blocks/CardPosition.vue';\n import QuantitySelector from '@martyrs/src/modules/products/components/elements/QuantitySelector.vue';\n\n import { computed, onMounted, ref, reactive } from 'vue';\n import { useRoute, useRouter } from 'vue-router';\n import { useGlobalMixins } from '@martyrs/src/modules/core/views/mixins/mixins.js';\n\n import { useStore } from '@martyrs/src/modules/core/views/store/core.store.js';\n import * as auth from '@martyrs/src/modules/auth/views/store/auth.js';\n const store = useStore();\n import * as inventory from '@martyrs/src/modules/inventory/store/inventory.store.js';\n import * as products from '@martyrs/src/modules/products/store/products.js';\n import * as spots from '@martyrs/src/modules/spots/store/spots.js';\n import variants from '@martyrs/src/modules/products/store/variants.store.js';\n\n import IconEdit from '@martyrs/src/modules/icons/navigation/IconEdit.vue';\n import IconDelete from '@martyrs/src/modules/icons/navigation/IconDelete.vue';\n import IconEllipsis from '@martyrs/src/modules/icons/navigation/IconEllipsis.vue'\n\n const route = useRoute();\n const router = useRouter();\n const { formatPrice } = useGlobalMixins();\n \n const isOpenProductsPopup = ref(false);\n const isVariantsPopupOpen = ref(false);\n const selectedProduct = ref(null);\n\n const totalPrice = computed(() => {\n return inventory.state.current.positions.reduce((sum, position) => {\n return Number(sum) + Number(position.cost || 0) * Number(position.quantity || 1);\n }, 0);\n });\n\n function openProductsPopup() {\n isOpenProductsPopup.value = true;\n }\n\n function closeProductsPopup() {\n isOpenProductsPopup.value = false;\n }\n \n function closeVariantsPopup() {\n isVariantsPopupOpen.value = false;\n selectedProduct.value = null;\n }\n \n function selectProduct(product) {\n selectedProduct.value = product;\n closeProductsPopup();\n \n // If product has only one variant, add it directly without showing popup\n if (product.variants && product.variants.length === 1) {\n addVariantToInventory(product.variants[0]);\n return;\n }\n \n // If product has multiple variants or no variants defined, show popup\n isVariantsPopupOpen.value = true;\n }\n\n function formatProductName(product, variant) {\n if (!variant || product.variants?.length === 1 && !(variant.attributes?.length))\n return product.name;\n\n const attrs = variant.attributes?.map(a => a.value).filter(Boolean);\n return attrs?.length\n ? `${product.name} / ${attrs.join(' / ')}`\n : `${product.name} / ${variant.name}`;\n }\n\n \n function addVariantToInventory(variant) {\n // Create a position object that includes variant information\n console.log('variant',variant)\n const position = {\n _id: variant._id,\n product: selectedProduct.value._id, \n name: formatProductName(selectedProduct.value, variant),\n image: variant.images?.[0] || selectedProduct.value?.images?.[0] || null,\n cost: variant.cost || variant.price || 0,\n unit: variant.unit || 'pcs',\n quantity: 1,\n variant: {\n _id: variant._id,\n name: variant.name,\n attributes: variant.attributes || []\n }\n };\n // Add position to inventory state\n store.core.actions.add(inventory.state.current.positions, position);\n closeVariantsPopup();\n }\n\n onMounted(async () => {\n // Reset inventory state for new audit\n inventory.mutations.resetCurrent();\n });\n\n async function onReset() {\n inventory.mutations.resetCurrent();\n return true;\n }\n\n\n function prepareInventoryData(status = 'draft') {\n return {\n storage: inventory.state.current.storage,\n comment: inventory.state.current.comment,\n status: status,\n positions: inventory.state.current.positions.map(pos => ({\n product: pos.product,\n variant: pos.variant?._id,\n storage: inventory.state.current.storage,\n quantity: pos.quantity,\n reason: 'custom',\n comment: `Inventory audit: ${pos.name}`,\n cost: pos.cost\n })),\n owner: {\n type: 'organization',\n target: route.params._id\n },\n creator: {\n type: 'user',\n target: auth.state.user._id\n }\n };\n }\n\n function navigateBack() {\n if (route.meta.context === 'backoffice') {\n router.push({ name: 'BackofficeInventoryList' });\n } else if (route.meta.context === 'organization') {\n router.push({ name: 'OrganizationInventoryList', params: { _id: route.params._id } });\n }\n }\n\n async function onSaveDraft() {\n try {\n const inventoryData = prepareInventoryData('draft');\n await inventory.actions.createInventory(inventoryData);\n navigateBack();\n } catch (error) {\n console.error('Error creating draft inventory:', error);\n }\n }\n\n async function onPublish() {\n try {\n const inventoryData = prepareInventoryData('published');\n await inventory.actions.createInventory(inventoryData);\n navigateBack();\n } catch (error) {\n console.error('Error publishing inventory:', error);\n }\n }\n\n // Remove delete function as we only support creation mode\n</script>"],"names":["inventory.state","inventory.mutations","auth.state","inventory.actions"],"mappings":"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"}
@@ -4,7 +4,7 @@ import { useI18n } from "vue-i18n";
4
4
  import _sfc_main$2 from "../../../../../components/Feed/Feed.vue.js";
5
5
  import Filters from "../../../../core/views/components/sections/Filters.vue2.js";
6
6
  import _sfc_main$1 from "../../../../core/views/components/sections/filters/FiltersGroup.vue.js";
7
- import Field from "../../../../../components/Field/Field.vue2.js";
7
+ import Field from "../../../../../components/Field/Field.vue.js";
8
8
  import _sfc_main$3 from "../../../../organizations/components/blocks/CardOrganization.vue.js";
9
9
  import { useStore } from "../../../../core/views/store/core.store.js";
10
10
  import { state, marketplaceStore } from "../../store/marketplace.js";
@@ -1,5 +1,5 @@
1
1
  import { ref, onMounted, resolveComponent, createElementBlock, openBlock, createElementVNode, createVNode, createTextVNode, Transition, withCtx, Fragment, renderList, createBlock, createCommentVNode, normalizeClass, toDisplayString } from "vue";
2
- import Loader from "../../../../../components/Loader/Loader.vue2.js";
2
+ import Loader from "../../../../../components/Loader/Loader.vue.js";
3
3
  import { useRouter } from "vue-router";
4
4
  import { useI18n } from "vue-i18n";
5
5
  import { actions as actions$1 } from "../../../../products/store/categories.js";
@@ -0,0 +1,95 @@
1
+ import { ref, createElementBlock, openBlock, Fragment, renderList, createBlock, normalizeClass, withCtx, createCommentVNode, createTextVNode, resolveDynamicComponent, toDisplayString, createElementVNode, createVNode } from "vue";
2
+ import _sfc_main$1 from "../../../../components/Button/Button.vue2.js";
3
+ import _sfc_main$2 from "../../../../components/Dropdown/Dropdown.vue.js";
4
+ import _sfc_main$3 from "../../../icons/navigation/IconEllipsis.vue.js";
5
+ const _hoisted_1 = { class: "flex gap-small mn-b-medium" };
6
+ const _hoisted_2 = { class: "dropdown-menu bg-white pd-small radius-medium shadow-big mn-t-thin" };
7
+ const _hoisted_3 = {
8
+ key: 0,
9
+ class: "mn-v-thin border-dark-transp-10"
10
+ };
11
+ const _sfc_main = {
12
+ __name: "ActionButtons",
13
+ props: {
14
+ buttons: {
15
+ type: Array,
16
+ required: true
17
+ }
18
+ },
19
+ setup(__props) {
20
+ const dropdownOpen = ref(false);
21
+ const handleDropdownClick = (action) => {
22
+ if (action) {
23
+ action();
24
+ }
25
+ dropdownOpen.value = false;
26
+ };
27
+ return (_ctx, _cache) => {
28
+ return openBlock(), createElementBlock("div", _hoisted_1, [
29
+ (openBlock(true), createElementBlock(Fragment, null, renderList(__props.buttons, (button, index) => {
30
+ return openBlock(), createElementBlock(Fragment, { key: index }, [
31
+ button.type !== "dropdown" ? (openBlock(), createBlock(_sfc_main$1, {
32
+ key: 0,
33
+ class: normalizeClass(["flex-1 radius-thin flex-center gap-thin", button.class]),
34
+ onClick: button.action
35
+ }, {
36
+ default: withCtx(() => [
37
+ button.icon ? (openBlock(), createBlock(resolveDynamicComponent(button.icon), {
38
+ key: 0,
39
+ fill: button.iconFill,
40
+ class: "i-medium"
41
+ }, null, 8, ["fill"])) : createCommentVNode("", true),
42
+ createTextVNode(" " + toDisplayString(button.text), 1)
43
+ ]),
44
+ _: 2
45
+ }, 1032, ["class", "onClick"])) : (openBlock(), createBlock(_sfc_main$2, {
46
+ key: 1,
47
+ label: { component: _sfc_main$3, class: "bg-light radius-thin pd-thin i-big" },
48
+ modelValue: dropdownOpen.value,
49
+ "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => dropdownOpen.value = $event),
50
+ class: "relative"
51
+ }, {
52
+ trigger: withCtx(() => [
53
+ createVNode(_sfc_main$1, {
54
+ color: "transp",
55
+ size: "medium",
56
+ class: "w-3r h-3r radius-full"
57
+ }, {
58
+ default: withCtx(() => [
59
+ createVNode(_sfc_main$3, { class: "i-medium" })
60
+ ]),
61
+ _: 1
62
+ })
63
+ ]),
64
+ default: withCtx(() => [
65
+ createElementVNode("div", _hoisted_2, [
66
+ (openBlock(true), createElementBlock(Fragment, null, renderList(button.items, (item, idx) => {
67
+ return openBlock(), createElementBlock(Fragment, { key: idx }, [
68
+ item.separator ? (openBlock(), createElementBlock("hr", _hoisted_3)) : (openBlock(), createBlock(_sfc_main$1, {
69
+ key: 1,
70
+ onClick: ($event) => handleDropdownClick(item.action),
71
+ color: item.color || "transp",
72
+ size: "small",
73
+ class: normalizeClass(["w-100 justify-start", item.class])
74
+ }, {
75
+ default: withCtx(() => [
76
+ createTextVNode(toDisplayString(item.text), 1)
77
+ ]),
78
+ _: 2
79
+ }, 1032, ["onClick", "color", "class"]))
80
+ ], 64);
81
+ }), 128))
82
+ ])
83
+ ]),
84
+ _: 2
85
+ }, 1032, ["label", "modelValue"]))
86
+ ], 64);
87
+ }), 128))
88
+ ]);
89
+ };
90
+ }
91
+ };
92
+ export {
93
+ _sfc_main as default
94
+ };
95
+ //# sourceMappingURL=ActionButtons.vue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ActionButtons.vue.js","sources":["../../../../../../../src/modules/music/components/blocks/ActionButtons.vue"],"sourcesContent":["<template>\n <div class=\"flex gap-small mn-b-medium\">\n <template v-for=\"(button, index) in buttons\" :key=\"index\">\n <!-- Regular button -->\n <Button\n v-if=\"button.type !== 'dropdown'\"\n :class=\"['flex-1 radius-thin flex-center gap-thin', button.class]\"\n @click=\"button.action\"\n >\n <component\n v-if=\"button.icon\"\n :is=\"button.icon\"\n :fill=\"button.iconFill\"\n class=\"i-medium\"\n />\n {{ button.text }}\n </Button>\n\n <!-- Dropdown button -->\n <Dropdown\n v-else\n :label=\"{component: IconEllipsis, class: 'bg-light radius-thin pd-thin i-big' }\"\n v-model=\"dropdownOpen\"\n class=\"relative\"\n >\n <template #trigger>\n <Button color=\"transp\" size=\"medium\" class=\"w-3r h-3r radius-full\">\n <IconEllipsis class=\"i-medium\" />\n </Button>\n </template>\n <template #default>\n <div class=\"dropdown-menu bg-white pd-small radius-medium shadow-big mn-t-thin\">\n <template v-for=\"(item, idx) in button.items\" :key=\"idx\">\n <hr v-if=\"item.separator\" class=\"mn-v-thin border-dark-transp-10\" />\n <Button\n v-else\n @click=\"handleDropdownClick(item.action)\"\n :color=\"item.color || 'transp'\"\n size=\"small\"\n class=\"w-100 justify-start\"\n :class=\"item.class\"\n >\n {{ item.text }}\n </Button>\n </template>\n </div>\n </template>\n </Dropdown>\n </template>\n </div>\n</template>\n\n<script setup>\nimport { ref } from 'vue';\nimport Button from '@martyrs/src/components/Button/Button.vue';\nimport Dropdown from '@martyrs/src/components/Dropdown/Dropdown.vue';\nimport IconEllipsis from '@martyrs/src/modules/icons/navigation/IconEllipsis.vue';\n\nconst props = defineProps({\n buttons: {\n type: Array,\n required: true\n }\n});\n\nconst dropdownOpen = ref(false);\n\nconst handleDropdownClick = (action) => {\n if (action) {\n action();\n }\n dropdownOpen.value = false;\n};\n</script>\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;AAiEA,UAAM,eAAe,IAAI,KAAK;AAE9B,UAAM,sBAAsB,CAAC,WAAW;AACtC,UAAI,QAAQ;AACV,eAAM;AAAA,MACR;AACA,mBAAa,QAAQ;AAAA,IACvB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,6 +1,6 @@
1
1
  import { computed, resolveComponent, createBlock, openBlock, withCtx, createElementVNode, createVNode, createElementBlock, createCommentVNode, withModifiers, toDisplayString } from "vue";
2
2
  import Media from "../../../../components/Media/Media.vue.js";
3
- import _sfc_main$1 from "../../../../components/Button/Button.vue.js";
3
+ import _sfc_main$1 from "../../../../components/Button/Button.vue2.js";
4
4
  import _sfc_main$2 from "../../../icons/navigation/IconPlay.vue.js";
5
5
  import { actions } from "../../store/player.js";
6
6
  import { state, actions as actions$1 } from "../../store/albums.js";
@@ -12,7 +12,10 @@ const _hoisted_2 = {
12
12
  class: "album-overlay pos-absolute pos-t-0 pos-l-0 w-100 h-100 flex-center flex transition-cubic-in-out"
13
13
  };
14
14
  const _hoisted_3 = { class: "album-info pd-medium bg-light" };
15
- const _hoisted_4 = { class: "mn-b-thin t-medium t-truncate" };
15
+ const _hoisted_4 = {
16
+ class: "mn-b-thin t-medium t-truncate",
17
+ style: { "height": "1.50rem" }
18
+ };
16
19
  const _hoisted_5 = { class: "t-transp t-small t-truncate" };
17
20
  const _sfc_main = {
18
21
  __name: "AlbumCard",
@@ -87,7 +90,7 @@ const _sfc_main = {
87
90
  };
88
91
  }
89
92
  };
90
- const AlbumCard = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-faf7f060"]]);
93
+ const AlbumCard = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-7bd0bb4d"]]);
91
94
  export {
92
95
  AlbumCard as default
93
96
  };
@@ -1 +1 @@
1
- {"version":3,"file":"AlbumCard.vue.js","sources":["../../../../../../../src/modules/music/components/cards/AlbumCard.vue"],"sourcesContent":["<!-- components/cards/AlbumCard.vue -->\n<template>\n <router-link \n :to=\"{ name: 'album', params: { url: album.url } }\" \n class=\"album-card d-block radius-medium o-hidden\"\n >\n <div class=\"album-cover pos-relative\">\n <Media \n :url=\"album.coverArt || album.coverUrl || '/logo/logo-placeholder.jpg'\" \n class=\"w-100 aspect-1x1 object-fit-cover\"\n />\n <div v-if=\"album.totalTracks && album.totalTracks > 0\" class=\"album-overlay pos-absolute pos-t-0 pos-l-0 w-100 h-100 flex-center flex transition-cubic-in-out\">\n <Button \n @click.stop.prevent=\"playAlbum(album)\" \n class=\"play-button i-big bg-main radius-round flex-center flex aspect-1x1\"\n :showLoader=\"false\"\n :showSucces=\"false\"\n >\n <IconPlay class=\"i-small\" fill=\"rgb(var(--white))\" />\n </Button>\n </div>\n </div>\n <div class=\"album-info pd-medium bg-light\">\n <h3 class=\"mn-b-thin t-medium t-truncate\">{{ album.title }}</h3>\n <p class=\"t-transp t-small t-truncate\">{{ albumInfo }}</p>\n </div>\n </router-link>\n</template>\n\n<script setup>\nimport { computed } from 'vue';\nimport Media from '@martyrs/src/components/Media/Media.vue';\nimport Button from '@martyrs/src/components/Button/Button.vue';\nimport IconPlay from '@martyrs/src/modules/icons/navigation/IconPlay.vue';\n\n// Import player store & albums store\nimport { actions as playerActions } from '../../store/player.js';\nimport { state as albumsState, actions as albumsActions } from '../../store/albums.js';\n\nconst props = defineProps({\n album: {\n type: Object,\n required: true\n }\n});\n\n// Computed properties\nconst albumInfo = computed(() => {\n const releaseYear = props.album.releaseDate ? new Date(props.album.releaseDate).getFullYear() : '';\n let artistName = 'Unknown Artist';\n \n // Handle artists array (model uses 'artists' not 'artist')\n if (props.album.artists && props.album.artists.length > 0) {\n // If populated, artists[0] will have name property\n if (props.album.artists[0]?.name) {\n artistName = props.album.artists.map(artist => artist.name).join(', ');\n } else if (typeof props.album.artists[0] === 'string') {\n // If not populated, it might be just IDs\n artistName = 'Various Artists';\n }\n } else if (props.album.artist?.name) {\n // Fallback for old data structure\n artistName = props.album.artist.name;\n }\n \n return releaseYear ? `${artistName} • ${releaseYear}` : artistName;\n});\n\n// Methods\nconst playAlbum = async (album) => {\n // If album tracks are already loaded in state, use those\n if (albumsState.currentAlbum && albumsState.currentAlbum._id === album._id && albumsState.currentAlbumTracks.length > 0) {\n playerActions.setQueue(albumsState.currentAlbumTracks);\n return;\n }\n \n // Otherwise fetch tracks for this album\n const tracks = await albumsActions.fetchAlbumTracks(album._id);\n \n if (tracks && tracks.length > 0) {\n playerActions.setQueue(tracks);\n }\n};\n</script>\n\n<style scoped>\n.album-card {\n transition: transform 0.3s ease;\n}\n\n.album-card:hover {\n transform: translateY(-5px);\n}\n\n.album-overlay {\n background: rgba(0, 0, 0, 0.5);\n opacity: 0;\n transition: opacity 0.3s ease;\n}\n\n.album-card:hover .album-overlay {\n opacity: 1;\n}\n\n.play-button {\n transform: scale(0.8);\n transition: transform 0.3s ease;\n}\n\n.album-card:hover .play-button {\n transform: scale(1);\n}\n</style>"],"names":["albumsState","playerActions","albumsActions"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAuCA,UAAM,QAAQ;AAQd,UAAM,YAAY,SAAS,MAAM;AAC/B,YAAM,cAAc,MAAM,MAAM,cAAc,IAAI,KAAK,MAAM,MAAM,WAAW,EAAE,YAAW,IAAK;AAChG,UAAI,aAAa;AAGjB,UAAI,MAAM,MAAM,WAAW,MAAM,MAAM,QAAQ,SAAS,GAAG;AAEzD,YAAI,MAAM,MAAM,QAAQ,CAAC,GAAG,MAAM;AAChC,uBAAa,MAAM,MAAM,QAAQ,IAAI,YAAU,OAAO,IAAI,EAAE,KAAK,IAAI;AAAA,QACvE,WAAW,OAAO,MAAM,MAAM,QAAQ,CAAC,MAAM,UAAU;AAErD,uBAAa;AAAA,QACf;AAAA,MACF,WAAW,MAAM,MAAM,QAAQ,MAAM;AAEnC,qBAAa,MAAM,MAAM,OAAO;AAAA,MAClC;AAEA,aAAO,cAAc,GAAG,UAAU,MAAM,WAAW,KAAK;AAAA,IAC1D,CAAC;AAGD,UAAM,YAAY,OAAO,UAAU;AAEjC,UAAIA,MAAY,gBAAgBA,MAAY,aAAa,QAAQ,MAAM,OAAOA,MAAY,mBAAmB,SAAS,GAAG;AACvHC,gBAAc,SAASD,MAAY,kBAAkB;AACrD;AAAA,MACF;AAGA,YAAM,SAAS,MAAME,UAAc,iBAAiB,MAAM,GAAG;AAE7D,UAAI,UAAU,OAAO,SAAS,GAAG;AAC/BD,gBAAc,SAAS,MAAM;AAAA,MAC/B;AAAA,IACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"AlbumCard.vue.js","sources":["../../../../../../../src/modules/music/components/cards/AlbumCard.vue"],"sourcesContent":["<!-- components/cards/AlbumCard.vue -->\n<template>\n <router-link \n :to=\"{ name: 'album', params: { url: album.url } }\" \n class=\"album-card d-block radius-medium o-hidden\"\n >\n <div class=\"album-cover pos-relative\">\n <Media \n :url=\"album.coverArt || album.coverUrl || '/logo/logo-placeholder.jpg'\" \n class=\"w-100 aspect-1x1 object-fit-cover\"\n />\n <div v-if=\"album.totalTracks && album.totalTracks > 0\" class=\"album-overlay pos-absolute pos-t-0 pos-l-0 w-100 h-100 flex-center flex transition-cubic-in-out\">\n <Button \n @click.stop.prevent=\"playAlbum(album)\" \n class=\"play-button i-big bg-main radius-round flex-center flex aspect-1x1\"\n :showLoader=\"false\"\n :showSucces=\"false\"\n >\n <IconPlay class=\"i-small\" fill=\"rgb(var(--white))\" />\n </Button>\n </div>\n </div>\n <div class=\"album-info pd-medium bg-light\">\n <h3 class=\"mn-b-thin t-medium t-truncate\" style=\"height: 1.50rem\">{{ album.title }}</h3>\n <p class=\"t-transp t-small t-truncate\">{{ albumInfo }}</p>\n </div>\n </router-link>\n</template>\n\n<script setup>\nimport { computed } from 'vue';\nimport Media from '@martyrs/src/components/Media/Media.vue';\nimport Button from '@martyrs/src/components/Button/Button.vue';\nimport IconPlay from '@martyrs/src/modules/icons/navigation/IconPlay.vue';\n\n// Import player store & albums store\nimport { actions as playerActions } from '../../store/player.js';\nimport { state as albumsState, actions as albumsActions } from '../../store/albums.js';\n\nconst props = defineProps({\n album: {\n type: Object,\n required: true\n }\n});\n\n// Computed properties\nconst albumInfo = computed(() => {\n const releaseYear = props.album.releaseDate ? new Date(props.album.releaseDate).getFullYear() : '';\n let artistName = 'Unknown Artist';\n \n // Handle artists array (model uses 'artists' not 'artist')\n if (props.album.artists && props.album.artists.length > 0) {\n // If populated, artists[0] will have name property\n if (props.album.artists[0]?.name) {\n artistName = props.album.artists.map(artist => artist.name).join(', ');\n } else if (typeof props.album.artists[0] === 'string') {\n // If not populated, it might be just IDs\n artistName = 'Various Artists';\n }\n } else if (props.album.artist?.name) {\n // Fallback for old data structure\n artistName = props.album.artist.name;\n }\n \n return releaseYear ? `${artistName} • ${releaseYear}` : artistName;\n});\n\n// Methods\nconst playAlbum = async (album) => {\n // If album tracks are already loaded in state, use those\n if (albumsState.currentAlbum && albumsState.currentAlbum._id === album._id && albumsState.currentAlbumTracks.length > 0) {\n playerActions.setQueue(albumsState.currentAlbumTracks);\n return;\n }\n \n // Otherwise fetch tracks for this album\n const tracks = await albumsActions.fetchAlbumTracks(album._id);\n \n if (tracks && tracks.length > 0) {\n playerActions.setQueue(tracks);\n }\n};\n</script>\n\n<style scoped>\n.album-card {\n transition: transform 0.3s ease;\n}\n\n.album-card:hover {\n transform: translateY(-5px);\n}\n\n.album-overlay {\n background: rgba(0, 0, 0, 0.5);\n opacity: 0;\n transition: opacity 0.3s ease;\n}\n\n.album-card:hover .album-overlay {\n opacity: 1;\n}\n\n.play-button {\n transform: scale(0.8);\n transition: transform 0.3s ease;\n}\n\n.album-card:hover .play-button {\n transform: scale(1);\n}\n</style>"],"names":["albumsState","playerActions","albumsActions"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuCA,UAAM,QAAQ;AAQd,UAAM,YAAY,SAAS,MAAM;AAC/B,YAAM,cAAc,MAAM,MAAM,cAAc,IAAI,KAAK,MAAM,MAAM,WAAW,EAAE,YAAW,IAAK;AAChG,UAAI,aAAa;AAGjB,UAAI,MAAM,MAAM,WAAW,MAAM,MAAM,QAAQ,SAAS,GAAG;AAEzD,YAAI,MAAM,MAAM,QAAQ,CAAC,GAAG,MAAM;AAChC,uBAAa,MAAM,MAAM,QAAQ,IAAI,YAAU,OAAO,IAAI,EAAE,KAAK,IAAI;AAAA,QACvE,WAAW,OAAO,MAAM,MAAM,QAAQ,CAAC,MAAM,UAAU;AAErD,uBAAa;AAAA,QACf;AAAA,MACF,WAAW,MAAM,MAAM,QAAQ,MAAM;AAEnC,qBAAa,MAAM,MAAM,OAAO;AAAA,MAClC;AAEA,aAAO,cAAc,GAAG,UAAU,MAAM,WAAW,KAAK;AAAA,IAC1D,CAAC;AAGD,UAAM,YAAY,OAAO,UAAU;AAEjC,UAAIA,MAAY,gBAAgBA,MAAY,aAAa,QAAQ,MAAM,OAAOA,MAAY,mBAAmB,SAAS,GAAG;AACvHC,gBAAc,SAASD,MAAY,kBAAkB;AACrD;AAAA,MACF;AAGA,YAAM,SAAS,MAAME,UAAc,iBAAiB,MAAM,GAAG;AAE7D,UAAI,UAAU,OAAO,SAAS,GAAG;AAC/BD,gBAAc,SAAS,MAAM;AAAA,MAC/B;AAAA,IACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,10 +1,10 @@
1
- import { resolveComponent, createElementBlock, openBlock, createVNode, createBlock, createCommentVNode, withCtx, createElementVNode, toDisplayString, createTextVNode } from "vue";
2
- import _sfc_main$2 from "../../../../components/Button/Button.vue.js";
1
+ import { resolveComponent, createBlock, openBlock, withCtx, createElementVNode, createCommentVNode, createElementBlock, toDisplayString, createTextVNode } from "vue";
2
+ import _sfc_main$2 from "../../../../components/Button/Button.vue2.js";
3
3
  import Media from "../../../../components/Media/Media.vue.js";
4
4
  import _sfc_main$1 from "../../../icons/navigation/IconCheckmark.vue.js";
5
5
  /* empty css */
6
6
  import _export_sfc from "../../../../../../_virtual/_plugin-vue_export-helper.js";
7
- const _hoisted_1 = { class: "artist-card bg-light pd-medium radius-medium flex flex-center gap-big" };
7
+ const _hoisted_1 = { class: "flex flex-nowrap flex-v-center gap-thin" };
8
8
  const _hoisted_2 = { class: "artist-avatar" };
9
9
  const _hoisted_3 = {
10
10
  key: 1,
@@ -45,12 +45,12 @@ const _sfc_main = {
45
45
  };
46
46
  return (_ctx, _cache) => {
47
47
  const _component_router_link = resolveComponent("router-link");
48
- return openBlock(), createElementBlock("div", _hoisted_1, [
49
- createVNode(_component_router_link, {
50
- to: __props.artist.url ? { name: "artist", params: { url: __props.artist.url } } : __props.artist.to,
51
- class: "flex flex-v-center gap-thin flex-1 hover-opacity"
52
- }, {
53
- default: withCtx(() => [
48
+ return openBlock(), createBlock(_component_router_link, {
49
+ to: __props.artist.url ? { name: "artist", params: { url: __props.artist.url } } : __props.artist.to,
50
+ class: "artist-card bg-light pd-medium radius-medium flex flex-v-center flex-justify-between gap-thin flex-1 hover-opacity"
51
+ }, {
52
+ default: withCtx(() => [
53
+ createElementVNode("div", _hoisted_1, [
54
54
  createElementVNode("div", _hoisted_2, [
55
55
  __props.artist.photoUrl ? (openBlock(), createBlock(Media, {
56
56
  key: 0,
@@ -70,25 +70,25 @@ const _sfc_main = {
70
70
  createElementVNode("span", _hoisted_6, toDisplayString(__props.artistType), 1)
71
71
  ])
72
72
  ]),
73
- _: 1
74
- }, 8, ["to"]),
75
- __props.showFollowButton ? (openBlock(), createBlock(_sfc_main$2, {
76
- key: 0,
77
- onClick: handleFollowClick,
78
- color: __props.isFollowing ? "primary" : "transp",
79
- size: "small",
80
- class: "bg-main"
81
- }, {
82
- default: withCtx(() => [
83
- createTextVNode(toDisplayString(__props.isFollowing ? "Following" : "Follow"), 1)
84
- ]),
85
- _: 1
86
- }, 8, ["color"])) : createCommentVNode("", true)
87
- ]);
73
+ __props.showFollowButton ? (openBlock(), createBlock(_sfc_main$2, {
74
+ key: 0,
75
+ onClick: handleFollowClick,
76
+ color: __props.isFollowing ? "primary" : "transp",
77
+ size: "small",
78
+ class: "bg-main"
79
+ }, {
80
+ default: withCtx(() => [
81
+ createTextVNode(toDisplayString(__props.isFollowing ? "Following" : "Follow"), 1)
82
+ ]),
83
+ _: 1
84
+ }, 8, ["color"])) : createCommentVNode("", true)
85
+ ]),
86
+ _: 1
87
+ }, 8, ["to"]);
88
88
  };
89
89
  }
90
90
  };
91
- const ArtistCardSmall = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-7fd022f7"]]);
91
+ const ArtistCardSmall = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-64fdf510"]]);
92
92
  export {
93
93
  ArtistCardSmall as default
94
94
  };
@@ -1 +1 @@
1
- {"version":3,"file":"ArtistCardSmall.vue.js","sources":["../../../../../../../src/modules/music/components/cards/ArtistCardSmall.vue"],"sourcesContent":["<!-- components/cards/ArtistCard.vue -->\n<template>\n <div class=\"artist-card bg-light pd-medium radius-medium flex flex-center gap-big\">\n <router-link \n :to=\"artist.url ? { name: 'artist', params: { url: artist.url } } : artist.to\"\n class=\"flex flex-v-center gap-thin flex-1 hover-opacity\"\n >\n <div class=\"artist-avatar\">\n <Media \n v-if=\"artist.photoUrl\"\n :url=\"artist.photoUrl\"\n :alt=\"artist.name\"\n class=\"w-4r h-4r radius-full object-fit-cover\"\n />\n <div v-else class=\"w-4r h-4r flex flex center radius-extra radius-full bg-main flex-center\">\n {{ artist.name.charAt(0) }}\n </div>\n </div>\n\n <div>\n <div class=\"flex items-center gap-thin\">\n <span class=\"mn-b-thin\">{{ artist.name }}</span>\n <IconVerified v-if=\"artist.isVerified\" class=\"w-1r h-1r t-primary\" />\n </div>\n <span class=\"t-small t-transp\">{{ artistType }}</span>\n </div>\n </router-link>\n\n <Button \n v-if=\"showFollowButton\"\n @click=\"handleFollowClick\"\n :color=\"isFollowing ? 'primary' : 'transp'\"\n size=\"small\"\n class=\"bg-main\"\n >\n {{ isFollowing ? 'Following' : 'Follow' }}\n </Button>\n </div>\n</template>\n\n<script setup>\nimport { computed } from 'vue';\nimport Button from '@martyrs/src/components/Button/Button.vue';\nimport Media from '@martyrs/src/components/Media/Media.vue';\nimport IconVerified from '@martyrs/src/modules/icons/navigation/IconCheckmark.vue';\n\nconst props = defineProps({\n artist: {\n type: Object,\n required: true,\n validator: (value) => {\n return value._id && value.name && value.url;\n }\n },\n isFollowing: {\n type: Boolean,\n default: false\n },\n showFollowButton: {\n type: Boolean,\n default: true\n },\n artistType: {\n type: String,\n default: 'Artist'\n }\n});\n\nconst emit = defineEmits(['toggle-follow']);\n\nconst handleFollowClick = () => {\n emit('toggle-follow', props.artist._id);\n};\n</script>\n\n<style scoped>\n.artist-card {\n transition: all 0.2s ease;\n}\n\n.artist-card:hover {\n transform: translateY(-5px);\n}\n\n.artist-avatar img {\n transition: transform 0.2s ease;\n}\n\n.artist-card:hover .artist-avatar img {\n transform: scale(1.05);\n}\n</style>"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8CA,UAAM,QAAQ;AAsBd,UAAM,OAAO;AAEb,UAAM,oBAAoB,MAAM;AAC9B,WAAK,iBAAiB,MAAM,OAAO,GAAG;AAAA,IACxC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"ArtistCardSmall.vue.js","sources":["../../../../../../../src/modules/music/components/cards/ArtistCardSmall.vue"],"sourcesContent":["<!-- components/cards/ArtistCard.vue -->\n<template>\n <router-link\n :to=\"artist.url ? { name: 'artist', params: { url: artist.url } } : artist.to\"\n class=\"artist-card bg-light pd-medium radius-medium flex flex-v-center flex-justify-between gap-thin flex-1 hover-opacity\"\n >\n <div\n class=\"flex flex-nowrap flex-v-center gap-thin\"\n >\n <div class=\"artist-avatar\">\n <Media \n v-if=\"artist.photoUrl\"\n :url=\"artist.photoUrl\"\n :alt=\"artist.name\"\n class=\"w-4r h-4r radius-full object-fit-cover\"\n />\n <div v-else class=\"w-4r h-4r flex flex center radius-extra radius-full bg-main flex-center\">\n {{ artist.name.charAt(0) }}\n </div>\n </div>\n\n <div>\n <div class=\"flex items-center gap-thin\">\n <span class=\"mn-b-thin\">{{ artist.name }}</span>\n <IconVerified v-if=\"artist.isVerified\" class=\"w-1r h-1r t-primary\" />\n </div>\n <span class=\"t-small t-transp\">{{ artistType }}</span>\n </div>\n </div>\n\n <Button \n v-if=\"showFollowButton\"\n @click=\"handleFollowClick\"\n :color=\"isFollowing ? 'primary' : 'transp'\"\n size=\"small\"\n class=\"bg-main\"\n >\n {{ isFollowing ? 'Following' : 'Follow' }}\n </Button>\n </router-link>\n</template>\n\n<script setup>\nimport { computed } from 'vue';\nimport Button from '@martyrs/src/components/Button/Button.vue';\nimport Media from '@martyrs/src/components/Media/Media.vue';\nimport IconVerified from '@martyrs/src/modules/icons/navigation/IconCheckmark.vue';\n\nconst props = defineProps({\n artist: {\n type: Object,\n required: true,\n validator: (value) => {\n return value._id && value.name && value.url;\n }\n },\n isFollowing: {\n type: Boolean,\n default: false\n },\n showFollowButton: {\n type: Boolean,\n default: true\n },\n artistType: {\n type: String,\n default: 'Artist'\n }\n});\n\nconst emit = defineEmits(['toggle-follow']);\n\nconst handleFollowClick = () => {\n emit('toggle-follow', props.artist._id);\n};\n</script>\n\n<style scoped>\n.artist-card {\n transition: all 0.2s ease;\n}\n\n.artist-card:hover {\n transform: translateY(-5px);\n}\n\n.artist-avatar img {\n transition: transform 0.2s ease;\n}\n\n.artist-card:hover .artist-avatar img {\n transform: scale(1.05);\n}\n</style>"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgDA,UAAM,QAAQ;AAsBd,UAAM,OAAO;AAEb,UAAM,oBAAoB,MAAM;AAC9B,WAAK,iBAAiB,MAAM,OAAO,GAAG;AAAA,IACxC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,6 +1,6 @@
1
1
  import { computed, resolveComponent, createBlock, openBlock, withCtx, createElementVNode, createVNode, createElementBlock, createCommentVNode, withModifiers, toDisplayString } from "vue";
2
2
  import Media from "../../../../components/Media/Media.vue.js";
3
- import _sfc_main$1 from "../../../../components/Button/Button.vue.js";
3
+ import _sfc_main$1 from "../../../../components/Button/Button.vue2.js";
4
4
  import _sfc_main$2 from "../../../icons/navigation/IconPlay.vue.js";
5
5
  import { actions as actions$1 } from "../../store/player.js";
6
6
  import { actions, state } from "../../store/playlists.js";
@@ -1,5 +1,5 @@
1
1
  import { ref, resolveComponent, createElementBlock, openBlock, normalizeClass, createElementVNode, createCommentVNode, createBlock, toDisplayString, withModifiers, withCtx, createVNode, createTextVNode } from "vue";
2
- import _sfc_main$1 from "../../../../components/Button/Button.vue.js";
2
+ import _sfc_main$1 from "../../../../components/Button/Button.vue2.js";
3
3
  import Media from "../../../../components/Media/Media.vue.js";
4
4
  import _sfc_main$2 from "../../../icons/navigation/IconPlay.vue.js";
5
5
  import _sfc_main$3 from "../../../icons/navigation/IconPause.vue.js";
@@ -1,9 +1,9 @@
1
1
  import { reactive, ref, watch, onMounted, createElementBlock, openBlock, createElementVNode, toDisplayString, withModifiers, createVNode, withCtx, createCommentVNode, createTextVNode } from "vue";
2
2
  import { useRouter, useRoute } from "vue-router";
3
- import Field from "../../../../components/Field/Field.vue2.js";
3
+ import Field from "../../../../components/Field/Field.vue.js";
4
4
  import _sfc_main$1 from "../../../../components/Block/Block.vue.js";
5
- import _sfc_main$3 from "../../../../components/Button/Button.vue.js";
6
- import Select from "../../../../components/Select/Select.vue2.js";
5
+ import _sfc_main$3 from "../../../../components/Button/Button.vue2.js";
6
+ import Select from "../../../../components/Select/Select.vue.js";
7
7
  import UploadImage from "../../../../components/UploadImage/UploadImage.vue.js";
8
8
  import _sfc_main$2 from "../../../icons/navigation/IconCross.vue.js";
9
9
  import BlockMultiselect from "../../../core/views/components/blocks/BlockMultiselect.vue.js";
@@ -1,12 +1,12 @@
1
1
  import { reactive, ref, watch, onMounted, createElementBlock, openBlock, createElementVNode, toDisplayString, withModifiers, createVNode, withCtx, createCommentVNode, createTextVNode } from "vue";
2
2
  import { useRouter, useRoute } from "vue-router";
3
- import Field from "../../../../components/Field/Field.vue2.js";
3
+ import Field from "../../../../components/Field/Field.vue.js";
4
4
  import _sfc_main$1 from "../../../../components/Block/Block.vue.js";
5
- import _sfc_main$4 from "../../../../components/Button/Button.vue.js";
5
+ import _sfc_main$4 from "../../../../components/Button/Button.vue2.js";
6
6
  import _sfc_main$3 from "../../../../components/Checkbox/Checkbox.vue.js";
7
- import Select from "../../../../components/Select/Select.vue2.js";
7
+ import Select from "../../../../components/Select/Select.vue.js";
8
8
  import UploadImage from "../../../../components/UploadImage/UploadImage.vue.js";
9
- /* empty css */
9
+ /* empty css */
10
10
  import BlockMultiselect from "../../../core/views/components/blocks/BlockMultiselect.vue.js";
11
11
  import _sfc_main$2 from "../../../icons/navigation/IconCross.vue.js";
12
12
  import { actions as actions$1 } from "../../store/artists.js";
@@ -1,8 +1,8 @@
1
1
  import { reactive, ref, watch, computed, onMounted, createElementBlock, openBlock, createElementVNode, toDisplayString, withModifiers, createVNode, withCtx, createCommentVNode, createTextVNode } from "vue";
2
2
  import { useRouter, useRoute } from "vue-router";
3
- import Field from "../../../../components/Field/Field.vue2.js";
3
+ import Field from "../../../../components/Field/Field.vue.js";
4
4
  import _sfc_main$1 from "../../../../components/Block/Block.vue.js";
5
- import _sfc_main$4 from "../../../../components/Button/Button.vue.js";
5
+ import _sfc_main$4 from "../../../../components/Button/Button.vue2.js";
6
6
  import _sfc_main$3 from "../../../../components/Radio/Radio.vue.js";
7
7
  import UploadImage from "../../../../components/UploadImage/UploadImage.vue.js";
8
8
  import _sfc_main$2 from "../../../icons/navigation/IconCross.vue.js";
@@ -1,5 +1,5 @@
1
1
  import { ref, watch, onMounted, createElementBlock, openBlock, createVNode, withDirectives, createBlock, createCommentVNode, createElementVNode, withKeys, vModelText, withCtx } from "vue";
2
- import _sfc_main$2 from "../../../../components/Button/Button.vue.js";
2
+ import _sfc_main$2 from "../../../../components/Button/Button.vue2.js";
3
3
  import _sfc_main$1 from "../../../icons/navigation/IconSearch.vue.js";
4
4
  import _sfc_main$3 from "../../../icons/navigation/IconCross.vue.js";
5
5
  /* empty css */
@@ -1,10 +1,10 @@
1
1
  import { reactive, ref, watch, onMounted, createElementBlock, openBlock, createElementVNode, toDisplayString, withModifiers, createVNode, withCtx, unref, createCommentVNode, createTextVNode } from "vue";
2
2
  import { useRouter, useRoute } from "vue-router";
3
- import Field from "../../../../components/Field/Field.vue2.js";
3
+ import Field from "../../../../components/Field/Field.vue.js";
4
4
  import _sfc_main$1 from "../../../../components/Block/Block.vue.js";
5
- import _sfc_main$4 from "../../../../components/Button/Button.vue.js";
5
+ import _sfc_main$4 from "../../../../components/Button/Button.vue2.js";
6
6
  import _sfc_main$3 from "../../../../components/Checkbox/Checkbox.vue.js";
7
- import Select from "../../../../components/Select/Select.vue2.js";
7
+ import Select from "../../../../components/Select/Select.vue.js";
8
8
  import UploadImage from "../../../../components/UploadImage/UploadImage.vue.js";
9
9
  import Upload from "../../../../components/Upload/Upload.vue2.js";
10
10
  import _sfc_main$2 from "../../../icons/navigation/IconCross.vue.js";
@@ -1,17 +1,42 @@
1
- import { computed, createBlock, createCommentVNode, openBlock } from "vue";
1
+ import { computed, watch, createElementBlock, openBlock, createBlock, createCommentVNode, unref, withCtx, createVNode } from "vue";
2
+ import { useRoute } from "vue-router";
2
3
  import MusicPlayer from "../player/MusicPlayer.vue.js";
3
- import { state } from "../../store/player.js";
4
+ import FullscreenPlayer from "../player/FullscreenPlayer.vue.js";
5
+ import _sfc_main$1 from "../../../../components/BottomSheet/BottomSheet.vue.js";
6
+ import { state, actions } from "../../store/player.js";
7
+ /* empty css */
4
8
  const _sfc_main = {
5
9
  __name: "MusicBottomPlayer",
6
10
  setup(__props) {
11
+ const route = useRoute();
7
12
  const currentTrack = computed(() => {
8
13
  return state.currentTrack;
9
14
  });
15
+ const showFullPlayer = computed(() => {
16
+ return state.showFullPlayer;
17
+ });
18
+ watch(() => route.path, () => {
19
+ if (state.showFullPlayer) {
20
+ actions.toggleFullPlayer();
21
+ }
22
+ });
10
23
  return (_ctx, _cache) => {
11
- return currentTrack.value ? (openBlock(), createBlock(MusicPlayer, {
12
- key: 0,
13
- class: "pos-absolute pos-b-0 w-100"
14
- })) : createCommentVNode("", true);
24
+ return openBlock(), createElementBlock("div", null, [
25
+ currentTrack.value && !showFullPlayer.value ? (openBlock(), createBlock(MusicPlayer, {
26
+ key: 0,
27
+ class: "pos-absolute pos-b-0 w-100"
28
+ })) : createCommentVNode("", true),
29
+ showFullPlayer.value ? (openBlock(), createBlock(_sfc_main$1, {
30
+ key: 1,
31
+ show: showFullPlayer.value,
32
+ onToggle: _cache[0] || (_cache[0] = ($event) => unref(actions).toggleFullPlayer())
33
+ }, {
34
+ default: withCtx(() => [
35
+ createVNode(FullscreenPlayer)
36
+ ]),
37
+ _: 1
38
+ }, 8, ["show"])) : createCommentVNode("", true)
39
+ ]);
15
40
  };
16
41
  }
17
42
  };