Player Client and Visual Enhancements
- Redesigned audio player bar to be mobile-friendly - Added unloading for track switching (needs to be fixed) - Added IsLoading status so loading spinner isn't hanging around when it shouldn't be - Normalized styles with scoped files (will further reduce) - Layout Cleanup - EF fixes (migrations now function for deployment) - deploy script updates (new dedicated host)
This commit is contained in:
@@ -0,0 +1,198 @@
|
||||
/* AudioPlayerBar Component - Scoped Styles */
|
||||
|
||||
/* Outer container - full width, fixed to bottom */
|
||||
.deepdrft-player-outer-container {
|
||||
position: fixed;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
width: 100%;
|
||||
z-index: 1200;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
/* Inner container wrapper */
|
||||
.deepdrft-player-inner-container {
|
||||
padding: 1rem;
|
||||
padding-bottom: 1.5rem;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
/* Player bar with rounded corners and semi-opaque background */
|
||||
.deepdrft-audio-player-bar {
|
||||
position: relative;
|
||||
background: var(--deepdrft-theme-background-gray);
|
||||
backdrop-filter: blur(15px);
|
||||
-webkit-backdrop-filter: blur(15px);
|
||||
border-radius: 1rem;
|
||||
border: 1px solid var(--deepdrft-theme-primary);
|
||||
box-shadow: 0 4px 20px rgba(0, 0, 0, 0.4),
|
||||
0 2px 10px var(--deepdrft-theme-secondary);
|
||||
transition: all 0.3s ease;
|
||||
color: #ffffff;
|
||||
overflow: hidden;
|
||||
margin-bottom: 1rem;
|
||||
}
|
||||
|
||||
/* Spacer div to maintain layout spacing */
|
||||
.deepdrft-player-spacer {
|
||||
height: 140px;
|
||||
width: 100%;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
/* Minimized floating dock */
|
||||
.deepdrft-minimized-player-dock {
|
||||
position: fixed;
|
||||
bottom: 60px;
|
||||
right: 60px;
|
||||
z-index: 1300;
|
||||
width: 60px;
|
||||
height: 60px;
|
||||
border-radius: 50%;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
background: linear-gradient(135deg,
|
||||
var(--deepdrft-theme-primary) 0%,
|
||||
var(--deepdrft-theme-secondary) 50%,
|
||||
var(--deepdrft-theme-tertiary) 100%
|
||||
);
|
||||
backdrop-filter: blur(15px);
|
||||
border: 2px solid var(--deepdrft-theme-secondary);
|
||||
box-shadow: 0 4px 20px var(--deepdrft-theme-primary),
|
||||
0 2px 10px rgba(0, 0, 0, 0.3);
|
||||
transition: all 0.3s ease;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.deepdrft-minimized-player-dock:hover {
|
||||
transform: scale(1.1);
|
||||
box-shadow: 0 6px 25px rgba(var(--mud-palette-primary-rgb), 0.8),
|
||||
0 3px 15px rgba(0, 0, 0, 0.4);
|
||||
}
|
||||
|
||||
.deepdrft-minimized-player-button {
|
||||
border-radius: 50%;
|
||||
background: transparent !important;
|
||||
color: white;
|
||||
transition: all 0.3s ease;
|
||||
box-shadow: none !important;
|
||||
border: none !important;
|
||||
width: 48px !important;
|
||||
height: 48px !important;
|
||||
}
|
||||
|
||||
/* Layout containers */
|
||||
.deepdrft-audio-player-content {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 0.75rem;
|
||||
padding: 0.75rem 1.25rem;
|
||||
}
|
||||
|
||||
.deepdrft-audio-controls-section {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 0.25rem;
|
||||
min-width: 200px;
|
||||
}
|
||||
|
||||
.deepdrft-audio-buttons-row {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 0.5rem;
|
||||
}
|
||||
|
||||
.deepdrft-audio-info-row {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 0.75rem;
|
||||
margin-top: 0.25rem;
|
||||
justify-items: center;
|
||||
}
|
||||
|
||||
.deepdrft-audio-volume-section {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 0.25rem;
|
||||
width: 140px;
|
||||
}
|
||||
|
||||
.deepdrft-audio-minimize-section {
|
||||
position: absolute;
|
||||
top: 0.5rem;
|
||||
right: 0.5rem;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
/* Control elements */
|
||||
.deepdrft-audio-seek-slider {
|
||||
flex: 1;
|
||||
margin-right: 0.5rem;
|
||||
}
|
||||
|
||||
.deepdrft-audio-volume-slider {
|
||||
width: 100px;
|
||||
}
|
||||
|
||||
.deepdrft-audio-time {
|
||||
min-width: 120px;
|
||||
}
|
||||
|
||||
.deepdrft-audio-volume-icon {
|
||||
margin-right: 4px;
|
||||
}
|
||||
|
||||
/* Mobile responsiveness */
|
||||
@media (max-width: 768px) {
|
||||
.deepdrft-minimized-player-dock {
|
||||
bottom: 15px;
|
||||
right: 15px;
|
||||
width: 56px;
|
||||
height: 56px;
|
||||
}
|
||||
|
||||
.deepdrft-minimized-player-button {
|
||||
width: 44px !important;
|
||||
height: 44px !important;
|
||||
}
|
||||
|
||||
.deepdrft-player-inner-container {
|
||||
padding: 0.75rem;
|
||||
padding-bottom: 1.25rem;
|
||||
}
|
||||
|
||||
.deepdrft-audio-player-bar {
|
||||
border-radius: 1rem;
|
||||
margin-bottom: 1.25rem;
|
||||
}
|
||||
|
||||
.deepdrft-audio-player-content {
|
||||
flex-direction: column;
|
||||
gap: 0.5rem;
|
||||
padding: 0.75rem 1rem;
|
||||
}
|
||||
|
||||
.deepdrft-audio-controls-section {
|
||||
align-items: center;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.deepdrft-audio-seek-slider {
|
||||
margin-right: 0;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.deepdrft-audio-volume-section {
|
||||
width: 100%;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.deepdrft-player-spacer {
|
||||
height: 160px;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user