build: v1.1.2, chore: improved charts displaying by removing duplicated worldwide chart code; style: removed a lot of .scss files in favor off tailwind utilities; chore: removed some unused ids; style: improved feedback on section-tabs; chore: replaced css variable in primary color in tailwind config with the hsl color code
This commit is contained in:
parent
f600e8afad
commit
c1bde5357d
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "deemix-webui",
|
"name": "deemix-webui",
|
||||||
"version": "1.1.2",
|
"version": "1.1.3",
|
||||||
"homepage": "https://codeberg.org/RemixDev/deemix-webui/src/master/README.md",
|
"homepage": "https://codeberg.org/RemixDev/deemix-webui/src/master/README.md",
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
|
File diff suppressed because one or more lines are too long
@ -7,6 +7,7 @@ window.vol = {
|
|||||||
|
|
||||||
import '@/styles/scss/style.scss'
|
import '@/styles/scss/style.scss'
|
||||||
import '@/styles/css/components.css'
|
import '@/styles/css/components.css'
|
||||||
|
import '@/styles/css/toasts.css'
|
||||||
|
|
||||||
import App from '@/App.vue'
|
import App from '@/App.vue'
|
||||||
import i18n from '@/plugins/i18n'
|
import i18n from '@/plugins/i18n'
|
||||||
|
@ -44,6 +44,10 @@ $searchbar-height: 45px;
|
|||||||
i {
|
i {
|
||||||
font-size: $icon-dimension;
|
font-size: $icon-dimension;
|
||||||
color: var(--foreground);
|
color: var(--foreground);
|
||||||
|
|
||||||
|
&::selection {
|
||||||
|
background: none;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -129,6 +129,58 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.progress {
|
||||||
|
position: relative;
|
||||||
|
height: 4px;
|
||||||
|
display: block;
|
||||||
|
width: 100%;
|
||||||
|
background-color: var(--secondary-background);
|
||||||
|
border-radius: 2px;
|
||||||
|
margin: 0.5rem 0 1rem 0;
|
||||||
|
overflow: hidden;
|
||||||
|
|
||||||
|
.determinate {
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
bottom: 0;
|
||||||
|
background-color: var(--primary-color);
|
||||||
|
transition: width 0.3s linear;
|
||||||
|
}
|
||||||
|
|
||||||
|
.converting {
|
||||||
|
background-color: var(--secondary-color);
|
||||||
|
transition: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.indeterminate {
|
||||||
|
background-color: var(--primary-color);
|
||||||
|
|
||||||
|
&::before {
|
||||||
|
content: '';
|
||||||
|
position: absolute;
|
||||||
|
background-color: inherit;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
bottom: 0;
|
||||||
|
will-change: left, right;
|
||||||
|
animation: indeterminate 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite;
|
||||||
|
}
|
||||||
|
|
||||||
|
&::after {
|
||||||
|
content: '';
|
||||||
|
position: absolute;
|
||||||
|
background-color: inherit;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
bottom: 0;
|
||||||
|
will-change: left, right;
|
||||||
|
animation: indeterminate-short 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) infinite;
|
||||||
|
animation-delay: 1.15s;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
@ -1,16 +1,23 @@
|
|||||||
<template>
|
<template>
|
||||||
<div
|
<div
|
||||||
id="download_tab_container"
|
id="download_tab_container"
|
||||||
class="tab_hidden"
|
class="block tab_hidden bg-panels-bg text-panels-text"
|
||||||
@transitionend="$refs.container.style.transition = ''"
|
@transitionend="$refs.container.style.transition = ''"
|
||||||
ref="container"
|
ref="container"
|
||||||
:data-label="$t('downloads')"
|
:data-label="$t('downloads')"
|
||||||
aria-label="downloads"
|
aria-label="downloads"
|
||||||
>
|
>
|
||||||
<div id="download_tab_drag_handler" @mousedown.prevent="startDrag" ref="dragHandler"></div>
|
<!-- Drag Handler -->
|
||||||
|
<div
|
||||||
|
v-show="isExpanded"
|
||||||
|
class="absolute w-4 h-full bg-grayscale-200"
|
||||||
|
@mousedown.prevent="startDrag"
|
||||||
|
style="cursor: ew-resize"
|
||||||
|
></div>
|
||||||
|
|
||||||
<i
|
<i
|
||||||
id="toggle_download_tab"
|
id="toggle_download_tab"
|
||||||
class="material-icons download_bar_icon"
|
class="m-1 text-2xl cursor-pointer material-icons"
|
||||||
@click.prevent="toggleDownloadTab"
|
@click.prevent="toggleDownloadTab"
|
||||||
ref="toggler"
|
ref="toggler"
|
||||||
:title="$t('globals.toggle_download_tab_hint')"
|
:title="$t('globals.toggle_download_tab_hint')"
|
||||||
@ -18,20 +25,25 @@
|
|||||||
<div id="queue_buttons">
|
<div id="queue_buttons">
|
||||||
<i
|
<i
|
||||||
v-if="clientMode"
|
v-if="clientMode"
|
||||||
class="material-icons download_bar_icon"
|
class="m-1 text-2xl cursor-pointer material-icons"
|
||||||
:title="$t('globals.open_downloads_folder')"
|
:title="$t('globals.open_downloads_folder')"
|
||||||
@click="openDownloadsFolder"
|
@click="openDownloadsFolder"
|
||||||
>
|
>
|
||||||
folder_open
|
folder_open
|
||||||
</i>
|
</i>
|
||||||
<i class="material-icons download_bar_icon" @click="cleanQueue" :title="$t('globals.clean_queue_hint')">
|
<i class="m-1 text-2xl cursor-pointer material-icons" @click="cleanQueue" :title="$t('globals.clean_queue_hint')">
|
||||||
clear_all
|
clear_all
|
||||||
</i>
|
</i>
|
||||||
<i class="material-icons download_bar_icon" @click="cancelQueue" :title="$t('globals.cancel_queue_hint')">
|
<i
|
||||||
|
class="m-1 text-2xl cursor-pointer material-icons"
|
||||||
|
@click="cancelQueue"
|
||||||
|
:title="$t('globals.cancel_queue_hint')"
|
||||||
|
>
|
||||||
delete_sweep
|
delete_sweep
|
||||||
</i>
|
</i>
|
||||||
</div>
|
</div>
|
||||||
<div id="download_list" ref="list">
|
|
||||||
|
<div v-show="isExpanded" id="download_list" class="w-full pr-2" ref="list">
|
||||||
<QueueItem
|
<QueueItem
|
||||||
v-for="item in queueList"
|
v-for="item in queueList"
|
||||||
:queue-item="item"
|
:queue-item="item"
|
||||||
@ -47,6 +59,27 @@
|
|||||||
#download_tab_container {
|
#download_tab_container {
|
||||||
height: 100vh;
|
height: 100vh;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#download_list {
|
||||||
|
height: calc(100% - 32px);
|
||||||
|
padding-left: 28px;
|
||||||
|
overflow-y: scroll;
|
||||||
|
|
||||||
|
&::-webkit-scrollbar {
|
||||||
|
width: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
&::-webkit-scrollbar-track {
|
||||||
|
background: var(--panels-background);
|
||||||
|
}
|
||||||
|
|
||||||
|
&::-webkit-scrollbar-thumb {
|
||||||
|
background: var(--panels-scroll);
|
||||||
|
border-radius: 4px;
|
||||||
|
width: 6px;
|
||||||
|
padding: 0px 2px;
|
||||||
|
}
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
@ -68,8 +101,8 @@ export default {
|
|||||||
cachedTabWidth: parseInt(localStorage.getItem('downloadTabWidth')) || 300,
|
cachedTabWidth: parseInt(localStorage.getItem('downloadTabWidth')) || 300,
|
||||||
queue: [],
|
queue: [],
|
||||||
queueList: {},
|
queueList: {},
|
||||||
queueComplete: []
|
queueComplete: [],
|
||||||
// clientMode: window.clientMode
|
isExpanded: localStorage.getItem('downloadTabOpen') === 'true'
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
@ -273,12 +306,13 @@ export default {
|
|||||||
|
|
||||||
// Toggle returns a Boolean based on the action it performed
|
// Toggle returns a Boolean based on the action it performed
|
||||||
let isHidden = this.$refs.container.classList.toggle('tab_hidden')
|
let isHidden = this.$refs.container.classList.toggle('tab_hidden')
|
||||||
|
this.isExpanded = !isHidden
|
||||||
|
|
||||||
if (!isHidden) {
|
if (this.isExpanded) {
|
||||||
this.setTabWidth(this.cachedTabWidth)
|
this.setTabWidth(this.cachedTabWidth)
|
||||||
}
|
}
|
||||||
|
|
||||||
localStorage.setItem('downloadTabOpen', !isHidden)
|
localStorage.setItem('downloadTabOpen', this.isExpanded)
|
||||||
},
|
},
|
||||||
cleanQueue() {
|
cleanQueue() {
|
||||||
socket.emit('removeFinishedDownloads')
|
socket.emit('removeFinishedDownloads')
|
||||||
|
@ -9,6 +9,51 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
// Source: https://loading.io/css/
|
||||||
|
.lds-ring {
|
||||||
|
display: inline-block;
|
||||||
|
position: relative;
|
||||||
|
width: 80px;
|
||||||
|
height: 80px;
|
||||||
|
|
||||||
|
div {
|
||||||
|
box-sizing: border-box;
|
||||||
|
display: block;
|
||||||
|
position: absolute;
|
||||||
|
width: 64px;
|
||||||
|
height: 64px;
|
||||||
|
margin: 8px;
|
||||||
|
border: 8px solid #fff;
|
||||||
|
border-radius: 50%;
|
||||||
|
animation: lds-ring 1.2s cubic-bezier(0.5, 0, 0.5, 1) infinite;
|
||||||
|
border-color: #fff transparent transparent transparent;
|
||||||
|
|
||||||
|
&:nth-child(1) {
|
||||||
|
animation-delay: -0.45s;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:nth-child(2) {
|
||||||
|
animation-delay: -0.3s;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:nth-child(3) {
|
||||||
|
animation-delay: -0.15s;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes lds-ring {
|
||||||
|
0% {
|
||||||
|
transform: rotate(0deg);
|
||||||
|
}
|
||||||
|
100% {
|
||||||
|
transform: rotate(360deg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
export default {
|
export default {
|
||||||
props: {
|
props: {
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<div id="about_tab" class="main_tabcontent" ref="root">
|
<div id="about_tab" ref="root">
|
||||||
<h2 class="page_heading">{{ $t('sidebar.about') }}</h2>
|
<h1 class="mb-8 text-5xl capitalize">{{ $t('sidebar.about') }}</h1>
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li>
|
<li>
|
||||||
{{ $t('about.updates.currentVersion') }}:
|
{{ $t('about.updates.currentVersion') }}:
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<template>
|
<template>
|
||||||
<div id="artist_tab" class="main_tabcontent image_header" ref="root">
|
<div id="artist_tab" class="relative image_header" ref="root">
|
||||||
<header
|
<header
|
||||||
class="inline-flex"
|
class="inline-flex"
|
||||||
:style="{
|
:style="{
|
||||||
@ -7,18 +7,19 @@
|
|||||||
'linear-gradient(to bottom, transparent 0%, var(--main-background) 100%), url(\'' + image + '\')'
|
'linear-gradient(to bottom, transparent 0%, var(--main-background) 100%), url(\'' + image + '\')'
|
||||||
}"
|
}"
|
||||||
>
|
>
|
||||||
<h1>{{ title }}</h1>
|
<h1 class="m-0">{{ title }}</h1>
|
||||||
|
|
||||||
<div role="button" aria-label="download" @click.stop="addToQueue" :data-link="link" class="fab right">
|
<div role="button" aria-label="download" @click.stop="addToQueue" :data-link="link" class="fab right">
|
||||||
<i class="material-icons" :title="$t('globals.download_hint')">get_app</i>
|
<i class="material-icons" :title="$t('globals.download_hint')">get_app</i>
|
||||||
</div>
|
</div>
|
||||||
</header>
|
</header>
|
||||||
|
|
||||||
<div class="tab">
|
<div class="my-4">
|
||||||
<button
|
<button
|
||||||
v-for="(item, name) in body"
|
v-for="(item, name) in body"
|
||||||
:key="name"
|
:key="name"
|
||||||
class="btn btn-primary"
|
class="mr-2 btn bg-background-main"
|
||||||
:class="{ active: name === currentTab }"
|
:class="{ 'btn-primary': name === currentTab }"
|
||||||
:href="'#artist_' + name"
|
:href="'#artist_' + name"
|
||||||
@click="changeTab(name)"
|
@click="changeTab(name)"
|
||||||
>
|
>
|
||||||
@ -70,12 +71,6 @@
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
|
||||||
.main_tabcontent {
|
|
||||||
position: relative;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { isEmpty, orderBy } from 'lodash-es'
|
import { isEmpty, orderBy } from 'lodash-es'
|
||||||
import { socket } from '@/utils/socket'
|
import { socket } from '@/utils/socket'
|
||||||
|
@ -1,40 +1,25 @@
|
|||||||
<template>
|
<template>
|
||||||
<div id="charts_tab" class="main_tabcontent" ref="root">
|
<div>
|
||||||
<h2 class="page_heading">{{ $t('charts.title') }}</h2>
|
<h1 class="mb-8 text-5xl">{{ $t('charts.title') }}</h1>
|
||||||
<div v-if="country === ''" id="charts_selection">
|
|
||||||
<div class="release_grid charts_grid">
|
|
||||||
<template v-for="release in countries">
|
|
||||||
<div
|
|
||||||
role="button"
|
|
||||||
:aria-label="release.title"
|
|
||||||
v-if="release.title === 'Worldwide'"
|
|
||||||
class="release clickable"
|
|
||||||
@click="getTrackList"
|
|
||||||
:data-title="release.title"
|
|
||||||
:data-id="release.id"
|
|
||||||
:key="release.id"
|
|
||||||
>
|
|
||||||
<img class="rounded coverart" :src="release.picture_medium" />
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<template v-for="release in countries">
|
<div v-if="country === ''">
|
||||||
|
<div class="release_grid charts_grid">
|
||||||
<div
|
<div
|
||||||
|
v-for="release in countries"
|
||||||
role="button"
|
role="button"
|
||||||
:aria-label="release.title"
|
:aria-label="release.title"
|
||||||
v-if="release.title !== 'Worldwide'"
|
class="w-40 h-40 release clickable"
|
||||||
class="release clickable"
|
|
||||||
@click="getTrackList"
|
@click="getTrackList"
|
||||||
:data-title="release.title"
|
:data-title="release.title"
|
||||||
:data-id="release.id"
|
:data-id="release.id"
|
||||||
:key="release.id"
|
:key="release.id"
|
||||||
>
|
>
|
||||||
<img class="rounded coverart" :src="release.picture_medium" />
|
<img class="w-full rounded coverart" :src="release.picture_medium" />
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div v-else id="charts_table">
|
</div>
|
||||||
|
|
||||||
|
<div v-else>
|
||||||
<button class="btn btn-primary" @click="onChangeCountry">{{ $t('charts.changeCountry') }}</button>
|
<button class="btn btn-primary" @click="onChangeCountry">{{ $t('charts.changeCountry') }}</button>
|
||||||
<button class="btn btn-primary" @click.stop="addToQueue" :data-link="'https://www.deezer.com/playlist/' + id">
|
<button class="btn btn-primary" @click.stop="addToQueue" :data-link="'https://www.deezer.com/playlist/' + id">
|
||||||
{{ $t('charts.download') }}
|
{{ $t('charts.download') }}
|
||||||
@ -118,13 +103,32 @@ export default {
|
|||||||
chart: []
|
chart: []
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
computed: {
|
||||||
|
worldwideRelease() {
|
||||||
|
let worldwideRelease = this.countries.filter(country => {
|
||||||
|
return country.title === 'Worldwide'
|
||||||
|
})
|
||||||
|
|
||||||
|
return worldwideRelease[0]
|
||||||
|
}
|
||||||
|
},
|
||||||
async created() {
|
async created() {
|
||||||
socket.on('setChartTracks', this.setTracklist)
|
socket.on('setChartTracks', this.setTracklist)
|
||||||
this.$on('hook:destroyed', () => {
|
this.$on('hook:destroyed', () => {
|
||||||
socket.off('setChartTracks')
|
socket.off('setChartTracks')
|
||||||
})
|
})
|
||||||
|
|
||||||
const chartsData = await getChartsData()
|
let chartsData = await getChartsData()
|
||||||
|
let worldwideChart
|
||||||
|
|
||||||
|
chartsData = chartsData.filter(item => {
|
||||||
|
if (item.title === 'Worldwide') {
|
||||||
|
worldwideChart = item
|
||||||
|
}
|
||||||
|
|
||||||
|
return item.title !== 'Worldwide'
|
||||||
|
})
|
||||||
|
chartsData.unshift(worldwideChart)
|
||||||
|
|
||||||
this.initCharts(chartsData)
|
this.initCharts(chartsData)
|
||||||
},
|
},
|
||||||
@ -183,6 +187,3 @@ export default {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style>
|
|
||||||
</style>
|
|
@ -1,6 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<div id="errors_tab" class="main_tabcontent">
|
<div>
|
||||||
<h1>{{ $t('errors.title', { name: title }) }}</h1>
|
<h1 class="mb-8 text-5xl">{{ $t('errors.title', { name: title }) }}</h1>
|
||||||
|
|
||||||
<table class="table table--tracklist">
|
<table class="table table--tracklist">
|
||||||
<tr>
|
<tr>
|
||||||
|
@ -1,20 +1,20 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="main_tabcontent">
|
<div>
|
||||||
<h2 class="page_heading">
|
<h1 class="mb-8 text-5xl">
|
||||||
{{ $t('favorites.title') }}
|
{{ $t('favorites.title') }}
|
||||||
<div
|
<div
|
||||||
@click="reloadTabs"
|
@click="reloadTabs"
|
||||||
class="clickable reload-button reload-button--inline"
|
class="inline-block clickable reload-button"
|
||||||
ref="reloadButton"
|
ref="reloadButton"
|
||||||
role="button"
|
role="button"
|
||||||
aria-label="reload"
|
aria-label="reload"
|
||||||
>
|
>
|
||||||
<i class="material-icons">sync</i>
|
<i class="material-icons">sync</i>
|
||||||
</div>
|
</div>
|
||||||
</h2>
|
</h1>
|
||||||
|
|
||||||
<div class="section-tabs">
|
<ul class="section-tabs">
|
||||||
<div
|
<li
|
||||||
class="section-tabs__tab favorites_tablinks"
|
class="section-tabs__tab favorites_tablinks"
|
||||||
:class="{ active: activeTab === tab }"
|
:class="{ active: activeTab === tab }"
|
||||||
@click="activeTab = tab"
|
@click="activeTab = tab"
|
||||||
@ -22,8 +22,8 @@
|
|||||||
:key="tab"
|
:key="tab"
|
||||||
>
|
>
|
||||||
{{ $tc(`globals.listTabs.${tab}`, 2) }}
|
{{ $tc(`globals.listTabs.${tab}`, 2) }}
|
||||||
</div>
|
</li>
|
||||||
</div>
|
</ul>
|
||||||
|
|
||||||
<button class="btn btn-primary" v-if="!activeTabEmpty" style="margin-bottom: 2rem" @click="downloadAllOfType">
|
<button class="btn btn-primary" v-if="!activeTabEmpty" style="margin-bottom: 2rem" @click="downloadAllOfType">
|
||||||
{{ $t('globals.downloadAll', { thing: $tc(`globals.listTabs.${activeTab}`, 2) }) }}
|
{{ $t('globals.downloadAll', { thing: $tc(`globals.listTabs.${activeTab}`, 2) }) }}
|
||||||
@ -228,6 +228,14 @@
|
|||||||
display: block;
|
display: block;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.reload-button {
|
||||||
|
&.spin {
|
||||||
|
i {
|
||||||
|
animation: spin 500ms infinite ease-out reverse;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
@ -1,16 +1,16 @@
|
|||||||
<template>
|
<template>
|
||||||
<div id="home_tab" class="main_tabcontent" ref="root">
|
<div id="home_tab">
|
||||||
<h2 class="page_heading">{{ $t('globals.welcome') }}</h2>
|
<h1 class="mb-8 text-5xl">{{ $t('globals.welcome') }}</h1>
|
||||||
|
|
||||||
<section class="home_section" ref="notLogged" v-if="!isLoggedIn">
|
<section class="py-6 border-0 border-t border-solid border-grayscale-500" ref="notLogged" v-if="!isLoggedIn">
|
||||||
<p id="home_not_logged_text">{{ $t('home.needTologin') }}</p>
|
<p id="home_not_logged_text" class="mb-4">{{ $t('home.needTologin') }}</p>
|
||||||
<router-link tag="button" name="button" :to="{ name: 'Settings' }" class="btn btn-primary">
|
<router-link tag="button" name="button" :to="{ name: 'Settings' }" class="btn btn-primary">
|
||||||
{{ $t('home.openSettings') }}
|
{{ $t('home.openSettings') }}
|
||||||
</router-link>
|
</router-link>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section v-if="playlists.length" class="home_section">
|
<section v-if="playlists.length" class="py-6 border-0 border-t border-solid border-grayscale-500">
|
||||||
<h3 class="section_heading">{{ $t('home.sections.popularPlaylists') }}</h3>
|
<h2 class="mb-6 text-3xl">{{ $t('home.sections.popularPlaylists') }}</h2>
|
||||||
<div class="release_grid">
|
<div class="release_grid">
|
||||||
<router-link
|
<router-link
|
||||||
tag="div"
|
tag="div"
|
||||||
@ -47,8 +47,8 @@
|
|||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section v-if="albums.length" class="home_section">
|
<section v-if="albums.length" class="py-6 border-0 border-t border-solid border-grayscale-500">
|
||||||
<h3 class="section_heading">{{ $t('home.sections.popularAlbums') }}</h3>
|
<h2 class="mb-6 text-3xl">{{ $t('home.sections.popularAlbums') }}</h2>
|
||||||
<div class="release_grid">
|
<div class="release_grid">
|
||||||
<router-link
|
<router-link
|
||||||
tag="div"
|
tag="div"
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<div id="analyzer_tab" class="main_tabcontent image_header" ref="root">
|
<div id="analyzer_tab" class="image_header" ref="root">
|
||||||
<h2 class="page_heading page_heading--capitalize">{{ $t('sidebar.linkAnalyzer') }}</h2>
|
<h1 class="mb-8 text-5xl capitalize">{{ $t('sidebar.linkAnalyzer') }}</h1>
|
||||||
|
|
||||||
<div v-if="link === ''">
|
<div v-if="link === ''">
|
||||||
<p>
|
<p>
|
||||||
@ -24,8 +24,8 @@
|
|||||||
}"
|
}"
|
||||||
>
|
>
|
||||||
<div>
|
<div>
|
||||||
<h1>{{ title }}</h1>
|
<h1 class="m-0">{{ title }}</h1>
|
||||||
<h2 v-if="type === 'track'">
|
<h2 v-if="type === 'track'" class="m-0 mb-3 text-lg">
|
||||||
<i18n path="globals.by" tag="span">
|
<i18n path="globals.by" tag="span">
|
||||||
<router-link
|
<router-link
|
||||||
tag="span"
|
tag="span"
|
||||||
@ -48,7 +48,7 @@
|
|||||||
</router-link>
|
</router-link>
|
||||||
</i18n>
|
</i18n>
|
||||||
</h2>
|
</h2>
|
||||||
<h2 v-else-if="type === 'album'">
|
<h2 v-else-if="type === 'album'" class="m-0 mb-3 text-lg">
|
||||||
<i18n path="globals.by" tag="span">
|
<i18n path="globals.by" tag="span">
|
||||||
<router-link
|
<router-link
|
||||||
tag="span"
|
tag="span"
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<template>
|
<template>
|
||||||
<div id="search_tab" class="main_tabcontent" ref="root">
|
<div id="search_tab" ref="root">
|
||||||
<div v-show="!showSearchTab">
|
<div v-show="!showSearchTab">
|
||||||
<h2>{{ $t('search.startSearching') }}</h2>
|
<h2>{{ $t('search.startSearching') }}</h2>
|
||||||
<p>{{ $t('search.description') }}</p>
|
<p>{{ $t('search.description') }}</p>
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<div id="settings_tab" class="main_tabcontent fixed_footer" ref="root">
|
<div id="settings_tab" class="fixed_footer" ref="root">
|
||||||
<h2 class="page_heading">{{ $t('settings.title') }}</h2>
|
<h1 class="mb-8 text-5xl">{{ $t('settings.title') }}</h1>
|
||||||
|
|
||||||
<div id="logged_in_info" v-if="isLoggedIn" ref="loggedInInfo">
|
<div id="logged_in_info" v-if="isLoggedIn" ref="loggedInInfo">
|
||||||
<img id="settings_picture" :src="pictureHref" alt="Profile Picture" ref="userpicture" class="circle" />
|
<img id="settings_picture" :src="pictureHref" alt="Profile Picture" ref="userpicture" class="circle" />
|
||||||
@ -31,7 +31,7 @@
|
|||||||
ref="loginInput"
|
ref="loginInput"
|
||||||
placeholder="ARL"
|
placeholder="ARL"
|
||||||
/>
|
/>
|
||||||
<button id="settings_btn_copyArl" class="btn btn-primary btn-only-icon ml-2" @click="copyARLtoClipboard">
|
<button id="settings_btn_copyArl" class="ml-2 btn btn-primary btn-only-icon" @click="copyARLtoClipboard">
|
||||||
<i class="material-icons">assignment</i>
|
<i class="material-icons">assignment</i>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
@ -83,7 +83,7 @@
|
|||||||
<button
|
<button
|
||||||
id="select_downloads_folder"
|
id="select_downloads_folder"
|
||||||
v-if="clientMode"
|
v-if="clientMode"
|
||||||
class="btn btn-primary btn-only-icon ml-2"
|
class="ml-2 btn btn-primary btn-only-icon"
|
||||||
@click="selectDownloadFolder"
|
@click="selectDownloadFolder"
|
||||||
>
|
>
|
||||||
<i class="material-icons">folder</i>
|
<i class="material-icons">folder</i>
|
||||||
@ -618,7 +618,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<footer>
|
<footer>
|
||||||
<button class="btn btn-primary mr-2" @click="resetSettings">{{ $t('settings.reset') }}</button>
|
<button class="mr-2 btn btn-primary" @click="resetSettings">{{ $t('settings.reset') }}</button>
|
||||||
<button class="btn btn-primary" @click="saveSettings">{{ $t('settings.save') }}</button>
|
<button class="btn btn-primary" @click="saveSettings">{{ $t('settings.save') }}</button>
|
||||||
</footer>
|
</footer>
|
||||||
</div>
|
</div>
|
||||||
|
@ -1,16 +1,16 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="main_tabcontent fixed_footer image_header" ref="root">
|
<div class="relative fixed_footer image_header" ref="root">
|
||||||
<header
|
<header
|
||||||
:style="{
|
:style="{
|
||||||
'background-image':
|
'background-image':
|
||||||
'linear-gradient(to bottom, transparent 0%, var(--main-background) 100%), url(\'' + image + '\')'
|
'linear-gradient(to bottom, transparent 0%, var(--main-background) 100%), url(\'' + image + '\')'
|
||||||
}"
|
}"
|
||||||
>
|
>
|
||||||
<h1 class="inline-flex">
|
<h1 class="inline-flex m-0 text-5xl">
|
||||||
{{ title }} <i v-if="explicit" class="material-icons explicit_icon explicit_icon--right">explicit</i>
|
{{ title }} <i v-if="explicit" class="material-icons explicit_icon explicit_icon--right">explicit</i>
|
||||||
</h1>
|
</h1>
|
||||||
|
|
||||||
<h2>
|
<h2 class="m-0 mb-3 text-lg">
|
||||||
<p v-if="metadata">{{ metadata }}</p>
|
<p v-if="metadata">{{ metadata }}</p>
|
||||||
<p v-if="release_date">{{ release_date }}</p>
|
<p v-if="release_date">{{ release_date }}</p>
|
||||||
</h2>
|
</h2>
|
||||||
@ -150,12 +150,6 @@
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
|
||||||
.main_tabcontent {
|
|
||||||
position: relative;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { isEmpty } from 'lodash-es'
|
import { isEmpty } from 'lodash-es'
|
||||||
import { socket } from '@/utils/socket'
|
import { socket } from '@/utils/socket'
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
@layer components {
|
@layer components {
|
||||||
|
/* Button */
|
||||||
.btn {
|
.btn {
|
||||||
@apply text-grayscale-900 relative border border-transparent border-solid rounded font-semibold text-sm py-0 px-2 h-8 uppercase;
|
@apply relative h-8 px-2 py-0 text-sm font-semibold uppercase border border-transparent border-solid rounded text-grayscale-900;
|
||||||
|
|
||||||
font-family: inherit;
|
font-family: inherit;
|
||||||
transition: transform 50ms ease-in-out;
|
transition: transform 50ms ease-in-out;
|
||||||
@ -11,11 +12,11 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.btn[disabled] {
|
.btn[disabled] {
|
||||||
@apply bg-gray-600 text-gray-300 opacity-75 cursor-not-allowed;
|
@apply text-gray-300 bg-gray-600 opacity-75 cursor-not-allowed;
|
||||||
}
|
}
|
||||||
|
|
||||||
.btn-only-icon {
|
.btn-only-icon {
|
||||||
@apply w-12 py-0 px-1 flex justify-center items-center;
|
@apply flex items-center justify-center w-12 px-1 py-0;
|
||||||
|
|
||||||
min-width: 24px;
|
min-width: 24px;
|
||||||
}
|
}
|
||||||
@ -27,4 +28,22 @@
|
|||||||
.btn-primary:hover {
|
.btn-primary:hover {
|
||||||
@apply bg-blue-600 border-foreground;
|
@apply bg-blue-600 border-foreground;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Section tabs */
|
||||||
|
.section-tabs {
|
||||||
|
@apply flex mt-4 mb-6 list-none cursor-pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
.section-tabs__tab {
|
||||||
|
@apply flex-1 p-3 text-xl text-center capitalize border-t-4 rounded-b border-foreground bg-background-main;
|
||||||
|
}
|
||||||
|
|
||||||
|
.section-tabs__tab.active {
|
||||||
|
@apply text-primary border-primary bg-background-main;
|
||||||
|
}
|
||||||
|
|
||||||
|
.section-tabs__tab:hover {
|
||||||
|
@apply text-primary border-primary bg-background-secondary;
|
||||||
|
@apply bg-opacity-25;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,26 +1,22 @@
|
|||||||
.toast-icon {
|
.toast-icon {
|
||||||
display: inline-block;
|
@apply inline-block mr-2;
|
||||||
margin-right: 8px;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.circle-loader {
|
.circle-loader {
|
||||||
display: inline-block;
|
@apply inline-block w-4 h-4;
|
||||||
border: 2px solid var(--primary-color);
|
border: 2px solid var(--primary-color);
|
||||||
border-radius: 50%;
|
border-radius: 50%;
|
||||||
border-bottom: 2px solid var(--secondary-background);
|
border-bottom: 2px solid var(--secondary-background);
|
||||||
width: 16px;
|
|
||||||
height: 16px;
|
|
||||||
animation: spin 1s linear infinite;
|
animation: spin 1s linear infinite;
|
||||||
}
|
}
|
||||||
|
|
||||||
.toastify {
|
.toastify {
|
||||||
display: flex;
|
@apply flex items-center;
|
||||||
align-items: center;
|
|
||||||
box-shadow: 0 3px 6px -1px rgba(0, 0, 0, 0.12), 0 10px 36px -4px rgba(0, 0, 0, 0.3);
|
box-shadow: 0 3px 6px -1px rgba(0, 0, 0, 0.12), 0 10px 36px -4px rgba(0, 0, 0, 0.3);
|
||||||
background: var(--toast-background);
|
background: var(--toast-background);
|
||||||
color: var(--toast-text);
|
color: var(--toast-text);
|
||||||
|
}
|
||||||
|
|
||||||
.circle-loader {
|
.toastify .circle-loader {
|
||||||
border-bottom-color: var(--toast-secondary);
|
border-bottom-color: var(--toast-secondary);
|
||||||
}
|
}
|
||||||
}
|
|
@ -1,11 +1,3 @@
|
|||||||
#search {
|
|
||||||
.search__icon {
|
|
||||||
i {
|
|
||||||
@include remove-selection-background;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#container {
|
#container {
|
||||||
--container-width: 95%;
|
--container-width: 95%;
|
||||||
|
|
||||||
|
@ -1,51 +0,0 @@
|
|||||||
.progress {
|
|
||||||
position: relative;
|
|
||||||
height: 4px;
|
|
||||||
display: block;
|
|
||||||
width: 100%;
|
|
||||||
background-color: var(--secondary-background);
|
|
||||||
border-radius: 2px;
|
|
||||||
margin: 0.5rem 0 1rem 0;
|
|
||||||
overflow: hidden;
|
|
||||||
|
|
||||||
.determinate {
|
|
||||||
position: absolute;
|
|
||||||
top: 0;
|
|
||||||
left: 0;
|
|
||||||
bottom: 0;
|
|
||||||
background-color: var(--primary-color);
|
|
||||||
transition: width 0.3s linear;
|
|
||||||
}
|
|
||||||
|
|
||||||
.converting {
|
|
||||||
background-color: var(--secondary-color);
|
|
||||||
transition: none !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.indeterminate {
|
|
||||||
background-color: var(--primary-color);
|
|
||||||
|
|
||||||
&::before {
|
|
||||||
content: '';
|
|
||||||
position: absolute;
|
|
||||||
background-color: inherit;
|
|
||||||
top: 0;
|
|
||||||
left: 0;
|
|
||||||
bottom: 0;
|
|
||||||
will-change: left, right;
|
|
||||||
animation: indeterminate 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite;
|
|
||||||
}
|
|
||||||
|
|
||||||
&::after {
|
|
||||||
content: '';
|
|
||||||
position: absolute;
|
|
||||||
background-color: inherit;
|
|
||||||
top: 0;
|
|
||||||
left: 0;
|
|
||||||
bottom: 0;
|
|
||||||
will-change: left, right;
|
|
||||||
animation: indeterminate-short 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) infinite;
|
|
||||||
animation-delay: 1.15s;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,18 +1,7 @@
|
|||||||
|
// Make a component? But it would be only one HTML tag with a bunch of classes and a prop (the img src)...
|
||||||
.image_header {
|
.image_header {
|
||||||
header {
|
header {
|
||||||
|
@apply bg-cover pt-56 px-6 pb-2 rounded-t-lg;
|
||||||
background-position: 0% 35%;
|
background-position: 0% 35%;
|
||||||
background-size: cover;
|
|
||||||
padding: 220px 24px 8px;
|
|
||||||
border-radius: 8px 8px 0px 0px;
|
|
||||||
|
|
||||||
h1,
|
|
||||||
h2 {
|
|
||||||
margin: 0px;
|
|
||||||
}
|
|
||||||
|
|
||||||
h2 {
|
|
||||||
font-size: 18px;
|
|
||||||
margin-bottom: 12px;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,47 +1,3 @@
|
|||||||
/* Source: https://loading.io/css/ */
|
|
||||||
.lds-ring {
|
|
||||||
display: inline-block;
|
|
||||||
position: relative;
|
|
||||||
width: 80px;
|
|
||||||
height: 80px;
|
|
||||||
|
|
||||||
div {
|
|
||||||
box-sizing: border-box;
|
|
||||||
display: block;
|
|
||||||
position: absolute;
|
|
||||||
width: 64px;
|
|
||||||
height: 64px;
|
|
||||||
margin: 8px;
|
|
||||||
border: 8px solid #fff;
|
|
||||||
border-radius: 50%;
|
|
||||||
animation: lds-ring 1.2s cubic-bezier(0.5, 0, 0.5, 1) infinite;
|
|
||||||
border-color: #fff transparent transparent transparent;
|
|
||||||
|
|
||||||
&:nth-child(1) {
|
|
||||||
animation-delay: -0.45s;
|
|
||||||
}
|
|
||||||
|
|
||||||
&:nth-child(2) {
|
|
||||||
animation-delay: -0.3s;
|
|
||||||
}
|
|
||||||
|
|
||||||
&:nth-child(3) {
|
|
||||||
animation-delay: -0.15s;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@keyframes lds-ring {
|
|
||||||
0% {
|
|
||||||
transform: rotate(0deg);
|
|
||||||
}
|
|
||||||
100% {
|
|
||||||
transform: rotate(360deg);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* ====== */
|
|
||||||
|
|
||||||
@keyframes spin {
|
@keyframes spin {
|
||||||
0% {
|
0% {
|
||||||
transform: rotate(0deg);
|
transform: rotate(0deg);
|
||||||
|
@ -1,17 +0,0 @@
|
|||||||
// https://css-tricks.com/using-custom-property-stacks-to-tame-the-cascade/
|
|
||||||
@function vars($stack...) {
|
|
||||||
$output: null;
|
|
||||||
$close: '';
|
|
||||||
$length: length($stack);
|
|
||||||
|
|
||||||
@each $var in $stack {
|
|
||||||
@if (str-index('#{$var}', '--') == 1) {
|
|
||||||
$var: 'var(#{$var}';
|
|
||||||
$close: '#{$close})';
|
|
||||||
}
|
|
||||||
|
|
||||||
$output: if($output, '#{$output}, #{$var}', $var);
|
|
||||||
}
|
|
||||||
|
|
||||||
@return unquote($output + $close);
|
|
||||||
}
|
|
@ -37,6 +37,16 @@ button,
|
|||||||
-webkit-appearance: button;
|
-webkit-appearance: button;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
input[type='text'],
|
||||||
|
input[type='password'],
|
||||||
|
input[type='number'],
|
||||||
|
input[type='search'],
|
||||||
|
input[type='checkbox'],
|
||||||
|
select {
|
||||||
|
-webkit-appearance: none;
|
||||||
|
appearance: none;
|
||||||
|
}
|
||||||
|
|
||||||
[type='number']::-webkit-inner-spin-button,
|
[type='number']::-webkit-inner-spin-button,
|
||||||
[type='number']::-webkit-outer-spin-button {
|
[type='number']::-webkit-outer-spin-button {
|
||||||
height: auto;
|
height: auto;
|
||||||
@ -46,3 +56,10 @@ button,
|
|||||||
[role='button'] {
|
[role='button'] {
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
*,
|
||||||
|
::before,
|
||||||
|
::after {
|
||||||
|
border-width: 0;
|
||||||
|
border-style: solid;
|
||||||
|
}
|
||||||
|
@ -2,8 +2,8 @@ input[type='text'],
|
|||||||
input[type='password'],
|
input[type='password'],
|
||||||
input[type='number'],
|
input[type='number'],
|
||||||
input[type='search'] {
|
input[type='search'] {
|
||||||
-webkit-appearance: none;
|
// -webkit-appearance: none;
|
||||||
appearance: none;
|
// appearance: none;
|
||||||
width: calc(100% - 16px);
|
width: calc(100% - 16px);
|
||||||
border: 0px solid black;
|
border: 0px solid black;
|
||||||
line-height: 36px;
|
line-height: 36px;
|
||||||
@ -24,8 +24,8 @@ input[type='search']::-webkit-search-cancel-button {
|
|||||||
}
|
}
|
||||||
|
|
||||||
input[type='checkbox'] {
|
input[type='checkbox'] {
|
||||||
-webkit-appearance: none;
|
// -webkit-appearance: none;
|
||||||
appearance: none;
|
// appearance: none;
|
||||||
background-color: none;
|
background-color: none;
|
||||||
border: 2px solid gray;
|
border: 2px solid gray;
|
||||||
opacity: 0.5;
|
opacity: 0.5;
|
||||||
@ -49,8 +49,8 @@ input[type='checkbox'] {
|
|||||||
}
|
}
|
||||||
|
|
||||||
select {
|
select {
|
||||||
-webkit-appearance: none;
|
// -webkit-appearance: none;
|
||||||
appearance: none;
|
// appearance: none;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
border: 0px solid black;
|
border: 0px solid black;
|
||||||
line-height: 36px;
|
line-height: 36px;
|
||||||
@ -290,3 +290,17 @@ a {
|
|||||||
[v-cloak] {
|
[v-cloak] {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.material-icons {
|
||||||
|
$sizes: 18, 24, 36, 48;
|
||||||
|
|
||||||
|
@each $size in $sizes {
|
||||||
|
&.md-#{$size} {
|
||||||
|
font-size: $size * 1px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&.mirrored {
|
||||||
|
transform: scaleX(-1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -1,31 +0,0 @@
|
|||||||
.page_heading {
|
|
||||||
font-size: 2.5rem;
|
|
||||||
margin-bottom: 35px;
|
|
||||||
|
|
||||||
&--capitalize {
|
|
||||||
text-transform: capitalize;
|
|
||||||
}
|
|
||||||
|
|
||||||
&--uppercase {
|
|
||||||
text-transform: uppercase;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.section_heading {
|
|
||||||
font-size: 1.75rem;
|
|
||||||
margin-bottom: 25px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.material-icons {
|
|
||||||
$sizes: 18, 24, 36, 48;
|
|
||||||
|
|
||||||
@each $size in $sizes {
|
|
||||||
&.md-#{$size} {
|
|
||||||
font-size: $size * 1px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
&.mirrored {
|
|
||||||
transform: scaleX(-1);
|
|
||||||
}
|
|
||||||
}
|
|
@ -26,19 +26,12 @@ body {
|
|||||||
|
|
||||||
@import './globals/globals';
|
@import './globals/globals';
|
||||||
@import './globals/tables';
|
@import './globals/tables';
|
||||||
@import './globals/typography';
|
|
||||||
|
|
||||||
@import './tabs/about-tab';
|
|
||||||
@import './tabs/charts-tab';
|
|
||||||
@import './tabs/download-tab';
|
@import './tabs/download-tab';
|
||||||
@import './tabs/favorites-tab';
|
|
||||||
@import './tabs/home-tab';
|
|
||||||
@import './tabs/search-tab';
|
@import './tabs/search-tab';
|
||||||
@import './tabs/settings-tab';
|
@import './tabs/settings-tab';
|
||||||
@import './tabs/tabs';
|
@import './tabs/tabs';
|
||||||
|
|
||||||
@import './middle-section';
|
@import './middle-section';
|
||||||
@import './progressbar';
|
|
||||||
@import './sidebar';
|
@import './sidebar';
|
||||||
@import './stackedTabs';
|
@import './stackedTabs';
|
||||||
@import './toasts';
|
|
||||||
|
@ -1,13 +0,0 @@
|
|||||||
#about_tab {
|
|
||||||
p {
|
|
||||||
margin-bottom: 8px;
|
|
||||||
}
|
|
||||||
|
|
||||||
h3 {
|
|
||||||
margin: 8px 0px;
|
|
||||||
}
|
|
||||||
|
|
||||||
hr {
|
|
||||||
margin: 12px 0px;
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,8 +0,0 @@
|
|||||||
.charts_grid {
|
|
||||||
.release {
|
|
||||||
.coverart {
|
|
||||||
width: 156px;
|
|
||||||
height: 156px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,9 +1,12 @@
|
|||||||
#download_tab_container {
|
#download_tab_container {
|
||||||
height: 100%;
|
#queue_buttons {
|
||||||
background-color: var(--panels-background);
|
position: absolute;
|
||||||
color: var(--panels-text);
|
top: 0;
|
||||||
display: block;
|
right: 0;
|
||||||
flex-direction: column;
|
opacity: 1;
|
||||||
|
visibility: visible;
|
||||||
|
transition: all 250ms ease-in-out;
|
||||||
|
}
|
||||||
|
|
||||||
&.tab_hidden {
|
&.tab_hidden {
|
||||||
width: 32px;
|
width: 32px;
|
||||||
@ -12,26 +15,15 @@
|
|||||||
margin-left: 4px;
|
margin-left: 4px;
|
||||||
|
|
||||||
&::before {
|
&::before {
|
||||||
font-family: 'Material Icons';
|
|
||||||
font-style: normal;
|
|
||||||
font-weight: 400;
|
|
||||||
content: 'chevron_left';
|
content: 'chevron_left';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#download_tab_drag_handler {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
#queue_buttons {
|
#queue_buttons {
|
||||||
opacity: 0;
|
opacity: 0;
|
||||||
visibility: hidden;
|
visibility: hidden;
|
||||||
}
|
}
|
||||||
|
|
||||||
#download_list {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
&::after {
|
&::after {
|
||||||
content: attr(data-label);
|
content: attr(data-label);
|
||||||
display: flex;
|
display: flex;
|
||||||
@ -55,50 +47,3 @@
|
|||||||
content: 'chevron_right';
|
content: 'chevron_right';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.download_bar_icon {
|
|
||||||
cursor: pointer;
|
|
||||||
font-size: 24px;
|
|
||||||
margin: 4px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#download_list {
|
|
||||||
width: 100%;
|
|
||||||
height: calc(100% - 32px);
|
|
||||||
padding: 0px 8px 0px 28px;
|
|
||||||
overflow-y: scroll;
|
|
||||||
|
|
||||||
&::-webkit-scrollbar {
|
|
||||||
width: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
&::-webkit-scrollbar-track {
|
|
||||||
background: var(--panels-background);
|
|
||||||
}
|
|
||||||
|
|
||||||
&::-webkit-scrollbar-thumb {
|
|
||||||
background: var(--panels-scroll);
|
|
||||||
border-radius: 4px;
|
|
||||||
width: 6px;
|
|
||||||
padding: 0px 2px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#download_tab_container {
|
|
||||||
#queue_buttons {
|
|
||||||
position: absolute;
|
|
||||||
top: 0;
|
|
||||||
right: 0;
|
|
||||||
opacity: 1;
|
|
||||||
visibility: visible;
|
|
||||||
transition: all 250ms ease-in-out;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#download_tab_drag_handler {
|
|
||||||
width: 15px;
|
|
||||||
height: 100%;
|
|
||||||
position: absolute;
|
|
||||||
background-color: hsl(0, 0%, 20%);
|
|
||||||
cursor: ew-resize;
|
|
||||||
}
|
|
||||||
|
@ -1,11 +0,0 @@
|
|||||||
.reload-button {
|
|
||||||
&.reload-button--inline {
|
|
||||||
display: inline-block;
|
|
||||||
}
|
|
||||||
|
|
||||||
&.spin {
|
|
||||||
i {
|
|
||||||
animation: spin 500ms infinite ease-out reverse;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,9 +0,0 @@
|
|||||||
#home_not_logged_text {
|
|
||||||
margin-bottom: 15px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.home_section {
|
|
||||||
border-top: 1px solid theme('colors.grayscale.500');
|
|
||||||
padding-top: 25px;
|
|
||||||
padding-bottom: 25px;
|
|
||||||
}
|
|
@ -1,22 +1,3 @@
|
|||||||
.main_tabcontent {
|
|
||||||
h1 {
|
|
||||||
margin-bottom: 12px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.tab {
|
|
||||||
margin: 16px 0px;
|
|
||||||
|
|
||||||
button {
|
|
||||||
background-color: var(--main-background);
|
|
||||||
color: var(--foreground);
|
|
||||||
|
|
||||||
&.active {
|
|
||||||
background-color: var(--primary-color);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.release {
|
.release {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
width: 156px;
|
width: 156px;
|
||||||
@ -27,24 +8,3 @@
|
|||||||
margin-bottom: 10px;
|
margin-bottom: 10px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.section-tabs {
|
|
||||||
list-style-type: none;
|
|
||||||
display: flex;
|
|
||||||
margin: 16px 0 24px 0;
|
|
||||||
cursor: pointer;
|
|
||||||
|
|
||||||
&__tab {
|
|
||||||
flex: 1;
|
|
||||||
font-size: 1.2rem;
|
|
||||||
padding: 0.8em;
|
|
||||||
border-top: 3px solid var(--foreground);
|
|
||||||
text-align: center;
|
|
||||||
text-transform: capitalize;
|
|
||||||
|
|
||||||
&.active {
|
|
||||||
color: var(--primary-color);
|
|
||||||
border-top: 3px solid var(--primary-color);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
@ -37,7 +37,8 @@ module.exports = {
|
|||||||
900: 'hsl(0, 0%, 90%)',
|
900: 'hsl(0, 0%, 90%)',
|
||||||
930: 'hsl(0, 0%, 93%)' // Remove maybe
|
930: 'hsl(0, 0%, 93%)' // Remove maybe
|
||||||
},
|
},
|
||||||
primary: 'var(--primary-color)',
|
// primary: 'var(--primary-color)',
|
||||||
|
primary: 'hsl(210, 100%, 52%)',
|
||||||
background: {
|
background: {
|
||||||
main: 'var(--main-background)',
|
main: 'var(--main-background)',
|
||||||
secondary: 'var(--secondary-background)'
|
secondary: 'var(--secondary-background)'
|
||||||
|
Loading…
Reference in New Issue
Block a user