diff --git a/src/server/request-handler.ts b/src/server/request-handler.ts
index 5eae7a7..529a2da 100644
--- a/src/server/request-handler.ts
+++ b/src/server/request-handler.ts
@@ -33,7 +33,7 @@ function resolveDavUrlFromShareUrl(shareUrl: string): string {
return `${url.origin}/public.php/dav/files/${davShare[1]}/`;
}
- throw new Error("Bitte einen öffentlichen Nextcloud-Share-Link einfügen.");
+ throw new Error("Please enter a public Nextcloud share link.");
}
async function proxyUpstream(url: string, init?: RequestInit) {
@@ -47,45 +47,6 @@ async function proxyUpstream(url: string, init?: RequestInit) {
};
}
-const demoPhotos: Photo[] = [
- {
- id: "demo-1",
- name: "berlin-brandenburg-gate.jpg",
- latitude: 52.516275,
- longitude: 13.377704,
- capturedAt: "2026-06-07T08:20:00.000Z",
- thumbUrl:
- "https://images.unsplash.com/photo-1467269204594-9661b134dd2b?auto=format&fit=crop&w=240&q=60",
- fullUrl:
- "https://images.unsplash.com/photo-1467269204594-9661b134dd2b?auto=format&fit=crop&w=1600&q=80",
- source: "demo"
- },
- {
- id: "demo-2",
- name: "museum-island.jpg",
- latitude: 52.5169,
- longitude: 13.4015,
- capturedAt: "2026-06-07T08:42:00.000Z",
- thumbUrl:
- "https://images.unsplash.com/photo-1477959858617-67f85cf4f1df?auto=format&fit=crop&w=240&q=60",
- fullUrl:
- "https://images.unsplash.com/photo-1477959858617-67f85cf4f1df?auto=format&fit=crop&w=1600&q=80",
- source: "demo"
- },
- {
- id: "demo-3",
- name: "alexanderplatz.jpg",
- latitude: 52.521918,
- longitude: 13.413215,
- capturedAt: "2026-06-07T09:05:00.000Z",
- thumbUrl:
- "https://images.unsplash.com/photo-1494526585095-c41746248156?auto=format&fit=crop&w=240&q=60",
- fullUrl:
- "https://images.unsplash.com/photo-1494526585095-c41746248156?auto=format&fit=crop&w=1600&q=80",
- source: "demo"
- }
-];
-
function htmlPage(): string {
return `
@@ -228,6 +189,24 @@ function htmlPage(): string {
padding: 10px 14px;
font: inherit;
cursor: pointer;
+ display: inline-flex;
+ align-items: center;
+ gap: 8px;
+ }
+
+ .button-icon {
+ width: 1em;
+ height: 1em;
+ display: inline-flex;
+ align-items: center;
+ justify-content: center;
+ flex: 0 0 auto;
+ }
+
+ .button-icon svg {
+ display: block;
+ width: 100%;
+ height: 100%;
}
.primary {
@@ -354,6 +333,15 @@ function htmlPage(): string {
font-size: 0.82rem;
}
+ .empty-state {
+ padding: 14px;
+ border-radius: 14px;
+ border: 1px dashed rgba(15, 23, 42, 0.16);
+ color: var(--muted);
+ background: rgba(255, 255, 255, 0.45);
+ text-align: center;
+ }
+
main {
position: relative;
min-height: 0;
@@ -464,33 +452,48 @@ function htmlPage(): string {
Fotos laden, EXIF lokal im Browser auslesen und auf OpenStreetMap anzeigen. Load photos, read EXIF locally in the browser, and show them on OpenStreetMap.mapy-mg
-