@ozdao/martyrs 0.2.565 → 0.2.566

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (99) hide show
  1. package/dist/martyrs/dist/main-B9o1iBAZ.js +943 -0
  2. package/dist/martyrs/dist/main-B9o1iBAZ.js.map +1 -0
  3. package/dist/martyrs/dist/web-BF3ijvEr.js +55 -0
  4. package/dist/martyrs/dist/web-BF3ijvEr.js.map +1 -0
  5. package/dist/martyrs/src/components/BottomSheet/BottomSheet.vue.js +96 -0
  6. package/dist/martyrs/src/components/BottomSheet/BottomSheet.vue.js.map +1 -0
  7. package/dist/martyrs/src/modules/core/views/components/layouts/App.vue.js +1 -1
  8. package/dist/martyrs/src/modules/core/views/components/layouts/Client.vue.js +1 -0
  9. package/dist/martyrs/src/modules/core/views/components/layouts/Client.vue.js.map +1 -1
  10. package/dist/martyrs/src/modules/core/views/components/sections/Walkthrough.vue.js +1 -1
  11. package/dist/martyrs/src/modules/events/components/elements/ButtonCheck.vue.js +1 -1
  12. package/dist/martyrs/src/modules/events/events.client.js +15 -12
  13. package/dist/martyrs/src/modules/events/events.client.js.map +1 -1
  14. package/dist/martyrs/src/modules/music/components/blocks/ActionButtons.vue.js +95 -0
  15. package/dist/martyrs/src/modules/music/components/blocks/ActionButtons.vue.js.map +1 -0
  16. package/dist/martyrs/src/modules/music/components/cards/AlbumCard.vue.js +5 -2
  17. package/dist/martyrs/src/modules/music/components/cards/AlbumCard.vue.js.map +1 -1
  18. package/dist/martyrs/src/modules/music/components/cards/ArtistCardSmall.vue.js +24 -24
  19. package/dist/martyrs/src/modules/music/components/cards/ArtistCardSmall.vue.js.map +1 -1
  20. package/dist/martyrs/src/modules/music/components/layouts/MusicBottomPlayer.vue.js +31 -6
  21. package/dist/martyrs/src/modules/music/components/layouts/MusicBottomPlayer.vue.js.map +1 -1
  22. package/dist/martyrs/src/modules/music/components/pages/Album.vue.js +120 -205
  23. package/dist/martyrs/src/modules/music/components/pages/Album.vue.js.map +1 -1
  24. package/dist/martyrs/src/modules/music/components/pages/MusicHome.vue.js +9 -13
  25. package/dist/martyrs/src/modules/music/components/pages/MusicHome.vue.js.map +1 -1
  26. package/dist/martyrs/src/modules/music/components/pages/Playlist.vue.js +166 -245
  27. package/dist/martyrs/src/modules/music/components/pages/Playlist.vue.js.map +1 -1
  28. package/dist/martyrs/src/modules/music/components/pages/Track.vue.js +135 -220
  29. package/dist/martyrs/src/modules/music/components/pages/Track.vue.js.map +1 -1
  30. package/dist/martyrs/src/modules/music/components/player/FullscreenPlayer.vue.js +171 -0
  31. package/dist/martyrs/src/modules/music/components/player/FullscreenPlayer.vue.js.map +1 -0
  32. package/dist/martyrs/src/modules/music/components/player/MusicPlayer.vue.js +31 -153
  33. package/dist/martyrs/src/modules/music/components/player/MusicPlayer.vue.js.map +1 -1
  34. package/dist/martyrs/src/modules/music/components/player/PlayerControls.vue.js +96 -0
  35. package/dist/martyrs/src/modules/music/components/player/PlayerControls.vue.js.map +1 -0
  36. package/dist/martyrs/src/modules/music/components/player/VolumeControl.vue.js +55 -27
  37. package/dist/martyrs/src/modules/music/components/player/VolumeControl.vue.js.map +1 -1
  38. package/dist/martyrs/src/modules/music/components/player/tonar.png.js +5 -0
  39. package/dist/martyrs/src/modules/music/components/player/tonar.png.js.map +1 -0
  40. package/dist/martyrs/src/modules/music/store/albums.js +8 -2
  41. package/dist/martyrs/src/modules/music/store/albums.js.map +1 -1
  42. package/dist/martyrs/src/modules/music/store/player.js +83 -65
  43. package/dist/martyrs/src/modules/music/store/player.js.map +1 -1
  44. package/dist/martyrs/src/modules/music/store/tracks.js +4 -13
  45. package/dist/martyrs/src/modules/music/store/tracks.js.map +1 -1
  46. package/dist/martyrs/src/modules/notifications/notifications.client.js +2 -2
  47. package/dist/martyrs.css +1 -1
  48. package/dist/music.server.js +33 -6
  49. package/dist/node_modules/.pnpm/{@capacitor-mlkit_barcode-scanning@7.1.0_@capacitor_core@7.0.1 → @capacitor-mlkit_barcode-scanning@7.3.0_@capacitor_core@7.4.4}/node_modules/@capacitor-mlkit/barcode-scanning/dist/esm/definitions.js +1 -0
  50. package/dist/node_modules/.pnpm/@capacitor-mlkit_barcode-scanning@7.3.0_@capacitor_core@7.4.4/node_modules/@capacitor-mlkit/barcode-scanning/dist/esm/definitions.js.map +1 -0
  51. package/dist/node_modules/.pnpm/{@capacitor-mlkit_barcode-scanning@7.1.0_@capacitor_core@7.0.1 → @capacitor-mlkit_barcode-scanning@7.3.0_@capacitor_core@7.4.4}/node_modules/@capacitor-mlkit/barcode-scanning/dist/esm/index.js +1 -1
  52. package/dist/node_modules/.pnpm/{@capacitor-mlkit_barcode-scanning@7.1.0_@capacitor_core@7.0.1 → @capacitor-mlkit_barcode-scanning@7.3.0_@capacitor_core@7.4.4}/node_modules/@capacitor-mlkit/barcode-scanning/dist/esm/index.js.map +1 -1
  53. package/dist/node_modules/.pnpm/{@capacitor-mlkit_barcode-scanning@7.1.0_@capacitor_core@7.0.1 → @capacitor-mlkit_barcode-scanning@7.3.0_@capacitor_core@7.4.4}/node_modules/@capacitor-mlkit/barcode-scanning/dist/esm/web.js +16 -1
  54. package/dist/node_modules/.pnpm/@capacitor-mlkit_barcode-scanning@7.3.0_@capacitor_core@7.4.4/node_modules/@capacitor-mlkit/barcode-scanning/dist/esm/web.js.map +1 -0
  55. package/dist/node_modules/.pnpm/{@capacitor_core@7.0.1 → @capacitor_core@7.4.4}/node_modules/@capacitor/core/dist/index.js +2 -1
  56. package/dist/node_modules/.pnpm/@capacitor_core@7.4.4/node_modules/@capacitor/core/dist/index.js.map +1 -0
  57. package/dist/node_modules/.pnpm/{@capacitor_device@7.0.0_@capacitor_core@7.0.1 → @capacitor_device@7.0.1_@capacitor_core@7.4.4}/node_modules/@capacitor/device/dist/esm/index.js +1 -1
  58. package/dist/node_modules/.pnpm/{@capacitor_device@7.0.0_@capacitor_core@7.0.1 → @capacitor_device@7.0.1_@capacitor_core@7.4.4}/node_modules/@capacitor/device/dist/esm/index.js.map +1 -1
  59. package/dist/node_modules/.pnpm/{@capacitor_device@7.0.0_@capacitor_core@7.0.1 → @capacitor_device@7.0.1_@capacitor_core@7.4.4}/node_modules/@capacitor/device/dist/esm/web.js +1 -1
  60. package/dist/node_modules/.pnpm/{@capacitor_device@7.0.0_@capacitor_core@7.0.1 → @capacitor_device@7.0.1_@capacitor_core@7.4.4}/node_modules/@capacitor/device/dist/esm/web.js.map +1 -1
  61. package/dist/node_modules/.pnpm/{@capacitor_keyboard@7.0.0_@capacitor_core@7.0.1 → @capacitor_keyboard@7.0.1_@capacitor_core@7.4.4}/node_modules/@capacitor/keyboard/dist/esm/definitions.js.map +1 -1
  62. package/dist/node_modules/.pnpm/{@capacitor_keyboard@7.0.0_@capacitor_core@7.0.1 → @capacitor_keyboard@7.0.1_@capacitor_core@7.4.4}/node_modules/@capacitor/keyboard/dist/esm/index.js +1 -1
  63. package/dist/node_modules/.pnpm/{@capacitor_keyboard@7.0.0_@capacitor_core@7.0.1 → @capacitor_keyboard@7.0.1_@capacitor_core@7.4.4}/node_modules/@capacitor/keyboard/dist/esm/index.js.map +1 -1
  64. package/dist/node_modules/.pnpm/{@capacitor_push-notifications@7.0.0_@capacitor_core@7.0.1 → @capacitor_push-notifications@7.0.3_@capacitor_core@7.4.4}/node_modules/@capacitor/push-notifications/dist/esm/index.js +1 -1
  65. package/dist/node_modules/.pnpm/{@capacitor_push-notifications@7.0.0_@capacitor_core@7.0.1 → @capacitor_push-notifications@7.0.3_@capacitor_core@7.4.4}/node_modules/@capacitor/push-notifications/dist/esm/index.js.map +1 -1
  66. package/dist/node_modules/.pnpm/{capacitor-plugin-app-tracking-transparency@2.0.5_@capacitor_core@7.0.1 → capacitor-plugin-app-tracking-transparency@2.0.5_@capacitor_core@7.4.4}/node_modules/capacitor-plugin-app-tracking-transparency/dist/esm/index.js +1 -1
  67. package/dist/node_modules/.pnpm/{capacitor-plugin-app-tracking-transparency@2.0.5_@capacitor_core@7.0.1 → capacitor-plugin-app-tracking-transparency@2.0.5_@capacitor_core@7.4.4}/node_modules/capacitor-plugin-app-tracking-transparency/dist/esm/index.js.map +1 -1
  68. package/dist/node_modules/.pnpm/{capacitor-plugin-app-tracking-transparency@2.0.5_@capacitor_core@7.0.1 → capacitor-plugin-app-tracking-transparency@2.0.5_@capacitor_core@7.4.4}/node_modules/capacitor-plugin-app-tracking-transparency/dist/esm/web.js +1 -1
  69. package/dist/node_modules/.pnpm/{capacitor-plugin-app-tracking-transparency@2.0.5_@capacitor_core@7.0.1 → capacitor-plugin-app-tracking-transparency@2.0.5_@capacitor_core@7.4.4}/node_modules/capacitor-plugin-app-tracking-transparency/dist/esm/web.js.map +1 -1
  70. package/dist/style.css +214 -138
  71. package/package.json +1 -1
  72. package/src/components/BottomSheet/BottomSheet.vue +4 -4
  73. package/src/modules/LAYOUT.MD +767 -0
  74. package/src/modules/core/views/components/layouts/Client.vue +1 -1
  75. package/src/modules/events/events.client.js +3 -0
  76. package/src/modules/music/components/blocks/ActionButtons.vue +74 -0
  77. package/src/modules/music/components/cards/AlbumCard.vue +1 -1
  78. package/src/modules/music/components/cards/ArtistCardSmall.vue +8 -6
  79. package/src/modules/music/components/layouts/MusicBottomPlayer.vue +94 -4
  80. package/src/modules/music/components/pages/Album.vue +55 -67
  81. package/src/modules/music/components/pages/MusicHome.vue +4 -6
  82. package/src/modules/music/components/pages/Playlist.vue +61 -70
  83. package/src/modules/music/components/pages/Track.vue +54 -71
  84. package/src/modules/music/components/player/FullscreenPlayer.vue +248 -0
  85. package/src/modules/music/components/player/MusicPlayer.vue +21 -216
  86. package/src/modules/music/components/player/PlayerControls.vue +112 -0
  87. package/src/modules/music/components/player/Visualizer.vue +151 -0
  88. package/src/modules/music/components/player/VolumeControl.vue +75 -23
  89. package/src/modules/music/components/player/tonar.png +0 -0
  90. package/src/modules/music/routes/albums.routes.js +13 -12
  91. package/src/modules/music/routes/tracks.routes.js +39 -0
  92. package/src/modules/music/store/albums.js +10 -2
  93. package/src/modules/music/store/player.js +101 -89
  94. package/src/modules/music/store/tracks.js +5 -21
  95. package/src/styles/config.scss +6 -6
  96. package/dist/node_modules/.pnpm/@capacitor-mlkit_barcode-scanning@7.1.0_@capacitor_core@7.0.1/node_modules/@capacitor-mlkit/barcode-scanning/dist/esm/definitions.js.map +0 -1
  97. package/dist/node_modules/.pnpm/@capacitor-mlkit_barcode-scanning@7.1.0_@capacitor_core@7.0.1/node_modules/@capacitor-mlkit/barcode-scanning/dist/esm/web.js.map +0 -1
  98. package/dist/node_modules/.pnpm/@capacitor_core@7.0.1/node_modules/@capacitor/core/dist/index.js.map +0 -1
  99. /package/dist/node_modules/.pnpm/{@capacitor_keyboard@7.0.0_@capacitor_core@7.0.1 → @capacitor_keyboard@7.0.1_@capacitor_core@7.4.4}/node_modules/@capacitor/keyboard/dist/esm/definitions.js +0 -0
