@ozdao/martyrs 0.2.494 → 0.2.496

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 (170) hide show
  1. package/dist/_virtual/index.cjs +4 -4
  2. package/dist/_virtual/index.js +4 -4
  3. package/dist/_virtual/index2.cjs +4 -4
  4. package/dist/_virtual/index2.js +4 -4
  5. package/dist/builder.cjs +41 -42
  6. package/dist/builder.js +43 -44
  7. package/dist/globals.server.cjs +13 -2
  8. package/dist/globals.server.js +13 -2
  9. package/dist/martyrs/src/components/Block/Block.vue.cjs +1 -1
  10. package/dist/martyrs/src/components/Block/Block.vue.js +1 -1
  11. package/dist/martyrs/src/components/Chips/{Chips.vue.cjs → Chips.vue2.cjs} +2 -2
  12. package/dist/martyrs/src/components/Chips/Chips.vue2.cjs.map +1 -0
  13. package/dist/martyrs/src/components/Chips/{Chips.vue.js → Chips.vue2.js} +2 -2
  14. package/dist/martyrs/src/components/Chips/Chips.vue2.js.map +1 -0
  15. package/dist/martyrs/src/components/Dropdown/{Dropdown.vue.cjs → Dropdown.vue2.cjs} +2 -2
  16. package/dist/martyrs/src/components/Dropdown/Dropdown.vue2.cjs.map +1 -0
  17. package/dist/martyrs/src/components/Dropdown/{Dropdown.vue.js → Dropdown.vue2.js} +2 -2
  18. package/dist/martyrs/src/components/Dropdown/{Dropdown.vue.cjs.map → Dropdown.vue2.js.map} +1 -1
  19. package/dist/martyrs/src/components/Feed/Feed.vue.cjs +1 -1
  20. package/dist/martyrs/src/components/Feed/Feed.vue.js +1 -1
  21. package/dist/martyrs/src/components/FieldTags/FieldTags.vue.cjs +1 -1
  22. package/dist/martyrs/src/components/FieldTags/FieldTags.vue.js +1 -1
  23. package/dist/martyrs/src/components/Menu/{Menu.vue2.cjs → Menu.vue.cjs} +2 -2
  24. package/dist/martyrs/src/components/Menu/Menu.vue.cjs.map +1 -0
  25. package/dist/martyrs/src/components/Menu/{Menu.vue2.js → Menu.vue.js} +2 -2
  26. package/dist/martyrs/src/components/Menu/Menu.vue.js.map +1 -0
  27. package/dist/martyrs/src/components/Tooltip/{Tooltip.vue2.cjs → Tooltip.vue.cjs} +2 -2
  28. package/dist/martyrs/src/components/Tooltip/{Tooltip.vue2.js.map → Tooltip.vue.cjs.map} +1 -1
  29. package/dist/martyrs/src/components/Tooltip/{Tooltip.vue2.js → Tooltip.vue.js} +2 -2
  30. package/dist/martyrs/src/components/Tooltip/Tooltip.vue.js.map +1 -0
  31. package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.cjs +2 -2
  32. package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.js +2 -2
  33. package/dist/martyrs/src/modules/community/components/blocks/CardBlogpost.vue.cjs +1 -1
  34. package/dist/martyrs/src/modules/community/components/blocks/CardBlogpost.vue.js +1 -1
  35. package/dist/martyrs/src/modules/community/components/pages/BlogPost.vue.cjs +1 -1
  36. package/dist/martyrs/src/modules/community/components/pages/BlogPost.vue.js +1 -1
  37. package/dist/martyrs/src/modules/community/components/pages/CreateBlogPost.vue.cjs +1 -1
  38. package/dist/martyrs/src/modules/community/components/pages/CreateBlogPost.vue.js +1 -1
  39. package/dist/martyrs/src/modules/events/components/blocks/CardEvent.vue.cjs +1 -1
  40. package/dist/martyrs/src/modules/events/components/blocks/CardEvent.vue.js +1 -1
  41. package/dist/martyrs/src/modules/events/components/pages/Event.vue.cjs +2 -2
  42. package/dist/martyrs/src/modules/events/components/pages/Event.vue.js +2 -2
  43. package/dist/martyrs/src/modules/gallery/components/sections/BackofficeGallery.vue.cjs +1 -1
  44. package/dist/martyrs/src/modules/gallery/components/sections/BackofficeGallery.vue.js +1 -1
  45. package/dist/martyrs/src/modules/globals/globals.client.cjs +1 -1
  46. package/dist/martyrs/src/modules/globals/globals.client.cjs.map +1 -1
  47. package/dist/martyrs/src/modules/globals/globals.client.js +1 -1
  48. package/dist/martyrs/src/modules/globals/globals.client.js.map +1 -1
  49. package/dist/martyrs/src/modules/globals/views/classes/globals.i18n.cjs +1 -1
  50. package/dist/martyrs/src/modules/globals/views/classes/globals.i18n.js +1 -1
  51. package/dist/martyrs/src/modules/globals/views/components/blocks/CardHeader.vue.cjs +2 -2
  52. package/dist/martyrs/src/modules/globals/views/components/blocks/CardHeader.vue.js +2 -2
  53. package/dist/martyrs/src/modules/globals/views/components/layouts/Client.vue.cjs +28 -13
  54. package/dist/martyrs/src/modules/globals/views/components/layouts/Client.vue.cjs.map +1 -1
  55. package/dist/martyrs/src/modules/globals/views/components/layouts/Client.vue.js +28 -13
  56. package/dist/martyrs/src/modules/globals/views/components/layouts/Client.vue.js.map +1 -1
  57. package/dist/martyrs/src/modules/globals/views/components/partials/Navigation.vue.cjs +1 -1
  58. package/dist/martyrs/src/modules/globals/views/components/partials/Navigation.vue.js +1 -1
  59. package/dist/martyrs/src/modules/globals/views/router/scrollBehavior.cjs +1 -1
  60. package/dist/martyrs/src/modules/globals/views/router/scrollBehavior.cjs.map +1 -1
  61. package/dist/martyrs/src/modules/globals/views/router/scrollBehavior.js +1 -1
  62. package/dist/martyrs/src/modules/globals/views/router/scrollBehavior.js.map +1 -1
  63. package/dist/martyrs/src/modules/inventory/components/pages/Inventory.vue.cjs +2 -2
  64. package/dist/martyrs/src/modules/inventory/components/pages/Inventory.vue.js +1 -1
  65. package/dist/martyrs/src/modules/inventory/components/pages/InventoryEdit.vue.cjs +1 -1
  66. package/dist/martyrs/src/modules/inventory/components/pages/InventoryEdit.vue.js +1 -1
  67. package/dist/martyrs/src/modules/music/components/cards/ArtistCardSmall.vue.cjs +95 -0
  68. package/dist/martyrs/src/modules/music/components/cards/ArtistCardSmall.vue.cjs.map +1 -0
  69. package/dist/martyrs/src/modules/music/components/cards/ArtistCardSmall.vue.js +95 -0
  70. package/dist/martyrs/src/modules/music/components/cards/ArtistCardSmall.vue.js.map +1 -0
  71. package/dist/martyrs/src/modules/music/components/cards/TrackListCard.vue.cjs +1 -1
  72. package/dist/martyrs/src/modules/music/components/cards/TrackListCard.vue.cjs.map +1 -1
  73. package/dist/martyrs/src/modules/music/components/cards/TrackListCard.vue.js +1 -1
  74. package/dist/martyrs/src/modules/music/components/cards/TrackListCard.vue.js.map +1 -1
  75. package/dist/martyrs/src/modules/music/components/forms/SearchForm.vue.cjs +2 -2
  76. package/dist/martyrs/src/modules/music/components/forms/SearchForm.vue.cjs.map +1 -1
  77. package/dist/martyrs/src/modules/music/components/forms/SearchForm.vue.js +2 -2
  78. package/dist/martyrs/src/modules/music/components/forms/SearchForm.vue.js.map +1 -1
  79. package/dist/martyrs/src/modules/music/components/pages/Album.vue.cjs +127 -175
  80. package/dist/martyrs/src/modules/music/components/pages/Album.vue.cjs.map +1 -1
  81. package/dist/martyrs/src/modules/music/components/pages/Album.vue.js +136 -184
  82. package/dist/martyrs/src/modules/music/components/pages/Album.vue.js.map +1 -1
  83. package/dist/martyrs/src/modules/music/components/pages/Artist.vue.cjs +5 -5
  84. package/dist/martyrs/src/modules/music/components/pages/Artist.vue.cjs.map +1 -1
  85. package/dist/martyrs/src/modules/music/components/pages/Artist.vue.js +5 -5
  86. package/dist/martyrs/src/modules/music/components/pages/Artist.vue.js.map +1 -1
  87. package/dist/martyrs/src/modules/music/components/pages/MusicLibrary.vue.cjs +5 -5
  88. package/dist/martyrs/src/modules/music/components/pages/MusicLibrary.vue.cjs.map +1 -1
  89. package/dist/martyrs/src/modules/music/components/pages/MusicLibrary.vue.js +5 -5
  90. package/dist/martyrs/src/modules/music/components/pages/MusicLibrary.vue.js.map +1 -1
  91. package/dist/martyrs/src/modules/music/components/pages/Playlist.vue.cjs +97 -144
  92. package/dist/martyrs/src/modules/music/components/pages/Playlist.vue.cjs.map +1 -1
  93. package/dist/martyrs/src/modules/music/components/pages/Playlist.vue.js +113 -160
  94. package/dist/martyrs/src/modules/music/components/pages/Playlist.vue.js.map +1 -1
  95. package/dist/martyrs/src/modules/music/components/pages/SearchResults.vue.cjs +7 -7
  96. package/dist/martyrs/src/modules/music/components/pages/SearchResults.vue.cjs.map +1 -1
  97. package/dist/martyrs/src/modules/music/components/pages/SearchResults.vue.js +7 -7
  98. package/dist/martyrs/src/modules/music/components/pages/SearchResults.vue.js.map +1 -1
  99. package/dist/martyrs/src/modules/music/components/pages/Track.vue.cjs +164 -170
  100. package/dist/martyrs/src/modules/music/components/pages/Track.vue.cjs.map +1 -1
  101. package/dist/martyrs/src/modules/music/components/pages/Track.vue.js +185 -191
  102. package/dist/martyrs/src/modules/music/components/pages/Track.vue.js.map +1 -1
  103. package/dist/martyrs/src/modules/music/music.client.cjs.map +1 -1
  104. package/dist/martyrs/src/modules/music/music.client.js.map +1 -1
  105. package/dist/martyrs/src/modules/music/router/music.cjs +2 -2
  106. package/dist/martyrs/src/modules/music/router/music.js +2 -2
  107. package/dist/martyrs/src/modules/notifications/notifications.client.cjs +1 -1
  108. package/dist/martyrs/src/modules/notifications/notifications.client.cjs.map +1 -1
  109. package/dist/martyrs/src/modules/notifications/notifications.client.js +1 -1
  110. package/dist/martyrs/src/modules/notifications/notifications.client.js.map +1 -1
  111. package/dist/martyrs/src/modules/orders/components/blocks/CardOrderUser.vue.cjs +1 -1
  112. package/dist/martyrs/src/modules/orders/components/blocks/CardOrderUser.vue.js +1 -1
  113. package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.cjs +1 -1
  114. package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.js +1 -1
  115. package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.cjs +1 -1
  116. package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.js +1 -1
  117. package/dist/martyrs/src/modules/organizations/components/blocks/CardOrganization.vue.cjs +1 -1
  118. package/dist/martyrs/src/modules/organizations/components/blocks/CardOrganization.vue.js +1 -1
  119. package/dist/martyrs/src/modules/organizations/components/pages/Members.vue.cjs +2 -2
  120. package/dist/martyrs/src/modules/organizations/components/pages/Members.vue.js +2 -2
  121. package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.cjs +1 -1
  122. package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.js +1 -1
  123. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationBackoffice.vue.cjs +1 -1
  124. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationBackoffice.vue.js +1 -1
  125. package/dist/martyrs/src/modules/organizations/components/sections/DetailsTabSection.vue.cjs +2 -2
  126. package/dist/martyrs/src/modules/organizations/components/sections/DetailsTabSection.vue.js +2 -2
  127. package/dist/martyrs/src/modules/organizations/router/organizations.cjs +1 -1
  128. package/dist/martyrs/src/modules/organizations/router/organizations.js +1 -1
  129. package/dist/martyrs/src/modules/pages/views/components/pages/PageEdit.vue.cjs +1 -1
  130. package/dist/martyrs/src/modules/pages/views/components/pages/PageEdit.vue.js +1 -1
  131. package/dist/martyrs/src/modules/products/components/blocks/ProductDiscounts.vue.cjs +2 -2
  132. package/dist/martyrs/src/modules/products/components/blocks/ProductDiscounts.vue.js +2 -2
  133. package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.cjs +1 -1
  134. package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.js +1 -1
  135. package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttToolbar.vue.cjs +1 -1
  136. package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttToolbar.vue.js +1 -1
  137. package/dist/martyrs/src/modules/spots/components/blocks/CardSpot.vue.cjs +1 -1
  138. package/dist/martyrs/src/modules/spots/components/blocks/CardSpot.vue.js +1 -1
  139. package/dist/martyrs/src/modules/spots/components/layouts/Spots.vue.cjs +1 -1
  140. package/dist/martyrs/src/modules/spots/components/layouts/Spots.vue.js +1 -1
  141. package/dist/martyrs/src/modules/wallet/views/components/pages/Wallet.vue.cjs +3 -3
  142. package/dist/martyrs/src/modules/wallet/views/components/pages/Wallet.vue.js +3 -3
  143. package/dist/martyrs.css +1 -1
  144. package/dist/style.css +18 -5
  145. package/package.json +1 -1
  146. package/src/builder/rspack/rspack.config.ssr.client.js +40 -40
  147. package/src/modules/globals/controllers/classes/globals.websocket.js +11 -2
  148. package/src/modules/globals/globals.client.js +1 -2
  149. package/src/modules/globals/views/components/layouts/Client.vue +13 -11
  150. package/src/modules/globals/views/router/scrollBehavior.js +1 -1
  151. package/src/modules/music/README.md +2 -0
  152. package/src/modules/music/components/SidebarMusic.vue +7 -7
  153. package/src/modules/music/components/cards/ArtistCardSmall.vue +92 -0
  154. package/src/modules/music/components/cards/TrackListCard.vue +1 -1
  155. package/src/modules/music/components/forms/SearchForm.vue +1 -1
  156. package/src/modules/music/components/pages/Album.vue +44 -83
  157. package/src/modules/music/components/pages/Artist.vue +5 -5
  158. package/src/modules/music/components/pages/MusicLibrary.vue +5 -5
  159. package/src/modules/music/components/pages/Playlist.vue +35 -53
  160. package/src/modules/music/components/pages/SearchResults.vue +6 -6
  161. package/src/modules/music/components/pages/Track.vue +66 -87
  162. package/src/modules/music/music.client.js +1 -1
  163. package/src/modules/notifications/notifications.client.js +1 -1
  164. package/src/styles/base/all.scss +1 -0
  165. package/dist/martyrs/src/components/Chips/Chips.vue.cjs.map +0 -1
  166. package/dist/martyrs/src/components/Chips/Chips.vue.js.map +0 -1
  167. package/dist/martyrs/src/components/Dropdown/Dropdown.vue.js.map +0 -1
  168. package/dist/martyrs/src/components/Menu/Menu.vue2.cjs.map +0 -1
  169. package/dist/martyrs/src/components/Menu/Menu.vue2.js.map +0 -1
  170. package/dist/martyrs/src/components/Tooltip/Tooltip.vue2.cjs.map +0 -1
