76 lines
3.2 KiB
HTML
76 lines
3.2 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no">
|
|
<meta name="apple-mobile-web-app-capable" content="yes">
|
|
<meta name="apple-mobile-web-app-status-bar-style" content="black">
|
|
<meta name="mobile-web-app-capable" content="yes">
|
|
<meta name="theme-color" content="#1a1510">
|
|
<title>Frambe</title>
|
|
<link rel="icon" type="image/png" sizes="128x128" href="/img/icon.png">
|
|
<link rel="apple-touch-icon" href="/apple-touch-icon.png">
|
|
<link rel="stylesheet" href="/css/style.css">
|
|
</head>
|
|
<body>
|
|
<div id="setup-screen" class="screen">
|
|
<div class="setup-container">
|
|
<div class="setup-header">
|
|
<img src="/img/icon.png" alt="Frambe" class="setup-logo">
|
|
<h1>Frambe</h1>
|
|
<p class="subtitle" id="connection-status">Connecting to Immich…</p>
|
|
</div>
|
|
<div id="setup-content" class="setup-content">
|
|
<div class="section">
|
|
<h2>Select Photo Source</h2>
|
|
<div class="source-buttons">
|
|
<button id="btn-all-photos" class="source-btn" onclick="selectSource('random')"><span class="source-icon">🎲</span><span>Random Photos</span></button>
|
|
<button id="btn-favorites" class="source-btn" onclick="selectSource('favorites')"><span class="source-icon">⭐</span><span>Favorites</span></button>
|
|
</div>
|
|
<div id="albums-list" class="albums-list"><p class="loading-text">Loading albums…</p></div>
|
|
</div>
|
|
<button id="btn-start" class="start-btn" disabled onclick="startSlideshow()">▶ Start Slideshow</button>
|
|
</div>
|
|
<div id="setup-error" class="setup-error" style="display:none">
|
|
<p>⚠️ Cannot connect to Immich</p>
|
|
<p class="error-detail" id="error-detail"></p>
|
|
<button onclick="location.reload()">Retry</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div id="slideshow-screen" class="screen" style="display:none">
|
|
<div id="bg-blur" class="bg-blur"></div>
|
|
<canvas id="pile-canvas"></canvas>
|
|
<div class="bg-vignette"></div>
|
|
|
|
<!-- Flexbox wrapper handles centering; animation lives on inner frame -->
|
|
<div class="main-frame-wrapper">
|
|
<div id="main-frame" class="main-frame">
|
|
<div class="frame-border">
|
|
<img id="main-photo" class="frame-media" alt="">
|
|
<video id="main-video" class="frame-media" muted playsinline style="display:none"></video>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div id="overlay" class="overlay">
|
|
<div class="overlay-top-right">
|
|
<div id="clock" class="clock"></div>
|
|
<div id="date-display" class="date-display"></div>
|
|
</div>
|
|
<div class="overlay-bottom">
|
|
<div id="exif-info" class="exif-info"></div>
|
|
<div id="progress-bar" class="progress-bar"><div id="progress-fill" class="progress-fill"></div></div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="touch-zone touch-left" onclick="prevPhoto()"></div>
|
|
<div class="touch-zone touch-center" onclick="toggleOverlay()"></div>
|
|
<div class="touch-zone touch-right" onclick="nextPhoto()"></div>
|
|
<button id="btn-settings" class="settings-btn" onclick="exitSlideshow()">✕</button>
|
|
</div>
|
|
<script src="/js/app.js"></script>
|
|
</body>
|
|
</html>
|