weitere verbesserungen der Guest PWA (vor allem TaskPicker)

This commit is contained in:
Codex Agent
2025-11-12 13:19:28 +01:00
parent 1cec116933
commit d91108c883
20 changed files with 2306 additions and 653 deletions

View File

@@ -184,6 +184,40 @@ export const messages: Record<LocaleCode, NestedMessages> = {
days: 'vor {count} Tagen',
},
},
tasks: {
page: {
eyebrow: 'Aufgaben-Zentrale',
title: 'Deine nächste Aufgabe',
subtitle: 'Wähle eine Stimmung aus oder lass dich überraschen.',
swipeHint: 'Tipp: Links wischen = neue Aufgabe · Rechts wischen = Inspiration',
completedLabel: 'Schon erledigt',
ctaStart: "Los geht's!",
shuffleCta: 'Was Neues!',
shuffleButton: 'Shuffle',
inspirationTitle: 'Foto-Inspiration',
inspirationLoading: 'lädt…',
inspirationEmptyTitle: 'Noch kein Foto zu dieser Aufgabe',
inspirationEmptyDescription: 'Sei die/der Erste und lade eins hoch',
inspirationMore: 'Mehr',
inspirationError: 'Fotos konnten nicht geladen werden',
suggestionsEyebrow: 'Mehr Inspiration',
suggestionsTitle: 'Spring direkt zur nächsten Aufgabe',
noTasksAlert: 'Für dieses Event sind derzeit keine Aufgaben hinterlegt.',
emptyTitle: 'Keine passende Aufgabe gefunden',
emptyDescriptionWithTasks: 'Für deine aktuelle Stimmung gibt es gerade keine Aufgabe. Wähle eine andere Stimmung oder lade neue Aufgaben.',
emptyDescriptionNoTasks: 'Hier sind noch keine Aufgaben hinterlegt. Bitte versuche es später erneut.',
reloadButton: 'Aufgaben neu laden',
filters: {
none: 'Kein Filter',
recentFallback: 'Stimmung wählen',
showAll: 'Alle zeigen',
dialogTitle: 'Alle verfügbaren Stimmungen',
empty: 'Für dieses Event stehen noch keine Stimmungen bereit.',
countOne: '{count} Aufgabe',
countMany: '{count} Aufgaben',
},
},
},
notFound: {
title: 'Nicht gefunden',
description: 'Die Seite konnte nicht gefunden werden.',
@@ -255,6 +289,49 @@ export const messages: Record<LocaleCode, NestedMessages> = {
},
dismiss: 'Verstanden',
},
hud: {
title: 'Live-Missionen',
subtitle: 'Bleib im Flow Kamera bereithalten.',
moodLabel: 'Stimmung: {mood}',
moodFallback: 'Freestyle',
ctaLabel: 'Inspiration öffnen',
cards: {
online: 'Gäste online',
completed: 'Aufgaben gelöst',
lastUpload: 'Letzter Upload',
},
progressLabel: 'Story {count}/{target} aktiv',
liveGuests: '{count} Gäste live',
relative: {
now: 'Gerade eben',
minutes: 'vor {count} Min',
hours: 'vor {count} Std',
days: 'vor {count} Tagen',
},
},
limitSummary: {
title: 'Uploads & Slots',
subtitle: 'Dein Event-Paket im Überblick',
badgeLabel: 'Aktuell',
cards: {
photos: {
title: 'Fotos insgesamt',
remaining: '{remaining} von {limit} frei',
unlimited: 'Unlimitierte Foto-Uploads aktiv',
},
guests: {
title: 'Geräte im Einsatz',
remaining: '{remaining} Slots verfügbar',
unlimited: 'Unlimitierte Geräte freigeschaltet',
},
},
badges: {
ok: 'OK',
warning: 'Bald voll',
limit_reached: 'Limit erreicht',
unlimited: 'Unlimitiert',
},
},
cameraUnsupported: {
title: 'Kamera nicht verfügbar',
message: 'Dein Gerät unterstützt keine Kameravorschau im Browser. Du kannst stattdessen Fotos aus deiner Galerie hochladen.',
@@ -652,6 +729,40 @@ export const messages: Record<LocaleCode, NestedMessages> = {
days: '{count} days ago',
},
},
tasks: {
page: {
eyebrow: 'Mission hub',
title: 'Your next task',
subtitle: 'Pick a mood or stay spontaneous.',
swipeHint: 'Tip: Swipe left for a new task · right for inspiration',
completedLabel: 'Already done',
ctaStart: "Let's go!",
shuffleCta: 'Something new!',
shuffleButton: 'Shuffle',
inspirationTitle: 'Photo inspiration',
inspirationLoading: 'loading…',
inspirationEmptyTitle: 'No photo for this task yet',
inspirationEmptyDescription: 'Be the first one to upload!',
inspirationMore: 'More',
inspirationError: 'Photos could not be loaded',
suggestionsEyebrow: 'More inspiration',
suggestionsTitle: 'Jump straight to the next task',
noTasksAlert: 'No tasks available for this event yet.',
emptyTitle: 'No matching task found',
emptyDescriptionWithTasks: 'No task matches this mood right now. Pick another mood or load new tasks.',
emptyDescriptionNoTasks: 'No tasks are available yet. Please try again later.',
reloadButton: 'Reload tasks',
filters: {
none: 'No filter',
recentFallback: 'Select mood',
showAll: 'Show all',
dialogTitle: 'All available moods',
empty: 'No moods are available for this event yet.',
countOne: '{count} task',
countMany: '{count} tasks',
},
},
},
notFound: {
title: 'Not found',
description: 'We could not find the page you requested.',
@@ -723,6 +834,49 @@ export const messages: Record<LocaleCode, NestedMessages> = {
},
dismiss: 'Got it',
},
hud: {
title: 'Live missions',
subtitle: 'Stay in the flow keep the camera ready.',
moodLabel: 'Mood: {mood}',
moodFallback: 'Freestyle',
ctaLabel: 'Open inspiration',
cards: {
online: 'Guests online',
completed: 'Tasks completed',
lastUpload: 'Latest upload',
},
progressLabel: 'Story {count}/{target} active',
liveGuests: '{count} guests live',
relative: {
now: 'Just now',
minutes: '{count} min ago',
hours: '{count} h ago',
days: '{count} days ago',
},
},
limitSummary: {
title: 'Uploads & slots',
subtitle: 'Your event package overview',
badgeLabel: 'Current',
cards: {
photos: {
title: 'Photos total',
remaining: '{remaining} of {limit} free',
unlimited: 'Unlimited photo uploads',
},
guests: {
title: 'Devices in use',
remaining: '{remaining} slots available',
unlimited: 'Unlimited devices enabled',
},
},
badges: {
ok: 'OK',
warning: 'Almost full',
limit_reached: 'Limit reached',
unlimited: 'Unlimited',
},
},
cameraUnsupported: {
title: 'Camera not available',
message: 'Your device does not support live camera preview in this browser. You can upload photos from your gallery instead.',