@@ -17,22 +17,23 @@
17
17
  <!-- Left Column - Cover & Stats -->
18
18
  <div class="pos-sticky pos-t-0 mobile:pos-relative track-cover-section">
19
19
  <!-- Cover with Play Overlay -->
20
- <div class="cover-container relative mn-b-medium radius-big overflow-hidden shadow-big">
20
+ <div class="cover-container pos-relative mn-b-medium radius-big o-hidden">
21
21
  <Media
22
22
  :url="track.coverUrl || (track.album && track.album.coverUrl) || '/logo/logo-placeholder.jpg'"
23
23
  :alt="track.title"
24
24
  class="aspect-1x1 w-100 radius-medium o-hidden"
25
25
  />
26
- <!-- <div class="cover-overlay absolute inset-0 bg-black-transp-40 flex-center opacity-0 hover-opacity-100 transition">
26
+ <div class="cover-overlay w-100 h-100 pos-absolute pos-t-0 pos-r-0 bg-black-transp-40 flex flex-center">
27
27
  <Button
28
28
  @click="playTrack"
29
29
  color="white"
30
30
  size="big"
31
- class="w-5r h-5r radius-full shadow-big hover-scale-110"
31
+ class="w-5r h-5r radius-big bg-main shadow-big hover-scale-110"
32
32
  >
