neues Admin UI Layout eingeführt. Alle Tests auf den neusten Stand gebracht.

This commit is contained in:
Codex Agent
2025-12-30 10:24:06 +01:00
parent 902e78cae9
commit efe2f25b3e
85 changed files with 95235 additions and 19197 deletions

View File

@@ -39,5 +39,6 @@
"processing": {
"title": "Anmeldung wird verarbeitet …",
"copy": "Einen Moment bitte, wir bereiten dein Dashboard vor."
}
},
"logoAlt": "Fotospiel Logo"
}

View File

@@ -1854,8 +1854,11 @@
"accentColor": "Akzentfarbe",
"fonts": "Schriften",
"headingFont": "Überschrift-Schrift",
"headingFontPlaceholder": "SF Pro Display",
"bodyFont": "Fließtext-Schrift",
"bodyFontPlaceholder": "SF Pro Text",
"logo": "Logo",
"logoAlt": "Logo",
"replaceLogo": "Logo ersetzen",
"removeLogo": "Entfernen",
"logoHint": "Lade ein Logo hoch, um Einladungen und QR-Poster zu branden.",
@@ -1898,24 +1901,47 @@
"title": "Gästeverwaltung",
"inviteTitle": "Mitglied einladen",
"name": "Name",
"namePlaceholder": "Alex Beispiel",
"email": "E-Mail",
"emailPlaceholder": "alex@example.com",
"role": "Rolle",
"roleMember": "Member",
"roleAdmin": "Admin",
"invite": "Einladung senden",
"inviteSuccess": "Einladung gesendet",
"inviteFailed": "Einladung fehlgeschlagen.",
"emailInvalid": "Bitte eine gültige E-Mail-Adresse eingeben.",
"search": "Mitglieder suchen",
"filters": {
"statusLabel": "Status",
"roleLabel": "Rolle",
"statusAll": "Alle Status",
"statusPending": "Ausstehend",
"statusActive": "Aktiv",
"statusInvited": "Eingeladen",
"roleAll": "Alle Rollen",
"roleAdmin": "Admins",
"roleMember": "Mitglieder"
},
"listTitle": "Team & Gäste",
"copyInvite": "Einladungslink kopiert",
"copyInviteFailed": "Kopieren nicht möglich",
"copyInviteLabel": "Einladungslink kopieren",
"copyEmail": "E-Mail kopiert",
"copyEmailFailed": "Kopieren nicht möglich",
"copyEmailLabel": "E-Mail kopieren",
"empty": "Noch keine Einladungen.",
"emptyTitle": "Team einladen",
"emptyBody": "Sende die erste Einladung, damit Helfer Zugriff erhalten.",
"emptyAction": "Erste Einladung senden",
"emptyFilteredTitle": "Keine passenden Mitglieder",
"emptyFilteredBody": "Passe Suche oder Filter an, um Mitglieder zu sehen.",
"clearFilters": "Filter zurücksetzen",
"fallbackName": "Gast",
"admin": "Admin",
"member": "Member",
"statuses": {
"pending": "Ausstehend",
"active": "Aktiv",
"invited": "Eingeladen",
"unknown": "Unbekannt"
},
"confirmRemove": "Mitglied entfernen?",
"remove": "Entfernen",
"removeHint": "Dieses Mitglied verliert den Zugang zum Event.",
@@ -2291,10 +2317,107 @@
"fileTooLarge": "Wasserzeichen muss kleiner als 3 MB sein."
}
},
"members": {
"title": "Gästeverwaltung",
"inviteTitle": "Mitglied einladen",
"name": "Name",
"namePlaceholder": "Alex Beispiel",
"email": "E-Mail",
"emailPlaceholder": "alex@example.com",
"role": "Rolle",
"roleMember": "Member",
"roleAdmin": "Admin",
"invite": "Einladung senden",
"inviteSuccess": "Einladung gesendet",
"inviteFailed": "Einladung fehlgeschlagen.",
"search": "Mitglieder suchen",
"listTitle": "Team & Gäste",
"copyInvite": "Einladungslink kopiert",
"copyInviteFailed": "Kopieren nicht möglich",
"copyInviteLabel": "Einladungslink kopieren",
"empty": "Noch keine Einladungen.",
"emptyTitle": "Team einladen",
"emptyBody": "Sende die erste Einladung, damit Helfer Zugriff erhalten.",
"emptyAction": "Erste Einladung senden",
"admin": "Admin",
"member": "Member",
"confirmRemove": "Mitglied entfernen?",
"remove": "Entfernen",
"removeHint": "Dieses Mitglied verliert den Zugang zum Event.",
"removeSuccess": "Mitglied entfernt",
"removeFailed": "Mitglied konnte nicht entfernt werden."
},
"tasks": {
"disabledTitle": "Task-Modus ist für dieses Event aus",
"disabledBody": "Gäste sehen nur den Fotofeed. Aktiviere Tasks in den Event-Einstellungen, um sie wieder anzuzeigen.",
"title": "Tasks & Checklisten",
"quickNav": "Schnellzugriff",
"sections": {
"assigned": "Zugewiesen",
"library": "Bibliothek",
"collections": "Sammlungen",
"emotions": "Emotionen"
},
"summary": {
"assigned": "Zugewiesen",
"library": "Bibliothek",
"collections": "Sammlungen",
"emotions": "Emotionen"
},
"actions": "Aktionen",
"assigned": "Task hinzugefügt",
"updateFailed": "Task konnte nicht gespeichert werden.",
"created": "Aufgabe gespeichert",
"removed": "Aufgabe entfernt",
"imported": "Aufgabenpaket importiert",
"saveTask": "Aufgabe speichern",
"add": "Hinzufügen",
"empty": "Noch keine Aufgaben zugewiesen.",
"emptyHint": "Lege jetzt Tasks an oder importiere ein Paket.",
"emptyTitle": "Noch keine Tasks",
"emptyBody": "Lege Tasks an oder importiere ein Paket für dein Event.",
"emptyActionTask": "Task hinzufügen",
"emptyActionPack": "Paket importieren",
"addTask": "Aufgabe hinzufügen",
"addTaskHint": "Erstelle eine neue Aufgabe für dieses Event.",
"import": "Aufgabenpaket importieren",
"importHint": "Nutze vordefinierte Pakete für deinen Event-Typ.",
"search": "Tasks durchsuchen",
"emotionFilter": "Emotion filtern",
"customEmotion": "Eigene Emotion",
"allEmotions": "Alle",
"count": "{{count}} Tasks",
"library": "Weitere Aufgaben",
"hideLibrary": "Bibliothek ausblenden",
"viewAllLibrary": "Alle anzeigen",
"libraryEmpty": "Keine weiteren Aufgaben verfügbar.",
"hideCollections": "Pakete ausblenden",
"showCollections": "Alle Pakete anzeigen",
"collectionsEmpty": "Keine Pakete vorhanden.",
"bulkAdd": "Bulk add",
"manageEmotions": "Emotionen verwalten",
"manageEmotionsHint": "Filtere und halte deine Taxonomie gepflegt.",
"saveEmotion": "Emotion speichern",
"emotionName": "Name",
"emotionNamePlaceholder": "z. B. Joy",
"emotionColor": "Farbe",
"emotionRemoved": "Emotion entfernt",
"emotionSaved": "Emotion gespeichert",
"emotionNone": "Keine",
"emotion": "Emotion",
"description": "Beschreibung",
"descriptionPlaceholder": "Optionale Hinweise",
"titleLabel": "Titel",
"titlePlaceholder": "z. B. Erstes Gruppenfoto",
"bulkHint": "Eine Aufgabe pro Zeile. Sie werden erstellt und dem Event hinzugefügt.",
"bulkPlaceholder": "z. B.\nBraut & Bräutigam Porträt\nGruppenfoto mit Hauptgästen"
},
"qr": {
"title": "QR-Code & Druck-Layouts",
"heroTitle": "Einlass-QR-Code",
"description": "Scannen, um zur Gäste-App zu gelangen.",
"qrAlt": "QR-Code",
"previewAlt": "QR-Layout Vorschau",
"bottomNote": "Unterer Hinweistext",
"missing": "Kein QR-Link vorhanden",
"download": "Download",
@@ -2306,15 +2429,45 @@
"layouts": "Druck-Layouts",
"preview": "Anpassen & Exportieren",
"createLink": "Neuen QR-Link erstellen",
"mobileLinkLabel": "Mobiler Link",
"created": "Neuer QR-Link erstellt",
"createFailed": "Link konnte nicht erstellt werden.",
"backgroundPicker": "Hintergrund auswählen ({{formatLabel}})",
"backgroundPickerFoldable": "Hintergrund für A5 (Gradient/Farbe)",
"backgroundNote": "Diese Presets sind für A4-Hochformat. Spiegelung erfolgt automatisch bei Tischkarten.",
"foldableBackgroundNote": "Für A5 Tischkarten bitte Gradient oder Vollfarbe wählen.",
"gradients": "Gradienten",
"colors": "Vollfarbe",
"headline": "Headline",
"subtitle": "Untertitel",
"align": "Ausrichtung",
"lineHeight": "Zeilenhöhe",
"fontFamily": "Schriftfamilie",
"fontSize": "Schriftgröße (px)",
"positionX": "X (%)",
"positionY": "Y (%)",
"width": "Breite (%)",
"size": "Größe (%)",
"exportPdf": "PDF exportieren",
"exportPng": "PNG exportieren",
"orientation": {
"landscape": "Querformat",
"portrait": "Hochformat"
},
"formatLabel": {
"standard": "{{paper}} {{orientation}}",
"foldable": "{{paper}} {{orientation}} (doppelt A5/gespiegelt)"
},
"backgroundPresets": {
"blueFloral": "Blau Floral",
"goldFrame": "Goldrahmen",
"greenFloral": "Grün Floral"
},
"gradientPresets": {
"softLilac": "Sanftes Flieder",
"pastel": "Pastell",
"midnight": "Mitternacht"
},
"format": {
"poster": "A4 Poster",
"posterSubtitle": "Hochformat für Aushänge",
@@ -2464,6 +2617,7 @@
"ctaHint": "Beide Felder werden benötigt, um einen Button zu senden.",
"ctaError": "CTA-Label und Link müssen zusammen ausgefüllt werden.",
"expiresIn": "Läuft ab in (Minuten)",
"expiresPlaceholder": "60",
"priority": "Priorität",
"priorityValue": "Priorität {{value}}",
"send": "Benachrichtigung senden",

View File

@@ -39,5 +39,6 @@
"processing": {
"title": "Signing you in …",
"copy": "One moment please while we prepare your dashboard."
}
},
"logoAlt": "Fotospiel logo"
}

