diff --git a/data/db.sqlite3 b/data/db.sqlite3 index b0e36e9..4dbd720 100644 Binary files a/data/db.sqlite3 and b/data/db.sqlite3 differ diff --git a/links/templates/links/collection_slideshow.html b/links/templates/links/collection_slideshow.html index 2576cc3..31b1c8f 100644 --- a/links/templates/links/collection_slideshow.html +++ b/links/templates/links/collection_slideshow.html @@ -24,14 +24,35 @@ width: 100%; height: 100%; opacity: 0; - transition: opacity 0.5s ease-in-out; + transition: all 0.5s ease-in-out; display: flex; align-items: center; justify-content: center; + transform: scale(1) rotate(0deg); + filter: blur(0px); } .slide.active { opacity: 1; } + /* Transition Effects */ + .slide.fade-out { + opacity: 0; + } + .slide.slide-out { + transform: translateX(-100%); + } + .slide.scale-out { + transform: scale(0.8); + opacity: 0; + } + .slide.rotate-out { + transform: rotate(-15deg); + opacity: 0; + } + .slide.blur-out { + filter: blur(10px); + opacity: 0; + } .slide img { max-width: 100%; max-height: 100%; @@ -78,6 +99,35 @@ .control-button:hover { background: rgba(255,255,255,0.2); } + .control-group { + display: flex; + align-items: center; + gap: 0.5rem; + background: rgba(255,255,255,0.1); + padding: 0.5rem; + border-radius: 0.375rem; + } + .slider { + -webkit-appearance: none; + width: 100px; + height: 4px; + border-radius: 2px; + background: rgba(255,255,255,0.2); + outline: none; + } + .slider::-webkit-slider-thumb { + -webkit-appearance: none; + width: 16px; + height: 16px; + border-radius: 50%; + background: #3b82f6; + cursor: pointer; + } + #intervalValue { + color: white; + min-width: 30px; + font-size: 0.9rem; + } .progress-circle { position: fixed; top: 1rem; @@ -117,6 +167,51 @@ max-width: 400px; box-shadow: 0 4px 6px rgba(0, 0, 0, 0.3); } + .settings-panel { + position: fixed; + bottom: 5rem; + left: 50%; + transform: translateX(-50%); + background-color: rgba(0, 0, 0, 0.9); + padding: 1rem; + border-radius: 0.5rem; + display: none; + width: 90%; + max-width: 400px; + box-shadow: 0 4px 6px rgba(0, 0, 0, 0.3); + } + .settings-content { + max-height: 60vh; + overflow-y: auto; + -webkit-overflow-scrolling: touch; + } + .settings-group { + margin: 1rem 0; + padding: 0.75rem; + background: rgba(255, 255, 255, 0.05); + border-radius: 0.375rem; + } + .settings-group h4 { + color: #fff; + margin: 0 0 0.5rem 0; + font-size: 0.9rem; + font-weight: 500; + opacity: 0.8; + } + .settings-item { + display: flex; + align-items: center; + gap: 1rem; + margin: 0.5rem 0; + } + .settings-item .slider { + flex: 1; + } + .settings-item span { + color: white; + min-width: 40px; + font-size: 0.9rem; + } .playlist-content { max-height: 60vh; overflow-y: auto; @@ -176,6 +271,34 @@ font-weight: 500; text-align: center; } + .transition-options { + display: grid; + grid-template-columns: repeat(auto-fill, minmax(120px, 1fr)); + gap: 0.5rem; + } + .transition-option { + display: flex; + align-items: center; + gap: 0.5rem; + padding: 0.5rem; + background: rgba(255, 255, 255, 0.05); + border-radius: 0.375rem; + cursor: pointer; + transition: background-color 0.2s; + } + .transition-option:hover { + background: rgba(255, 255, 255, 0.1); + } + .transition-option input[type="radio"] { + width: 16px; + height: 16px; + margin: 0; + } + .transition-option label { + color: white; + font-size: 0.9rem; + cursor: pointer; + } @media (max-width: 768px) { .controls { @@ -269,6 +392,13 @@ {% trans "Playlist" %} +