33
- <IconPlay class="w-2r h-2r" />
33
+ <IconPlay v-if="!isPlaying" fill="rgb(var(--white))" class="i-medium" />
34
+ <IconPause v-else fill="rgb(var(--white))" class="i-medium" />
34
35
  </Button>
35
- </div> -->
36
+ </div>
36
37
  </div>
37
38
 
38
39
 
@@ -54,8 +55,8 @@
54
55
  <div class="track-details-section">
55
56
  <!-- Track Type Badge -->
56
57
  <div class="flex items-center gap-small mn-b-small">
57
- <span class="badge bg-primary-transp-20 t-primary pd-thin-big radius-small t-small t-uppercase">Single</span>
58
- <span v-if="track.isExplicit" class="badge bg-danger-transp-20 t-danger pd-thin-big radius-small t-small">Explicit</span>
58
+ <span class="bg-light t-medium pd-thin radius-thin uppercase t-small t-uppercase">Single</span>
59
+ <span class="bg-light t-medium pd-thin radius-thin uppercase t-small t-uppercase">Explicit</span>
59
60
  </div>
60
61
 
61
62
  <!-- Track Title -->
@@ -66,31 +67,34 @@
66
67
  @click="playTrack"
67
68
  color="primary"
68
69
  size="medium"
69
- class="flex-1 flex-center gap-thin"
70
+ class="flex-1 t-white bg-black radius-thin flex-center gap-thin"
70
71
  >
