Remove payments API routing initialization
[ProtonMail-WebClient.git] / packages / components / containers / payments / features / pass.tsx
blob4f7d604f1f63e6e1f5ec0b4165ee3a7287cf8ef0
1 import { c, msgid } from 'ttag';
3 import { PLANS } from '@proton/payments';
4 import { BRAND_NAME, DARK_WEB_MONITORING_NAME, PASS_APP_NAME, PASS_SHORT_APP_NAME } from '@proton/shared/lib/constants';
6 import type { PlanCardFeature, PlanCardFeatureDefinition } from './interface';
8 export const getPassAppFeature = (): PlanCardFeatureDefinition => {
9     return {
10         text: PASS_APP_NAME,
11         included: true,
12         icon: 'brand-proton-pass',
13         tooltip: c('tooltip')
14             .t`${PASS_APP_NAME}: Secure logins on all your devices. Includes unlimited aliases, sharing, integrated 2FA, and more.`,
15     };
18 export const getCustomDomains = (): PlanCardFeatureDefinition => {
19     return {
20         text: c('new_plans: feature').t`Custom domains for email aliases`,
21         included: true,
22     };
25 export const getProtonPassFeature = (n: 'unlimited' | number = 'unlimited'): PlanCardFeatureDefinition => {
26     return {
27         text:
28             n === 'unlimited'
29                 ? c('new_plans: feature').t`${PASS_APP_NAME} with unlimited hide-my-email aliases`
30                 : c('new_plans: feature').ngettext(
31                       msgid`${PASS_APP_NAME} with ${n} hide-my-email alias`,
32                       `${PASS_APP_NAME} with ${n} hide-my-email aliases`,
33                       n
34                   ),
35         icon: 'brand-proton-pass',
36         included: true,
37         hideInDowngrade: true,
38     };
41 export const getProtonPassFeatureTooltipText = () => {
42     return c('new_plans: tooltip').t`Lifetime access to ${PASS_APP_NAME} + SimpleLogin premium features.`;
45 export const getProtonPassFeatureLifetime = (): PlanCardFeatureDefinition => {
46     return {
47         text: c('new_plans: feature').t`${PASS_APP_NAME} + SimpleLogin lifetime`,
48         icon: 'brand-proton-pass',
49         included: true,
50         tooltip: getProtonPassFeatureTooltipText(),
51     };
54 export const getPassUsersText = (n: number) => {
55     return c('pass_signup_2024: Info').ngettext(msgid`${n} user account`, `${n} user accounts`, n);
58 export const getPassUsers = (n: Parameters<typeof getPassUsersText>[0]): PlanCardFeatureDefinition => {
59     return {
60         text: getPassUsersText(n),
61         icon: 'user-plus',
62         included: true,
63     };
66 export const getPassAdminPanelText = () => {
67     return c('pass_signup_2024: Info').t`Admin panel to manage users and subscription`;
70 export const getPassAdminPanel = (): PlanCardFeatureDefinition => {
71     return {
72         text: getPassAdminPanelText(),
73         icon: 'cog-wheel',
74         included: true,
75     };
78 export const getLoginsAndNotesText = (type: 'free' | 'paid') => {
79     if (type === 'free') {
80         return c('new_plans: feature').t`Unlimited logins and notes`;
81     }
82     return c('new_plans: feature').t`Unlimited logins, notes and credit cards`;
85 export const getGroupManagement = (included: boolean = false): PlanCardFeatureDefinition => {
86     return {
87         text: c('new_plans: feature').t`Group management (coming soon)`,
88         included,
89         status: 'coming-soon',
90     };
93 export const getLoginsAndNotes = (type: Parameters<typeof getLoginsAndNotesText>[0]): PlanCardFeatureDefinition => {
94     return {
95         text: getLoginsAndNotesText(type),
96         icon: 'note',
97         included: true,
98     };
101 export const getItems = (): PlanCardFeatureDefinition => {
102     return {
103         text: c('new_plans: feature').t`Organize items with multiple vaults`,
104         included: true,
105     };
108 export const getCreditCards = (): PlanCardFeatureDefinition => {
109     return {
110         text: c('new_plans: feature').t`Autofill credit cards (coming soon)`,
111         included: true,
112         status: 'coming-soon',
113     };
116 export const getDevicesText = () => {
117     return c('new_plans: feature').t`Unlimited devices`;
120 export const getDevicesAndAliasesText = () => {
121     return c('new_plans: feature').t`Unlimited devices and aliases`;
124 export const getDevices = (): PlanCardFeatureDefinition => {
125     return {
126         text: getDevicesText(),
127         icon: 'mobile',
128         included: true,
129         hideInDowngrade: true,
130     };
133 export const getDevicesAndAliases = (): PlanCardFeatureDefinition => {
134     return {
135         text: getDevicesAndAliasesText(),
136         icon: 'mobile',
137         included: true,
138         hideInDowngrade: true,
139     };
142 export const getNHideMyEmailAliasesText = (n: number) => {
143     return c('new_plans: feature').ngettext(msgid`${n} hide-my-email alias`, `${n} hide-my-email aliases`, n);
146 export const getUnlimitedHideMyEmailAliasesText = () => {
147     return c('new_plans: feature').t`Unlimited hide-my-email aliases`;
150 export const getHideMyEmailAliases = (n: number | 'unlimited'): PlanCardFeatureDefinition => {
151     return {
152         text: n === 'unlimited' ? getUnlimitedHideMyEmailAliasesText() : getNHideMyEmailAliasesText(n),
153         tooltip: c('new_plans: tooltip')
154             .t`Protect your real email address from being disclosed or leaked with aliases (a randomly-generated email address that forwards emails to your main inbox).`,
155         included: true,
156         icon: 'eye-slash',
157     };
160 export const getAdvancedAliasFeaturesText = () => {
161     return c('new_plans: feature').t`Advanced alias features (powered by SimpleLogin)`;
164 export const getAdvancedAliasFeatures = (included: boolean): PlanCardFeatureDefinition => {
165     return {
166         text: getAdvancedAliasFeaturesText(),
167         tooltip: c('new_plans: tooltip')
168             .t`Custom domains for aliases, additional mailboxes, the ability to send emails from aliases, and more`,
169         included,
170         icon: 'brand-simple-login',
171     };
174 export const get2FAAuthenticatorText = () => {
175     return c('new_plans: feature').t`Integrated 2FA authenticator`;
178 export const get2FAAuthenticator = (included: boolean = false): PlanCardFeatureDefinition => {
179     return {
180         text: get2FAAuthenticatorText(),
181         included,
182         icon: 'key',
183     };
186 export const getVaults = (n: number | 'unlimited'): PlanCardFeatureDefinition => {
187     return {
188         text:
189             n === 'unlimited'
190                 ? c('new_plans: feature').t`Unlimited vaults`
191                 : c('new_plans: feature').ngettext(msgid`${n} vault`, `${n} vaults`, n),
192         tooltip: c('new_plans: tooltip').t`Like a folder, a vault is a convenient way to organize your items`,
193         included: true,
194         icon: 'vault',
195     };
198 export const getCustomFields = (included: boolean = false): PlanCardFeatureDefinition => {
199     return {
200         text: c('new_plans: feature').t`Custom fields`,
201         included,
202         icon: 'pen-square',
203         hideInDowngrade: true,
204     };
207 export const getDarkWebMonitoring = (): PlanCardFeatureDefinition => {
208     return {
209         text: DARK_WEB_MONITORING_NAME,
210         tooltip: c('new_plans: feature')
211             .t`We scan the dark web to check if your ${BRAND_NAME} addresses or aliases have been leaked and alert you immediately if we find anything.`,
212         included: true,
213         icon: 'pen-square',
214     };
217 export const getPasswordHealth = (): PlanCardFeatureDefinition => {
218     return {
219         text: c('new_plans: feature').t`Password health`,
220         tooltip: c('new_plans: feature')
221             .t`Regular checkups of your account security. We alert you if you have weak or reused passwords that need to be updated.`,
222         included: true,
223         icon: 'pen-square',
224     };
227 export const getUnlimitedVaultSharingText = () => {
228     return c('new_plans: feature').t`Unlimited shared vaults with access permissions`;
231 export const getVaultSharingText = (n: number | 'unlimited') => {
232     return n === 'unlimited'
233         ? c('new_plans: feature').t`Unlimited vault sharing`
234         : c('new_plans: feature').ngettext(
235               msgid`Vault sharing (up to ${n} person)`,
236               `Vault sharing (up to ${n} people)`,
237               n
238           );
241 export const getVaultSharing = (n: number | 'unlimited'): PlanCardFeatureDefinition => {
242     return {
243         text: getVaultSharingText(n),
244         icon: 'arrow-up-from-square',
245         included: true,
246     };
249 export const getVaultSharingB2BText = (n: number | 'unlimited') => {
250     return n === 'unlimited'
251         ? c('new_plans: feature').t`Unlimited shared ${PASS_SHORT_APP_NAME} vaults per user`
252         : c('new_plans: feature').ngettext(
253               msgid`${n} shared ${PASS_SHORT_APP_NAME} vault per user`,
254               `${n} shared ${PASS_SHORT_APP_NAME} vaults per user`,
255               n
256           );
259 export const getVaultSharingB2B = (n: number | 'unlimited'): PlanCardFeatureDefinition => {
260     return {
261         text: getVaultSharingB2BText(n),
262         icon: 'vault',
263         included: true,
264         hideInDowngrade: true,
265     };
268 export const getSecureSharingTextEmpty = (link?: boolean) => {
269     if (link) {
270         return c('pass_signup_2023: Info').t`Secure vault and link sharing`;
271     }
272     return c('pass_signup_2023: Info').t`Secure vault sharing`;
275 export const getSecureSharingText = (n: number, link?: boolean) => {
276     if (link) {
277         return c('pass_signup_2023: Info').ngettext(
278             msgid`Secure vault sharing (${n} vault) and link sharing`,
279             `Secure vault sharing (${n} vaults) and link sharing`,
280             n
281         );
282     }
283     return c('pass_signup_2023: Info').ngettext(
284         msgid`Secure vault sharing (${n} vault)`,
285         `Secure vault sharing (${n} vaults)`,
286         n
287     );
290 export const getSecureVaultSharing = (...args: Parameters<typeof getSecureSharingText>): PlanCardFeatureDefinition => {
291     return {
292         text: getSecureSharingText(...args),
293         icon: 'arrow-up-from-square',
294         included: true,
295         hideInDowngrade: true,
296     };
299 export const getLinkSharing = (): PlanCardFeatureDefinition => {
300     return {
301         text: c('new_plans: feature').t`Secure link sharing`,
302         included: true,
303         icon: 'arrow-up-from-square',
304         tooltip: c('new_plans: tooltip')
305             .t`Securely share individual items with anyone (even if they don't use ${PASS_APP_NAME})`,
306     };
309 export const getDataBreachMonitoring = (included: boolean = false): PlanCardFeatureDefinition => {
310     return {
311         text: c('new_plans: feature').t`Data breach monitoring`,
312         included,
313         icon: 'shield',
314     };
317 export const getPasswordManager = (): PlanCardFeatureDefinition => {
318     return {
319         text: c('new_plans: feature').t`Password manager`,
320         included: true,
321         icon: 'brand-proton-pass',
322     };
325 export const getActivityLogText = () => {
326     return c('pass_signup_2024: Info').t`Activity log`;
329 export const getTeamPoliciesText = () => {
330     return c('pass_signup_2024: Info').t`Team policies`;
333 export const FREE_PASS_ALIASES = 10;
334 export const FREE_VAULTS = 2;
335 export const PAID_VAULTS = 10;
336 export const FREE_VAULT_SHARING = 2;
338 export const PASS_PLUS_VAULTS = 50;
339 export const PASS_PLUS_VAULT_SHARING = 10;
341 export const PASS_PRO_VAULTS = 'unlimited';
342 export const PASS_PRO_VAULT_SHARING = 'unlimited';
344 export const PASS_BIZ_VAULTS = 'unlimited';
345 export const PASS_BIZ_VAULT_SHARING = 'unlimited';
347 export const getPassFeatures = (): PlanCardFeature[] => {
348     return [
349         {
350             name: 'passwords-and-notes',
351             plans: {
352                 [PLANS.FREE]: getLoginsAndNotes('free'),
353                 [PLANS.BUNDLE]: getLoginsAndNotes('paid'),
354                 [PLANS.MAIL]: getLoginsAndNotes('free'),
355                 [PLANS.VPN]: getLoginsAndNotes('free'),
356                 [PLANS.DRIVE]: getLoginsAndNotes('free'),
357                 [PLANS.DRIVE_BUSINESS]: getLoginsAndNotes('free'),
358                 [PLANS.PASS]: getLoginsAndNotes('paid'),
359                 [PLANS.PASS_FAMILY]: getLoginsAndNotes('paid'),
360                 [PLANS.WALLET]: getLoginsAndNotes('free'),
361                 [PLANS.FAMILY]: getLoginsAndNotes('paid'),
362                 [PLANS.DUO]: getLoginsAndNotes('paid'),
363                 [PLANS.MAIL_PRO]: getLoginsAndNotes('free'),
364                 [PLANS.MAIL_BUSINESS]: getLoginsAndNotes('free'),
365                 [PLANS.BUNDLE_PRO]: getLoginsAndNotes('paid'),
366                 [PLANS.BUNDLE_PRO_2024]: getLoginsAndNotes('paid'),
367                 [PLANS.PASS_PRO]: getLoginsAndNotes('paid'),
368                 [PLANS.PASS_BUSINESS]: getLoginsAndNotes('paid'),
369                 [PLANS.VPN_PRO]: null,
370                 [PLANS.VPN_BUSINESS]: null,
371             },
372         },
373         {
374             name: 'devices',
375             plans: {
376                 [PLANS.FREE]: getDevices(),
377                 [PLANS.BUNDLE]: getDevices(),
378                 [PLANS.MAIL]: getDevices(),
379                 [PLANS.VPN]: getDevices(),
380                 [PLANS.DRIVE]: getDevices(),
381                 [PLANS.DRIVE_BUSINESS]: getDevices(),
382                 [PLANS.PASS]: getDevices(),
383                 [PLANS.PASS_FAMILY]: getDevices(),
384                 [PLANS.WALLET]: getDevices(),
385                 [PLANS.FAMILY]: getDevices(),
386                 [PLANS.DUO]: getDevices(),
387                 [PLANS.MAIL_PRO]: getDevices(),
388                 [PLANS.MAIL_BUSINESS]: getDevices(),
389                 [PLANS.BUNDLE_PRO]: getDevices(),
390                 [PLANS.BUNDLE_PRO_2024]: getDevices(),
391                 [PLANS.PASS_PRO]: getDevices(),
392                 [PLANS.PASS_BUSINESS]: getDevices(),
393                 [PLANS.VPN_PRO]: null,
394                 [PLANS.VPN_BUSINESS]: null,
395             },
396         },
397         {
398             name: 'vaults',
399             plans: {
400                 [PLANS.FREE]: getVaults(FREE_VAULTS),
401                 [PLANS.BUNDLE]: getVaults(PASS_PLUS_VAULTS),
402                 [PLANS.MAIL]: getVaults(FREE_VAULTS),
403                 [PLANS.VPN]: getVaults(FREE_VAULTS),
404                 [PLANS.DRIVE]: getVaults(FREE_VAULTS),
405                 [PLANS.DRIVE_BUSINESS]: getVaults(FREE_VAULTS),
406                 [PLANS.PASS]: getVaults(PASS_PLUS_VAULTS),
407                 [PLANS.PASS_FAMILY]: getVaults(PASS_PLUS_VAULTS),
408                 [PLANS.WALLET]: getVaults(FREE_VAULTS),
409                 [PLANS.FAMILY]: getVaults(PASS_PLUS_VAULTS),
410                 [PLANS.DUO]: getVaults(PASS_PLUS_VAULTS),
411                 [PLANS.MAIL_PRO]: getVaults(FREE_VAULTS),
412                 [PLANS.MAIL_BUSINESS]: getVaults(FREE_VAULTS),
413                 [PLANS.BUNDLE_PRO]: getVaults(PASS_BIZ_VAULTS),
414                 [PLANS.BUNDLE_PRO_2024]: getVaults(PASS_BIZ_VAULTS),
415                 [PLANS.PASS_PRO]: getVaults(PASS_PRO_VAULTS),
416                 [PLANS.PASS_BUSINESS]: getVaults(PASS_BIZ_VAULTS),
417                 [PLANS.VPN_PRO]: null,
418                 [PLANS.VPN_BUSINESS]: null,
419             },
420         },
421         {
422             name: 'hide-my-email-aliases',
423             plans: {
424                 [PLANS.FREE]: getHideMyEmailAliases(FREE_PASS_ALIASES),
425                 [PLANS.BUNDLE]: getHideMyEmailAliases('unlimited'),
426                 [PLANS.MAIL]: getHideMyEmailAliases(FREE_PASS_ALIASES),
427                 [PLANS.VPN]: getHideMyEmailAliases(FREE_PASS_ALIASES),
428                 [PLANS.DRIVE]: getHideMyEmailAliases(FREE_PASS_ALIASES),
429                 [PLANS.DRIVE_BUSINESS]: getHideMyEmailAliases(FREE_PASS_ALIASES),
430                 [PLANS.PASS]: getHideMyEmailAliases('unlimited'),
431                 [PLANS.PASS_FAMILY]: getHideMyEmailAliases('unlimited'),
432                 [PLANS.WALLET]: getHideMyEmailAliases(FREE_PASS_ALIASES),
433                 [PLANS.FAMILY]: getHideMyEmailAliases('unlimited'),
434                 [PLANS.DUO]: getHideMyEmailAliases('unlimited'),
435                 [PLANS.MAIL_PRO]: getHideMyEmailAliases(FREE_PASS_ALIASES),
436                 [PLANS.MAIL_BUSINESS]: getHideMyEmailAliases(FREE_PASS_ALIASES),
437                 [PLANS.BUNDLE_PRO]: getHideMyEmailAliases('unlimited'),
438                 [PLANS.BUNDLE_PRO_2024]: getHideMyEmailAliases('unlimited'),
439                 [PLANS.PASS_PRO]: getHideMyEmailAliases('unlimited'),
440                 [PLANS.PASS_BUSINESS]: getHideMyEmailAliases('unlimited'),
441                 [PLANS.VPN_PRO]: null,
442                 [PLANS.VPN_BUSINESS]: null,
443             },
444         },
445         {
446             name: 'advanced-alias-features',
447             plans: {
448                 [PLANS.FREE]: null,
449                 [PLANS.BUNDLE]: getAdvancedAliasFeatures(true),
450                 [PLANS.MAIL]: null,
451                 [PLANS.VPN]: null,
452                 [PLANS.DRIVE]: null,
453                 [PLANS.DRIVE_BUSINESS]: null,
454                 [PLANS.PASS]: getAdvancedAliasFeatures(true),
455                 [PLANS.PASS_FAMILY]: getAdvancedAliasFeatures(true),
456                 [PLANS.WALLET]: null,
457                 [PLANS.FAMILY]: getAdvancedAliasFeatures(true),
458                 [PLANS.DUO]: getAdvancedAliasFeatures(true),
459                 [PLANS.MAIL_PRO]: null,
460                 [PLANS.MAIL_BUSINESS]: null,
461                 [PLANS.BUNDLE_PRO]: getAdvancedAliasFeatures(true),
462                 [PLANS.BUNDLE_PRO_2024]: getAdvancedAliasFeatures(true),
463                 [PLANS.PASS_PRO]: getAdvancedAliasFeatures(true),
464                 [PLANS.PASS_BUSINESS]: getAdvancedAliasFeatures(true),
465                 [PLANS.VPN_PRO]: null,
466                 [PLANS.VPN_BUSINESS]: null,
467             },
468         },
469         {
470             name: 'vault-and-item-sharing',
471             plans: {
472                 [PLANS.FREE]: getVaultSharing(FREE_VAULT_SHARING),
473                 [PLANS.BUNDLE]: getVaultSharing(PASS_PLUS_VAULT_SHARING),
474                 [PLANS.MAIL]: getVaultSharing(FREE_VAULT_SHARING),
475                 [PLANS.VPN]: getVaultSharing(FREE_VAULT_SHARING),
476                 [PLANS.DRIVE]: getVaultSharing(FREE_VAULT_SHARING),
477                 [PLANS.DRIVE_BUSINESS]: getVaultSharing(FREE_VAULT_SHARING),
478                 [PLANS.PASS]: getVaultSharing(PASS_PLUS_VAULT_SHARING),
479                 [PLANS.PASS_FAMILY]: getVaultSharing(PASS_PLUS_VAULT_SHARING),
480                 [PLANS.WALLET]: getVaultSharing(FREE_VAULT_SHARING),
481                 [PLANS.FAMILY]: getVaultSharing(PASS_PLUS_VAULT_SHARING),
482                 [PLANS.DUO]: getVaultSharing(PASS_PLUS_VAULT_SHARING),
483                 [PLANS.MAIL_PRO]: getVaultSharing(FREE_VAULT_SHARING),
484                 [PLANS.MAIL_BUSINESS]: getVaultSharing(FREE_VAULT_SHARING),
485                 [PLANS.BUNDLE_PRO]: getVaultSharing(PASS_PLUS_VAULT_SHARING),
486                 [PLANS.BUNDLE_PRO_2024]: getVaultSharing(PASS_PLUS_VAULT_SHARING),
487                 [PLANS.PASS_PRO]: getVaultSharing(PASS_PRO_VAULT_SHARING),
488                 [PLANS.PASS_BUSINESS]: getVaultSharing(PASS_BIZ_VAULT_SHARING),
489                 [PLANS.VPN_PRO]: null,
490                 [PLANS.VPN_BUSINESS]: null,
491             },
492         },
493         {
494             name: 'secure-link',
495             plans: {
496                 [PLANS.FREE]: null,
497                 [PLANS.BUNDLE]: getLinkSharing(),
498                 [PLANS.MAIL]: null,
499                 [PLANS.VPN]: null,
500                 [PLANS.DRIVE]: null,
501                 [PLANS.DRIVE_BUSINESS]: null,
502                 [PLANS.PASS]: getLinkSharing(),
503                 [PLANS.PASS_FAMILY]: getLinkSharing(),
504                 [PLANS.WALLET]: null,
505                 [PLANS.FAMILY]: getLinkSharing(),
506                 [PLANS.DUO]: getLinkSharing(),
507                 [PLANS.MAIL_PRO]: null,
508                 [PLANS.MAIL_BUSINESS]: null,
509                 [PLANS.BUNDLE_PRO]: getLinkSharing(),
510                 [PLANS.BUNDLE_PRO_2024]: getLinkSharing(),
511                 [PLANS.PASS_PRO]: getLinkSharing(),
512                 [PLANS.PASS_BUSINESS]: getLinkSharing(),
513                 [PLANS.VPN_PRO]: null,
514                 [PLANS.VPN_BUSINESS]: null,
515             },
516         },
517         {
518             name: '2fa-authenticator',
519             plans: {
520                 [PLANS.FREE]: get2FAAuthenticator(),
521                 [PLANS.BUNDLE]: get2FAAuthenticator(true),
522                 [PLANS.MAIL]: get2FAAuthenticator(),
523                 [PLANS.VPN]: get2FAAuthenticator(),
524                 [PLANS.DRIVE]: get2FAAuthenticator(),
525                 [PLANS.DRIVE_BUSINESS]: get2FAAuthenticator(),
526                 [PLANS.PASS]: get2FAAuthenticator(true),
527                 [PLANS.PASS_FAMILY]: get2FAAuthenticator(true),
528                 [PLANS.WALLET]: get2FAAuthenticator(),
529                 [PLANS.FAMILY]: get2FAAuthenticator(true),
530                 [PLANS.DUO]: get2FAAuthenticator(true),
531                 [PLANS.MAIL_PRO]: get2FAAuthenticator(),
532                 [PLANS.MAIL_BUSINESS]: get2FAAuthenticator(),
533                 [PLANS.BUNDLE_PRO]: get2FAAuthenticator(true),
534                 [PLANS.BUNDLE_PRO_2024]: get2FAAuthenticator(true),
535                 [PLANS.PASS_PRO]: get2FAAuthenticator(true),
536                 [PLANS.PASS_BUSINESS]: get2FAAuthenticator(true),
537                 [PLANS.VPN_PRO]: null,
538                 [PLANS.VPN_BUSINESS]: null,
539             },
540         },
541         {
542             name: 'forwarding-mailboxes',
543             plans: {
544                 [PLANS.FREE]: getCustomFields(),
545                 [PLANS.BUNDLE]: getCustomFields(true),
546                 [PLANS.MAIL]: getCustomFields(),
547                 [PLANS.VPN]: getCustomFields(),
548                 [PLANS.DRIVE]: getCustomFields(),
549                 [PLANS.DRIVE_BUSINESS]: getCustomFields(),
550                 [PLANS.PASS]: getCustomFields(true),
551                 [PLANS.PASS_FAMILY]: getCustomFields(true),
552                 [PLANS.WALLET]: getCustomFields(),
553                 [PLANS.FAMILY]: getCustomFields(true),
554                 [PLANS.DUO]: getCustomFields(true),
555                 [PLANS.MAIL_PRO]: getCustomFields(),
556                 [PLANS.MAIL_BUSINESS]: getCustomFields(),
557                 [PLANS.BUNDLE_PRO]: getCustomFields(true),
558                 [PLANS.BUNDLE_PRO_2024]: getCustomFields(true),
559                 [PLANS.PASS_PRO]: getCustomFields(true),
560                 [PLANS.PASS_BUSINESS]: getCustomFields(true),
561                 [PLANS.VPN_PRO]: null,
562                 [PLANS.VPN_BUSINESS]: null,
563             },
564         },
565         {
566             name: 'group-management',
567             plans: {
568                 [PLANS.FREE]: null,
569                 [PLANS.BUNDLE]: null,
570                 [PLANS.MAIL]: null,
571                 [PLANS.VPN]: null,
572                 [PLANS.DRIVE]: null,
573                 [PLANS.DRIVE_BUSINESS]: null,
574                 [PLANS.PASS]: null,
575                 [PLANS.PASS_FAMILY]: null,
576                 [PLANS.WALLET]: null,
577                 [PLANS.FAMILY]: null,
578                 [PLANS.DUO]: null,
579                 [PLANS.MAIL_PRO]: null,
580                 [PLANS.MAIL_BUSINESS]: null,
581                 [PLANS.BUNDLE_PRO]: null,
582                 [PLANS.BUNDLE_PRO_2024]: null,
583                 [PLANS.PASS_PRO]: getGroupManagement(),
584                 [PLANS.PASS_BUSINESS]: getGroupManagement(true),
585                 [PLANS.VPN_PRO]: null,
586                 [PLANS.VPN_BUSINESS]: null,
587             },
588         },
589         {
590             name: 'data-breach-monitoring',
591             plans: {
592                 [PLANS.FREE]: getDataBreachMonitoring(),
593                 [PLANS.BUNDLE]: getDataBreachMonitoring(true),
594                 [PLANS.MAIL]: getDataBreachMonitoring(),
595                 [PLANS.VPN]: getDataBreachMonitoring(),
596                 [PLANS.DRIVE]: getDataBreachMonitoring(),
597                 [PLANS.DRIVE_BUSINESS]: getDataBreachMonitoring(),
598                 [PLANS.PASS]: getDataBreachMonitoring(true),
599                 [PLANS.PASS_FAMILY]: getDataBreachMonitoring(true),
600                 [PLANS.WALLET]: getDataBreachMonitoring(),
601                 [PLANS.FAMILY]: getDataBreachMonitoring(true),
602                 [PLANS.DUO]: getDataBreachMonitoring(true),
603                 [PLANS.MAIL_PRO]: getDataBreachMonitoring(),
604                 [PLANS.MAIL_BUSINESS]: getDataBreachMonitoring(),
605                 [PLANS.BUNDLE_PRO]: getDataBreachMonitoring(true),
606                 [PLANS.BUNDLE_PRO_2024]: getDataBreachMonitoring(true),
607                 [PLANS.PASS_PRO]: getDataBreachMonitoring(true),
608                 [PLANS.PASS_BUSINESS]: getDataBreachMonitoring(true),
609                 [PLANS.VPN_PRO]: null,
610                 [PLANS.VPN_BUSINESS]: null,
611             },
612         },
613     ];
616 export const getPassIdentityFeature = (): PlanCardFeatureDefinition => {
617     return {
618         text: PASS_APP_NAME,
619         tooltip: c('new_plans: tooltip').t`Password management and identity protection`,
620         included: true,
621         icon: 'brand-proton-pass',
622     };