diff --git a/apps/meteor/client/views/admin/subscription/components/FeatureUsageCard.tsx b/apps/meteor/client/views/admin/subscription/components/FeatureUsageCard.tsx index 3e736062bd7d..a7a62abc18e9 100644 --- a/apps/meteor/client/views/admin/subscription/components/FeatureUsageCard.tsx +++ b/apps/meteor/client/views/admin/subscription/components/FeatureUsageCard.tsx @@ -11,7 +11,7 @@ type FeatureUsageCardProps = { export type CardProps = { title: string; - infoText?: string; + infoText?: string | ReactNode; upgradeButton?: ReactNode; }; diff --git a/apps/meteor/client/views/admin/subscription/components/InfoTextIconModal.tsx b/apps/meteor/client/views/admin/subscription/components/InfoTextIconModal.tsx index 9316949dcb66..4f7c186f4915 100644 --- a/apps/meteor/client/views/admin/subscription/components/InfoTextIconModal.tsx +++ b/apps/meteor/client/views/admin/subscription/components/InfoTextIconModal.tsx @@ -1,6 +1,6 @@ import { IconButton } from '@rocket.chat/fuselage'; import { useSetModal } from '@rocket.chat/ui-contexts'; -import type { ReactElement } from 'react'; +import type { ReactElement, ReactNode } from 'react'; import React, { memo } from 'react'; import { useTranslation } from 'react-i18next'; @@ -8,7 +8,7 @@ import GenericModal from '../../../../components/GenericModal'; export type InfoTextIconModalProps = { title: string; - infoText: string; + infoText: string | ReactNode; }; const InfoTextIconModal = ({ title, infoText }: InfoTextIconModalProps): ReactElement => { diff --git a/apps/meteor/client/views/admin/subscription/components/cards/AppsUsageCard.tsx b/apps/meteor/client/views/admin/subscription/components/cards/AppsUsageCard.tsx index dbd402ef2c7f..4bce3653838e 100644 --- a/apps/meteor/client/views/admin/subscription/components/cards/AppsUsageCard.tsx +++ b/apps/meteor/client/views/admin/subscription/components/cards/AppsUsageCard.tsx @@ -1,7 +1,7 @@ import { Box, ProgressBar, Skeleton } from '@rocket.chat/fuselage'; import type { ReactElement } from 'react'; import React from 'react'; -import { useTranslation } from 'react-i18next'; +import { Trans, useTranslation } from 'react-i18next'; import type { CardProps } from '../FeatureUsageCard'; import FeatureUsageCard from '../FeatureUsageCard'; @@ -25,7 +25,15 @@ const AppsUsageCard = ({ privateAppsLimit, marketplaceAppsLimit }: AppsUsageCard const card: CardProps = { title: t('Apps'), - infoText: t('Apps_InfoText'), + infoText: ( + + Community workspaces can enable up to 5 marketplace apps. Private apps can only be enabled in + + premium plans + + . + + ), ...((marketplaceAppsPercentage || 0) >= 80 && { upgradeButton: ( diff --git a/packages/i18n/src/locales/en.i18n.json b/packages/i18n/src/locales/en.i18n.json index ea7e31422cb1..272afe7e8bab 100644 --- a/packages/i18n/src/locales/en.i18n.json +++ b/packages/i18n/src/locales/en.i18n.json @@ -6467,7 +6467,7 @@ "MAC_InfoText": "(MAC) the number of unique omnichannel contacts engaged with during the billing month.", "CountMAC_InfoText": "(MAC) the number of unique omnichannel contacts engaged with during the calendar month.", "ActiveSessions_InfoText": "Total concurrent connections. A single user can be connected multiple times. User presence service is disabled at 200 or more to prevent performance issues.", - "Apps_InfoText": "Community allows up to 3 private apps and 5 marketplace apps to be enabled", + "Apps_InfoText": "Community workspaces can enable up to 5 marketplace apps. Private apps can only be enabled in <1>premium plans.", "Remove_RocketChat_Watermark_InfoText": "Watermark is automatically removed when a paid license is active.", "Remove_RocketChat_Watermark": "Remove Rocket.Chat watermark", "High_scalabaility": "High scalabaility",