71
- <IconPlay class="w-1r h-1r" />
72
- Play
72
+ <IconPlay v-if="!isPlaying" fill="rgb(var(--white))" class="i-medium" />
73
+ <IconPause v-else fill="rgb(var(--white))" class="i-medium" />
74
+ {{ !isPlaying ? 'Play' : 'Pause'}}
73
75
  </Button>
74
-
76
+
75
77
  <Button
76
- @click="toggleFavorite"
77
- :color="isFavorite ? 'danger' : 'transp'"
78
+ @click="addToQueue"
79
+ color="primary"
78
80
  size="medium"
79
- class="w-3r h-3r radius-full"
81
+ class="flex-1 bg-light radius-thin flex-center gap-thin"
80
82
  >
81
- <IconLike class="w-1-25r h-1-25r" :fill="isFavorite" />
83
+ <IconAdd class="i-medium" />
84
+ Add to Queue
82
85
  </Button>
83
-
86
+
84
87
  <Button
85
- @click="addToQueue"
86
- color="transp"
88
+ @click="toggleFavorite"
89
+ color="primary"
87
90
  size="medium"
88
- class="w-3r h-3r radius-full"
91
+ class="flex-1 bg-light radius-thin flex-center gap-thin"
89
92
  >
90
- <IconAdd class="w-1-25r h-1-25r" />
93
+ <IconLike class="i-medium" :fill="isFavorite ? 'rgb(var(--main)':'rgb(var(--black)'" />
94
+ {{isFavorite ? 'Liked' : 'Like'}}
91
95
  </Button>