@@ -1,24 +1,24 @@
1
- import { computed, ref, onMounted, resolveComponent, createElementBlock, openBlock, createCommentVNode, createBlock, createVNode, createElementVNode, withCtx, toDisplayString, createTextVNode, Fragment, renderList } from "vue";
1
+ import { computed, ref, onMounted, resolveComponent, createElementBlock, openBlock, createCommentVNode, createBlock, createVNode, createElementVNode, withCtx, toDisplayString, Fragment, renderList } from "vue";
2
2
  import { useRoute, useRouter } from "vue-router";
3
- import _sfc_main$1 from "../../../../components/Button/Button.vue2.js";
3
+ import _sfc_main$5 from "../../../../components/Button/Button.vue2.js";
4
4
  import Loader from "../../../../components/Loader/Loader.vue.js";
5
5
  import Media from "../../../../components/Media/Media.vue.js";
6
- import _sfc_main$6 from "../../../../components/Dropdown/Dropdown.vue.js";
7
- import _sfc_main$d from "../../../../components/Popup/Popup.vue.js";
8
- import _sfc_main$b from "../../../../components/Feed/Feed.vue.js";
6
+ /* empty css */
7
+ import _sfc_main$c from "../../../../components/Popup/Popup.vue.js";
8
+ import _sfc_main$a from "../../../../components/Feed/Feed.vue.js";
9
9
  import _sfc_main$2 from "../../../icons/navigation/IconPlay.vue.js";
