@ozdao/martyrs 0.2.570 → 0.2.572

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (832) hide show
  1. package/dist/_virtual/dayjs.min.js +1 -1
  2. package/dist/_virtual/weekOfYear.js +1 -1
  3. package/dist/builder.js +1248 -106
  4. package/dist/{main-BFvlam0J.js → main-BfEQkhXS.js} +1173 -1191
  5. package/dist/martyrs/dist/{main-BFvlam0J.js → main-BfEQkhXS.js} +94 -112
  6. package/dist/martyrs/dist/main-BfEQkhXS.js.map +1 -0
  7. package/dist/martyrs/dist/{web-CH5wzMHy.js → web-BqTV9va1.js} +3 -3
  8. package/dist/martyrs/dist/{web-CH5wzMHy.js.map → web-BqTV9va1.js.map} +1 -1
  9. package/dist/martyrs/node_modules/.pnpm/{@capacitor_core@7.0.1 → @capacitor_core@7.4.4}/node_modules/@capacitor/core/dist/index.js +2 -1
  10. package/dist/martyrs/node_modules/.pnpm/@capacitor_core@7.4.4/node_modules/@capacitor/core/dist/index.js.map +1 -0
  11. package/dist/martyrs/node_modules/.pnpm/{@capacitor_preferences@7.0.0_@capacitor_core@7.0.1 → @capacitor_preferences@7.0.2_@capacitor_core@7.4.4}/node_modules/@capacitor/preferences/dist/esm/index.js +1 -1
  12. package/dist/martyrs/node_modules/.pnpm/{@capacitor_preferences@7.0.0_@capacitor_core@7.0.1 → @capacitor_preferences@7.0.2_@capacitor_core@7.4.4}/node_modules/@capacitor/preferences/dist/esm/index.js.map +1 -1
  13. package/dist/martyrs/node_modules/.pnpm/{@capacitor_preferences@7.0.0_@capacitor_core@7.0.1 → @capacitor_preferences@7.0.2_@capacitor_core@7.4.4}/node_modules/@capacitor/preferences/dist/esm/web.js +1 -1
  14. package/dist/martyrs/node_modules/.pnpm/{@capacitor_preferences@7.0.0_@capacitor_core@7.0.1 → @capacitor_preferences@7.0.2_@capacitor_core@7.4.4}/node_modules/@capacitor/preferences/dist/esm/web.js.map +1 -1
  15. package/dist/{node_modules/.pnpm/@vue_server-renderer@3.5.13_vue@3.5.13_typescript@5.8.3_ → martyrs}/node_modules/@vue/server-renderer/dist/server-renderer.esm-bundler.js +1 -1
  16. package/dist/martyrs/node_modules/@vue/server-renderer/dist/server-renderer.esm-bundler.js.map +1 -0
  17. package/dist/martyrs/node_modules/@vue/shared/dist/shared.esm-bundler.js.map +1 -0
  18. package/dist/{node_modules/.pnpm/dayjs@1.11.13 → martyrs}/node_modules/dayjs/dayjs.min.js +1 -1
  19. package/dist/martyrs/node_modules/dayjs/dayjs.min.js.map +1 -0
  20. package/dist/{node_modules/.pnpm/dayjs@1.11.13 → martyrs}/node_modules/dayjs/plugin/weekOfYear.js +1 -1
  21. package/dist/martyrs/node_modules/dayjs/plugin/weekOfYear.js.map +1 -0
  22. package/dist/martyrs/node_modules/uuid/dist/esm-browser/regex.js +5 -0
  23. package/dist/martyrs/node_modules/uuid/dist/esm-browser/regex.js.map +1 -0
  24. package/dist/martyrs/node_modules/uuid/dist/esm-browser/rng.js +15 -0
  25. package/dist/martyrs/node_modules/uuid/dist/esm-browser/rng.js.map +1 -0
  26. package/dist/martyrs/node_modules/uuid/dist/esm-browser/stringify.js +17 -0
  27. package/dist/martyrs/node_modules/uuid/dist/esm-browser/stringify.js.map +1 -0
  28. package/dist/martyrs/node_modules/uuid/dist/esm-browser/v4.js +13 -0
  29. package/dist/martyrs/node_modules/uuid/dist/esm-browser/v4.js.map +1 -0
  30. package/dist/martyrs/node_modules/uuid/dist/esm-browser/validate.js +8 -0
  31. package/dist/martyrs/node_modules/uuid/dist/esm-browser/validate.js.map +1 -0
  32. package/dist/martyrs/src/components/Block/Block.vue.js +1 -1
  33. package/dist/martyrs/src/components/Block/Block.vue.js.map +1 -1
  34. package/dist/martyrs/src/components/BottomSheet/BottomSheet.vue.js +1 -1
  35. package/dist/martyrs/src/components/BottomSheet/BottomSheet.vue.js.map +1 -1
  36. package/dist/martyrs/src/components/Button/{Button.vue.js → Button.vue2.js} +2 -2
  37. package/dist/martyrs/src/components/Button/Button.vue2.js.map +1 -0
  38. package/dist/martyrs/src/components/Calendar/Calendar.vue2.js +6 -6
  39. package/dist/martyrs/src/components/Calendar/Calendar.vue2.js.map +1 -1
  40. package/dist/martyrs/src/components/Checkbox/Checkbox.vue.js +2 -2
  41. package/dist/martyrs/src/components/Checkbox/Checkbox.vue.js.map +1 -1
  42. package/dist/martyrs/src/components/Chips/Chips.vue.js +2 -2
  43. package/dist/martyrs/src/components/Countdown/Countdown.vue.js +5 -5
  44. package/dist/martyrs/src/components/Countdown/Countdown.vue.js.map +1 -1
  45. package/dist/martyrs/src/components/DatePicker/DatePicker.vue.js +4 -4
  46. package/dist/martyrs/src/components/DatePicker/DatePicker.vue.js.map +1 -1
  47. package/dist/martyrs/src/components/Dropdown/{Dropdown.vue.js → Dropdown.vue2.js} +2 -2
  48. package/dist/martyrs/src/components/Dropdown/Dropdown.vue2.js.map +1 -0
  49. package/dist/martyrs/src/components/EditImages/EditImages.vue2.js +1 -1
  50. package/dist/martyrs/src/components/EditImages/EditImages.vue2.js.map +1 -1
  51. package/dist/martyrs/src/components/Feed/Feed.vue.js +2 -2
  52. package/dist/martyrs/src/components/Feed/Feed.vue.js.map +1 -1
  53. package/dist/martyrs/src/components/Field/{Field.vue2.js → Field.vue.js} +2 -2
  54. package/dist/martyrs/src/components/Field/Field.vue.js.map +1 -0
  55. package/dist/martyrs/src/components/FieldBig/FieldBig.vue.js +4 -4
  56. package/dist/martyrs/src/components/FieldBig/FieldBig.vue.js.map +1 -1
  57. package/dist/martyrs/src/components/FieldPhone/FieldPhone.vue.js +1 -1
  58. package/dist/martyrs/src/components/FieldPhone/FieldPhone.vue.js.map +1 -1
  59. package/dist/martyrs/src/components/FieldTags/BlockTags.vue.js +1 -1
  60. package/dist/martyrs/src/components/FieldTags/BlockTags.vue.js.map +1 -1
  61. package/dist/martyrs/src/components/Loader/Loader.vue2.js +1 -1
  62. package/dist/martyrs/src/components/Loader/Loader.vue2.js.map +1 -1
  63. package/dist/martyrs/src/components/Menu/{Menu.vue.js → Menu.vue2.js} +2 -2
  64. package/dist/martyrs/src/components/Menu/Menu.vue2.js.map +1 -0
  65. package/dist/martyrs/src/components/Menu/MenuItem.vue.js +2 -2
  66. package/dist/martyrs/src/components/Menu/MenuItem.vue.js.map +1 -1
  67. package/dist/martyrs/src/components/PhotoViewer/PhotoViewer.vue.js +2 -2
  68. package/dist/martyrs/src/components/PhotoViewer/PhotoViewer.vue.js.map +1 -1
  69. package/dist/martyrs/src/components/Radio/Radio.vue.js +1 -1
  70. package/dist/martyrs/src/components/Radio/Radio.vue.js.map +1 -1
  71. package/dist/martyrs/src/components/Select/{Select.vue2.js → Select.vue.js} +4 -4
  72. package/dist/martyrs/src/components/Select/Select.vue.js.map +1 -0
  73. package/dist/martyrs/src/components/SelectMulti/{SelectMulti.vue.js → SelectMulti.vue2.js} +2 -2
  74. package/dist/martyrs/src/components/SelectMulti/SelectMulti.vue2.js.map +1 -0
  75. package/dist/martyrs/src/components/Table/Table.vue.js +3 -3
  76. package/dist/martyrs/src/components/Table/Table.vue.js.map +1 -1
  77. package/dist/martyrs/src/components/Text/Text.vue.js +1 -1
  78. package/dist/martyrs/src/components/Text/Text.vue.js.map +1 -1
  79. package/dist/martyrs/src/components/UploadImage/UploadImage.vue.js +3 -3
  80. package/dist/martyrs/src/components/UploadImage/UploadImage.vue.js.map +1 -1
  81. package/dist/martyrs/src/components/UploadImageMultiple/UploadImageMultiple.vue.js +3 -3
  82. package/dist/martyrs/src/components/UploadImageMultiple/UploadImageMultiple.vue.js.map +1 -1
  83. package/dist/martyrs/src/modules/auth/views/components/blocks/CardUser.vue.js +2 -2
  84. package/dist/martyrs/src/modules/auth/views/components/blocks/ProfileCard.vue.js +4 -4
  85. package/dist/martyrs/src/modules/auth/views/components/blocks/ProfileCard.vue.js.map +1 -1
  86. package/dist/martyrs/src/modules/auth/views/components/layouts/Auth.vue.js +1 -1
  87. package/dist/martyrs/src/modules/auth/views/components/layouts/Auth.vue.js.map +1 -1
  88. package/dist/martyrs/src/modules/auth/views/components/pages/EnterCode.vue.js +1 -1
  89. package/dist/martyrs/src/modules/auth/views/components/pages/EnterPassword.vue.js +4 -4
  90. package/dist/martyrs/src/modules/auth/views/components/pages/EnterPassword.vue.js.map +1 -1
  91. package/dist/martyrs/src/modules/auth/views/components/pages/Invite.vue.js +2 -2
  92. package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.js +9 -9
  93. package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.js.map +1 -1
  94. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileBlogposts.vue.js +1 -1
  95. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileBlogposts.vue.js.map +1 -1
  96. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditAccount.vue.js +2 -2
  97. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditAccount.vue.js.map +1 -1
  98. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditProfile.vue.js +2 -2
  99. package/dist/martyrs/src/modules/auth/views/components/pages/ResetPassword.vue.js +3 -3
  100. package/dist/martyrs/src/modules/auth/views/components/pages/ResetPassword.vue.js.map +1 -1
  101. package/dist/martyrs/src/modules/auth/views/components/pages/SignIn.vue.js +5 -5
  102. package/dist/martyrs/src/modules/auth/views/components/pages/SignIn.vue.js.map +1 -1
  103. package/dist/martyrs/src/modules/auth/views/components/pages/SignUp.vue.js +3 -3
  104. package/dist/martyrs/src/modules/auth/views/components/pages/SignUp.vue.js.map +1 -1
  105. package/dist/martyrs/src/modules/auth/views/components/pages/UserDashboard.vue.js +3 -3
  106. package/dist/martyrs/src/modules/auth/views/components/pages/UserDashboard.vue.js.map +1 -1
  107. package/dist/martyrs/src/modules/auth/views/components/sections/FeaturedUsers.vue.js +1 -1
  108. package/dist/martyrs/src/modules/auth/views/components/sections/FeaturedUsers.vue.js.map +1 -1
  109. package/dist/martyrs/src/modules/auth/views/components/sections/ProfileEditCredentials.vue.js +9 -9
  110. package/dist/martyrs/src/modules/auth/views/components/sections/ProfileEditCredentials.vue.js.map +1 -1
  111. package/dist/martyrs/src/modules/auth/views/components/sections/SliderFeatures.vue.js +1 -1
  112. package/dist/martyrs/src/modules/auth/views/components/sections/SliderFeatures.vue.js.map +1 -1
  113. package/dist/martyrs/src/modules/auth/views/store/auth.js +1 -1
  114. package/dist/martyrs/src/modules/backoffice/components/pages/Dashboard.vue.js +4 -4
  115. package/dist/martyrs/src/modules/backoffice/components/pages/Dashboard.vue.js.map +1 -1
  116. package/dist/martyrs/src/modules/backoffice/components/partials/Sidebar.vue.js +6 -6
  117. package/dist/martyrs/src/modules/backoffice/components/partials/Sidebar.vue.js.map +1 -1
  118. package/dist/martyrs/src/modules/chats/components/blocks/ChatMessage.vue.js +1 -1
  119. package/dist/martyrs/src/modules/chats/components/blocks/ChatMessage.vue.js.map +1 -1
  120. package/dist/martyrs/src/modules/chats/components/sections/ChatWindow.vue.js +2 -2
  121. package/dist/martyrs/src/modules/chats/components/sections/ChatWindow.vue.js.map +1 -1
  122. package/dist/martyrs/src/modules/community/components/blocks/Activity.vue.js +7 -7
  123. package/dist/martyrs/src/modules/community/components/blocks/CardBlogpost.vue.js +1 -1
  124. package/dist/martyrs/src/modules/community/components/blocks/CardBlogpost.vue.js.map +1 -1
  125. package/dist/martyrs/src/modules/community/components/blocks/FooterBlogpost.vue.js +4 -4
  126. package/dist/martyrs/src/modules/community/components/blocks/FooterBlogpost.vue.js.map +1 -1
  127. package/dist/martyrs/src/modules/community/components/layouts/Community.vue.js +11 -11
  128. package/dist/martyrs/src/modules/community/components/layouts/Community.vue.js.map +1 -1
  129. package/dist/martyrs/src/modules/community/components/pages/BlogPost.vue.js +1 -1
  130. package/dist/martyrs/src/modules/community/components/pages/CreateBlogPost.vue.js +3 -3
  131. package/dist/martyrs/src/modules/community/components/pages/CreateBlogPost.vue.js.map +1 -1
  132. package/dist/martyrs/src/modules/community/components/pages/Posts.vue.js +2 -2
  133. package/dist/martyrs/src/modules/community/components/pages/Posts.vue.js.map +1 -1
  134. package/dist/martyrs/src/modules/community/components/sections/Comment.vue.js +3 -3
  135. package/dist/martyrs/src/modules/community/components/sections/Comment.vue.js.map +1 -1
  136. package/dist/martyrs/src/modules/community/components/sections/Comments.vue.js +1 -1
  137. package/dist/martyrs/src/modules/constructor/components/elements/Audio.vue.js +1 -1
  138. package/dist/martyrs/src/modules/constructor/components/elements/Audio.vue.js.map +1 -1
  139. package/dist/martyrs/src/modules/constructor/components/elements/Card.vue.js +1 -1
  140. package/dist/martyrs/src/modules/constructor/components/elements/Embed.vue.js +2 -2
  141. package/dist/martyrs/src/modules/constructor/components/elements/Embed.vue.js.map +1 -1
  142. package/dist/martyrs/src/modules/constructor/components/elements/Textarea.vue2.js +1 -1
  143. package/dist/martyrs/src/modules/constructor/components/elements/Textarea.vue2.js.map +1 -1
  144. package/dist/martyrs/src/modules/constructor/components/elements/Video.vue.js +1 -1
  145. package/dist/martyrs/src/modules/constructor/components/elements/Video.vue.js.map +1 -1
  146. package/dist/martyrs/src/modules/constructor/components/sections/Constructor.vue.js +1 -1
  147. package/dist/martyrs/src/modules/core/views/classes/core.app.js +2 -1
  148. package/dist/martyrs/src/modules/core/views/classes/core.app.js.map +1 -1
  149. package/dist/martyrs/src/modules/core/views/components/blocks/BlockSearch.vue.js +1 -1
  150. package/dist/martyrs/src/modules/core/views/components/blocks/BlockSorting.vue.js +2 -2
  151. package/dist/martyrs/src/modules/core/views/components/blocks/BlockSorting.vue.js.map +1 -1
  152. package/dist/martyrs/src/modules/core/views/components/blocks/CardHeader.vue.js +9 -9
  153. package/dist/martyrs/src/modules/core/views/components/blocks/CardHeader.vue.js.map +1 -1
  154. package/dist/martyrs/src/modules/core/views/components/blocks/HelpCard.vue.js +2 -2
  155. package/dist/martyrs/src/modules/core/views/components/blocks/HelpCard.vue.js.map +1 -1
  156. package/dist/martyrs/src/modules/core/views/components/blocks/PopupAuth.vue.js +2 -2
  157. package/dist/martyrs/src/modules/core/views/components/blocks/PopupAuth.vue.js.map +1 -1
  158. package/dist/martyrs/src/modules/core/views/components/blocks/PopupDateSelector.vue.js +1 -1
  159. package/dist/martyrs/src/modules/core/views/components/elements/ButtonDate.vue.js +1 -1
  160. package/dist/martyrs/src/modules/core/views/components/elements/ButtonDate.vue.js.map +1 -1
  161. package/dist/martyrs/src/modules/core/views/components/elements/PhotoStack.vue.js +3 -3
  162. package/dist/martyrs/src/modules/core/views/components/layouts/App.vue.js +25 -5
  163. package/dist/martyrs/src/modules/core/views/components/layouts/App.vue.js.map +1 -1
  164. package/dist/martyrs/src/modules/core/views/components/layouts/Client.vue.js +4 -4
  165. package/dist/martyrs/src/modules/core/views/components/layouts/Client.vue.js.map +1 -1
  166. package/dist/martyrs/src/modules/core/views/components/partials/BottomNavigationBar.vue.js +11 -11
  167. package/dist/martyrs/src/modules/core/views/components/partials/BottomNavigationBar.vue.js.map +1 -1
  168. package/dist/martyrs/src/modules/core/views/components/partials/CitySelection.vue.js +1 -1
  169. package/dist/martyrs/src/modules/core/views/components/partials/CitySelection.vue.js.map +1 -1
  170. package/dist/martyrs/src/modules/core/views/components/partials/Footer.vue.js +16 -16
  171. package/dist/martyrs/src/modules/core/views/components/partials/Footer.vue.js.map +1 -1
  172. package/dist/martyrs/src/modules/core/views/components/partials/Header.vue.js +9 -9
  173. package/dist/martyrs/src/modules/core/views/components/partials/Header.vue.js.map +1 -1
  174. package/dist/martyrs/src/modules/core/views/components/partials/LocationSelection.vue.js +1 -1
  175. package/dist/martyrs/src/modules/core/views/components/partials/LocationSelection.vue.js.map +1 -1
  176. package/dist/martyrs/src/modules/core/views/components/partials/Navigation.vue.js +24 -24
  177. package/dist/martyrs/src/modules/core/views/components/partials/Navigation.vue.js.map +1 -1
  178. package/dist/martyrs/src/modules/core/views/components/partials/NavigationBar.vue.js +4 -4
  179. package/dist/martyrs/src/modules/core/views/components/partials/NavigationBar.vue.js.map +1 -1
  180. package/dist/martyrs/src/modules/core/views/components/partials/Sidebar.vue.js +7 -7
  181. package/dist/martyrs/src/modules/core/views/components/partials/Sidebar.vue.js.map +1 -1
  182. package/dist/martyrs/src/modules/core/views/components/sections/SectionPageTitle.vue.js +2 -2
  183. package/dist/martyrs/src/modules/core/views/components/sections/SectionPageTitle.vue.js.map +1 -1
  184. package/dist/martyrs/src/modules/core/views/components/sections/Walkthrough.vue.js +1 -1
  185. package/dist/martyrs/src/modules/core/views/components/sections/filters/FilterCheckbox.vue2.js +2 -2
  186. package/dist/martyrs/src/modules/core/views/components/sections/filters/FilterCheckbox.vue2.js.map +1 -1
  187. package/dist/martyrs/src/modules/core/views/components/sections/filters/FilterDateRange.vue2.js +3 -3
  188. package/dist/martyrs/src/modules/core/views/components/sections/filters/FilterDateRange.vue2.js.map +1 -1
  189. package/dist/martyrs/src/modules/core/views/components/sections/filters/FilterRange.vue.js +3 -3
  190. package/dist/martyrs/src/modules/core/views/components/sections/filters/FilterRange.vue.js.map +1 -1
  191. package/dist/martyrs/src/modules/core/views/store/core.store.js +29 -47
  192. package/dist/martyrs/src/modules/core/views/store/core.store.js.map +1 -1
  193. package/dist/martyrs/src/modules/core/views/utils/vue-app-renderer.js +21 -2
  194. package/dist/martyrs/src/modules/core/views/utils/vue-app-renderer.js.map +1 -1
  195. package/dist/martyrs/src/modules/events/components/blocks/CardEvent.vue.js +5 -5
  196. package/dist/martyrs/src/modules/events/components/blocks/CardEvent.vue.js.map +1 -1
  197. package/dist/martyrs/src/modules/events/components/blocks/CardEventShort.vue.js +3 -3
  198. package/dist/martyrs/src/modules/events/components/blocks/CardEventShort.vue.js.map +1 -1
  199. package/dist/martyrs/src/modules/events/components/elements/ButtonCheck.vue.js +1 -1
  200. package/dist/martyrs/src/modules/events/components/elements/ButtonJoin.vue.js +1 -1
  201. package/dist/martyrs/src/modules/events/components/pages/EditEvent.vue.js +4 -4
  202. package/dist/martyrs/src/modules/events/components/pages/EditEvent.vue.js.map +1 -1
  203. package/dist/martyrs/src/modules/events/components/pages/EditEventTickets.vue.js +21 -21
  204. package/dist/martyrs/src/modules/events/components/pages/EditEventTickets.vue.js.map +1 -1
  205. package/dist/martyrs/src/modules/events/components/pages/Event.vue.js +7 -7
  206. package/dist/martyrs/src/modules/events/components/pages/Event.vue.js.map +1 -1
  207. package/dist/martyrs/src/modules/events/components/pages/Events.vue.js +2 -2
  208. package/dist/martyrs/src/modules/events/components/pages/Events.vue.js.map +1 -1
  209. package/dist/martyrs/src/modules/events/components/pages/EventsBackoffice.vue.js +2 -2
  210. package/dist/martyrs/src/modules/events/components/pages/EventsBackoffice.vue.js.map +1 -1
  211. package/dist/martyrs/src/modules/events/components/sections/EditTickets.vue.js +7 -7
  212. package/dist/martyrs/src/modules/events/components/sections/EditTickets.vue.js.map +1 -1
  213. package/dist/martyrs/src/modules/events/components/sections/EventsHot.vue.js +2 -2
  214. package/dist/martyrs/src/modules/events/components/sections/EventsHot.vue.js.map +1 -1
  215. package/dist/martyrs/src/modules/events/components/sections/List.vue.js +1 -1
  216. package/dist/martyrs/src/modules/events/components/sections/List.vue.js.map +1 -1
  217. package/dist/martyrs/src/modules/events/components/sections/SelectDate.vue.js +1 -1
  218. package/dist/martyrs/src/modules/events/components/sections/SelectDate.vue.js.map +1 -1
  219. package/dist/martyrs/src/modules/gallery/components/pages/Gallery.vue.js +1 -1
  220. package/dist/martyrs/src/modules/gallery/components/pages/Gallery.vue.js.map +1 -1
  221. package/dist/martyrs/src/modules/gallery/components/sections/BackofficeGallery.vue.js +5 -5
  222. package/dist/martyrs/src/modules/gallery/components/sections/BackofficeGallery.vue.js.map +1 -1
  223. package/dist/martyrs/src/modules/icons/components/IconSearchPopup.vue.js +4 -4
  224. package/dist/martyrs/src/modules/icons/components/IconSearchPopup.vue.js.map +1 -1
  225. package/dist/martyrs/src/modules/icons/navigation/IconSort.vue.js +4 -4
  226. package/dist/martyrs/src/modules/icons/pages/IconsPage.vue.js +7 -7
  227. package/dist/martyrs/src/modules/icons/pages/IconsPage.vue.js.map +1 -1
  228. package/dist/martyrs/src/modules/inventory/components/forms/AdjustmentForm.vue.js +6 -6
  229. package/dist/martyrs/src/modules/inventory/components/forms/AdjustmentForm.vue.js.map +1 -1
  230. package/dist/martyrs/src/modules/inventory/components/forms/ColumnSettingsMenu.vue.js +1 -1
  231. package/dist/martyrs/src/modules/inventory/components/forms/HistoryView.vue.js +3 -3
  232. package/dist/martyrs/src/modules/inventory/components/forms/HistoryView.vue.js.map +1 -1
  233. package/dist/martyrs/src/modules/inventory/components/forms/StockAlertsForm.vue.js +4 -4
  234. package/dist/martyrs/src/modules/inventory/components/forms/StockAlertsForm.vue.js.map +1 -1
  235. package/dist/martyrs/src/modules/inventory/components/pages/Inventory.vue.js +11 -11
  236. package/dist/martyrs/src/modules/inventory/components/pages/Inventory.vue.js.map +1 -1
  237. package/dist/martyrs/src/modules/inventory/components/pages/InventoryEdit.vue.js +9 -9
  238. package/dist/martyrs/src/modules/inventory/components/pages/InventoryEdit.vue.js.map +1 -1
  239. package/dist/martyrs/src/modules/landing/components/sections/SectionEarn.vue.js +5 -5
  240. package/dist/martyrs/src/modules/landing/components/sections/SectionEarn.vue.js.map +1 -1
  241. package/dist/martyrs/src/modules/landing/components/sections/SectionGuide.vue.js +2 -2
  242. package/dist/martyrs/src/modules/landing/components/sections/SectionGuide.vue.js.map +1 -1
  243. package/dist/martyrs/src/modules/landing/components/sections/SectionHeroToken.vue.js +1 -1
  244. package/dist/martyrs/src/modules/landing/components/sections/SectionHeroToken.vue.js.map +1 -1
  245. package/dist/martyrs/src/modules/landing/components/sections/SectionJoinUs.vue.js +2 -2
  246. package/dist/martyrs/src/modules/landing/components/sections/SectionJoinUs.vue.js.map +1 -1
  247. package/dist/martyrs/src/modules/landing/components/sections/SectionMobileApp.vue.js +3 -3
  248. package/dist/martyrs/src/modules/landing/components/sections/SectionMobileApp.vue.js.map +1 -1
  249. package/dist/martyrs/src/modules/landing/components/sections/SectionOverview.vue.js +2 -2
  250. package/dist/martyrs/src/modules/landing/components/sections/SectionOverview.vue.js.map +1 -1
  251. package/dist/martyrs/src/modules/landing/components/sections/SectionRoadmap.vue.js +3 -3
  252. package/dist/martyrs/src/modules/landing/components/sections/SectionRoadmap.vue.js.map +1 -1
  253. package/dist/martyrs/src/modules/marketplace/marketplace.client.js +3 -3
  254. package/dist/martyrs/src/modules/marketplace/marketplace.client.js.map +1 -1
  255. package/dist/martyrs/src/modules/marketplace/views/components/pages/Marketplace.vue.js +6 -6
  256. package/dist/martyrs/src/modules/marketplace/views/components/pages/Marketplace.vue.js.map +1 -1
  257. package/dist/martyrs/src/modules/marketplace/views/components/sections/SectionMenu.vue.js +5 -3
  258. package/dist/martyrs/src/modules/marketplace/views/components/sections/SectionMenu.vue.js.map +1 -1
  259. package/dist/martyrs/src/modules/music/components/blocks/ActionButtons.vue.js +4 -4
  260. package/dist/martyrs/src/modules/music/components/blocks/ActionButtons.vue.js.map +1 -1
  261. package/dist/martyrs/src/modules/music/components/cards/AlbumCard.vue.js +6 -6
  262. package/dist/martyrs/src/modules/music/components/cards/AlbumCard.vue.js.map +1 -1
  263. package/dist/martyrs/src/modules/music/components/cards/ArtistCard.vue.js +4 -4
  264. package/dist/martyrs/src/modules/music/components/cards/ArtistCard.vue.js.map +1 -1
  265. package/dist/martyrs/src/modules/music/components/cards/ArtistCardSmall.vue.js +4 -4
  266. package/dist/martyrs/src/modules/music/components/cards/ArtistCardSmall.vue.js.map +1 -1
  267. package/dist/martyrs/src/modules/music/components/cards/PlaylistCard.vue.js +6 -6
  268. package/dist/martyrs/src/modules/music/components/cards/PlaylistCard.vue.js.map +1 -1
  269. package/dist/martyrs/src/modules/music/components/cards/TrackListCard.vue.js +6 -6
  270. package/dist/martyrs/src/modules/music/components/cards/TrackListCard.vue.js.map +1 -1
  271. package/dist/martyrs/src/modules/music/components/forms/AlbumForm.vue.js +11 -11
  272. package/dist/martyrs/src/modules/music/components/forms/AlbumForm.vue.js.map +1 -1
  273. package/dist/martyrs/src/modules/music/components/forms/ArtistForm.vue.js +7 -7
  274. package/dist/martyrs/src/modules/music/components/forms/ArtistForm.vue.js.map +1 -1
  275. package/dist/martyrs/src/modules/music/components/forms/PlaylistForm.vue.js +9 -9
  276. package/dist/martyrs/src/modules/music/components/forms/PlaylistForm.vue.js.map +1 -1
  277. package/dist/martyrs/src/modules/music/components/forms/SearchForm.vue.js +3 -3
  278. package/dist/martyrs/src/modules/music/components/forms/SearchForm.vue.js.map +1 -1
  279. package/dist/martyrs/src/modules/music/components/forms/TrackForm.vue.js +16 -16
  280. package/dist/martyrs/src/modules/music/components/forms/TrackForm.vue.js.map +1 -1
  281. package/dist/martyrs/src/modules/music/components/pages/Album.vue.js +24 -24
  282. package/dist/martyrs/src/modules/music/components/pages/Album.vue.js.map +1 -1
  283. package/dist/martyrs/src/modules/music/components/pages/Artist.vue.js +8 -8
  284. package/dist/martyrs/src/modules/music/components/pages/Artist.vue.js.map +1 -1
  285. package/dist/martyrs/src/modules/music/components/pages/MusicHome.vue.js +10 -13
  286. package/dist/martyrs/src/modules/music/components/pages/MusicHome.vue.js.map +1 -1
  287. package/dist/martyrs/src/modules/music/components/pages/MusicLibrary.vue.js +10 -10
  288. package/dist/martyrs/src/modules/music/components/pages/MusicLibrary.vue.js.map +1 -1
  289. package/dist/martyrs/src/modules/music/components/pages/Playlist.vue.js +27 -27
  290. package/dist/martyrs/src/modules/music/components/pages/Playlist.vue.js.map +1 -1
  291. package/dist/martyrs/src/modules/music/components/pages/SearchResults.vue.js +17 -17
  292. package/dist/martyrs/src/modules/music/components/pages/SearchResults.vue.js.map +1 -1
  293. package/dist/martyrs/src/modules/music/components/pages/Track.vue.js +27 -27
  294. package/dist/martyrs/src/modules/music/components/pages/Track.vue.js.map +1 -1
  295. package/dist/martyrs/src/modules/music/components/pages/TrackCreate.vue.js +1 -1
  296. package/dist/martyrs/src/modules/music/components/player/FullscreenPlayer.vue.js +8 -8
  297. package/dist/martyrs/src/modules/music/components/player/FullscreenPlayer.vue.js.map +1 -1
  298. package/dist/martyrs/src/modules/music/components/player/MusicPlayer.vue.js +1 -1
  299. package/dist/martyrs/src/modules/music/components/player/PlayerControls.vue.js +1 -1
  300. package/dist/martyrs/src/modules/music/components/player/VolumeControl.vue.js +1 -1
  301. package/dist/martyrs/src/modules/music/music.client.js +6 -6
  302. package/dist/martyrs/src/modules/music/music.client.js.map +1 -1
  303. package/dist/martyrs/src/modules/notifications/components/blocks/NotificationItem.vue.js +2 -2
  304. package/dist/martyrs/src/modules/notifications/components/blocks/NotificationItem.vue.js.map +1 -1
  305. package/dist/martyrs/src/modules/notifications/components/elements/NotificationBadge.vue.js +1 -1
  306. package/dist/martyrs/src/modules/notifications/components/elements/NotificationBadge.vue.js.map +1 -1
  307. package/dist/martyrs/src/modules/notifications/notifications.client.js +2 -2
  308. package/dist/martyrs/src/modules/notifications/store/notifications.store.js +1 -1
  309. package/dist/martyrs/src/modules/orders/components/blocks/CardApplication.vue.js +2 -2
  310. package/dist/martyrs/src/modules/orders/components/blocks/CardCustomer.vue.js +2 -2
  311. package/dist/martyrs/src/modules/orders/components/blocks/CardOrder.vue.js +9 -9
  312. package/dist/martyrs/src/modules/orders/components/blocks/CardOrder.vue.js.map +1 -1
  313. package/dist/martyrs/src/modules/orders/components/blocks/CardOrderBackoffice.vue.js +5 -5
  314. package/dist/martyrs/src/modules/orders/components/blocks/CardOrderBackoffice.vue.js.map +1 -1
  315. package/dist/martyrs/src/modules/orders/components/blocks/CardOrderItem.vue.js +9 -9
  316. package/dist/martyrs/src/modules/orders/components/blocks/CardOrderItem.vue.js.map +1 -1
  317. package/dist/martyrs/src/modules/orders/components/blocks/CardOrderUser.vue.js +4 -4
  318. package/dist/martyrs/src/modules/orders/components/blocks/CardOrderUser.vue.js.map +1 -1
  319. package/dist/martyrs/src/modules/orders/components/blocks/StatusHistory.vue.js +2 -2
  320. package/dist/martyrs/src/modules/orders/components/blocks/StatusHistory.vue.js.map +1 -1
  321. package/dist/martyrs/src/modules/orders/components/elements/FieldSubscribeNewsletter.vue.js +1 -1
  322. package/dist/martyrs/src/modules/orders/components/elements/FieldSubscribeNewsletter.vue.js.map +1 -1
  323. package/dist/martyrs/src/modules/orders/components/elements/PriceTotal.vue.js +3 -3
  324. package/dist/martyrs/src/modules/orders/components/elements/PriceTotal.vue.js.map +1 -1
  325. package/dist/martyrs/src/modules/orders/components/forms/FormApplicationDetails.vue.js +5 -5
  326. package/dist/martyrs/src/modules/orders/components/forms/FormApplicationDetails.vue.js.map +1 -1
  327. package/dist/martyrs/src/modules/orders/components/forms/FormCustomerDetails.vue.js +6 -6
  328. package/dist/martyrs/src/modules/orders/components/forms/FormCustomerDetails.vue.js.map +1 -1
  329. package/dist/martyrs/src/modules/orders/components/forms/FormSelectCustomer.vue.js +1 -1
  330. package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.js +18 -18
  331. package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.js.map +1 -1
  332. package/dist/martyrs/src/modules/orders/components/pages/OrderCreate.vue.js +3 -3
  333. package/dist/martyrs/src/modules/orders/components/pages/OrderCreate.vue.js.map +1 -1
  334. package/dist/martyrs/src/modules/orders/components/pages/OrderCreateBackoffice.vue.js +6 -6
  335. package/dist/martyrs/src/modules/orders/components/pages/OrderCreateBackoffice.vue.js.map +1 -1
  336. package/dist/martyrs/src/modules/orders/components/partials/ShopCart.vue.js +2 -2
  337. package/dist/martyrs/src/modules/orders/components/partials/ShopCart.vue.js.map +1 -1
  338. package/dist/martyrs/src/modules/orders/components/sections/ApplicationDetails.vue.js +4 -4
  339. package/dist/martyrs/src/modules/orders/components/sections/ApplicationDetails.vue.js.map +1 -1
  340. package/dist/martyrs/src/modules/orders/components/sections/AskToLogin.vue.js +1 -1
  341. package/dist/martyrs/src/modules/orders/components/sections/AskToLogin.vue.js.map +1 -1
  342. package/dist/martyrs/src/modules/orders/components/sections/CustomerDetails.vue.js +4 -4
  343. package/dist/martyrs/src/modules/orders/components/sections/CustomerDetails.vue.js.map +1 -1
  344. package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.js +2 -2
  345. package/dist/martyrs/src/modules/orders/components/sections/FormPayment.vue.js +1 -1
  346. package/dist/martyrs/src/modules/orders/components/sections/Succes.vue.js +3 -3
  347. package/dist/martyrs/src/modules/orders/store/shopcart.js +1 -1
  348. package/dist/martyrs/src/modules/organizations/components/blocks/CardDepartment.vue.js +2 -2
  349. package/dist/martyrs/src/modules/organizations/components/blocks/CardOrganization.vue.js +3 -3
  350. package/dist/martyrs/src/modules/organizations/components/blocks/CardOrganization.vue.js.map +1 -1
  351. package/dist/martyrs/src/modules/organizations/components/blocks/Contacts.vue.js +8 -8
  352. package/dist/martyrs/src/modules/organizations/components/blocks/Contacts.vue.js.map +1 -1
  353. package/dist/martyrs/src/modules/organizations/components/blocks/Rating.vue.js +1 -1
  354. package/dist/martyrs/src/modules/organizations/components/elements/ButtonToggleMembership.vue.js +1 -1
  355. package/dist/martyrs/src/modules/organizations/components/forms/AddExistingMembersForm.vue.js +4 -4
  356. package/dist/martyrs/src/modules/organizations/components/forms/AddExistingMembersForm.vue.js.map +1 -1
  357. package/dist/martyrs/src/modules/organizations/components/forms/DepartmentForm.vue.js +3 -3
  358. package/dist/martyrs/src/modules/organizations/components/forms/DepartmentForm.vue.js.map +1 -1
  359. package/dist/martyrs/src/modules/organizations/components/forms/InviteForm.vue.js +3 -3
  360. package/dist/martyrs/src/modules/organizations/components/forms/InviteForm.vue.js.map +1 -1
  361. package/dist/martyrs/src/modules/organizations/components/pages/Department.vue.js +2 -2
  362. package/dist/martyrs/src/modules/organizations/components/pages/Department.vue.js.map +1 -1
  363. package/dist/martyrs/src/modules/organizations/components/pages/Members.vue.js +1 -1
  364. package/dist/martyrs/src/modules/organizations/components/pages/Members.vue.js.map +1 -1
  365. package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.js +6 -6
  366. package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.js.map +1 -1
  367. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationBackoffice.vue.js +2 -2
  368. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.js +4 -4
  369. package/dist/martyrs/src/modules/organizations/components/pages/Organizations.vue.js +2 -2
  370. package/dist/martyrs/src/modules/organizations/components/pages/Organizations.vue.js.map +1 -1
  371. package/dist/martyrs/src/modules/organizations/components/sections/Documents.vue.js +5 -5
  372. package/dist/martyrs/src/modules/organizations/components/sections/Documents.vue.js.map +1 -1
  373. package/dist/martyrs/src/modules/organizations/components/sections/MembersAdd.vue.js +4 -4
  374. package/dist/martyrs/src/modules/organizations/components/sections/MembersAdd.vue.js.map +1 -1
  375. package/dist/martyrs/src/modules/organizations/components/sections/Organizations.vue.js +2 -2
  376. package/dist/martyrs/src/modules/pages/views/components/blocks/CardPage.vue.js +4 -4
  377. package/dist/martyrs/src/modules/pages/views/components/blocks/CardPage.vue.js.map +1 -1
  378. package/dist/martyrs/src/modules/pages/views/components/pages/Page.vue.js +5 -5
  379. package/dist/martyrs/src/modules/pages/views/components/pages/Page.vue.js.map +1 -1
  380. package/dist/martyrs/src/modules/pages/views/components/pages/PageEdit.vue.js +2 -2
  381. package/dist/martyrs/src/modules/pages/views/components/partials/SidebarPages.vue.js +1 -1
  382. package/dist/martyrs/src/modules/products/components/blocks/CardCategory.vue.js +1 -1
  383. package/dist/martyrs/src/modules/products/components/blocks/CardCategory.vue.js.map +1 -1
  384. package/dist/martyrs/src/modules/products/components/blocks/CardPosition.vue.js +4 -4
  385. package/dist/martyrs/src/modules/products/components/blocks/CardPosition.vue.js.map +1 -1
  386. package/dist/martyrs/src/modules/products/components/blocks/CardProduct.vue.js +3 -3
  387. package/dist/martyrs/src/modules/products/components/blocks/CardProduct.vue.js.map +1 -1
  388. package/dist/martyrs/src/modules/products/components/blocks/ProductDiscounts.vue.js +4 -4
  389. package/dist/martyrs/src/modules/products/components/blocks/ProductDiscounts.vue.js.map +1 -1
  390. package/dist/martyrs/src/modules/products/components/blocks/ProductImages.vue.js +3 -3
  391. package/dist/martyrs/src/modules/products/components/blocks/ProductImages.vue.js.map +1 -1
  392. package/dist/martyrs/src/modules/products/components/blocks/ProductVariants.vue.js +2 -2
  393. package/dist/martyrs/src/modules/products/components/blocks/ProductVariants.vue.js.map +1 -1
  394. package/dist/martyrs/src/modules/products/components/elements/Image360.vue.js +4 -4
  395. package/dist/martyrs/src/modules/products/components/elements/Image360.vue.js.map +1 -1
  396. package/dist/martyrs/src/modules/products/components/elements/Price.vue.js +2 -2
  397. package/dist/martyrs/src/modules/products/components/elements/Price.vue.js.map +1 -1
  398. package/dist/martyrs/src/modules/products/components/elements/QuantitySelector.vue.js +3 -3
  399. package/dist/martyrs/src/modules/products/components/elements/QuantitySelector.vue.js.map +1 -1
  400. package/dist/martyrs/src/modules/products/components/elements/THC.vue.js +1 -1
  401. package/dist/martyrs/src/modules/products/components/pages/Categories.vue.js +2 -2
  402. package/dist/martyrs/src/modules/products/components/pages/Categories.vue.js.map +1 -1
  403. package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.js +5 -5
  404. package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.js.map +1 -1
  405. package/dist/martyrs/src/modules/products/components/pages/Product.vue.js +7 -7
  406. package/dist/martyrs/src/modules/products/components/pages/Product.vue.js.map +1 -1
  407. package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.js +10 -10
  408. package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.js.map +1 -1
  409. package/dist/martyrs/src/modules/products/components/pages/Products.vue.js +12 -12
  410. package/dist/martyrs/src/modules/products/components/pages/Products.vue.js.map +1 -1
  411. package/dist/martyrs/src/modules/products/components/sections/EditAttributes.vue.js +6 -6
  412. package/dist/martyrs/src/modules/products/components/sections/EditAttributes.vue.js.map +1 -1
  413. package/dist/martyrs/src/modules/products/components/sections/EditDiscounts.vue.js +9 -9
  414. package/dist/martyrs/src/modules/products/components/sections/EditDiscounts.vue.js.map +1 -1
  415. package/dist/martyrs/src/modules/products/components/sections/EditRecommended.vue.js +1 -1
  416. package/dist/martyrs/src/modules/products/components/sections/EditRecommended.vue.js.map +1 -1
  417. package/dist/martyrs/src/modules/products/components/sections/EditVariants.vue.js +11 -11
  418. package/dist/martyrs/src/modules/products/components/sections/EditVariants.vue.js.map +1 -1
  419. package/dist/martyrs/src/modules/products/components/sections/FilterProducts.vue.js +3 -3
  420. package/dist/martyrs/src/modules/products/components/sections/FilterProducts.vue.js.map +1 -1
  421. package/dist/martyrs/src/modules/products/components/sections/ProductConfigurator.vue.js +3 -3
  422. package/dist/martyrs/src/modules/products/components/sections/ProductConfigurator.vue.js.map +1 -1
  423. package/dist/martyrs/src/modules/products/components/sections/ProductsRecommended.vue.js +3 -3
  424. package/dist/martyrs/src/modules/products/components/sections/ProductsRecommended.vue.js.map +1 -1
  425. package/dist/martyrs/src/modules/products/components/sections/SectionProduct.vue.js +7 -7
  426. package/dist/martyrs/src/modules/products/components/sections/SectionProduct.vue.js.map +1 -1
  427. package/dist/martyrs/src/modules/rents/views/components/blocks/CardRent.vue.js +1 -1
  428. package/dist/martyrs/src/modules/rents/views/components/blocks/CardRent.vue.js.map +1 -1
  429. package/dist/martyrs/src/modules/rents/views/components/pages/Gant/DateLabel.vue.js +1 -1
  430. package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttBar.vue.js +2 -2
  431. package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttBar.vue.js.map +1 -1
  432. package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttChart.vue.js +8 -8
  433. package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttChart.vue.js.map +1 -1
  434. package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttHeaderCell.vue.js +1 -1
  435. package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttHeaderCell.vue.js.map +1 -1
  436. package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttToolbar.vue.js +2 -2
  437. package/dist/martyrs/src/modules/rents/views/components/pages/Rents.vue.js +1 -1
  438. package/dist/martyrs/src/modules/rents/views/components/pages/Rents.vue.js.map +1 -1
  439. package/dist/martyrs/src/modules/rents/views/components/pages/RentsEdit.vue.js +8 -8
  440. package/dist/martyrs/src/modules/rents/views/components/pages/RentsEdit.vue.js.map +1 -1
  441. package/dist/martyrs/src/modules/reports/components/pages/BackofficeReports.vue.js +3 -3
  442. package/dist/martyrs/src/modules/reports/components/pages/BackofficeReports.vue.js.map +1 -1
  443. package/dist/martyrs/src/modules/reports/components/sections/FormReport.vue.js +3 -3
  444. package/dist/martyrs/src/modules/reports/components/sections/FormReport.vue.js.map +1 -1
  445. package/dist/martyrs/src/modules/spots/components/blocks/CardSpot.vue.js +5 -5
  446. package/dist/martyrs/src/modules/spots/components/blocks/CardSpot.vue.js.map +1 -1
  447. package/dist/martyrs/src/modules/spots/components/blocks/SpotMemberModify.vue.js +4 -4
  448. package/dist/martyrs/src/modules/spots/components/blocks/SpotMemberModify.vue.js.map +1 -1
  449. package/dist/martyrs/src/modules/spots/components/layouts/Spots.vue.js +4 -4
  450. package/dist/martyrs/src/modules/spots/components/layouts/Spots.vue.js.map +1 -1
  451. package/dist/martyrs/src/modules/spots/components/pages/Map.vue.js +1 -1
  452. package/dist/martyrs/src/modules/spots/components/pages/Spot.vue.js +6 -6
  453. package/dist/martyrs/src/modules/spots/components/pages/Spot.vue.js.map +1 -1
  454. package/dist/martyrs/src/modules/spots/components/pages/SpotEdit.vue.js +5 -5
  455. package/dist/martyrs/src/modules/spots/components/pages/SpotEdit.vue.js.map +1 -1
  456. package/dist/martyrs/src/modules/spots/components/pages/Spots.vue.js +3 -3
  457. package/dist/martyrs/src/modules/spots/components/pages/Spots.vue.js.map +1 -1
  458. package/dist/martyrs/src/modules/spots/components/sections/WorktimeEdit.vue.js +8 -8
  459. package/dist/martyrs/src/modules/spots/components/sections/WorktimeEdit.vue.js.map +1 -1
  460. package/dist/martyrs/src/modules/wallet/views/components/blocks/CardBalanceReplenished.vue.js +5 -5
  461. package/dist/martyrs/src/modules/wallet/views/components/blocks/CardBalanceReplenished.vue.js.map +1 -1
  462. package/dist/martyrs/src/modules/wallet/views/components/blocks/CardDeposit.vue.js +6 -6
  463. package/dist/martyrs/src/modules/wallet/views/components/blocks/CardDeposit.vue.js.map +1 -1
  464. package/dist/martyrs/src/modules/wallet/views/components/blocks/CashDeposit.vue.js +2 -2
  465. package/dist/martyrs/src/modules/wallet/views/components/blocks/CashDeposit.vue.js.map +1 -1
  466. package/dist/martyrs/src/modules/wallet/views/components/blocks/CryptoDeposit.vue.js +6 -6
  467. package/dist/martyrs/src/modules/wallet/views/components/blocks/CryptoDeposit.vue.js.map +1 -1
  468. package/dist/martyrs/src/modules/wallet/views/components/blocks/CryptoDepositProcessing.vue.js +12 -12
  469. package/dist/martyrs/src/modules/wallet/views/components/blocks/CryptoDepositProcessing.vue.js.map +1 -1
  470. package/dist/martyrs/src/modules/wallet/views/components/elements/ConnectMetamask.vue.js +4 -4
  471. package/dist/martyrs/src/modules/wallet/views/components/elements/ConnectMetamask.vue.js.map +1 -1
  472. package/dist/martyrs/src/modules/wallet/views/components/pages/Wallet.vue.js +25 -25
  473. package/dist/martyrs/src/modules/wallet/views/components/pages/Wallet.vue.js.map +1 -1
  474. package/dist/martyrs.css +1 -1
  475. package/dist/martyrs.es.js +1 -1
  476. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/utils.js +1 -1
  477. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/renderer/utils.js +1 -1
  478. package/dist/style.css +194 -202
  479. package/dist/{web-CH5wzMHy.js → web-BqTV9va1.js} +1 -1
  480. package/package.json +6 -8
  481. package/src/builder/modes/ssr.prod.js +1 -0
  482. package/src/builder/modes/ssr.rspack.dev.js +82 -84
  483. package/src/builder/rspack/rspack.config.base.js +7 -0
  484. package/src/builder/rspack/rspack.config.ssr.client.js +19 -44
  485. package/src/builder/templates/page.js +21 -0
  486. package/src/components/Block/Block.vue +1 -1
  487. package/src/components/BottomSheet/BottomSheet.vue +1 -1
  488. package/src/components/Calendar/Calendar.vue +5 -5
  489. package/src/components/Checkbox/Checkbox.vue +2 -2
  490. package/src/components/Chips/Chips.vue +2 -2
  491. package/src/components/Completion/Completion.vue +2 -2
  492. package/src/components/Countdown/Countdown.vue +5 -5
  493. package/src/components/DatePicker/DatePicker.vue +4 -4
  494. package/src/components/EditImages/EditImages.vue +1 -1
  495. package/src/components/Feed/Feed.old.vue +1 -1
  496. package/src/components/Feed/Feed.vue +1 -1
  497. package/src/components/FieldBig/FieldBig.vue +2 -2
  498. package/src/components/FieldPhone/FieldPhone.vue +1 -1
  499. package/src/components/FieldTags/BlockTags.vue +1 -1
  500. package/src/components/Loader/Loader.vue +1 -1
  501. package/src/components/Menu/MenuItem.vue +2 -2
  502. package/src/components/PhotoViewer/PhotoViewer.vue +1 -1
  503. package/src/components/Radio/Radio.vue +1 -1
  504. package/src/components/Select/Select.vue +1 -1
  505. package/src/components/Table/Table.vue +2 -2
  506. package/src/components/Text/Text.vue +1 -1
  507. package/src/components/UploadImage/UploadImage.vue +2 -2
  508. package/src/components/UploadImageMultiple/UploadImageMultiple.vue +3 -3
  509. package/src/configurator/components/layouts/layoutConfigurator.vue +1 -1
  510. package/src/configurator/components/pages/Styles.vue +2 -2
  511. package/src/jit/.claude/settings.local.json +10 -0
  512. package/src/jit/CLAUDE.md +387 -0
  513. package/src/jit/core.js +274 -0
  514. package/src/jit/extractor.js +140 -0
  515. package/src/jit/index.js +19 -0
  516. package/src/jit/loader.js +46 -0
  517. package/src/jit/plugin.js +209 -0
  518. package/src/jit/rules.js +474 -0
  519. package/src/jit/variants.js +128 -0
  520. package/src/modules/auth/views/components/blocks/CardUser.vue +2 -2
  521. package/src/modules/auth/views/components/blocks/ProfileCard.vue +4 -4
  522. package/src/modules/auth/views/components/layouts/Auth.vue +1 -1
  523. package/src/modules/auth/views/components/pages/EnterPassword.vue +2 -2
  524. package/src/modules/auth/views/components/pages/Profile.vue +5 -5
  525. package/src/modules/auth/views/components/pages/ProfileBlogposts.vue +1 -1
  526. package/src/modules/auth/views/components/pages/ProfileEditAccount.vue +2 -2
  527. package/src/modules/auth/views/components/pages/ResetPassword.vue +1 -1
  528. package/src/modules/auth/views/components/pages/SignIn.vue +3 -3
  529. package/src/modules/auth/views/components/pages/SignUp.vue +1 -1
  530. package/src/modules/auth/views/components/pages/UserDashboard.vue +3 -3
  531. package/src/modules/auth/views/components/sections/FeaturedUsers.vue +1 -1
  532. package/src/modules/auth/views/components/sections/ProfileCompletion.vue +2 -2
  533. package/src/modules/auth/views/components/sections/ProfileEditCredentials.vue +7 -7
  534. package/src/modules/auth/views/components/sections/SliderFeatures.vue +1 -1
  535. package/src/modules/backoffice/components/admin/Backcalls.vue +1 -1
  536. package/src/modules/backoffice/components/admin/FastOrders.vue +1 -1
  537. package/src/modules/backoffice/components/admin/ProductEdit.vue +2 -2
  538. package/src/modules/backoffice/components/admin/UserEdit.vue +1 -1
  539. package/src/modules/backoffice/components/admin/Users.vue +2 -2
  540. package/src/modules/backoffice/components/pages/Dashboard.vue +4 -4
  541. package/src/modules/backoffice/components/partials/Sidebar.vue +5 -5
  542. package/src/modules/chats/components/blocks/ChatMessage.vue +1 -1
  543. package/src/modules/chats/components/sections/ChatWindow.vue +2 -2
  544. package/src/modules/community/components/blocks/Activity.vue +7 -7
  545. package/src/modules/community/components/blocks/CardBlogpost.vue +1 -1
  546. package/src/modules/community/components/blocks/FooterBlogpost.vue +4 -4
  547. package/src/modules/community/components/layouts/Community.vue +10 -10
  548. package/src/modules/community/components/pages/CreateBlogPost.vue +1 -1
  549. package/src/modules/community/components/pages/Posts.vue +2 -2
  550. package/src/modules/community/components/sections/Comment.vue +2 -2
  551. package/src/modules/constructor/components/elements/Audio.vue +1 -1
  552. package/src/modules/constructor/components/elements/Caption.vue +1 -1
  553. package/src/modules/constructor/components/elements/Embed.vue +1 -1
  554. package/src/modules/constructor/components/elements/Textarea.vue +1 -1
  555. package/src/modules/constructor/components/elements/Video.vue +1 -1
  556. package/src/modules/core/views/classes/core.app.js +2 -1
  557. package/src/modules/core/views/components/blocks/BlockSorting.vue +2 -2
  558. package/src/modules/core/views/components/blocks/CardFooter.vue +4 -4
  559. package/src/modules/core/views/components/blocks/CardHeader.vue +7 -7
  560. package/src/modules/core/views/components/blocks/HelpCard.vue +1 -1
  561. package/src/modules/core/views/components/blocks/PopupAuth.vue +1 -1
  562. package/src/modules/core/views/components/elements/ButtonDate.vue +1 -1
  563. package/src/modules/core/views/components/elements/PhotoStack.vue +3 -3
  564. package/src/modules/core/views/components/layouts/App.vue +28 -4
  565. package/src/modules/core/views/components/layouts/Client.vue +4 -4
  566. package/src/modules/core/views/components/partials/BottomNavigationBar.vue +15 -15
  567. package/src/modules/core/views/components/partials/CitySelection.vue +1 -1
  568. package/src/modules/core/views/components/partials/Footer.centered.vue +17 -17
  569. package/src/modules/core/views/components/partials/Footer.vue +18 -18
  570. package/src/modules/core/views/components/partials/Header.vue +10 -11
  571. package/src/modules/core/views/components/partials/LocationSelection.vue +1 -1
  572. package/src/modules/core/views/components/partials/Navigation.vue +20 -19
  573. package/src/modules/core/views/components/partials/NavigationBar.vue +3 -3
  574. package/src/modules/core/views/components/partials/Sidebar.vue +6 -6
  575. package/src/modules/core/views/components/sections/SectionPageTitle.vue +2 -2
  576. package/src/modules/core/views/components/sections/filters/FilterCheckbox.vue +1 -1
  577. package/src/modules/core/views/components/sections/filters/FilterDateRange.vue +2 -2
  578. package/src/modules/core/views/components/sections/filters/FilterPrice.vue +2 -2
  579. package/src/modules/core/views/components/sections/filters/FilterRange.vue +2 -2
  580. package/src/modules/core/views/store/core.store.js +36 -60
  581. package/src/modules/core/views/utils/vue-app-renderer.js +31 -1
  582. package/src/modules/events/components/blocks/CardEvent.vue +6 -6
  583. package/src/modules/events/components/blocks/CardEventShort.vue +3 -3
  584. package/src/modules/events/components/pages/EditEvent.vue +1 -1
  585. package/src/modules/events/components/pages/EditEventTickets.vue +18 -18
  586. package/src/modules/events/components/pages/Event.vue +5 -5
  587. package/src/modules/events/components/pages/Events.vue +2 -2
  588. package/src/modules/events/components/pages/EventsBackoffice.vue +2 -2
  589. package/src/modules/events/components/sections/EditTickets.vue +5 -5
  590. package/src/modules/events/components/sections/EventsHot.vue +2 -2
  591. package/src/modules/events/components/sections/List.vue +1 -1
  592. package/src/modules/events/components/sections/SelectDate.vue +1 -1
  593. package/src/modules/gallery/components/pages/Gallery.vue +1 -1
  594. package/src/modules/gallery/components/sections/BackofficeGallery.vue +1 -1
  595. package/src/modules/governance/reactcode/src/components/CreateInitiativeForm.tsx +14 -14
  596. package/src/modules/governance/reactcode/src/components/CreateMilestoneForm.tsx +13 -13
  597. package/src/modules/governance/reactcode/src/components/EmptyState.tsx +2 -2
  598. package/src/modules/governance/reactcode/src/components/InitiativeCard.tsx +1 -1
  599. package/src/modules/governance/reactcode/src/components/LinkedEntityCard.tsx +1 -1
  600. package/src/modules/governance/reactcode/src/components/MilestoneCard.tsx +2 -2
  601. package/src/modules/governance/reactcode/src/components/ProductRepositories.tsx +6 -6
  602. package/src/modules/governance/reactcode/src/components/ProductSummary.tsx +18 -18
  603. package/src/modules/governance/reactcode/src/components/ProductTeam.tsx +7 -7
  604. package/src/modules/governance/reactcode/src/components/ProposeTaskForm.tsx +9 -9
  605. package/src/modules/governance/reactcode/src/components/TaskAssignForm.tsx +4 -4
  606. package/src/modules/governance/reactcode/src/components/TaskCard.tsx +1 -1
  607. package/src/modules/governance/reactcode/src/components/TaskStatusBadge.tsx +1 -1
  608. package/src/modules/governance/reactcode/src/components/VoteForm.tsx +6 -6
  609. package/src/modules/governance/reactcode/src/components/VotingCard.tsx +2 -2
  610. package/src/modules/governance/reactcode/src/components/VotingResults.tsx +15 -15
  611. package/src/modules/governance/reactcode/src/pages/InitiativeDetailPage.tsx +41 -41
  612. package/src/modules/governance/reactcode/src/pages/InitiativeMilestonesPage.tsx +8 -8
  613. package/src/modules/governance/reactcode/src/pages/InitiativesListPage.tsx +6 -6
  614. package/src/modules/governance/reactcode/src/pages/MilestoneDetailPage.tsx +9 -9
  615. package/src/modules/governance/reactcode/src/pages/RoadmapPage.tsx +14 -14
  616. package/src/modules/governance/reactcode/src/pages/TaskDetailPage.tsx +44 -44
  617. package/src/modules/governance/reactcode/src/pages/VotingDetailPage.tsx +8 -8
  618. package/src/modules/governance/reactcode/src/pages/VotingsListPage.tsx +3 -3
  619. package/src/modules/governance/reactcode-2/App.tsx +28 -0
  620. package/src/modules/governance/reactcode-2/README.md +20 -0
  621. package/src/modules/governance/reactcode-2/components/Charts.tsx +58 -0
  622. package/src/modules/governance/reactcode-2/components/Layout.tsx +457 -0
  623. package/src/modules/governance/reactcode-2/components/TaskPage.tsx +325 -0
  624. package/src/modules/governance/reactcode-2/components/VoteBadge.tsx +27 -0
  625. package/src/modules/governance/reactcode-2/components/VotingsFeedPage.tsx +328 -0
  626. package/src/modules/governance/reactcode-2/constants.ts +154 -0
  627. package/src/modules/governance/reactcode-2/index.html +70 -0
  628. package/src/modules/governance/reactcode-2/index.tsx +15 -0
  629. package/src/modules/governance/reactcode-2/metadata.json +5 -0
  630. package/src/modules/governance/reactcode-2/package.json +23 -0
  631. package/src/modules/governance/reactcode-2/pnpm-lock.yaml +1410 -0
  632. package/src/modules/governance/reactcode-2/tsconfig.json +29 -0
  633. package/src/modules/governance/reactcode-2/types.ts +48 -0
  634. package/src/modules/governance/reactcode-2/vite.config.ts +23 -0
  635. package/src/modules/governance/views/components/blocks/CardInitiativeItem.vue +10 -10
  636. package/src/modules/governance/views/components/blocks/CardMilestoneItem.vue +15 -15
  637. package/src/modules/governance/views/components/blocks/CardTaskItem.vue +9 -9
  638. package/src/modules/governance/views/components/blocks/CardVotingItem.vue +11 -11
  639. package/src/modules/governance/views/components/layouts/Governance.vue +1 -1
  640. package/src/modules/governance/views/components/pages/Governance.vue +3 -3
  641. package/src/modules/governance/views/components/pages/Initiative.vue +112 -112
  642. package/src/modules/governance/views/components/pages/InitiativeMilestones.vue +31 -31
  643. package/src/modules/governance/views/components/pages/Initiatives.vue +20 -22
  644. package/src/modules/governance/views/components/pages/Milestone.vue +25 -25
  645. package/src/modules/governance/views/components/pages/Roadmap.vue +47 -47
  646. package/src/modules/governance/views/components/pages/Task.vue +106 -106
  647. package/src/modules/governance/views/components/pages/Tasks.vue +16 -16
  648. package/src/modules/governance/views/components/pages/Voting.vue +23 -23
  649. package/src/modules/governance/views/components/pages/Votings.vue +7 -7
  650. package/src/modules/governance/views/components/partials/EmptyState.vue +3 -3
  651. package/src/modules/governance/views/components/partials/LinkedEntityCard.vue +11 -11
  652. package/src/modules/governance/views/components/partials/TaskStatusBadge.vue +4 -4
  653. package/src/modules/governance/views/components/partials/VoteForm.vue +14 -14
  654. package/src/modules/governance/views/components/partials/VotingResults.vue +22 -22
  655. package/src/modules/icons/components/IconSearchPopup.vue +3 -3
  656. package/src/modules/icons/entities/IconCash.vue +23 -0
  657. package/src/modules/icons/navigation/IconSort.vue +4 -4
  658. package/src/modules/icons/pages/IconsPage.vue +7 -7
  659. package/src/modules/inventory/components/forms/AdjustmentForm.vue +3 -3
  660. package/src/modules/inventory/components/forms/HistoryView.vue +1 -1
  661. package/src/modules/inventory/components/forms/StockAlertsForm.vue +1 -1
  662. package/src/modules/inventory/components/pages/Inventory.vue +10 -10
  663. package/src/modules/inventory/components/pages/InventoryEdit.vue +6 -6
  664. package/src/modules/landing/components/blocks/MapBlock.vue +2 -2
  665. package/src/modules/landing/components/sections/Examples.vue +1 -1
  666. package/src/modules/landing/components/sections/InstagramSection.vue +1 -1
  667. package/src/modules/landing/components/sections/SectionEarn.vue +4 -4
  668. package/src/modules/landing/components/sections/SectionFeature.vue +1 -1
  669. package/src/modules/landing/components/sections/SectionFocus.vue +2 -2
  670. package/src/modules/landing/components/sections/SectionGuide.vue +2 -2
  671. package/src/modules/landing/components/sections/SectionHeroToken.vue +1 -1
  672. package/src/modules/landing/components/sections/SectionHeroVideo.vue +2 -2
  673. package/src/modules/landing/components/sections/SectionJoinUs.vue +2 -2
  674. package/src/modules/landing/components/sections/SectionMobileApp.vue +3 -3
  675. package/src/modules/landing/components/sections/SectionOverview.vue +2 -2
  676. package/src/modules/landing/components/sections/SectionRoadmap.vue +2 -2
  677. package/src/modules/marketplace/views/components/layouts/Marketplace.vue +8 -8
  678. package/src/modules/marketplace/views/components/pages/Marketplace.vue +5 -5
  679. package/src/modules/marketplace/views/components/sections/SectionMenu.vue +3 -3
  680. package/src/modules/music/components/SidebarMusic.vue +11 -11
  681. package/src/modules/music/components/blocks/ActionButtons.vue +2 -2
  682. package/src/modules/music/components/cards/AlbumCard.vue +4 -4
  683. package/src/modules/music/components/cards/ArtistCard.vue +3 -8
  684. package/src/modules/music/components/cards/ArtistCardSmall.vue +2 -2
  685. package/src/modules/music/components/cards/PlaylistCard.vue +4 -4
  686. package/src/modules/music/components/cards/TrackListCard.vue +5 -5
  687. package/src/modules/music/components/forms/AlbumForm.vue +8 -8
  688. package/src/modules/music/components/forms/ArtistForm.vue +4 -4
  689. package/src/modules/music/components/forms/PlaylistForm.vue +7 -7
  690. package/src/modules/music/components/forms/SearchForm.vue +1 -1
  691. package/src/modules/music/components/forms/TrackForm.vue +13 -13
  692. package/src/modules/music/components/pages/Album.vue +22 -22
  693. package/src/modules/music/components/pages/Artist.vue +7 -7
  694. package/src/modules/music/components/pages/MusicHome.vue +13 -18
  695. package/src/modules/music/components/pages/MusicLibrary.vue +9 -9
  696. package/src/modules/music/components/pages/Playlist.vue +25 -25
  697. package/src/modules/music/components/pages/SearchResults.vue +15 -15
  698. package/src/modules/music/components/pages/Track.vue +25 -25
  699. package/src/modules/music/components/player/FullscreenPlayer.vue +5 -5
  700. package/src/modules/notifications/components/blocks/NotificationItem.vue +1 -1
  701. package/src/modules/notifications/components/elements/NotificationBadge.vue +1 -1
  702. package/src/modules/orders/components/blocks/CardApplication.vue +1 -1
  703. package/src/modules/orders/components/blocks/CardCustomer.vue +1 -1
  704. package/src/modules/orders/components/blocks/CardOrder.vue +9 -9
  705. package/src/modules/orders/components/blocks/CardOrderBackoffice.vue +5 -5
  706. package/src/modules/orders/components/blocks/CardOrderItem.vue +9 -9
  707. package/src/modules/orders/components/blocks/CardOrderUser.vue +3 -3
  708. package/src/modules/orders/components/blocks/CardOrderVar1.vue +4 -4
  709. package/src/modules/orders/components/blocks/StatusHistory.vue +3 -3
  710. package/src/modules/orders/components/elements/FieldSubscribeNewsletter.vue +1 -1
  711. package/src/modules/orders/components/elements/PriceTotal.vue +3 -3
  712. package/src/modules/orders/components/forms/FormApplicationDetails.vue +2 -2
  713. package/src/modules/orders/components/forms/FormCustomerDetails.vue +3 -3
  714. package/src/modules/orders/components/pages/Favorites.vue +1 -1
  715. package/src/modules/orders/components/pages/OrderBackoffice.vue +15 -15
  716. package/src/modules/orders/components/pages/OrderCreate.vue +2 -2
  717. package/src/modules/orders/components/pages/OrderCreateBackoffice.vue +4 -4
  718. package/src/modules/orders/components/pages/Orders_refact.vue +3 -3
  719. package/src/modules/orders/components/partials/ShopCart.vue +2 -2
  720. package/src/modules/orders/components/sections/ApplicationDetails.vue +2 -2
  721. package/src/modules/orders/components/sections/AskToLogin.vue +1 -1
  722. package/src/modules/orders/components/sections/CustomerDetails.vue +2 -2
  723. package/src/modules/orders/components/sections/Succes.vue +4 -4
  724. package/src/modules/organizations/components/blocks/CardDepartment.vue +1 -1
  725. package/src/modules/organizations/components/blocks/CardOrganization.vue +4 -4
  726. package/src/modules/organizations/components/blocks/Contacts.vue +8 -8
  727. package/src/modules/organizations/components/blocks/Rating.vue +1 -1
  728. package/src/modules/organizations/components/forms/AddExistingMembersForm.vue +3 -3
  729. package/src/modules/organizations/components/forms/DepartmentForm.vue +1 -1
  730. package/src/modules/organizations/components/forms/InviteForm.vue +1 -1
  731. package/src/modules/organizations/components/pages/Department.vue +2 -2
  732. package/src/modules/organizations/components/pages/DepartmentEdit.vue +1 -1
  733. package/src/modules/organizations/components/pages/Members.vue +1 -1
  734. package/src/modules/organizations/components/pages/Organization.new.vue +8 -8
  735. package/src/modules/organizations/components/pages/Organization.vue +6 -6
  736. package/src/modules/organizations/components/pages/OrganizationDocuments.vue +2 -2
  737. package/src/modules/organizations/components/pages/Organizations.vue +3 -3
  738. package/src/modules/organizations/components/sections/Documents.vue +2 -2
  739. package/src/modules/organizations/components/sections/MembersAdd.vue +1 -1
  740. package/src/modules/organizations/components/sections/Unit.vue +1 -1
  741. package/src/modules/pages/views/components/blocks/CardPage.vue +2 -2
  742. package/src/modules/pages/views/components/pages/Page.vue +5 -5
  743. package/src/modules/products/components/blocks/CardCategory.vue +1 -1
  744. package/src/modules/products/components/blocks/CardPosition.vue +4 -4
  745. package/src/modules/products/components/blocks/CardProduct.vue +3 -3
  746. package/src/modules/products/components/blocks/ProductDiscounts.vue +3 -3
  747. package/src/modules/products/components/blocks/ProductImages.vue +2 -2
  748. package/src/modules/products/components/blocks/ProductVariants.vue +2 -2
  749. package/src/modules/products/components/elements/Image360.vue +2 -2
  750. package/src/modules/products/components/elements/Price.vue +2 -2
  751. package/src/modules/products/components/elements/QuantitySelector.vue +3 -3
  752. package/src/modules/products/components/elements/THC.vue +1 -1
  753. package/src/modules/products/components/forms/ReorderSettingsForm.vue +1 -1
  754. package/src/modules/products/components/forms/StockAuditForm.vue +2 -2
  755. package/src/modules/products/components/forms/StockHistoryView.vue +1 -1
  756. package/src/modules/products/components/pages/Categories.vue +1 -1
  757. package/src/modules/products/components/pages/CategoryEdit.vue +2 -2
  758. package/src/modules/products/components/pages/Product.vue +6 -6
  759. package/src/modules/products/components/pages/ProductEdit.vue +6 -6
  760. package/src/modules/products/components/pages/Products.vue +11 -11
  761. package/src/modules/products/components/sections/EditAttributes.vue +4 -4
  762. package/src/modules/products/components/sections/EditCategories.vue +1 -1
  763. package/src/modules/products/components/sections/EditDiscounts.vue +6 -6
  764. package/src/modules/products/components/sections/EditRecommended.vue +1 -1
  765. package/src/modules/products/components/sections/EditVariants.vue +8 -8
  766. package/src/modules/products/components/sections/FilterProducts.vue +3 -3
  767. package/src/modules/products/components/sections/ProductConfigurator.vue +2 -2
  768. package/src/modules/products/components/sections/ProductInformationSection.vue +10 -10
  769. package/src/modules/products/components/sections/ProductsRecommended.vue +2 -2
  770. package/src/modules/products/components/sections/SectionProduct.vue +7 -7
  771. package/src/modules/products/experiments/product-recommendation/components/HeroRecommendation.vue +3 -3
  772. package/src/modules/rents/views/components/blocks/CardRent.vue +1 -1
  773. package/src/modules/rents/views/components/pages/Gant/DateLabel.vue +1 -1
  774. package/src/modules/rents/views/components/pages/Gant/GanttBar.vue +2 -2
  775. package/src/modules/rents/views/components/pages/Gant/GanttChart.vue +8 -8
  776. package/src/modules/rents/views/components/pages/Gant/GanttHeaderCell.vue +1 -1
  777. package/src/modules/rents/views/components/pages/Rents.vue +1 -1
  778. package/src/modules/rents/views/components/pages/RentsEdit.vue +6 -6
  779. package/src/modules/reports/components/pages/BackofficeReports.vue +3 -3
  780. package/src/modules/reports/components/sections/FormReport.vue +1 -1
  781. package/src/modules/spots/components/blocks/CardSpot.vue +4 -4
  782. package/src/modules/spots/components/blocks/SpotMemberModify.vue +1 -1
  783. package/src/modules/spots/components/layouts/Spots.vue +2 -2
  784. package/src/modules/spots/components/pages/Spot.vue +5 -5
  785. package/src/modules/spots/components/pages/SpotEdit.vue +2 -2
  786. package/src/modules/spots/components/pages/Spots.vue +3 -3
  787. package/src/modules/spots/components/sections/MapSection.vue +1 -1
  788. package/src/modules/spots/components/sections/WorktimeEdit.vue +4 -4
  789. package/src/modules/wallet/views/components/blocks/CardBalanceReplenished.vue +5 -5
  790. package/src/modules/wallet/views/components/blocks/CardDeposit.vue +5 -5
  791. package/src/modules/wallet/views/components/blocks/CashDeposit.vue +2 -2
  792. package/src/modules/wallet/views/components/blocks/CryptoDeposit.vue +4 -4
  793. package/src/modules/wallet/views/components/blocks/CryptoDepositProcessing.vue +11 -11
  794. package/src/modules/wallet/views/components/elements/ConnectMetamask.vue +4 -4
  795. package/src/modules/wallet/views/components/pages/Wallet.vue +22 -22
  796. package/src/styles/config.scss +193 -507
  797. package/src/styles/layout.scss +81 -1
  798. package/src/styles/reset.scss +2 -0
  799. package/src/styles/theme.scss +1 -8
  800. package/dist/martyrs/dist/main-BFvlam0J.js.map +0 -1
  801. package/dist/martyrs/node_modules/.pnpm/@capacitor_core@7.0.1/node_modules/@capacitor/core/dist/index.js.map +0 -1
  802. package/dist/martyrs/src/components/Button/Button.vue.js.map +0 -1
  803. package/dist/martyrs/src/components/Dropdown/Dropdown.vue.js.map +0 -1
  804. package/dist/martyrs/src/components/Field/Field.vue2.js.map +0 -1
  805. package/dist/martyrs/src/components/Menu/Menu.vue.js.map +0 -1
  806. package/dist/martyrs/src/components/Select/Select.vue2.js.map +0 -1
  807. package/dist/martyrs/src/components/SelectMulti/SelectMulti.vue.js.map +0 -1
  808. package/dist/node_modules/.pnpm/@vue_server-renderer@3.5.13_vue@3.5.13_typescript@5.8.3_/node_modules/@vue/server-renderer/dist/server-renderer.esm-bundler.js.map +0 -1
  809. package/dist/node_modules/.pnpm/@vue_shared@3.5.13/node_modules/@vue/shared/dist/shared.esm-bundler.js.map +0 -1
  810. package/dist/node_modules/.pnpm/dayjs@1.11.13/node_modules/dayjs/dayjs.min.js.map +0 -1
  811. package/dist/node_modules/.pnpm/dayjs@1.11.13/node_modules/dayjs/plugin/weekOfYear.js.map +0 -1
  812. package/dist/node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm-browser/native.js +0 -6
  813. package/dist/node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm-browser/native.js.map +0 -1
  814. package/dist/node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm-browser/rng.js +0 -15
  815. package/dist/node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm-browser/rng.js.map +0 -1
  816. package/dist/node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm-browser/stringify.js +0 -11
  817. package/dist/node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm-browser/stringify.js.map +0 -1
  818. package/dist/node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm-browser/v4.js +0 -20
  819. package/dist/node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm-browser/v4.js.map +0 -1
  820. package/src/modules/LAYOUT.MD +0 -767
  821. package/src/modules/STYLES.MD +0 -298
  822. package/src/modules/inventory/inventory.router.js +0 -72
  823. package/src/modules/products/products.router.js +0 -299
  824. package/src/styles/base/all.scss +0 -233
  825. package/src/styles/base/backgrounds.scss +0 -70
  826. package/src/styles/base/borders.scss +0 -407
  827. package/src/styles/base/scrolling.scss +0 -137
  828. package/src/styles/base/shadow_transitions_hover_refactor.scss +0 -158
  829. package/src/styles/base/transitions.scss +0 -109
  830. package/src/styles/responsive.scss +0 -152
  831. package/src/styles/typography.scss +0 -161
  832. /package/dist/{node_modules/.pnpm/@vue_shared@3.5.13 → martyrs}/node_modules/@vue/shared/dist/shared.esm-bundler.js +0 -0