92
-
93
- <Dropdown v-model="showDropdown" class="relative">
96
+
97
+ <Dropdown :label="{component: IconEllipsis, class: 'bg-light radius-thin pd-thin i-big' }" v-model="showDropdown" class="relative">
94
98
  <template #trigger>
95
99
  <Button color="transp" size="medium" class="w-3r h-3r radius-full">
96
100
  <IconEllipsis class="w-1-25r h-1-25r" />
@@ -119,82 +123,52 @@
119
123
  </div>
120
124
 
121
125
  <!-- Artist Card -->
122
- <div class="artist-card bg-light pd-medium radius-medium flex items-center gap-medium mn-b-big">
123
- <router-link
124
- :to="`/artist/${track.artist.url}`"
125
- class="flex items-center gap-medium flex-1 hover-opacity"
126
- >
127
- <div class="artist-avatar">
128
- <Media
129
- v-if="track.artist.photoUrl"
130
- :src="track.artist.photoUrl"
131
- :alt="track.artist.name"
132
- class="w-4r h-4r radius-full object-cover"
133
- />
134
- <div v-else class="w-4r h-4r radius-full bg-primary flex-center ">
135
- {{ track.artist.name.charAt(0) }}
136
- </div>
137
- </div>
138
- <div>
139
- <div class="flex items-center gap-thin">
140
- <span class="t-large ">{{ track.artist.name }}</span>
141
- <IconVerified v-if="track.artist.isVerified" class="w-1r h-1r t-primary" />
142
- </div>
143
- <span class="t-small t-transp">Artist</span>
144
- </div>
145
- </router-link>
146
- <Button
147
- v-if="!isOwner"
148
- @click="toggleFollowArtist"
149
- :color="isFollowingArtist ? 'primary' : 'transp'"
150
- size="small"
151
- >
152
- {{ isFollowingArtist ? 'Following' : 'Follow' }}
153
- </Button>
126
+ <div class="artists-section mn-b-medium">
127
+ <h3 class="t-medium mn-b-small" v-if="track.artist">Artist</h3>
128
+ <div class="flex flex-col gap-small">
129
+ <ArtistCardSmall
130
+ :key="track.artist._id"
131
+ :artist="track.artist"
132
+ :is-following="isFollowingArtist"
133
+ :show-follow-button="!isOwner"
134
+ @toggle-follow="toggleFollowArtist"
135
+ />
136
+ </div>
154
137
  </div>
