Files
spotizerr/static/css/queue/queue.css
2025-02-10 10:43:51 -06:00

366 lines
7.1 KiB
CSS

/* ---------------------- */
/* DOWNLOAD QUEUE STYLES */
/* ---------------------- */
/* Container for the download queue sidebar */
#downloadQueue {
position: fixed;
top: 0;
right: -350px; /* Hidden offscreen by default */
width: 350px;
height: 100vh;
background: #181818;
padding: 20px;
transition: right 0.3s cubic-bezier(0.4, 0, 0.2, 1);
z-index: 1001;
/* Remove overflow-y here to delegate scrolling to the queue items container */
box-shadow: -20px 0 30px rgba(0, 0, 0, 0.4);
/* Added for flex layout */
display: flex;
flex-direction: column;
}
/* When active, the sidebar slides into view */
#downloadQueue.active {
right: 0;
}
/* Header inside the queue sidebar */
.sidebar-header {
display: flex;
justify-content: space-between;
align-items: center;
padding-bottom: 15px;
border-bottom: 1px solid rgba(255, 255, 255, 0.1);
margin-bottom: 20px;
}
.sidebar-header h2 {
font-size: 1.25rem;
font-weight: 600;
color: #fff;
margin: 0;
}
.header-actions {
display: flex;
gap: 10px;
align-items: center;
}
/* Cancel all button styling */
#cancelAllBtn {
background: #ff5555;
border: none;
color: #fff;
padding: 8px 12px;
border-radius: 4px;
cursor: pointer;
transition: background 0.3s ease;
font-size: 14px;
}
#cancelAllBtn:hover {
background: #ff7777;
}
/* Close button for the queue sidebar */
.close-btn {
background: #2a2a2a;
border: none;
border-radius: 50%;
width: 32px;
height: 32px;
display: flex;
align-items: center;
justify-content: center;
color: #ffffff;
font-size: 20px;
cursor: pointer;
transition: background-color 0.3s ease;
}
.close-btn:hover {
background-color: #333;
}
/* Container for all queue items */
#queueItems {
/* Allow the container to fill all available space in the sidebar */
flex: 1;
overflow-y: auto;
}
/* Each download queue item */
.queue-item {
background: #2a2a2a;
padding: 15px;
border-radius: 8px;
margin-bottom: 15px;
transition: background-color 0.3s ease, transform 0.2s ease;
display: flex;
flex-direction: column;
gap: 6px;
}
.queue-item:hover {
background-color: #333;
transform: translateY(-2px);
}
/* Title text in a queue item */
.queue-item .title {
font-weight: 500;
margin-bottom: 4px;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
color: #fff;
}
/* Type indicator (e.g. track, album) */
.queue-item .type {
font-size: 12px;
color: #1DB954;
text-transform: uppercase;
letter-spacing: 0.5px;
}
/* Log text for status messages */
.queue-item .log {
font-size: 13px;
color: #b3b3b3;
line-height: 1.4;
font-family: 'SF Mono', Menlo, monospace;
}
/* Optional state indicators for each queue item */
.queue-item--complete {
border-left: 4px solid #1DB954;
}
.queue-item--error {
border-left: 4px solid #ff5555;
}
.queue-item--processing {
border-left: 4px solid #4a90e2;
}
/* Progress bar for downloads */
.status-bar {
height: 3px;
background: #1DB954;
width: 0;
transition: width 0.3s ease;
margin-top: 8px;
}
/* Progress percentage text */
.progress-percent {
text-align: right;
font-weight: bold;
color: #1DB954;
}
/* Optional status message colors (if using state classes) */
.log--success {
color: #1DB954 !important;
}
.log--error {
color: #ff5555 !important;
}
.log--warning {
color: #ffaa00 !important;
}
.log--info {
color: #4a90e2 !important;
}
/* Loader animations for real-time progress */
@keyframes progress-pulse {
0% { opacity: 0.5; }
50% { opacity: 1; }
100% { opacity: 0.5; }
}
.progress-indicator {
display: inline-block;
margin-left: 8px;
animation: progress-pulse 1.5s infinite;
}
/* Loading spinner style */
.loading-spinner {
display: inline-block;
width: 16px;
height: 16px;
border: 3px solid rgba(255, 255, 255, 0.3);
border-radius: 50%;
border-top-color: #1DB954;
animation: spin 1s ease-in-out infinite;
}
@keyframes spin {
to { transform: rotate(360deg); }
}
/* Cancel button inside each queue item */
.cancel-btn {
background: none;
border: none;
cursor: pointer;
padding: 5px;
outline: none;
margin-top: 10px;
/* Optionally constrain the overall size */
max-width: 24px;
max-height: 24px;
}
.cancel-btn img {
width: 16px;
height: 16px;
filter: invert(1);
transition: transform 0.3s ease;
}
.cancel-btn:hover img {
transform: scale(1.1);
}
.cancel-btn:active img {
transform: scale(0.9);
}
/* ------------------------------- */
/* FOOTER & "SHOW MORE" BUTTON */
/* ------------------------------- */
#queueFooter {
text-align: center;
padding-top: 10px;
}
#queueFooter button {
background: #1DB954;
border: none;
padding: 8px 16px;
border-radius: 4px;
color: #fff;
cursor: pointer;
transition: background 0.3s ease;
font-size: 14px;
}
#queueFooter button:hover {
background: #17a448;
}
/* -------------------------- */
/* ERROR BUTTONS STYLES */
/* -------------------------- */
/* Container for error action buttons */
.error-buttons {
display: flex;
gap: 10px;
margin-top: 8px;
}
/* Base styles for error buttons */
.error-buttons button {
background: #2a2a2a;
border: none;
padding: 8px 12px;
border-radius: 4px;
color: #fff;
cursor: pointer;
transition: background 0.3s ease, transform 0.2s ease;
font-size: 14px;
}
/* Hover state for all error buttons */
.error-buttons button:hover {
background: #333;
}
/* Specific styles for the Close (X) error button */
.close-error-btn {
background: #ff5555;
width: 32px;
height: 32px;
display: flex;
align-items: center;
justify-content: center;
border-radius: 50%;
font-size: 20px;
padding: 0;
}
.close-error-btn:hover {
background: #ff7777;
}
/* Specific styles for the Retry button */
.retry-btn {
background: #1DB954;
padding: 8px 16px;
border-radius: 4px;
font-weight: bold;
}
.retry-btn:hover {
background: #17a448;
}
/* ------------------------------- */
/* MOBILE RESPONSIVE ADJUSTMENTS */
/* ------------------------------- */
@media (max-width: 600px) {
/* Make the sidebar full width on mobile */
#downloadQueue {
width: 100%;
right: -100%; /* Off-screen fully */
padding: 15px;
}
/* When active, the sidebar slides into view from full width */
#downloadQueue.active {
right: 0;
}
/* Adjust header and title for smaller screens */
.sidebar-header {
flex-direction: column;
align-items: flex-start;
}
.sidebar-header h2 {
font-size: 1.1rem;
}
/* Reduce the size of the close buttons */
.close-btn {
width: 28px;
height: 28px;
font-size: 18px;
}
/* Adjust queue items padding */
.queue-item {
padding: 12px;
margin-bottom: 12px;
}
/* Ensure text remains legible on smaller screens */
.queue-item .log,
.queue-item .type {
font-size: 12px;
}
}