@ozdao/martyrs 0.2.470 → 0.2.472

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 (284) hide show
  1. package/dist/{Media-CR0V1zvB.js → Media-DW8RLbfM.js} +1 -1
  2. package/dist/{Media-C4Ges_Sd.mjs → Media-y_TX6us_.mjs} +1 -1
  3. package/dist/_virtual/index.cjs +1 -1
  4. package/dist/_virtual/index.js +1 -1
  5. package/dist/auth.server.js +1 -1
  6. package/dist/auth.server.mjs +1 -1
  7. package/dist/chats.server.js +1 -1
  8. package/dist/chats.server.mjs +1 -1
  9. package/dist/community.server.js +1 -1
  10. package/dist/community.server.mjs +1 -1
  11. package/dist/events.server.js +1 -1
  12. package/dist/events.server.mjs +1 -1
  13. package/dist/files.server.js +1 -1
  14. package/dist/files.server.mjs +1 -1
  15. package/dist/gallery.server.js +1 -1
  16. package/dist/gallery.server.mjs +1 -1
  17. package/dist/{index-DQqZReAr.js → index-CVXl1rB5.js} +0 -1
  18. package/dist/{index-DICZTQ-1.mjs → index-Df8vtZx7.mjs} +0 -1
  19. package/dist/{main-CsZAG5Wz.js → main-CCfQH-Dd.js} +2 -2
  20. package/dist/{main-CTcal9qN.mjs → main-CgmHzhq5.mjs} +74 -74
  21. 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.cjs +1 -1
  22. package/dist/martyrs/node_modules/@vue/server-renderer/dist/server-renderer.esm-bundler.cjs.map +1 -0
  23. 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
  24. package/dist/martyrs/node_modules/@vue/server-renderer/dist/server-renderer.esm-bundler.js.map +1 -0
  25. package/dist/martyrs/node_modules/@vue/shared/dist/shared.esm-bundler.cjs.map +1 -0
  26. package/dist/martyrs/node_modules/@vue/shared/dist/shared.esm-bundler.js.map +1 -0
  27. package/dist/martyrs/node_modules/uuid/dist/esm-browser/regex.cjs +5 -0
  28. package/dist/martyrs/node_modules/uuid/dist/esm-browser/regex.cjs.map +1 -0
  29. package/dist/martyrs/node_modules/uuid/dist/esm-browser/regex.js +5 -0
  30. package/dist/martyrs/node_modules/uuid/dist/esm-browser/regex.js.map +1 -0
  31. package/dist/{node_modules/.pnpm/uuid@11.1.0 → martyrs}/node_modules/uuid/dist/esm-browser/rng.cjs +4 -4
  32. package/dist/martyrs/node_modules/uuid/dist/esm-browser/rng.cjs.map +1 -0
  33. package/dist/martyrs/node_modules/uuid/dist/esm-browser/rng.js +15 -0
  34. package/dist/martyrs/node_modules/uuid/dist/esm-browser/rng.js.map +1 -0
  35. package/dist/martyrs/node_modules/uuid/dist/esm-browser/stringify.cjs +17 -0
  36. package/dist/martyrs/node_modules/uuid/dist/esm-browser/stringify.cjs.map +1 -0
  37. package/dist/martyrs/node_modules/uuid/dist/esm-browser/stringify.js +17 -0
  38. package/dist/martyrs/node_modules/uuid/dist/esm-browser/stringify.js.map +1 -0
  39. package/dist/martyrs/node_modules/uuid/dist/esm-browser/v4.cjs +13 -0
  40. package/dist/martyrs/node_modules/uuid/dist/esm-browser/v4.cjs.map +1 -0
  41. package/dist/martyrs/node_modules/uuid/dist/esm-browser/v4.js +13 -0
  42. package/dist/martyrs/node_modules/uuid/dist/esm-browser/v4.js.map +1 -0
  43. package/dist/martyrs/node_modules/uuid/dist/esm-browser/validate.cjs +8 -0
  44. package/dist/martyrs/node_modules/uuid/dist/esm-browser/validate.cjs.map +1 -0
  45. package/dist/martyrs/node_modules/uuid/dist/esm-browser/validate.js +8 -0
  46. package/dist/martyrs/node_modules/uuid/dist/esm-browser/validate.js.map +1 -0
  47. package/dist/martyrs/src/components/Feed/Feed.vue.cjs +2 -2
  48. package/dist/martyrs/src/components/Feed/Feed.vue.cjs.map +1 -1
  49. package/dist/martyrs/src/components/Feed/Feed.vue.js +2 -2
  50. package/dist/martyrs/src/components/Feed/Feed.vue.js.map +1 -1
  51. package/dist/martyrs/src/components/Menu/{Menu.vue.cjs → Menu.vue2.cjs} +2 -2
  52. package/dist/martyrs/src/components/Menu/Menu.vue2.cjs.map +1 -0
  53. package/dist/martyrs/src/components/Menu/{Menu.vue.js → Menu.vue2.js} +2 -2
  54. package/dist/martyrs/src/components/Menu/Menu.vue2.js.map +1 -0
  55. package/dist/martyrs/src/components/Skeleton/Skeleton.vue.cjs +5 -5
  56. package/dist/martyrs/src/components/Skeleton/Skeleton.vue.cjs.map +1 -1
  57. package/dist/martyrs/src/components/Skeleton/Skeleton.vue.js +5 -5
  58. package/dist/martyrs/src/components/Skeleton/Skeleton.vue.js.map +1 -1
  59. package/dist/martyrs/src/components/Tab/{Tab.vue2.cjs → Tab.vue.cjs} +2 -2
  60. package/dist/martyrs/src/components/Tab/{Tab.vue2.js.map → Tab.vue.cjs.map} +1 -1
  61. package/dist/martyrs/src/components/Tab/{Tab.vue2.js → Tab.vue.js} +2 -2
  62. package/dist/martyrs/src/components/Tab/Tab.vue.js.map +1 -0
  63. package/dist/martyrs/src/components/Tree/Tree.vue.cjs +3 -1
  64. package/dist/martyrs/src/components/Tree/Tree.vue.cjs.map +1 -1
  65. package/dist/martyrs/src/components/Tree/Tree.vue.js +3 -1
  66. package/dist/martyrs/src/components/Tree/Tree.vue.js.map +1 -1
  67. package/dist/martyrs/src/modules/auth/views/components/layouts/Auth.vue.cjs +1 -1
  68. package/dist/martyrs/src/modules/auth/views/components/layouts/Auth.vue.js +1 -1
  69. package/dist/martyrs/src/modules/auth/views/components/pages/EnterPassword.vue.cjs +1 -1
  70. package/dist/martyrs/src/modules/auth/views/components/pages/EnterPassword.vue.js +1 -1
  71. package/dist/martyrs/src/modules/auth/views/components/pages/Invite.vue.cjs +1 -1
  72. package/dist/martyrs/src/modules/auth/views/components/pages/Invite.vue.js +1 -1
  73. package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.cjs +1 -1
  74. package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.js +1 -1
  75. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileBlogposts.vue.cjs +1 -1
  76. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileBlogposts.vue.js +1 -1
  77. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEdit.vue.cjs +1 -1
  78. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEdit.vue.js +1 -1
  79. package/dist/martyrs/src/modules/auth/views/components/pages/ResetPassword.vue.cjs +1 -1
  80. package/dist/martyrs/src/modules/auth/views/components/pages/ResetPassword.vue.js +1 -1
  81. package/dist/martyrs/src/modules/auth/views/components/pages/SignIn.vue.cjs +1 -1
  82. package/dist/martyrs/src/modules/auth/views/components/pages/SignIn.vue.js +1 -1
  83. package/dist/martyrs/src/modules/auth/views/components/pages/SignUp.vue.cjs +1 -1
  84. package/dist/martyrs/src/modules/auth/views/components/pages/SignUp.vue.js +1 -1
  85. package/dist/martyrs/src/modules/auth/views/store/auth.cjs +1 -0
  86. package/dist/martyrs/src/modules/auth/views/store/auth.cjs.map +1 -1
  87. package/dist/martyrs/src/modules/auth/views/store/auth.js +1 -0
  88. package/dist/martyrs/src/modules/auth/views/store/auth.js.map +1 -1
  89. package/dist/martyrs/src/modules/constructor/components/sections/Constructor.vue.cjs +1 -1
  90. package/dist/martyrs/src/modules/constructor/components/sections/Constructor.vue.js +1 -1
  91. package/dist/martyrs/src/modules/events/components/pages/EventsBackoffice.vue.cjs +1 -1
  92. package/dist/martyrs/src/modules/events/components/pages/EventsBackoffice.vue.js +1 -1
  93. package/dist/martyrs/src/modules/globals/views/classes/globals.store.cjs +107 -21
  94. package/dist/martyrs/src/modules/globals/views/classes/globals.store.cjs.map +1 -1
  95. package/dist/martyrs/src/modules/globals/views/classes/globals.store.js +107 -21
  96. package/dist/martyrs/src/modules/globals/views/classes/globals.store.js.map +1 -1
  97. package/dist/martyrs/src/modules/globals/views/components/partials/Navigation.vue.cjs +10 -14
  98. package/dist/martyrs/src/modules/globals/views/components/partials/Navigation.vue.cjs.map +1 -1
  99. package/dist/martyrs/src/modules/globals/views/components/partials/Navigation.vue.js +12 -16
  100. package/dist/martyrs/src/modules/globals/views/components/partials/Navigation.vue.js.map +1 -1
  101. package/dist/martyrs/src/modules/globals/views/components/sections/SectionPageTitle.vue.cjs +1 -1
  102. package/dist/martyrs/src/modules/globals/views/components/sections/SectionPageTitle.vue.js +1 -1
  103. package/dist/martyrs/src/modules/globals/views/utils/vue-app-renderer.cjs +7 -13
  104. package/dist/martyrs/src/modules/globals/views/utils/vue-app-renderer.cjs.map +1 -1
  105. package/dist/martyrs/src/modules/globals/views/utils/vue-app-renderer.js +7 -13
  106. package/dist/martyrs/src/modules/globals/views/utils/vue-app-renderer.js.map +1 -1
  107. package/dist/martyrs/src/modules/orders/components/pages/OrderCreate.vue.cjs +6 -7
  108. package/dist/martyrs/src/modules/orders/components/pages/OrderCreate.vue.cjs.map +1 -1
  109. package/dist/martyrs/src/modules/orders/components/pages/OrderCreate.vue.js +7 -8
  110. package/dist/martyrs/src/modules/orders/components/pages/OrderCreate.vue.js.map +1 -1
  111. package/dist/martyrs/src/modules/orders/components/pages/OrderCreateBackoffice.vue.cjs +1 -1
  112. package/dist/martyrs/src/modules/orders/components/pages/OrderCreateBackoffice.vue.js +1 -1
  113. package/dist/martyrs/src/modules/orders/components/pages/Orders.vue.cjs +1 -1
  114. package/dist/martyrs/src/modules/orders/components/pages/Orders.vue.js +1 -1
  115. package/dist/martyrs/src/modules/organizations/components/pages/DepartmentEdit.vue.cjs +1 -1
  116. package/dist/martyrs/src/modules/organizations/components/pages/DepartmentEdit.vue.js +1 -1
  117. package/dist/martyrs/src/modules/organizations/components/pages/Members.vue.cjs +2 -2
  118. package/dist/martyrs/src/modules/organizations/components/pages/Members.vue.js +2 -2
  119. package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.cjs +2 -2
  120. package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.js +2 -2
  121. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationBackoffice.vue.cjs +1 -1
  122. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationBackoffice.vue.js +1 -1
  123. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.cjs +1 -1
  124. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.js +1 -1
  125. package/dist/martyrs/src/modules/organizations/components/pages/Organizations.vue.cjs +1 -1
  126. package/dist/martyrs/src/modules/organizations/components/pages/Organizations.vue.js +1 -1
  127. package/dist/martyrs/src/modules/organizations/components/sections/Organizations.vue.cjs +1 -1
  128. package/dist/martyrs/src/modules/organizations/components/sections/Organizations.vue.js +1 -1
  129. package/dist/martyrs/src/modules/products/components/blocks/CardCategory.vue.cjs +11 -5
  130. package/dist/martyrs/src/modules/products/components/blocks/CardCategory.vue.cjs.map +1 -1
  131. package/dist/martyrs/src/modules/products/components/blocks/CardCategory.vue.js +12 -6
  132. package/dist/martyrs/src/modules/products/components/blocks/CardCategory.vue.js.map +1 -1
  133. package/dist/martyrs/src/modules/products/components/pages/Categories.vue.cjs +34 -13
  134. package/dist/martyrs/src/modules/products/components/pages/Categories.vue.cjs.map +1 -1
  135. package/dist/martyrs/src/modules/products/components/pages/Categories.vue.js +35 -14
  136. package/dist/martyrs/src/modules/products/components/pages/Categories.vue.js.map +1 -1
  137. package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.cjs +20 -9
  138. package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.cjs.map +1 -1
  139. package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.js +21 -10
  140. package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.js.map +1 -1
  141. package/dist/martyrs/src/modules/products/components/pages/Leftovers.vue.cjs +1 -1
  142. package/dist/martyrs/src/modules/products/components/pages/Leftovers.vue.js +1 -1
  143. package/dist/martyrs/src/modules/products/components/pages/Product.vue.cjs +1 -1
  144. package/dist/martyrs/src/modules/products/components/pages/Product.vue.js +1 -1
  145. package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.cjs +2 -1
  146. package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.cjs.map +1 -1
  147. package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.js +2 -1
  148. package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.js.map +1 -1
  149. package/dist/martyrs/src/modules/products/components/pages/Products.vue.cjs +1 -1
  150. package/dist/martyrs/src/modules/products/components/pages/Products.vue.js +1 -1
  151. package/dist/martyrs/src/modules/products/components/sections/SectionProduct.vue.cjs +1 -1
  152. package/dist/martyrs/src/modules/products/components/sections/SectionProduct.vue.js +1 -1
  153. package/dist/martyrs/src/modules/rents/views/components/pages/GanttChart.vue.cjs +1 -1
  154. package/dist/martyrs/src/modules/rents/views/components/pages/GanttChart.vue.js +1 -1
  155. package/dist/martyrs/src/modules/rents/views/components/pages/Rents.vue.cjs +1 -1
  156. package/dist/martyrs/src/modules/rents/views/components/pages/Rents.vue.js +1 -1
  157. package/dist/martyrs/src/modules/spots/components/pages/SpotEdit.vue.cjs +1 -1
  158. package/dist/martyrs/src/modules/spots/components/pages/SpotEdit.vue.js +1 -1
  159. package/dist/martyrs.cjs.js +1 -1
  160. package/dist/martyrs.css +1 -1
  161. package/dist/martyrs.es.js +1 -1
  162. package/dist/notifications.server.js +35 -2
  163. package/dist/notifications.server.mjs +35 -2
  164. package/dist/orders.server.js +3 -3
  165. package/dist/orders.server.mjs +3 -3
  166. package/dist/organizations.server.js +1 -1
  167. package/dist/organizations.server.mjs +1 -1
  168. package/dist/products.server.js +78 -53
  169. package/dist/products.server.mjs +78 -53
  170. package/dist/rents.server.js +1 -1
  171. package/dist/rents.server.mjs +1 -1
  172. package/dist/style.css +37 -38
  173. package/dist/wallet.server.js +1 -1
  174. package/dist/wallet.server.mjs +1 -1
  175. package/package.json +2 -1
  176. package/src/components/Feed/Feed.vue +2 -7
  177. package/src/components/Skeleton/Skeleton.vue +4 -5
  178. package/src/components/Tree/Tree.vue +5 -2
  179. package/src/modules/auth/controllers/middlewares/authJwt.js +1 -1
  180. package/src/modules/auth/views/store/auth.js +2 -1
  181. package/src/modules/globals/controllers/classes/globals.crud.js +2 -2
  182. package/src/modules/globals/views/classes/globals.store.js +119 -31
  183. package/src/modules/globals/views/components/partials/Navigation.vue +11 -10
  184. package/src/modules/globals/views/utils/vue-app-renderer.js +7 -16
  185. package/src/modules/icons/entities/IconMusic.vue +14 -0
  186. package/src/modules/icons/navigation/IconCheck.vue +31 -0
  187. package/src/modules/icons/navigation/IconHeart.vue +26 -0
  188. package/src/modules/icons/navigation/IconPause.vue +31 -0
  189. package/src/modules/icons/navigation/IconPlay.vue +17 -0
  190. package/src/modules/icons/navigation/IconRefresh.vue +31 -0
  191. package/src/modules/icons/navigation/IconShuffle.vue +31 -0
  192. package/src/modules/icons/navigation/IconVolume.vue +31 -0
  193. package/src/modules/music/components/SidebarMusic.vue +156 -0
  194. package/src/modules/music/components/cards/AlbumCard.vue +107 -0
  195. package/src/modules/music/components/cards/ArtistCard.vue +37 -0
  196. package/src/modules/music/components/cards/PlaylistCard.vue +100 -0
  197. package/src/modules/music/components/cards/TrackCard.vue +86 -0
  198. package/src/modules/music/components/forms/PlaylistForm.vue +156 -0
  199. package/src/modules/music/components/forms/SearchForm.vue +82 -0
  200. package/src/modules/music/components/forms/UploadForm.vue +313 -0
  201. package/src/modules/music/components/layouts/MusicLayout.vue +137 -0
  202. package/src/modules/music/components/lists/AlbumList.vue +25 -0
  203. package/src/modules/music/components/lists/ArtistList.vue +25 -0
  204. package/src/modules/music/components/lists/PlaylistList.vue +25 -0
  205. package/src/modules/music/components/lists/TrackList.vue +175 -0
  206. package/src/modules/music/components/pages/AlbumDetail.vue +265 -0
  207. package/src/modules/music/components/pages/ArtistDetail.vue +247 -0
  208. package/src/modules/music/components/pages/MusicHome.vue +177 -0
  209. package/src/modules/music/components/pages/MusicLibrary.vue +192 -0
  210. package/src/modules/music/components/pages/MusicUpload.vue +44 -0
  211. package/src/modules/music/components/pages/PlaylistDetail.vue +504 -0
  212. package/src/modules/music/components/pages/SearchResults.vue +397 -0
  213. package/src/modules/music/components/pages/TrackDetail.vue +143 -0
  214. package/src/modules/music/components/player/MusicPlayer.vue +202 -0
  215. package/src/modules/music/components/player/TrackProgress.vue +110 -0
  216. package/src/modules/music/components/player/VolumeControl.vue +98 -0
  217. package/src/modules/music/controllers/album.controller.js +98 -0
  218. package/src/modules/music/controllers/artist.controller.js +111 -0
  219. package/src/modules/music/controllers/genre.controller.js +71 -0
  220. package/src/modules/music/controllers/music.controller.js +174 -0
  221. package/src/modules/music/controllers/playlist.controller.js +182 -0
  222. package/src/modules/music/controllers/search.controller.js +103 -0
  223. package/src/modules/music/controllers/stream.controller.js +106 -0
  224. package/src/modules/music/models/album.model.js +61 -0
  225. package/src/modules/music/models/artist.model.js +67 -0
  226. package/src/modules/music/models/genre.model.js +42 -0
  227. package/src/modules/music/models/play-history.model.js +51 -0
  228. package/src/modules/music/models/playlist.model.js +69 -0
  229. package/src/modules/music/models/track.model.js +94 -0
  230. package/src/modules/music/music.client.js +186 -0
  231. package/src/modules/music/music.server.js +114 -0
  232. package/src/modules/music/policies/music.policies.js +84 -0
  233. package/src/modules/music/router/music.js +77 -0
  234. package/src/modules/music/routes/album.routes.js +62 -0
  235. package/src/modules/music/routes/artist.routes.js +67 -0
  236. package/src/modules/music/routes/genre.routes.js +60 -0
  237. package/src/modules/music/routes/music.routes.js +145 -0
  238. package/src/modules/music/routes/playlist.routes.js +99 -0
  239. package/src/modules/music/routes/search.routes.js +10 -0
  240. package/src/modules/music/routes/stream.routes.js +38 -0
  241. package/src/modules/music/store/albums.js +200 -0
  242. package/src/modules/music/store/artists.js +180 -0
  243. package/src/modules/music/store/player.js +397 -0
  244. package/src/modules/music/store/playlists.js +211 -0
  245. package/src/modules/music/store/search.js +126 -0
  246. package/src/modules/music/store/tracks.js +230 -0
  247. package/src/modules/music/websocket/streaming.handler.js +151 -0
  248. package/src/modules/notifications/controllers/notifications.controller.js +44 -1
  249. package/src/modules/notifications/notifications.server.js +0 -1
  250. package/src/modules/notifications/routes/notifications.routes.js +3 -0
  251. package/src/modules/orders/components/pages/OrderCreate.vue +0 -2
  252. package/src/modules/products/components/blocks/CardCategory.vue +5 -4
  253. package/src/modules/products/components/pages/Categories.vue +38 -20
  254. package/src/modules/products/components/pages/CategoryEdit.vue +16 -7
  255. package/src/modules/products/components/pages/ProductEdit.vue +1 -0
  256. package/src/modules/products/controllers/categories.controller.js +155 -103
  257. package/dist/martyrs/src/components/Menu/Menu.vue.cjs.map +0 -1
  258. package/dist/martyrs/src/components/Menu/Menu.vue.js.map +0 -1
  259. package/dist/martyrs/src/components/Tab/Tab.vue2.cjs.map +0 -1
  260. 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.cjs.map +0 -1
  261. 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
  262. package/dist/node_modules/.pnpm/@vue_shared@3.5.13/node_modules/@vue/shared/dist/shared.esm-bundler.cjs.map +0 -1
  263. package/dist/node_modules/.pnpm/@vue_shared@3.5.13/node_modules/@vue/shared/dist/shared.esm-bundler.js.map +0 -1
  264. package/dist/node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm-browser/native.cjs +0 -6
  265. package/dist/node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm-browser/native.cjs.map +0 -1
  266. package/dist/node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm-browser/native.js +0 -6
  267. package/dist/node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm-browser/native.js.map +0 -1
  268. package/dist/node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm-browser/rng.cjs.map +0 -1
  269. package/dist/node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm-browser/rng.js +0 -15
  270. package/dist/node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm-browser/rng.js.map +0 -1
  271. package/dist/node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm-browser/stringify.cjs +0 -11
  272. package/dist/node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm-browser/stringify.cjs.map +0 -1
  273. package/dist/node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm-browser/stringify.js +0 -11
  274. package/dist/node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm-browser/stringify.js.map +0 -1
  275. package/dist/node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm-browser/v4.cjs +0 -21
  276. package/dist/node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm-browser/v4.cjs.map +0 -1
  277. package/dist/node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm-browser/v4.js +0 -21
  278. package/dist/node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm-browser/v4.js.map +0 -1
  279. /package/dist/{node_modules/.pnpm/@vue_shared@3.5.13 → martyrs}/node_modules/@vue/shared/dist/shared.esm-bundler.cjs +0 -0
  280. /package/dist/{node_modules/.pnpm/@vue_shared@3.5.13 → martyrs}/node_modules/@vue/shared/dist/shared.esm-bundler.js +0 -0
  281. /package/dist/{node_modules → martyrs/node_modules}/fast-deep-equal/index.cjs +0 -0
  282. /package/dist/{node_modules → martyrs/node_modules}/fast-deep-equal/index.cjs.map +0 -0
  283. /package/dist/{node_modules → martyrs/node_modules}/fast-deep-equal/index.js +0 -0
  284. /package/dist/{node_modules → martyrs/node_modules}/fast-deep-equal/index.js.map +0 -0