155
138
 
156
-
157
-
158
139
  <!-- Metadata Cards -->
159
- <div class="metadata-grid grid cols-2 gap-small mn-b-big">
160
- <!-- Duration -->
140
+ <h3 class="t-medium mn-b-small">Metadata</h3>
141
+ <div class="metadata-grid grid cols-2 gap-small mn-b-medium">
142
+ <!-- Release Date -->
161
143
  <div class="metadata-card bg-light pd-medium radius-medium flex items-center gap-medium">
162
- <div class="icon-wrapper bg-primary-transp-20 w-3r h-3r radius-small flex-center">
163
- <IconClock class="w-1-5r h-1-5r t-primary" />
164
- </div>
144
+ <IconCalendar class="i-regular t-primary" />
165
145
  <div>
166
- <div class="t-small t-transp t-uppercase">Duration</div>
167
- <div class="t-medium ">{{ formatDuration(track.duration) }}</div>
146
+ <div class="t-small t-transp t-uppercase">Released</div>
147
+ <div class="t-medium ">{{ formatDate(track.releaseDate) }}</div>
168
148
  </div>
169
149
  </div>
170
150
 
171
- <!-- Release Date -->
151
+ <!-- Total Duration -->
172
152
  <div class="metadata-card bg-light pd-medium radius-medium flex items-center gap-medium">
173
- <div class="icon-wrapper bg-primary-transp-20 w-3r h-3r radius-small flex-center">
174
- <IconCalendar class="w-1-5r h-1-5r t-primary" />
175
- </div>
153
+ <IconClock class="i-regular t-primary" />
176
154
  <div>
177
- <div class="t-small t-transp t-uppercase">Released</div>
178
- <div class="t-medium ">{{ formatDate(track.releaseDate) }}</div>
155
+ <div class="t-small t-transp t-uppercase">Duration</div>
156
+ <div class="t-medium ">{{ formatDuration(track.duration) }}</div>
179
157
  </div>
180
158
  </div>
181
159
 
182
- <!-- Status -->
160
+ <!-- Label -->
183
161
  <div class="metadata-card bg-light pd-medium radius-medium flex items-center gap-medium">
184
- <div class="icon-wrapper bg-success-transp-20 w-3r h-3r radius-small flex-center">
185
- <IconCheck class="w-1-5r h-1-5r t-success" />
186
- </div>
162
+ <IconCheck class="i-regular t-primary" />
187
163
  <div>
188
164
  <div class="t-small t-transp t-uppercase">Status</div>
189
- <div class="t-medium t-success">{{ track.status }}</div>
165
+ <div class="t-medium ">{{ track.status }}</div>
190
166
  </div>
191
167
  </div>
192
168
 
193
169
  <!-- Visibility -->
194
170
  <div class="metadata-card bg-light pd-medium radius-medium flex items-center gap-medium">
195
- <div class="icon-wrapper bg-primary-transp-20 w-3r h-3r radius-small flex-center">
196
- <IconEye class="w-1-5r h-1-5r t-primary" />
197
- </div>
171
+ <IconEye class="i-regular t-primary" />
198
172
  <div>
199
173
  <div class="t-small t-transp t-uppercase">Visibility</div>
200
174
  <div class="t-medium ">{{ track.isPublic ? 'Public' : 'Private' }}</div>
@@ -202,18 +176,19 @@
202
176
  </div>
203
177
  </div>
204
178
 
179
+
205
180
  <!-- Album Info -->
181
+ <h3 v-if="track.album" class="t-medium mn-b-small">From Album</h3>
206
182
  <div v-if="track.album" class="album-card bg-light pd-medium radius-medium mn-b-medium">
207
- <div class="t-small t-transp t-uppercase mn-b-thin">From Album</div>
183
+
208
184
  <router-link
209
185
  :to="`/album/${track.album.url}`"
210
- class="flex items-center gap-medium hover-opacity"
186
+ class="flex flex-v-center gap-thin hover-opacity"
211
187
  >
212
188
  <Media
213
- v-if="track.album.coverUrl"
214
- :src="track.album.coverUrl"
189
+ :url="track.album.coverArt || '/logo/logo-placeholder.jpg'"
215
190
  :alt="track.album.title"
216
- class="w-3r h-3r radius-small object-cover"
191
+ class="w-3r h-3r radius-thin o-hidden object-cover"
217
192
  />
218
193
  <span class="t-medium ">{{ track.album.title }}</span>
219
194
  </router-link>
@@ -226,16 +201,16 @@
226
201
  <span
227
202
  v-for="genre in track.genre"
