summaryrefslogtreecommitdiff
path: root/public/index.html
blob: dc140fe9253fd037bbedda31ef3108d58c4a1f48 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
<!DOCTYPE HTML>
<html>
<head>
	<meta charset="utf-8">
	<meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1">
	<script src="/main.js" defer></script>
</head>
<body class="bg-black text-white fill-white h-screen max-h-screen flex flex-col m-0 overflow-hidden">
	<header></header>
	<main class="my-4">
		<div id="slideshow" class="hidden!">
			<div id="slideshow-top-controls">
				<div id="slideshow-share">
					<button id="share"    class="svgbtn p-3 size-12"><svg alt="Share"    class="size-6"><use href="#sprite-share"></use></svg></button>
					<button id="download" class="svgbtn p-3 size-12"><svg alt="Download" class="size-6"><use href="#sprite-download"></use></svg></button>
					<!-- <button id="hide"><svg alt="Don't Show This Image"><use href="#skip_next"></use></svg></button> -->
				</div>
			</div>
			<div id="slideshow-carousel" class="h-full"></div>
			<template id="carousel-cell-template">
				<div class="carousel-cell"><img src="" /></div>
			</template>
			<div id="slideshow-bottom-controls" class="grid grid-cols-3 max-w-3xl">
				<button id="prevSlide" class="svgbtn"><svg alt="Previous Slide" class="size-full"><use href="#sprite-skip_previous"></use></svg></button>
				<button id="playPause" class="svgbtn"><svg alt="Pause"          class="size-full"><use href="#sprite-pause"></use></svg></button>
				<button id="nextSlide" class="svgbtn"><svg alt="Next Slide"     class="size-full"><use href="#sprite-skip_next"></use></svg></button>
			</div>
		</div>
		<div id="albums" class="hidden!">
			<input class="rounded-2xl max-w-3xl" id="album-search" placeholder="Search your albums" />
			<div id="albums-container"></div>
			<template id="album-template">
				<div class="album group">
					<svg class="opacity-0 self-center size-6 group-hover:opacity-50
							group-data-selected:opacity-100 group-data-selected:fill-blue-300" alt="Select Album">
						<use href="#sprite-check_circle"></use>
					</svg>
					<img class="aspect-square object-cover rounded-2xl group-hover:shadow-md" />
					<div class="flex justify-between self-center text-lg">
						<div>
							<span class="album-name font-bold group-hover:text-blue-300"></span>
							<div class="album-info">
								<span><span class="album-assets-count"></span> items</span>
								<span class="album-shared">&bull; Shared</span>
							</div>
						</div>
					</div>
					<a target="_blank" class="opacity-0 group-hover:opacity-100 absolute bottom-4 right-4">
						<svg class="size-6" alt="View album in Immich"><use href="#sprite-open_in_new"></use></svg>
					</a>
				</div>
			</template>
		</div>
		<div id="settings" class="hidden!">
			<form class="flex flex-col gap-4 m-auto max-w-3xl">
				<fieldset>
					<h2>
						<svg class="size-6 inline"><use href="#sprite-camera"></use></svg>
						Immich Server
					</h2>
					<div>
						<label>Immich URL</label>
						<p>Complete Immich base url (e.g. <span class="font-medium">http://immich.local</span>)</p>
					</div>
					<input class="rounded-input" name="immich_url" type="text" />
					<div>
						<label>Immich API Key</label>
						<p>Generate an API key in User Settings</p>
					</div>
					<input class="rounded-input" name="immich_api_key" type="text" />
				</fieldset>
				<fieldset>
					<h2>
						<svg class="size-6 inline"><use href="#sprite-photo_frame"></use></svg>
						Display
					</h2>
					<div class="grid grid-cols-[16fr_9fr] gap-6">
						<div>
							<label>Image Duration</label>
							<p>Number of seconds each image will be displayed.</p>
						</div>
						<input class="my-auto rounded-input" name="image_duration" type="number" />
						<div>
							<label>Transition Duration</label>
							<p>Number of seconds each transition between images will take.<br>Set as 0 to disable.</p>
						</div>
						<input class="my-auto rounded-input" name="transition_duration" type="number" />
						<div>
							<label>Max Framerate</label>
							<p>Target display framerate.<br>Simple transitions look good as low as 12-15 fps.</p>
						</div>
						<input class="my-auto rounded-input" name="max_framerate" type="number" />
						<!--<div>
							<label>Auto Transition</label>
							<input name="auto_transition" type="checkbox" />
						</div>-->
						<div>
							<label>Display Size</label>
							<p>Image size to load on the display.<br>Large thumbnail size is suitable for FHD.</p>
						</div>
						<select class="my-auto rounded-input" name="display_size">
							<option value="thumbnail">Small Thumbnail (~15 kB)</option>
							<option value="preview">Large Thumbnail (~150 kB)</option>
							<option value="fullsize">Original Image</option>
						</select>
						<div>
							<label>Max Cached Assets</label>
							<p>Number of assets that can exist at once in RAM.<br>Each additional asset will take ~2x the display size in memory.</p>
						</div>
						<input class="my-auto rounded-input" name="max_cache_assets" type="number" />
					</div>
				</fieldset>
				<input class="rounded-button ml-auto" type="submit" value="Save Settings" />
			</form>
		</div>
	</main>
	<footer class="w-full">
		<div class="max-w-5xl m-auto">
			<div id="menu" class="flex w-full p-2 gap-4 box-border border-t border-gray-500">
				<a href="/slideshow"><svg class="size-6"><use href="#sprite-slideshow"  ></use></svg><span>Slideshow</span></a>
				<a href="/albums"   ><svg class="size-6"><use href="#sprite-photo_album"></use></svg><span>Albums</span></a>
				<a href="/settings" ><svg class="size-6"><use href="#sprite-settings"   ></use></svg><span>Settings</span></a>
			</div>
		</div>
	</footer>
</body>
</html>