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" %}
+