Customize watermark labels in package comparison
This commit is contained in:
@@ -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',
|
||||
|
||||
15
resources/js/pages/marketing/__tests__/Packages.test.ts
Normal file
15
resources/js/pages/marketing/__tests__/Packages.test.ts
Normal 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');
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user