Files
Calender/templates/index.html
Ludwig Mey 93b2dad8fd Add photo slideshow screensaver with inactivity timer
- After 1 hour of inactivity the screen switches to a fullscreen
  crossfade slideshow of photos from static/photos/
- Touch anywhere on screen to dismiss and return to the calendar
- /api/photos endpoint serves a shuffled list of images from static/photos/
- Two-slot A/B image swap for smooth 1.5s crossfades; next image preloads
  in the background while current is displayed (15s per photo)
- Slideshow only activates if static/photos/ contains at least one image

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-27 21:00:22 +12:00

38 lines
1.4 KiB
HTML

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Family Calendar</title>
<link rel="stylesheet" href="{{ url_for('static', filename='css/style.css') }}">
</head>
<body>
<div class="app">
<!-- Top bar: date/time, week navigation, filter, weather -->
<header class="topbar">
<span class="pill view-pill">5 Days</span>
<span id="date-range" class="pill date-range-label">--</span>
<select id="member-filter" class="pill filter-select">
<option value="all">Filter: All</option>
</select>
</header>
<!-- Week grid: Sunday - Saturday + Next Week preview -->
<main id="week-grid" class="week-grid">
<div class="event-placeholder">Loading calendar...</div>
</main>
<button id="add-btn" class="add-fab" title="Add events from Google Calendar" aria-label="Add event">+</button>
</div>
<!-- Fullscreen photo slideshow screensaver -->
<div id="slideshow-overlay" class="slideshow-overlay hidden">
<img id="slide-a" class="slide-img" src="" alt="">
<img id="slide-b" class="slide-img" src="" alt="">
<div class="slideshow-hint">Touch to return to calendar</div>
</div>
<script src="{{ url_for('static', filename='js/app.js') }}"></script>
</body>
</html>