- 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>
38 lines
1.4 KiB
HTML
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>
|