Customize watermark labels in package comparison
Some checks failed
linter / quality (push) Has been cancelled
tests / ci (push) Has been cancelled
tests / ui (push) Has been cancelled

This commit is contained in:
Codex Agent
2026-01-15 09:54:47 +01:00
parent 2ecd417b55
commit 5d0ae0faa5
4 changed files with 39 additions and 9 deletions

View File

@@ -40,6 +40,22 @@ interface Package {
branding_allowed?: boolean;
}
export const resolveWatermarkFeatureKey = (pkg: Package): string => {
if (pkg.slug === 'starter') {
return 'watermark_base';
}
if (pkg.slug === 'standard') {
return 'no_watermark';
}
if (pkg.slug === 'pro') {
return 'watermark_custom';
}
return pkg.watermark_allowed === false ? 'no_watermark' : 'watermark';
};
const sortPackagesByPrice = (packages: Package[]): Package[] =>
[...packages].sort((a, b) => Number(a.price ?? 0) - Number(b.price ?? 0));
@@ -64,13 +80,9 @@ const buildDisplayFeatures = (pkg: Package): string[] => {
}
};
if (pkg.watermark_allowed === false) {
removeFeature('watermark');
addFeature('no_watermark');
} else {
removeFeature('no_watermark');
addFeature('watermark');
}
const watermarkFeature = resolveWatermarkFeatureKey(pkg);
['watermark', 'no_watermark', 'watermark_base', 'watermark_custom'].forEach(removeFeature);
addFeature(watermarkFeature);
if (pkg.branding_allowed) {
addFeature('custom_branding');
@@ -142,8 +154,7 @@ function PackageComparison({ packages, variant }: PackageComparisonProps) {
{
key: 'watermark',
label: t('packages.watermark_label'),
value: (pkg: Package) =>
pkg.watermark_allowed === false ? t('packages.no_watermark') : t('packages.feature_watermark'),
value: (pkg: Package) => t(`packages.feature_${resolveWatermarkFeatureKey(pkg)}`),
},
{
key: 'branding',

View File

@@ -0,0 +1,15 @@
import { describe, expect, it } from 'vitest';
import { resolveWatermarkFeatureKey } from '../Packages';
describe('resolveWatermarkFeatureKey', () => {
it('returns package-specific labels for endcustomer tiers', () => {
expect(resolveWatermarkFeatureKey({ slug: 'starter' } as any)).toBe('watermark_base');
expect(resolveWatermarkFeatureKey({ slug: 'standard' } as any)).toBe('no_watermark');
expect(resolveWatermarkFeatureKey({ slug: 'pro' } as any)).toBe('watermark_custom');
});
it('falls back to watermark_allowed when slug is unknown', () => {
expect(resolveWatermarkFeatureKey({ slug: 'reseller', watermark_allowed: true } as any)).toBe('watermark');
expect(resolveWatermarkFeatureKey({ slug: 'reseller', watermark_allowed: false } as any)).toBe('no_watermark');
});
});