@@ -1,9 +1,9 @@
1
1
  import { computed, ref, onMounted, resolveComponent, createElementBlock, openBlock, createCommentVNode, createBlock, createVNode, createElementVNode, withCtx, toDisplayString, Fragment, renderList } from "vue";
2
2
  import { useRoute, useRouter } from "vue-router";
3
- import _sfc_main$5 from "../../../../components/Button/Button.vue.js";
3
+ import _sfc_main$5 from "../../../../components/Button/Button.vue2.js";
4
4
  import Loader from "../../../../components/Loader/Loader.vue2.js";
5
5
  import Media from "../../../../components/Media/Media.vue.js";
6
- /* empty css */
6
+ /* empty css */
7
7
  import _sfc_main$c from "../../../../components/Popup/Popup.vue.js";
8
8
  import _sfc_main$a from "../../../../components/Feed/Feed.vue.js";
9
9
  import _sfc_main$2 from "../../../icons/navigation/IconPlay.vue.js";
@@ -36,7 +36,7 @@ const _hoisted_4 = {
36
36
  const _hoisted_5 = { class: "pos-sticky pos-t-0 mobile:pos-relative track-cover-section" };
37
37
  const _hoisted_6 = { class: "cover-container pos-relative mn-b-medium radius-big o-hidden" };
38
38
  const _hoisted_7 = { class: "cover-overlay w-100 h-100 pos-absolute pos-t-0 pos-r-0 bg-black-transp-40 flex flex-center" };
39
- const _hoisted_8 = { class: "stats-grid grid cols-2 gap-small" };
39
+ const _hoisted_8 = { class: "stats-grid d-grid cols-2 gap-small" };
40
40
  const _hoisted_9 = { class: "stat-card bg-light pd-medium radius-medium t-center" };
41
41
  const _hoisted_10 = { class: "mn-b-thin" };
42
42
  const _hoisted_11 = { class: "stat-card bg-light pd-medium radius-medium t-center" };
@@ -46,26 +46,26 @@ const _hoisted_14 = { class: "h1 mn-b-medium" };
46
46
  const _hoisted_15 = { class: "artists-section mn-b-medium" };
47
47
  const _hoisted_16 = {
48
48
  key: 0,
49
- class: "t-medium mn-b-small"
49
+ class: "fw-medium mn-b-small"
50
50
  };
51
- const _hoisted_17 = { class: "metadata-grid grid cols-2 gap-small mn-b-medium" };
51
+ const _hoisted_17 = { class: "metadata-grid d-grid cols-2 gap-small mn-b-medium" };
52
52
  const _hoisted_18 = { class: "metadata-card bg-light pd-medium radius-medium flex items-center gap-regular" };
53
- const _hoisted_19 = { class: "t-medium" };
53
+ const _hoisted_19 = { class: "fw-medium" };
54
54
  const _hoisted_20 = { class: "metadata-card bg-light pd-medium radius-medium flex items-center gap-regular" };
55
- const _hoisted_21 = { class: "t-medium" };
55
+ const _hoisted_21 = { class: "fw-medium" };
56
56
  const _hoisted_22 = { class: "metadata-card bg-light pd-medium radius-medium flex items-center gap-regular" };
57
- const _hoisted_23 = { class: "t-medium" };
57
+ const _hoisted_23 = { class: "fw-medium" };
58
58
  const _hoisted_24 = { class: "metadata-card bg-light pd-medium radius-medium flex items-center gap-regular" };
59
- const _hoisted_25 = { class: "t-medium" };
59
+ const _hoisted_25 = { class: "fw-medium" };
60
60
  const _hoisted_26 = {
61
61
  key: 0,
62
- class: "t-medium mn-b-small"
62
+ class: "fw-medium mn-b-small"
63
63
  };
64
64
  const _hoisted_27 = {
65
65
  key: 1,
66
66
  class: "album-card bg-light pd-medium radius-medium mn-b-medium"
67
67
  };
68
- const _hoisted_28 = { class: "t-medium" };
68
+ const _hoisted_28 = { class: "fw-medium" };
69
69
  const _hoisted_29 = {
70
70
  key: 2,
71
71
  class: "tags-section mn-b-medium"
@@ -227,7 +227,7 @@ const _sfc_main = {
227
227
  ])) : createCommentVNode("", true),
