rework of the event admin UI

This commit is contained in:
Codex Agent
2025-11-24 17:17:39 +01:00
parent 4667ec8073
commit 8947a37261
37 changed files with 4381 additions and 874 deletions

View File

@@ -6,6 +6,25 @@
"refresh": "Refresh",
"exportCsv": "Export CSV"
},
"stats": {
"package": {
"label": "Active package",
"helper": "Renews {{date}}",
"empty": "None yet"
},
"events": {
"label": "Events used",
"helper": "Remaining: {{count}}"
},
"addons": {
"label": "Add-ons",
"helper": "Lifetime history"
},
"transactions": {
"label": "Transactions",
"helper": "Synced payments"
}
},
"errors": {
"load": "Unable to load package data.",
"more": "Unable to load more entries."
@@ -69,6 +88,13 @@
"receipt": "View receipt",
"tax": "Tax: {{value}}"
},
"table": {
"transaction": "Transaction",
"amount": "Amount",
"status": "Status",
"date": "Date",
"origin": "Origin"
},
"status": {
"completed": "Completed",
"processing": "Processing",
@@ -130,8 +156,34 @@
"gallery": {
"title": "Gallery",
"description": "Click a photo to feature it or remove it.",
"photoboothCount": "{{count}} photobooth uploads",
"photoboothCta": "Open photobooth access",
"emptyTitle": "No photos yet",
"emptyDescription": "Encourage your guests to upload the gallery will appear here."
"emptyDescription": "Encourage your guests to upload the gallery will appear here.",
"select": "Select",
"selected": "Selected",
"likes": "Likes: {{count}}",
"uploader": "Uploader: {{name}}"
},
"filters": {
"all": "All",
"featured": "Highlights",
"hidden": "Hidden",
"photobooth": "Photobooth",
"search": "Search uploads …",
"count": "{{count}} uploads",
"selected": "{{count}} selected",
"clearSelection": "Clear selection",
"selectAll": "Select all"
},
"actions": {
"hide": "Hide",
"show": "Show",
"feature": "Set highlight",
"unfeature": "Remove highlight",
"delete": "Delete",
"copy": "Copy link",
"copySuccess": "Link copied"
}
},
"events": {
@@ -222,6 +274,9 @@
"photoOnlyEnable": "Photo-only mode could not be enabled.",
"photoOnlyDisable": "Photo-only mode could not be disabled."
},
"emotions": {
"error": "Could not load emotions."
},
"alerts": {
"notFoundTitle": "Event not found",
"notFoundDescription": "Please return to the event list."
@@ -329,6 +384,18 @@
"badge": "Custom"
}
},
"story": {
"title": "Branding & story",
"description": "Align colors, emotions, and mission packs for a cohesive guest experience.",
"emotionsTitle": "Emotions",
"emotionsCount": "{{count}} active",
"emotionsEmpty": "Activate emotions to categorise your tasks.",
"emotionsCta": "Manage emotions",
"collectionsTitle": "Mission packs",
"collectionsCount": "{{count}} tasks",
"collectionsEmpty": "No recommended mission packs yet.",
"collectionsCta": "View mission packs"
},
"customizer": {
"title": "Customize QR invite",
"description": "Adjust layout, texts, colors, and logo for your printable invite.",
@@ -394,13 +461,50 @@
"subtitle": "Manage invite links, layouts, and branding for your guests.",
"tabs": {
"layout": "Customise layout",
"export": "Print & export",
"links": "Manage invites"
"share": "Share links & QR",
"export": "Print & export"
},
"summary": {
"active": "Active invites",
"total": "Total"
},
"workflow": {
"title": "Invite workflow",
"description": "Work through layout, sharing, and export in order.",
"badge": "Setup",
"steps": {
"layout": {
"title": "Pick a layout",
"description": "Adjust copy, colors, and QR placement."
},
"share": {
"title": "Share links & QR",
"description": "Enable invites, copy QR codes, and distribute them."
},
"export": {
"title": "Print & export",
"description": "Create PDF/PNG files for print-ready cards."
}
}
},
"share": {
"title": "Quick access to guest link",
"description": "Use the primary link to share QR cards or send it to your team.",
"primaryLabel": "Primary link",
"stats": {
"active": "{{count}} active",
"total": "{{count}} total"
},
"actions": {
"copy": "Copy link",
"open": "Open",
"editLayout": "Edit layout",
"editHint": "Adjust colors & copy inside the editor.",
"export": "Print/export",
"create": "Create another"
},
"hint": "Share the link inside your team or include it in newsletters."
},
"actions": {
"refresh": "Refresh",
"create": "Create invite",
@@ -532,6 +636,90 @@
"layoutFallback": "Layout"
}
},
"photobooth": {
"status": {
"heading": "Status",
"active": "Photobooth link is active.",
"inactive": "No photobooth uploads connected yet.",
"badgeActive": "ACTIVE",
"badgeInactive": "INACTIVE",
"expiresAt": "Will switch off automatically on {{date}}"
},
"credentials": {
"heading": "FTP credentials",
"description": "Share these credentials with your photobooth software.",
"host": "Host",
"port": "Port",
"username": "Username",
"password": "Password",
"path": "Upload path"
},
"actions": {
"enable": "Activate photobooth",
"disable": "Disable",
"rotate": "Regenerate access"
},
"rateLimit": {
"heading": "Security & limits",
"description": "Uploads are limited to {{count}} photos per minute.",
"body": "If exceeded we block the connection and reopen it after 60 seconds.",
"hint": "Expiry follows the event end date.",
"usage": "Uploads last hour",
"warning": "Close to the limit slow down the upload rate or reach out to support."
},
"checklist": {
"title": "Setup checklist",
"description": "Complete each step before guests upload.",
"enable": "Activate access",
"enableCopy": "Enable the FTP account in your photobooth software.",
"share": "Share credentials",
"shareCopy": "Hand over host, user, and password to the operator.",
"monitor": "Monitor uploads",
"monitorCopy": "Watch uploads & limits in the dashboard."
},
"timeline": {
"title": "Status timeline",
"activation": "Activation",
"activationPending": "Not activated yet",
"activationReady": "Access is live.",
"credentials": "Credentials",
"credentialsReady": "User {{username}} is ready.",
"credentialsPending": "Credentials not generated yet.",
"expiry": "Expiry",
"expiryHint": "Switches off on {{date}}",
"noExpiry": "No expiry configured.",
"lastUpload": "Last upload",
"lastUploadAt": "Last seen {{date}}",
"lastUploadPending": "No uploads recorded yet."
},
"presets": {
"title": "Choose a mode",
"description": "Switch between planning and live behaviour for the photobooth.",
"planTitle": "Planning mode",
"planDescription": "Keep the FTP account disabled while preparing the booth.",
"liveTitle": "Live mode",
"liveDescription": "FTP access stays enabled and uploads are processed instantly.",
"badgePlan": "Planning",
"badgeLive": "Live",
"current": "Active",
"actions": {
"apply": "Apply mode",
"rotate": "Reset credentials"
}
},
"stats": {
"title": "Upload status",
"description": "Keep an eye on the most recent photobooth uploads.",
"lastUpload": "Last upload",
"none": "No uploads yet",
"uploads24h": "Uploads (24h)",
"share": "Photobooth share (recent)",
"totalEvent": "Uploads total (event)",
"sample": "Uploads analysed",
"sourcePhotobooth": "Source: Photobooth",
"sourceEvent": "Source: Event"
}
},
"events": {
"errors": {
"missingSlug": "No event selected.",
@@ -640,15 +828,47 @@
"empty": "No tasks assigned yet.",
"manage": "Open task workspace"
},
"branding": {
"badge": "Branding & story",
"title": "Branding & mission packs",
"subtitle": "Align colors, typography, and task packs for your event.",
"brandingTitle": "Branding",
"brandingFallback": "Current selection",
"brandingCopy": "Adjust colors & fonts inside the layout editor.",
"brandingCta": "Adjust branding",
"collectionsTitle": "Mission packs",
"collectionsFallback": "Recommended story",
"collectionsCopy": "Import curated packs or activate emotions inside the task workspace.",
"collectionsActive": "{{count}} active links",
"tasksCount": "{{count}} tasks",
"collectionsManage": "Edit tasks",
"collectionsImport": "Import mission pack",
"emotionsTitle": "Emotions",
"emotionsEmpty": "Activate emotions to categorise tasks.",
"emotionsCta": "Manage emotions"
},
"photos": {
"pendingBadge": "Moderation",
"pendingTitle": "Photos awaiting review",
"pendingSubtitle": "Check uploads before they go live.",
"pendingCount": "{{count}} photos pending",
"pendingEmpty": "No photos waiting for moderation.",
"openModeration": "Open moderation",
"recentBadge": "Uploads",
"recentTitle": "Latest uploads",
"recentSubtitle": "Spot the latest guest highlights.",
"recentEmpty": "No new uploads yet."
"recentEmpty": "No new uploads yet.",
"toastVisible": "Photo made visible again.",
"toastHidden": "Photo hidden.",
"toastFeatured": "Photo marked as highlight.",
"toastUnfeatured": "Highlight removed.",
"errorAuth": "Session expired. Please sign in again.",
"errorVisibility": "Could not change visibility.",
"errorFeature": "Action failed.",
"show": "Show",
"hide": "Hide",
"feature": "Feature",
"unfeature": "Remove highlight"
},
"feedback": {
"title": "How is your event running?",
@@ -762,6 +982,25 @@
}
},
"management": {
"photobooth": {
"title": "Photobooth uploads",
"titleForEvent": "Manage photobooth uploads",
"subtitle": "Create FTP access for photobooth software and keep limits in sight.",
"actions": {
"backToEvent": "Back to detail view",
"allEvents": "Back to event list"
},
"errors": {
"missingSlug": "No event selected.",
"loadFailed": "Could not load photobooth link.",
"enableFailed": "Could not enable access.",
"disableFailed": "Could not disable access.",
"rotateFailed": "Could not regenerate credentials."
},
"confirm": {
"disable": "Disable photobooth access?"
}
},
"billing": {
"title": "Packages & billing",
"subtitle": "Manage your purchased packages and track their durations.",
@@ -814,6 +1053,54 @@
}
,
"settings": {
"hero": {
"badge": "Administration",
"description": "Shape the admin experience for your team appearance, notifications, and security.",
"summary": {
"appearance": "Match the look & feel with the guest portal.",
"notifications": "Fine-tune alerts for tasks, packages, and live events."
},
"actions": {
"profile": "Edit profile",
"events": "Back to events"
},
"accountLabel": "Signed-in account",
"support": "Adjust settings for you and your team changes apply instantly."
},
"appearance": {
"badge": "Appearance",
"title": "Appearance & branding",
"description": "Align the admin area with your event colors.",
"lightTitle": "Light mode",
"lightCopy": "Great for offices and high contrast.",
"darkTitle": "Dark mode",
"darkCopy": "Gentle on eyes during evening events.",
"themeLabel": "Choose theme",
"themeHint": "Follow the system preference or override it manually."
},
"session": {
"badge": "Account & security",
"title": "Signed-in account",
"description": "Manage your session or jump to the profile quickly.",
"loggedInAs": "Signed in as",
"unknown": "No user loaded right now.",
"security": "SSO & 2FA available",
"session": "Session valid for 12h",
"hint": "Switch devices? Quickly re-login to refresh permissions.",
"logout": "Sign out",
"cancel": "Back"
},
"profile": {
"actions": {
"openProfile": "Edit profile"
}
},
"support": {
"badge": "Help & support",
"title": "Talk to our team",
"copy": "Need help? Our support usually replies within a few hours.",
"cta": "Contact support"
},
"notifications": {
"title": "Notifications",
"description": "Choose which events should trigger an email notification.",
@@ -824,6 +1111,14 @@
"save": "Save",
"reset": "Reset to defaults"
},
"summary": {
"badge": "Status",
"title": "Notification overview",
"channel": "Email channel",
"channelCopy": "All warnings are delivered via email.",
"credits": "Credits",
"threshold": "Warning at {{count}} remaining slots"
},
"meta": {
"creditLast": "Last slot warning: {{date}}",
"creditNever": "No slot warning sent yet."
@@ -875,5 +1170,9 @@
}
}
}
},
"billingWarning": {
"title": "Needs attention",
"description": "Package alerts and limits you should keep an eye on."
}
}