10
- import _sfc_main$3 from "../../../icons/navigation/IconPause.vue.js";
11
- import _sfc_main$5 from "../../../icons/navigation/IconLike.vue.js";
12
- import _sfc_main$7 from "../../../icons/navigation/IconEllipsis.vue.js";
13
- import _sfc_main$4 from "../../../icons/navigation/IconAdd.vue.js";
10
+ import _sfc_main$1 from "../../../icons/navigation/IconPause.vue.js";
11
+ import _sfc_main$4 from "../../../icons/navigation/IconLike.vue.js";
12
+ import _sfc_main$3 from "../../../icons/navigation/IconAdd.vue.js";
14
13
  import IconTime from "../../../icons/entities/IconTime.vue.js";
15
- import _sfc_main$8 from "../../../icons/entities/IconCalendar.vue.js";
16
- import _sfc_main$9 from "../../../icons/navigation/IconCheckmark.vue.js";
17
- import _sfc_main$a from "../../../icons/actions/IconShow.vue.js";
18
- import _sfc_main$c from "../cards/TrackListCard.vue.js";
14
+ import _sfc_main$7 from "../../../icons/entities/IconCalendar.vue.js";
15
+ import _sfc_main$8 from "../../../icons/navigation/IconCheckmark.vue.js";
16
+ import _sfc_main$9 from "../../../icons/actions/IconShow.vue.js";
17
+ import _sfc_main$6 from "../blocks/ActionButtons.vue.js";
18
+ import _sfc_main$b from "../cards/TrackListCard.vue.js";
19
19
  import ArtistCardSmall from "../cards/ArtistCardSmall.vue.js";
20
- import { state as state$1, actions } from "../../store/tracks.js";
21
- import { state, actions as actions$1 } from "../../store/player.js";
20
+ import { state as state$1, actions as actions$1 } from "../../store/tracks.js";
21
+ import { state, actions } from "../../store/player.js";
22
22
  import { state as state$2 } from "../../../auth/views/store/auth.js";
23
23
  const _hoisted_1 = { class: "track-page pd-small" };
