import type { TenantEvent } from '../api'; import { ADMIN_EVENT_INVITES_PATH, ADMIN_EVENT_PHOTOBOOTH_PATH, ADMIN_EVENT_PHOTOS_PATH, ADMIN_EVENT_TASKS_PATH, ADMIN_EVENT_VIEW_PATH, ADMIN_EVENT_RECAP_PATH, ADMIN_EVENT_BRANDING_PATH, } from '../constants'; export type EventTabCounts = Partial<{ photos: number; tasks: number; invites: number; }>; type Translator = (key: string, fallback: string) => string; export function buildEventTabs(event: TenantEvent, translate: Translator, counts: EventTabCounts = {}) { if (!event.slug) { return []; } const formatBadge = (value?: number | null): number | undefined => { if (typeof value === 'number' && Number.isFinite(value)) { return value; } return undefined; }; return [ { key: 'overview', label: translate('eventMenu.summary', 'Übersicht'), href: ADMIN_EVENT_VIEW_PATH(event.slug), }, { key: 'photos', label: translate('eventMenu.photos', 'Uploads'), href: ADMIN_EVENT_PHOTOS_PATH(event.slug), badge: formatBadge(counts.photos ?? event.photo_count ?? event.pending_photo_count ?? null), }, { key: 'tasks', label: translate('eventMenu.tasks', 'Aufgaben'), href: ADMIN_EVENT_TASKS_PATH(event.slug), badge: formatBadge(counts.tasks ?? event.tasks_count ?? null), }, { key: 'invites', label: translate('eventMenu.invites', 'Einladungen'), href: ADMIN_EVENT_INVITES_PATH(event.slug), badge: formatBadge(counts.invites ?? event.active_invites_count ?? event.total_invites_count ?? null), }, { key: 'branding', label: translate('eventMenu.branding', 'Branding'), href: ADMIN_EVENT_BRANDING_PATH(event.slug), }, { key: 'photobooth', label: translate('eventMenu.photobooth', 'Photobooth'), href: ADMIN_EVENT_PHOTOBOOTH_PATH(event.slug), }, { key: 'recap', label: translate('eventMenu.recap', 'Nachbereitung'), href: ADMIN_EVENT_RECAP_PATH(event.slug), }, ]; }