@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,397 @@
1
+ <!-- components/pages/SearchResults.vue -->
2
+ <template>
3
+ <div class="search-results-page">
4
+ <div class="search-header mn-b-medium">
5
+ <h1 class="t-white mn-b-small">Search</h1>
6
+
7
+ <SearchForm
8
+ :initialQuery="searchQuery"
9
+ @search="handleSearch"
10
+ placeholder="What do you want to listen to?"
11
+ class="w-m-40r"
12
+ />
13
+
14
+ <div v-if="searchQuery" class="search-filters flex gap-small mn-t-medium">
15
+ <Button
16
+ v-for="filter in searchFilters"
17
+ :key="filter.id"
18
+ @click="setActiveFilter(filter.id)"
19
+ :class="[
20
+ filter.id === activeFilter ? 'bg-white t-black' : 'bg-dark-transp-50 t-white hover-bg-dark',
21
+ ]"
22
+ class="radius-extra pd-small"
23
+ :showLoader="false"
24
+ :showSucces="false"
25
+ >
26
+ {{ filter.label }}
27
+ </Button>
28
+ </div>
29
+ </div>
30
+
31
+ <div v-if="isLoading" class="search-loading">
32
+ <Loader />
33
+ </div>
34
+
35
+ <div v-else-if="searchError" class="search-error t-center pd-big">
36
+ <p class="t-fourth t-medium">{{ searchError }}</p>
37
+ </div>
38
+
39
+ <div v-else-if="!searchQuery" class="search-empty t-center pd-big">
40
+ <h2 class="t-white mn-b-small">Search for music</h2>
41
+ <p class="t-grey t-medium">Find your favorite songs, artists, albums, and playlists</p>
42
+ </div>
43
+
44
+ <div v-else-if="!hasResults" class="search-no-results t-center pd-big">
45
+ <h2 class="t-white mn-b-small">No results found for "{{ searchQuery }}"</h2>
46
+ <p class="t-grey t-medium">Please try different keywords or check your spelling</p>
47
+ </div>
48
+
49
+ <div v-else class="search-results">
50
+ <!-- Top Results Section -->
51
+ <section v-if="activeFilter === 'all'" class="search-section mn-b-medium">
52
+ <h2 class="t-white mn-b-small">Top Result</h2>
53
+
54
+ <div class="search-top-result bg-dark-transp-20 radius-medium p-medium">
55
+ <div v-if="topResult.type === 'artist'" class="top-result-artist pd-medium">
56
+ <div class="top-artist-photo mn-b-medium">
57
+ <Media
58
+ :url="topResult.item.photoUrl || '/assets/placeholder-artist.jpg'"
59
+ class="w-10r h-10r object-fit-cover radius-round"
60
+ />
61
+ </div>
62
+ <h3 class="t-white t-semi">{{ topResult.item.name }}</h3>
63
+ <p class="t-grey">Artist</p>
64
+ <Button
65
+ @click="playTopResult"
66
+ class="bg-main radius-round pd-small t-white mn-t-medium hover-scale-1"
67
+ :showLoader="false"
68
+ :showSucces="false"
69
+ >
70
+ PLAY
71
+ </Button>
72
+ </div>
73
+
74
+ <div v-else-if="topResult.type === 'album'" class="top-result-album pd-medium">
75
+ <div class="top-album-cover mn-b-medium">
76
+ <Media
77
+ :url="topResult.item.coverUrl || '/assets/placeholder-album.jpg'"
78
+ class="w-10r h-10r object-fit-cover radius-small"
79
+ />
80
+ </div>
81
+ <h3 class="t-white t-semi">{{ topResult.item.title }}</h3>
82
+ <p class="t-grey">Album • {{ getArtistName(topResult.item) }}</p>
83
+ <Button
84
+ @click="playTopResult"
85
+ class="bg-main radius-round pd-small t-white mn-t-medium hover-scale-1"
86
+ :showLoader="false"
87
+ :showSucces="false"
88
+ >
89
+ PLAY
90
+ </Button>
91
+ </div>
92
+
93
+ <div v-else-if="topResult.type === 'playlist'" class="top-result-playlist pd-medium">
94
+ <div class="top-playlist-cover mn-b-medium">
95
+ <Media
96
+ :url="topResult.item.coverUrl || '/assets/placeholder-playlist.jpg'"
97
+ class="w-10r h-10r object-fit-cover radius-small"
98
+ />
99
+ </div>
100
+ <h3 class="t-white t-semi">{{ topResult.item.title }}</h3>
101
+ <p class="t-grey">Playlist • {{ getPlaylistOwner(topResult.item) }}</p>
102
+ <Button
103
+ @click="playTopResult"
104
+ class="bg-main radius-round pd-small t-white mn-t-medium hover-scale-1"
105
+ :showLoader="false"
106
+ :showSucces="false"
107
+ >
108
+ PLAY
109
+ </Button>
110
+ </div>
111
+ </div>
112
+ </section>
113
+
114
+ <!-- Songs Results -->
115
+ <section v-if="activeFilter === 'all' || activeFilter === 'tracks'" class="search-section mn-b-medium">
116
+ <h2 class="t-white mn-b-small">Songs</h2>
117
+ <TrackList
118
+ :tracks="trackResults"
119
+ :showAlbum="true"
120
+ :showCover="true"
121
+ class="bg-dark-transp-10 radius-medium o-hidden"
122
+ />
123
+
124
+ <Button
125
+ v-if="trackResults.length > 4 && activeFilter === 'all'"
126
+ @click="setActiveFilter('tracks')"
127
+ class="t-main bg-transparent border-none t-center w-100 mn-t-small hover-bg-dark-transp-10 pd-thin"
128
+ :showLoader="false"
129
+ :showSucces="false"
130
+ >
131
+ See all songs
132
+ </Button>
133
+ </section>
134
+
135
+ <!-- Artists Results -->
136
+ <section v-if="activeFilter === 'all' || activeFilter === 'artists'" class="search-section mn-b-medium">
137
+ <h2 class="t-white mn-b-small">Artists</h2>
138
+
139
+ <div class="artists-grid cols-6 mobile:cols-3 gap-small">
140
+ <div v-for="artist in artistResults.slice(0, activeFilter === 'all' ? 6 : artistResults.length)" :key="artist._id">
141
+ <ArtistCard :artist="artist" />
142
+ </div>
143
+ </div>
144
+
145
+ <Button
146
+ v-if="artistResults.length > 6 && activeFilter === 'all'"
147
+ @click="setActiveFilter('artists')"
148
+ class="t-main bg-transparent border-none t-center w-100 mn-t-small hover-bg-dark-transp-10 pd-thin"
149
+ :showLoader="false"
150
+ :showSucces="false"
151
+ >
152
+ See all artists
153
+ </Button>
154
+ </section>
155
+
156
+ <!-- Albums Results -->
157
+ <section v-if="activeFilter === 'all' || activeFilter === 'albums'" class="search-section mn-b-medium">
158
+ <h2 class="t-white mn-b-small">Albums</h2>
159
+
160
+ <div class="albums-grid cols-5 mobile:cols-2 gap-small">
161
+ <div v-for="album in albumResults.slice(0, activeFilter === 'all' ? 5 : albumResults.length)" :key="album._id">
162
+ <AlbumCard :album="album" />
163
+ </div>
164
+ </div>
165
+
166
+ <Button
167
+ v-if="albumResults.length > 5 && activeFilter === 'all'"
168
+ @click="setActiveFilter('albums')"
169
+ class="t-main bg-transparent border-none t-center w-100 mn-t-small hover-bg-dark-transp-10 pd-thin"
170
+ :showLoader="false"
171
+ :showSucces="false"
172
+ >
173
+ See all albums
174
+ </Button>
175
+ </section>
176
+
177
+ <!-- Playlists Results -->
178
+ <section v-if="activeFilter === 'all' || activeFilter === 'playlists'" class="search-section mn-b-medium">
179
+ <h2 class="t-white mn-b-small">Playlists</h2>
180
+
181
+ <div class="playlists-grid cols-5 mobile:cols-2 gap-small">
182
+ <div v-for="playlist in playlistResults.slice(0, activeFilter === 'all' ? 5 : playlistResults.length)" :key="playlist._id">
183
+ <PlaylistCard :playlist="playlist" />
184
+ </div>
185
+ </div>
186
+
187
+ <Button
188
+ v-if="playlistResults.length > 5 && activeFilter === 'all'"
189
+ @click="setActiveFilter('playlists')"
190
+ class="t-main bg-transparent border-none t-center w-100 mn-t-small hover-bg-dark-transp-10 pd-thin"
191
+ :showLoader="false"
192
+ :showSucces="false"
193
+ >
194
+ See all playlists
195
+ </Button>
196
+ </section>
197
+
198
+ <!-- Genres Results -->
199
+ <section v-if="(activeFilter === 'all' || activeFilter === 'genres') && genreResults.length > 0" class="search-section">
200
+ <h2 class="t-white mn-b-small">Genres</h2>
201
+
202
+ <div class="genres-grid cols-4 mobile:cols-2 gap-small">
203
+ <router-link
204
+ v-for="genre in genreResults.slice(0, activeFilter === 'all' ? 4 : genreResults.length)"
205
+ :key="genre._id"
206
+ :to="{ name: 'genre-detail', params: { url: genre.url } }"
207
+ class="genre-card bg-gradient-color pd-medium radius-medium t-center hover-scale-1 transition-cubic-in-out"
208
+ :style="{
209
+ '--gradient-color': getRandomGradient()
210
+ }"
211
+ >
212
+ <h3 class="t-white">{{ genre.name }}</h3>
213
+ </router-link>
214
+ </div>
215
+
216
+ <Button
217
+ v-if="genreResults.length > 4 && activeFilter === 'all'"
218
+ @click="setActiveFilter('genres')"
219
+ class="t-main bg-transparent border-none t-center w-100 mn-t-small hover-bg-dark-transp-10 pd-thin"
220
+ :showLoader="false"
221
+ :showSucces="false"
222
+ >
223
+ See all genres
224
+ </Button>
225
+ </section>
226
+ </div>
227
+ </div>
228
+ </template>
229
+
230
+ <script setup>
231
+ import { ref, computed, onMounted, watch } from 'vue';
232
+ import { useRoute, useRouter } from 'vue-router';
233
+ import SearchForm from '../forms/SearchForm.vue';
234
+ import TrackList from '../lists/TrackList.vue';
235
+ import AlbumCard from '../cards/AlbumCard.vue';
236
+ import PlaylistCard from '../cards/PlaylistCard.vue';
237
+ import ArtistCard from '../cards/ArtistCard.vue';
238
+ import Button from '@martyrs/src/components/Button/Button.vue';
239
+ import Loader from '@martyrs/src/components/Loader/Loader.vue';
240
+ import Media from '@martyrs/src/components/Media/Media.vue';
241
+
242
+ // Import search store
243
+ import { state as searchState, actions as searchActions, computed as searchComputed } from '../../store/search.js';
244
+ import { actions as playerActions } from '../../store/player.js';
245
+
246
+ const route = useRoute();
247
+ const router = useRouter();
248
+
249
+ // State
250
+ const searchQuery = ref('');
251
+ const activeFilter = ref('all');
252
+
253
+ // Array of search filters
254
+ const searchFilters = [
255
+ { id: 'all', label: 'All' },
256
+ { id: 'tracks', label: 'Songs' },
257
+ { id: 'artists', label: 'Artists' },
258
+ { id: 'albums', label: 'Albums' },
259
+ { id: 'playlists', label: 'Playlists' },
260
+ { id: 'genres', label: 'Genres' }
261
+ ];
262
+
263
+ // Computed properties
264
+ const isLoading = computed(() => searchState.isLoading);
265
+ const searchError = computed(() => searchState.error);
266
+ const hasResults = computed(() => searchComputed.hasResults());
267
+
268
+ const trackResults = computed(() => searchState.results.tracks || []);
269
+ const artistResults = computed(() => searchState.results.artists || []);
270
+ const albumResults = computed(() => searchState.results.albums || []);
271
+ const playlistResults = computed(() => searchState.results.playlists || []);
272
+ const genreResults = computed(() => searchState.results.genres || []);
273
+
274
+ // Top result determination
275
+ const topResult = computed(() => {
276
+ // Determine which result to show as top result based on relevance
277
+ if (artistResults.value.length > 0) {
278
+ return { type: 'artist', item: artistResults.value[0] };
279
+ } else if (albumResults.value.length > 0) {
280
+ return { type: 'album', item: albumResults.value[0] };
281
+ } else if (playlistResults.value.length > 0) {
282
+ return { type: 'playlist', item: playlistResults.value[0] };
283
+ } else if (trackResults.value.length > 0) {
284
+ return { type: 'track', item: trackResults.value[0] };
285
+ }
286
+ return null;
287
+ });
288
+
289
+ // Methods
290
+ const handleSearch = (query) => {
291
+ searchQuery.value = query;
292
+
293
+ // Update URL without reloading the page
294
+ router.push({
295
+ name: 'music-search',
296
+ query: { q: query },
297
+ replace: true
298
+ });
299
+
300
+ // Perform search
301
+ searchActions.search(query);
302
+ };
303
+
304
+ const setActiveFilter = (filter) => {
305
+ activeFilter.value = filter;
306
+ searchActions.setFilter(filter);
307
+ };
308
+
309
+ const playTopResult = () => {
310
+ if (!topResult.value) return;
311
+
312
+ const { type, item } = topResult.value;
313
+
314
+ switch (type) {
315
+ case 'track':
316
+ playerActions.playTrack(item);
317
+ break;
318
+ case 'album':
319
+ // Navigate to album page
320
+ router.push({ name: 'album-detail', params: { url: item.url } });
321
+ break;
322
+ case 'playlist':
323
+ // Navigate to playlist page
324
+ router.push({ name: 'playlist-detail', params: { url: item.url } });
325
+ break;
326
+ case 'artist':
327
+ // Navigate to artist page
328
+ router.push({ name: 'artist-detail', params: { url: item.url } });
329
+ break;
330
+ }
331
+ };
332
+
333
+ const getArtistName = (item) => {
334
+ if (!item) return 'Unknown Artist';
335
+
336
+ if (item.artist) {
337
+ if (typeof item.artist === 'object') {
338
+ return item.artist.name || 'Unknown Artist';
339
+ }
340
+ return item.artist;
341
+ }
342
+ return 'Unknown Artist';
343
+ };
344
+
345
+ const getPlaylistOwner = (playlist) => {
346
+ if (!playlist) return 'Unknown';
347
+
348
+ if (playlist.owner?.target) {
349
+ if (typeof playlist.owner.target === 'object') {
350
+ if (playlist.owner.target.profile?.name) {
351
+ return playlist.owner.target.profile.name;
352
+ }
353
+ return playlist.owner.target.name || 'Unknown';
354
+ }
355
+ }
356
+ return 'Unknown';
357
+ };
358
+
359
+ // Generate random gradient for genre cards
360
+ const getRandomGradient = () => {
361
+ const colors = [
362
+ 'linear-gradient(135deg, #1DB954, #1ED760)',
363
+ 'linear-gradient(135deg, #FF6B6B, #FFE66D)',
364
+ 'linear-gradient(135deg, #4776E6, #8E54E9)',
365
+ 'linear-gradient(135deg, #FF8008, #FFC837)',
366
+ 'linear-gradient(135deg, #7F00FF, #E100FF)',
367
+ 'linear-gradient(135deg, #11998E, #38EF7D)'
368
+ ];
369
+
370
+ return colors[Math.floor(Math.random() * colors.length)];
371
+ };
372
+
373
+ // Watch for URL query parameter changes
374
+ onMounted(() => {
375
+ const query = route.query.q;
376
+ if (query) {
377
+ searchQuery.value = query;
378
+ searchActions.search(query);
379
+ }
380
+ });
381
+
382
+ watch(() => route.query.q, (newQuery) => {
383
+ if (newQuery && newQuery !== searchQuery.value) {
384
+ searchQuery.value = newQuery;
385
+ searchActions.search(newQuery);
386
+ } else if (!newQuery) {
387
+ searchQuery.value = '';
388
+ searchActions.clearSearch();
389
+ }
390
+ });
391
+ </script>
392
+
393
+ <style scoped>
394
+ .bg-gradient-color {
395
+ background: var(--gradient-color, linear-gradient(135deg, #1DB954, #1ED760));
396
+ }
397
+ </style>
@@ -0,0 +1,143 @@
1
+ <!-- components/pages/TrackDetail.vue -->
2
+ <template>
3
+ <div class="track-detail-page">
4
+ <!-- Loading -->
5
+ <div v-if="isLoading" class="w-100 h-25r flex-center flex">
6
+ <Loader />
7
+ </div>
8
+
9
+ <!-- Not Found -->
10
+ <div v-else-if="!track" class="t-center pd-big">
11
+ <h2 class="t-white">Track not found</h2>
12
+ <p class="t-grey t-medium">The track you're looking for doesn't exist or has been removed.</p>
13
+ </div>
14
+
15
+ <!-- Track Content -->
16
+ <div v-else>
17
+ <!-- ... [HEADER + ACTIONS as you posted] -->
18
+
19
+ <!-- Track Lyrics -->
20
+ <div v-if="track.lyrics" class="track-lyrics mn-b-medium pd-medium bg-dark-transp-10 radius-medium">
21
+ <h2 class="t-white mn-b-small">Lyrics</h2>
22
+ <pre class="t-grey">{{ track.lyrics }}</pre>
23
+ </div>
24
+
25
+ <!-- Related Tracks -->
26
+ <section v-if="relatedTracks.length" class="related-tracks mn-b-medium">
27
+ <h2 class="t-white mn-b-small">Related Tracks</h2>
28
+ <TrackList
29
+ :tracks="relatedTracks"
30
+ :showAlbum="true"
31
+ :showCover="true"
32
+ class="bg-dark-transp-10 radius-medium o-hidden"
33
+ />
34
+ </section>
35
+
36
+ <!-- Add to Playlist Modal -->
37
+ <!-- <Popup
38
+ v-if="showAddToPlaylistModal"
39
+ @close-popup="showAddToPlaylistModal = false"
40
+ class="bg-dark pd-small w-m-25r radius-medium t-white"
41
+ >
42
+ <h3 class="mn-b-medium">Add to Playlist</h3>
43
+ <PlaylistSelector
44
+ :trackId="track._id"
45
+ @added="showAddToPlaylistModal = false"
46
+ />
47
+ </Popup> -->
48
+ </div>
49
+ </div>
50
+ </template>
51
+
52
+ <script setup>
53
+ import { ref, computed, onMounted, watch } from 'vue';
54
+ import { useRoute, useRouter } from 'vue-router';
55
+ import Button from '@martyrs/src/components/Button/Button.vue';
56
+ import Loader from '@martyrs/src/components/Loader/Loader.vue';
57
+ import Media from '@martyrs/src/components/Media/Media.vue';
58
+ import Dropdown from '@martyrs/src/components/Dropdown/Dropdown.vue';
59
+ import Popup from '@martyrs/src/components/Popup/Popup.vue';
60
+ import IconPlay from '@martyrs/src/modules/icons/navigation/IconPlay.vue';
61
+ import IconHeart from '@martyrs/src/modules/icons/navigation/IconHeart.vue';
62
+ import IconEllipsis from '@martyrs/src/modules/icons/navigation/IconEllipsis.vue';
63
+ import TrackList from '../lists/TrackList.vue';
64
+ // import PlaylistSelector from '../forms/PlaylistSelector.vue';
65
+
66
+ import { state as tracksState, actions as tracksActions } from '../../store/tracks.js';
67
+ import { actions as playerActions } from '../../store/player.js';
68
+ import { state as authState } from '@martyrs/src/modules/auth/views/store/auth.js';
69
+
70
+ const route = useRoute();
71
+ const router = useRouter();
72
+
73
+ const isLoading = ref(true);
74
+ const showDropdown = ref(false);
75
+ const showAddToPlaylistModal = ref(false);
76
+ const isFavorite = ref(false);
77
+
78
+ const track = computed(() => tracksState.currentTrack);
79
+ const relatedTracks = computed(() => tracksState.relatedTracks);
80
+
81
+ const isOwner = computed(() => {
82
+ return track.value?.owner?.target === authState.user?._id;
83
+ });
84
+
85
+ const getArtistName = (track) => {
86
+ if (!track || !track.artist) return 'Unknown';
87
+ return typeof track.artist === 'object' ? track.artist.name : 'Unknown';
88
+ };
89
+
90
+ const formatReleaseYear = (date) => {
91
+ return date ? new Date(date).getFullYear() : 'Unknown';
92
+ };
93
+
94
+ const playTrack = () => {
95
+ if (track.value) {
96
+ playerActions.setQueue([track.value]);
97
+ }
98
+ };
99
+
100
+ const toggleFavorite = () => {
101
+ isFavorite.value = !isFavorite.value;
102
+ // You can implement actual saving here
103
+ };
104
+
105
+ const addToQueue = () => {
106
+ if (track.value) {
107
+ playerActions.addToQueue(track.value);
108
+ }
109
+ };
110
+
111
+ const editTrack = () => {
112
+ router.push({ name: 'music-upload', query: { edit: track.value._id } });
113
+ };
114
+
115
+ const deleteTrack = async () => {
116
+ try {
117
+ await tracksActions.deleteTrack(track.value._id);
118
+ router.push({ name: 'music-library' });
119
+ } catch (error) {
120
+ console.error('Failed to delete track:', error);
121
+ }
122
+ };
123
+
124
+ const copyLink = () => {
125
+ navigator.clipboard.writeText(window.location.href);
126
+ showDropdown.value = false;
127
+ };
128
+
129
+ const fetchTrackData = async () => {
130
+ isLoading.value = true;
131
+ try {
132
+ await tracksActions.fetchTrackByUrl(route.params.url);
133
+ await tracksActions.fetchRelatedTracks(route.params.url);
134
+ } catch (error) {
135
+ console.error('Error loading track:', error);
136
+ } finally {
137
+ isLoading.value = false;
138
+ }
139
+ };
140
+
141
+ onMounted(fetchTrackData);
142
+ watch(() => route.params.url, fetchTrackData);
143
+ </script>