228
203
  :key="genre"
229
- class="tag bg-primary-transp-20 t-primary pd-thin-big radius-small t-small hover-bg-primary-transp-30 cursor-pointer"
204
+ class="tag bg-main t-medium pd-thin radius-thin t-small cursor-pointer"
230
205
  >
231
- {{ genre }}
206
+ {{ genre.name || genre }}
232
207
  </span>
233
208
  <span
234
209
  v-for="tag in track.tags"
235
210
  :key="tag"
236
211
  class="tag bg-light t-transp pd-thin-big radius-small t-small hover-bg-light cursor-pointer"
237
212
  >
238
- #{{ tag }}
213
+ #{{ tag.name || tag }}
239
214
  </span>
240
215
  </div>
241
216
  </div>
@@ -292,7 +267,7 @@
292
267
  <Popup
293
268
  v-if="showAddToPlaylistModal"
294
269
  @close-popup="showAddToPlaylistModal = false"
295
- class="bg-dark pd-medium w-m-25r radius-medium"
270
+ class="bg-white pd-medium w-m-25r radius-medium"
296
271
  >
297
272
  <h3 class="h3 mn-b-medium">Add to Playlist</h3>
298
273
  <!-- <PlaylistSelector
@@ -316,6 +291,7 @@ import Feed from '@martyrs/src/components/Feed/Feed.vue';
316
291
 
317
292
  // Icons
318
293
  import IconPlay from '@martyrs/src/modules/icons/navigation/IconPlay.vue';
294
+ import IconPause from '@martyrs/src/modules/icons/navigation/IconPause.vue';
319
295
  import IconLike from '@martyrs/src/modules/icons/navigation/IconLike.vue';
320
296
  import IconEllipsis from '@martyrs/src/modules/icons/navigation/IconEllipsis.vue';
321
297
  import IconAdd from '@martyrs/src/modules/icons/navigation/IconAdd.vue';
@@ -327,13 +303,16 @@ import IconVerified from '@martyrs/src/modules/icons/navigation/IconCheckmark.vu
327
303
 
328
304
  // Components
329
305
  import TrackListCard from '../cards/TrackListCard.vue';
306
+ import ArtistCardSmall from '../cards/ArtistCardSmall.vue';
330
307
  // import PlaylistSelector from '../forms/PlaylistSelector.vue';
331
308
 
332
309
  // Store
333
310
  import { state as tracksState, actions as tracksActions } from '../../store/tracks.js';
334
- import { actions as playerActions } from '../../store/player.js';
311
+ import { state as playerState, actions as playerActions } from '../../store/player.js';
335
312
  import { state as authState } from '@martyrs/src/modules/auth/views/store/auth.js';
336
313
 
314
+ const isPlaying = computed(() => playerState.isPlaying);
315
+
337
316
  const route = useRoute();
338
317
  const router = useRouter();
339
318
 
