events werden nun erfolgreich gespeichert, branding wird nun erfolgreich gespeichert, emotionen können nun angelegt werden. Task Ansicht im Event admin verbessert, Buttons in FAB umgewandelt und vereinheitlicht. Teilen-Link Guest PWA schicker gemacht, SynGoogleFonts ausgebaut (mit Einzel-Family-Download).

This commit is contained in:
Codex Agent
2025-11-27 16:08:08 +01:00
parent bfa15cc48e
commit 96f8c5d63c
39 changed files with 1970 additions and 640 deletions

View File

@@ -24,6 +24,13 @@ export function buildEventTabs(event: TenantEvent, translate: Translator, counts
const eventDate = event.event_date ? new Date(event.event_date) : null;
const hasPassed = eventDate ? eventDate.getTime() <= Date.now() : false;
const hasBranding = (() => {
const settings = (event.settings ?? {}) as Record<string, unknown>;
const brandingAllowed = Boolean(settings.branding_allowed ?? true);
const packageAllowsBranding = brandingAllowed || settings.branding_allowed === undefined;
return packageAllowsBranding;
})();
const formatBadge = (value?: number | null): number | undefined => {
if (typeof value === 'number' && Number.isFinite(value) && value > 0) {
return value;
@@ -31,7 +38,7 @@ export function buildEventTabs(event: TenantEvent, translate: Translator, counts
return undefined;
};
return [
const tabs = [
{
key: 'overview',
label: translate('eventMenu.summary', 'Übersicht'),
@@ -51,14 +58,9 @@ export function buildEventTabs(event: TenantEvent, translate: Translator, counts
},
{
key: 'invites',
label: translate('eventMenu.invites', 'Einladungen'),
label: translate('eventMenu.invites', 'QR-Codes'),
href: ADMIN_EVENT_INVITES_PATH(event.slug),
},
{
key: 'branding',
label: translate('eventMenu.branding', 'Branding'),
href: ADMIN_EVENT_BRANDING_PATH(event.slug),
},
{
key: 'photobooth',
label: translate('eventMenu.photobooth', 'Photobooth'),
@@ -72,4 +74,14 @@ export function buildEventTabs(event: TenantEvent, translate: Translator, counts
}]
: []),
];
if (hasBranding) {
tabs.splice(4, 0, {
key: 'branding',
label: translate('eventMenu.branding', 'Branding'),
href: ADMIN_EVENT_BRANDING_PATH(event.slug),
});
}
return tabs;
}