mirror of
https://github.com/Dvorinka/swingmusic-extended.git
synced 2026-06-05 04:53:01 +00:00
minor refactors
This commit is contained in:
@@ -6,7 +6,7 @@
|
|||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
width: auto;
|
width: auto;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
padding: $small $small 0 $small;
|
padding: $small $small 0 0;
|
||||||
|
|
||||||
.no-res {
|
.no-res {
|
||||||
text-align: center;
|
text-align: center;
|
||||||
@@ -33,19 +33,11 @@
|
|||||||
position: relative;
|
position: relative;
|
||||||
}
|
}
|
||||||
|
|
||||||
.search-icon {
|
|
||||||
position: absolute;
|
|
||||||
top: 0;
|
|
||||||
right: 0;
|
|
||||||
height: 2.5rem;
|
|
||||||
width: 2.5rem;
|
|
||||||
background-image: url(../../icons/search.svg);
|
|
||||||
background-size: 70%;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.right-search .scrollable {
|
.right-search .scrollable {
|
||||||
overflow-y: auto;
|
overflow-y: auto;
|
||||||
|
scrollbar-width: none;
|
||||||
|
|
||||||
&::-webkit-scrollbar {
|
&::-webkit-scrollbar {
|
||||||
display: none;
|
display: none;
|
||||||
@@ -58,6 +50,12 @@
|
|||||||
border-radius: 0.4rem;
|
border-radius: 0.4rem;
|
||||||
position: relative;
|
position: relative;
|
||||||
|
|
||||||
|
._loader {
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
right: 2rem;
|
||||||
|
}
|
||||||
|
|
||||||
input {
|
input {
|
||||||
width: calc(100% - 2.5rem);
|
width: calc(100% - 2.5rem);
|
||||||
border: none;
|
border: none;
|
||||||
@@ -67,7 +65,7 @@
|
|||||||
font-size: 1rem;
|
font-size: 1rem;
|
||||||
outline: none;
|
outline: none;
|
||||||
transition: all 0.5s ease;
|
transition: all 0.5s ease;
|
||||||
padding-left: 0.4rem;
|
padding-left: .75rem;
|
||||||
|
|
||||||
&:focus {
|
&:focus {
|
||||||
transition: all 0.5s ease;
|
transition: all 0.5s ease;
|
||||||
|
|||||||
@@ -62,6 +62,8 @@ export default {
|
|||||||
height: 100%;
|
height: 100%;
|
||||||
background-image: url("../../assets/images/abg.webp");
|
background-image: url("../../assets/images/abg.webp");
|
||||||
background-position: 0% 60%;
|
background-position: 0% 60%;
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
background-size: cover;
|
||||||
|
|
||||||
.info {
|
.info {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
<router-link
|
<router-link
|
||||||
:to="{ name: 'FolderView', params: { path: props.folder.path } }"
|
:to="{ name: 'FolderView', params: { path: props.folder.path } }"
|
||||||
>
|
>
|
||||||
<div class="f-item border-sm rounded">
|
<div class="f-item">
|
||||||
<div class="icon image"></div>
|
<div class="icon image"></div>
|
||||||
<div class="info">
|
<div class="info">
|
||||||
<div class="f-item-text ellip">{{ props.folder.name }}</div>
|
<div class="f-item-text ellip">{{ props.folder.name }}</div>
|
||||||
@@ -30,6 +30,7 @@ const props = defineProps({
|
|||||||
position: relative;
|
position: relative;
|
||||||
background-color: #ffffff09;
|
background-color: #ffffff09;
|
||||||
transition: all 0.2s ease;
|
transition: all 0.2s ease;
|
||||||
|
border-radius: .75rem;
|
||||||
|
|
||||||
@include phone-only {
|
@include phone-only {
|
||||||
height: 4rem;
|
height: 4rem;
|
||||||
|
|||||||
@@ -16,7 +16,7 @@
|
|||||||
<input
|
<input
|
||||||
type="text"
|
type="text"
|
||||||
class="search-input"
|
class="search-input"
|
||||||
placeholder="/"
|
placeholder="Search this folder"
|
||||||
v-model="query"
|
v-model="query"
|
||||||
/>
|
/>
|
||||||
<div class="search-icon image"></div>
|
<div class="search-icon image"></div>
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="l_" v-if="!props.collapsed">
|
<div class="l_" v-if="!props.collapsed">
|
||||||
<div
|
<div
|
||||||
class="l-image image border rounded"
|
class="l-image image rounded"
|
||||||
:style="{
|
:style="{
|
||||||
backgroundImage: `url("${current.image}")`,
|
backgroundImage: `url("${current.image}")`,
|
||||||
}"
|
}"
|
||||||
@@ -28,6 +28,7 @@ const props = defineProps({
|
|||||||
.l-image {
|
.l-image {
|
||||||
height: 14rem;
|
height: 14rem;
|
||||||
width: 14rem;
|
width: 14rem;
|
||||||
|
border-radius: .5rem;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -111,6 +111,7 @@ export default {
|
|||||||
flex-wrap: nowrap;
|
flex-wrap: nowrap;
|
||||||
overflow-x: scroll;
|
overflow-x: scroll;
|
||||||
gap: $small;
|
gap: $small;
|
||||||
|
scrollbar-width: none;
|
||||||
|
|
||||||
&::-webkit-scrollbar {
|
&::-webkit-scrollbar {
|
||||||
display: none;
|
display: none;
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="p-header rounded">
|
<div class="p-header rounded">
|
||||||
<div class="info rounded card-dark">
|
<div class="info card-dark">
|
||||||
<div>
|
<div>
|
||||||
<div class="name">Makaveli Radio</div>
|
<div class="name">Makaveli Radio</div>
|
||||||
<div class="metrics rounded border">45 Tracks • 3 Hours 4 Minutes</div>
|
<div class="metrics rounded border">45 Tracks • 3 Hours 4 Minutes</div>
|
||||||
@@ -43,7 +43,6 @@
|
|||||||
box-shadow: 0 0 1rem rgba(0, 0, 0, 0.479);
|
box-shadow: 0 0 1rem rgba(0, 0, 0, 0.479);
|
||||||
|
|
||||||
@include phone-only {
|
@include phone-only {
|
||||||
// border: solid;
|
|
||||||
bottom: 1rem;
|
bottom: 1rem;
|
||||||
right: 1rem;
|
right: 1rem;
|
||||||
font-size: small;
|
font-size: small;
|
||||||
@@ -67,8 +66,9 @@
|
|||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: row;
|
flex-direction: row;
|
||||||
align-items: flex-end;
|
align-items: flex-end;
|
||||||
padding: $small $small 3.5rem;
|
padding: 1rem 1rem 4rem 1rem;
|
||||||
box-shadow: 0 0 1.5rem rgba(0, 0, 0, 0.658);
|
box-shadow: 0 0 1.5rem rgba(0, 0, 0, 0.658);
|
||||||
|
border-radius: .5rem;
|
||||||
|
|
||||||
@include phone-only {
|
@include phone-only {
|
||||||
width: calc(100% - 1rem);
|
width: calc(100% - 1rem);
|
||||||
@@ -89,13 +89,12 @@
|
|||||||
color: rgb(0, 60, 255);
|
color: rgb(0, 60, 255);
|
||||||
padding: $small;
|
padding: $small;
|
||||||
width: fit-content;
|
width: fit-content;
|
||||||
border-radius: $smaller;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.buttons {
|
.buttons {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
bottom: $small;
|
bottom:1rem;
|
||||||
left: $small;
|
left:1rem;
|
||||||
display: flex;
|
display: flex;
|
||||||
gap: $small;
|
gap: $small;
|
||||||
|
|
||||||
|
|||||||
@@ -1,20 +1,17 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="r-home">
|
<div class="r-home">
|
||||||
<NowPlaying />
|
|
||||||
<Recommendations />
|
<Recommendations />
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<style lang="scss">
|
<style lang="scss">
|
||||||
.r-home {
|
.r-home {
|
||||||
height: 100%;
|
height: calc(100% - 1rem);
|
||||||
width: 31rem;
|
|
||||||
background-color: $card-dark;
|
background-color: $card-dark;
|
||||||
padding: $smaller $small;
|
padding: 0 $small $small 0;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
import NowPlaying from '../NowPlaying.vue';
|
|
||||||
import Recommendations from '../Recommendation.vue';
|
import Recommendations from '../Recommendation.vue';
|
||||||
</script>
|
</script>
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="r-sidebar">
|
<div class="r-sidebar">
|
||||||
<div class="grid">
|
<div class="grid">
|
||||||
<div class="r-content border">
|
<div class="r-content">
|
||||||
<div class="r-dash" v-show="current_tab === tabs.home">
|
<div class="r-dash" v-show="current_tab === tabs.home">
|
||||||
<DashBoard />
|
<DashBoard />
|
||||||
</div>
|
</div>
|
||||||
@@ -57,7 +57,7 @@ function changeTab(tab) {
|
|||||||
|
|
||||||
<style lang="scss">
|
<style lang="scss">
|
||||||
.r-sidebar {
|
.r-sidebar {
|
||||||
width: 34em;
|
width: 32em;
|
||||||
|
|
||||||
@include phone-only {
|
@include phone-only {
|
||||||
display: none;
|
display: none;
|
||||||
@@ -74,7 +74,8 @@ function changeTab(tab) {
|
|||||||
|
|
||||||
.r-content {
|
.r-content {
|
||||||
grid-area: content;
|
grid-area: content;
|
||||||
width: 31rem;
|
width: 29rem;
|
||||||
|
|
||||||
|
|
||||||
@include tablet-landscape {
|
@include tablet-landscape {
|
||||||
display: none;
|
display: none;
|
||||||
|
|||||||
@@ -1,8 +1,9 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="up-next">
|
<div class="up-next">
|
||||||
<p class="heading">COMING UP NEXT</p>
|
|
||||||
<div class="r-grid">
|
<div class="r-grid">
|
||||||
<div class="main-item h-1 border" @click="playNext">
|
<div class="main-item border" >
|
||||||
|
<p class="heading">COMING UP NEXT</p>
|
||||||
|
<div class="itemx" @click="playNext">
|
||||||
<div
|
<div
|
||||||
class="album-art image"
|
class="album-art image"
|
||||||
:style="{
|
:style="{
|
||||||
@@ -19,6 +20,7 @@
|
|||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
<div class="scrollable-r border rounded">
|
<div class="scrollable-r border rounded">
|
||||||
<TrackItem v-for="song in queue" :key="song.track_id" :track="song" />
|
<TrackItem v-for="song in queue" :key="song.track_id" :track="song" />
|
||||||
</div>
|
</div>
|
||||||
@@ -29,8 +31,7 @@
|
|||||||
<script>
|
<script>
|
||||||
import perks from "@/composables/perks.js";
|
import perks from "@/composables/perks.js";
|
||||||
import audio from "@/composables/playAudio.js";
|
import audio from "@/composables/playAudio.js";
|
||||||
import { ref, toRefs } from "@vue/reactivity";
|
import { ref } from "@vue/reactivity";
|
||||||
import { watch } from "@vue/runtime-core";
|
|
||||||
import TrackItem from "../shared/TrackItem.vue";
|
import TrackItem from "../shared/TrackItem.vue";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
@@ -41,6 +42,7 @@ export default {
|
|||||||
const { playNext } = audio;
|
const { playNext } = audio;
|
||||||
|
|
||||||
const putCommas = perks.putCommas;
|
const putCommas = perks.putCommas;
|
||||||
|
|
||||||
return {
|
return {
|
||||||
playNext,
|
playNext,
|
||||||
putCommas,
|
putCommas,
|
||||||
@@ -55,7 +57,7 @@ export default {
|
|||||||
<style lang="scss">
|
<style lang="scss">
|
||||||
.up-next {
|
.up-next {
|
||||||
background-color: $card-dark;
|
background-color: $card-dark;
|
||||||
padding: $small;
|
padding: $small $small $small 0;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
|
|
||||||
@@ -65,12 +67,21 @@ export default {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.main-item {
|
.main-item {
|
||||||
|
border-radius: 0.5rem;
|
||||||
|
padding: 0.5rem;
|
||||||
|
margin-bottom: 0.5rem;
|
||||||
|
|
||||||
|
.itemx {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
padding: 0.5rem;
|
padding: 0.5rem;
|
||||||
border-radius: 0.5rem;
|
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
margin-bottom: 0.5rem;
|
border-radius: 0.5rem;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
background-color: $blue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.album-art {
|
.album-art {
|
||||||
width: 4.5rem;
|
width: 4.5rem;
|
||||||
@@ -95,15 +106,11 @@ export default {
|
|||||||
font-size: small;
|
font-size: small;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
&:hover {
|
|
||||||
background-color: $blue;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.r-grid {
|
.r-grid {
|
||||||
position: relative;
|
position: relative;
|
||||||
height: calc(100% - 2rem);
|
height: calc(100% - 2.5rem);
|
||||||
display: grid;
|
display: grid;
|
||||||
grid-template-rows: min-content;
|
grid-template-rows: min-content;
|
||||||
|
|
||||||
|
|||||||
@@ -2,7 +2,6 @@
|
|||||||
<div class="right-search">
|
<div class="right-search">
|
||||||
<div>
|
<div>
|
||||||
<div class="input">
|
<div class="input">
|
||||||
<Loader/>
|
|
||||||
<Filters :filters="filters" @removeFilter="removeFilter"/>
|
<Filters :filters="filters" @removeFilter="removeFilter"/>
|
||||||
<div class="input-loader border">
|
<div class="input-loader border">
|
||||||
<input
|
<input
|
||||||
@@ -12,7 +11,9 @@
|
|||||||
type="text"
|
type="text"
|
||||||
@keyup.backspace="removeLastFilter"
|
@keyup.backspace="removeLastFilter"
|
||||||
/>
|
/>
|
||||||
<div class="search-icon image"></div>
|
<div class="_loader">
|
||||||
|
<Loader/>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="separator no-border"></div>
|
<div class="separator no-border"></div>
|
||||||
|
|||||||
@@ -40,7 +40,8 @@ export default {
|
|||||||
overflow-x: hidden;
|
overflow-x: hidden;
|
||||||
|
|
||||||
.grid {
|
.grid {
|
||||||
display: flex;
|
display: grid;
|
||||||
|
grid-template-columns: repeat(auto-fill, minmax(8rem, 1fr));
|
||||||
flex-wrap: wrap;
|
flex-wrap: wrap;
|
||||||
padding: $small $small 0 $small;
|
padding: $small $small 0 $small;
|
||||||
gap: $small;
|
gap: $small;
|
||||||
|
|||||||
@@ -29,7 +29,6 @@ export default {
|
|||||||
<style lang="scss">
|
<style lang="scss">
|
||||||
.right-search .filter {
|
.right-search .filter {
|
||||||
display: flex;
|
display: flex;
|
||||||
margin-left: 2rem;
|
|
||||||
height: 2rem;
|
height: 2rem;
|
||||||
|
|
||||||
.item {
|
.item {
|
||||||
|
|||||||
@@ -41,6 +41,6 @@ function loadMore() {
|
|||||||
<style lang="scss">
|
<style lang="scss">
|
||||||
.right-search .tracks-results {
|
.right-search .tracks-results {
|
||||||
border-radius: 0.5rem;
|
border-radius: 0.5rem;
|
||||||
padding: $small;
|
padding: 1rem $small;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
name: 'AlbumView',
|
name: 'AlbumView',
|
||||||
params: { album: album.name, artist: album.artist },
|
params: { album: album.name, artist: album.artist },
|
||||||
}"
|
}"
|
||||||
class="result-item border"
|
class="result-item"
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
class="album-art image"
|
class="album-art image"
|
||||||
@@ -29,29 +29,32 @@ export default {
|
|||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
padding: $small;
|
padding: $small;
|
||||||
border-radius: $small;
|
border-radius: .75rem;
|
||||||
text-align: left !important;
|
text-align: left !important;
|
||||||
width: 9rem;
|
background-color: #726c7227;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
background-color: #1b3688cb;
|
||||||
|
}
|
||||||
|
|
||||||
.album-art {
|
.album-art {
|
||||||
height: 7rem;
|
height: 7.5rem;
|
||||||
width: 7rem;
|
width: 7.5rem;
|
||||||
border-radius: 0.5rem;
|
border-radius: .5rem;
|
||||||
margin-bottom: 0.5rem;
|
margin-bottom: 0.5rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.title {
|
.title {
|
||||||
width: 7rem;
|
width: 7rem;
|
||||||
margin-bottom: 0.5rem;
|
margin-bottom: 0.25rem;
|
||||||
font-size: 0.9rem;
|
font-size: 0.9rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.artistsx {
|
.artistsx {
|
||||||
width: 7rem;
|
width: 7rem;
|
||||||
display: flex;
|
|
||||||
font-size: 0.8rem;
|
font-size: 0.8rem;
|
||||||
text-align: left;
|
text-align: left;
|
||||||
color: rgba(40, 116, 216, 0.767);
|
color: #ffffffbd;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="xartist border" :style="{ backgroundColor: `#${color}` }">
|
<div class="xartist" :style="{ backgroundColor: `#${color}` }">
|
||||||
<div
|
<div
|
||||||
class="artist-image image"
|
class="artist-image image"
|
||||||
:style="{ backgroundImage: `url('${artist.image}')` }"
|
:style="{ backgroundImage: `url('${artist.image}')` }"
|
||||||
@@ -24,7 +24,7 @@ export default {
|
|||||||
|
|
||||||
width: 9em;
|
width: 9em;
|
||||||
height: 11em;
|
height: 11em;
|
||||||
border-radius: $small;
|
border-radius: 1rem;
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
<td class="index">{{ index }}</td>
|
<td class="index">{{ index }}</td>
|
||||||
<td class="flex" @click="emitUpdate(song)">
|
<td class="flex" @click="emitUpdate(song)">
|
||||||
<div
|
<div
|
||||||
class="album-art rounded image"
|
class="album-art image"
|
||||||
:style="{ backgroundImage: `url("${song.image}"` }"
|
:style="{ backgroundImage: `url("${song.image}"` }"
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
@@ -113,6 +113,7 @@ export default {
|
|||||||
margin-right: 1rem;
|
margin-right: 1rem;
|
||||||
display: grid;
|
display: grid;
|
||||||
place-items: center;
|
place-items: center;
|
||||||
|
border-radius: .5rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.artist {
|
.artist {
|
||||||
|
|||||||
@@ -9,9 +9,11 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="separator" id="av-sep"></div>
|
<div class="separator" id="av-sep"></div>
|
||||||
<FeaturedArtists :artists="artists" />
|
<FeaturedArtists :artists="artists" />
|
||||||
|
<div v-if="bio">
|
||||||
<div class="separator" id="av-sep"></div>
|
<div class="separator" id="av-sep"></div>
|
||||||
<AlbumBio :bio="bio" v-if="bio" />
|
<AlbumBio :bio="bio" v-if="bio" />
|
||||||
<div class="separator" id="av-sep"></div>
|
</div>
|
||||||
|
<!-- <div class="separator" id="av-sep"></div> -->
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@@ -74,12 +76,13 @@ export default {
|
|||||||
.al-view {
|
.al-view {
|
||||||
height: calc(100% - 1rem);
|
height: calc(100% - 1rem);
|
||||||
overflow: auto;
|
overflow: auto;
|
||||||
margin: $smaller $small;
|
margin: $small $small;
|
||||||
scrollbar-width: none;
|
scrollbar-width: none;
|
||||||
|
|
||||||
.songs {
|
.songs {
|
||||||
padding: $small;
|
padding: $small;
|
||||||
background-color: $card-dark;
|
background-color: $card-dark;
|
||||||
|
min-height: calc(100% - 30rem);
|
||||||
}
|
}
|
||||||
|
|
||||||
&::-webkit-scrollbar {
|
&::-webkit-scrollbar {
|
||||||
|
|||||||
@@ -144,6 +144,7 @@ export default {
|
|||||||
overflow-y: auto;
|
overflow-y: auto;
|
||||||
height: calc(100% - $small);
|
height: calc(100% - $small);
|
||||||
padding-right: $small;
|
padding-right: $small;
|
||||||
|
scrollbar-color: grey transparent;
|
||||||
|
|
||||||
@include phone-only {
|
@include phone-only {
|
||||||
padding-right: 0;
|
padding-right: 0;
|
||||||
|
|||||||
@@ -44,6 +44,7 @@ export default {
|
|||||||
margin: 0 $small;
|
margin: 0 $small;
|
||||||
overflow: auto;
|
overflow: auto;
|
||||||
padding-bottom: $small;
|
padding-bottom: $small;
|
||||||
|
scrollbar-width: none;
|
||||||
|
|
||||||
&::-webkit-scrollbar {
|
&::-webkit-scrollbar {
|
||||||
display: none;
|
display: none;
|
||||||
|
|||||||
Reference in New Issue
Block a user