diff --git a/approot/search.xml b/approot/search.xml
index afa104fd..977a3a56 100644
--- a/approot/search.xml
+++ b/approot/search.xml
@@ -3,9 +3,7 @@
-
+ ${mode class="nav nav-pills mb-3"}
${stack}
diff --git a/docroot/css/lms.css b/docroot/css/lms.css
index a78f3db3..d42e3544 100644
--- a/docroot/css/lms.css
+++ b/docroot/css/lms.css
@@ -1,463 +1,7 @@
-/* Stylized for flaty/darkly themes */
-a, a:link, a:active, a:visited {
- text-decoration: none;
- cursor: pointer;
-}
-
body {
padding-bottom: 78px;
}
-.Lms-admin-users-add-btn {
- margin-top: 8px;
- margin-bottom: 8px;
-}
-
-.Lms-artistname {
- color: var(--body-color);
-}
-
-a.Lms-artistname:hover, a.Lms-artistname:focus {
- color: var(--hover-color);
-}
-
-.Lms-btn {
- cursor: pointer;
-}
-
-.Lms-btn:hover {
- color: var(--hover-color);
- transition: color .20s cubic-bezier(.43,-.1,.16,1.1);
-}
-
-.Lms-cluster {
- display: inline-block;
- cursor: pointer;
- line-height: 1.3;
- margin-right: 4px;
- margin-bottom: 4px;
-}
-
-.Lms-cluster:hover {
- filter: brightness(130%);
- transition: filter .20s cubic-bezier(.43,-.1,.16,1.1);
-}
-
-.Lms-clusters-control {
- margin-top: 4px;
-}
-
-.Lms-cover {
- max-height: 100%;
- max-width: 100%;
- width: auto;
- height: auto;
- position: absolute;
- top: 0;
- bottom: 0;
- left: 0;
- right: 0;
- margin: auto;
- border-radius: 3px;
- box-shadow: 0 2px 3px rgba(0, 0, 0, 0.4);
- opacity: 0;
- -moz-transition: opacity 1s;
- -webkit-transition: opacity 1s;
- -o-transition: opacity 1s;
- transition: opacity 1s;
-}
-
-.Lms-cover:hover {
- filter: brightness(130%);
- transition: filter .20s cubic-bezier(.43,-.1,.16,1.1);
-}
-
-.Lms-cover-container {
- position: relative;
-}
-
-.Lms-cover-large {
- border-radius: 3px;
- box-shadow: 0 2px 3px rgba(0, 0, 0, 0.4);
-}
-
-.Lms-cover-loaded {
- opacity: 1;
-}
-
-.Lms-entry-playing {
- font-weight: bold;
- border-radius: 3px;
- background-color: var(--playing-background-color);
-}
-
-.Lms-explore-btn {
- font-size: 24px;
-}
-
-.Lms-explore-clusters {
- display: inline-block;
-}
-
-.Lms-explore-contents {
- margin-bottom: 24px;
-}
-
-.Lms-explore-entry-list {
- padding-top: 4px;
- padding-bottom: 4px;
- min-height: 76px;
-}
-
-.Lms-explore-entry-list-text-container {
- margin-left: -15px;
- text-align: left;
- white-space: nowrap;
- overflow: hidden;
- text-overflow: ellipsis;
-}
-
-.Lms-explore-entry-list-text-container h5 {
- white-space: nowrap;
- overflow: hidden;
- text-overflow: ellipsis;
-}
-
-.Lms-explore-entry-grid {
- margin-bottom: 25px;
-}
-
-.Lms-explore-entry-grid-text-container {
- height: 36px;
-}
-
-.Lms-explore-entry-grid-text-container h5, h6 {
- margin-top: 6px;
- margin-bottom: 6px;
- text-align: left;
- white-space: nowrap;
- overflow: hidden;
- text-overflow: ellipsis;
-}
-
-.Lms-explore-entry-separator :nth-child(2) {
- margin-left: 8px;
-}
-
-.Lms-explore-release {
- margin-bottom: 25px;
-}
-
-.Lms-explore-release-cover {
- max-width: 100%;
-}
-
-.Lms-explore-release-entry-tracknumber {
- text-align: right;
- white-space: nowrap;
-}
-
-.Lms-explore-release-entry-name {
- margin-top: 4px;
- margin-bottom: 4px;
- font-weight: inherit;
-}
-
-.Lms-explore-release-entry {
- min-height: 36px;
-}
-
-.Lms-explore-release-entry:hover .Lms-explore-release-entry-controls {
- display: block;
-}
-
-.Lms-explore-release-entry:hover .Lms-explore-release-entry-track-duration {
- display: none;
-}
-
-.Lms-explore-release-entry-controls {
- text-align: right;
- display: none;
-}
-
-.Lms-explore-release-entry-track-duration {
- text-align: right;
- white-space: nowrap;
- display: block;
-}
-
-.Lms-explore-releaselink {
- margin: 0;
- padding-top: 4px;
- padding-bottom: 4px;
-}
-
-.Lms-explore-artists-entry-small {
- min-height: 28px;
- margin: 0;
-}
-
-.Lms-explore-artists-input {
- margin-bottom: 10px;
-}
-
-.Lms-explore-artist-tracks-container {
- margin-bottom: 15px;
-}
-
-.Lms-explore-mode-container {
- margin-bottom: 8px;
-}
-
-.Lms-explore-tracks-entry:hover .Lms-explore-tracks-entry-controls {
- display: block;
-}
-
-.Lms-explore-tracks-entry:hover .Lms-explore-tracks-entry-duration {
- display: none;
-}
-
-.Lms-explore-tracks-entry-controls {
- text-align: right;
- display: none;
-}
-
-.Lms-explore-tracks-entry-duration {
- text-align: right;
- white-space: nowrap;
- display: block;
-}
-
-.Lms-header {
- padding-bottom: 9px;
- margin-top: 20px;
- margin-bottom: 20px;
-}
-
-.Lms-loading-indicator {
- margin-top: 8px;
- margin-bottom: 8px;
-}
-
-.Lms-navbar-search {
- max-width: 175px;
- padding-top: 7.5px;
- padding-bottom: 7.5px;
- margin-right: 8px;
-}
-
-.Lms-playqueue-btn {
- font-size: 24px;
-}
-
-.Lms-playqueue-entry:hover .Lms-playqueue-entry-controls {
- display: block;
-}
-
-.Lms-playqueue-entry:hover .Lms-playqueue-entry-duration {
- display: none;
-}
-
-.text-success .Lms-playqueue-btn {
- filter: brightness(130%);
- filter: drop-shadow(0 0 0.65rem var(--hover-color));
- color: var(--hover-color);
-}
-
-.Lms-playqueue-entry-controls {
- text-align: right;
- display: none;
-}
-
-.Lms-playqueue-entry-duration {
- text-align: right;
- white-space: nowrap;
- display: block;
-}
-
-.Lms-playqueue-entry-name {
- margin-top: 4px;
- margin-bottom: 4px;
-}
-
-.Lms-playqueue-selected {
- font-weight: bold;
- border-radius: 3px;
- background-color: var(--playing-background-color);
-}
-
-.Lms-playqueue-selected h4 {
- font-weight: inherit;
-}
-
-.Lms-playhistory-entry {
- min-height: 32px;
- margin-bottom: 0;
-}
-
-.Lms-playhistory-entry-name {
- margin-top: 4px;
- margin-bottom: 4px;
-}
-
.Lms-player {
- z-index: 3;
- position: fixed;
- bottom: 0;
- width: 100%;
height: 70px;
- padding: 0;
- margin: 0;
- background-color: var(--player-background-color);
}
-
-.Lms-player-btn-volume {
- font-size: 18px !important;
- margin: auto;
-}
-
-.Lms-player-btn-controls {
- font-size: 40px !important;
-}
-
-.Lms-player-controls {
- text-align: center;
- white-space: nowrap;
-}
-
-.Lms-player-duration {
- line-height: 40px;
- text-align: right;
- white-space: nowrap;
-}
-
-.Lms-player-progress {
- background-color: var(--slider-background-color);
-}
-
-.Lms-player-progress .progress-bar {
- transition: none;
-}
-
-.Lms-player-seek {
- cursor: pointer;
- z-index: 1;
- touch-action: manipulation;
- -webkit-appearance: none;
- -moz-appearance: none;
- background: transparent;
- border-style: solid;
- border-width: thin;
-}
-
-.Lms-player-seek::-webkit-slider-thumb {
- -webkit-appearance: none;
- -moz-appearance: none;
- height: 0;
- width: 0;
-}
-
-.Lms-player-seek-container {
- margin-top: 8px;
- margin-bottom: 8px;
- position: relative;
- width: 100%;
- height: 8px;
-}
-
-.Lms-player-seek-common {
- position: absolute;
- width:100%;
- top: 0;
- left: 0;
- height: 8px;
- border-radius: 3px;
-}
-
-.Lms-player-seek::-moz-range-thumb {
- -webkit-appearance: none;
- -moz-appearance: none;
- height: 0;
- width: 0;
-}
-
-.Lms-player-text-center {
- text-align: center;
- white-space: nowrap;
- overflow: hidden;
- text-overflow: ellipsis;
-}
-
-.Lms-player-text {
- margin-left: 8px;
- margin-right: 8px;
-}
-
-.Lms-player-volume {
- width: 125px;
- height: 40px;
- display: flex;
-}
-
-.Lms-player-volume-slider {
- -webkit-appearance: none;
- appearance: none;
- width: 100%;
- height: 8px;
- outline: none;
- cursor: pointer;
- border-radius: 3px;
- border-style: solid;
- border-width: thin;
- background-color: var(--slider-background-color);
-}
-
-.Lms-player-volume-slider::-webkit-slider-thumb {
- -webkit-appearance: none;
- background-color: var(--body-color);
- appearance: none;
- width: 14px;
- height: 14px;
- border-radius: 7px;
-}
-
-.Lms-player-volume-slider::-webkit-slider-thumb:hover {
- background-color: var(--hover-color);
-}
-
-.Lms-player-volume-slider::-moz-range-thumb {
- background-color: var(--body-color);
- width: 14px;
- height: 14px;
- border-radius: 7px;
-}
-
-.Lms-player-volume-slider::-moz-range-thumb:hover {
- background-color: var(--hover-color);
-}
-
-.Lms-player-volume-slider-container {
- display: inline-block;
- width: 85px;
- margin: auto;
-}
-
-.Lms-releasename {
- color: var(--body-color);
-}
-
-a.Lms-releasename:hover, a.Lms-releasename:focus {
- color: var(--hover-color);
-}
-
-.Lms-responsive-square {
- width: 100%;
-}
-
-.Lms-responsive-square:after {
- content: "";
- display: block;
- padding-bottom: 100%;
-}
-
-
diff --git a/src/lms/ui/explore/ArtistView.cpp b/src/lms/ui/explore/ArtistView.cpp
index 2c14fead..2234a988 100644
--- a/src/lms/ui/explore/ArtistView.cpp
+++ b/src/lms/ui/explore/ArtistView.cpp
@@ -206,7 +206,7 @@ Artist::refreshNonReleaseTracks(const ObjectPtr& artist)
return;
setCondition("if-has-non-release-track", true);
- _trackContainer = bindNew("tracks", Wt::WString::tr("Lms.Explore.Tracks.template.container"));
+ _trackContainer = bindNew("tracks");
_trackContainer->onRequestElements.connect(this, [this]
{
addSomeNonReleaseTracks();
diff --git a/src/lms/ui/explore/SearchView.cpp b/src/lms/ui/explore/SearchView.cpp
index ac573799..056ae799 100644
--- a/src/lms/ui/explore/SearchView.cpp
+++ b/src/lms/ui/explore/SearchView.cpp
@@ -69,7 +69,7 @@ namespace UserInterface
// same order as Mode!
addItem(Wt::WString::tr("Lms.Explore.releases"), Mode::Release, Wt::WString::tr("Lms.Explore.Releases.template.container"), [this]{ addSomeReleases(); });
addItem(Wt::WString::tr("Lms.Explore.artists"), Mode::Artist, Wt::WString::tr("Lms.infinite-scrolling-container"), [this]{ addSomeArtists(); });
- addItem(Wt::WString::tr("Lms.Explore.tracks"), Mode::Track, Wt::WString::tr("Lms.Explore.Tracks.template.container"), [this]{ addSomeTracks(); });
+ addItem(Wt::WString::tr("Lms.Explore.tracks"), Mode::Track, Wt::WString::tr("Lms.infinite-scrolling-container"), [this]{ addSomeTracks(); });
_filters->updated().connect([=]
{