@ozdao/martyrs 0.2.492 → 0.2.494
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.
- package/dist/_virtual/index.cjs +4 -4
- package/dist/_virtual/index.js +4 -4
- package/dist/_virtual/index2.cjs +4 -4
- package/dist/_virtual/index2.js +4 -4
- package/dist/builder.cjs +53 -90
- package/dist/builder.js +54 -91
- package/dist/{crud-B-kQw3Z5.cjs → crud-JN_LFj01.cjs} +3 -0
- package/dist/{crud-Cwx5VlSm.js → crud-sE7GLPbj.js} +3 -0
- package/dist/globals.server.cjs +322 -3
- package/dist/globals.server.js +303 -1
- package/dist/{globals.verifier-D68mHEBl.cjs → globals.verifier-C0zj_LLo.cjs} +8 -1
- package/dist/{globals.verifier-CWFz5Gh2.js → globals.verifier-DFqKQ7hK.js} +8 -1
- package/dist/inventory.server.cjs +2 -2
- package/dist/inventory.server.js +2 -2
- package/dist/{main-SZQ1QjeP.js → main-CJm5myDI.js} +631 -607
- package/dist/{main-MzmGbSxs.cjs → main-DTaE01lg.cjs} +6 -6
- package/dist/martyrs/src/components/Calendar/Calendar.vue2.cjs +1 -1
- package/dist/martyrs/src/components/Calendar/Calendar.vue2.cjs.map +1 -1
- package/dist/martyrs/src/components/Calendar/Calendar.vue2.js +1 -1
- package/dist/martyrs/src/components/Calendar/Calendar.vue2.js.map +1 -1
- package/dist/martyrs/src/components/Feed/Feed.vue.cjs +33 -7
- package/dist/martyrs/src/components/Feed/Feed.vue.cjs.map +1 -1
- package/dist/martyrs/src/components/Feed/Feed.vue.js +33 -7
- package/dist/martyrs/src/components/Feed/Feed.vue.js.map +1 -1
- package/dist/martyrs/src/components/Field/{Field.vue2.cjs → Field.vue.cjs} +2 -2
- package/dist/martyrs/src/components/Field/{Field.vue2.js.map → Field.vue.cjs.map} +1 -1
- package/dist/martyrs/src/components/Field/{Field.vue2.js → Field.vue.js} +2 -2
- package/dist/martyrs/src/components/Field/Field.vue.js.map +1 -0
- package/dist/martyrs/src/components/FieldBig/FieldBig.vue.cjs +1 -1
- package/dist/martyrs/src/components/FieldBig/FieldBig.vue.js +1 -1
- package/dist/martyrs/src/components/FieldTags/FieldTags.vue.cjs +1 -1
- package/dist/martyrs/src/components/FieldTags/FieldTags.vue.js +1 -1
- package/dist/martyrs/src/components/Menu/{Menu.vue.cjs → Menu.vue2.cjs} +2 -2
- package/dist/martyrs/src/components/Menu/Menu.vue2.cjs.map +1 -0
- package/dist/martyrs/src/components/Menu/{Menu.vue.js → Menu.vue2.js} +2 -2
- package/dist/martyrs/src/components/Menu/Menu.vue2.js.map +1 -0
- package/dist/martyrs/src/components/Menu/MenuItem.vue.js +2 -2
- package/dist/martyrs/src/components/Menu/MenuItem.vue.js.map +1 -1
- package/dist/martyrs/src/components/PhotoViewer/PhotoViewer.vue.js +4 -4
- package/dist/martyrs/src/modules/auth/views/components/pages/EnterCode.vue.cjs +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/EnterCode.vue.js +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/EnterPassword.vue.cjs +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/EnterPassword.vue.js +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/Invite.vue.cjs +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/Invite.vue.js +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.cjs +2 -2
- package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.js +2 -2
- package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditProfile.vue.cjs +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditProfile.vue.js +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/ResetPassword.vue.cjs +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/ResetPassword.vue.js +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/SignIn.vue.cjs +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/SignIn.vue.js +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/SignUp.vue.cjs +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/SignUp.vue.js +1 -1
- package/dist/martyrs/src/modules/auth/views/components/sections/ProfileEditCredentials.vue.cjs +1 -1
- package/dist/martyrs/src/modules/auth/views/components/sections/ProfileEditCredentials.vue.js +1 -1
- package/dist/martyrs/src/modules/community/components/pages/CreateBlogPost.vue.cjs +2 -2
- package/dist/martyrs/src/modules/community/components/pages/CreateBlogPost.vue.js +2 -2
- package/dist/martyrs/src/modules/constructor/components/elements/Card.vue.cjs +1 -1
- package/dist/martyrs/src/modules/constructor/components/elements/Card.vue.js +1 -1
- package/dist/martyrs/src/modules/constructor/components/elements/Embed.vue.cjs +1 -1
- package/dist/martyrs/src/modules/constructor/components/elements/Embed.vue.js +1 -1
- package/dist/martyrs/src/modules/events/components/pages/EditEvent.vue.cjs +1 -1
- package/dist/martyrs/src/modules/events/components/pages/EditEvent.vue.js +1 -1
- package/dist/martyrs/src/modules/events/components/pages/EditEventTickets.vue.cjs +1 -1
- package/dist/martyrs/src/modules/events/components/pages/EditEventTickets.vue.js +1 -1
- package/dist/martyrs/src/modules/events/components/pages/Event.vue.cjs +1 -1
- package/dist/martyrs/src/modules/events/components/pages/Event.vue.js +1 -1
- package/dist/martyrs/src/modules/gallery/components/sections/BackofficeGallery.vue.cjs +1 -1
- package/dist/martyrs/src/modules/gallery/components/sections/BackofficeGallery.vue.js +1 -1
- package/dist/martyrs/src/modules/globals/views/classes/globals.i18n.cjs +1 -1
- package/dist/martyrs/src/modules/globals/views/classes/globals.i18n.js +1 -1
- package/dist/martyrs/src/modules/globals/views/components/blocks/BlockSearch.vue.cjs +1 -1
- package/dist/martyrs/src/modules/globals/views/components/blocks/BlockSearch.vue.js +1 -1
- package/dist/martyrs/src/modules/globals/views/components/layouts/Client.vue.cjs +5 -1
- package/dist/martyrs/src/modules/globals/views/components/layouts/Client.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/globals/views/components/layouts/Client.vue.js +5 -1
- package/dist/martyrs/src/modules/globals/views/components/layouts/Client.vue.js.map +1 -1
- package/dist/martyrs/src/modules/icons/entities/IconTime.vue.cjs +2 -2
- package/dist/martyrs/src/modules/icons/entities/IconTime.vue.js +2 -2
- package/dist/martyrs/src/modules/icons/navigation/IconChevronLeft.vue.cjs +2 -2
- package/dist/martyrs/src/modules/icons/navigation/IconChevronLeft.vue.js +2 -2
- package/dist/martyrs/src/modules/icons/navigation/IconChevronRight.vue.cjs +2 -2
- package/dist/martyrs/src/modules/icons/navigation/IconChevronRight.vue.js +2 -2
- package/dist/martyrs/src/modules/icons/pages/IconsPage.vue.js +6 -6
- package/dist/martyrs/src/modules/icons/pages/IconsPage.vue.js.map +1 -1
- package/dist/martyrs/src/modules/inventory/components/forms/AdjustmentForm.vue.cjs +1 -1
- package/dist/martyrs/src/modules/inventory/components/forms/AdjustmentForm.vue.js +1 -1
- package/dist/martyrs/src/modules/inventory/components/forms/StockAlertsForm.vue.cjs +1 -1
- package/dist/martyrs/src/modules/inventory/components/forms/StockAlertsForm.vue.js +1 -1
- package/dist/martyrs/src/modules/inventory/components/pages/Inventory.vue.cjs +1 -1
- package/dist/martyrs/src/modules/inventory/components/pages/InventoryEdit.vue.cjs +1 -1
- package/dist/martyrs/src/modules/inventory/components/pages/InventoryEdit.vue.js +1 -1
- package/dist/martyrs/src/modules/music/components/cards/AlbumCard.vue.cjs +22 -15
- package/dist/martyrs/src/modules/music/components/cards/AlbumCard.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/music/components/cards/AlbumCard.vue.js +23 -16
- package/dist/martyrs/src/modules/music/components/cards/AlbumCard.vue.js.map +1 -1
- package/dist/martyrs/src/modules/music/components/cards/ArtistCard.vue.cjs +2 -2
- package/dist/martyrs/src/modules/music/components/cards/ArtistCard.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/music/components/cards/ArtistCard.vue.js +2 -2
- package/dist/martyrs/src/modules/music/components/cards/ArtistCard.vue.js.map +1 -1
- package/dist/martyrs/src/modules/music/components/cards/PlaylistCard.vue.cjs +31 -13
- package/dist/martyrs/src/modules/music/components/cards/PlaylistCard.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/music/components/cards/PlaylistCard.vue.js +33 -15
- package/dist/martyrs/src/modules/music/components/cards/PlaylistCard.vue.js.map +1 -1
- package/dist/martyrs/src/modules/music/components/cards/TrackListCard.vue.cjs +39 -22
- package/dist/martyrs/src/modules/music/components/cards/TrackListCard.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/music/components/cards/TrackListCard.vue.js +39 -22
- package/dist/martyrs/src/modules/music/components/cards/TrackListCard.vue.js.map +1 -1
- package/dist/martyrs/src/modules/music/components/forms/AlbumForm.vue.cjs +1 -1
- package/dist/martyrs/src/modules/music/components/forms/AlbumForm.vue.js +1 -1
- package/dist/martyrs/src/modules/music/components/forms/ArtistForm.vue.cjs +1 -1
- package/dist/martyrs/src/modules/music/components/forms/ArtistForm.vue.js +1 -1
- package/dist/martyrs/src/modules/music/components/forms/PlaylistForm.vue.cjs +385 -125
- package/dist/martyrs/src/modules/music/components/forms/PlaylistForm.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/music/components/forms/PlaylistForm.vue.js +391 -131
- package/dist/martyrs/src/modules/music/components/forms/PlaylistForm.vue.js.map +1 -1
- package/dist/martyrs/src/modules/music/components/forms/SearchForm.vue.cjs +24 -7
- package/dist/martyrs/src/modules/music/components/forms/SearchForm.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/music/components/forms/SearchForm.vue.js +25 -8
- package/dist/martyrs/src/modules/music/components/forms/SearchForm.vue.js.map +1 -1
- package/dist/martyrs/src/modules/music/components/forms/TrackForm.vue.cjs +99 -87
- package/dist/martyrs/src/modules/music/components/forms/TrackForm.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/music/components/forms/TrackForm.vue.js +111 -99
- package/dist/martyrs/src/modules/music/components/forms/TrackForm.vue.js.map +1 -1
- package/dist/martyrs/src/modules/music/components/layouts/MusicBottomPlayer.vue.cjs +21 -0
- package/dist/martyrs/src/modules/music/components/layouts/MusicBottomPlayer.vue.cjs.map +1 -0
- package/dist/martyrs/src/modules/music/components/layouts/MusicBottomPlayer.vue.js +21 -0
- package/dist/martyrs/src/modules/music/components/layouts/MusicBottomPlayer.vue.js.map +1 -0
- package/dist/martyrs/src/modules/music/components/pages/Album.vue.cjs +442 -210
- package/dist/martyrs/src/modules/music/components/pages/Album.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/music/components/pages/Album.vue.js +445 -213
- package/dist/martyrs/src/modules/music/components/pages/Album.vue.js.map +1 -1
- package/dist/martyrs/src/modules/music/components/pages/Artist.vue.cjs +92 -117
- package/dist/martyrs/src/modules/music/components/pages/Artist.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/music/components/pages/Artist.vue.js +93 -118
- package/dist/martyrs/src/modules/music/components/pages/Artist.vue.js.map +1 -1
- package/dist/martyrs/src/modules/music/components/pages/MusicHome.vue.cjs +72 -113
- package/dist/martyrs/src/modules/music/components/pages/MusicHome.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/music/components/pages/MusicHome.vue.js +78 -119
- package/dist/martyrs/src/modules/music/components/pages/MusicHome.vue.js.map +1 -1
- package/dist/martyrs/src/modules/music/components/pages/MusicLibrary.vue.cjs +15 -12
- package/dist/martyrs/src/modules/music/components/pages/MusicLibrary.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/music/components/pages/MusicLibrary.vue.js +15 -12
- package/dist/martyrs/src/modules/music/components/pages/MusicLibrary.vue.js.map +1 -1
- package/dist/martyrs/src/modules/music/components/pages/Playlist.vue.cjs +558 -429
- package/dist/martyrs/src/modules/music/components/pages/Playlist.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/music/components/pages/Playlist.vue.js +560 -431
- package/dist/martyrs/src/modules/music/components/pages/Playlist.vue.js.map +1 -1
- package/dist/martyrs/src/modules/music/components/pages/SearchResults.vue.cjs +146 -284
- package/dist/martyrs/src/modules/music/components/pages/SearchResults.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/music/components/pages/SearchResults.vue.js +149 -287
- package/dist/martyrs/src/modules/music/components/pages/SearchResults.vue.js.map +1 -1
- package/dist/martyrs/src/modules/music/components/pages/Track.vue.cjs +460 -63
- package/dist/martyrs/src/modules/music/components/pages/Track.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/music/components/pages/Track.vue.js +462 -65
- package/dist/martyrs/src/modules/music/components/pages/Track.vue.js.map +1 -1
- package/dist/martyrs/src/modules/music/components/player/MusicPlayer.vue.cjs +126 -136
- package/dist/martyrs/src/modules/music/components/player/MusicPlayer.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/music/components/player/MusicPlayer.vue.js +129 -139
- package/dist/martyrs/src/modules/music/components/player/MusicPlayer.vue.js.map +1 -1
- package/dist/martyrs/src/modules/music/components/player/TrackProgress.vue.cjs +18 -15
- package/dist/martyrs/src/modules/music/components/player/TrackProgress.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/music/components/player/TrackProgress.vue.js +18 -15
- package/dist/martyrs/src/modules/music/components/player/TrackProgress.vue.js.map +1 -1
- package/dist/martyrs/src/modules/music/components/player/VolumeControl.vue.cjs +28 -23
- package/dist/martyrs/src/modules/music/components/player/VolumeControl.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/music/components/player/VolumeControl.vue.js +29 -24
- package/dist/martyrs/src/modules/music/components/player/VolumeControl.vue.js.map +1 -1
- package/dist/martyrs/src/modules/music/music.client.cjs +3 -6
- package/dist/martyrs/src/modules/music/music.client.cjs.map +1 -1
- package/dist/martyrs/src/modules/music/music.client.js +9 -12
- package/dist/martyrs/src/modules/music/music.client.js.map +1 -1
- package/dist/martyrs/src/modules/music/router/music.cjs +27 -1
- package/dist/martyrs/src/modules/music/router/music.cjs.map +1 -1
- package/dist/martyrs/src/modules/music/router/music.js +27 -1
- package/dist/martyrs/src/modules/music/router/music.js.map +1 -1
- package/dist/martyrs/src/modules/music/store/artists.cjs +6 -4
- package/dist/martyrs/src/modules/music/store/artists.cjs.map +1 -1
- package/dist/martyrs/src/modules/music/store/artists.js +6 -4
- package/dist/martyrs/src/modules/music/store/artists.js.map +1 -1
- package/dist/martyrs/src/modules/music/store/player.cjs +5 -0
- package/dist/martyrs/src/modules/music/store/player.cjs.map +1 -1
- package/dist/martyrs/src/modules/music/store/player.js +5 -0
- package/dist/martyrs/src/modules/music/store/player.js.map +1 -1
- package/dist/martyrs/src/modules/music/store/tracks.cjs +22 -0
- package/dist/martyrs/src/modules/music/store/tracks.cjs.map +1 -1
- package/dist/martyrs/src/modules/music/store/tracks.js +22 -0
- package/dist/martyrs/src/modules/music/store/tracks.js.map +1 -1
- package/dist/martyrs/src/modules/orders/components/blocks/CardOrderBackoffice.vue.js +2 -2
- package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.js +2 -2
- package/dist/martyrs/src/modules/orders/components/pages/OrderCreateBackoffice.vue.cjs +1 -1
- package/dist/martyrs/src/modules/orders/components/pages/OrderCreateBackoffice.vue.js +1 -1
- package/dist/martyrs/src/modules/orders/components/sections/FormAddCustomer.vue.cjs +1 -1
- package/dist/martyrs/src/modules/orders/components/sections/FormAddCustomer.vue.js +1 -1
- package/dist/martyrs/src/modules/orders/components/sections/FormCustomerDetails.vue.cjs +1 -1
- package/dist/martyrs/src/modules/orders/components/sections/FormCustomerDetails.vue.js +1 -1
- package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.cjs +1 -1
- package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.js +1 -1
- package/dist/martyrs/src/modules/organizations/components/blocks/CardOrganization.vue.js +2 -2
- package/dist/martyrs/src/modules/organizations/components/pages/DepartmentEdit.vue.cjs +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/DepartmentEdit.vue.js +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/Members.vue.cjs +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/Members.vue.js +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.cjs +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.js +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/OrganizationBackoffice.vue.cjs +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/OrganizationBackoffice.vue.js +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.cjs +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.js +1 -1
- package/dist/martyrs/src/modules/organizations/components/sections/Documents.vue.cjs +1 -1
- package/dist/martyrs/src/modules/organizations/components/sections/Documents.vue.js +1 -1
- package/dist/martyrs/src/modules/organizations/components/sections/MembersAdd.vue.cjs +1 -1
- package/dist/martyrs/src/modules/organizations/components/sections/MembersAdd.vue.js +1 -1
- package/dist/martyrs/src/modules/organizations/components/sections/Organizations.vue.cjs +1 -1
- package/dist/martyrs/src/modules/organizations/components/sections/Organizations.vue.js +1 -1
- package/dist/martyrs/src/modules/organizations/router/organizations.cjs +1 -1
- package/dist/martyrs/src/modules/organizations/router/organizations.js +1 -1
- package/dist/martyrs/src/modules/pages/views/components/blocks/CardPage.vue.cjs +1 -1
- package/dist/martyrs/src/modules/pages/views/components/blocks/CardPage.vue.js +1 -1
- package/dist/martyrs/src/modules/pages/views/components/pages/PageEdit.vue.cjs +1 -1
- package/dist/martyrs/src/modules/pages/views/components/pages/PageEdit.vue.js +1 -1
- package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.cjs +1 -1
- package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.js +1 -1
- package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.cjs +1 -1
- package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.js +1 -1
- package/dist/martyrs/src/modules/products/components/sections/EditAttributes.vue.cjs +1 -1
- package/dist/martyrs/src/modules/products/components/sections/EditAttributes.vue.js +1 -1
- package/dist/martyrs/src/modules/products/components/sections/EditDiscounts.vue.cjs +1 -1
- package/dist/martyrs/src/modules/products/components/sections/EditDiscounts.vue.js +1 -1
- package/dist/martyrs/src/modules/products/components/sections/EditVariants.vue.cjs +1 -1
- package/dist/martyrs/src/modules/products/components/sections/EditVariants.vue.js +1 -1
- package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttBar.vue.cjs +4 -3
- package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttBar.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttBar.vue.js +4 -3
- package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttBar.vue.js.map +1 -1
- package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttChart.vue.cjs +37 -70
- package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttChart.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttChart.vue.js +38 -71
- package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttChart.vue.js.map +1 -1
- package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttToolbar.vue.cjs +2 -1
- package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttToolbar.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttToolbar.vue.js +6 -5
- package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttToolbar.vue.js.map +1 -1
- package/dist/martyrs/src/modules/rents/views/components/pages/Rents.vue.cjs +45 -52
- package/dist/martyrs/src/modules/rents/views/components/pages/Rents.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/rents/views/components/pages/Rents.vue.js +46 -53
- package/dist/martyrs/src/modules/rents/views/components/pages/Rents.vue.js.map +1 -1
- package/dist/martyrs/src/modules/rents/views/components/pages/RentsEdit.vue.cjs +1 -1
- package/dist/martyrs/src/modules/rents/views/components/pages/RentsEdit.vue.js +1 -1
- package/dist/martyrs/src/modules/spots/components/blocks/SpotMemberModify.vue.cjs +1 -1
- package/dist/martyrs/src/modules/spots/components/blocks/SpotMemberModify.vue.js +1 -1
- package/dist/martyrs/src/modules/spots/components/layouts/Spots.vue.cjs +1 -1
- package/dist/martyrs/src/modules/spots/components/layouts/Spots.vue.js +1 -1
- package/dist/martyrs/src/modules/spots/components/pages/SpotEdit.vue.cjs +1 -1
- package/dist/martyrs/src/modules/spots/components/pages/SpotEdit.vue.js +1 -1
- package/dist/martyrs/src/modules/spots/components/sections/WorktimeEdit.vue.cjs +1 -1
- package/dist/martyrs/src/modules/spots/components/sections/WorktimeEdit.vue.js +1 -1
- package/dist/martyrs/src/modules/wallet/views/components/blocks/CardDeposit.vue.cjs +1 -1
- package/dist/martyrs/src/modules/wallet/views/components/blocks/CardDeposit.vue.js +1 -1
- package/dist/martyrs/src/modules/wallet/views/components/blocks/CryptoDeposit.vue.cjs +1 -1
- package/dist/martyrs/src/modules/wallet/views/components/blocks/CryptoDeposit.vue.js +1 -1
- package/dist/martyrs.cjs.js +1 -1
- package/dist/martyrs.css +1 -1
- package/dist/martyrs.es.js +1 -1
- package/dist/music.server.cjs +124 -31
- package/dist/music.server.js +124 -31
- package/dist/organizations.server.cjs +1 -1
- package/dist/organizations.server.js +1 -1
- package/dist/products.server.cjs +2 -2
- package/dist/products.server.js +2 -2
- package/dist/rents.server.cjs +3 -3
- package/dist/rents.server.js +3 -3
- package/dist/style.css +373 -80
- package/dist/{web-D7lZjuC0.js → web-Dkk0_7TA.js} +1 -1
- package/dist/{web-D-YZ9KHz.cjs → web-stVkXd0l.cjs} +1 -1
- package/package.json +1 -1
- package/src/builder/modes/ssr.prod.js +21 -5
- package/src/builder/rspack/rspack.config.spa.client.js +0 -44
- package/src/builder/rspack/rspack.config.ssr.client.js +40 -40
- package/src/components/Calendar/Calendar.vue +378 -377
- package/src/components/Feed/Feed.vue +28 -2
- package/src/modules/globals/controllers/classes/crud/crud.policies.js +5 -0
- package/src/modules/globals/controllers/classes/globals.validator.js +8 -1
- package/src/modules/globals/views/components/layouts/Client.vue +7 -0
- package/src/modules/music/README.md +8 -0
- package/src/modules/music/components/SidebarMusic.vue +6 -9
- package/src/modules/music/components/cards/AlbumCard.vue +20 -14
- package/src/modules/music/components/cards/ArtistCard.vue +1 -1
- package/src/modules/music/components/cards/PlaylistCard.vue +31 -11
- package/src/modules/music/components/cards/TrackListCard.vue +24 -13
- package/src/modules/music/components/forms/PlaylistForm.vue +417 -107
- package/src/modules/music/components/forms/SearchForm.vue +31 -8
- package/src/modules/music/components/forms/TrackForm.vue +50 -32
- package/src/modules/music/components/layouts/MusicBottomPlayer.vue +17 -0
- package/src/modules/music/components/pages/Album.vue +373 -186
- package/src/modules/music/components/pages/Artist.vue +54 -94
- package/src/modules/music/components/pages/MusicHome.vue +59 -56
- package/src/modules/music/components/pages/MusicLibrary.vue +13 -11
- package/src/modules/music/components/pages/Playlist.vue +495 -379
- package/src/modules/music/components/pages/SearchResults.vue +185 -313
- package/src/modules/music/components/pages/Track.vue +363 -69
- package/src/modules/music/components/player/MusicPlayer.vue +368 -97
- package/src/modules/music/components/player/TrackProgress.vue +76 -22
- package/src/modules/music/components/player/VolumeControl.vue +61 -28
- package/src/modules/music/controllers/search.controller.js +3 -0
- package/src/modules/music/controllers/stream.controller.js +11 -3
- package/src/modules/music/middlewares/playlists.verifier.js +1 -1
- package/src/modules/music/music.client.js +3 -6
- package/src/modules/music/music.server.js +8 -4
- package/src/modules/music/router/music.js +8 -1
- package/src/modules/music/routes/albums.routes.js +37 -5
- package/src/modules/music/routes/artists.routes.js +14 -4
- package/src/modules/music/routes/genres.routes.js +5 -1
- package/src/modules/music/routes/playlists.routes.js +42 -9
- package/src/modules/music/routes/tracks.routes.js +27 -2
- package/src/modules/music/store/artists.js +6 -2
- package/src/modules/music/store/player.js +6 -0
- package/src/modules/music/store/tracks.js +31 -0
- package/src/modules/music/websocket/streaming.handler.js +7 -1
- package/src/modules/rents/controllers/services/rents.services.js +2 -2
- package/src/modules/rents/views/components/pages/Gant/GanttBar.vue +4 -3
- package/src/modules/rents/views/components/pages/Gant/GanttChart.vue +42 -40
- package/src/modules/rents/views/components/pages/Gant/GanttToolbar.vue +3 -1
- package/src/modules/rents/views/components/pages/Rents.vue +60 -56
- package/dist/globals.websocket-DzvdIBf6.js +0 -306
- package/dist/globals.websocket-k6_B1T7k.cjs +0 -322
- package/dist/martyrs/src/components/Field/Field.vue2.cjs.map +0 -1
- package/dist/martyrs/src/components/Menu/Menu.vue.cjs.map +0 -1
- package/dist/martyrs/src/components/Menu/Menu.vue.js.map +0 -1
- package/dist/martyrs/src/modules/music/components/cards/TrackCard.vue.cjs +0 -69
- package/dist/martyrs/src/modules/music/components/cards/TrackCard.vue.cjs.map +0 -1
- package/dist/martyrs/src/modules/music/components/cards/TrackCard.vue.js +0 -69
- package/dist/martyrs/src/modules/music/components/cards/TrackCard.vue.js.map +0 -1
- package/dist/martyrs/src/modules/music/components/layouts/MusicLayout.vue.cjs +0 -104
- package/dist/martyrs/src/modules/music/components/layouts/MusicLayout.vue.cjs.map +0 -1
- package/dist/martyrs/src/modules/music/components/layouts/MusicLayout.vue.js +0 -104
- package/dist/martyrs/src/modules/music/components/layouts/MusicLayout.vue.js.map +0 -1
- package/src/modules/music/components/cards/TrackCard.vue +0 -86
- package/src/modules/music/components/layouts/MusicLayout.vue +0 -83
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
|
|
3
|
-
const vue = require("vue");
|
|
4
|
-
const Media = require("../../../../components/Media/Media.vue.cjs");
|
|
5
|
-
const IconPlay = require("../../../icons/navigation/IconPlay.vue.cjs");
|
|
6
|
-
const player = require("../../store/player.cjs");
|
|
7
|
-
;/* empty css */
|
|
8
|
-
const _pluginVue_exportHelper = require("../../../../../../_virtual/_plugin-vue_export-helper.cjs");
|
|
9
|
-
const _hoisted_1 = { class: "track-card-content pd-small flex-v-center flex" };
|
|
10
|
-
const _hoisted_2 = { class: "track-cover mn-r-small" };
|
|
11
|
-
const _hoisted_3 = { class: "track-info flex-1" };
|
|
12
|
-
const _hoisted_4 = { class: "track-name t-truncate" };
|
|
13
|
-
const _hoisted_5 = { class: "track-artist t-grey t-small t-truncate" };
|
|
14
|
-
const _hoisted_6 = { class: "track-play pos-absolute pos-r-0 pos-t-0 h-100 pd-small flex-center flex" };
|
|
15
|
-
const _hoisted_7 = { class: "play-button bg-main radius-round flex-center flex aspect-1x1 i-medium" };
|
|
16
|
-
const _sfc_main = {
|
|
17
|
-
__name: "TrackCard",
|
|
18
|
-
props: {
|
|
19
|
-
track: {
|
|
20
|
-
type: Object,
|
|
21
|
-
required: true
|
|
22
|
-
}
|
|
23
|
-
},
|
|
24
|
-
setup(__props) {
|
|
25
|
-
const props = __props;
|
|
26
|
-
const getArtistName = (track) => {
|
|
27
|
-
if (track.artist) {
|
|
28
|
-
if (typeof track.artist === "object") {
|
|
29
|
-
return track.artist.name || "Unknown Artist";
|
|
30
|
-
}
|
|
31
|
-
return track.artist;
|
|
32
|
-
}
|
|
33
|
-
return "Unknown Artist";
|
|
34
|
-
};
|
|
35
|
-
const playTrack = () => {
|
|
36
|
-
player.actions.playTrack(props.track);
|
|
37
|
-
};
|
|
38
|
-
return (_ctx, _cache) => {
|
|
39
|
-
return vue.openBlock(), vue.createElementBlock("div", {
|
|
40
|
-
class: "track-card radius-small o-hidden pos-relative cursor-pointer transition-cubic-in-out bg-dark-transp-20",
|
|
41
|
-
onClick: playTrack
|
|
42
|
-
}, [
|
|
43
|
-
vue.createElementVNode("div", _hoisted_1, [
|
|
44
|
-
vue.createElementVNode("div", _hoisted_2, [
|
|
45
|
-
vue.createVNode(Media.default, {
|
|
46
|
-
url: __props.track.coverUrl || __props.track.album && __props.track.album.coverUrl || "/assets/placeholder-track.jpg",
|
|
47
|
-
class: "w-3r h-3r object-fit-cover radius-small"
|
|
48
|
-
}, null, 8, ["url"])
|
|
49
|
-
]),
|
|
50
|
-
vue.createElementVNode("div", _hoisted_3, [
|
|
51
|
-
vue.createElementVNode("div", _hoisted_4, vue.toDisplayString(__props.track.title), 1),
|
|
52
|
-
vue.createElementVNode("div", _hoisted_5, vue.toDisplayString(getArtistName(__props.track)), 1)
|
|
53
|
-
]),
|
|
54
|
-
vue.createElementVNode("div", _hoisted_6, [
|
|
55
|
-
vue.createElementVNode("div", _hoisted_7, [
|
|
56
|
-
vue.createVNode(IconPlay.default, {
|
|
57
|
-
class: "i-small",
|
|
58
|
-
fill: "rgb(var(--black))"
|
|
59
|
-
})
|
|
60
|
-
])
|
|
61
|
-
])
|
|
62
|
-
])
|
|
63
|
-
]);
|
|
64
|
-
};
|
|
65
|
-
}
|
|
66
|
-
};
|
|
67
|
-
const TrackCard = /* @__PURE__ */ _pluginVue_exportHelper.default(_sfc_main, [["__scopeId", "data-v-4db48be7"]]);
|
|
68
|
-
exports.default = TrackCard;
|
|
69
|
-
//# sourceMappingURL=TrackCard.vue.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"TrackCard.vue.cjs","sources":["../../../../../../../src/modules/music/components/cards/TrackCard.vue"],"sourcesContent":["<!-- components/cards/TrackCard.vue -->\n<template>\n <div \n class=\"track-card radius-small o-hidden pos-relative cursor-pointer transition-cubic-in-out bg-dark-transp-20\"\n @click=\"playTrack\"\n >\n <div class=\"track-card-content pd-small flex-v-center flex\">\n <div class=\"track-cover mn-r-small\">\n <Media \n :url=\"track.coverUrl || (track.album && track.album.coverUrl) || '/assets/placeholder-track.jpg'\" \n class=\"w-3r h-3r object-fit-cover radius-small\"\n />\n </div>\n \n <div class=\"track-info flex-1\">\n <div class=\"track-name t-truncate\">{{ track.title }}</div>\n <div class=\"track-artist t-grey t-small t-truncate\">{{ getArtistName(track) }}</div>\n </div>\n \n <div class=\"track-play pos-absolute pos-r-0 pos-t-0 h-100 pd-small flex-center flex\">\n <div class=\"play-button bg-main radius-round flex-center flex aspect-1x1 i-medium\">\n <IconPlay class=\"i-small\" fill=\"rgb(var(--black))\"/>\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<script setup>\nimport { computed } from 'vue';\nimport Media from '@martyrs/src/components/Media/Media.vue';\nimport IconPlay from '@martyrs/src/modules/icons/navigation/IconPlay.vue';\n\n// Import player store\nimport { actions as playerActions } from '../../store/player.js';\n\nconst props = defineProps({\n track: {\n type: Object,\n required: true\n }\n});\n\n// Methods\nconst getArtistName = (track) => {\n if (track.artist) {\n if (typeof track.artist === 'object') {\n return track.artist.name || 'Unknown Artist';\n }\n return track.artist;\n }\n return 'Unknown Artist';\n};\n\nconst playTrack = () => {\n playerActions.playTrack(props.track);\n};\n</script>\n\n<style scoped>\n.track-card {\n transition: background-color 0.3s ease;\n}\n\n.track-card:hover {\n background-color: rgba(var(--dark), 0.4);\n}\n\n.track-play {\n opacity: 0;\n transition: opacity 0.3s ease;\n}\n\n.track-card:hover .track-play {\n opacity: 1;\n}\n\n.play-button {\n transform: scale(0.8);\n transition: transform 0.3s ease;\n}\n\n.track-card:hover .play-button {\n transform: scale(1);\n}\n</style>"],"names":["playerActions"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAoCA,UAAM,QAAQ;AAQd,UAAM,gBAAgB,CAAC,UAAU;AAC/B,UAAI,MAAM,QAAQ;AAChB,YAAI,OAAO,MAAM,WAAW,UAAU;AACpC,iBAAO,MAAM,OAAO,QAAQ;AAAA,QAC9B;AACA,eAAO,MAAM;AAAA,MACf;AACA,aAAO;AAAA,IACT;AAEA,UAAM,YAAY,MAAM;AACtBA,qBAAc,UAAU,MAAM,KAAK;AAAA,IACrC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
import { createElementBlock, openBlock, createElementVNode, createVNode, toDisplayString } from "vue";
|
|
2
|
-
import Media from "../../../../components/Media/Media.vue.js";
|
|
3
|
-
import _sfc_main$1 from "../../../icons/navigation/IconPlay.vue.js";
|
|
4
|
-
import { actions } from "../../store/player.js";
|
|
5
|
-
/* empty css */
|
|
6
|
-
import _export_sfc from "../../../../../../_virtual/_plugin-vue_export-helper.js";
|
|
7
|
-
const _hoisted_1 = { class: "track-card-content pd-small flex-v-center flex" };
|
|
8
|
-
const _hoisted_2 = { class: "track-cover mn-r-small" };
|
|
9
|
-
const _hoisted_3 = { class: "track-info flex-1" };
|
|
10
|
-
const _hoisted_4 = { class: "track-name t-truncate" };
|
|
11
|
-
const _hoisted_5 = { class: "track-artist t-grey t-small t-truncate" };
|
|
12
|
-
const _hoisted_6 = { class: "track-play pos-absolute pos-r-0 pos-t-0 h-100 pd-small flex-center flex" };
|
|
13
|
-
const _hoisted_7 = { class: "play-button bg-main radius-round flex-center flex aspect-1x1 i-medium" };
|
|
14
|
-
const _sfc_main = {
|
|
15
|
-
__name: "TrackCard",
|
|
16
|
-
props: {
|
|
17
|
-
track: {
|
|
18
|
-
type: Object,
|
|
19
|
-
required: true
|
|
20
|
-
}
|
|
21
|
-
},
|
|
22
|
-
setup(__props) {
|
|
23
|
-
const props = __props;
|
|
24
|
-
const getArtistName = (track) => {
|
|
25
|
-
if (track.artist) {
|
|
26
|
-
if (typeof track.artist === "object") {
|
|
27
|
-
return track.artist.name || "Unknown Artist";
|
|
28
|
-
}
|
|
29
|
-
return track.artist;
|
|
30
|
-
}
|
|
31
|
-
return "Unknown Artist";
|
|
32
|
-
};
|
|
33
|
-
const playTrack = () => {
|
|
34
|
-
actions.playTrack(props.track);
|
|
35
|
-
};
|
|
36
|
-
return (_ctx, _cache) => {
|
|
37
|
-
return openBlock(), createElementBlock("div", {
|
|
38
|
-
class: "track-card radius-small o-hidden pos-relative cursor-pointer transition-cubic-in-out bg-dark-transp-20",
|
|
39
|
-
onClick: playTrack
|
|
40
|
-
}, [
|
|
41
|
-
createElementVNode("div", _hoisted_1, [
|
|
42
|
-
createElementVNode("div", _hoisted_2, [
|
|
43
|
-
createVNode(Media, {
|
|
44
|
-
url: __props.track.coverUrl || __props.track.album && __props.track.album.coverUrl || "/assets/placeholder-track.jpg",
|
|
45
|
-
class: "w-3r h-3r object-fit-cover radius-small"
|
|
46
|
-
}, null, 8, ["url"])
|
|
47
|
-
]),
|
|
48
|
-
createElementVNode("div", _hoisted_3, [
|
|
49
|
-
createElementVNode("div", _hoisted_4, toDisplayString(__props.track.title), 1),
|
|
50
|
-
createElementVNode("div", _hoisted_5, toDisplayString(getArtistName(__props.track)), 1)
|
|
51
|
-
]),
|
|
52
|
-
createElementVNode("div", _hoisted_6, [
|
|
53
|
-
createElementVNode("div", _hoisted_7, [
|
|
54
|
-
createVNode(_sfc_main$1, {
|
|
55
|
-
class: "i-small",
|
|
56
|
-
fill: "rgb(var(--black))"
|
|
57
|
-
})
|
|
58
|
-
])
|
|
59
|
-
])
|
|
60
|
-
])
|
|
61
|
-
]);
|
|
62
|
-
};
|
|
63
|
-
}
|
|
64
|
-
};
|
|
65
|
-
const TrackCard = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-4db48be7"]]);
|
|
66
|
-
export {
|
|
67
|
-
TrackCard as default
|
|
68
|
-
};
|
|
69
|
-
//# sourceMappingURL=TrackCard.vue.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"TrackCard.vue.js","sources":["../../../../../../../src/modules/music/components/cards/TrackCard.vue"],"sourcesContent":["<!-- components/cards/TrackCard.vue -->\n<template>\n <div \n class=\"track-card radius-small o-hidden pos-relative cursor-pointer transition-cubic-in-out bg-dark-transp-20\"\n @click=\"playTrack\"\n >\n <div class=\"track-card-content pd-small flex-v-center flex\">\n <div class=\"track-cover mn-r-small\">\n <Media \n :url=\"track.coverUrl || (track.album && track.album.coverUrl) || '/assets/placeholder-track.jpg'\" \n class=\"w-3r h-3r object-fit-cover radius-small\"\n />\n </div>\n \n <div class=\"track-info flex-1\">\n <div class=\"track-name t-truncate\">{{ track.title }}</div>\n <div class=\"track-artist t-grey t-small t-truncate\">{{ getArtistName(track) }}</div>\n </div>\n \n <div class=\"track-play pos-absolute pos-r-0 pos-t-0 h-100 pd-small flex-center flex\">\n <div class=\"play-button bg-main radius-round flex-center flex aspect-1x1 i-medium\">\n <IconPlay class=\"i-small\" fill=\"rgb(var(--black))\"/>\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<script setup>\nimport { computed } from 'vue';\nimport Media from '@martyrs/src/components/Media/Media.vue';\nimport IconPlay from '@martyrs/src/modules/icons/navigation/IconPlay.vue';\n\n// Import player store\nimport { actions as playerActions } from '../../store/player.js';\n\nconst props = defineProps({\n track: {\n type: Object,\n required: true\n }\n});\n\n// Methods\nconst getArtistName = (track) => {\n if (track.artist) {\n if (typeof track.artist === 'object') {\n return track.artist.name || 'Unknown Artist';\n }\n return track.artist;\n }\n return 'Unknown Artist';\n};\n\nconst playTrack = () => {\n playerActions.playTrack(props.track);\n};\n</script>\n\n<style scoped>\n.track-card {\n transition: background-color 0.3s ease;\n}\n\n.track-card:hover {\n background-color: rgba(var(--dark), 0.4);\n}\n\n.track-play {\n opacity: 0;\n transition: opacity 0.3s ease;\n}\n\n.track-card:hover .track-play {\n opacity: 1;\n}\n\n.play-button {\n transform: scale(0.8);\n transition: transform 0.3s ease;\n}\n\n.track-card:hover .play-button {\n transform: scale(1);\n}\n</style>"],"names":["playerActions"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAoCA,UAAM,QAAQ;AAQd,UAAM,gBAAgB,CAAC,UAAU;AAC/B,UAAI,MAAM,QAAQ;AAChB,YAAI,OAAO,MAAM,WAAW,UAAU;AACpC,iBAAO,MAAM,OAAO,QAAQ;AAAA,QAC9B;AACA,eAAO,MAAM;AAAA,MACf;AACA,aAAO;AAAA,IACT;AAEA,UAAM,YAAY,MAAM;AACtBA,cAAc,UAAU,MAAM,KAAK;AAAA,IACrC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1,104 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
|
|
3
|
-
const vue = require("vue");
|
|
4
|
-
const vueRouter = require("vue-router");
|
|
5
|
-
const MusicPlayer = require("../player/MusicPlayer.vue.cjs");
|
|
6
|
-
const SearchForm = require("../forms/SearchForm.vue.cjs");
|
|
7
|
-
;/* empty css */
|
|
8
|
-
;/* empty css */
|
|
9
|
-
;/* empty css */
|
|
10
|
-
const IconChevronLeft = require("../../../icons/navigation/IconChevronLeft.vue.cjs");
|
|
11
|
-
const IconChevronRight = require("../../../icons/navigation/IconChevronRight.vue.cjs");
|
|
12
|
-
const player = require("../../store/player.cjs");
|
|
13
|
-
const auth = require("../../../auth/views/store/auth.cjs");
|
|
14
|
-
const _hoisted_1 = { class: "music-layout flex flex-column flex-nowrap w-100" };
|
|
15
|
-
const _hoisted_2 = { class: "flex-child-shrink-0 z-index-3 flex-v-center flex-justify-between flex gap-small pd-small bg-main" };
|
|
16
|
-
const _hoisted_3 = { class: "music-navigation-buttons flex gap-thin" };
|
|
17
|
-
const _hoisted_4 = {
|
|
18
|
-
key: 0,
|
|
19
|
-
class: "music-search-bar flex-child-1 mn-l-medium mn-r-medium"
|
|
20
|
-
};
|
|
21
|
-
const _hoisted_5 = { class: "music-user-menu flex-nowrap flex pos-relative" };
|
|
22
|
-
const _hoisted_6 = { class: "o-x-hidden" };
|
|
23
|
-
const _sfc_main = {
|
|
24
|
-
__name: "MusicLayout",
|
|
25
|
-
setup(__props) {
|
|
26
|
-
const router = vueRouter.useRouter();
|
|
27
|
-
vue.ref(false);
|
|
28
|
-
vue.computed(() => {
|
|
29
|
-
return auth.state.access.status === true;
|
|
30
|
-
});
|
|
31
|
-
vue.computed(() => {
|
|
32
|
-
return auth.state.user;
|
|
33
|
-
});
|
|
34
|
-
const currentTrack = vue.computed(() => {
|
|
35
|
-
return player.state.currentTrack;
|
|
36
|
-
});
|
|
37
|
-
const handleSearch = (query) => {
|
|
38
|
-
router.push({ name: "music-search", query: { q: query } });
|
|
39
|
-
};
|
|
40
|
-
return (_ctx, _cache) => {
|
|
41
|
-
const _component_router_link = vue.resolveComponent("router-link");
|
|
42
|
-
const _component_router_view = vue.resolveComponent("router-view");
|
|
43
|
-
return vue.openBlock(), vue.createElementBlock("div", _hoisted_1, [
|
|
44
|
-
vue.createElementVNode("header", _hoisted_2, [
|
|
45
|
-
vue.createElementVNode("div", _hoisted_3, [
|
|
46
|
-
vue.createElementVNode("button", {
|
|
47
|
-
onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$router.go(-1)),
|
|
48
|
-
class: "bg-black radius-extra flex-center flex aspect-1x1 i-medium cursor-pointer hover-bg-dark pd-micro"
|
|
49
|
-
}, [
|
|
50
|
-
vue.createVNode(IconChevronLeft.default, {
|
|
51
|
-
class: "i-small",
|
|
52
|
-
fill: "rgb(var(--white))"
|
|
53
|
-
})
|
|
54
|
-
]),
|
|
55
|
-
vue.createElementVNode("button", {
|
|
56
|
-
onClick: _cache[1] || (_cache[1] = ($event) => _ctx.$router.go(1)),
|
|
57
|
-
class: "bg-black radius-extra flex-center flex aspect-1x1 i-medium cursor-pointer hover-bg-dark pd-micro"
|
|
58
|
-
}, [
|
|
59
|
-
vue.createVNode(IconChevronRight.default, {
|
|
60
|
-
class: "i-small",
|
|
61
|
-
fill: "rgb(var(--white))"
|
|
62
|
-
})
|
|
63
|
-
])
|
|
64
|
-
]),
|
|
65
|
-
_ctx.$route.name !== "music-search" ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_4, [
|
|
66
|
-
vue.createVNode(SearchForm.default, {
|
|
67
|
-
onSearch: handleSearch,
|
|
68
|
-
placeholder: "Search music..."
|
|
69
|
-
})
|
|
70
|
-
])) : vue.createCommentVNode("", true),
|
|
71
|
-
vue.createElementVNode("div", _hoisted_5, [
|
|
72
|
-
vue.createVNode(_component_router_link, {
|
|
73
|
-
to: { name: "music-library" },
|
|
74
|
-
class: "pd-thin w-100 d-block hover-bg-dark radius-small"
|
|
75
|
-
}, {
|
|
76
|
-
default: vue.withCtx(() => _cache[2] || (_cache[2] = [
|
|
77
|
-
vue.createTextVNode(" Library ")
|
|
78
|
-
])),
|
|
79
|
-
_: 1
|
|
80
|
-
}),
|
|
81
|
-
vue.createVNode(_component_router_link, {
|
|
82
|
-
to: { name: "track-create" },
|
|
83
|
-
class: "pd-thin w-100 d-block hover-bg-dark radius-small"
|
|
84
|
-
}, {
|
|
85
|
-
default: vue.withCtx(() => _cache[3] || (_cache[3] = [
|
|
86
|
-
vue.createTextVNode(" Upload ")
|
|
87
|
-
])),
|
|
88
|
-
_: 1
|
|
89
|
-
})
|
|
90
|
-
])
|
|
91
|
-
]),
|
|
92
|
-
vue.createElementVNode("main", _hoisted_6, [
|
|
93
|
-
vue.createVNode(_component_router_view)
|
|
94
|
-
]),
|
|
95
|
-
currentTrack.value ? (vue.openBlock(), vue.createBlock(MusicPlayer.default, {
|
|
96
|
-
key: 0,
|
|
97
|
-
class: "pos-fixed pos-b-0 w-100"
|
|
98
|
-
})) : vue.createCommentVNode("", true)
|
|
99
|
-
]);
|
|
100
|
-
};
|
|
101
|
-
}
|
|
102
|
-
};
|
|
103
|
-
exports.default = _sfc_main;
|
|
104
|
-
//# sourceMappingURL=MusicLayout.vue.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"MusicLayout.vue.cjs","sources":["../../../../../../../src/modules/music/components/layouts/MusicLayout.vue"],"sourcesContent":["<!-- components/layouts/MusicLayout.vue -->\n<template>\n <div class=\"music-layout flex flex-column flex-nowrap w-100 \">\n <!-- Header Bar -->\n <header class=\"flex-child-shrink-0 z-index-3 flex-v-center flex-justify-between flex gap-small pd-small bg-main\">\n \n <div class=\"music-navigation-buttons flex gap-thin\">\n <button @click=\"$router.go(-1)\" class=\"bg-black radius-extra flex-center flex aspect-1x1 i-medium cursor-pointer hover-bg-dark pd-micro\">\n <IconChevronLeft class=\"i-small\" fill=\"rgb(var(--white))\"/>\n </button>\n <button @click=\"$router.go(1)\" class=\"bg-black radius-extra flex-center flex aspect-1x1 i-medium cursor-pointer hover-bg-dark pd-micro\">\n <IconChevronRight class=\"i-small\" fill=\"rgb(var(--white))\"/>\n </button>\n </div>\n \n <div class=\"music-search-bar flex-child-1 mn-l-medium mn-r-medium\" v-if=\"$route.name !== 'music-search'\">\n <SearchForm @search=\"handleSearch\" placeholder=\"Search music...\" />\n </div>\n \n <div class=\"music-user-menu flex-nowrap flex pos-relative\">\n \n <router-link :to=\"{ name: 'music-library' }\" class=\" pd-thin w-100 d-block hover-bg-dark radius-small\">\n Library\n </router-link>\n <router-link :to=\"{ name: 'track-create' }\" class=\" pd-thin w-100 d-block hover-bg-dark radius-small\">\n Upload\n </router-link>\n \n </div>\n </header>\n \n <!-- Main Content Area -->\n <main class=\"o-x-hidden\">\n <router-view></router-view>\n </main>\n \n <!-- Music Player Fixed at Bottom -->\n <MusicPlayer v-if=\"currentTrack\" class=\"pos-fixed pos-b-0 w-100 \"/>\n </div>\n</template>\n\n<script setup>\nimport { ref, computed, onMounted } from 'vue';\nimport { useRouter } from 'vue-router';\nimport MusicPlayer from '../player/MusicPlayer.vue';\nimport SearchForm from '../forms/SearchForm.vue';\nimport Button from '@martyrs/src/components/Button/Button.vue';\nimport Dropdown from '@martyrs/src/components/Dropdown/Dropdown.vue';\n\n// Icons - Import from icons in the Martyrs framework\nimport IconChevronLeft from '@martyrs/src/modules/icons/navigation/IconChevronLeft.vue';\nimport IconChevronRight from '@martyrs/src/modules/icons/navigation/IconChevronRight.vue';\nimport IconProfile from '@martyrs/src/modules/icons/entities/IconProfile.vue';\n\n// Import store modules\nimport { state as playerState } from '../../store/player.js';\nimport { state as authState, actions as authActions } from '@martyrs/src/modules/auth/views/store/auth.js';\n\nconst router = useRouter();\n\n// UI state\nconst showUserMenu = ref(false);\n\n// Auth computed properties\nconst isAuthenticated = computed(() => {\n return authState.access.status === true;\n});\n\nconst user = computed(() => {\n return authState.user;\n});\n\n// Current track from player store\nconst currentTrack = computed(() => {\n return playerState.currentTrack;\n});\n\n// Methods\nconst handleSearch = (query) => {\n router.push({ name: 'music-search', query: { q: query } });\n};\n\n</script>"],"names":["useRouter","ref","computed","authState","playerState"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AA0DA,UAAM,SAASA,UAAAA,UAAS;AAGHC,QAAAA,IAAI,KAAK;AAGNC,QAAAA,SAAS,MAAM;AACrC,aAAOC,KAAAA,MAAU,OAAO,WAAW;AAAA,IACrC,CAAC;AAEYD,QAAAA,SAAS,MAAM;AAC1B,aAAOC,KAAAA,MAAU;AAAA,IACnB,CAAC;AAGD,UAAM,eAAeD,IAAAA,SAAS,MAAM;AAClC,aAAOE,OAAAA,MAAY;AAAA,IACrB,CAAC;AAGD,UAAM,eAAe,CAAC,UAAU;AAC9B,aAAO,KAAK,EAAE,MAAM,gBAAgB,OAAO,EAAE,GAAG,MAAK,GAAI;AAAA,IAC3D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1,104 +0,0 @@
|
|
|
1
|
-
import { ref, computed, resolveComponent, createElementBlock, openBlock, createElementVNode, createBlock, createCommentVNode, createVNode, withCtx, createTextVNode } from "vue";
|
|
2
|
-
import { useRouter } from "vue-router";
|
|
3
|
-
import MusicPlayer from "../player/MusicPlayer.vue.js";
|
|
4
|
-
import SearchForm from "../forms/SearchForm.vue.js";
|
|
5
|
-
/* empty css */
|
|
6
|
-
/* empty css */
|
|
7
|
-
/* empty css */
|
|
8
|
-
import IconChevronLeft from "../../../icons/navigation/IconChevronLeft.vue.js";
|
|
9
|
-
import IconChevronRight from "../../../icons/navigation/IconChevronRight.vue.js";
|
|
10
|
-
import { state as state$1 } from "../../store/player.js";
|
|
11
|
-
import { state } from "../../../auth/views/store/auth.js";
|
|
12
|
-
const _hoisted_1 = { class: "music-layout flex flex-column flex-nowrap w-100" };
|
|
13
|
-
const _hoisted_2 = { class: "flex-child-shrink-0 z-index-3 flex-v-center flex-justify-between flex gap-small pd-small bg-main" };
|
|
14
|
-
const _hoisted_3 = { class: "music-navigation-buttons flex gap-thin" };
|
|
15
|
-
const _hoisted_4 = {
|
|
16
|
-
key: 0,
|
|
17
|
-
class: "music-search-bar flex-child-1 mn-l-medium mn-r-medium"
|
|
18
|
-
};
|
|
19
|
-
const _hoisted_5 = { class: "music-user-menu flex-nowrap flex pos-relative" };
|
|
20
|
-
const _hoisted_6 = { class: "o-x-hidden" };
|
|
21
|
-
const _sfc_main = {
|
|
22
|
-
__name: "MusicLayout",
|
|
23
|
-
setup(__props) {
|
|
24
|
-
const router = useRouter();
|
|
25
|
-
ref(false);
|
|
26
|
-
computed(() => {
|
|
27
|
-
return state.access.status === true;
|
|
28
|
-
});
|
|
29
|
-
computed(() => {
|
|
30
|
-
return state.user;
|
|
31
|
-
});
|
|
32
|
-
const currentTrack = computed(() => {
|
|
33
|
-
return state$1.currentTrack;
|
|
34
|
-
});
|
|
35
|
-
const handleSearch = (query) => {
|
|
36
|
-
router.push({ name: "music-search", query: { q: query } });
|
|
37
|
-
};
|
|
38
|
-
return (_ctx, _cache) => {
|
|
39
|
-
const _component_router_link = resolveComponent("router-link");
|
|
40
|
-
const _component_router_view = resolveComponent("router-view");
|
|
41
|
-
return openBlock(), createElementBlock("div", _hoisted_1, [
|
|
42
|
-
createElementVNode("header", _hoisted_2, [
|
|
43
|
-
createElementVNode("div", _hoisted_3, [
|
|
44
|
-
createElementVNode("button", {
|
|
45
|
-
onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$router.go(-1)),
|
|
46
|
-
class: "bg-black radius-extra flex-center flex aspect-1x1 i-medium cursor-pointer hover-bg-dark pd-micro"
|
|
47
|
-
}, [
|
|
48
|
-
createVNode(IconChevronLeft, {
|
|
49
|
-
class: "i-small",
|
|
50
|
-
fill: "rgb(var(--white))"
|
|
51
|
-
})
|
|
52
|
-
]),
|
|
53
|
-
createElementVNode("button", {
|
|
54
|
-
onClick: _cache[1] || (_cache[1] = ($event) => _ctx.$router.go(1)),
|
|
55
|
-
class: "bg-black radius-extra flex-center flex aspect-1x1 i-medium cursor-pointer hover-bg-dark pd-micro"
|
|
56
|
-
}, [
|
|
57
|
-
createVNode(IconChevronRight, {
|
|
58
|
-
class: "i-small",
|
|
59
|
-
fill: "rgb(var(--white))"
|
|
60
|
-
})
|
|
61
|
-
])
|
|
62
|
-
]),
|
|
63
|
-
_ctx.$route.name !== "music-search" ? (openBlock(), createElementBlock("div", _hoisted_4, [
|
|
64
|
-
createVNode(SearchForm, {
|
|
65
|
-
onSearch: handleSearch,
|
|
66
|
-
placeholder: "Search music..."
|
|
67
|
-
})
|
|
68
|
-
])) : createCommentVNode("", true),
|
|
69
|
-
createElementVNode("div", _hoisted_5, [
|
|
70
|
-
createVNode(_component_router_link, {
|
|
71
|
-
to: { name: "music-library" },
|
|
72
|
-
class: "pd-thin w-100 d-block hover-bg-dark radius-small"
|
|
73
|
-
}, {
|
|
74
|
-
default: withCtx(() => _cache[2] || (_cache[2] = [
|
|
75
|
-
createTextVNode(" Library ")
|
|
76
|
-
])),
|
|
77
|
-
_: 1
|
|
78
|
-
}),
|
|
79
|
-
createVNode(_component_router_link, {
|
|
80
|
-
to: { name: "track-create" },
|
|
81
|
-
class: "pd-thin w-100 d-block hover-bg-dark radius-small"
|
|
82
|
-
}, {
|
|
83
|
-
default: withCtx(() => _cache[3] || (_cache[3] = [
|
|
84
|
-
createTextVNode(" Upload ")
|
|
85
|
-
])),
|
|
86
|
-
_: 1
|
|
87
|
-
})
|
|
88
|
-
])
|
|
89
|
-
]),
|
|
90
|
-
createElementVNode("main", _hoisted_6, [
|
|
91
|
-
createVNode(_component_router_view)
|
|
92
|
-
]),
|
|
93
|
-
currentTrack.value ? (openBlock(), createBlock(MusicPlayer, {
|
|
94
|
-
key: 0,
|
|
95
|
-
class: "pos-fixed pos-b-0 w-100"
|
|
96
|
-
})) : createCommentVNode("", true)
|
|
97
|
-
]);
|
|
98
|
-
};
|
|
99
|
-
}
|
|
100
|
-
};
|
|
101
|
-
export {
|
|
102
|
-
_sfc_main as default
|
|
103
|
-
};
|
|
104
|
-
//# sourceMappingURL=MusicLayout.vue.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"MusicLayout.vue.js","sources":["../../../../../../../src/modules/music/components/layouts/MusicLayout.vue"],"sourcesContent":["<!-- components/layouts/MusicLayout.vue -->\n<template>\n <div class=\"music-layout flex flex-column flex-nowrap w-100 \">\n <!-- Header Bar -->\n <header class=\"flex-child-shrink-0 z-index-3 flex-v-center flex-justify-between flex gap-small pd-small bg-main\">\n \n <div class=\"music-navigation-buttons flex gap-thin\">\n <button @click=\"$router.go(-1)\" class=\"bg-black radius-extra flex-center flex aspect-1x1 i-medium cursor-pointer hover-bg-dark pd-micro\">\n <IconChevronLeft class=\"i-small\" fill=\"rgb(var(--white))\"/>\n </button>\n <button @click=\"$router.go(1)\" class=\"bg-black radius-extra flex-center flex aspect-1x1 i-medium cursor-pointer hover-bg-dark pd-micro\">\n <IconChevronRight class=\"i-small\" fill=\"rgb(var(--white))\"/>\n </button>\n </div>\n \n <div class=\"music-search-bar flex-child-1 mn-l-medium mn-r-medium\" v-if=\"$route.name !== 'music-search'\">\n <SearchForm @search=\"handleSearch\" placeholder=\"Search music...\" />\n </div>\n \n <div class=\"music-user-menu flex-nowrap flex pos-relative\">\n \n <router-link :to=\"{ name: 'music-library' }\" class=\" pd-thin w-100 d-block hover-bg-dark radius-small\">\n Library\n </router-link>\n <router-link :to=\"{ name: 'track-create' }\" class=\" pd-thin w-100 d-block hover-bg-dark radius-small\">\n Upload\n </router-link>\n \n </div>\n </header>\n \n <!-- Main Content Area -->\n <main class=\"o-x-hidden\">\n <router-view></router-view>\n </main>\n \n <!-- Music Player Fixed at Bottom -->\n <MusicPlayer v-if=\"currentTrack\" class=\"pos-fixed pos-b-0 w-100 \"/>\n </div>\n</template>\n\n<script setup>\nimport { ref, computed, onMounted } from 'vue';\nimport { useRouter } from 'vue-router';\nimport MusicPlayer from '../player/MusicPlayer.vue';\nimport SearchForm from '../forms/SearchForm.vue';\nimport Button from '@martyrs/src/components/Button/Button.vue';\nimport Dropdown from '@martyrs/src/components/Dropdown/Dropdown.vue';\n\n// Icons - Import from icons in the Martyrs framework\nimport IconChevronLeft from '@martyrs/src/modules/icons/navigation/IconChevronLeft.vue';\nimport IconChevronRight from '@martyrs/src/modules/icons/navigation/IconChevronRight.vue';\nimport IconProfile from '@martyrs/src/modules/icons/entities/IconProfile.vue';\n\n// Import store modules\nimport { state as playerState } from '../../store/player.js';\nimport { state as authState, actions as authActions } from '@martyrs/src/modules/auth/views/store/auth.js';\n\nconst router = useRouter();\n\n// UI state\nconst showUserMenu = ref(false);\n\n// Auth computed properties\nconst isAuthenticated = computed(() => {\n return authState.access.status === true;\n});\n\nconst user = computed(() => {\n return authState.user;\n});\n\n// Current track from player store\nconst currentTrack = computed(() => {\n return playerState.currentTrack;\n});\n\n// Methods\nconst handleSearch = (query) => {\n router.push({ name: 'music-search', query: { q: query } });\n};\n\n</script>"],"names":["authState","playerState"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AA0DA,UAAM,SAAS,UAAS;AAGH,QAAI,KAAK;AAGN,aAAS,MAAM;AACrC,aAAOA,MAAU,OAAO,WAAW;AAAA,IACrC,CAAC;AAEY,aAAS,MAAM;AAC1B,aAAOA,MAAU;AAAA,IACnB,CAAC;AAGD,UAAM,eAAe,SAAS,MAAM;AAClC,aAAOC,QAAY;AAAA,IACrB,CAAC;AAGD,UAAM,eAAe,CAAC,UAAU;AAC9B,aAAO,KAAK,EAAE,MAAM,gBAAgB,OAAO,EAAE,GAAG,MAAK,GAAI;AAAA,IAC3D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
<!-- components/cards/TrackCard.vue -->
|
|
2
|
-
<template>
|
|
3
|
-
<div
|
|
4
|
-
class="track-card radius-small o-hidden pos-relative cursor-pointer transition-cubic-in-out bg-dark-transp-20"
|
|
5
|
-
@click="playTrack"
|
|
6
|
-
>
|
|
7
|
-
<div class="track-card-content pd-small flex-v-center flex">
|
|
8
|
-
<div class="track-cover mn-r-small">
|
|
9
|
-
<Media
|
|
10
|
-
:url="track.coverUrl || (track.album && track.album.coverUrl) || '/assets/placeholder-track.jpg'"
|
|
11
|
-
class="w-3r h-3r object-fit-cover radius-small"
|
|
12
|
-
/>
|
|
13
|
-
</div>
|
|
14
|
-
|
|
15
|
-
<div class="track-info flex-1">
|
|
16
|
-
<div class="track-name t-truncate">{{ track.title }}</div>
|
|
17
|
-
<div class="track-artist t-grey t-small t-truncate">{{ getArtistName(track) }}</div>
|
|
18
|
-
</div>
|
|
19
|
-
|
|
20
|
-
<div class="track-play pos-absolute pos-r-0 pos-t-0 h-100 pd-small flex-center flex">
|
|
21
|
-
<div class="play-button bg-main radius-round flex-center flex aspect-1x1 i-medium">
|
|
22
|
-
<IconPlay class="i-small" fill="rgb(var(--black))"/>
|
|
23
|
-
</div>
|
|
24
|
-
</div>
|
|
25
|
-
</div>
|
|
26
|
-
</div>
|
|
27
|
-
</template>
|
|
28
|
-
|
|
29
|
-
<script setup>
|
|
30
|
-
import { computed } from 'vue';
|
|
31
|
-
import Media from '@martyrs/src/components/Media/Media.vue';
|
|
32
|
-
import IconPlay from '@martyrs/src/modules/icons/navigation/IconPlay.vue';
|
|
33
|
-
|
|
34
|
-
// Import player store
|
|
35
|
-
import { actions as playerActions } from '../../store/player.js';
|
|
36
|
-
|
|
37
|
-
const props = defineProps({
|
|
38
|
-
track: {
|
|
39
|
-
type: Object,
|
|
40
|
-
required: true
|
|
41
|
-
}
|
|
42
|
-
});
|
|
43
|
-
|
|
44
|
-
// Methods
|
|
45
|
-
const getArtistName = (track) => {
|
|
46
|
-
if (track.artist) {
|
|
47
|
-
if (typeof track.artist === 'object') {
|
|
48
|
-
return track.artist.name || 'Unknown Artist';
|
|
49
|
-
}
|
|
50
|
-
return track.artist;
|
|
51
|
-
}
|
|
52
|
-
return 'Unknown Artist';
|
|
53
|
-
};
|
|
54
|
-
|
|
55
|
-
const playTrack = () => {
|
|
56
|
-
playerActions.playTrack(props.track);
|
|
57
|
-
};
|
|
58
|
-
</script>
|
|
59
|
-
|
|
60
|
-
<style scoped>
|
|
61
|
-
.track-card {
|
|
62
|
-
transition: background-color 0.3s ease;
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
.track-card:hover {
|
|
66
|
-
background-color: rgba(var(--dark), 0.4);
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
.track-play {
|
|
70
|
-
opacity: 0;
|
|
71
|
-
transition: opacity 0.3s ease;
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
.track-card:hover .track-play {
|
|
75
|
-
opacity: 1;
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
.play-button {
|
|
79
|
-
transform: scale(0.8);
|
|
80
|
-
transition: transform 0.3s ease;
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
.track-card:hover .play-button {
|
|
84
|
-
transform: scale(1);
|
|
85
|
-
}
|
|
86
|
-
</style>
|
|
@@ -1,83 +0,0 @@
|
|
|
1
|
-
<!-- components/layouts/MusicLayout.vue -->
|
|
2
|
-
<template>
|
|
3
|
-
<div class="music-layout flex flex-column flex-nowrap w-100 ">
|
|
4
|
-
<!-- Header Bar -->
|
|
5
|
-
<header class="flex-child-shrink-0 z-index-3 flex-v-center flex-justify-between flex gap-small pd-small bg-main">
|
|
6
|
-
|
|
7
|
-
<div class="music-navigation-buttons flex gap-thin">
|
|
8
|
-
<button @click="$router.go(-1)" class="bg-black radius-extra flex-center flex aspect-1x1 i-medium cursor-pointer hover-bg-dark pd-micro">
|
|
9
|
-
<IconChevronLeft class="i-small" fill="rgb(var(--white))"/>
|
|
10
|
-
</button>
|
|
11
|
-
<button @click="$router.go(1)" class="bg-black radius-extra flex-center flex aspect-1x1 i-medium cursor-pointer hover-bg-dark pd-micro">
|
|
12
|
-
<IconChevronRight class="i-small" fill="rgb(var(--white))"/>
|
|
13
|
-
</button>
|
|
14
|
-
</div>
|
|
15
|
-
|
|
16
|
-
<div class="music-search-bar flex-child-1 mn-l-medium mn-r-medium" v-if="$route.name !== 'music-search'">
|
|
17
|
-
<SearchForm @search="handleSearch" placeholder="Search music..." />
|
|
18
|
-
</div>
|
|
19
|
-
|
|
20
|
-
<div class="music-user-menu flex-nowrap flex pos-relative">
|
|
21
|
-
|
|
22
|
-
<router-link :to="{ name: 'music-library' }" class=" pd-thin w-100 d-block hover-bg-dark radius-small">
|
|
23
|
-
Library
|
|
24
|
-
</router-link>
|
|
25
|
-
<router-link :to="{ name: 'track-create' }" class=" pd-thin w-100 d-block hover-bg-dark radius-small">
|
|
26
|
-
Upload
|
|
27
|
-
</router-link>
|
|
28
|
-
|
|
29
|
-
</div>
|
|
30
|
-
</header>
|
|
31
|
-
|
|
32
|
-
<!-- Main Content Area -->
|
|
33
|
-
<main class="o-x-hidden">
|
|
34
|
-
<router-view></router-view>
|
|
35
|
-
</main>
|
|
36
|
-
|
|
37
|
-
<!-- Music Player Fixed at Bottom -->
|
|
38
|
-
<MusicPlayer v-if="currentTrack" class="pos-fixed pos-b-0 w-100 "/>
|
|
39
|
-
</div>
|
|
40
|
-
</template>
|
|
41
|
-
|
|
42
|
-
<script setup>
|
|
43
|
-
import { ref, computed, onMounted } from 'vue';
|
|
44
|
-
import { useRouter } from 'vue-router';
|
|
45
|
-
import MusicPlayer from '../player/MusicPlayer.vue';
|
|
46
|
-
import SearchForm from '../forms/SearchForm.vue';
|
|
47
|
-
import Button from '@martyrs/src/components/Button/Button.vue';
|
|
48
|
-
import Dropdown from '@martyrs/src/components/Dropdown/Dropdown.vue';
|
|
49
|
-
|
|
50
|
-
// Icons - Import from icons in the Martyrs framework
|
|
51
|
-
import IconChevronLeft from '@martyrs/src/modules/icons/navigation/IconChevronLeft.vue';
|
|
52
|
-
import IconChevronRight from '@martyrs/src/modules/icons/navigation/IconChevronRight.vue';
|
|
53
|
-
import IconProfile from '@martyrs/src/modules/icons/entities/IconProfile.vue';
|
|
54
|
-
|
|
55
|
-
// Import store modules
|
|
56
|
-
import { state as playerState } from '../../store/player.js';
|
|
57
|
-
import { state as authState, actions as authActions } from '@martyrs/src/modules/auth/views/store/auth.js';
|
|
58
|
-
|
|
59
|
-
const router = useRouter();
|
|
60
|
-
|
|
61
|
-
// UI state
|
|
62
|
-
const showUserMenu = ref(false);
|
|
63
|
-
|
|
64
|
-
// Auth computed properties
|
|
65
|
-
const isAuthenticated = computed(() => {
|
|
66
|
-
return authState.access.status === true;
|
|
67
|
-
});
|
|
68
|
-
|
|
69
|
-
const user = computed(() => {
|
|
70
|
-
return authState.user;
|
|
71
|
-
});
|
|
72
|
-
|
|
73
|
-
// Current track from player store
|
|
74
|
-
const currentTrack = computed(() => {
|
|
75
|
-
return playerState.currentTrack;
|
|
76
|
-
});
|
|
77
|
-
|
|
78
|
-
// Methods
|
|
79
|
-
const handleSearch = (query) => {
|
|
80
|
-
router.push({ name: 'music-search', query: { q: query } });
|
|
81
|
-
};
|
|
82
|
-
|
|
83
|
-
</script>
|