@@ -71,7 +71,7 @@ function initializeMusic(app, store, router, config, options = {}) {
71
71
  // Set up WebSocket subscription for music streaming
72
72
  if (options.enableStreaming !== false && app.config.globalProperties.WSS_URL) {
73
73
  globalWebSocket.initialize({
74
- wsUrl: app.config.globalProperties.WSS_URL,
74
+ wsUrl: app.config.globalProperties.WSS_URL,
75
75
  maxReconnectAttempts: 10,
76
76
  reconnectDelay: 2000,
77
77
  });
@@ -288,7 +288,7 @@ function initializeNotifications(app, store, router, options = {}) {
288
288
 
289
289
  // Initialize global WebSocket if needed
290
290
  if (options.wsUrl) {
291
- globalWebSocket.initialize({ wsUrl: options.wsUrl });
291
+ globalWebSocket.initialize({ wsUrl: app.config.globalProperties.WSS_URL });
292
292
  }
293
293
 
294
294
  // Create notification manager
@@ -50,6 +50,7 @@ body {
50
50
  .w-m-50r { width: min(100%, 50rem); }
51
51
  .w-m-40r { width: min(100%, 40rem); }
52
52
  .w-m-33r { width: min(100%, 33rem); }
53
+ .w-minmax-33r-100 { width: max(33rem, 100%); }
53
54
  .w-m-25r { width: min(100%, 25rem); }
54
55
  .w-m-20r { width: min(100%, 20rem); }
55
56
  .w-m-15r { width: min(100%, 15rem); }
@@ -1 +0,0 @@
1
- {"version":3,"file":"Chips.vue.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Chips.vue.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Dropdown.vue.js","sources":["../../../../../src/components/Dropdown/Dropdown.vue"],"sourcesContent":["<template>\n <div class=\"dropdown pos-relative\" v-click-outside=\"clickedOutside\" @click.stop=\"isOpen = !isOpen\">\n <div v-if=\"isComponentLabel\" class=\"w-100 h-100 flex-center flex\">\n <component :is=\"label.component\" v-bind=\"label.props\" :class=\"label.class\"></component>\n </div>\n <div v-else>\n {{ label }}\n </div>\n <transition name=\"TransitionTranslateY\" mode=\"out-in\">\n <div \n v-show=\"isOpen\" \n :style=\"{ left: align === 'left' ? '0' : 'auto', right: align === 'right' ? '0' : 'auto' }\" \n class=\"dropdown-content radius-big\" \n >\n <slot></slot>\n </div>\n </transition>\n </div>\n</template>\n\n<script setup>\nimport { ref, computed } from 'vue';\nimport clickOutside from '../FieldPhone/click-outside.js';\n\nlet vClickOutside = clickOutside\n\nconst props = defineProps({\n label: {\n type: [String, Object],\n default: 'Open'\n },\n align: {\n type: String,\n default: 'left'\n }\n})\n\nconst isOpen = ref(false);\nconst isComponentLabel = computed(() => typeof props.label === 'object');\n\nfunction clickedOutside () {\n isOpen.value = false\n}\n</script>\n\n<style >\n.dropdown-content {\n display: block;\n position: absolute;\n box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);\n z-index: 1;\n}\n\n/*.dropdown:hover .dropdown-content {\n display: block;\n}*/\n</style>\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;AAwBA,QAAI,gBAAgB;AAEpB,UAAM,QAAQ;AAWd,UAAM,SAAS,IAAI,KAAK;AACxB,UAAM,mBAAmB,SAAS,MAAM,OAAO,MAAM,UAAU,QAAQ;AAEvE,aAAS,iBAAkB;AACzB,aAAO,QAAQ;AAAA,IACjB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Menu.vue2.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Menu.vue2.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Tooltip.vue2.cjs","sources":["../../../../../src/components/Tooltip/Tooltip.vue"],"sourcesContent":["<template>\n <div class=\"cursor-pointer tooltip-container\" @mouseover=\"showTooltip\" @mouseleave=\"hideTooltip\">\n <slot></slot>\n <div class=\"tooltip-content\" :style=\"tooltipStyle\">\n <span>{{ text }}</span>\n </div>\n </div>\n</template>\n\n<script setup>\nimport { ref, reactive } from 'vue';\n\nconst props = defineProps({\n text: {\n type: String,\n required: true\n }\n});\n\nconst visible = ref(false);\n\nconst tooltipStyle = reactive({\n position: 'absolute',\n width: 'max-content',\n zIndex: 1000,\n background: '#333',\n color: '#fff',\n padding: '5px',\n borderRadius: '3px',\n fontSize: '14px',\n display: 'none',\n});\n\nfunction showTooltip(event) {\n visible.value = true;\n tooltipStyle.left = `${(event.clientX / 100) + 10 }px`;\n tooltipStyle.top = `${(event.clientY / 100) + 10 }px`;\n tooltipStyle.display = 'block';\n}\n\nfunction hideTooltip() {\n visible.value = false;\n tooltipStyle.display = 'none';\n}\n</script>\n\n<style >\n.tooltip-container {\n position: relative;\n display: inline-block;\n}\n\n.tooltip-content {\n pointer-events: none;\n}\n</style>"],"names":["ref","reactive"],"mappings":";;;;;;;;;;;;;AAmBA,UAAM,UAAUA,IAAAA,IAAI,KAAK;AAEzB,UAAM,eAAeC,IAAAA,SAAS;AAAA,MAC5B,UAAU;AAAA,MACV,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,YAAY;AAAA,MACZ,OAAO;AAAA,MACP,SAAS;AAAA,MACT,cAAc;AAAA,MACd,UAAU;AAAA,MACV,SAAS;AAAA,IACX,CAAC;AAED,aAAS,YAAY,OAAO;AAC1B,cAAQ,QAAQ;AAChB,mBAAa,OAAO,GAAI,MAAM,UAAU,MAAO,EAAE;AACjD,mBAAa,MAAM,GAAI,MAAM,UAAU,MAAO,EAAE;AAChD,mBAAa,UAAU;AAAA,IACzB;AAEA,aAAS,cAAc;AACrB,cAAQ,QAAQ;AAChB,mBAAa,UAAU;AAAA,IACzB;;;;;;;;;;;;;;;;;;;"}