228
228
  hasLoaded.value && !track.value ? (openBlock(), createElementBlock("div", _hoisted_3, _cache[1] || (_cache[1] = [
229
229
  createElementVNode("h2", { class: "" }, "Track not found", -1),
230
- createElementVNode("p", { class: "t-transp t-medium" }, "The track you're looking for doesn't exist or has been removed.", -1)
230
+ createElementVNode("p", { class: "t-transp fw-medium" }, "The track you're looking for doesn't exist or has been removed.", -1)
231
231
  ]))) : createCommentVNode("", true),
232
232
  track.value ? (openBlock(), createElementBlock("div", _hoisted_4, [
233
233
  createElementVNode("div", _hoisted_5, [
@@ -242,7 +242,7 @@ const _sfc_main = {
242
242
  onClick: playTrack,
243
243
  color: "white",
244
244
  size: "big",
245
- class: "w-5r h-5r radius-big bg-main shadow-big hover-scale-110"
245
+ class: "w-5r h-5r radius-big bg-main shadow-big hover:scale-[1.05]10"
246
246
  }, {
247
247
  default: withCtx(() => [
248
248
  !isPlaying.value ? (openBlock(), createBlock(_sfc_main$2, {
@@ -272,8 +272,8 @@ const _sfc_main = {
272
272
  ]),
273
273
  createElementVNode("div", _hoisted_13, [
274
274
  _cache[11] || (_cache[11] = createElementVNode("div", { class: "flex items-center gap-small mn-b-small" }, [
275
- createElementVNode("span", { class: "bg-light t-medium pd-thin radius-thin uppercase t-small t-uppercase" }, "Single"),
276
- createElementVNode("span", { class: "bg-light t-medium pd-thin radius-thin uppercase t-small t-uppercase" }, "Explicit")
275
+ createElementVNode("span", { class: "bg-light fw-medium pd-thin radius-thin uppercase t-small t-uppercase" }, "Single"),
276
+ createElementVNode("span", { class: "bg-light fw-medium pd-thin radius-thin uppercase t-small t-uppercase" }, "Explicit")
277
277
  ], -1)),
278
278
  createElementVNode("h1", _hoisted_14, toDisplayString(track.value.title), 1),
279
279
  createVNode(_sfc_main$6, { buttons: actionButtons.value }, null, 8, ["buttons"]),
@@ -287,31 +287,31 @@ const _sfc_main = {
287
287
  onToggleFollow: toggleFollowArtist
288
288
  }, null, 8, ["artist", "is-following", "show-follow-button"]))
289
289
  ]),
290
- _cache[12] || (_cache[12] = createElementVNode("h3", { class: "t-medium mn-b-small" }, "Metadata", -1)),
290
+ _cache[12] || (_cache[12] = createElementVNode("h3", { class: "fw-medium mn-b-small" }, "Metadata", -1)),
291
291
  createElementVNode("div", _hoisted_17, [
292
292
  createElementVNode("div", _hoisted_18, [
293
- createVNode(_sfc_main$7, { class: "i-medium t-primary" }),
293
+ createVNode(_sfc_main$7, { class: "i-medium t-main" }),
294
294
  createElementVNode("div", null, [
295
295
  _cache[4] || (_cache[4] = createElementVNode("div", { class: "t-small t-transp t-uppercase" }, "Released", -1)),
296
296
  createElementVNode("div", _hoisted_19, toDisplayString(formatDate(track.value.releaseDate)), 1)
297
297
  ])
298
298
  ]),
299
299
  createElementVNode("div", _hoisted_20, [
300
- createVNode(IconTime, { class: "i-medium t-primary" }),
300
+ createVNode(IconTime, { class: "i-medium t-main" }),
301
301
  createElementVNode("div", null, [
302
302
  _cache[5] || (_cache[5] = createElementVNode("div", { class: "t-small t-transp t-uppercase" }, "Duration", -1)),
303
303
  createElementVNode("div", _hoisted_21, toDisplayString(formatDuration(track.value.duration)), 1)
304
304
  ])
305
305
  ]),
306
306
  createElementVNode("div", _hoisted_22, [
307
- createVNode(_sfc_main$8, { class: "i-medium t-primary" }),
307
+ createVNode(_sfc_main$8, { class: "i-medium t-main" }),
308
308
  createElementVNode("div", null, [
309
309
  _cache[6] || (_cache[6] = createElementVNode("div", { class: "t-small t-transp t-uppercase" }, "Status", -1)),
310
310
  createElementVNode("div", _hoisted_23, toDisplayString(track.value.status), 1)
311
311
  ])
312
312
  ]),
313
313
  createElementVNode("div", _hoisted_24, [
314
- createVNode(_sfc_main$9, { class: "i-medium t-primary" }),
314
+ createVNode(_sfc_main$9, { class: "i-medium t-main" }),
315
315
  createElementVNode("div", null, [
316
316
  _cache[7] || (_cache[7] = createElementVNode("div", { class: "t-small t-transp t-uppercase" }, "Visibility", -1)),
317
317
  createElementVNode("div", _hoisted_25, toDisplayString(track.value.isPublic ? "Public" : "Private"), 1)
@@ -322,7 +322,7 @@ const _sfc_main = {
322
322
  track.value.album ? (openBlock(), createElementBlock("div", _hoisted_27, [
323
323
  createVNode(_component_router_link, {
324
324
  to: `/album/${track.value.album.url}`,
325
- class: "flex flex-v-center gap-thin hover-opacity"
325
+ class: "flex flex-v-center gap-thin hover:opacity-70"
326
326
  }, {
327
327
  default: withCtx(() => [
328
328
  createVNode(Media, {
@@ -336,28 +336,28 @@ const _sfc_main = {
336
336
  }, 8, ["to"])
337
337
  ])) : createCommentVNode("", true),
338
338
  track.value.genre && track.value.genre.length || track.value.tags && track.value.tags.length ? (openBlock(), createElementBlock("div", _hoisted_29, [
339
- _cache[8] || (_cache[8] = createElementVNode("h3", { class: "t-medium mn-b-small" }, "Genres & Tags", -1)),
339
+ _cache[8] || (_cache[8] = createElementVNode("h3", { class: "fw-medium mn-b-small" }, "Genres & Tags", -1)),
340
340
  createElementVNode("div", _hoisted_30, [
341
341
  (openBlock(true), createElementBlock(Fragment, null, renderList(track.value.genre, (genre) => {
342
342
  return openBlock(), createElementBlock("span", {
343
343
  key: genre,
344
- class: "tag bg-main t-medium pd-thin radius-thin t-small cursor-pointer"
344
+ class: "tag bg-main fw-medium pd-thin radius-thin t-small cursor-pointer"
345
345
  }, toDisplayString(genre.name || genre), 1);
346
346
  }), 128)),
347
347
  (openBlock(true), createElementBlock(Fragment, null, renderList(track.value.tags, (tag) => {
348
348
  return openBlock(), createElementBlock("span", {
349
349
  key: tag,
350
- class: "tag bg-light t-transp pd-thin-big radius-small t-small hover-bg-light cursor-pointer"
350
+ class: "tag bg-light t-transp pd-thin-big radius-small t-small hover:bg-light cursor-pointer"
351
351
  }, " #" + toDisplayString(tag.name || tag), 1);
352
352
  }), 128))
353
353
  ])
354
354
  ])) : createCommentVNode("", true),
355
355
  track.value.description ? (openBlock(), createElementBlock("div", _hoisted_31, [
356
- _cache[9] || (_cache[9] = createElementVNode("h3", { class: "t-medium mn-b-small" }, "About", -1)),
356
+ _cache[9] || (_cache[9] = createElementVNode("h3", { class: "fw-medium mn-b-small" }, "About", -1)),
357
357
  createElementVNode("p", _hoisted_32, toDisplayString(track.value.description), 1)
358
358
  ])) : createCommentVNode("", true),
359
359
  track.value.lyrics ? (openBlock(), createElementBlock("div", _hoisted_33, [
360
- _cache[10] || (_cache[10] = createElementVNode("h3", { class: "t-medium mn-b-small" }, "Lyrics", -1)),
360
+ _cache[10] || (_cache[10] = createElementVNode("h3", { class: "fw-medium mn-b-small" }, "Lyrics", -1)),
361
361
  createElementVNode("pre", _hoisted_34, toDisplayString(track.value.lyrics), 1)
362
362
  ])) : createCommentVNode("", true)
363
363
  ])
@@ -378,7 +378,7 @@ const _sfc_main = {
378
378
  class: "pd-medium bg-light radius-medium"
379
379
  }
380
380
  },
381
- class: "grid cols-2 cols-m-3 cols-l-4 gap-regular"
381
+ class: "d-grid cols-2 cols-m-3 cols-l-4 gap-regular"
382
382
  }, {
383
383
  default: withCtx(({ items }) => [
384
384
  createElementVNode("div", _hoisted_36, [
@@ -1 +1 @@
1
- {"version":3,"file":"Track.vue.js","sources":["../../../../../../../src/modules/music/components/pages/Track.vue"],"sourcesContent":["<!-- components/pages/Track.vue -->\n<template>\n <div class=\"track-page pd-small\">\n <!-- Loading -->\n <div v-if=\"isLoading\" class=\"w-100 h-25r flex-center flex\">\n <Loader />\n </div>\n\n <!-- Not Found -->\n <div v-if=\"hasLoaded && !track\" class=\"t-center pd-big\">\n <h2 class=\"\">Track not found</h2>\n <p class=\"t-transp t-medium\">The track you're looking for doesn't exist or has been removed.</p>\n </div>\n\n <!-- Track Content -->\n <div v-if=\"track\" class=\"track-content cols-2 mobile:cols-1 gap-big\">\n <!-- Left Column - Cover & Stats -->\n <div class=\"pos-sticky pos-t-0 mobile:pos-relative track-cover-section\">\n <!-- Cover with Play Overlay -->\n <div class=\"cover-container pos-relative mn-b-medium radius-big o-hidden\">\n <Media \n :url=\"track.coverUrl || (track.album && track.album.coverUrl) || '/logo/logo-placeholder.jpg'\" \n :alt=\"track.title\"\n class=\"aspect-1x1 w-100 radius-medium o-hidden\"\n />\n <div class=\"cover-overlay w-100 h-100 pos-absolute pos-t-0 pos-r-0 bg-black-transp-40 flex flex-center\">\n <Button\n @click=\"playTrack\"\n color=\"white\"\n size=\"big\"\n class=\"w-5r h-5r radius-big bg-main shadow-big hover-scale-110\"\n >\n <IconPlay v-if=\"!isPlaying\" fill=\"rgb(var(--white))\" class=\"i-medium\" />\n <IconPause v-else fill=\"rgb(var(--white))\" class=\"i-medium\" />\n </Button>\n </div>\n </div>\n\n \n\n <!-- Quick Stats -->\n <div class=\"stats-grid grid cols-2 gap-small\">\n <div class=\"stat-card bg-light pd-medium radius-medium t-center\">\n <div class=\" mn-b-thin\">{{ formatNumber(track.playCount) }}</div>\n <div class=\"t-small t-transp t-uppercase\">Plays</div>\n </div>\n <div class=\"stat-card bg-light pd-medium radius-medium t-center\">\n <div class=\" mn-b-thin\">{{ formatNumber(track.views) }}</div>\n <div class=\"t-small t-transp t-uppercase\">Views</div>\n </div>\n </div>\n </div>\n\n <!-- Right Column - Track Details -->\n <div class=\"track-details-section\">\n <!-- Track Type Badge -->\n <div class=\"flex items-center gap-small mn-b-small\">\n <span class=\"bg-light t-medium pd-thin radius-thin uppercase t-small t-uppercase\">Single</span>\n <span class=\"bg-light t-medium pd-thin radius-thin uppercase t-small t-uppercase\">Explicit</span>\n </div>\n\n <!-- Track Title -->\n <h1 class=\"h1 mn-b-medium\">{{ track.title }}</h1>\n <!-- Action Buttons -->\n <ActionButtons :buttons=\"actionButtons\" />\n\n <!-- Artist Card -->\n <div class=\"artists-section mn-b-medium\">\n <h3 class=\"t-medium mn-b-small\" v-if=\"track.artist\">Artist</h3>\n <ArtistCardSmall \n :key=\"track.artist._id\"\n :artist=\"track.artist\"\n :is-following=\"isFollowingArtist\"\n :show-follow-button=\"!isOwner\"\n @toggle-follow=\"toggleFollowArtist\"\n />\n </div>\n\n <!-- Metadata Cards -->\n <h3 class=\"t-medium mn-b-small\">Metadata</h3>\n <div class=\"metadata-grid grid cols-2 gap-small mn-b-medium\">\n <!-- Release Date -->\n <div class=\"metadata-card bg-light pd-medium radius-medium flex items-center gap-regular\">\n <IconCalendar class=\"i-medium t-primary\" />\n <div>\n <div class=\"t-small t-transp t-uppercase\">Released</div>\n <div class=\"t-medium \">{{ formatDate(track.releaseDate) }}</div>\n </div>\n </div>\n\n <!-- Total Duration -->\n <div class=\"metadata-card bg-light pd-medium radius-medium flex items-center gap-regular\">\n <IconClock class=\"i-medium t-primary\" />\n <div>\n <div class=\"t-small t-transp t-uppercase\">Duration</div>\n <div class=\"t-medium \">{{ formatDuration(track.duration) }}</div>\n </div>\n </div>\n\n <!-- Label -->\n <div class=\"metadata-card bg-light pd-medium radius-medium flex items-center gap-regular\">\n <IconCheck class=\"i-medium t-primary\" />\n <div>\n <div class=\"t-small t-transp t-uppercase\">Status</div>\n <div class=\"t-medium \">{{ track.status }}</div>\n </div>\n </div>\n\n <!-- Visibility -->\n <div class=\"metadata-card bg-light pd-medium radius-medium flex items-center gap-regular\">\n <IconEye class=\"i-medium t-primary\" />\n <div>\n <div class=\"t-small t-transp t-uppercase\">Visibility</div>\n <div class=\"t-medium \">{{ track.isPublic ? 'Public' : 'Private' }}</div>\n </div>\n </div>\n </div>\n\n\n <!-- Album Info -->\n <h3 v-if=\"track.album\" class=\"t-medium mn-b-small\">From Album</h3>\n <div v-if=\"track.album\" class=\"album-card bg-light pd-medium radius-medium mn-b-medium\">\n \n <router-link \n :to=\"`/album/${track.album.url}`\"\n class=\"flex flex-v-center gap-thin hover-opacity\"\n >\n <Media \n :url=\"track.album.coverArt || '/logo/logo-placeholder.jpg'\"\n :alt=\"track.album.title\"\n class=\"w-3r h-3r radius-thin o-hidden object-cover\"\n />\n <span class=\"t-medium \">{{ track.album.title }}</span>\n </router-link>\n </div>\n\n <!-- Genres & Tags -->\n <div v-if=\"(track.genre && track.genre.length) || (track.tags && track.tags.length)\" class=\"tags-section mn-b-medium\">\n <h3 class=\"t-medium mn-b-small\">Genres & Tags</h3>\n <div class=\"flex gap-thin flex-wrap\">\n <span \n v-for=\"genre in track.genre\" \n :key=\"genre\"\n class=\"tag bg-main t-medium pd-thin radius-thin t-small cursor-pointer\"\n >\n {{ genre.name || genre }}\n </span>\n <span \n v-for=\"tag in track.tags\" \n :key=\"tag\"\n class=\"tag bg-light t-transp pd-thin-big radius-small t-small hover-bg-light cursor-pointer\"\n >\n #{{ tag.name || tag }}\n </span>\n </div>\n </div>\n\n <!-- Description -->\n <div v-if=\"track.description\" class=\"description-section bg-light pd-medium radius-medium mn-b-medium\">\n <h3 class=\"t-medium mn-b-small\">About</h3>\n <p class=\"t-transp\">{{ track.description }}</p>\n </div>\n\n <!-- Lyrics -->\n <div v-if=\"track.lyrics\" class=\"lyrics-section bg-light pd-medium radius-medium\">\n <h3 class=\"t-medium mn-b-small\">Lyrics</h3>\n <pre class=\"t-transp t-small\">{{ track.lyrics }}</pre>\n </div>\n </div>\n </div>\n\n <!-- Related Tracks -->\n <section v-if=\"track && relatedTracks && relatedTracks.length\" class=\"related-section mn-t-big\">\n <h2 class=\"h2 mn-b-medium\">Related Tracks</h2>\n <Feed\n :store=\"{\n read: () => new Promise(resolve => resolve(relatedTracks || [])),\n state: { isLoading: false }\n }\"\n :external=\"true\"\n :items=\"relatedTracks\"\n :states=\"{\n empty: {\n title: 'No related tracks',\n description: 'Check back later for recommendations',\n class: 'pd-medium bg-light radius-medium'\n }\n }\"\n class=\"grid cols-2 cols-m-3 cols-l-4 gap-regular\"\n >\n <template #default=\"{ items }\">\n <div class=\"bg-light radius-medium o-hidden\">\n <TrackListCard\n v-for=\"(relatedTrack, index) in items\"\n :key=\"relatedTrack._id\"\n :track=\"relatedTrack\"\n :index=\"index\"\n :showAlbum=\"true\"\n :showCover=\"true\"\n />\n </div>\n </template>\n </Feed>\n </section>\n\n <!-- Add to Playlist Modal -->\n <Popup \n v-if=\"showAddToPlaylistModal\" \n @close-popup=\"showAddToPlaylistModal = false\" \n class=\"bg-white pd-medium w-m-25r radius-medium\"\n >\n <h3 class=\"h3 mn-b-medium\">Add to Playlist</h3>\n <!-- <PlaylistSelector \n :trackId=\"track._id\" \n @added=\"showAddToPlaylistModal = false\"\n /> -->\n <p class=\"t-transp\">Playlist selector coming soon...</p>\n </Popup>\n </div>\n</template>\n\n<script setup>\nimport { ref, computed, onMounted, watch } from 'vue';\nimport { useRoute, useRouter } from 'vue-router';\nimport Button from '@martyrs/src/components/Button/Button.vue';\nimport Loader from '@martyrs/src/components/Loader/Loader.vue';\nimport Media from '@martyrs/src/components/Media/Media.vue';\nimport Dropdown from '@martyrs/src/components/Dropdown/Dropdown.vue';\nimport Popup from '@martyrs/src/components/Popup/Popup.vue';\nimport Feed from '@martyrs/src/components/Feed/Feed.vue';\n\n// Icons\nimport IconPlay from '@martyrs/src/modules/icons/navigation/IconPlay.vue';\nimport IconPause from '@martyrs/src/modules/icons/navigation/IconPause.vue';\nimport IconLike from '@martyrs/src/modules/icons/navigation/IconLike.vue';\nimport IconEllipsis from '@martyrs/src/modules/icons/navigation/IconEllipsis.vue';\nimport IconAdd from '@martyrs/src/modules/icons/navigation/IconAdd.vue';\nimport IconClock from '@martyrs/src/modules/icons/entities/IconTime.vue';\nimport IconCalendar from '@martyrs/src/modules/icons/entities/IconCalendar.vue';\nimport IconCheck from '@martyrs/src/modules/icons/navigation/IconCheckmark.vue';\nimport IconEye from '@martyrs/src/modules/icons/actions/IconShow.vue';\nimport IconVerified from '@martyrs/src/modules/icons/navigation/IconCheckmark.vue';\n\n// Components\nimport ActionButtons from '../blocks/ActionButtons.vue';\nimport TrackListCard from '../cards/TrackListCard.vue';\nimport ArtistCardSmall from '../cards/ArtistCardSmall.vue';\n// import PlaylistSelector from '../forms/PlaylistSelector.vue';\n\n// Store\nimport { state as tracksState, actions as tracksActions } from '../../store/tracks.js';\nimport { state as playerState, actions as playerActions } from '../../store/player.js';\nimport { state as authState } from '@martyrs/src/modules/auth/views/store/auth.js';\n\nconst isPlaying = computed(() => playerState.isPlaying);\n\nconst route = useRoute();\nconst router = useRouter();\n\n// Emits\nconst emits = defineEmits(['page-loading', 'page-loaded']);\n\n// State\nconst hasLoaded = ref(false);\nconst showAddToPlaylistModal = ref(false);\nconst isFavorite = ref(false);\nconst isFollowingArtist = ref(false);\n\n// Clear state\ntracksState.currentTrack = null;\ntracksState.relatedTracks = [];\n\n// Computed\nconst track = computed(() => tracksState.currentTrack);\nconst relatedTracks = computed(() => tracksState.relatedTracks || []);\n\nconst isOwner = computed(() => {\n return track.value?.owner?.target === authState.user?._id;\n});\n\nconst actionButtons = computed(() => {\n const buttons = [\n {\n type: 'button',\n class: 't-white bg-black',\n icon: isPlaying.value ? IconPause : IconPlay,\n iconFill: 'rgb(var(--white))',\n text: isPlaying.value ? 'Pause' : 'Play',\n action: playTrack\n },\n {\n type: 'button',\n class: 'bg-light',\n icon: IconAdd,\n text: 'Add to Queue',\n action: addToQueue\n },\n {\n type: 'button',\n class: 'bg-light',\n icon: IconLike,\n iconFill: isFavorite.value ? 'rgb(var(--main))' : 'rgb(var(--black))',\n text: isFavorite.value ? 'Liked' : 'Like',\n action: toggleFavorite\n },\n {\n type: 'dropdown',\n items: [\n { text: 'Add to Playlist', action: () => showAddToPlaylistModal.value = true },\n { text: 'Copy Link', action: copyLink }\n ]\n }\n ];\n\n if (isOwner.value) {\n const items = buttons[3].items;\n items.push({ separator: true });\n items.push({ text: 'Edit Track', action: editTrack });\n items.push({ text: 'Delete Track', action: deleteTrack, color: 'danger' });\n }\n\n return buttons;\n});\n\n// Format helpers\nconst formatDuration = (seconds) => {\n if (!seconds) return '0:00';\n const h = Math.floor(seconds / 3600);\n const m = Math.floor((seconds % 3600) / 60);\n const s = Math.floor(seconds % 60);\n \n if (h > 0) {\n return `${h}:${m.toString().padStart(2, '0')}:${s.toString().padStart(2, '0')}`;\n }\n return `${m}:${s.toString().padStart(2, '0')}`;\n};\n\nconst formatDate = (dateString) => {\n if (!dateString) return 'Unknown';\n return new Date(dateString).toLocaleDateString('en-US', {\n year: 'numeric',\n month: 'long',\n day: 'numeric'\n });\n};\n\nconst formatNumber = (num) => {\n if (!num) return '0';\n if (num >= 1000000) {\n return (num / 1000000).toFixed(1) + 'M';\n } else if (num >= 1000) {\n return (num / 1000).toFixed(1) + 'K';\n }\n return num.toString();\n};\n\n// Actions\nconst playTrack = () => {\n if (track.value) {\n playerActions.setQueue([track.value]);\n }\n};\n\nconst toggleFavorite = () => {\n isFavorite.value = !isFavorite.value;\n // TODO: Implement actual saving\n};\n\nconst toggleFollowArtist = () => {\n isFollowingArtist.value = !isFollowingArtist.value;\n // TODO: Implement actual following\n};\n\nconst addToQueue = () => {\n if (track.value) {\n playerActions.addToQueue(track.value);\n }\n};\n\nconst editTrack = () => {\n router.push({ name: 'track-edit', params: { url: track.value.url } });\n};\n\nconst deleteTrack = async () => {\n if (confirm('Are you sure you want to delete this track?')) {\n try {\n await tracksActions.deleteTrack(track.value._id);\n router.push({ name: 'music-library' });\n } catch (error) {\n console.error('Failed to delete track:', error);\n }\n }\n};\n\nconst copyLink = () => {\n navigator.clipboard.writeText(window.location.href);\n};\n\n// Data fetching\nconst fetchTrackData = async () => {\n try {\n await tracksActions.fetchTrackByUrl(route.params.url);\n await tracksActions.fetchRelatedTracks(route.params.url);\n } catch (error) {\n console.error('Error loading track:', error);\n }\n};\n\n// Lifecycle\nonMounted(async () => {\n emits('page-loading');\n \n await fetchTrackData();\n \n hasLoaded.value = true;\n emits('page-loaded');\n});\n</script>\n\n<style scoped>\n</style>"],"names":["playerState","tracksState","authState","IconPause","IconPlay","IconAdd","IconLike","playerActions","tracksActions"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8PA,UAAM,YAAY,SAAS,MAAMA,MAAY,SAAS;AAEtD,UAAM,QAAQ,SAAQ;AACtB,UAAM,SAAS,UAAS;AAGxB,UAAM,QAAQ;AAGd,UAAM,YAAY,IAAI,KAAK;AAC3B,UAAM,yBAAyB,IAAI,KAAK;AACxC,UAAM,aAAa,IAAI,KAAK;AAC5B,UAAM,oBAAoB,IAAI,KAAK;AAGnCC,YAAY,eAAe;AAC3BA,YAAY,gBAAgB,CAAA;AAG5B,UAAM,QAAQ,SAAS,MAAMA,QAAY,YAAY;AACrD,UAAM,gBAAgB,SAAS,MAAMA,QAAY,iBAAiB,CAAA,CAAE;AAEpE,UAAM,UAAU,SAAS,MAAM;AAC7B,aAAO,MAAM,OAAO,OAAO,WAAWC,QAAU,MAAM;AAAA,IACxD,CAAC;AAED,UAAM,gBAAgB,SAAS,MAAM;AACnC,YAAM,UAAU;AAAA,QACd;AAAA,UACE,MAAM;AAAA,UACN,OAAO;AAAA,UACP,MAAM,UAAU,QAAQC,cAAYC;AAAAA,UACpC,UAAU;AAAA,UACV,MAAM,UAAU,QAAQ,UAAU;AAAA,UAClC,QAAQ;AAAA,QACd;AAAA,QACI;AAAA,UACE,MAAM;AAAA,UACN,OAAO;AAAA,UACP,MAAMC;AAAAA,UACN,MAAM;AAAA,UACN,QAAQ;AAAA,QACd;AAAA,QACI;AAAA,UACE,MAAM;AAAA,UACN,OAAO;AAAA,UACP,MAAMC;AAAAA,UACN,UAAU,WAAW,QAAQ,qBAAqB;AAAA,UAClD,MAAM,WAAW,QAAQ,UAAU;AAAA,UACnC,QAAQ;AAAA,QACd;AAAA,QACI;AAAA,UACE,MAAM;AAAA,UACN,OAAO;AAAA,YACL,EAAE,MAAM,mBAAmB,QAAQ,MAAM,uBAAuB,QAAQ,KAAI;AAAA,YAC5E,EAAE,MAAM,aAAa,QAAQ,SAAQ;AAAA,UAC7C;AAAA,QACA;AAAA,MACA;AAEE,UAAI,QAAQ,OAAO;AACjB,cAAM,QAAQ,QAAQ,CAAC,EAAE;AACzB,cAAM,KAAK,EAAE,WAAW,KAAI,CAAE;AAC9B,cAAM,KAAK,EAAE,MAAM,cAAc,QAAQ,WAAW;AACpD,cAAM,KAAK,EAAE,MAAM,gBAAgB,QAAQ,aAAa,OAAO,UAAU;AAAA,MAC3E;AAEA,aAAO;AAAA,IACT,CAAC;AAGD,UAAM,iBAAiB,CAAC,YAAY;AAClC,UAAI,CAAC,QAAS,QAAO;AACrB,YAAM,IAAI,KAAK,MAAM,UAAU,IAAI;AACnC,YAAM,IAAI,KAAK,MAAO,UAAU,OAAQ,EAAE;AAC1C,YAAM,IAAI,KAAK,MAAM,UAAU,EAAE;AAEjC,UAAI,IAAI,GAAG;AACT,eAAO,GAAG,CAAC,IAAI,EAAE,SAAQ,EAAG,SAAS,GAAG,GAAG,CAAC,IAAI,EAAE,SAAQ,EAAG,SAAS,GAAG,GAAG,CAAC;AAAA,MAC/E;AACA,aAAO,GAAG,CAAC,IAAI,EAAE,SAAQ,EAAG,SAAS,GAAG,GAAG,CAAC;AAAA,IAC9C;AAEA,UAAM,aAAa,CAAC,eAAe;AACjC,UAAI,CAAC,WAAY,QAAO;AACxB,aAAO,IAAI,KAAK,UAAU,EAAE,mBAAmB,SAAS;AAAA,QACtD,MAAM;AAAA,QACN,OAAO;AAAA,QACP,KAAK;AAAA,MACT,CAAG;AAAA,IACH;AAEA,UAAM,eAAe,CAAC,QAAQ;AAC5B,UAAI,CAAC,IAAK,QAAO;AACjB,UAAI,OAAO,KAAS;AAClB,gBAAQ,MAAM,KAAS,QAAQ,CAAC,IAAI;AAAA,MACtC,WAAW,OAAO,KAAM;AACtB,gBAAQ,MAAM,KAAM,QAAQ,CAAC,IAAI;AAAA,MACnC;AACA,aAAO,IAAI,SAAQ;AAAA,IACrB;AAGA,UAAM,YAAY,MAAM;AACtB,UAAI,MAAM,OAAO;AACfC,gBAAc,SAAS,CAAC,MAAM,KAAK,CAAC;AAAA,MACtC;AAAA,IACF;AAEA,UAAM,iBAAiB,MAAM;AAC3B,iBAAW,QAAQ,CAAC,WAAW;AAAA,IAEjC;AAEA,UAAM,qBAAqB,MAAM;AAC/B,wBAAkB,QAAQ,CAAC,kBAAkB;AAAA,IAE/C;AAEA,UAAM,aAAa,MAAM;AACvB,UAAI,MAAM,OAAO;AACfA,gBAAc,WAAW,MAAM,KAAK;AAAA,MACtC;AAAA,IACF;AAEA,UAAM,YAAY,MAAM;AACtB,aAAO,KAAK,EAAE,MAAM,cAAc,QAAQ,EAAE,KAAK,MAAM,MAAM,IAAG,EAAE,CAAE;AAAA,IACtE;AAEA,UAAM,cAAc,YAAY;AAC9B,UAAI,QAAQ,6CAA6C,GAAG;AAC1D,YAAI;AACF,gBAAMC,UAAc,YAAY,MAAM,MAAM,GAAG;AAC/C,iBAAO,KAAK,EAAE,MAAM,gBAAe,CAAE;AAAA,QACvC,SAAS,OAAO;AACd,kBAAQ,MAAM,2BAA2B,KAAK;AAAA,QAChD;AAAA,MACF;AAAA,IACF;AAEA,UAAM,WAAW,MAAM;AACrB,gBAAU,UAAU,UAAU,OAAO,SAAS,IAAI;AAAA,IACpD;AAGA,UAAM,iBAAiB,YAAY;AACjC,UAAI;AACF,cAAMA,UAAc,gBAAgB,MAAM,OAAO,GAAG;AACpD,cAAMA,UAAc,mBAAmB,MAAM,OAAO,GAAG;AAAA,MACzD,SAAS,OAAO;AACd,gBAAQ,MAAM,wBAAwB,KAAK;AAAA,MAC7C;AAAA,IACF;AAGA,cAAU,YAAY;AACpB,YAAM,cAAc;AAEpB,YAAM,eAAc;AAEpB,gBAAU,QAAQ;AAClB,YAAM,aAAa;AAAA,IACrB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"Track.vue.js","sources":["../../../../../../../src/modules/music/components/pages/Track.vue"],"sourcesContent":["<!-- components/pages/Track.vue -->\n<template>\n <div class=\"track-page pd-small\">\n <!-- Loading -->\n <div v-if=\"isLoading\" class=\"w-100 h-25r flex-center flex\">\n <Loader />\n </div>\n\n <!-- Not Found -->\n <div v-if=\"hasLoaded && !track\" class=\"t-center pd-big\">\n <h2 class=\"\">Track not found</h2>\n <p class=\"t-transp fw-medium\">The track you're looking for doesn't exist or has been removed.</p>\n </div>\n\n <!-- Track Content -->\n <div v-if=\"track\" class=\"track-content cols-2 mobile:cols-1 gap-big\">\n <!-- Left Column - Cover & Stats -->\n <div class=\"pos-sticky pos-t-0 mobile:pos-relative track-cover-section\">\n <!-- Cover with Play Overlay -->\n <div class=\"cover-container pos-relative mn-b-medium radius-big o-hidden\">\n <Media \n :url=\"track.coverUrl || (track.album && track.album.coverUrl) || '/logo/logo-placeholder.jpg'\" \n :alt=\"track.title\"\n class=\"aspect-1x1 w-100 radius-medium o-hidden\"\n />\n <div class=\"cover-overlay w-100 h-100 pos-absolute pos-t-0 pos-r-0 bg-black-transp-40 flex flex-center\">\n <Button\n @click=\"playTrack\"\n color=\"white\"\n size=\"big\"\n class=\"w-5r h-5r radius-big bg-main shadow-big hover:scale-[1.05]10\"\n >\n <IconPlay v-if=\"!isPlaying\" fill=\"rgb(var(--white))\" class=\"i-medium\" />\n <IconPause v-else fill=\"rgb(var(--white))\" class=\"i-medium\" />\n </Button>\n </div>\n </div>\n\n \n\n <!-- Quick Stats -->\n <div class=\"stats-grid d-grid cols-2 gap-small\">\n <div class=\"stat-card bg-light pd-medium radius-medium t-center\">\n <div class=\" mn-b-thin\">{{ formatNumber(track.playCount) }}</div>\n <div class=\"t-small t-transp t-uppercase\">Plays</div>\n </div>\n <div class=\"stat-card bg-light pd-medium radius-medium t-center\">\n <div class=\" mn-b-thin\">{{ formatNumber(track.views) }}</div>\n <div class=\"t-small t-transp t-uppercase\">Views</div>\n </div>\n </div>\n </div>\n\n <!-- Right Column - Track Details -->\n <div class=\"track-details-section\">\n <!-- Track Type Badge -->\n <div class=\"flex items-center gap-small mn-b-small\">\n <span class=\"bg-light fw-medium pd-thin radius-thin uppercase t-small t-uppercase\">Single</span>\n <span class=\"bg-light fw-medium pd-thin radius-thin uppercase t-small t-uppercase\">Explicit</span>\n </div>\n\n <!-- Track Title -->\n <h1 class=\"h1 mn-b-medium\">{{ track.title }}</h1>\n <!-- Action Buttons -->\n <ActionButtons :buttons=\"actionButtons\" />\n\n <!-- Artist Card -->\n <div class=\"artists-section mn-b-medium\">\n <h3 class=\"fw-medium mn-b-small\" v-if=\"track.artist\">Artist</h3>\n <ArtistCardSmall \n :key=\"track.artist._id\"\n :artist=\"track.artist\"\n :is-following=\"isFollowingArtist\"\n :show-follow-button=\"!isOwner\"\n @toggle-follow=\"toggleFollowArtist\"\n />\n </div>\n\n <!-- Metadata Cards -->\n <h3 class=\"fw-medium mn-b-small\">Metadata</h3>\n <div class=\"metadata-grid d-grid cols-2 gap-small mn-b-medium\">\n <!-- Release Date -->\n <div class=\"metadata-card bg-light pd-medium radius-medium flex items-center gap-regular\">\n <IconCalendar class=\"i-medium t-main\" />\n <div>\n <div class=\"t-small t-transp t-uppercase\">Released</div>\n <div class=\"fw-medium \">{{ formatDate(track.releaseDate) }}</div>\n </div>\n </div>\n\n <!-- Total Duration -->\n <div class=\"metadata-card bg-light pd-medium radius-medium flex items-center gap-regular\">\n <IconClock class=\"i-medium t-main\" />\n <div>\n <div class=\"t-small t-transp t-uppercase\">Duration</div>\n <div class=\"fw-medium \">{{ formatDuration(track.duration) }}</div>\n </div>\n </div>\n\n <!-- Label -->\n <div class=\"metadata-card bg-light pd-medium radius-medium flex items-center gap-regular\">\n <IconCheck class=\"i-medium t-main\" />\n <div>\n <div class=\"t-small t-transp t-uppercase\">Status</div>\n <div class=\"fw-medium \">{{ track.status }}</div>\n </div>\n </div>\n\n <!-- Visibility -->\n <div class=\"metadata-card bg-light pd-medium radius-medium flex items-center gap-regular\">\n <IconEye class=\"i-medium t-main\" />\n <div>\n <div class=\"t-small t-transp t-uppercase\">Visibility</div>\n <div class=\"fw-medium \">{{ track.isPublic ? 'Public' : 'Private' }}</div>\n </div>\n </div>\n </div>\n\n\n <!-- Album Info -->\n <h3 v-if=\"track.album\" class=\"fw-medium mn-b-small\">From Album</h3>\n <div v-if=\"track.album\" class=\"album-card bg-light pd-medium radius-medium mn-b-medium\">\n \n <router-link \n :to=\"`/album/${track.album.url}`\"\n class=\"flex flex-v-center gap-thin hover:opacity-70\"\n >\n <Media \n :url=\"track.album.coverArt || '/logo/logo-placeholder.jpg'\"\n :alt=\"track.album.title\"\n class=\"w-3r h-3r radius-thin o-hidden object-cover\"\n />\n <span class=\"fw-medium \">{{ track.album.title }}</span>\n </router-link>\n </div>\n\n <!-- Genres & Tags -->\n <div v-if=\"(track.genre && track.genre.length) || (track.tags && track.tags.length)\" class=\"tags-section mn-b-medium\">\n <h3 class=\"fw-medium mn-b-small\">Genres & Tags</h3>\n <div class=\"flex gap-thin flex-wrap\">\n <span \n v-for=\"genre in track.genre\" \n :key=\"genre\"\n class=\"tag bg-main fw-medium pd-thin radius-thin t-small cursor-pointer\"\n >\n {{ genre.name || genre }}\n </span>\n <span \n v-for=\"tag in track.tags\" \n :key=\"tag\"\n class=\"tag bg-light t-transp pd-thin-big radius-small t-small hover:bg-light cursor-pointer\"\n >\n #{{ tag.name || tag }}\n </span>\n </div>\n </div>\n\n <!-- Description -->\n <div v-if=\"track.description\" class=\"description-section bg-light pd-medium radius-medium mn-b-medium\">\n <h3 class=\"fw-medium mn-b-small\">About</h3>\n <p class=\"t-transp\">{{ track.description }}</p>\n </div>\n\n <!-- Lyrics -->\n <div v-if=\"track.lyrics\" class=\"lyrics-section bg-light pd-medium radius-medium\">\n <h3 class=\"fw-medium mn-b-small\">Lyrics</h3>\n <pre class=\"t-transp t-small\">{{ track.lyrics }}</pre>\n </div>\n </div>\n </div>\n\n <!-- Related Tracks -->\n <section v-if=\"track && relatedTracks && relatedTracks.length\" class=\"related-section mn-t-big\">\n <h2 class=\"h2 mn-b-medium\">Related Tracks</h2>\n <Feed\n :store=\"{\n read: () => new Promise(resolve => resolve(relatedTracks || [])),\n state: { isLoading: false }\n }\"\n :external=\"true\"\n :items=\"relatedTracks\"\n :states=\"{\n empty: {\n title: 'No related tracks',\n description: 'Check back later for recommendations',\n class: 'pd-medium bg-light radius-medium'\n }\n }\"\n class=\"d-grid cols-2 cols-m-3 cols-l-4 gap-regular\"\n >\n <template #default=\"{ items }\">\n <div class=\"bg-light radius-medium o-hidden\">\n <TrackListCard\n v-for=\"(relatedTrack, index) in items\"\n :key=\"relatedTrack._id\"\n :track=\"relatedTrack\"\n :index=\"index\"\n :showAlbum=\"true\"\n :showCover=\"true\"\n />\n </div>\n </template>\n </Feed>\n </section>\n\n <!-- Add to Playlist Modal -->\n <Popup \n v-if=\"showAddToPlaylistModal\" \n @close-popup=\"showAddToPlaylistModal = false\" \n class=\"bg-white pd-medium w-m-25r radius-medium\"\n >\n <h3 class=\"h3 mn-b-medium\">Add to Playlist</h3>\n <!-- <PlaylistSelector \n :trackId=\"track._id\" \n @added=\"showAddToPlaylistModal = false\"\n /> -->\n <p class=\"t-transp\">Playlist selector coming soon...</p>\n </Popup>\n </div>\n</template>\n\n<script setup>\nimport { ref, computed, onMounted, watch } from 'vue';\nimport { useRoute, useRouter } from 'vue-router';\nimport Button from '@martyrs/src/components/Button/Button.vue';\nimport Loader from '@martyrs/src/components/Loader/Loader.vue';\nimport Media from '@martyrs/src/components/Media/Media.vue';\nimport Dropdown from '@martyrs/src/components/Dropdown/Dropdown.vue';\nimport Popup from '@martyrs/src/components/Popup/Popup.vue';\nimport Feed from '@martyrs/src/components/Feed/Feed.vue';\n\n// Icons\nimport IconPlay from '@martyrs/src/modules/icons/navigation/IconPlay.vue';\nimport IconPause from '@martyrs/src/modules/icons/navigation/IconPause.vue';\nimport IconLike from '@martyrs/src/modules/icons/navigation/IconLike.vue';\nimport IconEllipsis from '@martyrs/src/modules/icons/navigation/IconEllipsis.vue';\nimport IconAdd from '@martyrs/src/modules/icons/navigation/IconAdd.vue';\nimport IconClock from '@martyrs/src/modules/icons/entities/IconTime.vue';\nimport IconCalendar from '@martyrs/src/modules/icons/entities/IconCalendar.vue';\nimport IconCheck from '@martyrs/src/modules/icons/navigation/IconCheckmark.vue';\nimport IconEye from '@martyrs/src/modules/icons/actions/IconShow.vue';\nimport IconVerified from '@martyrs/src/modules/icons/navigation/IconCheckmark.vue';\n\n// Components\nimport ActionButtons from '../blocks/ActionButtons.vue';\nimport TrackListCard from '../cards/TrackListCard.vue';\nimport ArtistCardSmall from '../cards/ArtistCardSmall.vue';\n// import PlaylistSelector from '../forms/PlaylistSelector.vue';\n\n// Store\nimport { state as tracksState, actions as tracksActions } from '../../store/tracks.js';\nimport { state as playerState, actions as playerActions } from '../../store/player.js';\nimport { state as authState } from '@martyrs/src/modules/auth/views/store/auth.js';\n\nconst isPlaying = computed(() => playerState.isPlaying);\n\nconst route = useRoute();\nconst router = useRouter();\n\n// Emits\nconst emits = defineEmits(['page-loading', 'page-loaded']);\n\n// State\nconst hasLoaded = ref(false);\nconst showAddToPlaylistModal = ref(false);\nconst isFavorite = ref(false);\nconst isFollowingArtist = ref(false);\n\n// Clear state\ntracksState.currentTrack = null;\ntracksState.relatedTracks = [];\n\n// Computed\nconst track = computed(() => tracksState.currentTrack);\nconst relatedTracks = computed(() => tracksState.relatedTracks || []);\n\nconst isOwner = computed(() => {\n return track.value?.owner?.target === authState.user?._id;\n});\n\nconst actionButtons = computed(() => {\n const buttons = [\n {\n type: 'button',\n class: 't-white bg-black',\n icon: isPlaying.value ? IconPause : IconPlay,\n iconFill: 'rgb(var(--white))',\n text: isPlaying.value ? 'Pause' : 'Play',\n action: playTrack\n },\n {\n type: 'button',\n class: 'bg-light',\n icon: IconAdd,\n text: 'Add to Queue',\n action: addToQueue\n },\n {\n type: 'button',\n class: 'bg-light',\n icon: IconLike,\n iconFill: isFavorite.value ? 'rgb(var(--main))' : 'rgb(var(--black))',\n text: isFavorite.value ? 'Liked' : 'Like',\n action: toggleFavorite\n },\n {\n type: 'dropdown',\n items: [\n { text: 'Add to Playlist', action: () => showAddToPlaylistModal.value = true },\n { text: 'Copy Link', action: copyLink }\n ]\n }\n ];\n\n if (isOwner.value) {\n const items = buttons[3].items;\n items.push({ separator: true });\n items.push({ text: 'Edit Track', action: editTrack });\n items.push({ text: 'Delete Track', action: deleteTrack, color: 'danger' });\n }\n\n return buttons;\n});\n\n// Format helpers\nconst formatDuration = (seconds) => {\n if (!seconds) return '0:00';\n const h = Math.floor(seconds / 3600);\n const m = Math.floor((seconds % 3600) / 60);\n const s = Math.floor(seconds % 60);\n \n if (h > 0) {\n return `${h}:${m.toString().padStart(2, '0')}:${s.toString().padStart(2, '0')}`;\n }\n return `${m}:${s.toString().padStart(2, '0')}`;\n};\n\nconst formatDate = (dateString) => {\n if (!dateString) return 'Unknown';\n return new Date(dateString).toLocaleDateString('en-US', {\n year: 'numeric',\n month: 'long',\n day: 'numeric'\n });\n};\n\nconst formatNumber = (num) => {\n if (!num) return '0';\n if (num >= 1000000) {\n return (num / 1000000).toFixed(1) + 'M';\n } else if (num >= 1000) {\n return (num / 1000).toFixed(1) + 'K';\n }\n return num.toString();\n};\n\n// Actions\nconst playTrack = () => {\n if (track.value) {\n playerActions.setQueue([track.value]);\n }\n};\n\nconst toggleFavorite = () => {\n isFavorite.value = !isFavorite.value;\n // TODO: Implement actual saving\n};\n\nconst toggleFollowArtist = () => {\n isFollowingArtist.value = !isFollowingArtist.value;\n // TODO: Implement actual following\n};\n\nconst addToQueue = () => {\n if (track.value) {\n playerActions.addToQueue(track.value);\n }\n};\n\nconst editTrack = () => {\n router.push({ name: 'track-edit', params: { url: track.value.url } });\n};\n\nconst deleteTrack = async () => {\n if (confirm('Are you sure you want to delete this track?')) {\n try {\n await tracksActions.deleteTrack(track.value._id);\n router.push({ name: 'music-library' });\n } catch (error) {\n console.error('Failed to delete track:', error);\n }\n }\n};\n\nconst copyLink = () => {\n navigator.clipboard.writeText(window.location.href);\n};\n\n// Data fetching\nconst fetchTrackData = async () => {\n try {\n await tracksActions.fetchTrackByUrl(route.params.url);\n await tracksActions.fetchRelatedTracks(route.params.url);\n } catch (error) {\n console.error('Error loading track:', error);\n }\n};\n\n// Lifecycle\nonMounted(async () => {\n emits('page-loading');\n \n await fetchTrackData();\n \n hasLoaded.value = true;\n emits('page-loaded');\n});\n</script>\n\n<style scoped>\n</style>"],"names":["playerState","tracksState","authState","IconPause","IconPlay","IconAdd","IconLike","playerActions","tracksActions"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8PA,UAAM,YAAY,SAAS,MAAMA,MAAY,SAAS;AAEtD,UAAM,QAAQ,SAAQ;AACtB,UAAM,SAAS,UAAS;AAGxB,UAAM,QAAQ;AAGd,UAAM,YAAY,IAAI,KAAK;AAC3B,UAAM,yBAAyB,IAAI,KAAK;AACxC,UAAM,aAAa,IAAI,KAAK;AAC5B,UAAM,oBAAoB,IAAI,KAAK;AAGnCC,YAAY,eAAe;AAC3BA,YAAY,gBAAgB,CAAA;AAG5B,UAAM,QAAQ,SAAS,MAAMA,QAAY,YAAY;AACrD,UAAM,gBAAgB,SAAS,MAAMA,QAAY,iBAAiB,CAAA,CAAE;AAEpE,UAAM,UAAU,SAAS,MAAM;AAC7B,aAAO,MAAM,OAAO,OAAO,WAAWC,QAAU,MAAM;AAAA,IACxD,CAAC;AAED,UAAM,gBAAgB,SAAS,MAAM;AACnC,YAAM,UAAU;AAAA,QACd;AAAA,UACE,MAAM;AAAA,UACN,OAAO;AAAA,UACP,MAAM,UAAU,QAAQC,cAAYC;AAAAA,UACpC,UAAU;AAAA,UACV,MAAM,UAAU,QAAQ,UAAU;AAAA,UAClC,QAAQ;AAAA,QACd;AAAA,QACI;AAAA,UACE,MAAM;AAAA,UACN,OAAO;AAAA,UACP,MAAMC;AAAAA,UACN,MAAM;AAAA,UACN,QAAQ;AAAA,QACd;AAAA,QACI;AAAA,UACE,MAAM;AAAA,UACN,OAAO;AAAA,UACP,MAAMC;AAAAA,UACN,UAAU,WAAW,QAAQ,qBAAqB;AAAA,UAClD,MAAM,WAAW,QAAQ,UAAU;AAAA,UACnC,QAAQ;AAAA,QACd;AAAA,QACI;AAAA,UACE,MAAM;AAAA,UACN,OAAO;AAAA,YACL,EAAE,MAAM,mBAAmB,QAAQ,MAAM,uBAAuB,QAAQ,KAAI;AAAA,YAC5E,EAAE,MAAM,aAAa,QAAQ,SAAQ;AAAA,UAC7C;AAAA,QACA;AAAA,MACA;AAEE,UAAI,QAAQ,OAAO;AACjB,cAAM,QAAQ,QAAQ,CAAC,EAAE;AACzB,cAAM,KAAK,EAAE,WAAW,KAAI,CAAE;AAC9B,cAAM,KAAK,EAAE,MAAM,cAAc,QAAQ,WAAW;AACpD,cAAM,KAAK,EAAE,MAAM,gBAAgB,QAAQ,aAAa,OAAO,UAAU;AAAA,MAC3E;AAEA,aAAO;AAAA,IACT,CAAC;AAGD,UAAM,iBAAiB,CAAC,YAAY;AAClC,UAAI,CAAC,QAAS,QAAO;AACrB,YAAM,IAAI,KAAK,MAAM,UAAU,IAAI;AACnC,YAAM,IAAI,KAAK,MAAO,UAAU,OAAQ,EAAE;AAC1C,YAAM,IAAI,KAAK,MAAM,UAAU,EAAE;AAEjC,UAAI,IAAI,GAAG;AACT,eAAO,GAAG,CAAC,IAAI,EAAE,SAAQ,EAAG,SAAS,GAAG,GAAG,CAAC,IAAI,EAAE,SAAQ,EAAG,SAAS,GAAG,GAAG,CAAC;AAAA,MAC/E;AACA,aAAO,GAAG,CAAC,IAAI,EAAE,SAAQ,EAAG,SAAS,GAAG,GAAG,CAAC;AAAA,IAC9C;AAEA,UAAM,aAAa,CAAC,eAAe;AACjC,UAAI,CAAC,WAAY,QAAO;AACxB,aAAO,IAAI,KAAK,UAAU,EAAE,mBAAmB,SAAS;AAAA,QACtD,MAAM;AAAA,QACN,OAAO;AAAA,QACP,KAAK;AAAA,MACT,CAAG;AAAA,IACH;AAEA,UAAM,eAAe,CAAC,QAAQ;AAC5B,UAAI,CAAC,IAAK,QAAO;AACjB,UAAI,OAAO,KAAS;AAClB,gBAAQ,MAAM,KAAS,QAAQ,CAAC,IAAI;AAAA,MACtC,WAAW,OAAO,KAAM;AACtB,gBAAQ,MAAM,KAAM,QAAQ,CAAC,IAAI;AAAA,MACnC;AACA,aAAO,IAAI,SAAQ;AAAA,IACrB;AAGA,UAAM,YAAY,MAAM;AACtB,UAAI,MAAM,OAAO;AACfC,gBAAc,SAAS,CAAC,MAAM,KAAK,CAAC;AAAA,MACtC;AAAA,IACF;AAEA,UAAM,iBAAiB,MAAM;AAC3B,iBAAW,QAAQ,CAAC,WAAW;AAAA,IAEjC;AAEA,UAAM,qBAAqB,MAAM;AAC/B,wBAAkB,QAAQ,CAAC,kBAAkB;AAAA,IAE/C;AAEA,UAAM,aAAa,MAAM;AACvB,UAAI,MAAM,OAAO;AACfA,gBAAc,WAAW,MAAM,KAAK;AAAA,MACtC;AAAA,IACF;AAEA,UAAM,YAAY,MAAM;AACtB,aAAO,KAAK,EAAE,MAAM,cAAc,QAAQ,EAAE,KAAK,MAAM,MAAM,IAAG,EAAE,CAAE;AAAA,IACtE;AAEA,UAAM,cAAc,YAAY;AAC9B,UAAI,QAAQ,6CAA6C,GAAG;AAC1D,YAAI;AACF,gBAAMC,UAAc,YAAY,MAAM,MAAM,GAAG;AAC/C,iBAAO,KAAK,EAAE,MAAM,gBAAe,CAAE;AAAA,QACvC,SAAS,OAAO;AACd,kBAAQ,MAAM,2BAA2B,KAAK;AAAA,QAChD;AAAA,MACF;AAAA,IACF;AAEA,UAAM,WAAW,MAAM;AACrB,gBAAU,UAAU,UAAU,OAAO,SAAS,IAAI;AAAA,IACpD;AAGA,UAAM,iBAAiB,YAAY;AACjC,UAAI;AACF,cAAMA,UAAc,gBAAgB,MAAM,OAAO,GAAG;AACpD,cAAMA,UAAc,mBAAmB,MAAM,OAAO,GAAG;AAAA,MACzD,SAAS,OAAO;AACd,gBAAQ,MAAM,wBAAwB,KAAK;AAAA,MAC7C;AAAA,IACF;AAGA,cAAU,YAAY;AACpB,YAAM,cAAc;AAEpB,YAAM,eAAc;AAEpB,gBAAU,QAAQ;AAClB,YAAM,aAAa;AAAA,IACrB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,7 +1,7 @@
1
1
  import { createElementBlock, openBlock, createVNode } from "vue";
2
2
  import { useRouter } from "vue-router";
3
3
  /* empty css */
4
- /* empty css */
4
+ /* empty css */
5
5
  import _sfc_main$1 from "../forms/TrackForm.vue.js";
6
6
  const _hoisted_1 = { class: "track-create-page" };
7
7
  const _sfc_main = {
@@ -1,6 +1,6 @@
1
1
  import { ref, onMounted, createElementBlock, openBlock, createElementVNode, createCommentVNode, normalizeClass, unref, normalizeStyle, Fragment, renderList, createBlock, withCtx, createTextVNode, toDisplayString, createVNode } from "vue";
2
2
  import _imports_0 from "./tonar.png.js";
3
- import { r as fu } from "../../../../../dist/main-BFvlam0J.js";
3
+ import { r as cu } from "../../../../../dist/main-BfEQkhXS.js";
4
4
  import _sfc_main$1 from "../../../icons/navigation/IconLike.vue.js";
5
5
  import _sfc_main$2 from "../../../icons/entities/IconEvents.vue.js";
6
6
  import _sfc_main$3 from "../cards/TrackListCard.vue.js";
@@ -13,7 +13,7 @@ import _export_sfc from "../../../../../../_virtual/_plugin-vue_export-helper.js
13
13
  const _hoisted_1 = { class: "o-y-scroll o-x-hidden bg-light pd-small pos-relative z-index-2 t-center t-black w-100 h-100" };
14
14
  const _hoisted_2 = { class: "pos-relative gap-small flex-nowrap flex-column flex-center flex z-index-1" };
15
15
  const _hoisted_3 = {
16
- class: "mn-b-thin h-max-30r br-2px br-solid br-black-transp-10 radius-extra w-100 pos-relative aspect-1x1 flex-center flex",
16
+ class: "mn-b-thin h-max-30r br-2px br-black-transp-10 radius-extra w-100 pos-relative aspect-1x1 flex-center flex",
17
17
  style: { "background": "linear-gradient(180deg, #BDBDBD 0%, #D9D9D9 79.69%, #A5A5A5 100%)", "box-shadow": "0 2px 0px 2px #aaaaaa" }
18
18
  };
19
19
  const _hoisted_4 = { class: "pos-relative" };
@@ -27,7 +27,7 @@ const _hoisted_8 = {
27
27
  key: 0,
28
28
  class: "flex-nowrap flex gap-thin flex-v-center"
29
29
  };
30
- const _hoisted_9 = { class: "t-semi h4" };
30
+ const _hoisted_9 = { class: "fw-semi h4" };
31
31
  const _hoisted_10 = { class: "gap-thin flex-center flex-nowrap flex pd-small bg-white radius-medium o-hidden w-100 pos-relative" };
32
32
  const _hoisted_11 = { class: "pd-thin bg-white radius-medium w-100 pos-relative" };
33
33
  const _hoisted_12 = {
@@ -69,7 +69,7 @@ const _sfc_main = {
69
69
  ], 2),
70
70
  createElementVNode("div", {
71
71
  ref: "disk",
72
- class: normalizeClass([["radius-100 rotate-gradient flex-center flex"], "pos-relative z-index-1"]),
72
+ class: normalizeClass([["radius-extra rotate-gradient flex-center flex"], "pos-relative z-index-1"]),
73
73
  style: normalizeStyle({
74
74
  transform: `rotate(${unref(state).rotationAngle}deg)`,
75
75
  width: "24rem",
@@ -99,14 +99,14 @@ const _sfc_main = {
99
99
  backgroundPosition: "center center",
100
100
  backgroundSize: "106%"
101
101
  }),
102
- class: "radius-extra br-solid br-black-transp-10 br-1px"
102
+ class: "radius-extra br-black-transp-10 br-1px"
103
103
  }, null, 4)
104
104
  ], 4)
105
105
  ])
106
106
  ]),
107
107
  createElementVNode("div", _hoisted_5, [
108
108
  _cache[1] || (_cache[1] = createElementVNode("p", { class: "mn-l-auto mn-b-thin mn-r-auto radius-big pd-thin bg-second w-min" }, "NOW PLAYING", -1)),
109
- unref(state).currentTrack ? (openBlock(), createBlock(unref(fu), {
109
+ unref(state).currentTrack ? (openBlock(), createBlock(unref(cu), {
110
110
  key: 0,
111
111
  class: "h2 uppercase mn-b-thin",
112
112
  gradient: true,
@@ -132,7 +132,7 @@ const _sfc_main = {
132
132
  createElementVNode("p", _hoisted_9, toDisplayString(isLiked.value ? "Liked" : "Like"), 1)
133
133
  ])) : createCommentVNode("", true),
134
134
  createElementVNode("p", {
135
- class: normalizeClass(["t-semi h4", { "mn-l-auto": unref(state$1).user }])
135
+ class: normalizeClass(["fw-semi h4", { "mn-l-auto": unref(state$1).user }])
136
136
  }, toDisplayString(likesCount.value) + " " + toDisplayString(likesCount.value === 1 ? "person" : "people") + " liked", 3)
137
137
  ]),
138
138
  createElementVNode("div", _hoisted_10, [
@@ -164,7 +164,7 @@ const _sfc_main = {
164
164
  };
165
165
  }
166
166
  };
167
- const FullscreenPlayer = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-76598c55"]]);
167
+ const FullscreenPlayer = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-6e78a1a6"]]);
168
168
  export {
169
169
  FullscreenPlayer as default
170
170
  };
@@ -1 +1 @@
1
- {"version":3,"file":"FullscreenPlayer.vue.js","sources":["../../../../../../../src/modules/music/components/player/FullscreenPlayer.vue"],"sourcesContent":["<template>\n <section\n class=\"o-y-scroll o-x-hidden bg-light pd-small pos-relative z-index-2 t-center t-black w-100 h-100\"\n >\n\n <div\n class=\"pos-relative gap-small flex-nowrap flex-column flex-center flex z-index-1\"\n >\n <!-- COVER -->\n <div class=\"mn-b-thin h-max-30r br-2px br-solid br-black-transp-10 radius-extra w-100 pos-relative aspect-1x1 flex-center flex \"\n style=\"\n background: linear-gradient(180deg, #BDBDBD 0%, #D9D9D9 79.69%, #A5A5A5 100%);\n box-shadow: 0 2px 0px 2px #aaaaaa;\n \"\n >\n\n <div class=\"pos-relative\">\n <div class=\"radioTonarWrapper\" :class=\"{'activeTonar': playerState.isPlaying}\">\n <img\n class=\"radioTonar z-index-2\"\n src=\"./tonar.png\"\n :class=\"{'playingTonar': playerState.isPlaying}\"\n >\n </div>\n <div\n ref=\"disk\"\n :class=\"['radius-100 rotate-gradient flex-center flex']\"\n :style=\"{\n transform: `rotate(${playerState.rotationAngle}deg)`,\n width: '24rem',\n height: '24rem',\n border: '3px solid var(--black)',\n 'box-shadow': 'rgba(0,0,0,0.5) 0 0 64px 0px'\n }\"\n class=\"pos-relative z-index-1\"\n >\n <div\n v-for=\"i in 11\"\n :key=\"i\"\n :style=\"{\n border: '1px solid rgba(0,0,0,0.25)',\n position: 'absolute',\n width: 23 - i * 1 + 'rem',\n height: 23 - i * 1 + 'rem',\n 'border-radius': '100%',\n 'box-shadow': 'rgb(47 47 47 / 18%) 0px 0px 5px 10px'\n }\"\n >\n </div>\n\n <div\n :style=\"{\n width: '10rem',\n height: '10rem',\n backgroundImage: `url('${playerState.currentTrack?.coverUrl || playerState.currentTrack?.album?.coverArt}')`,\n backgroundPosition: 'center center',\n backgroundSize: '106%',\n }\"\n class=\"radius-extra br-solid br-black-transp-10 br-1px\"\n >\n </div>\n </div>\n\n </div>\n\n </div>\n\n <!-- NOW PLAYING -->\n <div\n class=\"pd-thin bg-white radius-medium o-hidden w-100 pos-relative\"\n >\n <p class=\"mn-l-auto mn-b-thin mn-r-auto radius-big pd-thin bg-second w-min\">NOW&nbsp;PLAYING</p>\n <!-- SONG -->\n <Marquee\n v-if=\"playerState.currentTrack\"\n class=\"h2 uppercase mn-b-thin\"\n :gradient=\"true\"\n :gradientColor=\"'rgb(var(--white))'\"\n :clone=\"true\"\n gradient-length=\"10%\"\n >\n {{ playerState.currentTrack.title + '\\xa0\\xa0'}}\n </Marquee>\n\n <!-- AUTHOR -->\n <p\n v-if=\"playerState.currentTrack\"\n class=\"h3 uppercase t-transp\"\n >\n {{ playerState.currentTrack.artist?.name || 'Unknown Artist' }}\n </p>\n </div>\n\n <!-- LIKES -->\n <div\n class=\"pd-thin bg-white radius-medium w-100 pos-relative flex flex-v-center gap-thin\"\n >\n <div v-if=\"authState.user\" class=\"flex-nowrap flex gap-thin flex-v-center\">\n <IconLike\n @click=\"toggleLike()\"\n :isLiked=\"isLiked\"\n fill=\"rgb(var(--black))\"\n class=\"i-medium cursor-pointer\"\n :class=\"{'no-events': isLoading}\"\n />\n <p class=\"t-semi h4\">{{ isLiked ? 'Liked' : 'Like' }}</p>\n </div>\n\n <p class=\"t-semi h4\" :class=\"{'mn-l-auto': authState.user}\">{{ likesCount }} {{ likesCount === 1 ? 'person' : 'people' }} liked</p>\n </div>\n\n <!-- CONTROLS -->\n <div\n class=\"gap-thin flex-center flex-nowrap flex pd-small bg-white radius-medium o-hidden w-100 pos-relative\"\n >\n <PlayerControls />\n </div>\n\n <!-- VOLUME -->\n <div class=\"pd-thin bg-white radius-medium w-100 pos-relative\">\n <VolumeControl />\n </div>\n\n\n <!-- QUEUE LIST -->\n <div\n v-if=\"playerState.queue.length > 0\"\n class=\"mn-b-small bg-white radius-medium o-hidden w-100 pos-relative\"\n >\n\n <div class=\"pd-regular w-100 gap-thin flex-nowrap flex flex-v-center\">\n <IconEvents :fill=\"'rgb(var(--black))'\" class=\"t-transp i-medium\"/>\n <p class=\"w-100 t-transp t-left\">QUEUE</p>\n </div>\n\n <TrackListCard\n v-for=\"(track, index) in playerState.queue.slice(0, 10)\"\n :key=\"track._id || index\"\n :track=\"track\"\n :index=\"index\"\n :showCover=\"true\"\n :showAlbum=\"false\"\n />\n\n </div>\n\n </div>\n\n </section>\n</template>\n\n<script setup>\nimport { ref, computed, onMounted } from 'vue';\n\nimport { Text, Tooltip, Marquee } from '@ozdao/martyrs';\nimport IconLike from '@martyrs/src/modules/icons/navigation/IconLike.vue';\nimport IconEvents from '@martyrs/src/modules/icons/entities/IconEvents.vue';\n\nimport TrackListCard from '../cards/TrackListCard.vue';\nimport VolumeControl from './VolumeControl.vue';\nimport PlayerControls from './PlayerControls.vue';\nimport { state as playerState, actions as playerActions } from '../../store/player.js';\nimport { state as authState } from '@martyrs/src/modules/auth/views/store/auth.js';\n\nconst isLiked = ref(false);\nconst isLoading = ref(false);\nconst likesCount = ref(0);\n\nasync function toggleLike() {\n // TODO: Implement likes integration with community module\n isLiked.value = !isLiked.value;\n likesCount.value += isLiked.value ? 1 : -1;\n}\n\nonMounted(() => {\n if ('mediaSession' in navigator) {\n navigator.mediaSession.setActionHandler('pause', () => playerActions.togglePlay());\n navigator.mediaSession.setActionHandler('play', () => playerActions.togglePlay());\n navigator.mediaSession.setActionHandler('stop', () => playerActions.togglePlay());\n navigator.mediaSession.setActionHandler('previoustrack', () => playerActions.playPrevious());\n navigator.mediaSession.setActionHandler('nexttrack', () => playerActions.playNext());\n }\n});\n\n</script>\n\n\n<style lang=\"scss\" scoped>\n.radioTonarWrapper {\n width: 15rem;\n position: absolute;\n z-index: 30;\n transform: rotate(253deg);\n transform-origin: 75% center;\n top: 0;\n right: -2.5rem;\n transition: transform 1s ease-in-out;\n}\n\n.radioTonar {\n width: 15rem;\n transform-origin: 75% center;\n}\n\n.activeTonar {\n transform: rotate(285deg);\n}\n\n.playingTonar {\n animation: playingTonar 2s ease-in-out infinite;\n}\n\n@keyframes playingTonar {\n 0%, 100% {\n transform: rotate(0deg);\n }\n 25% {\n transform: rotate(2deg);\n }\n 50% {\n transform: rotate(-2deg);\n }\n}\n\n@property --a {\n syntax: '<angle>';\n inherits: false;\n initial-value: 0deg;\n}\n\n@property --b {\n syntax: '<angle>';\n inherits: false;\n initial-value: 0deg;\n}\n\n.rotate-gradient {\n --a: 0deg;\n --b: 0deg;\n transition: --a 0.5s, --b 0.5s;\n\n background:\n conic-gradient(from var(--a), rgba(255, 255, 255, 0.1), rgba(0, 0, 0, 0.33), rgba(255, 255, 255, 0.1)),\n linear-gradient(180deg, rgba(0, 0, 0, 1) 0%, rgba(255, 255, 255, 0.1) 50%, rgba(0, 0, 0, 1) 100%),\n linear-gradient(180deg, #000 0%, rgba(10, 10, 10, 0.00) 100%),\n #000;\n}\n</style>\n"],"names":["playerActions"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoKA,UAAM,UAAU,IAAI,KAAK;AACzB,UAAM,YAAY,IAAI,KAAK;AAC3B,UAAM,aAAa,IAAI,CAAC;AAExB,mBAAe,aAAa;AAE1B,cAAQ,QAAQ,CAAC,QAAQ;AACzB,iBAAW,SAAS,QAAQ,QAAQ,IAAI;AAAA,IAC1C;AAEA,cAAU,MAAM;AACd,UAAI,kBAAkB,WAAW;AAC/B,kBAAU,aAAa,iBAAiB,SAAS,MAAMA,QAAc,YAAY;AACjF,kBAAU,aAAa,iBAAiB,QAAQ,MAAMA,QAAc,YAAY;AAChF,kBAAU,aAAa,iBAAiB,QAAQ,MAAMA,QAAc,YAAY;AAChF,kBAAU,aAAa,iBAAiB,iBAAiB,MAAMA,QAAc,cAAc;AAC3F,kBAAU,aAAa,iBAAiB,aAAa,MAAMA,QAAc,UAAU;AAAA,MACrF;AAAA,IACF,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"FullscreenPlayer.vue.js","sources":["../../../../../../../src/modules/music/components/player/FullscreenPlayer.vue"],"sourcesContent":["<template>\n <section\n class=\"o-y-scroll o-x-hidden bg-light pd-small pos-relative z-index-2 t-center t-black w-100 h-100\"\n >\n\n <div\n class=\"pos-relative gap-small flex-nowrap flex-column flex-center flex z-index-1\"\n >\n <!-- COVER -->\n <div class=\"mn-b-thin h-max-30r br-2px br-black-transp-10 radius-extra w-100 pos-relative aspect-1x1 flex-center flex \"\n style=\"\n background: linear-gradient(180deg, #BDBDBD 0%, #D9D9D9 79.69%, #A5A5A5 100%);\n box-shadow: 0 2px 0px 2px #aaaaaa;\n \"\n >\n\n <div class=\"pos-relative\">\n <div class=\"radioTonarWrapper\" :class=\"{'activeTonar': playerState.isPlaying}\">\n <img\n class=\"radioTonar z-index-2\"\n src=\"./tonar.png\"\n :class=\"{'playingTonar': playerState.isPlaying}\"\n >\n </div>\n <div\n ref=\"disk\"\n :class=\"['radius-extra rotate-gradient flex-center flex']\"\n :style=\"{\n transform: `rotate(${playerState.rotationAngle}deg)`,\n width: '24rem',\n height: '24rem',\n border: '3px solid var(--black)',\n 'box-shadow': 'rgba(0,0,0,0.5) 0 0 64px 0px'\n }\"\n class=\"pos-relative z-index-1\"\n >\n <div\n v-for=\"i in 11\"\n :key=\"i\"\n :style=\"{\n border: '1px solid rgba(0,0,0,0.25)',\n position: 'absolute',\n width: 23 - i * 1 + 'rem',\n height: 23 - i * 1 + 'rem',\n 'border-radius': '100%',\n 'box-shadow': 'rgb(47 47 47 / 18%) 0px 0px 5px 10px'\n }\"\n >\n </div>\n\n <div\n :style=\"{\n width: '10rem',\n height: '10rem',\n backgroundImage: `url('${playerState.currentTrack?.coverUrl || playerState.currentTrack?.album?.coverArt}')`,\n backgroundPosition: 'center center',\n backgroundSize: '106%',\n }\"\n class=\"radius-extra br-black-transp-10 br-1px\"\n >\n </div>\n </div>\n\n </div>\n\n </div>\n\n <!-- NOW PLAYING -->\n <div\n class=\"pd-thin bg-white radius-medium o-hidden w-100 pos-relative\"\n >\n <p class=\"mn-l-auto mn-b-thin mn-r-auto radius-big pd-thin bg-second w-min\">NOW&nbsp;PLAYING</p>\n <!-- SONG -->\n <Marquee\n v-if=\"playerState.currentTrack\"\n class=\"h2 uppercase mn-b-thin\"\n :gradient=\"true\"\n :gradientColor=\"'rgb(var(--white))'\"\n :clone=\"true\"\n gradient-length=\"10%\"\n >\n {{ playerState.currentTrack.title + '\\xa0\\xa0'}}\n </Marquee>\n\n <!-- AUTHOR -->\n <p\n v-if=\"playerState.currentTrack\"\n class=\"h3 uppercase t-transp\"\n >\n {{ playerState.currentTrack.artist?.name || 'Unknown Artist' }}\n </p>\n </div>\n\n <!-- LIKES -->\n <div\n class=\"pd-thin bg-white radius-medium w-100 pos-relative flex flex-v-center gap-thin\"\n >\n <div v-if=\"authState.user\" class=\"flex-nowrap flex gap-thin flex-v-center\">\n <IconLike\n @click=\"toggleLike()\"\n :isLiked=\"isLiked\"\n fill=\"rgb(var(--black))\"\n class=\"i-medium cursor-pointer\"\n :class=\"{'no-events': isLoading}\"\n />\n <p class=\"fw-semi h4\">{{ isLiked ? 'Liked' : 'Like' }}</p>\n </div>\n\n <p class=\"fw-semi h4\" :class=\"{'mn-l-auto': authState.user}\">{{ likesCount }} {{ likesCount === 1 ? 'person' : 'people' }} liked</p>\n </div>\n\n <!-- CONTROLS -->\n <div\n class=\"gap-thin flex-center flex-nowrap flex pd-small bg-white radius-medium o-hidden w-100 pos-relative\"\n >\n <PlayerControls />\n </div>\n\n <!-- VOLUME -->\n <div class=\"pd-thin bg-white radius-medium w-100 pos-relative\">\n <VolumeControl />\n </div>\n\n\n <!-- QUEUE LIST -->\n <div\n v-if=\"playerState.queue.length > 0\"\n class=\"mn-b-small bg-white radius-medium o-hidden w-100 pos-relative\"\n >\n\n <div class=\"pd-regular w-100 gap-thin flex-nowrap flex flex-v-center\">\n <IconEvents :fill=\"'rgb(var(--black))'\" class=\"t-transp i-medium\"/>\n <p class=\"w-100 t-transp t-left\">QUEUE</p>\n </div>\n\n <TrackListCard\n v-for=\"(track, index) in playerState.queue.slice(0, 10)\"\n :key=\"track._id || index\"\n :track=\"track\"\n :index=\"index\"\n :showCover=\"true\"\n :showAlbum=\"false\"\n />\n\n </div>\n\n </div>\n\n </section>\n</template>\n\n<script setup>\nimport { ref, computed, onMounted } from 'vue';\n\nimport { Text, Tooltip, Marquee } from '@ozdao/martyrs';\nimport IconLike from '@martyrs/src/modules/icons/navigation/IconLike.vue';\nimport IconEvents from '@martyrs/src/modules/icons/entities/IconEvents.vue';\n\nimport TrackListCard from '../cards/TrackListCard.vue';\nimport VolumeControl from './VolumeControl.vue';\nimport PlayerControls from './PlayerControls.vue';\nimport { state as playerState, actions as playerActions } from '../../store/player.js';\nimport { state as authState } from '@martyrs/src/modules/auth/views/store/auth.js';\n\nconst isLiked = ref(false);\nconst isLoading = ref(false);\nconst likesCount = ref(0);\n\nasync function toggleLike() {\n // TODO: Implement likes integration with community module\n isLiked.value = !isLiked.value;\n likesCount.value += isLiked.value ? 1 : -1;\n}\n\nonMounted(() => {\n if ('mediaSession' in navigator) {\n navigator.mediaSession.setActionHandler('pause', () => playerActions.togglePlay());\n navigator.mediaSession.setActionHandler('play', () => playerActions.togglePlay());\n navigator.mediaSession.setActionHandler('stop', () => playerActions.togglePlay());\n navigator.mediaSession.setActionHandler('previoustrack', () => playerActions.playPrevious());\n navigator.mediaSession.setActionHandler('nexttrack', () => playerActions.playNext());\n }\n});\n\n</script>\n\n\n<style lang=\"scss\" scoped>\n.radioTonarWrapper {\n width: 15rem;\n position: absolute;\n z-index: 30;\n transform: rotate(253deg);\n transform-origin: 75% center;\n top: 0;\n right: -2.5rem;\n transition: transform 1s ease-in-out;\n}\n\n.radioTonar {\n width: 15rem;\n transform-origin: 75% center;\n}\n\n.activeTonar {\n transform: rotate(285deg);\n}\n\n.playingTonar {\n animation: playingTonar 2s ease-in-out infinite;\n}\n\n@keyframes playingTonar {\n 0%, 100% {\n transform: rotate(0deg);\n }\n 25% {\n transform: rotate(2deg);\n }\n 50% {\n transform: rotate(-2deg);\n }\n}\n\n@property --a {\n syntax: '<angle>';\n inherits: false;\n initial-value: 0deg;\n}\n\n@property --b {\n syntax: '<angle>';\n inherits: false;\n initial-value: 0deg;\n}\n\n.rotate-gradient {\n --a: 0deg;\n --b: 0deg;\n transition: --a 0.5s, --b 0.5s;\n\n background:\n conic-gradient(from var(--a), rgba(255, 255, 255, 0.1), rgba(0, 0, 0, 0.33), rgba(255, 255, 255, 0.1)),\n linear-gradient(180deg, rgba(0, 0, 0, 1) 0%, rgba(255, 255, 255, 0.1) 50%, rgba(0, 0, 0, 1) 100%),\n linear-gradient(180deg, #000 0%, rgba(10, 10, 10, 0.00) 100%),\n #000;\n}\n</style>\n"],"names":["playerActions"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoKA,UAAM,UAAU,IAAI,KAAK;AACzB,UAAM,YAAY,IAAI,KAAK;AAC3B,UAAM,aAAa,IAAI,CAAC;AAExB,mBAAe,aAAa;AAE1B,cAAQ,QAAQ,CAAC,QAAQ;AACzB,iBAAW,SAAS,QAAQ,QAAQ,IAAI;AAAA,IAC1C;AAEA,cAAU,MAAM;AACd,UAAI,kBAAkB,WAAW;AAC/B,kBAAU,aAAa,iBAAiB,SAAS,MAAMA,QAAc,YAAY;AACjF,kBAAU,aAAa,iBAAiB,QAAQ,MAAMA,QAAc,YAAY;AAChF,kBAAU,aAAa,iBAAiB,QAAQ,MAAMA,QAAc,YAAY;AAChF,kBAAU,aAAa,iBAAiB,iBAAiB,MAAMA,QAAc,cAAc;AAC3F,kBAAU,aAAa,iBAAiB,aAAa,MAAMA,QAAc,UAAU;AAAA,MACrF;AAAA,IACF,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,6 +1,6 @@
1
1
  import { ref, computed, createElementBlock, openBlock, createElementVNode, createVNode, createBlock, createCommentVNode, toDisplayString, unref, normalizeClass, withModifiers, withCtx } 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 TrackProgress from "./TrackProgress.vue.js";
5
5
  import VolumeControl from "./VolumeControl.vue.js";
6
6
  import PlayerControls from "./PlayerControls.vue.js";
@@ -1,5 +1,5 @@
1
1
  import { createElementBlock, openBlock, createVNode, normalizeClass, unref, withCtx, createElementVNode } 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 IconPrevious from "../../../icons/navigation/IconChevronLeft.vue.js";
4
4
  import IconNext from "../../../icons/navigation/IconChevronRight.vue.js";
5
5
  import _sfc_main$2 from "../../../icons/navigation/IconShuffle.vue.js";
@@ -1,5 +1,5 @@
1
1
  import { ref, computed, createElementBlock, openBlock, createVNode, createElementVNode, unref, withCtx, createBlock, normalizeStyle } 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 _sfc_main$2 from "../../../icons/navigation/IconMute.vue.js";
4
4
  import _sfc_main$3 from "../../../icons/navigation/IconUnMute.vue.js";
5
5
  import { state, actions } from "../../store/player.js";
@@ -7,10 +7,10 @@ import * as search from "./store/search.js";
7
7
  import * as tracks from "./store/tracks.js";
8
8
  import addRoutes from "../core/views/router/addRoutes.js";
9
9
  import { getRoutes } from "./music.router.js";
10
- import _sfc_main$b from "./components/layouts/MusicBottomPlayer.vue.js";
10
+ import _sfc_main$c from "./components/layouts/MusicBottomPlayer.vue.js";
11
11
  import _sfc_main$9 from "./components/pages/Album.vue.js";
12
12
  import _sfc_main$a from "./components/pages/Artist.vue.js";
13
- import MusicHome from "./components/pages/MusicHome.vue.js";
13
+ import _sfc_main$b from "./components/pages/MusicHome.vue.js";
14
14
  import _sfc_main$6 from "./components/pages/MusicLibrary.vue.js";
15
15
  import _sfc_main$5 from "./components/pages/TrackCreate.vue.js";
16
16
  import _sfc_main$8 from "./components/pages/Playlist.vue.js";
@@ -74,9 +74,9 @@ const ModuleMusic = {
74
74
  },
75
75
  components: {
76
76
  // Layouts
77
- MusicBottomPlayer: _sfc_main$b,
77
+ MusicBottomPlayer: _sfc_main$c,
78
78
  // Pages
79
- MusicHome,
79
+ MusicHome: _sfc_main$b,
80
80
  SearchResults,
81
81
  Artist: _sfc_main$a,
82
82
  Album: _sfc_main$9,
@@ -109,8 +109,8 @@ export {
109
109
  _sfc_main$a as Artist,
110
110
  ArtistCard,
111
111
  _sfc_main$3 as ArtistForm,
112
- _sfc_main$b as MusicBottomPlayer,
113
- MusicHome,
112
+ _sfc_main$c as MusicBottomPlayer,
113
+ _sfc_main$b as MusicHome,
114
114
  _sfc_main$6 as MusicLibrary,
115
115
  MusicPlayer,
116
116
  _sfc_main$8 as Playlist,
@@ -1 +1 @@
1
- {"version":3,"file":"music.client.js","sources":["../../../../../src/modules/music/music.client.js"],"sourcesContent":["// Store modules\nimport * as storeAlbums from './store/albums.js';\nimport * as storeArtists from './store/artists.js';\nimport * as storeGenres from './store/genres.js';\nimport * as storePlayer from './store/player.js';\nimport * as storePlaylists from './store/playlists.js';\nimport * as storeSearch from './store/search.js';\nimport * as storeTracks from './store/tracks.js';\n\n// Router\nimport addRoutes from '@martyrs/src/modules/core/views/router/addRoutes.js';\nimport { getRoutes } from './music.router.js';\n\n// Layouts\nimport MusicBottomPlayer from './components/layouts/MusicBottomPlayer.vue';\n\n// Pages\nimport Album from './components/pages/Album.vue';\nimport Artist from './components/pages/Artist.vue';\nimport MusicHome from './components/pages/MusicHome.vue';\nimport MusicLibrary from './components/pages/MusicLibrary.vue';\nimport TrackCreate from './components/pages/TrackCreate.vue';\nimport Playlist from './components/pages/Playlist.vue';\nimport SearchResults from './components/pages/SearchResults.vue';\nimport Track from './components/pages/Track.vue';\n\n// Components - Player\nimport MusicPlayer from './components/player/MusicPlayer.vue';\nimport TrackProgress from './components/player/TrackProgress.vue';\nimport VolumeControl from './components/player/VolumeControl.vue';\n\n// Components - Cards\nimport AlbumCard from './components/cards/AlbumCard.vue';\nimport ArtistCard from './components/cards/ArtistCard.vue';\nimport PlaylistCard from './components/cards/PlaylistCard.vue';\nimport TrackListCard from './components/cards/TrackListCard.vue';\n\n\n// Components - Forms\nimport ArtistForm from './components/forms/ArtistForm.vue';\nimport AlbumForm from './components/forms/AlbumForm.vue';\nimport PlaylistForm from './components/forms/PlaylistForm.vue';\nimport SearchForm from './components/forms/SearchForm.vue';\nimport TrackForm from './components/forms/TrackForm.vue';\n\n// WebSocket integration for streaming\nimport wsManager from '@martyrs/src/modules/core/views/classes/ws.manager.js';\n\n/**\n * Initialize Music module on client-side\n * @param {Object} app - Vue app instance\n * @param {Object} store - Global store instance\n * @param {Object} router - Vue router instance\n * @param {Object} config - Configuration options\n * @param {Object} options - Additional options\n */\nfunction initializeMusic(app, store, router, config, options = {}) {\n const routes = getRoutes(options);\n routes.forEach(({ parentName, config }) => {\n addRoutes(router, { ...config, parentName });\n });\n\n // Register store modules\n store.addStore('tracks', storeTracks);\n store.addStore('playlists', storePlaylists);\n store.addStore('albums', storeAlbums);\n store.addStore('artists', storeArtists);\n store.addStore('genres', storeGenres);\n store.addStore('player', storePlayer);\n store.addStore('search', storeSearch);\n\n // Set up WebSocket subscription for music streaming\n if (options.enableStreaming !== false && app.config.globalProperties.WSS_URL) {\n wsManager.initialize({\n wsUrl: process.env.WSS_URL,\n maxReconnectAttempts: 10,\n reconnectDelay: 2000,\n });\n\n // Subscribe to music streaming module when authenticated\n if (options.userId) {\n wsManager\n .connect(options.userId)\n .then(() => {\n wsManager.subscribeModule('music-streaming');\n })\n .catch(err => {\n console.error('Failed to connect to WebSocket for music streaming:', err);\n });\n }\n }\n\n // Register global components if needed\n app.component('MusicPlayer', MusicPlayer);\n}\n\n// Module export\nconst ModuleMusic = {\n initialize: initializeMusic,\n views: {\n store: {\n storeTracks,\n storePlaylists,\n storeAlbums,\n storeArtists,\n storeGenres,\n storePlayer,\n storeSearch,\n },\n router: {\n getRoutes,\n },\n components: {\n // Layouts\n MusicBottomPlayer,\n // Pages\n MusicHome,\n SearchResults,\n Artist,\n Album,\n Playlist,\n Track,\n MusicLibrary,\n TrackCreate,\n // Player Components\n MusicPlayer,\n TrackProgress,\n VolumeControl,\n // Cards\n TrackListCard,\n AlbumCard,\n PlaylistCard,\n ArtistCard,\n // Forms\n ArtistForm,\n AlbumForm,\n PlaylistForm,\n SearchForm,\n TrackForm,\n },\n },\n};\n\n// Named exports for direct component imports\nexport {\n AlbumCard,\n Album,\n ArtistCard,\n Artist,\n // Pages\n MusicHome,\n // Layout\n MusicBottomPlayer,\n MusicLibrary,\n // Player Components\n MusicPlayer,\n TrackCreate,\n PlaylistCard,\n Playlist,\n // Forms\n ArtistForm,\n AlbumForm,\n PlaylistForm,\n SearchForm,\n SearchResults,\n // Cards\n TrackListCard,\n Track,\n TrackForm,\n TrackProgress,\n VolumeControl,\n // Router\n getRoutes,\n storeAlbums,\n storeArtists,\n storeGenres,\n storePlayer,\n storePlaylists,\n storeSearch,\n // Store modules\n storeTracks,\n};\n\n// Default export\nexport default ModuleMusic;\n"],"names":["config","storeTracks","storePlaylists","storeAlbums","storeArtists","storeGenres","storePlayer","storeSearch","MusicBottomPlayer","Artist","Album","Playlist","Track","MusicLibrary","TrackCreate","TrackListCard","ArtistForm","AlbumForm","PlaylistForm","TrackForm"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwDA,SAAS,gBAAgB,KAAK,OAAO,QAAQ,QAAQ,UAAU,IAAI;AACjE,QAAM,SAAS,UAAU,OAAO;AAChC,SAAO,QAAQ,CAAC,EAAE,YAAY,QAAAA,QAAM,MAAO;AACzC,cAAU,QAAQ,EAAE,GAAGA,SAAQ,WAAU,CAAE;AAAA,EAC7C,CAAC;AAGD,QAAM,SAAS,UAAUC,MAAW;AACpC,QAAM,SAAS,aAAaC,SAAc;AAC1C,QAAM,SAAS,UAAUC,MAAW;AACpC,QAAM,SAAS,WAAWC,OAAY;AACtC,QAAM,SAAS,UAAUC,MAAW;AACpC,QAAM,SAAS,UAAUC,MAAW;AACpC,QAAM,SAAS,UAAUC,MAAW;AAGpC,MAAI,QAAQ,oBAAoB,SAAS,IAAI,OAAO,iBAAiB,SAAS;AAC5E,cAAU,WAAW;AAAA,MACnB,OAAO,QAAQ,IAAI;AAAA,MACnB,sBAAsB;AAAA,MACtB,gBAAgB;AAAA,IACtB,CAAK;AAGD,QAAI,QAAQ,QAAQ;AAClB,gBACG,QAAQ,QAAQ,MAAM,EACtB,KAAK,MAAM;AACV,kBAAU,gBAAgB,iBAAiB;AAAA,MAC7C,CAAC,EACA,MAAM,SAAO;AACZ,gBAAQ,MAAM,uDAAuD,GAAG;AAAA,MAC1E,CAAC;AAAA,IACL;AAAA,EACF;AAGA,MAAI,UAAU,eAAe,WAAW;AAC1C;AAGK,MAAC,cAAc;AAAA,EAClB,YAAY;AAAA,EACZ,OAAO;AAAA,IACL,OAAO;AAAA,MACX,aAAMN;AAAAA,MACN,gBAAMC;AAAAA,MACN,aAAMC;AAAAA,MACN,cAAMC;AAAAA,MACN,aAAMC;AAAAA,MACN,aAAMC;AAAAA,MACN,aAAMC;AAAAA,IACN;AAAA,IACI,QAAQ;AAAA,MACN;AAAA,IACN;AAAA,IACI,YAAY;AAAA;AAAA,MAEhB,mBAAMC;AAAAA;AAAAA,MAEA;AAAA,MACA;AAAA,MACN,QAAMC;AAAAA,MACN,OAAMC;AAAAA,MACN,UAAMC;AAAAA,MACN,OAAMC;AAAAA,MACN,cAAMC;AAAAA,MACN,aAAMC;AAAAA;AAAAA,MAEA;AAAA,MACA;AAAA,MACA;AAAA;AAAA,MAEN,eAAMC;AAAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA;AAAA,MAEN,YAAMC;AAAAA,MACN,WAAMC;AAAAA,MACN,cAAMC;AAAAA,MACA;AAAA,MACN,WAAMC;AAAAA,IACN;AAAA,EACA;AACA;"}
1
+ {"version":3,"file":"music.client.js","sources":["../../../../../src/modules/music/music.client.js"],"sourcesContent":["// Store modules\nimport * as storeAlbums from './store/albums.js';\nimport * as storeArtists from './store/artists.js';\nimport * as storeGenres from './store/genres.js';\nimport * as storePlayer from './store/player.js';\nimport * as storePlaylists from './store/playlists.js';\nimport * as storeSearch from './store/search.js';\nimport * as storeTracks from './store/tracks.js';\n\n// Router\nimport addRoutes from '@martyrs/src/modules/core/views/router/addRoutes.js';\nimport { getRoutes } from './music.router.js';\n\n// Layouts\nimport MusicBottomPlayer from './components/layouts/MusicBottomPlayer.vue';\n\n// Pages\nimport Album from './components/pages/Album.vue';\nimport Artist from './components/pages/Artist.vue';\nimport MusicHome from './components/pages/MusicHome.vue';\nimport MusicLibrary from './components/pages/MusicLibrary.vue';\nimport TrackCreate from './components/pages/TrackCreate.vue';\nimport Playlist from './components/pages/Playlist.vue';\nimport SearchResults from './components/pages/SearchResults.vue';\nimport Track from './components/pages/Track.vue';\n\n// Components - Player\nimport MusicPlayer from './components/player/MusicPlayer.vue';\nimport TrackProgress from './components/player/TrackProgress.vue';\nimport VolumeControl from './components/player/VolumeControl.vue';\n\n// Components - Cards\nimport AlbumCard from './components/cards/AlbumCard.vue';\nimport ArtistCard from './components/cards/ArtistCard.vue';\nimport PlaylistCard from './components/cards/PlaylistCard.vue';\nimport TrackListCard from './components/cards/TrackListCard.vue';\n\n\n// Components - Forms\nimport ArtistForm from './components/forms/ArtistForm.vue';\nimport AlbumForm from './components/forms/AlbumForm.vue';\nimport PlaylistForm from './components/forms/PlaylistForm.vue';\nimport SearchForm from './components/forms/SearchForm.vue';\nimport TrackForm from './components/forms/TrackForm.vue';\n\n// WebSocket integration for streaming\nimport wsManager from '@martyrs/src/modules/core/views/classes/ws.manager.js';\n\n/**\n * Initialize Music module on client-side\n * @param {Object} app - Vue app instance\n * @param {Object} store - Global store instance\n * @param {Object} router - Vue router instance\n * @param {Object} config - Configuration options\n * @param {Object} options - Additional options\n */\nfunction initializeMusic(app, store, router, config, options = {}) {\n const routes = getRoutes(options);\n routes.forEach(({ parentName, config }) => {\n addRoutes(router, { ...config, parentName });\n });\n\n // Register store modules\n store.addStore('tracks', storeTracks);\n store.addStore('playlists', storePlaylists);\n store.addStore('albums', storeAlbums);\n store.addStore('artists', storeArtists);\n store.addStore('genres', storeGenres);\n store.addStore('player', storePlayer);\n store.addStore('search', storeSearch);\n\n // Set up WebSocket subscription for music streaming\n if (options.enableStreaming !== false && app.config.globalProperties.WSS_URL) {\n wsManager.initialize({\n wsUrl: process.env.WSS_URL,\n maxReconnectAttempts: 10,\n reconnectDelay: 2000,\n });\n\n // Subscribe to music streaming module when authenticated\n if (options.userId) {\n wsManager\n .connect(options.userId)\n .then(() => {\n wsManager.subscribeModule('music-streaming');\n })\n .catch(err => {\n console.error('Failed to connect to WebSocket for music streaming:', err);\n });\n }\n }\n\n // Register global components if needed\n app.component('MusicPlayer', MusicPlayer);\n}\n\n// Module export\nconst ModuleMusic = {\n initialize: initializeMusic,\n views: {\n store: {\n storeTracks,\n storePlaylists,\n storeAlbums,\n storeArtists,\n storeGenres,\n storePlayer,\n storeSearch,\n },\n router: {\n getRoutes,\n },\n components: {\n // Layouts\n MusicBottomPlayer,\n // Pages\n MusicHome,\n SearchResults,\n Artist,\n Album,\n Playlist,\n Track,\n MusicLibrary,\n TrackCreate,\n // Player Components\n MusicPlayer,\n TrackProgress,\n VolumeControl,\n // Cards\n TrackListCard,\n AlbumCard,\n PlaylistCard,\n ArtistCard,\n // Forms\n ArtistForm,\n AlbumForm,\n PlaylistForm,\n SearchForm,\n TrackForm,\n },\n },\n};\n\n// Named exports for direct component imports\nexport {\n AlbumCard,\n Album,\n ArtistCard,\n Artist,\n // Pages\n MusicHome,\n // Layout\n MusicBottomPlayer,\n MusicLibrary,\n // Player Components\n MusicPlayer,\n TrackCreate,\n PlaylistCard,\n Playlist,\n // Forms\n ArtistForm,\n AlbumForm,\n PlaylistForm,\n SearchForm,\n SearchResults,\n // Cards\n TrackListCard,\n Track,\n TrackForm,\n TrackProgress,\n VolumeControl,\n // Router\n getRoutes,\n storeAlbums,\n storeArtists,\n storeGenres,\n storePlayer,\n storePlaylists,\n storeSearch,\n // Store modules\n storeTracks,\n};\n\n// Default export\nexport default ModuleMusic;\n"],"names":["config","storeTracks","storePlaylists","storeAlbums","storeArtists","storeGenres","storePlayer","storeSearch","MusicBottomPlayer","MusicHome","Artist","Album","Playlist","Track","MusicLibrary","TrackCreate","TrackListCard","ArtistForm","AlbumForm","PlaylistForm","TrackForm"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwDA,SAAS,gBAAgB,KAAK,OAAO,QAAQ,QAAQ,UAAU,IAAI;AACjE,QAAM,SAAS,UAAU,OAAO;AAChC,SAAO,QAAQ,CAAC,EAAE,YAAY,QAAAA,QAAM,MAAO;AACzC,cAAU,QAAQ,EAAE,GAAGA,SAAQ,WAAU,CAAE;AAAA,EAC7C,CAAC;AAGD,QAAM,SAAS,UAAUC,MAAW;AACpC,QAAM,SAAS,aAAaC,SAAc;AAC1C,QAAM,SAAS,UAAUC,MAAW;AACpC,QAAM,SAAS,WAAWC,OAAY;AACtC,QAAM,SAAS,UAAUC,MAAW;AACpC,QAAM,SAAS,UAAUC,MAAW;AACpC,QAAM,SAAS,UAAUC,MAAW;AAGpC,MAAI,QAAQ,oBAAoB,SAAS,IAAI,OAAO,iBAAiB,SAAS;AAC5E,cAAU,WAAW;AAAA,MACnB,OAAO,QAAQ,IAAI;AAAA,MACnB,sBAAsB;AAAA,MACtB,gBAAgB;AAAA,IACtB,CAAK;AAGD,QAAI,QAAQ,QAAQ;AAClB,gBACG,QAAQ,QAAQ,MAAM,EACtB,KAAK,MAAM;AACV,kBAAU,gBAAgB,iBAAiB;AAAA,MAC7C,CAAC,EACA,MAAM,SAAO;AACZ,gBAAQ,MAAM,uDAAuD,GAAG;AAAA,MAC1E,CAAC;AAAA,IACL;AAAA,EACF;AAGA,MAAI,UAAU,eAAe,WAAW;AAC1C;AAGK,MAAC,cAAc;AAAA,EAClB,YAAY;AAAA,EACZ,OAAO;AAAA,IACL,OAAO;AAAA,MACX,aAAMN;AAAAA,MACN,gBAAMC;AAAAA,MACN,aAAMC;AAAAA,MACN,cAAMC;AAAAA,MACN,aAAMC;AAAAA,MACN,aAAMC;AAAAA,MACN,aAAMC;AAAAA,IACN;AAAA,IACI,QAAQ;AAAA,MACN;AAAA,IACN;AAAA,IACI,YAAY;AAAA;AAAA,MAEhB,mBAAMC;AAAAA;AAAAA,MAEN,WAAMC;AAAAA,MACA;AAAA,MACN,QAAMC;AAAAA,MACN,OAAMC;AAAAA,MACN,UAAMC;AAAAA,MACN,OAAMC;AAAAA,MACN,cAAMC;AAAAA,MACN,aAAMC;AAAAA;AAAAA,MAEA;AAAA,MACA;AAAA,MACA;AAAA;AAAA,MAEN,eAAMC;AAAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA;AAAA,MAEN,YAAMC;AAAAA,MACN,WAAMC;AAAAA,MACN,cAAMC;AAAAA,MACA;AAAA,MACN,WAAMC;AAAAA,IACN;AAAA,EACA;AACA;"}
@@ -3,7 +3,7 @@ import { computed, createElementBlock, openBlock, normalizeClass, createElementV
3
3
  import _export_sfc from "../../../../../../_virtual/_plugin-vue_export-helper.js";
4
4
  const _hoisted_1 = { class: "notification-icon" };
5
5
  const _hoisted_2 = { class: "notification-content" };
6
- const _hoisted_3 = { class: "p-regular t-medium mn-b-small" };
6
+ const _hoisted_3 = { class: "p-regular fw-medium mn-b-small" };
7
7
  const _hoisted_4 = { class: "p-small mn-b-small" };
8
8
  const _hoisted_5 = { class: "pd-thin w-max radius-thin bg-white" };
9
9
  const _hoisted_6 = {
@@ -75,7 +75,7 @@ const _sfc_main = {
75
75
  };
76
76
  }
77
77
  };
78
- const NotificationItem = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-3166e453"]]);
78
+ const NotificationItem = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-3bc04d97"]]);
79
79
  export {
80
80
  NotificationItem as default
81
81
  };
@@ -1 +1 @@
1
- {"version":3,"file":"NotificationItem.vue.js","sources":["../../../../../../../src/modules/notifications/components/blocks/NotificationItem.vue"],"sourcesContent":["<script setup>\nimport { computed } from 'vue';\n\n// Props\nconst props = defineProps({\n notification: {\n type: Object,\n required: true\n }\n});\n\n// Compute if notification is unread\nconst isUnread = computed(() => props.notification.status !== 'read');\n\n// Format date\nconst formattedDate = computed(() => {\n const date = new Date(props.notification.createdAt);\n const now = new Date();\n const diffMs = now - date;\n const diffSec = Math.floor(diffMs / 1000);\n const diffMin = Math.floor(diffSec / 60);\n const diffHours = Math.floor(diffMin / 60);\n const diffDays = Math.floor(diffHours / 24);\n \n if (diffSec < 60) {\n return 'Just now';\n } else if (diffMin < 60) {\n return `${diffMin}m ago`;\n } else if (diffHours < 24) {\n return `${diffHours}h ago`;\n } else if (diffDays < 7) {\n return `${diffDays}d ago`;\n } else {\n return date.toLocaleDateString();\n }\n});\n\n// Get icon based on notification type\nconst notificationIcon = computed(() => {\n switch (props.notification.type) {\n case 'alert':\n return '⚠️';\n case 'success':\n return '✅';\n case 'error':\n return '❌';\n case 'info':\n default:\n return 'ℹ️';\n }\n});\n\n// Emit click event\nconst emit = defineEmits(['click']);\nconst handleClick = () => {\n emit('click', props.notification);\n};\n</script>\n\n<template>\n <div \n class=\"notification-item gap-thin flex pd-small radius-small bg-light\" \n :class=\"{ 'bg-second-small': isUnread }\"\n @click=\"handleClick\"\n >\n <div class=\"notification-icon\">\n {{ notificationIcon }}\n </div>\n <div class=\"notification-content\">\n <p class=\"p-regular t-medium mn-b-small\">{{ notification.title }}</p>\n <p class=\"p-small mn-b-small\">{{ notification.body }}</p>\n <p class=\"pd-thin w-max radius-thin bg-white\">{{ formattedDate }}</p>\n </div>\n <div v-if=\"isUnread\" class=\"flex-child-default unread-indicator\"></div>\n </div>\n</template>\n\n<style scoped>\n.unread-indicator {\n width: 10px;\n height: 10px;\n border-radius: 50%;\n background-color: var(--primary-color, #0066cc);\n align-self: center;\n margin-left: 0.5rem;\n}\n</style>"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAIA,UAAM,QAAQ;AAQd,UAAM,WAAW,SAAS,MAAM,MAAM,aAAa,WAAW,MAAM;AAGpE,UAAM,gBAAgB,SAAS,MAAM;AACnC,YAAM,OAAO,IAAI,KAAK,MAAM,aAAa,SAAS;AAClD,YAAM,MAAM,oBAAI,KAAI;AACpB,YAAM,SAAS,MAAM;AACrB,YAAM,UAAU,KAAK,MAAM,SAAS,GAAI;AACxC,YAAM,UAAU,KAAK,MAAM,UAAU,EAAE;AACvC,YAAM,YAAY,KAAK,MAAM,UAAU,EAAE;AACzC,YAAM,WAAW,KAAK,MAAM,YAAY,EAAE;AAE1C,UAAI,UAAU,IAAI;AAChB,eAAO;AAAA,MACT,WAAW,UAAU,IAAI;AACvB,eAAO,GAAG,OAAO;AAAA,MACnB,WAAW,YAAY,IAAI;AACzB,eAAO,GAAG,SAAS;AAAA,MACrB,WAAW,WAAW,GAAG;AACvB,eAAO,GAAG,QAAQ;AAAA,MACpB,OAAO;AACL,eAAO,KAAK,mBAAkB;AAAA,MAChC;AAAA,IACF,CAAC;AAGD,UAAM,mBAAmB,SAAS,MAAM;AACtC,cAAQ,MAAM,aAAa,MAAI;AAAA,QAC7B,KAAK;AACH,iBAAO;AAAA,QACT,KAAK;AACH,iBAAO;AAAA,QACT,KAAK;AACH,iBAAO;AAAA,QACT,KAAK;AAAA,QACL;AACE,iBAAO;AAAA,MACb;AAAA,IACA,CAAC;AAGD,UAAM,OAAO;AACb,UAAM,cAAc,MAAM;AACxB,WAAK,SAAS,MAAM,YAAY;AAAA,IAClC;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"NotificationItem.vue.js","sources":["../../../../../../../src/modules/notifications/components/blocks/NotificationItem.vue"],"sourcesContent":["<script setup>\nimport { computed } from 'vue';\n\n// Props\nconst props = defineProps({\n notification: {\n type: Object,\n required: true\n }\n});\n\n// Compute if notification is unread\nconst isUnread = computed(() => props.notification.status !== 'read');\n\n// Format date\nconst formattedDate = computed(() => {\n const date = new Date(props.notification.createdAt);\n const now = new Date();\n const diffMs = now - date;\n const diffSec = Math.floor(diffMs / 1000);\n const diffMin = Math.floor(diffSec / 60);\n const diffHours = Math.floor(diffMin / 60);\n const diffDays = Math.floor(diffHours / 24);\n \n if (diffSec < 60) {\n return 'Just now';\n } else if (diffMin < 60) {\n return `${diffMin}m ago`;\n } else if (diffHours < 24) {\n return `${diffHours}h ago`;\n } else if (diffDays < 7) {\n return `${diffDays}d ago`;\n } else {\n return date.toLocaleDateString();\n }\n});\n\n// Get icon based on notification type\nconst notificationIcon = computed(() => {\n switch (props.notification.type) {\n case 'alert':\n return '⚠️';\n case 'success':\n return '✅';\n case 'error':\n return '❌';\n case 'info':\n default:\n return 'ℹ️';\n }\n});\n\n// Emit click event\nconst emit = defineEmits(['click']);\nconst handleClick = () => {\n emit('click', props.notification);\n};\n</script>\n\n<template>\n <div \n class=\"notification-item gap-thin flex pd-small radius-small bg-light\" \n :class=\"{ 'bg-second-small': isUnread }\"\n @click=\"handleClick\"\n >\n <div class=\"notification-icon\">\n {{ notificationIcon }}\n </div>\n <div class=\"notification-content\">\n <p class=\"p-regular fw-medium mn-b-small\">{{ notification.title }}</p>\n <p class=\"p-small mn-b-small\">{{ notification.body }}</p>\n <p class=\"pd-thin w-max radius-thin bg-white\">{{ formattedDate }}</p>\n </div>\n <div v-if=\"isUnread\" class=\"flex-child-default unread-indicator\"></div>\n </div>\n</template>\n\n<style scoped>\n.unread-indicator {\n width: 10px;\n height: 10px;\n border-radius: 50%;\n background-color: var(--primary-color, #0066cc);\n align-self: center;\n margin-left: 0.5rem;\n}\n</style>"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAIA,UAAM,QAAQ;AAQd,UAAM,WAAW,SAAS,MAAM,MAAM,aAAa,WAAW,MAAM;AAGpE,UAAM,gBAAgB,SAAS,MAAM;AACnC,YAAM,OAAO,IAAI,KAAK,MAAM,aAAa,SAAS;AAClD,YAAM,MAAM,oBAAI,KAAI;AACpB,YAAM,SAAS,MAAM;AACrB,YAAM,UAAU,KAAK,MAAM,SAAS,GAAI;AACxC,YAAM,UAAU,KAAK,MAAM,UAAU,EAAE;AACvC,YAAM,YAAY,KAAK,MAAM,UAAU,EAAE;AACzC,YAAM,WAAW,KAAK,MAAM,YAAY,EAAE;AAE1C,UAAI,UAAU,IAAI;AAChB,eAAO;AAAA,MACT,WAAW,UAAU,IAAI;AACvB,eAAO,GAAG,OAAO;AAAA,MACnB,WAAW,YAAY,IAAI;AACzB,eAAO,GAAG,SAAS;AAAA,MACrB,WAAW,WAAW,GAAG;AACvB,eAAO,GAAG,QAAQ;AAAA,MACpB,OAAO;AACL,eAAO,KAAK,mBAAkB;AAAA,MAChC;AAAA,IACF,CAAC;AAGD,UAAM,mBAAmB,SAAS,MAAM;AACtC,cAAQ,MAAM,aAAa,MAAI;AAAA,QAC7B,KAAK;AACH,iBAAO;AAAA,QACT,KAAK;AACH,iBAAO;AAAA,QACT,KAAK;AACH,iBAAO;AAAA,QACT,KAAK;AAAA,QACL;AACE,iBAAO;AAAA,MACb;AAAA,IACA,CAAC;AAGD,UAAM,OAAO;AACb,UAAM,cAAc,MAAM;AACxB,WAAK,SAAS,MAAM,YAAY;AAAA,IAClC;;;;;;;;;;;;;;;;;;"}
@@ -135,7 +135,7 @@ const _sfc_main = {
135
135
  };
136
136
  }
137
137
  };
138
- const NotificationBadge = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-1dbe1152"]]);
138
+ const NotificationBadge = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-ce5c73ba"]]);
139
139
  export {
140
140
  NotificationBadge as default
141
141
  };
@@ -1 +1 @@
1
- {"version":3,"file":"NotificationBadge.vue.js","sources":["../../../../../../../src/modules/notifications/components/elements/NotificationBadge.vue"],"sourcesContent":["<template>\n <div class=\"notification-badge-container\">\n <button \n class=\"i-medium notification-button\"\n @click=\"toggleNotifications\"\n :aria-label=\"unreadCount > 0 ? `${unreadCount} unread notifications` : 'No unread notifications'\"\n >\n <IconBell class=\"notification-icon i-medium\" :fill=\"fill\"/>\n <div \n v-if=\"unreadCount > 0\" \n class=\"button-counter flex flex-center\"\n >\n <span>{{ unreadCount > 99 ? '99+' : unreadCount }}</span>\n </div>\n </button>\n \n <Popup\n title=\"Notifications\"\n @close-popup=\"closeNotifications\"\n :isPopupOpen=\"isOpen\"\n align=\"center right\"\n class=\"bg-white h-min-100 w-100 w-max-30r pd-medium\"\n >\n <div class=\"cols-1 gap-thin o-y-scroll\">\n <div v-if=\"loading\" class=\"notifications-loading\">\n Loading...\n </div>\n \n <div v-else-if=\"notifications.length === 0\" class=\"notifications-empty\">\n No notifications\n </div>\n \n <div v-else class=\"flex-column flex gap-thin\">\n <notification-item \n v-for=\"notification in recentNotifications\" \n :key=\"notification._id\" \n :notification=\"notification\"\n @click=\"handleNotificationClick(notification)\"\n />\n\n <div class=\"flex-nowrap flex gap-thin\">\n <button \n v-if=\"unreadCount > 0\"\n class=\"w-100 bg-second t-white radius-small button\" \n @click=\"markAllAsRead\"\n >\n Mark all read\n </button>\n\n <router-link class=\"w-100 bg-black t-white radius-small button\" to=\"/notifications\" @click=\"closeNotifications\">\n View all \n </router-link>\n </div>\n\n </div>\n\n </div>\n </Popup>\n </div>\n</template>\n\n<script setup>\nimport { ref, computed, onMounted, inject } from 'vue';\nimport { useRouter } from 'vue-router';\n\nimport Popup from '@martyrs/src/components/Popup/Popup.vue';\n\nimport NotificationItem from '../blocks/NotificationItem.vue';\nimport * as auth from '@martyrs/src/modules/auth/views/store/auth.js';\nimport IconBell from '@martyrs/src/modules/icons/entities/IconBell.vue';\n\nconst props = defineProps({\n maxNotifications: {\n type: Number,\n default: 10\n },\n fill: {\n type: String,\n default: 'rgb(var(--white))'\n }\n});\n\n// Get router and notification functionality\nconst router = useRouter();\n\n// Check if notifications module is loaded, provide fallback if not\nconst useNotifications = inject('useNotifications', () => ({\n notifications: ref([]),\n unreadCount: ref(0),\n loading: ref(false),\n markAllAsRead: () => {},\n getNotifications: () => {}\n}));\n\nconst { notifications, unreadCount, loading, markAllAsRead, getNotifications } = useNotifications();\n\n// Local state\nconst isOpen = ref(false);\n\n// Computed properties\nconst recentNotifications = computed(() => {\n return notifications.value\n .slice()\n .sort((a, b) => new Date(b.createdAt) - new Date(a.createdAt))\n .slice(0, props.maxNotifications);\n});\n\n// Methods\nconst toggleNotifications = () => {\n isOpen.value = !isOpen.value;\n};\n\nconst closeNotifications = () => {\n isOpen.value = false;\n};\n\nconst handleNotificationClick = (notification) => {\n isOpen.value = false;\n \n if (notification._id) {\n // Handle in store\n actions.handleNotificationAction({\n notificationId: notification._id,\n ...notification.metadata\n });\n }\n};\n\n// Lifecycle hooks\nonMounted(() => {\n // Load notifications when component mounts\n const userId = auth.state.user._id;\n if (userId) {\n getNotifications(userId);\n }\n});\n</script>\n\n<style scoped>\n.notification-badge-container {\n position: relative;\n display: inline-block;\n}\n\n.notification-button {\n background: none;\n border: none;\n cursor: pointer;\n position: relative;\n font-size: 1.2rem;\n}\n\n.notification-icon {\n font-size: 1.4rem;\n}\n\n.button-counter {\n position: absolute;\n right: -8px;\n bottom: -8px;\n background: rgb(var(--fourth));\n color: rgb(var(--white));\n height: 16px;\n border-radius: 16px;\n width: 16px;\n font-weight: 500;\n text-align: center;\n line-height: 16px;\n font-size: 10px;\n}\n\n\n.notifications-loading,\n.notifications-empty {\n padding: 24px;\n text-align: center;\n color: rgb(var(--text-light));\n}\n</style>"],"names":["auth.state"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuEA,UAAM,QAAQ;AAYC,cAAS;AAGxB,UAAM,mBAAmB,OAAO,oBAAoB,OAAO;AAAA,MACzD,eAAe,IAAI,EAAE;AAAA,MACrB,aAAa,IAAI,CAAC;AAAA,MAClB,SAAS,IAAI,KAAK;AAAA,MAClB,eAAe,MAAM;AAAA,MAAC;AAAA,MACtB,kBAAkB,MAAM;AAAA,MAAC;AAAA,IAC3B,EAAE;AAEF,UAAM,EAAE,eAAe,aAAa,SAAS,eAAe,iBAAgB,IAAK,iBAAgB;AAGjG,UAAM,SAAS,IAAI,KAAK;AAGxB,UAAM,sBAAsB,SAAS,MAAM;AACzC,aAAO,cAAc,MAClB,MAAK,EACL,KAAK,CAAC,GAAG,MAAM,IAAI,KAAK,EAAE,SAAS,IAAI,IAAI,KAAK,EAAE,SAAS,CAAC,EAC5D,MAAM,GAAG,MAAM,gBAAgB;AAAA,IACpC,CAAC;AAGD,UAAM,sBAAsB,MAAM;AAChC,aAAO,QAAQ,CAAC,OAAO;AAAA,IACzB;AAEA,UAAM,qBAAqB,MAAM;AAC/B,aAAO,QAAQ;AAAA,IACjB;AAEA,UAAM,0BAA0B,CAAC,iBAAiB;AAChD,aAAO,QAAQ;AAEf,UAAI,aAAa,KAAK;AAEpB,gBAAQ,yBAAyB;AAAA,UAC/B,gBAAgB,aAAa;AAAA,UAC7B,GAAG,aAAa;AAAA,QACtB,CAAK;AAAA,MACH;AAAA,IACF;AAGA,cAAU,MAAM;AAEd,YAAM,SAASA,MAAW,KAAK;AAC/B,UAAI,QAAQ;AACV,yBAAiB,MAAM;AAAA,MACzB;AAAA,IACF,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"NotificationBadge.vue.js","sources":["../../../../../../../src/modules/notifications/components/elements/NotificationBadge.vue"],"sourcesContent":["<template>\n <div class=\"notification-badge-container\">\n <button \n class=\"i-medium notification-button\"\n @click=\"toggleNotifications\"\n :aria-label=\"unreadCount > 0 ? `${unreadCount} unread notifications` : 'No unread notifications'\"\n >\n <IconBell class=\"notification-icon i-medium\" :fill=\"fill\"/>\n <div \n v-if=\"unreadCount > 0\" \n class=\"button-counter flex flex-center\"\n >\n <span>{{ unreadCount > 99 ? '99+' : unreadCount }}</span>\n </div>\n </button>\n \n <Popup\n title=\"Notifications\"\n @close-popup=\"closeNotifications\"\n :isPopupOpen=\"isOpen\"\n align=\"center right\"\n class=\"bg-white h-min-100 w-100 w-max-30r pd-medium\"\n >\n <div class=\"cols-1 gap-thin o-y-scroll\">\n <div v-if=\"loading\" class=\"notifications-loading\">\n Loading...\n </div>\n \n <div v-else-if=\"notifications.length === 0\" class=\"notifications-empty\">\n No notifications\n </div>\n \n <div v-else class=\"flex-column flex gap-thin\">\n <notification-item \n v-for=\"notification in recentNotifications\" \n :key=\"notification._id\" \n :notification=\"notification\"\n @click=\"handleNotificationClick(notification)\"\n />\n\n <div class=\"flex-nowrap flex gap-thin\">\n <button \n v-if=\"unreadCount > 0\"\n class=\"w-100 bg-second t-white radius-small button\" \n @click=\"markAllAsRead\"\n >\n Mark all read\n </button>\n\n <router-link class=\"w-100 bg-black t-white radius-small button\" to=\"/notifications\" @click=\"closeNotifications\">\n View all \n </router-link>\n </div>\n\n </div>\n\n </div>\n </Popup>\n </div>\n</template>\n\n<script setup>\nimport { ref, computed, onMounted, inject } from 'vue';\nimport { useRouter } from 'vue-router';\n\nimport Popup from '@martyrs/src/components/Popup/Popup.vue';\n\nimport NotificationItem from '../blocks/NotificationItem.vue';\nimport * as auth from '@martyrs/src/modules/auth/views/store/auth.js';\nimport IconBell from '@martyrs/src/modules/icons/entities/IconBell.vue';\n\nconst props = defineProps({\n maxNotifications: {\n type: Number,\n default: 10\n },\n fill: {\n type: String,\n default: 'rgb(var(--white))'\n }\n});\n\n// Get router and notification functionality\nconst router = useRouter();\n\n// Check if notifications module is loaded, provide fallback if not\nconst useNotifications = inject('useNotifications', () => ({\n notifications: ref([]),\n unreadCount: ref(0),\n loading: ref(false),\n markAllAsRead: () => {},\n getNotifications: () => {}\n}));\n\nconst { notifications, unreadCount, loading, markAllAsRead, getNotifications } = useNotifications();\n\n// Local state\nconst isOpen = ref(false);\n\n// Computed properties\nconst recentNotifications = computed(() => {\n return notifications.value\n .slice()\n .sort((a, b) => new Date(b.createdAt) - new Date(a.createdAt))\n .slice(0, props.maxNotifications);\n});\n\n// Methods\nconst toggleNotifications = () => {\n isOpen.value = !isOpen.value;\n};\n\nconst closeNotifications = () => {\n isOpen.value = false;\n};\n\nconst handleNotificationClick = (notification) => {\n isOpen.value = false;\n \n if (notification._id) {\n // Handle in store\n actions.handleNotificationAction({\n notificationId: notification._id,\n ...notification.metadata\n });\n }\n};\n\n// Lifecycle hooks\nonMounted(() => {\n // Load notifications when component mounts\n const userId = auth.state.user._id;\n if (userId) {\n getNotifications(userId);\n }\n});\n</script>\n\n<style scoped>\n.notification-badge-container {\n position: relative;\n display: inline-block;\n}\n\n.notification-button {\n background: none;\n border: none;\n cursor: pointer;\n position: relative;\n font-size: 1.2rem;\n}\n\n.notification-icon {\n font-size: 1.4rem;\n}\n\n.button-counter {\n position: absolute;\n right: -8px;\n bottom: -8px;\n background: rgb(var(--fourth));\n color: rgb(var(--white));\n height: 16px;\n border-radius: 16px;\n width: 16px;\n font-weight: 500;\n text-align: center;\n line-height: 16px;\n font-size: 10px;\n}\n\n\n.notifications-loading,\n.notifications-empty {\n padding: 24px;\n text-align: center;\n color: rgb(var(--texfw-light));\n}\n</style>"],"names":["auth.state"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuEA,UAAM,QAAQ;AAYC,cAAS;AAGxB,UAAM,mBAAmB,OAAO,oBAAoB,OAAO;AAAA,MACzD,eAAe,IAAI,EAAE;AAAA,MACrB,aAAa,IAAI,CAAC;AAAA,MAClB,SAAS,IAAI,KAAK;AAAA,MAClB,eAAe,MAAM;AAAA,MAAC;AAAA,MACtB,kBAAkB,MAAM;AAAA,MAAC;AAAA,IAC3B,EAAE;AAEF,UAAM,EAAE,eAAe,aAAa,SAAS,eAAe,iBAAgB,IAAK,iBAAgB;AAGjG,UAAM,SAAS,IAAI,KAAK;AAGxB,UAAM,sBAAsB,SAAS,MAAM;AACzC,aAAO,cAAc,MAClB,MAAK,EACL,KAAK,CAAC,GAAG,MAAM,IAAI,KAAK,EAAE,SAAS,IAAI,IAAI,KAAK,EAAE,SAAS,CAAC,EAC5D,MAAM,GAAG,MAAM,gBAAgB;AAAA,IACpC,CAAC;AAGD,UAAM,sBAAsB,MAAM;AAChC,aAAO,QAAQ,CAAC,OAAO;AAAA,IACzB;AAEA,UAAM,qBAAqB,MAAM;AAC/B,aAAO,QAAQ;AAAA,IACjB;AAEA,UAAM,0BAA0B,CAAC,iBAAiB;AAChD,aAAO,QAAQ;AAEf,UAAI,aAAa,KAAK;AAEpB,gBAAQ,yBAAyB;AAAA,UAC/B,gBAAgB,aAAa;AAAA,UAC7B,GAAG,aAAa;AAAA,QACtB,CAAK;AAAA,MACH;AAAA,IACF;AAGA,cAAU,MAAM;AAEd,YAAM,SAASA,MAAW,KAAK;AAC/B,UAAI,QAAQ;AACV,yBAAiB,MAAM;AAAA,MACzB;AAAA,IACF,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}