@@ -0,0 +1,313 @@
1
+ <!-- components/forms/UploadForm.vue -->
2
+ <template>
3
+ <div class="upload-form">
4
+ <!-- <form @submit.prevent="submitForm"> -->
5
+ <div class="form-group mn-b-medium">
6
+ <label for="title" class="t-white t-medium mn-b-thin d-block">Track Title</label>
7
+ <Field
8
+ v-model:field="form.title"
9
+ id="title"
10
+ type="text"
11
+ placeholder="Track Title"
12
+ :validation="validationErrors.title"
13
+ class="w-100 pd-small bg-dark-transp-25 radius-small t-white"
14
+ />
15
+ </div>
16
+
17
+ <div class="form-group mn-b-medium">
18
+ <label for="artist" class="t-white t-medium mn-b-thin d-block">Artist</label>
19
+ <Select
20
+ v-model:select="form.artist"
21
+ id="artist"
22
+ :options="artistOptions"
23
+ placeholder="Select an artist"
24
+ :validation="validationErrors.artist"
25
+ class="w-100 pd-small bg-dark-transp-25 radius-small t-white"
26
+ />
27
+ </div>
28
+
29
+ <div class="form-group mn-b-medium">
30
+ <label for="album" class="t-white t-medium mn-b-thin d-block">Album (Optional)</label>
31
+ <Select
32
+ v-model:select="form.album"
33
+ id="album"
34
+ :options="albumOptions"
35
+ placeholder="Select an album"
36
+ class="w-100 pd-small bg-dark-transp-25 radius-small t-white"
37
+ />
38
+ </div>
39
+
40
+ <div class="form-group mn-b-medium">
41
+ <label for="genre" class="t-white t-medium mn-b-thin d-block">Genre</label>
42
+ <Select
43
+ v-model:select="form.genre"
44
+ id="genre"
45
+ :options="genreOptions"
46
+ placeholder="Select a genre"
47
+ :validation="validationErrors.genre"
48
+ class="w-100 pd-small bg-dark-transp-25 radius-small t-white"
49
+ />
50
+ </div>
51
+
52
+ <div class="form-group mn-b-medium">
53
+ <label for="releaseDate" class="t-white t-medium mn-b-thin d-block">Release Date</label>
54
+ <Field
55
+ v-model:field="form.releaseDate"
56
+ id="releaseDate"
57
+ type="date"
58
+ :validation="validationErrors.releaseDate"
59
+ class="w-100 pd-small bg-dark-transp-25 radius-small t-white"
60
+ />
61
+ </div>
62
+
63
+ <div class="form-group mn-b-medium">
64
+ <label for="isExplicit" class="t-white t-medium mn-b-thin d-block">Explicit Content</label>
65
+ <Checkbox
66
+ v-model:checkbox="form.isExplicit"
67
+ id="isExplicit"
68
+ label="This track contains explicit content"
69
+ class="t-white"
70
+ />
71
+ </div>
72
+
73
+ <div class="form-group mn-b-medium">
74
+ <label for="isPublic" class="t-white t-medium mn-b-thin d-block">Privacy</label>
75
+ <div class="flex gap-small">
76
+ <Radio
77
+ v-model:radio="form.isPublic"
78
+ :value="true"
79
+ name="privacy"
80
+ label="Public"
81
+ class="t-white"
82
+ />
83
+ <Radio
84
+ v-model:radio="form.isPublic"
85
+ :value="false"
86
+ name="privacy"
87
+ label="Private"
88
+ class="t-white"
89
+ />
90
+ </div>
91
+ </div>
92
+
93
+ <div class="form-group mn-b-medium">
94
+ <label class="t-white t-medium mn-b-thin d-block">Cover Image</label>
95
+ <div class="track-cover-upload flex gap-medium">
96
+ <div class="track-cover-preview bg-dark-transp-25 radius-small o-hidden">
97
+ <Media
98
+ v-if="form.coverUrl"
99
+ :url="form.coverUrl"
100
+ class="w-10r h-10r object-fit-cover"
101
+ />
102
+ <div v-else class="w-10r h-10r flex-center flex">
103
+ <IconMusic class="i-big" fill="rgb(var(--grey))"/>
104
+ </div>
105
+ </div>
106
+
107
+ <UploadImage
108
+ v-model:photo="form.coverUrl"
109
+ uploadPath="tracks"
110
+ class="flex-1 h-10r bg-dark-transp-25 radius-small"
111
+ />
112
+ </div>
113
+ </div>
114
+
115
+ <div class="form-group mn-b-medium">
116
+ <label class="t-white t-medium mn-b-thin d-block">Track Audio File</label>
117
+ <Upload
118
+ v-model:field="form.fileUrl"
119
+ @file-change="(url) => form.fileUrl = url"
120
+ type="file"
121
+ uploadPath="tracks"
122
+ class="bg-dark-transp-25 radius-small pd-small t-white"
123
+ />
124
+ </div>
125
+
126
+ <div class="form-group mn-b-medium">
127
+ <label for="lyrics" class="t-white t-medium mn-b-thin d-block">Lyrics (Optional)</label>
128
+ <Field
129
+ v-model:field="form.lyrics"
130
+ id="lyrics"
131
+ type="textarea"
132
+ placeholder="Add lyrics"
133
+ class="w-100 pd-small bg-dark-transp-25 radius-small t-white"
134
+ />
135
+ </div>
136
+
137
+ <div class="form-actions t-right">
138
+ <Button
139
+ @click="resetForm"
140
+ type="button"
141
+ class="bg-dark-transp-25 t-white pd-small radius-small mn-r-small hover-bg-dark"
142
+ :showLoader="false"
143
+ :showSucces="false"
144
+ >
145
+ Reset
146
+ </Button>
147
+
148
+ <Button
149
+ type="submit"
150
+ class="bg-main t-white pd-small radius-small hover-scale-1"
151
+ :submit="() => submitForm()"
152
+ :showLoader="true"
153
+ :showSucces="true"
154
+ >
155
+ Upload Track
156
+ </Button>
157
+ </div>
158
+ <!-- </form> -->
159
+ </div>
160
+ </template>
161
+
162
+ <script setup>
163
+ import { ref, reactive, onMounted } from 'vue';
164
+ import Field from '@martyrs/src/components/Field/Field.vue';
165
+ import Select from '@martyrs/src/components/Select/Select.vue';
166
+ import Radio from '@martyrs/src/components/Radio/Radio.vue';
167
+ import Checkbox from '@martyrs/src/components/Checkbox/Checkbox.vue';
168
+ import Button from '@martyrs/src/components/Button/Button.vue';
169
+ import Upload from '@martyrs/src/components/Upload/Upload.vue';
170
+ import UploadImage from '@martyrs/src/components/UploadImage/UploadImage.vue';
171
+ import Media from '@martyrs/src/components/Media/Media.vue';
172
+ import IconMusic from '@martyrs/src/modules/icons/entities/IconMusic.vue';
173
+
174
+ // Import stores
175
+ import { state as authState } from '@martyrs/src/modules/auth/views/store/auth.js';
176
+ import { actions as tracksActions } from '../../store/tracks.js';
177
+ import { state as artistsState, actions as artistsActions } from '../../store/artists.js';
178
+ import { state as albumsState, actions as albumsActions } from '../../store/albums.js';
179
+
180
+ const emit = defineEmits(['uploaded']);
181
+
182
+ // Form data
183
+ const form = reactive({
184
+ title: '',
185
+ artist: null,
186
+ album: null,
187
+ genre: [],
188
+ releaseDate: new Date().toISOString().split('T')[0],
189
+ isExplicit: false,
190
+ isPublic: true,
191
+ coverUrl: '',
192
+ fileUrl: '',
193
+ lyrics: ''
194
+ });
195
+
196
+ // Options for dropdowns
197
+ const artistOptions = ref([]);
198
+ const albumOptions = ref([]);
199
+ const genreOptions = ref([
200
+ 'Pop', 'Rock', 'Hip Hop', 'R&B', 'Jazz', 'Electronic', 'Classical', 'Country', 'Folk', 'Blues'
201
+ ]);
202
+
203
+ // Validation
204
+ const validationErrors = reactive({});
205
+
206
+ /// Form submission with improved error handling
207
+ const submitForm = async () => {
208
+ // Validate form (I'm keeping this commented out as in your original code)
209
+ // validationErrors.title = !form.title ? { message: 'Track title is required' } : null;
210
+ // validationErrors.artist = !form.artist ? { message: 'Artist is required' } : null;
211
+ // validationErrors.genre = !form.genre || form.genre.length === 0 ? { message: 'Genre is required' } : null;
212
+ // validationErrors.fileUrl = !form.fileUrl ? { message: 'Audio file is required' } : null;
213
+
214
+ // // If there are validation errors, don't submit
215
+ // if (Object.values(validationErrors).some(error => error !== null)) {
216
+ // console.log(error)
217
+ // return;
218
+ // }
219
+
220
+ console.log('Submitting form data:', form);
221
+
222
+ // Check if the API URL is correct
223
+ console.log('API URL:', process.env.API_URL);
224
+
225
+ // Prepare track data
226
+ const trackData = {
227
+ ...form,
228
+ creator: {
229
+ type: 'user', // Make sure type matches what's expected on the server (lowercase)
230
+ target: authState.user._id
231
+ },
232
+ owner: {
233
+ type: 'user', // Make sure type matches what's expected on the server (lowercase)
234
+ target: authState.user._id
235
+ },
236
+ status: 'draft' // Add a default status if needed
237
+ };
238
+
239
+ try {
240
+ console.log('Sending track data to API:', trackData);
241
+
242
+ // Directly use the Store instance to debug the issue
243
+ // This bypasses the action layer to see if the issue is there
244
+ // const directApiResult = await trackStore.create(trackData);
245
+ // console.log('Direct API result:', directApiResult);
246
+
247
+ // If the direct approach works, try the normal action
248
+ const track = await tracksActions.createTrack(trackData);
249
+ console.log('Track created successfully:', track);
250
+
251
+ emit('uploaded', track);
252
+ resetForm();
253
+ } catch (error) {
254
+ console.error('Error uploading track:', error);
255
+
256
+ // Add more detailed error logging
257
+ if (error.status) {
258
+ console.error(`HTTP Status: ${error.status}`);
259
+ }
260
+ if (error.message) {
261
+ console.error(`Error message: ${error.message}`);
262
+ }
263
+ if (error.stack) {
264
+ console.error(`Stack trace: ${error.stack}`);
265
+ }
266
+
267
+ // Show error to user
268
+ // setError({
269
+ // message: 'Failed to upload track: ' + (error.message || 'Unknown error'),
270
+ // errorCode: error.errorCode || 'TRACK_UPLOAD_FAILED'
271
+ // });
272
+ }
273
+ };
274
+ const resetForm = () => {
275
+ Object.keys(form).forEach(key => {
276
+ if (key === 'releaseDate') {
277
+ form[key] = new Date().toISOString().split('T')[0];
278
+ } else if (key === 'isPublic') {
279
+ form[key] = true;
280
+ } else if (key === 'isExplicit') {
281
+ form[key] = false;
282
+ } else {
283
+ form[key] = '';
284
+ }
285
+ });
286
+
287
+ // Clear validation errors
288
+ Object.keys(validationErrors).forEach(key => {
289
+ validationErrors[key] = null;
290
+ });
291
+ };
292
+
293
+ // Fetch artists and albums for dropdowns
294
+ onMounted(async () => {
295
+ try {
296
+ // Fetch user's artists
297
+ const userArtists = await artistsActions.fetchUserArtists(authState.user._id);
298
+ artistOptions.value = userArtists.map(artist => ({
299
+ name: artist.name,
300
+ value: artist._id
301
+ }));
302
+
303
+ // Fetch user's albums
304
+ const userAlbums = await albumsActions.fetchUserAlbums(authState.user._id);
305
+ albumOptions.value = userAlbums.map(album => ({
306
+ name: album.title,
307
+ value: album._id
308
+ }));
309
+ } catch (error) {
310
+ console.error('Error fetching artists and albums:', error);
311
+ }
312
+ });
313
+ </script>
@@ -0,0 +1,137 @@
1
+ <!-- components/layouts/MusicLayout.vue -->
2
+ <template>
3
+ <div class="music-layout flex flex-nowrap o-hidden w-100 h-100">
4
+ <!-- Main Content -->
5
+ <div class="flex-child-1 flex flex-column h-100 o-hidden">
6
+ <!-- Header Bar -->
7
+ <header class="flex-child-shrink-0 z-index-3 bg-dark flex-v-center flex-justify-between flex gap-small pd-small br-b br-solid br-dark-transp-20">
8
+ <div class="flex-v-center flex gap-small">
9
+ <div class="music-navigation-buttons flex gap-thin">
10
+ <button @click="$router.go(-1)" class="bg-black radius-extra flex-center flex aspect-1x1 i-medium cursor-pointer hover-bg-dark pd-micro">
11
+ <IconChevronLeft class="i-small" fill="rgb(var(--white))"/>
12
+ </button>
13
+ <button @click="$router.go(1)" class="bg-black radius-extra flex-center flex aspect-1x1 i-medium cursor-pointer hover-bg-dark pd-micro">
14
+ <IconChevronRight class="i-small" fill="rgb(var(--white))"/>
15
+ </button>
16
+ </div>
17
+
18
+ <h2 v-if="$route.meta.title" class="t-white">{{ $route.meta.title }}</h2>
19
+ </div>
20
+
21
+ <div class="music-search-bar flex-child-1 mn-l-medium mn-r-medium" v-if="$route.name !== 'music-search'">
22
+ <SearchForm @search="handleSearch" placeholder="Search music..." />
23
+ </div>
24
+
25
+ <div class="music-user-menu pos-relative">
26
+ <Button
27
+ v-if="isAuthenticated"
28
+ @click="showUserMenu = !showUserMenu"
29
+ class="bg-black radius-extra flex-v-center flex pd-thin hover-bg-dark"
30
+ :showLoader="false"
31
+ :showSucces="false"
32
+ >
33
+ <span v-if="user && user.profile" class="t-nowrap t-medium t-truncate w-max-10r mn-r-thin">{{ user.profile.name }}</span>
34
+ <IconProfile class="i-medium" fill="rgb(var(--white))"/>
35
+ </Button>
36
+
37
+ <!-- User dropdown menu -->
38
+ <Dropdown
39
+ v-if="showUserMenu"
40
+ class="pos-absolute pos-t-100 pos-r-0 mn-t-thin pd-small bg-dark radius-small z-index-5"
41
+ :align="'right'"
42
+ >
43
+ <ul class="w-max-15r">
44
+ <li class="mn-b-thin w-100">
45
+ <router-link :to="{ name: 'music-library' }" class="t-white pd-thin w-100 d-block hover-bg-dark-medium radius-small">
46
+ My Library
47
+ </router-link>
48
+ </li>
49
+ <li class="mn-b-thin w-100">
50
+ <router-link :to="{ name: 'music-upload' }" class="t-white pd-thin w-100 d-block hover-bg-dark-medium radius-small">
51
+ Upload Music
52
+ </router-link>
53
+ </li>
54
+ <li class="w-100">
55
+ <button @click="logout" class="t-white bg-transparent border-none w-100 t-left pd-thin hover-bg-dark-medium radius-small cursor-pointer">
56
+ Logout
57
+ </button>
58
+ </li>
59
+ </ul>
60
+ </Dropdown>
61
+
62
+ <Button
63
+ v-else
64
+ @click="login"
65
+ class="bg-main radius-extra pd-small t-white hover-scale-1"
66
+ :showLoader="false"
67
+ :showSucces="false"
68
+ >
69
+ Login
70
+ </Button>
71
+ </div>
72
+ </header>
73
+
74
+ <!-- Main Content Area -->
75
+ <main class="flex-child-1 o-y-scroll o-x-hidden bg-black-transp-95">
76
+ <div class="mn-small">
77
+ <router-view></router-view>
78
+ </div>
79
+ </main>
80
+
81
+ <!-- Music Player Fixed at Bottom -->
82
+ <MusicPlayer v-if="currentTrack" class="flex-child-shrink-0"/>
83
+ </div>
84
+ </div>
85
+ </template>
86
+
87
+ <script setup>
88
+ import { ref, computed, onMounted } from 'vue';
89
+ import { useRouter } from 'vue-router';
90
+ import MusicPlayer from '../player/MusicPlayer.vue';
91
+ import SearchForm from '../forms/SearchForm.vue';
92
+ import Button from '@martyrs/src/components/Button/Button.vue';
93
+ import Dropdown from '@martyrs/src/components/Dropdown/Dropdown.vue';
94
+
95
+ // Icons - Import from icons in the Martyrs framework
96
+ import IconChevronLeft from '@martyrs/src/modules/icons/navigation/IconChevronLeft.vue';
97
+ import IconChevronRight from '@martyrs/src/modules/icons/navigation/IconChevronRight.vue';
98
+ import IconProfile from '@martyrs/src/modules/icons/entities/IconProfile.vue';
99
+
100
+ // Import store modules
101
+ import { state as playerState } from '../../store/player.js';
102
+ import { state as authState, actions as authActions } from '@martyrs/src/modules/auth/views/store/auth.js';
103
+
104
+ const router = useRouter();
105
+
106
+ // UI state
107
+ const showUserMenu = ref(false);
108
+
109
+ // Auth computed properties
110
+ const isAuthenticated = computed(() => {
111
+ return authState.access.status === true;
112
+ });
113
+
114
+ const user = computed(() => {
115
+ return authState.user;
116
+ });
117
+
118
+ // Current track from player store
119
+ const currentTrack = computed(() => {
120
+ return playerState.currentTrack;
121
+ });
122
+
123
+ // Methods
124
+ const handleSearch = (query) => {
125
+ router.push({ name: 'music-search', query: { q: query } });
126
+ };
127
+
128
+ const login = () => {
129
+ router.push({ name: 'Sign In', query: { redirect: router.currentRoute.value.fullPath } });
130
+ };
131
+
132
+ const logout = async () => {
133
+ await authActions.logout();
134
+ showUserMenu.value = false;
135
+ router.push({ name: 'music-home' });
136
+ };
137
+ </script>
@@ -0,0 +1,25 @@
1
+ <!-- components/lists/AlbumList.vue -->
2
+ <template>
3
+ <div class="album-list">
4
+ <div v-if="albums.length === 0" class="empty-list t-center pd-medium">
5
+ <p class="t-grey">No albums found</p>
6
+ </div>
7
+
8
+ <div v-else class="album-grid cols-5 mobile:cols-2 gap-small">
9
+ <div v-for="album in albums" :key="album._id">
10
+ <AlbumCard :album="album" class="hover-scale-1 transition-cubic-in-out" />
11
+ </div>
12
+ </div>
13
+ </div>
14
+ </template>
15
+
16
+ <script setup>
17
+ import AlbumCard from '../cards/AlbumCard.vue';
18
+
19
+ const props = defineProps({
20
+ albums: {
21
+ type: Array,
22
+ required: true
23
+ }
24
+ });
25
+ </script>
@@ -0,0 +1,25 @@
1
+ <!-- components/lists/ArtistList.vue -->
2
+ <template>
3
+ <div class="artist-list">
4
+ <div v-if="artists.length === 0" class="empty-list t-center pd-medium">
5
+ <p class="t-grey">No artists found</p>
6
+ </div>
7
+
8
+ <div v-else class="artist-grid cols-6 mobile:cols-3 gap-small">
9
+ <div v-for="artist in artists" :key="artist._id">
10
+ <ArtistCard :artist="artist" class="hover-scale-1 transition-cubic-in-out" />
11
+ </div>
12
+ </div>
13
+ </div>
14
+ </template>
15
+
16
+ <script setup>
17
+ import ArtistCard from '../cards/ArtistCard.vue';
18
+
19
+ const props = defineProps({
20
+ artists: {
21
+ type: Array,
22
+ required: true
23
+ }
24
+ });
25
+ </script>
@@ -0,0 +1,25 @@
1
+ <!-- components/lists/PlaylistList.vue -->
2
+ <template>
3
+ <div class="playlist-list">
4
+ <div v-if="playlists.length === 0" class="empty-list t-center pd-medium">
5
+ <p class="t-grey">No playlists found</p>
6
+ </div>
7
+
8
+ <div v-else class="playlist-grid cols-5 mobile:cols-2 gap-small">
9
+ <div v-for="playlist in playlists" :key="playlist._id">
10
+ <PlaylistCard :playlist="playlist" class="hover-scale-1 transition-cubic-in-out" />
11
+ </div>
12
+ </div>
13
+ </div>
14
+ </template>
15
+
16
+ <script setup>
17
+ import PlaylistCard from '../cards/PlaylistCard.vue';
18
+
19
+ const props = defineProps({
20
+ playlists: {
21
+ type: Array,
22
+ required: true
23
+ }
24
+ });
25
+ </script>