// Copyright: (c) 2026 TWWIM UG. All rights reserved. import { Tag } from 'lucide-react'; import { useTranslation } from '@/i18n/TranslationProvider'; interface ActiveCampaign { campaignId: string; name: Record; type: string; value: number; valueUnit: string; mode: string; usesCount: number; maxRecurringCycles: number | null; expiresAt: string | null; } interface ActiveCampaignListProps { campaigns: ActiveCampaign[]; } export function ActiveCampaignList({ campaigns }: ActiveCampaignListProps) { const { t, locale } = useTranslation(); if (campaigns.length === 0) return null; return (

{t('subscription.activeCampaigns')}

{campaigns.map((c) => { const name = c.name[locale] || c.name.en || ''; const isDiscount = c.type === 'discount'; const isCapBoost = c.type === 'cap_boost'; let valueLabel = ''; if (isDiscount) { valueLabel = c.valueUnit === 'percentage' ? t('subscription.campaignDiscount', { value: c.value }) : t('subscription.campaignDiscountFixed', { value: c.value, currency: '\u20AC' }); } else if (isCapBoost) { valueLabel = t('subscription.campaignCapBoost', { value: c.value }); } const isRecurring = c.mode === 'membership'; const recurringLabel = isRecurring ? t('subscription.campaignRecurring') : t('subscription.campaignOneTime'); const cyclesLabel = c.maxRecurringCycles ? t('subscription.campaignCyclesUsed', { used: c.usesCount, max: c.maxRecurringCycles }) : isRecurring ? t('subscription.campaignCyclesUnlimited', { used: c.usesCount }) : null; const expiryLabel = c.expiresAt ? t('subscription.campaignExpires', { date: new Date(c.expiresAt).toLocaleDateString(locale) }) : t('subscription.campaignNoExpiry'); return (

{name}

{recurringLabel} {cyclesLabel && {cyclesLabel}} {expiryLabel}
{valueLabel}
); })}
); }