diff --git a/web-src/src/components/ControlSwitch.vue b/web-src/src/components/ControlSwitch.vue
new file mode 100644
index 00000000..fb646eed
--- /dev/null
+++ b/web-src/src/components/ControlSwitch.vue
@@ -0,0 +1,70 @@
+
+
+
+
+
+
+
diff --git a/web-src/src/components/ModalDialogAlbum.vue b/web-src/src/components/ModalDialogAlbum.vue
index 1e4ae3a4..98f3e6c0 100644
--- a/web-src/src/components/ModalDialogAlbum.vue
+++ b/web-src/src/components/ModalDialogAlbum.vue
@@ -9,7 +9,7 @@
:url="item.artwork_url"
:artist="item.artist"
:album="item.name"
- class="fd-has-shadow fd-cover fd-cover-normal-image mb-5"
+ class="fd-has-shadow fd-cover fd-cover-normal-image"
/>
@@ -184,5 +184,3 @@ export default {
}
}
-
-
diff --git a/web-src/src/components/ModalDialogPlaylist.vue b/web-src/src/components/ModalDialogPlaylist.vue
index b6e3d8fb..cef0c50a 100644
--- a/web-src/src/components/ModalDialogPlaylist.vue
+++ b/web-src/src/components/ModalDialogPlaylist.vue
@@ -86,5 +86,3 @@ export default {
}
}
-
-
diff --git a/web-src/src/components/ModalDialogTrack.vue b/web-src/src/components/ModalDialogTrack.vue
index b8f7c026..0090ebe8 100644
--- a/web-src/src/components/ModalDialogTrack.vue
+++ b/web-src/src/components/ModalDialogTrack.vue
@@ -87,13 +87,12 @@
-
-
-
+
@@ -296,5 +295,3 @@ export default {
}
}
-
-
diff --git a/web-src/src/components/ModalDialogUpdate.vue b/web-src/src/components/ModalDialogUpdate.vue
index 1d6ea7d2..51cfc3e6 100644
--- a/web-src/src/components/ModalDialogUpdate.vue
+++ b/web-src/src/components/ModalDialogUpdate.vue
@@ -2,18 +2,18 @@
-
+
@@ -48,6 +46,7 @@
-
-
diff --git a/web-src/src/components/SettingsCheckbox.vue b/web-src/src/components/SettingsCheckbox.vue
index 6211e7b6..1b885a6b 100644
--- a/web-src/src/components/SettingsCheckbox.vue
+++ b/web-src/src/components/SettingsCheckbox.vue
@@ -1,15 +1,14 @@
-
-
+ @update:model-value="update_setting"
+ >
+
+
+
+
-
-
diff --git a/web-src/src/mystyles.scss b/web-src/src/mystyles.scss
index 5e665cd1..10820cd0 100644
--- a/web-src/src/mystyles.scss
+++ b/web-src/src/mystyles.scss
@@ -1,176 +1,7 @@
@charset "utf-8";
-@import 'bulma/bulma.sass';
-@import 'bulma-switch';
-
-@media (prefers-color-scheme: dark) {
- body,
- html,
- .content table th,
- td,
- .fd-tabs-section {
- background-color: $black-ter !important;
- color: $grey-light;
- }
- .tabs ul {
- border-bottom-color: $grey-dark;
- }
- .tabs a:hover {
- border-bottom-color: $grey-lighter;
- color: $grey-lighter !important;
- }
- a:hover,
- a.has-text-dark:hover,
- a.has-text-dark:focus {
- color: $grey-lighter !important;
- }
- .media + .media {
- border-top-color: $grey-dark !important;
- }
- .tabs a {
- border-bottom-color: $grey-dark;
- }
- .tabs a,
- .hero.is-light .title,
- .title,
- .subtitle,
- .navbar.is-light .navbar-brand > .navbar-item,
- .navbar-item,
- .navbar.is-white .navbar-brand a.navbar-item,
- .navbar.is-dark .navbar-brand .navbar-item,
- .navbar.is-light .navbar-burger {
- color: $grey-light;
- }
- .navbar-item.has-dropdown-up .navbar-dropdown {
- border-bottom-color: $grey-dark;
- }
- .navbar-dropdown {
- background-color: $grey-darker;
- border-top-color: $grey-dark;
- }
- a.tag:hover,
- a.tag.is-delete:hover,
- a.dropdown-item:hover,
- a.dropdown-item:focus,
- a.navbar-item:hover,
- a.navbar-item:focus,
- a.navbar-item:active,
- .button:hover,
- .button.is-white:focus,
- .button.is-white:hover,
- .button.is-dark:hover,
- .button.is-light:hover,
- hr,
- .navbar-burger:hover,
- .navbar.is-white .navbar-brand > a.navbar-item:hover,
- .navbar.is-light .navbar-brand > a.navbar-item:focus,
- .navbar.is-light .navbar-brand > a.navbar-item:hover,
- .navbar.is-dark .navbar-brand > a.navbar-item:focus,
- .navbar.is-dark .navbar-brand > a.navbar-item:hover,
- .navbar-dropdown a.navbar-item:hover,
- .navbar-dropdown a.navbar-item:focus,
- .modal-content .input,
- .modal-content select,
- .tabs.is-toggle a:hover {
- background-color: $grey-dark;
- color: $grey-lighter;
- }
- .card-footer .has-text-dark,
- .media .has-text-dark {
- color: $grey-light !important;
- }
- .navbar-menu,
- .navbar-brand,
- .notification,
- .card {
- background-color: $grey-darker;
- color: $grey-light;
- }
- a.tag,
- .button,
- .button:active,
- .button:focus,
- .dropdown-content,
- .dropdown-item,
- .input,
- .input .switch {
- background-color: $grey-darker;
- border-width: 0;
- color: $grey-lighter;
- }
- .input::placeholder,
- .control.has-icons-left .icon {
- color: $grey;
- }
- .label,
- .tabs a:hover,
- .control.has-icons-left .input:focus ~ .icon {
- color: $grey-lighter;
- }
- .tabs.is-toggle a:hover,
- .navbar-item .buttons .button,
- .modal-content select,
- .modal-content select:hover {
- border-color: $grey-dark;
- border-width: 1px;
- }
- .tabs.is-toggle a {
- background-color: $grey-darker;
- border-color: $grey-darker;
- }
- .button.is-light,
- .button.is-dark,
- .button.is-white,
- .button[disabled],
- .button[disabled]:hover {
- background-color: $grey-darker;
- color: $grey-light;
- }
- .has-text-grey-light,
- a.has-text-grey-light:hover {
- color: $grey !important;
- }
- .table,
- code {
- background: transparent;
- }
- .card-footer {
- border-top-color: $grey-dark;
- }
- .card-footer-item:not(:last-child) {
- border-right-color: $grey-dark;
- }
- .hero.is-light.is-bold {
- background-image: linear-gradient(
- 141deg,
- $black-ter 0%,
- $grey-darker 71%,
- $grey-dark
- );
- }
-}
-
-/* Lyrics animation */
-@keyframes pop-color {
- 0% {
- color: $black;
- }
- 100% {
- color: $success;
- }
-}
-
-.media.with-progress h2:last-of-type {
- margin-bottom: 6px;
-}
-
-.media.with-progress {
- margin-top: 6px;
-}
-
-a.navbar-item {
- padding: 0 1rem;
-}
+@import 'bulma/bulma';
+@import 'bulma/sass/utilities/mixins';
.fd-is-not-allowed {
cursor: not-allowed;
@@ -180,13 +11,6 @@ a.navbar-item {
cursor: move;
}
-.fd-is-square .button {
- height: 27px;
- min-width: 27px;
- padding-left: 0.25rem;
- padding-right: 0.25rem;
-}
-
.fd-is-text-clipped {
white-space: nowrap;
overflow: hidden;
@@ -196,8 +20,7 @@ a.navbar-item {
.fd-tabs-section {
padding-bottom: 0;
padding-top: 0;
- background: $white;
- top: $navbar-height;
+ background: var(--bulma-body-background-color);
z-index: 20;
position: fixed;
width: 100%;
@@ -205,16 +28,12 @@ a.navbar-item {
.fd-has-shadow img {
box-shadow:
- 0 4px 8px 0 rgba(0, 0, 0, 0.2),
- 0 6px 20px 0 rgba(0, 0, 0, 0.19);
-}
-
-.fd-page-with-tabs {
- margin-top: $navbar-height !important;
+ 0 0.25rem 0.5rem 0 var(--bulma-background-active),
+ 0 0.375rem 1.25rem 0 var(--bulma-background-active);
}
.is-full-height {
- min-height: calc(100vh - calc(2 * $navbar-height));
+ min-height: calc(100vh - calc(2 * var(--bulma-navbar-height)));
}
.is-disabled {
@@ -233,23 +52,23 @@ a.navbar-item {
width: 4rem;
height: 4rem;
img {
- border-radius: $radius-small;
+ border-radius: var(--bulma-radius-small);
max-width: 4rem;
max-height: 4rem;
}
}
&-medium-image {
- @include from($tablet) {
+ @include tablet {
justify-content: right;
}
img {
- border-radius: $radius;
+ border-radius: var(--bulma-radius);
max-height: calc(150px - 1.5rem);
}
}
&-normal-image {
img {
- border-radius: $radius-large;
+ border-radius: var(--bulma-radius-large);
width: 100%;
}
}
@@ -262,7 +81,7 @@ a.navbar-item {
}
}
img {
- border-radius: $radius-large;
+ border-radius: var(--bulma-radius-large);
max-height: calc(100vh - 26rem);
}
&.is-masked {
@@ -271,14 +90,6 @@ a.navbar-item {
}
}
-.sortable-chosen .media-right {
- visibility: hidden;
-}
-.sortable-ghost h1,
-.sortable-ghost h2 {
- color: $danger;
-}
-
.media:first-of-type {
padding-top: 1rem;
}
@@ -299,35 +110,20 @@ a.navbar-item {
opacity: 1;
}
-/* Add a little bit of spacing between title and subtitle */
-.title:not(.is-spaced) + .subtitle + .subtitle {
- margin-top: -1.3rem !important;
-}
-
/* Only scroll content if modal contains a card component */
.modal-content .card-content {
max-height: calc(100vh - 200px);
overflow: auto;
}
-.fd-width-auto {
- min-width: auto;
-}
-
/* Show scrollbar for navbar menu in desktop mode if content exceeds the screen size */
@include desktop {
.navbar-dropdown {
- max-height: calc(100vh - calc(2 * $navbar-height) - 2rem);
+ max-height: calc(100vh - calc(2 * var(--bulma-navbar-height)) - 2rem);
overflow: auto;
}
}
-/* Limit the size of the bottom navbar menu to not be displayed behind the Safari browser menu on iOS */
-.fd-bottom-navbar .navbar-menu {
- max-height: calc(100vh - calc(2 * $navbar-height) - 1rem);
- overflow: scroll;
-}
-
.buttons {
@include mobile {
&.fd-is-centered-mobile {
@@ -342,12 +138,20 @@ a.navbar-item {
}
}
+.heading {
+ display: block;
+ font-size: 0.75rem;
+ letter-spacing: 1px;
+ margin-bottom: 0px !important;
+ text-transform: uppercase;
+}
+
.column {
&.fd-has-cover {
@include mobile {
margin: auto;
}
- @include from($tablet) {
+ @include tablet {
margin-right: 0;
}
}
@@ -364,6 +168,17 @@ a.navbar-item {
padding: 1.5rem !important;
}
+.dropdown-menu {
+ @include mobile {
+ width: 100vw;
+ }
+}
+
+.dropdown-content {
+ max-height: calc(100vh - calc(2 * var(--bulma-navbar-height)));
+ overflow: auto;
+}
+
/* Slider */
@mixin thumb {
-webkit-appearance: none;
@@ -371,43 +186,51 @@ a.navbar-item {
height: var(--th);
box-sizing: border-box;
border-radius: 50%;
- background: $light;
- border: 1px solid $grey-light;
+ background: var(--bulma-light);
+ border: 1px solid var(--bulma-grey-light);
@media (prefers-color-scheme: dark) {
- background: $grey-light;
- border: 1px solid $grey-dark;
+ background: var(--bulma-grey-light);
+ border: 1px solid var(--bulma-grey-dark);
}
}
@mixin thumb-inactive {
box-sizing: border-box;
- background-color: $light;
+ background-color: var(--bulma-light);
@media (prefers-color-scheme: dark) {
- background-color: $grey-dark;
- border: 1px solid $grey-darker;
+ background-color: var(--bulma-grey-dark);
+ border: 1px solid var(--bulma-grey-darker);
}
}
@mixin track {
height: calc(var(--sh));
border-radius: calc(var(--sh) / 2);
- background: linear-gradient(90deg, $dark var(--sx), $grey-light var(--sx));
+ background: linear-gradient(
+ 90deg,
+ var(--bulma-dark) var(--sx),
+ var(--bulma-grey-light) var(--sx)
+ );
@media (prefers-color-scheme: dark) {
background: linear-gradient(
90deg,
- $grey-light var(--sx),
- $grey-dark var(--sx)
+ var(--bulma-grey-light) var(--sx),
+ var(--bulma-grey-dark) var(--sx)
);
}
}
@mixin track-inactive {
- background: linear-gradient(90deg, $grey-light var(--sx), $light var(--sx));
+ background: linear-gradient(
+ 90deg,
+ var(--bulma-grey-light) var(--sx),
+ var(--bulma-light) var(--sx)
+ );
@media (prefers-color-scheme: dark) {
background: linear-gradient(
90deg,
- $grey-dark var(--sx),
- $black-ter var(--sx)
+ var(--bulma-grey-dark) var(--sx),
+ var(--bulma-black-ter) var(--sx)
);
}
}
diff --git a/web-src/src/pages/PageAlbums.vue b/web-src/src/pages/PageAlbums.vue
index d7378630..91926cfc 100644
--- a/web-src/src/pages/PageAlbums.vue
+++ b/web-src/src/pages/PageAlbums.vue
@@ -1,47 +1,33 @@
-
+
@@ -54,7 +40,6 @@
v-text="$t('page.albums.count', { count: albums.count })"
/>
-
@@ -65,6 +50,7 @@
-
-
diff --git a/web-src/src/pages/PageArtist.vue b/web-src/src/pages/PageArtist.vue
index e370abe8..da3607b9 100644
--- a/web-src/src/pages/PageArtist.vue
+++ b/web-src/src/pages/PageArtist.vue
@@ -4,27 +4,20 @@
@@ -73,6 +66,7 @@
-
-
diff --git a/web-src/src/pages/PageArtistTracks.vue b/web-src/src/pages/PageArtistTracks.vue
index 48fb5fb4..e4b900d3 100644
--- a/web-src/src/pages/PageArtistTracks.vue
+++ b/web-src/src/pages/PageArtistTracks.vue
@@ -5,27 +5,20 @@
@@ -74,6 +67,7 @@
-
-
diff --git a/web-src/src/pages/PageArtists.vue b/web-src/src/pages/PageArtists.vue
index a9151226..3486c792 100644
--- a/web-src/src/pages/PageArtists.vue
+++ b/web-src/src/pages/PageArtists.vue
@@ -1,47 +1,33 @@
-
+
@@ -54,7 +40,6 @@
v-text="$t('page.artists.count', { count: artists.count })"
/>
-
@@ -65,6 +50,7 @@
-
-
diff --git a/web-src/src/pages/PageAudiobooksArtist.vue b/web-src/src/pages/PageAudiobooksArtist.vue
index 728dfc34..3ce11697 100644
--- a/web-src/src/pages/PageAudiobooksArtist.vue
+++ b/web-src/src/pages/PageAudiobooksArtist.vue
@@ -87,5 +87,3 @@ export default {
}
}
-
-
diff --git a/web-src/src/pages/PageComposerAlbums.vue b/web-src/src/pages/PageComposerAlbums.vue
index 71fb5e91..d2308a0a 100644
--- a/web-src/src/pages/PageComposerAlbums.vue
+++ b/web-src/src/pages/PageComposerAlbums.vue
@@ -104,5 +104,3 @@ export default {
}
}
-
-
diff --git a/web-src/src/pages/PageComposerTracks.vue b/web-src/src/pages/PageComposerTracks.vue
index e7c84858..383e4d80 100644
--- a/web-src/src/pages/PageComposerTracks.vue
+++ b/web-src/src/pages/PageComposerTracks.vue
@@ -5,9 +5,9 @@
@@ -130,17 +130,9 @@ export default {
expression() {
return `composer is "${this.composer.name}" and media_kind is music`
},
- selected_grouping_id: {
- get() {
- return this.uiStore.composer_tracks_sort
- },
- set(value) {
- this.uiStore.composer_tracks_sort = value
- }
- },
tracks() {
const { options } = this.groupings.find(
- (grouping) => grouping.id === this.selected_grouping_id
+ (grouping) => grouping.id === this.uiStore.composer_tracks_sort
)
return this.tracks_list.group(options)
}
@@ -160,5 +152,3 @@ export default {
}
}
-
-
diff --git a/web-src/src/pages/PageGenreTracks.vue b/web-src/src/pages/PageGenreTracks.vue
index c127e17a..7e6d6584 100644
--- a/web-src/src/pages/PageGenreTracks.vue
+++ b/web-src/src/pages/PageGenreTracks.vue
@@ -5,9 +5,9 @@
@@ -126,17 +126,9 @@ export default {
expression() {
return `genre is "${this.genre.name}" and media_kind is ${this.media_kind}`
},
- selected_grouping_id: {
- get() {
- return this.uiStore.genre_tracks_sort
- },
- set(value) {
- this.uiStore.genre_tracks_sort = value
- }
- },
tracks() {
const { options } = this.groupings.find(
- (grouping) => grouping.id === this.selected_grouping_id
+ (grouping) => grouping.id === this.uiStore.genre_tracks_sort
)
return this.tracks_list.group(options)
}
@@ -157,5 +149,3 @@ export default {
}
}
-
-
diff --git a/web-src/src/pages/PageSettingsRemotesOutputs.vue b/web-src/src/pages/PageSettingsRemotesOutputs.vue
index 185752ee..f73ee260 100644
--- a/web-src/src/pages/PageSettingsRemotesOutputs.vue
+++ b/web-src/src/pages/PageSettingsRemotesOutputs.vue
@@ -1,5 +1,5 @@
-