24
24
  const _hoisted_2 = {
@@ -31,7 +31,7 @@ const _hoisted_3 = {
31
31
  };
32
32
  const _hoisted_4 = {
33
33
  key: 2,
34
- class: "track-content cols-2-fit-content mobile:cols-1 gap-big"
34
+ class: "track-content cols-2 mobile:cols-1 gap-big"
35
35
  };
36
36
  const _hoisted_5 = { class: "pos-sticky pos-t-0 mobile:pos-relative track-cover-section" };
37
37
  const _hoisted_6 = { class: "cover-container pos-relative mn-b-medium radius-big o-hidden" };
@@ -43,52 +43,49 @@ const _hoisted_11 = { class: "stat-card bg-light pd-medium radius-medium t-cente
43
43
  const _hoisted_12 = { class: "mn-b-thin" };
44
44
  const _hoisted_13 = { class: "track-details-section" };
45
45
  const _hoisted_14 = { class: "h1 mn-b-medium" };
46
- const _hoisted_15 = { class: "flex gap-small mn-b-medium" };
47
- const _hoisted_16 = { class: "dropdown-menu bg-dark pd-small radius-medium shadow-big mn-t-thin" };
48
- const _hoisted_17 = { class: "artists-section mn-b-medium" };
49
- const _hoisted_18 = {
46
+ const _hoisted_15 = { class: "artists-section mn-b-medium" };
47
+ const _hoisted_16 = {
50
48
  key: 0,
51
49
  class: "t-medium mn-b-small"
52
50
  };
53
- const _hoisted_19 = { class: "flex flex-column gap-small" };
54
- const _hoisted_20 = { class: "metadata-grid grid cols-2 gap-small mn-b-medium" };
55
- const _hoisted_21 = { class: "metadata-card bg-light pd-medium radius-medium flex items-center gap-regular" };
56
- const _hoisted_22 = { class: "t-medium" };
57
- const _hoisted_23 = { class: "metadata-card bg-light pd-medium radius-medium flex items-center gap-regular" };
58
- const _hoisted_24 = { class: "t-medium" };
59
- const _hoisted_25 = { class: "metadata-card bg-light pd-medium radius-medium flex items-center gap-regular" };
60
- const _hoisted_26 = { class: "t-medium" };
61
- const _hoisted_27 = { class: "metadata-card bg-light pd-medium radius-medium flex items-center gap-regular" };
62
- const _hoisted_28 = { class: "t-medium" };
63
- const _hoisted_29 = {
51
+ const _hoisted_17 = { class: "metadata-grid grid cols-2 gap-small mn-b-medium" };
52
+ const _hoisted_18 = { class: "metadata-card bg-light pd-medium radius-medium flex items-center gap-regular" };
53
+ const _hoisted_19 = { class: "t-medium" };
54
+ const _hoisted_20 = { class: "metadata-card bg-light pd-medium radius-medium flex items-center gap-regular" };
55
+ const _hoisted_21 = { class: "t-medium" };
56
+ const _hoisted_22 = { class: "metadata-card bg-light pd-medium radius-medium flex items-center gap-regular" };
57
+ const _hoisted_23 = { class: "t-medium" };
58
+ const _hoisted_24 = { class: "metadata-card bg-light pd-medium radius-medium flex items-center gap-regular" };
59
+ const _hoisted_25 = { class: "t-medium" };
60
+ const _hoisted_26 = {
64
61
  key: 0,
65
62
  class: "t-medium mn-b-small"
66
63
  };
67
- const _hoisted_30 = {
64
+ const _hoisted_27 = {
68
65
  key: 1,
69
66
  class: "album-card bg-light pd-medium radius-medium mn-b-medium"
70
67
  };
71
- const _hoisted_31 = { class: "t-medium" };
72
- const _hoisted_32 = {
68
+ const _hoisted_28 = { class: "t-medium" };
69
+ const _hoisted_29 = {
73
70
  key: 2,
74
71
  class: "tags-section mn-b-medium"
75
72
  };
76
- const _hoisted_33 = { class: "flex gap-thin flex-wrap" };
77
- const _hoisted_34 = {
73
+ const _hoisted_30 = { class: "flex gap-thin flex-wrap" };
74
+ const _hoisted_31 = {
78
75
  key: 3,
79
76
  class: "description-section bg-light pd-medium radius-medium mn-b-medium"
80
77
  };
81
- const _hoisted_35 = { class: "t-transp" };
82
- const _hoisted_36 = {
78
+ const _hoisted_32 = { class: "t-transp" };
79
+ const _hoisted_33 = {
83
80
  key: 4,
84
81
  class: "lyrics-section bg-light pd-medium radius-medium"
85
82
  };
86
- const _hoisted_37 = { class: "t-transp t-small" };
87
- const _hoisted_38 = {
83
+ const _hoisted_34 = { class: "t-transp t-small" };
84
+ const _hoisted_35 = {
88
85
  key: 3,
89
86
  class: "related-section mn-t-big"
90
87
  };
91
- const _hoisted_39 = { class: "bg-light radius-medium o-hidden" };
88
+ const _hoisted_36 = { class: "bg-light radius-medium o-hidden" };
92
89
  const _sfc_main = {
93
90
  __name: "Track",
94
91
  emits: ["page-loading", "page-loaded"],
@@ -98,7 +95,6 @@ const _sfc_main = {
98
95
  const router = useRouter();
99
96
  const emits = __emit;
100
97
  const hasLoaded = ref(false);
101
- const showDropdown = ref(false);
102
98
  const showAddToPlaylistModal = ref(false);
103
99
  const isFavorite = ref(false);
104
100
  const isFollowingArtist = ref(false);
@@ -109,6 +105,47 @@ const _sfc_main = {
109
105
  const isOwner = computed(() => {
110
106
  return track.value?.owner?.target === state$2.user?._id;
111
107
  });
108
+ const actionButtons = computed(() => {
109
+ const buttons = [
110
+ {
111
+ type: "button",
112
+ class: "t-white bg-black",
113
+ icon: isPlaying.value ? _sfc_main$1 : _sfc_main$2,
114
+ iconFill: "rgb(var(--white))",
115
+ text: isPlaying.value ? "Pause" : "Play",
116
+ action: playTrack
117
+ },
118
+ {
119
+ type: "button",
120
+ class: "bg-light",
121
+ icon: _sfc_main$3,
122
+ text: "Add to Queue",
123
+ action: addToQueue
124
+ },
125
+ {
126
+ type: "button",
127
+ class: "bg-light",
128
+ icon: _sfc_main$4,
129
+ iconFill: isFavorite.value ? "rgb(var(--main))" : "rgb(var(--black))",
130
+ text: isFavorite.value ? "Liked" : "Like",
131
+ action: toggleFavorite
132
+ },
133
+ {
134
+ type: "dropdown",
135
+ items: [
136
+ { text: "Add to Playlist", action: () => showAddToPlaylistModal.value = true },
137
+ { text: "Copy Link", action: copyLink }
138
+ ]
139
+ }
140
+ ];
141
+ if (isOwner.value) {
142
+ const items = buttons[3].items;
143
+ items.push({ separator: true });
144
+ items.push({ text: "Edit Track", action: editTrack });
145
+ items.push({ text: "Delete Track", action: deleteTrack, color: "danger" });
146
+ }
147
+ return buttons;
148
+ });
112
149
  const formatDuration = (seconds) => {
113
150
  if (!seconds) return "0:00";
114
151
  const h = Math.floor(seconds / 3600);
@@ -138,7 +175,7 @@ const _sfc_main = {
138
175
  };
139
176
  const playTrack = () => {
140
177
  if (track.value) {
141
- actions$1.setQueue([track.value]);
178
+ actions.setQueue([track.value]);
142
179
  }
143
180
  };
144
181
  const toggleFavorite = () => {
@@ -149,7 +186,7 @@ const _sfc_main = {
149
186
  };
150
187
  const addToQueue = () => {
151
188
  if (track.value) {
152
- actions$1.addToQueue(track.value);
189
+ actions.addToQueue(track.value);
153
190
  }
154
191
  };
155
192
  const editTrack = () => {
@@ -158,7 +195,7 @@ const _sfc_main = {
158
195
  const deleteTrack = async () => {
159
196
  if (confirm("Are you sure you want to delete this track?")) {
160
197
  try {
161
- await actions.deleteTrack(track.value._id);
198
+ await actions$1.deleteTrack(track.value._id);
162
199
  router.push({ name: "music-library" });
163
200
  } catch (error) {
164
201
  console.error("Failed to delete track:", error);
@@ -167,12 +204,11 @@ const _sfc_main = {
167
204
  };
168
205
  const copyLink = () => {
169
206
  navigator.clipboard.writeText(window.location.href);
170
- showDropdown.value = false;
171
207
  };
172
208
  const fetchTrackData = async () => {
173
209
  try {
174
- await actions.fetchTrackByUrl(route.params.url);
175
- await actions.fetchRelatedTracks(route.params.url);
210
+ await actions$1.fetchTrackByUrl(route.params.url);
211
+ await actions$1.fetchRelatedTracks(route.params.url);
176
212
  } catch (error) {
177
213
  console.error("Error loading track:", error);
178
214
  }
@@ -189,7 +225,7 @@ const _sfc_main = {
189
225
  _ctx.isLoading ? (openBlock(), createElementBlock("div", _hoisted_2, [
190
226
  createVNode(Loader)
191
227
  ])) : createCommentVNode("", true),
192
- hasLoaded.value && !track.value ? (openBlock(), createElementBlock("div", _hoisted_3, _cache[3] || (_cache[3] = [
228
+ hasLoaded.value && !track.value ? (openBlock(), createElementBlock("div", _hoisted_3, _cache[1] || (_cache[1] = [
193
229
  createElementVNode("h2", { class: "" }, "Track not found", -1),
194
230
  createElementVNode("p", { class: "t-transp t-medium" }, "The track you're looking for doesn't exist or has been removed.", -1)
195
231
  ]))) : createCommentVNode("", true),
@@ -202,7 +238,7 @@ const _sfc_main = {
202
238
  class: "aspect-1x1 w-100 radius-medium o-hidden"
203
239
  }, null, 8, ["url", "alt"]),
204
240
  createElementVNode("div", _hoisted_7, [
205
- createVNode(_sfc_main$1, {
241
+ createVNode(_sfc_main$5, {
206
242
  onClick: playTrack,
207
243
  color: "white",
208
244
  size: "big",
@@ -213,7 +249,7 @@ const _sfc_main = {
213
249
  key: 0,
214
250
  fill: "rgb(var(--white))",
215
251
  class: "i-medium"
216
- })) : (openBlock(), createBlock(_sfc_main$3, {
252
+ })) : (openBlock(), createBlock(_sfc_main$1, {
217
253
  key: 1,
218
254
  fill: "rgb(var(--white))",
219
255
  class: "i-medium"
@@ -226,185 +262,64 @@ const _sfc_main = {
226
262
  createElementVNode("div", _hoisted_8, [
227
263
  createElementVNode("div", _hoisted_9, [
228
264
  createElementVNode("div", _hoisted_10, toDisplayString(formatNumber(track.value.playCount)), 1),
229
- _cache[4] || (_cache[4] = createElementVNode("div", { class: "t-small t-transp t-uppercase" }, "Plays", -1))
265
+ _cache[2] || (_cache[2] = createElementVNode("div", { class: "t-small t-transp t-uppercase" }, "Plays", -1))
230
266
  ]),
231
267
  createElementVNode("div", _hoisted_11, [
232
268
  createElementVNode("div", _hoisted_12, toDisplayString(formatNumber(track.value.views)), 1),
233
- _cache[5] || (_cache[5] = createElementVNode("div", { class: "t-small t-transp t-uppercase" }, "Views", -1))
269
+ _cache[3] || (_cache[3] = createElementVNode("div", { class: "t-small t-transp t-uppercase" }, "Views", -1))
234
270
  ])
235
271
  ])
236
272
  ]),
237
273
  createElementVNode("div", _hoisted_13, [
238
- _cache[19] || (_cache[19] = createElementVNode("div", { class: "flex items-center gap-small mn-b-small" }, [
274
+ _cache[11] || (_cache[11] = createElementVNode("div", { class: "flex items-center gap-small mn-b-small" }, [
239
275
  createElementVNode("span", { class: "bg-light t-medium pd-thin radius-thin uppercase t-small t-uppercase" }, "Single"),
240
276
  createElementVNode("span", { class: "bg-light t-medium pd-thin radius-thin uppercase t-small t-uppercase" }, "Explicit")
241
277
  ], -1)),
242
278
  createElementVNode("h1", _hoisted_14, toDisplayString(track.value.title), 1),
279
+ createVNode(_sfc_main$6, { buttons: actionButtons.value }, null, 8, ["buttons"]),
243
280
  createElementVNode("div", _hoisted_15, [
244
- createVNode(_sfc_main$1, {
245
- onClick: playTrack,
246
- color: "primary",
247
- size: "medium",
248
- class: "flex-1 t-white bg-black radius-thin flex-center gap-thin"
249
- }, {
250
- default: withCtx(() => [
251
- !isPlaying.value ? (openBlock(), createBlock(_sfc_main$2, {
252
- key: 0,
253
- fill: "rgb(var(--white))",
254
- class: "i-medium"
255
- })) : (openBlock(), createBlock(_sfc_main$3, {
256
- key: 1,
257
- fill: "rgb(var(--white))",
258
- class: "i-medium"
259
- })),
260
- createTextVNode(" " + toDisplayString(!isPlaying.value ? "Play" : "Pause"), 1)
261
- ]),
262
- _: 1
263
- }),
264
- createVNode(_sfc_main$1, {
265
- onClick: addToQueue,
266
- color: "primary",
267
- size: "medium",
268
- class: "flex-1 bg-light radius-thin flex-center gap-thin"
269
- }, {
270
- default: withCtx(() => [
271
- createVNode(_sfc_main$4, { class: "i-medium" }),
272
- _cache[6] || (_cache[6] = createTextVNode(" Add to Queue "))
273
- ]),
274
- _: 1
275
- }),
276
- createVNode(_sfc_main$1, {
277
- onClick: toggleFavorite,
278
- color: "primary",
279
- size: "medium",
280
- class: "flex-1 bg-light radius-thin flex-center gap-thin"
281
- }, {
282
- default: withCtx(() => [
283
- createVNode(_sfc_main$5, {
284
- class: "i-medium",
285
- fill: isFavorite.value ? "rgb(var(--main)" : "rgb(var(--black)"
286
- }, null, 8, ["fill"]),
287
- createTextVNode(" " + toDisplayString(isFavorite.value ? "Liked" : "Like"), 1)
288
- ]),
289
- _: 1
290
- }),
291
- createVNode(_sfc_main$6, {
292
- label: { component: _sfc_main$7, class: "bg-light radius-thin pd-thin i-big" },
293
- modelValue: showDropdown.value,
294
- "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => showDropdown.value = $event),
295
- class: "relative"
296
- }, {
297
- trigger: withCtx(() => [
298
- createVNode(_sfc_main$1, {
299
- color: "transp",
300
- size: "medium",
301
- class: "w-3r h-3r radius-full"
302
- }, {
303
- default: withCtx(() => [
304
- createVNode(_sfc_main$7, { class: "w-1-25r h-1-25r" })
305
- ]),
306
- _: 1
307
- })
308
- ]),
309
- default: withCtx(() => [
310
- createElementVNode("div", _hoisted_16, [
311
- createVNode(_sfc_main$1, {
312
- onClick: _cache[0] || (_cache[0] = ($event) => showAddToPlaylistModal.value = true),
313
- color: "transp",
314
- size: "small",
315
- class: "w-100 justify-start"
316
- }, {
317
- default: withCtx(() => _cache[7] || (_cache[7] = [
318
- createTextVNode(" Add to Playlist ")
319
- ])),
320
- _: 1
321
- }),
322
- createVNode(_sfc_main$1, {
323
- onClick: copyLink,
324
- color: "transp",
325
- size: "small",
326
- class: "w-100 justify-start"
327
- }, {
328
- default: withCtx(() => _cache[8] || (_cache[8] = [
329
- createTextVNode(" Copy Link ")
330
- ])),
331
- _: 1
332
- }),
333
- isOwner.value ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [
334
- _cache[11] || (_cache[11] = createElementVNode("hr", { class: "mn-v-thin border-dark-transp-10" }, null, -1)),
335
- createVNode(_sfc_main$1, {
336
- onClick: editTrack,
337
- color: "transp",
338
- size: "small",
339
- class: "w-100 justify-start"
340
- }, {
341
- default: withCtx(() => _cache[9] || (_cache[9] = [
342
- createTextVNode(" Edit Track ")
343
- ])),
344
- _: 1
345
- }),
346
- createVNode(_sfc_main$1, {
347
- onClick: deleteTrack,
348
- color: "danger",
349
- size: "small",
350
- class: "w-100 justify-start"
351
- }, {
352
- default: withCtx(() => _cache[10] || (_cache[10] = [
353
- createTextVNode(" Delete Track ")
354
- ])),
355
- _: 1
356
- })
357
- ], 64)) : createCommentVNode("", true)
358
- ])
359
- ]),
360
- _: 1
361
- }, 8, ["label", "modelValue"])
281
+ track.value.artist ? (openBlock(), createElementBlock("h3", _hoisted_16, "Artist")) : createCommentVNode("", true),
282
+ (openBlock(), createBlock(ArtistCardSmall, {
283
+ key: track.value.artist._id,
284
+ artist: track.value.artist,
285
+ "is-following": isFollowingArtist.value,
286
+ "show-follow-button": !isOwner.value,
287
+ onToggleFollow: toggleFollowArtist
288
+ }, null, 8, ["artist", "is-following", "show-follow-button"]))
362
289
  ]),
290
+ _cache[12] || (_cache[12] = createElementVNode("h3", { class: "t-medium mn-b-small" }, "Metadata", -1)),
363
291
  createElementVNode("div", _hoisted_17, [
364
- track.value.artist ? (openBlock(), createElementBlock("h3", _hoisted_18, "Artist")) : createCommentVNode("", true),
365
- createElementVNode("div", _hoisted_19, [
366
- (openBlock(), createBlock(ArtistCardSmall, {
367
- key: track.value.artist._id,
368
- artist: track.value.artist,
369
- "is-following": isFollowingArtist.value,
370
- "show-follow-button": !isOwner.value,
371
- onToggleFollow: toggleFollowArtist
372
- }, null, 8, ["artist", "is-following", "show-follow-button"]))
373
- ])
374
- ]),
375
- _cache[20] || (_cache[20] = createElementVNode("h3", { class: "t-medium mn-b-small" }, "Metadata", -1)),
376
- createElementVNode("div", _hoisted_20, [
377
- createElementVNode("div", _hoisted_21, [
378
- createVNode(_sfc_main$8, { class: "i-medium t-primary" }),
292
+ createElementVNode("div", _hoisted_18, [
293
+ createVNode(_sfc_main$7, { class: "i-medium t-primary" }),
379
294
  createElementVNode("div", null, [
380
- _cache[12] || (_cache[12] = createElementVNode("div", { class: "t-small t-transp t-uppercase" }, "Released", -1)),
381
- createElementVNode("div", _hoisted_22, toDisplayString(formatDate(track.value.releaseDate)), 1)
295
+ _cache[4] || (_cache[4] = createElementVNode("div", { class: "t-small t-transp t-uppercase" }, "Released", -1)),
296
+ createElementVNode("div", _hoisted_19, toDisplayString(formatDate(track.value.releaseDate)), 1)
382
297
  ])
383
298
  ]),
384
- createElementVNode("div", _hoisted_23, [
299
+ createElementVNode("div", _hoisted_20, [
385
300
  createVNode(IconTime, { class: "i-medium t-primary" }),
386
301
  createElementVNode("div", null, [
387
- _cache[13] || (_cache[13] = createElementVNode("div", { class: "t-small t-transp t-uppercase" }, "Duration", -1)),
388
- createElementVNode("div", _hoisted_24, toDisplayString(formatDuration(track.value.duration)), 1)
302
+ _cache[5] || (_cache[5] = createElementVNode("div", { class: "t-small t-transp t-uppercase" }, "Duration", -1)),
303
+ createElementVNode("div", _hoisted_21, toDisplayString(formatDuration(track.value.duration)), 1)
389
304
  ])
390
305
  ]),
391
- createElementVNode("div", _hoisted_25, [
392
- createVNode(_sfc_main$9, { class: "i-medium t-primary" }),
306
+ createElementVNode("div", _hoisted_22, [
307
+ createVNode(_sfc_main$8, { class: "i-medium t-primary" }),
393
308
  createElementVNode("div", null, [
394
- _cache[14] || (_cache[14] = createElementVNode("div", { class: "t-small t-transp t-uppercase" }, "Status", -1)),
395
- createElementVNode("div", _hoisted_26, toDisplayString(track.value.status), 1)
309
+ _cache[6] || (_cache[6] = createElementVNode("div", { class: "t-small t-transp t-uppercase" }, "Status", -1)),
310
+ createElementVNode("div", _hoisted_23, toDisplayString(track.value.status), 1)
396
311
  ])
397
312
  ]),
398
- createElementVNode("div", _hoisted_27, [
399
- createVNode(_sfc_main$a, { class: "i-medium t-primary" }),
313
+ createElementVNode("div", _hoisted_24, [
314
+ createVNode(_sfc_main$9, { class: "i-medium t-primary" }),
400
315
  createElementVNode("div", null, [
401
- _cache[15] || (_cache[15] = createElementVNode("div", { class: "t-small t-transp t-uppercase" }, "Visibility", -1)),
402
- createElementVNode("div", _hoisted_28, toDisplayString(track.value.isPublic ? "Public" : "Private"), 1)
316
+ _cache[7] || (_cache[7] = createElementVNode("div", { class: "t-small t-transp t-uppercase" }, "Visibility", -1)),
317
+ createElementVNode("div", _hoisted_25, toDisplayString(track.value.isPublic ? "Public" : "Private"), 1)
403
318
  ])
404
319
  ])
405
320
  ]),
406
- track.value.album ? (openBlock(), createElementBlock("h3", _hoisted_29, "From Album")) : createCommentVNode("", true),
407
- track.value.album ? (openBlock(), createElementBlock("div", _hoisted_30, [
321
+ track.value.album ? (openBlock(), createElementBlock("h3", _hoisted_26, "From Album")) : createCommentVNode("", true),
322
+ track.value.album ? (openBlock(), createElementBlock("div", _hoisted_27, [
408
323
  createVNode(_component_router_link, {
409
324
  to: `/album/${track.value.album.url}`,
410
325
  class: "flex flex-v-center gap-thin hover-opacity"
@@ -415,14 +330,14 @@ const _sfc_main = {
415
330
  alt: track.value.album.title,
416
331
  class: "w-3r h-3r radius-thin o-hidden object-cover"
417
332
  }, null, 8, ["url", "alt"]),
418
- createElementVNode("span", _hoisted_31, toDisplayString(track.value.album.title), 1)
333
+ createElementVNode("span", _hoisted_28, toDisplayString(track.value.album.title), 1)
419
334
  ]),
420
335
  _: 1
421
336
  }, 8, ["to"])
422
337
  ])) : createCommentVNode("", true),
423
- track.value.genre && track.value.genre.length || track.value.tags && track.value.tags.length ? (openBlock(), createElementBlock("div", _hoisted_32, [
424
- _cache[16] || (_cache[16] = createElementVNode("h3", { class: "t-medium mn-b-small" }, "Genres & Tags", -1)),
425
- createElementVNode("div", _hoisted_33, [
338
+ track.value.genre && track.value.genre.length || track.value.tags && track.value.tags.length ? (openBlock(), createElementBlock("div", _hoisted_29, [
339
+ _cache[8] || (_cache[8] = createElementVNode("h3", { class: "t-medium mn-b-small" }, "Genres & Tags", -1)),
340
+ createElementVNode("div", _hoisted_30, [
426
341
  (openBlock(true), createElementBlock(Fragment, null, renderList(track.value.genre, (genre) => {
427
342
  return openBlock(), createElementBlock("span", {
428
343
  key: genre,
@@ -437,19 +352,19 @@ const _sfc_main = {
437
352
  }), 128))
438
353
  ])
439
354
  ])) : createCommentVNode("", true),
440
- track.value.description ? (openBlock(), createElementBlock("div", _hoisted_34, [
441
- _cache[17] || (_cache[17] = createElementVNode("h3", { class: "t-medium mn-b-small" }, "About", -1)),
442
- createElementVNode("p", _hoisted_35, toDisplayString(track.value.description), 1)
355
+ track.value.description ? (openBlock(), createElementBlock("div", _hoisted_31, [
356
+ _cache[9] || (_cache[9] = createElementVNode("h3", { class: "t-medium mn-b-small" }, "About", -1)),
357
+ createElementVNode("p", _hoisted_32, toDisplayString(track.value.description), 1)
443
358
  ])) : createCommentVNode("", true),
444
- track.value.lyrics ? (openBlock(), createElementBlock("div", _hoisted_36, [
445
- _cache[18] || (_cache[18] = createElementVNode("h3", { class: "t-medium mn-b-small" }, "Lyrics", -1)),
446
- createElementVNode("pre", _hoisted_37, toDisplayString(track.value.lyrics), 1)
359
+ track.value.lyrics ? (openBlock(), createElementBlock("div", _hoisted_33, [
360
+ _cache[10] || (_cache[10] = createElementVNode("h3", { class: "t-medium mn-b-small" }, "Lyrics", -1)),
361
+ createElementVNode("pre", _hoisted_34, toDisplayString(track.value.lyrics), 1)
447
362
  ])) : createCommentVNode("", true)
448
363
  ])
449
364
  ])) : createCommentVNode("", true),
450
- track.value && relatedTracks.value && relatedTracks.value.length ? (openBlock(), createElementBlock("section", _hoisted_38, [
451
- _cache[21] || (_cache[21] = createElementVNode("h2", { class: "h2 mn-b-medium" }, "Related Tracks", -1)),
452
- createVNode(_sfc_main$b, {
365
+ track.value && relatedTracks.value && relatedTracks.value.length ? (openBlock(), createElementBlock("section", _hoisted_35, [
366
+ _cache[13] || (_cache[13] = createElementVNode("h2", { class: "h2 mn-b-medium" }, "Related Tracks", -1)),
367
+ createVNode(_sfc_main$a, {
453
368
  store: {
454
369
  read: () => new _ctx.Promise((resolve) => resolve(relatedTracks.value || [])),
455
370
  state: { isLoading: false }
@@ -466,9 +381,9 @@ const _sfc_main = {
466
381
  class: "grid cols-2 cols-m-3 cols-l-4 gap-regular"
467
382
  }, {
468
383
  default: withCtx(({ items }) => [
469
- createElementVNode("div", _hoisted_39, [
384
+ createElementVNode("div", _hoisted_36, [
470
385
  (openBlock(true), createElementBlock(Fragment, null, renderList(items, (relatedTrack, index) => {
471
- return openBlock(), createBlock(_sfc_main$c, {
386
+ return openBlock(), createBlock(_sfc_main$b, {
472
387
  key: relatedTrack._id,
473
388
  track: relatedTrack,
474
389
  index,
@@ -481,12 +396,12 @@ const _sfc_main = {
481
396
  _: 1
482
397
  }, 8, ["store", "items"])
483
398
  ])) : createCommentVNode("", true),
484
- showAddToPlaylistModal.value ? (openBlock(), createBlock(_sfc_main$d, {
399
+ showAddToPlaylistModal.value ? (openBlock(), createBlock(_sfc_main$c, {
485
400
  key: 4,
486
- onClosePopup: _cache[2] || (_cache[2] = ($event) => showAddToPlaylistModal.value = false),
401
+ onClosePopup: _cache[0] || (_cache[0] = ($event) => showAddToPlaylistModal.value = false),
487
402
  class: "bg-white pd-medium w-m-25r radius-medium"
488
403
  }, {
489
- default: withCtx(() => _cache[22] || (_cache[22] = [
404
+ default: withCtx(() => _cache[14] || (_cache[14] = [
490
405
  createElementVNode("h3", { class: "h3 mn-b-medium" }, "Add to Playlist", -1),
491
406
  createElementVNode("p", { class: "t-transp" }, "Playlist selector coming soon...", -1)
492
407
  ])),