View File

@@ -1858,8 +1858,11 @@
"accentColor": "Accent color",
"fonts": "Fonts",
"headingFont": "Headline font",
"headingFontPlaceholder": "SF Pro Display",
"bodyFont": "Body font",
"bodyFontPlaceholder": "SF Pro Text",
"logo": "Logo",
"logoAlt": "Logo",
"replaceLogo": "Replace logo",
"removeLogo": "Remove",
"logoHint": "Upload a logo to brand guest invites and QR posters.",
@@ -1902,24 +1905,47 @@
"title": "Guest management",
"inviteTitle": "Invite member",
"name": "Name",
"namePlaceholder": "Alex Example",
"email": "Email",
"emailPlaceholder": "alex@example.com",
"role": "Role",
"roleMember": "Member",
"roleAdmin": "Admin",
"invite": "Send invite",
"inviteSuccess": "Invitation sent",
"inviteFailed": "Invitation failed.",
"emailInvalid": "Please enter a valid email address.",
"search": "Search members",
"filters": {
"statusLabel": "Status",
"roleLabel": "Role",
"statusAll": "All statuses",
"statusPending": "Pending",
"statusActive": "Active",
"statusInvited": "Invited",
"roleAll": "All roles",
"roleAdmin": "Admins",
"roleMember": "Members"
},
"listTitle": "Team & guests",
"copyInvite": "Invite link copied",
"copyInviteFailed": "Copy failed",
"copyInviteLabel": "Copy invite link",
"copyEmail": "Email copied",
"copyEmailFailed": "Copy failed",
"copyEmailLabel": "Copy email",
"empty": "No invitations yet.",
"emptyTitle": "Invite your team",
"emptyBody": "Send the first invite so helpers can access the event.",
"emptyAction": "Send first invite",
"emptyFilteredTitle": "No matching members",
"emptyFilteredBody": "Adjust your search or filters to see members.",
"clearFilters": "Clear filters",
"fallbackName": "Guest",
"admin": "Admin",
"member": "Member",
"statuses": {
"pending": "Pending",
"active": "Active",
"invited": "Invited",
"unknown": "Unknown"
},
"confirmRemove": "Remove member?",
"remove": "Remove",
"removeHint": "This member will lose access to the event.",
@@ -2295,10 +2321,107 @@
"fileTooLarge": "Watermark must be under 3 MB."
}
},
"members": {
"title": "Guest management",
"inviteTitle": "Invite member",
"name": "Name",
"namePlaceholder": "Alex Example",
"email": "Email",
"emailPlaceholder": "alex@example.com",
"role": "Role",
"roleMember": "Member",
"roleAdmin": "Admin",
"invite": "Send invite",
"inviteSuccess": "Invitation sent",
"inviteFailed": "Invitation failed.",
"search": "Search members",
"listTitle": "Team & guests",
"copyInvite": "Invite link copied",
"copyInviteFailed": "Copy failed",
"copyInviteLabel": "Copy invite link",
"empty": "No invitations yet.",
"emptyTitle": "Invite your team",
"emptyBody": "Send the first invite so helpers can access the event.",
"emptyAction": "Send first invite",
"admin": "Admin",
"member": "Member",
"confirmRemove": "Remove member?",
"remove": "Remove",
"removeHint": "This member will lose access to the event.",
"removeSuccess": "Member removed",
"removeFailed": "Member could not be removed."
},
"tasks": {
"disabledTitle": "Task mode is off for this event",
"disabledBody": "Guests only see the photo feed. Enable tasks in the event settings to show them again.",
"title": "Tasks & checklists",
"quickNav": "Quick jump",
"sections": {
"assigned": "Assigned",
"library": "Library",
"collections": "Collections",
"emotions": "Emotions"
},
"summary": {
"assigned": "Assigned",
"library": "Library",
"collections": "Collections",
"emotions": "Emotions"
},
"actions": "Actions",
"assigned": "Task added",
"updateFailed": "Task could not be saved.",
"created": "Task saved",
"removed": "Task removed",
"imported": "Task pack imported",
"saveTask": "Save task",
"add": "Add",
"empty": "No tasks assigned yet.",
"emptyHint": "Add tasks or import a pack.",
"emptyTitle": "No tasks yet",
"emptyBody": "Create tasks or import a pack for your event.",
"emptyActionTask": "Add task",
"emptyActionPack": "Import pack",
"addTask": "Add task",
"addTaskHint": "Create a new task for this event.",
"import": "Import pack",
"importHint": "Use predefined packs for your event type.",
"search": "Search tasks",
"emotionFilter": "Emotion filter",
"customEmotion": "Custom emotion",
"allEmotions": "All",
"count": "{{count}} tasks",
"library": "More tasks",
"hideLibrary": "Hide library",
"viewAllLibrary": "View all",
"libraryEmpty": "No more tasks available.",
"hideCollections": "Hide collections",
"showCollections": "Show all",
"collectionsEmpty": "No collections available.",
"bulkAdd": "Bulk add",
"manageEmotions": "Manage emotions",
"manageEmotionsHint": "Filter and keep your taxonomy tidy.",
"saveEmotion": "Save emotion",
"emotionName": "Name",
"emotionNamePlaceholder": "e.g. Joy",
"emotionColor": "Color",
"emotionRemoved": "Emotion removed",
"emotionSaved": "Emotion saved",
"emotionNone": "None",
"emotion": "Emotion",
"description": "Description",
"descriptionPlaceholder": "Optional notes",
"titleLabel": "Title",
"titlePlaceholder": "e.g. First group photo",
"bulkHint": "One task per line. These will be created and added to the event.",
"bulkPlaceholder": "e.g.\nBride & groom portrait\nGroup photo main guests"
},
"qr": {
"title": "QR Code & Print Layouts",
"heroTitle": "Entrance QR Code",
"description": "Scan to access the event guest app.",
"qrAlt": "QR code",
"previewAlt": "QR layout preview",
"bottomNote": "Bottom note text",
"missing": "No QR link available",
"download": "Download",
@@ -2310,15 +2433,45 @@
"layouts": "Print Layouts",
"preview": "Customize & Export",
"createLink": "Create new QR link",
"mobileLinkLabel": "Mobile link",
"created": "New QR link created",
"createFailed": "Could not create link.",
"backgroundPicker": "Select background ({{formatLabel}})",
"backgroundPickerFoldable": "Background for A5 (gradient/solid)",
"backgroundNote": "These presets are designed for A4 portrait. Mirroring is automatic for table cards.",
"foldableBackgroundNote": "For A5 table cards choose a gradient or solid colour.",
"gradients": "Gradients",
"colors": "Solid colour",
"headline": "Headline",
"subtitle": "Subtitle",
"align": "Align",
"lineHeight": "Line height",
"fontFamily": "Font family",
"fontSize": "Font size (px)",
"positionX": "X (%)",
"positionY": "Y (%)",
"width": "Width (%)",
"size": "Size (%)",
"exportPdf": "Export PDF",
"exportPng": "Export PNG",
"orientation": {
"landscape": "Landscape",
"portrait": "Portrait"
},
"formatLabel": {
"standard": "{{paper}} {{orientation}}",
"foldable": "{{paper}} {{orientation}} (double A5/mirrored)"
},
"backgroundPresets": {
"blueFloral": "Blue floral",
"goldFrame": "Gold frame",
"greenFloral": "Green floral"
},
"gradientPresets": {
"softLilac": "Soft lilac",
"pastel": "Pastel",
"midnight": "Midnight"
},
"format": {
"poster": "A4 Poster",
"posterSubtitle": "Portrait for posters",
@@ -2468,6 +2621,7 @@
"ctaHint": "Both fields are required to add a button.",
"ctaError": "CTA label and link are required together.",
"expiresIn": "Expires in (minutes)",
"expiresPlaceholder": "60",
"priority": "Priority",
"priorityValue": "Priority {{value}}",
"send": "Send notification",