From 0c923acbe398869bca950e76e1734bd1ac672b8a Mon Sep 17 00:00:00 2001 From: Gao Sun Date: Mon, 13 Nov 2023 12:21:24 +0800 Subject: [PATCH] refactor(console): update pro and beta tags (#4852) * refactor(console): update pro and beta tags * refactor(console): update feature tag for dev tenants * refactor: apply code review suggestions --- .vscode/settings.json | 1 + .../CreateConnectorForm/index.module.scss | 2 + .../components/CreateConnectorForm/index.tsx | 4 +- .../components/FeatureTag/index.module.scss | 16 ++++ .../src/components/FeatureTag/index.tsx | 89 +++++++++++++++++++ .../src/components/FormCard/index.module.scss | 1 + .../Guide/GuideCard/index.module.scss | 2 +- .../src/components/Guide/GuideCard/index.tsx | 7 +- .../components/InlineUpsell/index.module.scss | 5 ++ .../src/components/InlineUpsell/index.tsx | 43 +++++++++ .../src/components/ProTag/index.module.scss | 11 --- .../console/src/components/ProTag/index.tsx | 25 ------ .../TenantNotificationContainer/index.tsx | 4 +- .../src/containers/ConsoleContent/index.tsx | 2 +- .../console/src/contexts/TenantsProvider.tsx | 4 +- .../src/ds-components/CardTitle/index.tsx | 11 ++- .../components/CreateForm/index.tsx | 3 - .../components/GuideLibrary/index.module.scss | 4 +- .../components/GuideLibrary/index.tsx | 11 ++- .../components/TypeDescription/index.tsx | 30 ++++--- .../console/src/pages/GetStarted/index.tsx | 4 +- .../src/pages/Mfa/PageWrapper/index.tsx | 8 +- .../Roles/components/CreateRoleForm/index.tsx | 22 ++--- .../TenantDomainSettings/index.tsx | 30 +------ .../src/pages/TenantSettings/index.tsx | 3 +- .../translation/admin-console/upsell/index.ts | 3 +- .../admin-console/upsell/paywall.ts | 9 +- .../translation/admin-console/upsell/index.ts | 3 +- .../admin-console/upsell/paywall.ts | 6 +- .../translation/admin-console/upsell/index.ts | 1 - .../admin-console/upsell/paywall.ts | 9 +- .../translation/admin-console/upsell/index.ts | 1 - .../admin-console/upsell/paywall.ts | 9 +- .../translation/admin-console/upsell/index.ts | 1 - .../admin-console/upsell/paywall.ts | 9 +- .../translation/admin-console/upsell/index.ts | 1 - .../admin-console/upsell/paywall.ts | 9 +- .../translation/admin-console/upsell/index.ts | 1 - .../admin-console/upsell/paywall.ts | 9 +- .../translation/admin-console/upsell/index.ts | 1 - .../admin-console/upsell/paywall.ts | 9 +- .../translation/admin-console/upsell/index.ts | 1 - .../admin-console/upsell/paywall.ts | 9 +- .../translation/admin-console/upsell/index.ts | 1 - .../admin-console/upsell/paywall.ts | 9 +- .../translation/admin-console/upsell/index.ts | 1 - .../admin-console/upsell/paywall.ts | 9 +- .../translation/admin-console/upsell/index.ts | 1 - .../admin-console/upsell/paywall.ts | 9 +- .../translation/admin-console/upsell/index.ts | 1 - .../admin-console/upsell/paywall.ts | 9 +- .../translation/admin-console/upsell/index.ts | 1 - .../admin-console/upsell/paywall.ts | 9 +- .../translation/admin-console/upsell/index.ts | 1 - .../admin-console/upsell/paywall.ts | 9 +- .../core-kit/scss/_console-themes.scss | 2 + 56 files changed, 312 insertions(+), 183 deletions(-) create mode 100644 packages/console/src/components/FeatureTag/index.module.scss create mode 100644 packages/console/src/components/FeatureTag/index.tsx create mode 100644 packages/console/src/components/InlineUpsell/index.module.scss create mode 100644 packages/console/src/components/InlineUpsell/index.tsx delete mode 100644 packages/console/src/components/ProTag/index.module.scss delete mode 100644 packages/console/src/components/ProTag/index.tsx diff --git a/.vscode/settings.json b/.vscode/settings.json index 1c0626205..52fecd4b9 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -53,5 +53,6 @@ "withtyped", "sendgrid", "mailgun", + "upsell", ] } diff --git a/packages/console/src/components/CreateConnectorForm/index.module.scss b/packages/console/src/components/CreateConnectorForm/index.module.scss index eaef5b68f..41fcc0e8a 100644 --- a/packages/console/src/components/CreateConnectorForm/index.module.scss +++ b/packages/console/src/components/CreateConnectorForm/index.module.scss @@ -3,4 +3,6 @@ .standardLabel { font: var(--font-label-2); margin: _.unit(6) 0 _.unit(4); + display: flex; + gap: _.unit(2); } diff --git a/packages/console/src/components/CreateConnectorForm/index.tsx b/packages/console/src/components/CreateConnectorForm/index.tsx index 841f3fb86..af11c3e07 100644 --- a/packages/console/src/components/CreateConnectorForm/index.tsx +++ b/packages/console/src/components/CreateConnectorForm/index.tsx @@ -15,7 +15,7 @@ import useSubscriptionPlan from '@/hooks/use-subscription-plan'; import * as modalStyles from '@/scss/modal.module.scss'; import { getConnectorGroups } from '../../pages/Connectors/utils'; -import ProTag from '../ProTag'; +import FeatureTag from '../FeatureTag'; import ConnectorRadioGroup from './ConnectorRadioGroup'; import Footer from './Footer'; @@ -155,7 +155,7 @@ function CreateConnectorForm({ onClose, isOpen: isFormOpen, type }: Props) { <>
- +
+ * ``` + * + * Use as a paid plan tag: + * + * ```tsx + * // In a production tenant, the tag will be visible when there's no access to the feature + * + * + * // In a dev tenant, the tag will always be visible even if `isVisible` is `false` + * + * + * // For conditionally rendering the tag, usually in an iteration on a list which contains + * // both free and paid features + * {features.map((feature) => ( + * hasPaywall(feature) && + * + * ))} + * ``` + */ +function FeatureTag(props: Props) { + const { className, for: forType } = props; + const { isDevTenant } = useContext(TenantsContext); + + // Beta tag should always be visible. + if (forType === 'beta') { + return ( +
+ Beta +
+ ); + } + + const { isVisible, plan } = props; + + // Dev tenant should always see the tag since they have access to almost all features, and it's + // useful for developers to know which features need to be paid for in production. + if (!isDevTenant && !isVisible) { + return null; + } + + return
{plan}
; +} + +export default FeatureTag; diff --git a/packages/console/src/components/FormCard/index.module.scss b/packages/console/src/components/FormCard/index.module.scss index c1191f8fa..a8bbe6a5d 100644 --- a/packages/console/src/components/FormCard/index.module.scss +++ b/packages/console/src/components/FormCard/index.module.scss @@ -5,6 +5,7 @@ color: var(--color-neutral-variant-60); display: flex; align-items: center; + gap: _.unit(2); } .description { diff --git a/packages/console/src/components/Guide/GuideCard/index.module.scss b/packages/console/src/components/Guide/GuideCard/index.module.scss index 9548f8438..5300bcbed 100644 --- a/packages/console/src/components/Guide/GuideCard/index.module.scss +++ b/packages/console/src/components/Guide/GuideCard/index.module.scss @@ -45,7 +45,7 @@ .flexRow { display: flex; - align-items: center; + align-items: flex-start; // align name and the feature tag to the top justify-content: space-between; } diff --git a/packages/console/src/components/Guide/GuideCard/index.tsx b/packages/console/src/components/Guide/GuideCard/index.tsx index fd91145c6..4ec2c2e0f 100644 --- a/packages/console/src/components/Guide/GuideCard/index.tsx +++ b/packages/console/src/components/Guide/GuideCard/index.tsx @@ -3,7 +3,7 @@ import classNames from 'classnames'; import { Suspense, useCallback, useContext } from 'react'; import { type Guide, type GuideMetadata } from '@/assets/docs/guides/types'; -import ProTag from '@/components/ProTag'; +import FeatureTag from '@/components/FeatureTag'; import { isCloud } from '@/consts/env'; import { subscriptionPage } from '@/consts/pages'; import { TenantsContext } from '@/contexts/TenantsProvider'; @@ -39,6 +39,7 @@ function GuideCard({ data, onClick, hasBorder, hasButton }: Props) { metadata: { target, name, description }, } = data; + const hasPaywall = isCloud && target === ApplicationType.MachineToMachine; const isSubscriptionRequired = isM2mDisabled && target === ApplicationType.MachineToMachine; const buttonText = isSubscriptionRequired ? 'upsell.upgrade_plan' @@ -75,9 +76,7 @@ function GuideCard({ data, onClick, hasBorder, hasButton }: Props) {
{name}
- {target === ApplicationType.MachineToMachine && ( - - )} + {hasPaywall && }
{description} diff --git a/packages/console/src/components/InlineUpsell/index.module.scss b/packages/console/src/components/InlineUpsell/index.module.scss new file mode 100644 index 000000000..53e641421 --- /dev/null +++ b/packages/console/src/components/InlineUpsell/index.module.scss @@ -0,0 +1,5 @@ +@use '@/scss/underscore' as _; + +.notification { + padding: _.unit(6); +} diff --git a/packages/console/src/components/InlineUpsell/index.tsx b/packages/console/src/components/InlineUpsell/index.tsx new file mode 100644 index 000000000..1ca745cdf --- /dev/null +++ b/packages/console/src/components/InlineUpsell/index.tsx @@ -0,0 +1,43 @@ +import classNames from 'classnames'; +import { type TFuncKey } from 'i18next'; +import { Trans, useTranslation } from 'react-i18next'; + +import { contactEmailLink } from '@/consts'; +import InlineNotification from '@/ds-components/InlineNotification'; +import TextLink from '@/ds-components/TextLink'; +import useTenantPathname from '@/hooks/use-tenant-pathname'; + +import * as styles from './index.module.scss'; + +type Props = { + className?: string; + for: TFuncKey<'translation', 'admin_console.upsell.paywall'>; +}; + +/** Displays an inline notification that explains the paywall and links to the subscription page. */ +function InlineUpsell({ className, for: forFeature }: Props) { + const { t } = useTranslation(undefined, { keyPrefix: 'admin_console.upsell.paywall' }); + const { navigate } = useTenantPathname(); + + return ( + { + navigate('/tenant-settings/subscription'); + }} + > + , + }} + > + {t(forFeature)} + + + ); +} + +export default InlineUpsell; diff --git a/packages/console/src/components/ProTag/index.module.scss b/packages/console/src/components/ProTag/index.module.scss deleted file mode 100644 index e2d0d892c..000000000 --- a/packages/console/src/components/ProTag/index.module.scss +++ /dev/null @@ -1,11 +0,0 @@ -@use '@/scss/underscore' as _; - -.tag { - @include _.section-head-2; - display: inline-block; - background-color: var(--color-specific-tag-upsell); - border-radius: 10px; - padding: 0 _.unit(1) 0 _.unit(1.5); - color: var(--color-white); - margin: 0 _.unit(1); -} diff --git a/packages/console/src/components/ProTag/index.tsx b/packages/console/src/components/ProTag/index.tsx deleted file mode 100644 index 434d5c3b5..000000000 --- a/packages/console/src/components/ProTag/index.tsx +++ /dev/null @@ -1,25 +0,0 @@ -import classNames from 'classnames'; -import { useContext } from 'react'; - -import { isCloud, isDevFeaturesEnabled } from '@/consts/env'; -import { TenantsContext } from '@/contexts/TenantsProvider'; -import DynamicT from '@/ds-components/DynamicT'; - -import * as styles from './index.module.scss'; - -type Props = { - isVisibleInProdTenant: boolean; - className?: string; -}; - -function ProTag({ isVisibleInProdTenant, className }: Props) { - const { isDevTenant } = useContext(TenantsContext); - - return isCloud && ((isDevFeaturesEnabled && isDevTenant) || isVisibleInProdTenant) ? ( -
- -
- ) : null; -} - -export default ProTag; diff --git a/packages/console/src/containers/AppContent/TenantNotificationContainer/index.tsx b/packages/console/src/containers/AppContent/TenantNotificationContainer/index.tsx index 4402f4d36..be8af4a83 100644 --- a/packages/console/src/containers/AppContent/TenantNotificationContainer/index.tsx +++ b/packages/console/src/containers/AppContent/TenantNotificationContainer/index.tsx @@ -2,7 +2,7 @@ import { useContext } from 'react'; import MauExceededModal from '@/components/MauExceededModal'; import PaymentOverdueModal from '@/components/PaymentOverdueModal'; -import { isCloud, isDevFeaturesEnabled } from '@/consts/env'; +import { isCloud } from '@/consts/env'; import { TenantsContext } from '@/contexts/TenantsProvider'; function TenantNotificationContainer() { @@ -11,7 +11,7 @@ function TenantNotificationContainer() { // Todo @xiaoyijun remove isDevFeaturesEnabled when the dev tenant feature is ready // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing - if (!isCloud || isTenantSuspended || (isDevFeaturesEnabled && isDevTenant)) { + if (!isCloud || isTenantSuspended || isDevTenant) { return null; } diff --git a/packages/console/src/containers/ConsoleContent/index.tsx b/packages/console/src/containers/ConsoleContent/index.tsx index d6a3b9e3c..a51755c6c 100644 --- a/packages/console/src/containers/ConsoleContent/index.tsx +++ b/packages/console/src/containers/ConsoleContent/index.tsx @@ -187,7 +187,7 @@ function ConsoleContent() { } /> } /> } /> - {(!isDevFeaturesEnabled || !isDevTenant) && ( + {!isDevTenant && ( <> } /> } /> diff --git a/packages/console/src/contexts/TenantsProvider.tsx b/packages/console/src/contexts/TenantsProvider.tsx index b866b2500..289a941ff 100644 --- a/packages/console/src/contexts/TenantsProvider.tsx +++ b/packages/console/src/contexts/TenantsProvider.tsx @@ -7,7 +7,7 @@ import { useCallback, useMemo, createContext, useState } from 'react'; import { useMatch, useNavigate } from 'react-router-dom'; import { type TenantResponse } from '@/cloud/types/router'; -import { isCloud } from '@/consts/env'; +import { isCloud, isDevFeaturesEnabled } from '@/consts/env'; import { ReservedPlanId } from '@/consts/subscriptions'; /** @@ -181,7 +181,7 @@ function TenantsProvider({ children }: Props) { }, isInitComplete, currentTenantId, - isDevTenant: currentTenant?.tag === TenantTag.Development, + isDevTenant: isDevFeaturesEnabled && currentTenant?.tag === TenantTag.Development, currentTenant, currentTenantStatus, setCurrentTenantStatus, diff --git a/packages/console/src/ds-components/CardTitle/index.tsx b/packages/console/src/ds-components/CardTitle/index.tsx index 5b38820b7..11d68bf09 100644 --- a/packages/console/src/ds-components/CardTitle/index.tsx +++ b/packages/console/src/ds-components/CardTitle/index.tsx @@ -1,8 +1,10 @@ import type { AdminConsoleKey } from '@logto/phrases'; import classNames from 'classnames'; -import type { ReactElement, ReactNode } from 'react'; +import type { ReactElement } from 'react'; import { useTranslation } from 'react-i18next'; +import FeatureTag from '@/components/FeatureTag'; + import type DangerousRaw from '../DangerousRaw'; import DynamicT from '../DynamicT'; import TextLink from '../TextLink'; @@ -12,11 +14,12 @@ import * as styles from './index.module.scss'; export type Props = { title: AdminConsoleKey | ReactElement; subtitle?: AdminConsoleKey | ReactElement; - titleTag?: ReactNode; size?: 'small' | 'medium' | 'large'; learnMoreLink?: string; isWordWrapEnabled?: boolean; className?: string; + /** If a beta tag should be shown next to the title. */ + isBeta?: boolean; }; /** @@ -25,11 +28,11 @@ export type Props = { function CardTitle({ title, subtitle, - titleTag, size = 'large', isWordWrapEnabled = false, learnMoreLink, className, + isBeta, }: Props) { const { t } = useTranslation(undefined, { keyPrefix: 'admin_console' }); @@ -37,7 +40,7 @@ function CardTitle({
{typeof title === 'string' ? : title} - {titleTag} + {isBeta && }
{Boolean(subtitle ?? learnMoreLink) && (
diff --git a/packages/console/src/pages/Applications/components/CreateForm/index.tsx b/packages/console/src/pages/Applications/components/CreateForm/index.tsx index d282bbb74..7b5148fb1 100644 --- a/packages/console/src/pages/Applications/components/CreateForm/index.tsx +++ b/packages/console/src/pages/Applications/components/CreateForm/index.tsx @@ -118,9 +118,6 @@ function CreateForm({ defaultCreateType, defaultCreateFrameworkName, onClose }: title={t(`${applicationTypeI18nKey[type]}.title`)} subtitle={t(`${applicationTypeI18nKey[type]}.subtitle`)} description={t(`${applicationTypeI18nKey[type]}.description`)} - hasProTag={ - type === ApplicationType.MachineToMachine && isMachineToMachineDisabled - } /> ))} diff --git a/packages/console/src/pages/Applications/components/GuideLibrary/index.module.scss b/packages/console/src/pages/Applications/components/GuideLibrary/index.module.scss index 7c219f548..b6def0ea7 100644 --- a/packages/console/src/pages/Applications/components/GuideLibrary/index.module.scss +++ b/packages/console/src/pages/Applications/components/GuideLibrary/index.module.scss @@ -53,8 +53,8 @@ .proTag { position: absolute; - right: 0; - bottom: 2px; + right: -2px; + bottom: 0; z-index: 1; } } diff --git a/packages/console/src/pages/Applications/components/GuideLibrary/index.tsx b/packages/console/src/pages/Applications/components/GuideLibrary/index.tsx index 51a237c87..ddc38c318 100644 --- a/packages/console/src/pages/Applications/components/GuideLibrary/index.tsx +++ b/packages/console/src/pages/Applications/components/GuideLibrary/index.tsx @@ -5,10 +5,10 @@ import { useTranslation } from 'react-i18next'; import SearchIcon from '@/assets/icons/search.svg'; import EmptyDataPlaceholder from '@/components/EmptyDataPlaceholder'; +import FeatureTag from '@/components/FeatureTag'; import { type SelectedGuide } from '@/components/Guide/GuideCard'; import GuideCardGroup from '@/components/Guide/GuideCardGroup'; import { useAppGuideMetadata } from '@/components/Guide/hooks'; -import ProTag from '@/components/ProTag'; import { isCloud } from '@/consts/env'; import { TenantsContext } from '@/contexts/TenantsProvider'; import { CheckboxGroup } from '@/ds-components/Checkbox'; @@ -40,7 +40,7 @@ function GuideLibrary({ className, hasCardBorder, hasCardButton, hasFilters }: P const { currentTenantId } = useContext(TenantsContext); const { data: currentPlan } = useSubscriptionPlan(currentTenantId); - const isM2mDisabledForCurrentPlan = isCloud && currentPlan?.quota.machineToMachineLimit === 0; + const isM2mDisabledForCurrentPlan = isCloud && !currentPlan?.quota.machineToMachineLimit; const structuredMetadata = useMemo( () => getStructuredAppGuideMetadata({ categories: filterCategories }), @@ -101,9 +101,12 @@ function GuideLibrary({ className, hasCardBorder, hasCardButton, hasFilters }: P setFilterCategories(sortedValue); }} /> -
diff --git a/packages/console/src/pages/Applications/components/TypeDescription/index.tsx b/packages/console/src/pages/Applications/components/TypeDescription/index.tsx index aa09de32f..40a537dd3 100644 --- a/packages/console/src/pages/Applications/components/TypeDescription/index.tsx +++ b/packages/console/src/pages/Applications/components/TypeDescription/index.tsx @@ -1,8 +1,12 @@ -import type { ApplicationType } from '@logto/schemas'; +import { ApplicationType } from '@logto/schemas'; import classNames from 'classnames'; +import { useContext } from 'react'; import ApplicationIcon from '@/components/ApplicationIcon'; -import ProTag from '@/components/ProTag'; +import FeatureTag from '@/components/FeatureTag'; +import { isCloud } from '@/consts/env'; +import { TenantsContext } from '@/contexts/TenantsProvider'; +import useSubscriptionPlan from '@/hooks/use-subscription-plan'; import * as styles from './index.module.scss'; @@ -12,26 +16,26 @@ type Props = { description: string; type: ApplicationType; size?: 'large' | 'small'; - hasProTag?: boolean; }; -function TypeDescription({ - title, - subtitle, - description, - type, - size = 'large', - hasProTag = false, -}: Props) { +function TypeDescription({ title, subtitle, description, type, size = 'large' }: Props) { + const { currentTenantId } = useContext(TenantsContext); + const { data: currentPlan } = useSubscriptionPlan(currentTenantId); + const hasPaywall = isCloud && type === ApplicationType.MachineToMachine; + return (
{title}
{subtitle}
{description}
- {hasProTag && ( + {hasPaywall && (
- +
)}
diff --git a/packages/console/src/pages/GetStarted/index.tsx b/packages/console/src/pages/GetStarted/index.tsx index cfa24feac..79f18a79b 100644 --- a/packages/console/src/pages/GetStarted/index.tsx +++ b/packages/console/src/pages/GetStarted/index.tsx @@ -15,7 +15,7 @@ import GuideCardGroup from '@/components/Guide/GuideCardGroup'; import { useApiGuideMetadata, useAppGuideMetadata } from '@/components/Guide/hooks'; import PageMeta from '@/components/PageMeta'; import { ConnectorsTabs } from '@/consts'; -import { isCloud, isDevFeaturesEnabled } from '@/consts/env'; +import { isCloud } from '@/consts/env'; import { AppDataContext } from '@/contexts/AppDataProvider'; import { TenantsContext } from '@/contexts/TenantsProvider'; import { LinkButton } from '@/ds-components/Button'; @@ -110,7 +110,7 @@ function GetStarted() {
{t('get_started.title')}
{t('get_started.subtitle')}
- {isDevFeaturesEnabled && isCloud && isDevTenant && } + {isCloud && isDevTenant && }
{t('get_started.develop.title')}
- } - subtitle="mfa.description" - className={styles.cardTitle} - /> + {children}
); diff --git a/packages/console/src/pages/Roles/components/CreateRoleForm/index.tsx b/packages/console/src/pages/Roles/components/CreateRoleForm/index.tsx index aadbe8803..48c76019b 100644 --- a/packages/console/src/pages/Roles/components/CreateRoleForm/index.tsx +++ b/packages/console/src/pages/Roles/components/CreateRoleForm/index.tsx @@ -9,11 +9,10 @@ import { Trans, useTranslation } from 'react-i18next'; import KeyboardArrowDown from '@/assets/icons/keyboard-arrow-down.svg'; import KeyboardArrowUp from '@/assets/icons/keyboard-arrow-up.svg'; import ContactUsPhraseLink from '@/components/ContactUsPhraseLink'; +import FeatureTag from '@/components/FeatureTag'; import PlanName from '@/components/PlanName'; -import ProTag from '@/components/ProTag'; import QuotaGuardFooter from '@/components/QuotaGuardFooter'; import RoleScopesTransfer from '@/components/RoleScopesTransfer'; -import { isCloud } from '@/consts/env'; import { TenantsContext } from '@/contexts/TenantsProvider'; import Button from '@/ds-components/Button'; import DynamicT from '@/ds-components/DynamicT'; @@ -29,9 +28,11 @@ import { hasReachedQuotaLimit } from '@/utils/quota'; import * as styles from './index.module.scss'; -const radioOptions: Array<{ key: AdminConsoleKey; value: RoleType; proTagCheck: boolean }> = [ - { key: 'roles.type_user', value: RoleType.User, proTagCheck: false }, - { key: 'roles.type_machine_to_machine', value: RoleType.MachineToMachine, proTagCheck: true }, +type RadioOption = { key: AdminConsoleKey; value: RoleType; hasPaywall: boolean }; + +const radioOptions: RadioOption[] = [ + { key: 'roles.type_user', value: RoleType.User, hasPaywall: false }, + { key: 'roles.type_machine_to_machine', value: RoleType.MachineToMachine, hasPaywall: true }, ]; export type Props = { @@ -52,7 +53,6 @@ function CreateRoleForm({ totalRoleCount, onClose }: Props) { const [isTypeSelectorVisible, setIsTypeSelectorVisible] = useState(false); const { t } = useTranslation(undefined, { keyPrefix: 'admin_console' }); const { data: currentPlan } = useSubscriptionPlan(currentTenantId); - const isM2mDisabledForCurrentPlan = isCloud && currentPlan?.quota.machineToMachineLimit === 0; const { control, handleSubmit, @@ -216,15 +216,17 @@ function CreateRoleForm({ totalRoleCount, onClose }: Props) { onChange(value); }} > - {radioOptions.map(({ key, value, proTagCheck }) => ( + {radioOptions.map(({ key, value, hasPaywall }) => ( } value={value} trailingIcon={ - proTagCheck && ( - ) diff --git a/packages/console/src/pages/TenantSettings/TenantDomainSettings/index.tsx b/packages/console/src/pages/TenantSettings/TenantDomainSettings/index.tsx index cfce9471f..6142abfe4 100644 --- a/packages/console/src/pages/TenantSettings/TenantDomainSettings/index.tsx +++ b/packages/console/src/pages/TenantSettings/TenantDomainSettings/index.tsx @@ -1,19 +1,15 @@ import { withAppInsights } from '@logto/app-insights/react'; import { useContext } from 'react'; -import { Trans, useTranslation } from 'react-i18next'; +import FeatureTag from '@/components/FeatureTag'; import FormCard from '@/components/FormCard'; +import InlineUpsell from '@/components/InlineUpsell'; import PageMeta from '@/components/PageMeta'; -import ProTag from '@/components/ProTag'; -import { contactEmailLink } from '@/consts'; import { TenantsContext } from '@/contexts/TenantsProvider'; import FormField from '@/ds-components/FormField'; -import InlineNotification from '@/ds-components/InlineNotification'; -import TextLink from '@/ds-components/TextLink'; import useCustomDomain from '@/hooks/use-custom-domain'; import useDocumentationUrl from '@/hooks/use-documentation-url'; import useSubscriptionPlan from '@/hooks/use-subscription-plan'; -import useTenantPathname from '@/hooks/use-tenant-pathname'; import Skeleton from '../components/Skeleton'; @@ -28,8 +24,6 @@ function TenantDomainSettings() { const { data: currentPlan, error: fetchCurrentPlanError } = useSubscriptionPlan(currentTenantId); const isLoadingCurrentPlan = !currentPlan && !fetchCurrentPlanError; const { getDocumentationUrl } = useDocumentationUrl(); - const { t } = useTranslation(undefined, { keyPrefix: 'admin_console' }); - const { navigate } = useTenantPathname(); if (isLoadingCustomDomain || isLoadingCurrentPlan) { return ; @@ -47,7 +41,7 @@ function TenantDomainSettings() { } + tag={} description="domain.custom.custom_domain_description" learnMoreLink={getDocumentationUrl('docs/recipes/custom-domain')} > @@ -61,23 +55,7 @@ function TenantDomainSettings() { /> )} {!customDomain && !customDomainEnabled && ( - { - navigate('/tenant-settings/subscription'); - }} - > - , - }} - > - {t('upsell.paywall.custom_domain')} - - + )} diff --git a/packages/console/src/pages/TenantSettings/index.tsx b/packages/console/src/pages/TenantSettings/index.tsx index dd0f83ebf..6e6f1a006 100644 --- a/packages/console/src/pages/TenantSettings/index.tsx +++ b/packages/console/src/pages/TenantSettings/index.tsx @@ -2,7 +2,6 @@ import { useContext } from 'react'; import { Outlet } from 'react-router-dom'; import { TenantSettingsTabs } from '@/consts'; -import { isDevFeaturesEnabled } from '@/consts/env'; import { TenantsContext } from '@/contexts/TenantsProvider'; import CardTitle from '@/ds-components/CardTitle'; import DynamicT from '@/ds-components/DynamicT'; @@ -26,7 +25,7 @@ function TenantSettings() { - {(!isDevFeaturesEnabled || !isDevTenant) && ( + {!isDevTenant && ( <> diff --git a/packages/phrases/src/locales/de/translation/admin-console/upsell/index.ts b/packages/phrases/src/locales/de/translation/admin-console/upsell/index.ts index d2266e727..0713fbff1 100644 --- a/packages/phrases/src/locales/de/translation/admin-console/upsell/index.ts +++ b/packages/phrases/src/locales/de/translation/admin-console/upsell/index.ts @@ -1,8 +1,7 @@ import paywall from './paywall.js'; const upsell = { - pro_tag: 'PRO', - upgrade_plan: 'Upgrade Plan', + upgrade_plan: 'Upgrade plan', compare_plans: 'Pläne vergleichen', create_tenant: { title: 'Wählen Sie Ihren Tenant-Plan aus', diff --git a/packages/phrases/src/locales/de/translation/admin-console/upsell/paywall.ts b/packages/phrases/src/locales/de/translation/admin-console/upsell/paywall.ts index 923a287fd..ae115da87 100644 --- a/packages/phrases/src/locales/de/translation/admin-console/upsell/paywall.ts +++ b/packages/phrases/src/locales/de/translation/admin-console/upsell/paywall.ts @@ -3,8 +3,9 @@ const paywall = { '{{count, number}} Anwendung von erreicht. Plan upgraden, um den Bedürfnissen Ihres Teams gerecht zu werden. Für Unterstützung können Sie uns gerne kontaktieren.', applications_other: '{{count, number}} Anwendungen von erreicht. Plan upgraden, um den Bedürfnissen Ihres Teams gerecht zu werden. Für Unterstützung können Sie uns gerne kontaktieren.', + /** UNTRANSLATED */ machine_to_machine_feature: - 'Upgraden Sie auf einen kostenpflichtigen Tarif, um eine Maschinen-zu-Maschinen-Anwendung zu erstellen und Zugriff auf alle Premium-Funktionen zu erhalten. Für Unterstützung können Sie uns gerne kontaktieren.', + 'Upgrade to the Hobby plan to unlock 1 machine-to-machine application, or choose the Pro plan for unlimited usage. For any assistance, feel free to contact us.', machine_to_machine: '{{count, number}} Maschine-zu-Maschine-Anwendung von erreicht. Plan upgraden, um den Bedürfnissen Ihres Teams gerecht zu werden. Für Unterstützung können Sie uns gerne kontaktieren.', machine_to_machine_other: @@ -17,14 +18,16 @@ const paywall = { 'Sie haben das Limit von {{count, number}} Berechtigungen pro API-Ressource von erreicht. Upgraden Sie jetzt, um zu erweitern. Kontaktieren Sie uns bei Bedarf.', scopes_per_resource_other: 'Sie haben das Limit von {{count, number}} Berechtigungen pro API-Ressource von erreicht. Upgraden Sie jetzt, um zu erweitern. Kontaktieren Sie uns bei Bedarf.', + /** UNTRANSLATED */ custom_domain: - 'Schalten Sie die Funktion für individuelle Domains frei und profitieren Sie von einer Reihe von Premium-Vorteilen, indem Sie auf einen kostenpflichtigen Plan upgraden. Zögern Sie nicht, Kontaktieren Sie uns, wenn Sie Hilfe benötigen.', + 'Unlock custom domain functionality by upgrading to Hobby or Pro plan. Don’t hesitate to contact us if you need any assistance.', social_connectors: 'Sie haben das Limit von {{count, number}} -Sozialconnectoren erreicht. Upgraden Sie Ihren Plan, um zusätzliche Sozialconnectoren und die Möglichkeit zur Erstellung eigener Connectoren mit OIDC, OAuth 2.0 und SAML-Protokollen zu erhalten. Zögern Sie nicht, Kontaktieren Sie uns, wenn Sie Hilfe benötigen.', social_connectors_other: 'Sie haben das Limit von {{count, number}} -Sozialconnectoren erreicht. Upgraden Sie Ihren Plan, um zusätzliche Sozialconnectoren und die Möglichkeit zur Erstellung eigener Connectoren mit OIDC, OAuth 2.0 und SAML-Protokollen zu erhalten. Zögern Sie nicht, Kontaktieren Sie uns, wenn Sie Hilfe benötigen.', + /** UNTRANSLATED */ standard_connectors_feature: - 'Upgraden Sie auf einen kostenpflichtigen Plan, um eigene Connectoren mit OIDC, OAuth 2.0 und SAML-Protokollen zu erstellen, sowie unbegrenzte Sozialconnectoren und alle Premium-Funktionen zu erhalten. Zögern Sie nicht, Kontaktieren Sie uns, wenn Sie Hilfe benötigen.', + 'Upgrade to the Hobby or Pro plan to create your own connectors using OIDC, OAuth 2.0, and SAML protocols, plus unlimited social connectors and all the premium features. Feel free to contact us if you need any assistance.', standard_connectors: 'Sie haben das Limit von {{count, number}} -Sozialconnectoren erreicht. Upgraden Sie Ihren Plan, um zusätzliche Sozialconnectoren und die Möglichkeit zur Erstellung eigener Connectoren mit OIDC, OAuth 2.0 und SAML-Protokollen zu erhalten. Zögern Sie nicht, Kontaktieren Sie uns, wenn Sie Hilfe benötigen.', standard_connectors_other: diff --git a/packages/phrases/src/locales/en/translation/admin-console/upsell/index.ts b/packages/phrases/src/locales/en/translation/admin-console/upsell/index.ts index 38f8ef965..c1e233caf 100644 --- a/packages/phrases/src/locales/en/translation/admin-console/upsell/index.ts +++ b/packages/phrases/src/locales/en/translation/admin-console/upsell/index.ts @@ -1,8 +1,7 @@ import paywall from './paywall.js'; const upsell = { - pro_tag: 'PRO', - upgrade_plan: 'Upgrade Plan', + upgrade_plan: 'Upgrade plan', compare_plans: 'Compare plans', create_tenant: { title: 'Select your tenant plan', diff --git a/packages/phrases/src/locales/en/translation/admin-console/upsell/paywall.ts b/packages/phrases/src/locales/en/translation/admin-console/upsell/paywall.ts index 3e5711b07..3d3df101c 100644 --- a/packages/phrases/src/locales/en/translation/admin-console/upsell/paywall.ts +++ b/packages/phrases/src/locales/en/translation/admin-console/upsell/paywall.ts @@ -4,7 +4,7 @@ const paywall = { applications_other: '{{count, number}} applications of limit reached. Upgrade plan to meet your team’s needs. For any assistance, feel free to contact us.', machine_to_machine_feature: - 'Upgrade to a paid plan to create machine-to-machine application, along with access to all the premium features. For any assistance, feel free to contact us.', + 'Upgrade to the Hobby plan to unlock 1 machine-to-machine application, or choose the Pro plan for unlimited usage. For any assistance, feel free to contact us.', machine_to_machine: '{{count, number}} machine-to-machine application of limit reached. Upgrade plan to meet your team’s needs. For any assistance, feel free to contact us.', machine_to_machine_other: @@ -18,13 +18,13 @@ const paywall = { scopes_per_resource_other: '{{count, number}} permissions per API resource of limit reached. Upgrade now to expand. Contact us for any assistant.', custom_domain: - 'Unlock custom domain functionality and a range of premium benefits by upgrading to a paid plan. Don’t hesitate to contact us if you need any assistance.', + 'Unlock custom domain functionality by upgrading to Hobby or Pro plan. Don’t hesitate to contact us if you need any assistance.', social_connectors: '{{count, number}} social connector of limit reached. To meet your team’s needs, upgrade plan for additional social connectors and the ability to create your own connectors using OIDC, OAuth 2.0, and SAML protocols. Feel free to contact us if you need any assistance.', social_connectors_other: '{{count, number}} social connectors of limit reached. To meet your team’s needs, upgrade plan for additional social connectors and the ability to create your own connectors using OIDC, OAuth 2.0, and SAML protocols. Feel free to contact us if you need any assistance.', standard_connectors_feature: - 'Upgrade to a paid plan to create your own connectors using OIDC, OAuth 2.0, and SAML protocols, plus unlimited social connectors and all the premium features. Feel free to contact us if you need any assistance.', + 'Upgrade to the Hobby or Pro plan to create your own connectors using OIDC, OAuth 2.0, and SAML protocols, plus unlimited social connectors and all the premium features. Feel free to contact us if you need any assistance.', standard_connectors: '{{count, number}} social connector of limit reached. To meet your team’s needs, upgrade plan for additional social connectors and the ability to create your own connectors using OIDC, OAuth 2.0, and SAML protocols. Feel free to contact us if you need any assistance.', standard_connectors_other: diff --git a/packages/phrases/src/locales/es/translation/admin-console/upsell/index.ts b/packages/phrases/src/locales/es/translation/admin-console/upsell/index.ts index 47ec18bd8..45cbb0f23 100644 --- a/packages/phrases/src/locales/es/translation/admin-console/upsell/index.ts +++ b/packages/phrases/src/locales/es/translation/admin-console/upsell/index.ts @@ -1,7 +1,6 @@ import paywall from './paywall.js'; const upsell = { - pro_tag: 'PRO', upgrade_plan: 'Plan de actualización', compare_plans: 'Comparar planes', create_tenant: { diff --git a/packages/phrases/src/locales/es/translation/admin-console/upsell/paywall.ts b/packages/phrases/src/locales/es/translation/admin-console/upsell/paywall.ts index 9222e123b..b452f8add 100644 --- a/packages/phrases/src/locales/es/translation/admin-console/upsell/paywall.ts +++ b/packages/phrases/src/locales/es/translation/admin-console/upsell/paywall.ts @@ -3,8 +3,9 @@ const paywall = { 'Se ha alcanzado el límite de {{count, number}} aplicación de . Actualiza el plan para satisfacer las necesidades de tu equipo. Para cualquier ayuda, no dudes en contactarnos.', applications_other: 'Se ha alcanzado el límite de {{count, number}} aplicaciones de . Actualiza el plan para satisfacer las necesidades de tu equipo. Para cualquier ayuda, no dudes en contactarnos.', + /** UNTRANSLATED */ machine_to_machine_feature: - 'Actualiza a un plan de pago para crear aplicaciones de máquina a máquina, junto con acceso a todas las funciones premium. Para cualquier ayuda, no dudes en contactarnos.', + 'Upgrade to the Hobby plan to unlock 1 machine-to-machine application, or choose the Pro plan for unlimited usage. For any assistance, feel free to contact us.', machine_to_machine: 'Se ha alcanzado el límite de {{count, number}} aplicación de máquina a máquina de . Actualiza el plan para satisfacer las necesidades de tu equipo. Para cualquier ayuda, no dudes en contactarnos.', machine_to_machine_other: @@ -17,14 +18,16 @@ const paywall = { 'Has alcanzado el límite de {{count, number}} permisos por recurso de API de . Actualiza ahora para expandirlo. Contáctanos si necesitas asistencia.', scopes_per_resource_other: 'Has alcanzado el límite de {{count, number}} permisos por recurso de API de . Actualiza ahora para expandirlo. Contáctanos si necesitas asistencia.', + /** UNTRANSLATED */ custom_domain: - 'Desbloquea la funcionalidad de dominio personalizado y una variedad de beneficios premium al actualizar a un plan de pago. No dudes en contactarnos si necesitas ayuda.', + 'Unlock custom domain functionality by upgrading to Hobby or Pro plan. Don’t hesitate to contact us if you need any assistance.', social_connectors: 'Has alcanzado el límite de {{count, number}} conectores sociales de . Actualiza el plan para obtener conectores sociales adicionales y la capacidad de crear tus propios conectores usando los protocolos OIDC, OAuth 2.0 y SAML. Si necesitas ayuda, no dudes en contactarnos.', social_connectors_other: 'Has alcanzado el límite de {{count, number}} conectores sociales de . Actualiza el plan para obtener conectores sociales adicionales y la capacidad de crear tus propios conectores usando los protocolos OIDC, OAuth 2.0 y SAML. Si necesitas ayuda, no dudes en contactarnos.', + /** UNTRANSLATED */ standard_connectors_feature: - 'Actualiza a un plan de pago para crear tus propios conectores usando los protocolos OIDC, OAuth 2.0 y SAML, además de obtener conectores sociales ilimitados y todas las funciones premium. Si necesitas ayuda, no dudes en contactarnos.', + 'Upgrade to the Hobby or Pro plan to create your own connectors using OIDC, OAuth 2.0, and SAML protocols, plus unlimited social connectors and all the premium features. Feel free to contact us if you need any assistance.', standard_connectors: 'Has alcanzado el límite de {{count, number}} conectores sociales de . Actualiza el plan para obtener conectores sociales adicionales y la capacidad de crear tus propios conectores usando los protocolos OIDC, OAuth 2.0 y SAML. Si necesitas ayuda, no dudes en contactarnos.', standard_connectors_other: diff --git a/packages/phrases/src/locales/fr/translation/admin-console/upsell/index.ts b/packages/phrases/src/locales/fr/translation/admin-console/upsell/index.ts index 3e46e389b..f42092d3e 100644 --- a/packages/phrases/src/locales/fr/translation/admin-console/upsell/index.ts +++ b/packages/phrases/src/locales/fr/translation/admin-console/upsell/index.ts @@ -1,7 +1,6 @@ import paywall from './paywall.js'; const upsell = { - pro_tag: 'PRO', upgrade_plan: 'Mettre à niveau le plan', compare_plans: 'Comparer les plans', create_tenant: { diff --git a/packages/phrases/src/locales/fr/translation/admin-console/upsell/paywall.ts b/packages/phrases/src/locales/fr/translation/admin-console/upsell/paywall.ts index 1dcee3b13..91969ad3b 100644 --- a/packages/phrases/src/locales/fr/translation/admin-console/upsell/paywall.ts +++ b/packages/phrases/src/locales/fr/translation/admin-console/upsell/paywall.ts @@ -3,8 +3,9 @@ const paywall = { "Limite de {{count, number}} application de atteinte. Mettez à niveau le plan pour répondre aux besoins de votre équipe. Pour toute assistance, n'hésitez pas à nous contacter.", applications_other: "Limite de {{count, number}} applications de atteinte. Mettez à niveau le plan pour répondre aux besoins de votre équipe. Pour toute assistance, n'hésitez pas à nous contacter.", + /** UNTRANSLATED */ machine_to_machine_feature: - "Passez à un abonnement payant pour créer des applications de machine à machine, ainsi que pour accéder à toutes les fonctionnalités premium. Pour toute assistance, n'hésitez pas à nous contacter.", + 'Upgrade to the Hobby plan to unlock 1 machine-to-machine application, or choose the Pro plan for unlimited usage. For any assistance, feel free to contact us.', machine_to_machine: "Limite de {{count, number}} application de machine à machine de atteinte. Mettez à niveau le plan pour répondre aux besoins de votre équipe. Pour toute assistance, n'hésitez pas à nous contacter.", machine_to_machine_other: @@ -17,14 +18,16 @@ const paywall = { 'Vous avez atteint la limite de {{count, number}} permission par ressource API de . Mettez à niveau maintenant pour étendre. Contactez-nous pour toute assistance.', scopes_per_resource_other: 'Vous avez atteint la limite de {{count, number}} permissions par ressource API de . Mettez à niveau maintenant pour étendre. Contactez-nous pour toute assistance.', + /** UNTRANSLATED */ custom_domain: - "Déverrouillez la fonctionnalité de domaine personnalisé et une gamme d'avantages premium en passant à un plan payant. N'hésitez pas à nous contacter si vous avez besoin d'aide.", + 'Unlock custom domain functionality by upgrading to Hobby or Pro plan. Don’t hesitate to contact us if you need any assistance.', social_connectors: "Vous avez atteint la limite de {{count, number}} connecteur social de . Pour répondre aux besoins de votre équipe, passez à un plan supérieur pour obtenir des connecteurs sociaux supplémentaires et la possibilité de créer vos propres connecteurs en utilisant les protocoles OIDC, OAuth 2.0 et SAML. N'hésitez pas à nous contacter si vous avez besoin d'aide.", social_connectors_other: "Vous avez atteint la limite de {{count, number}} connecteurs sociaux de . Pour répondre aux besoins de votre équipe, passez à un plan supérieur pour obtenir des connecteurs sociaux supplémentaires et la possibilité de créer vos propres connecteurs en utilisant les protocoles OIDC, OAuth 2.0 et SAML. N'hésitez pas à nous contacter si vous avez besoin d'aide.", + /** UNTRANSLATED */ standard_connectors_feature: - "Mettez à niveau vers un plan payant pour créer vos propres connecteurs en utilisant les protocoles OIDC, OAuth 2.0 et SAML, ainsi qu'un accès illimité aux connecteurs sociaux et à toutes les fonctionnalités premium. N'hésitez pas à nous contacter si vous avez besoin d'aide.", + 'Upgrade to the Hobby or Pro plan to create your own connectors using OIDC, OAuth 2.0, and SAML protocols, plus unlimited social connectors and all the premium features. Feel free to contact us if you need any assistance.', standard_connectors: "Vous avez atteint la limite de {{count, number}} connecteur social de . Pour répondre aux besoins de votre équipe, passez à un plan supérieur pour obtenir des connecteurs sociaux supplémentaires et la possibilité de créer vos propres connecteurs en utilisant les protocoles OIDC, OAuth 2.0 et SAML. N'hésitez pas à nous contacter si vous avez besoin d'aide.", standard_connectors_other: diff --git a/packages/phrases/src/locales/it/translation/admin-console/upsell/index.ts b/packages/phrases/src/locales/it/translation/admin-console/upsell/index.ts index b8711f82c..86bb2d3b9 100644 --- a/packages/phrases/src/locales/it/translation/admin-console/upsell/index.ts +++ b/packages/phrases/src/locales/it/translation/admin-console/upsell/index.ts @@ -1,7 +1,6 @@ import paywall from './paywall.js'; const upsell = { - pro_tag: 'PRO', upgrade_plan: 'Aggiorna piano', compare_plans: 'Confronta i piani', create_tenant: { diff --git a/packages/phrases/src/locales/it/translation/admin-console/upsell/paywall.ts b/packages/phrases/src/locales/it/translation/admin-console/upsell/paywall.ts index bd00ab0a0..41d6ab7c6 100644 --- a/packages/phrases/src/locales/it/translation/admin-console/upsell/paywall.ts +++ b/packages/phrases/src/locales/it/translation/admin-console/upsell/paywall.ts @@ -3,8 +3,9 @@ const paywall = { 'Limite di {{count, number}} applicazione di raggiunto. Aggiorna il piano per soddisfare le esigenze del tuo team. Per qualsiasi assistenza, non esitare a contattarci.', applications_other: 'Limite di {{count, number}} applicazioni di raggiunto. Aggiorna il piano per soddisfare le esigenze del tuo team. Per qualsiasi assistenza, non esitare a contattarci.', + /** UNTRANSLATED */ machine_to_machine_feature: - 'Aggiorna a un piano a pagamento per creare applicazioni machine-to-machine e accedere a tutte le funzionalità premium. Per qualsiasi assistenza, non esitare a contattarci.', + 'Upgrade to the Hobby plan to unlock 1 machine-to-machine application, or choose the Pro plan for unlimited usage. For any assistance, feel free to contact us.', machine_to_machine: 'Limite di {{count, number}} applicazione machine-to-machine di raggiunto. Aggiorna il piano per soddisfare le esigenze del tuo team. Per qualsiasi assistenza, non esitare a contattarci.', machine_to_machine_other: @@ -17,14 +18,16 @@ const paywall = { 'Hai raggiunto il limite di {{count, number}} autorizzazioni per risorsa API di . Aggiorna ora per espanderlo. Contattaci per qualsiasi assistenza.', scopes_per_resource_other: 'Hai raggiunto il limite di {{count, number}} autorizzazioni per risorsa API di . Aggiorna ora per espanderlo. Contattaci per qualsiasi assistenza.', + /** UNTRANSLATED */ custom_domain: - 'Sblocca la funzionalità di dominio personalizzato e una serie di vantaggi premium passando a un piano a pagamento. Non esitare a contattarci se hai bisogno di assistenza.', + 'Unlock custom domain functionality by upgrading to Hobby or Pro plan. Don’t hesitate to contact us if you need any assistance.', social_connectors: 'Hai raggiunto il limite di {{count, number}} connettori sociali di . Passa al piano per ottenere connettori sociali aggiuntivi e la possibilità di creare i tuoi connettori utilizzando i protocolli OIDC, OAuth 2.0 e SAML. Non esitare a contattarci se hai bisogno di assistenza.', social_connectors_other: 'Hai raggiunto il limite di {{count, number}} connettori sociali di . Passa al piano per ottenere connettori sociali aggiuntivi e la possibilità di creare i tuoi connettori utilizzando i protocolli OIDC, OAuth 2.0 e SAML. Non esitare a contattarci se hai bisogno di assistenza.', + /** UNTRANSLATED */ standard_connectors_feature: - 'Aggiorna a un piano a pagamento per creare i tuoi connettori utilizzando i protocolli OIDC, OAuth 2.0 e SAML, oltre a ottenere connettori sociali illimitati e tutte le funzionalità premium. Non esitare a contattarci se hai bisogno di assistenza.', + 'Upgrade to the Hobby or Pro plan to create your own connectors using OIDC, OAuth 2.0, and SAML protocols, plus unlimited social connectors and all the premium features. Feel free to contact us if you need any assistance.', standard_connectors: 'Hai raggiunto il limite di {{count, number}} connettori sociali di . Passa al piano per ottenere connettori sociali aggiuntivi e la possibilità di creare i tuoi connettori utilizzando i protocolli OIDC, OAuth 2.0 e SAML. Non esitare a contattarci se hai bisogno di assistenza.', standard_connectors_other: diff --git a/packages/phrases/src/locales/ja/translation/admin-console/upsell/index.ts b/packages/phrases/src/locales/ja/translation/admin-console/upsell/index.ts index 9b38df14e..d0d21eb30 100644 --- a/packages/phrases/src/locales/ja/translation/admin-console/upsell/index.ts +++ b/packages/phrases/src/locales/ja/translation/admin-console/upsell/index.ts @@ -1,7 +1,6 @@ import paywall from './paywall.js'; const upsell = { - pro_tag: 'プロ', upgrade_plan: 'プランをアップグレード', compare_plans: 'プラン比較', create_tenant: { diff --git a/packages/phrases/src/locales/ja/translation/admin-console/upsell/paywall.ts b/packages/phrases/src/locales/ja/translation/admin-console/upsell/paywall.ts index 9d7e971bf..361dcabb4 100644 --- a/packages/phrases/src/locales/ja/translation/admin-console/upsell/paywall.ts +++ b/packages/phrases/src/locales/ja/translation/admin-console/upsell/paywall.ts @@ -3,8 +3,9 @@ const paywall = { '{{count, number}}個のアプリケーション制限に達しました。チームのニーズに対応するため、プランをアップグレードしてください。サポートが必要な場合は、お気軽にお問い合わせください。', applications_other: '{{count, number}}個のアプリケーション制限に達しました。チームのニーズに対応するため、プランをアップグレードしてください。サポートが必要な場合は、お気軽にお問い合わせください。', + /** UNTRANSLATED */ machine_to_machine_feature: - '有料プランにアップグレードして、マシン間アプリケーションを作成し、すべてのプレミアム機能にアクセスしてください。サポートが必要な場合は、お気軽にお問い合わせください。', + 'Upgrade to the Hobby plan to unlock 1 machine-to-machine application, or choose the Pro plan for unlimited usage. For any assistance, feel free to contact us.', machine_to_machine: '{{count, number}}個のマシン間アプリケーション制限に達しました。チームのニーズに対応するため、プランをアップグレードしてください。サポートが必要な場合は、お気軽にお問い合わせください。', machine_to_machine_other: @@ -17,14 +18,16 @@ const paywall = { '{{count, number}}の APIリソースあたりの許可制限に達しました。拡張するには今すぐアップグレードしてください。お問い合わせは何かお手伝いが必要な場合はお気軽にどうぞ。', scopes_per_resource_other: '{{count, number}}の APIリソースあたりの許可制限に達しました。拡張するには今すぐアップグレードしてください。お問い合わせは何かお手伝いが必要な場合はお気軽にどうぞ。', + /** UNTRANSLATED */ custom_domain: - 'カスタムドメインの機能を利用するには、有料プランにアップグレードしてください。お手伝いが必要な場合は、お問い合わせください。', + 'Unlock custom domain functionality by upgrading to Hobby or Pro plan. Don’t hesitate to contact us if you need any assistance.', social_connectors: '{{count, number}}のソーシャルコネクタ制限に達しました。チームのニーズに合わせて有料プランにアップグレードして、OIDC、OAuth 2.0、およびSAMLプロトコルを使用して独自のコネクタを作成できるようにしましょう。お問い合わせは何かお手伝いが必要な場合はお気軽にどうぞ。', social_connectors_other: '{{count, number}}のソーシャルコネクタ制限に達しました。チームのニーズに合わせて有料プランにアップグレードして、OIDC、OAuth 2.0、およびSAMLプロトコルを使用して独自のコネクタを作成できるようにしましょう。お問い合わせは何かお手伝いが必要な場合はお気軽にどうぞ。', + /** UNTRANSLATED */ standard_connectors_feature: - 'OIDC、OAuth 2.0、およびSAMLプロトコルを使用して独自のコネクタを作成するには有料プランにアップグレードし、無制限のソーシャルコネクタとすべてのプレミアム機能にアクセスしましょう。お問い合わせは何かお手伝いが必要な場合はお気軽にどうぞ。', + 'Upgrade to the Hobby or Pro plan to create your own connectors using OIDC, OAuth 2.0, and SAML protocols, plus unlimited social connectors and all the premium features. Feel free to contact us if you need any assistance.', standard_connectors: '{{count, number}}のソーシャルコネクタ制限に達しました。チームのニーズに合わせて有料プランにアップグレードして、OIDC、OAuth 2.0、およびSAMLプロトコルを使用して独自のコネクタを作成できるようにしましょう。お問い合わせは何かお手伝いが必要な場合はお気軽にどうぞ。', standard_connectors_other: diff --git a/packages/phrases/src/locales/ko/translation/admin-console/upsell/index.ts b/packages/phrases/src/locales/ko/translation/admin-console/upsell/index.ts index ea046413b..e83ae3bd8 100644 --- a/packages/phrases/src/locales/ko/translation/admin-console/upsell/index.ts +++ b/packages/phrases/src/locales/ko/translation/admin-console/upsell/index.ts @@ -1,7 +1,6 @@ import paywall from './paywall.js'; const upsell = { - pro_tag: 'PRO', upgrade_plan: '플랜 업그레이드', compare_plans: '플랜 비교', create_tenant: { diff --git a/packages/phrases/src/locales/ko/translation/admin-console/upsell/paywall.ts b/packages/phrases/src/locales/ko/translation/admin-console/upsell/paywall.ts index b7af3fc3d..44c17d32f 100644 --- a/packages/phrases/src/locales/ko/translation/admin-console/upsell/paywall.ts +++ b/packages/phrases/src/locales/ko/translation/admin-console/upsell/paywall.ts @@ -3,8 +3,9 @@ const paywall = { '의 {{count, number}}개 애플리케이션 제한에 도달했습니다. 팀의 요구를 충족하기 위해 플랜을 업그레이드하십시오. 도움이 필요하면 문의해 주시기 바랍니다.', applications_other: '의 {{count, number}}개 애플리케이션 제한에 도달했습니다. 팀의 요구를 충족하기 위해 플랜을 업그레이드하십시오. 도움이 필요하면 문의해 주시기 바랍니다.', + /** UNTRANSLATED */ machine_to_machine_feature: - '유료 플랜으로 업그레이드하여 기계 간 애플리케이션을 생성하고 모든 프리미엄 기능에 액세스하세요. 도움이 필요하면 문의해 주시기 바랍니다.', + 'Upgrade to the Hobby plan to unlock 1 machine-to-machine application, or choose the Pro plan for unlimited usage. For any assistance, feel free to contact us.', machine_to_machine: '의 {{count, number}}개 기계 간 애플리케이션 제한에 도달했습니다. 팀의 요구를 충족하기 위해 플랜을 업그레이드하십시오. 도움이 필요하면 문의해 주시기 바랍니다.', machine_to_machine_other: @@ -17,14 +18,16 @@ const paywall = { '의 {{count, number}}개 API 리소스 당 권한 한도에 도달했습니다. 확장을 위해 지금 업그레이드하세요. 도움이 필요하면 문의하기로 연락 주세요.', scopes_per_resource_other: '의 {{count, number}}개 API 리소스 당 권한 한도에 도달했습니다. 확장을 위해 지금 업그레이드하세요. 도움이 필요하면 문의하기로 연락 주세요.', + /** UNTRANSLATED */ custom_domain: - '유료 플랜으로 업그레이드하여 사용자 정의 도메인 기능과 다양한 프리미엄 혜택을 해제하세요. 도움이 필요하면 문의하기로 연락 주세요.', + 'Unlock custom domain functionality by upgrading to Hobby or Pro plan. Don’t hesitate to contact us if you need any assistance.', social_connectors: '의 {{count, number}}개 소셜 커넥터 한도에 도달했습니다. 팀의 요구를 충족시키기 위해 플랜을 업그레이드하고 OIDC, OAuth 2.0, SAML 프로토콜을 사용하여 고유한 커넥터를 생성할 수 있도록 하세요. 도움이 필요하면 문의하기로 연락 주세요.', social_connectors_other: '의 {{count, number}}개 소셜 커넥터 한도에 도달했습니다. 팀의 요구를 충족시키기 위해 플랜을 업그레이드하고 OIDC, OAuth 2.0, SAML 프로토콜을 사용하여 고유한 커넥터를 생성할 수 있도록 하세요. 도움이 필요하면 문의하기로 연락 주세요.', + /** UNTRANSLATED */ standard_connectors_feature: - '유료 플랜으로 업그레이드하여 OIDC, OAuth 2.0, SAML 프로토콜을 사용하여 고유한 커넥터를 생성할 수 있으며, 무제한 소셜 커넥터 및 모든 프리미엄 기능에 액세스할 수 있습니다. 도움이 필요하면 문의하기로 연락 주세요.', + 'Upgrade to the Hobby or Pro plan to create your own connectors using OIDC, OAuth 2.0, and SAML protocols, plus unlimited social connectors and all the premium features. Feel free to contact us if you need any assistance.', standard_connectors: '의 {{count, number}}개 소셜 커넥터 한도에 도달했습니다. 팀의 요구를 충족시키기 위해 플랜을 업그레이드하고 OIDC, OAuth 2.0, SAML 프로토콜을 사용하여 고유한 커넥터를 생성할 수 있도록 하세요. 도움이 필요하면 문의하기로 연락 주세요.', standard_connectors_other: diff --git a/packages/phrases/src/locales/pl-pl/translation/admin-console/upsell/index.ts b/packages/phrases/src/locales/pl-pl/translation/admin-console/upsell/index.ts index 2e4976a6b..b7b0ca822 100644 --- a/packages/phrases/src/locales/pl-pl/translation/admin-console/upsell/index.ts +++ b/packages/phrases/src/locales/pl-pl/translation/admin-console/upsell/index.ts @@ -1,7 +1,6 @@ import paywall from './paywall.js'; const upsell = { - pro_tag: 'PRO', upgrade_plan: 'Ulepsz plan', compare_plans: 'Porównaj plany', create_tenant: { diff --git a/packages/phrases/src/locales/pl-pl/translation/admin-console/upsell/paywall.ts b/packages/phrases/src/locales/pl-pl/translation/admin-console/upsell/paywall.ts index b8899507a..4fda71fca 100644 --- a/packages/phrases/src/locales/pl-pl/translation/admin-console/upsell/paywall.ts +++ b/packages/phrases/src/locales/pl-pl/translation/admin-console/upsell/paywall.ts @@ -3,8 +3,9 @@ const paywall = { 'Osiągnięto limit {{count, number}} aplikacji dla . Zaktualizuj plan, aby sprostać potrzebom zespołu. W razie potrzeby pomocy, proszę skontaktuj się z nami.', applications_other: 'Osiągnięto limit {{count, number}} aplikacji dla . Zaktualizuj plan, aby sprostać potrzebom zespołu. W razie potrzeby pomocy, proszę skontaktuj się z nami.', + /** UNTRANSLATED */ machine_to_machine_feature: - 'Zaktualizuj plan na płatny, aby tworzyć aplikacje maszynowe i uzyskać dostęp do wszystkich funkcji premium. W razie potrzeby pomocy, proszę skontaktuj się z nami.', + 'Upgrade to the Hobby plan to unlock 1 machine-to-machine application, or choose the Pro plan for unlimited usage. For any assistance, feel free to contact us.', machine_to_machine: 'Osiągnięto limit {{count, number}} aplikacji maszynowych dla . Zaktualizuj plan, aby sprostać potrzebom zespołu. W razie potrzeby pomocy, proszę skontaktuj się z nami.', machine_to_machine_other: @@ -17,14 +18,16 @@ const paywall = { 'Osiągnięto limit {{count, number}} uprawnień na zasób API w planie . Zaktualizuj plan, aby rozszerzyć. Skontaktuj się z nami tutaj, jeśli potrzebujesz pomocy.', scopes_per_resource_other: 'Osiągnięto limit {{count, number}} uprawnień na zasób API w planie . Zaktualizuj plan, aby rozszerzyć. Skontaktuj się z nami tutaj, jeśli potrzebujesz pomocy.', + /** UNTRANSLATED */ custom_domain: - 'Odblokuj funkcję niestandardowego domeny i szereg korzyści premium, ulepszając do płatnego planu. Jeśli potrzebujesz pomocy, nie wahaj się skontaktować z nami.', + 'Unlock custom domain functionality by upgrading to Hobby or Pro plan. Don’t hesitate to contact us if you need any assistance.', social_connectors: 'Osiągnięto limit {{count, number}} konektorów społecznościowych w planie . Aby sprostać potrzebom twojego zespołu, ulepsz plan, aby uzyskać dodatkowe konektory społecznościowe oraz możliwość tworzenia własnych konektorów za pomocą protokołów OIDC, OAuth 2.0 i SAML. Jeśli potrzebujesz pomocy, nie wahaj się skontaktować z nami.', social_connectors_other: 'Osiągnięto limit {{count, number}} konektorów społecznościowych w planie . Aby sprostać potrzebom twojego zespołu, ulepsz plan, aby uzyskać dodatkowe konektory społecznościowe oraz możliwość tworzenia własnych konektorów za pomocą protokołów OIDC, OAuth 2.0 i SAML. Jeśli potrzebujesz pomocy, nie wahaj się skontaktować z nami.', + /** UNTRANSLATED */ standard_connectors_feature: - 'Ulepsz do płatnego planu, aby tworzyć własne konektory za pomocą protokołów OIDC, OAuth 2.0 i SAML, oraz uzyskać nieograniczoną liczbę konektorów społecznościowych i wszystkie funkcje premium. Jeśli potrzebujesz pomocy, nie wahaj się skontaktować z nami.', + 'Upgrade to the Hobby or Pro plan to create your own connectors using OIDC, OAuth 2.0, and SAML protocols, plus unlimited social connectors and all the premium features. Feel free to contact us if you need any assistance.', standard_connectors: 'Osiągnięto limit {{count, number}} konektorów społecznościowych w planie . Aby sprostać potrzebom twojego zespołu, ulepsz plan, aby uzyskać dodatkowe konektory społecznościowe oraz możliwość tworzenia własnych konektorów za pomocą protokołów OIDC, OAuth 2.0 i SAML. Jeśli potrzebujesz pomocy, nie wahaj się skontaktować z nami.', standard_connectors_other: diff --git a/packages/phrases/src/locales/pt-br/translation/admin-console/upsell/index.ts b/packages/phrases/src/locales/pt-br/translation/admin-console/upsell/index.ts index 11b4f8b11..072635136 100644 --- a/packages/phrases/src/locales/pt-br/translation/admin-console/upsell/index.ts +++ b/packages/phrases/src/locales/pt-br/translation/admin-console/upsell/index.ts @@ -1,7 +1,6 @@ import paywall from './paywall.js'; const upsell = { - pro_tag: 'PRO', upgrade_plan: 'Atualizar plano', compare_plans: 'Comparar planos', create_tenant: { diff --git a/packages/phrases/src/locales/pt-br/translation/admin-console/upsell/paywall.ts b/packages/phrases/src/locales/pt-br/translation/admin-console/upsell/paywall.ts index 89d14a486..3cc59c70b 100644 --- a/packages/phrases/src/locales/pt-br/translation/admin-console/upsell/paywall.ts +++ b/packages/phrases/src/locales/pt-br/translation/admin-console/upsell/paywall.ts @@ -3,8 +3,9 @@ const paywall = { 'Limite de {{count, number}} aplicação do atingido. Atualize o plano para atender às necessidades da sua equipe. Para obter qualquer ajuda, sinta-se à vontade para entrar em contato conosco.', applications_other: 'Limite de {{count, number}} aplicações do atingido. Atualize o plano para atender às necessidades da sua equipe. Para obter qualquer ajuda, sinta-se à vontade para entrar em contato conosco.', + /** UNTRANSLATED */ machine_to_machine_feature: - 'Faça upgrade para um plano pago para criar aplicativos de máquina para máquina, junto com acesso a todos os recursos premium. Para qualquer assistência, fique à vontade para entrar em contato conosco.', + 'Upgrade to the Hobby plan to unlock 1 machine-to-machine application, or choose the Pro plan for unlimited usage. For any assistance, feel free to contact us.', machine_to_machine: 'Limite de {{count, number}} aplicação de máquina para máquina do atingido. Atualize o plano para atender às necessidades da sua equipe. Para obter qualquer ajuda, sinta-se à vontade para entrar em contato conosco.', machine_to_machine_other: @@ -17,14 +18,16 @@ const paywall = { 'Atingiu o limite de {{count, number}} permissões por recurso de API de . Atualize agora para expandir. Contacte-nos se precisar de assistência.', scopes_per_resource_other: 'Atingiu o limite de {{count, number}} permissões por recurso de API de . Atualize agora para expandir. Contacte-nos se precisar de assistência.', + /** UNTRANSLATED */ custom_domain: - 'Desbloqueie a funcionalidade de domínio personalizado e uma série de benefícios premium ao atualizar para um plano pago. Não hesite em Contacte-nos se precisar de ajuda.', + 'Unlock custom domain functionality by upgrading to Hobby or Pro plan. Don’t hesitate to contact us if you need any assistance.', social_connectors: 'Atingiu o limite de {{count, number}} conectores sociais de . Atualize o plano para obter conectores sociais adicionais e a capacidade de criar os seus próprios conectores usando os protocolos OIDC, OAuth 2.0 e SAML. Não hesite em Contacte-nos se precisar de ajuda.', social_connectors_other: 'Atingiu o limite de {{count, number}} conectores sociais de . Atualize o plano para obter conectores sociais adicionais e a capacidade de criar os seus próprios conectores usando os protocolos OIDC, OAuth 2.0 e SAML. Não hesite em Contacte-nos se precisar de ajuda.', + /** UNTRANSLATED */ standard_connectors_feature: - 'Atualize para um plano pago para criar os seus próprios conectores usando os protocolos OIDC, OAuth 2.0 e SAML, além de obter conectores sociais ilimitados e todas as funcionalidades premium. Não hesite em Contacte-nos se precisar de ajuda.', + 'Upgrade to the Hobby or Pro plan to create your own connectors using OIDC, OAuth 2.0, and SAML protocols, plus unlimited social connectors and all the premium features. Feel free to contact us if you need any assistance.', standard_connectors: 'Atingiu o limite de {{count, number}} conectores sociais de . Atualize o plano para obter conectores sociais adicionais e a capacidade de criar os seus próprios conectores usando os protocolos OIDC, OAuth 2.0 e SAML. Não hesite em Contacte-nos se precisar de ajuda.', standard_connectors_other: diff --git a/packages/phrases/src/locales/pt-pt/translation/admin-console/upsell/index.ts b/packages/phrases/src/locales/pt-pt/translation/admin-console/upsell/index.ts index 11b4f8b11..072635136 100644 --- a/packages/phrases/src/locales/pt-pt/translation/admin-console/upsell/index.ts +++ b/packages/phrases/src/locales/pt-pt/translation/admin-console/upsell/index.ts @@ -1,7 +1,6 @@ import paywall from './paywall.js'; const upsell = { - pro_tag: 'PRO', upgrade_plan: 'Atualizar plano', compare_plans: 'Comparar planos', create_tenant: { diff --git a/packages/phrases/src/locales/pt-pt/translation/admin-console/upsell/paywall.ts b/packages/phrases/src/locales/pt-pt/translation/admin-console/upsell/paywall.ts index fb9da83c1..dfc299d11 100644 --- a/packages/phrases/src/locales/pt-pt/translation/admin-console/upsell/paywall.ts +++ b/packages/phrases/src/locales/pt-pt/translation/admin-console/upsell/paywall.ts @@ -3,8 +3,9 @@ const paywall = { 'Limite de {{count, number}} aplicação do atingido. Atualize o plano para atender às necessidades da sua equipe. Para obter qualquer ajuda, sinta-se à vontade para entrar em contato conosco.', applications_other: 'Limite de {{count, number}} aplicações do atingido. Atualize o plano para atender às necessidades da sua equipe. Para obter qualquer ajuda, sinta-se à vontade para entrar em contato conosco.', + /** UNTRANSLATED */ machine_to_machine_feature: - 'Atualize para um plano pago para criar aplicação de máquina a máquina, juntamente com acesso a todos os recursos premium. Para qualquer assistência, fique à vontade para entrar em contato conosco.', + 'Upgrade to the Hobby plan to unlock 1 machine-to-machine application, or choose the Pro plan for unlimited usage. For any assistance, feel free to contact us.', machine_to_machine: 'Limite de {{count, number}} aplicação de máquina a máquina do atingido. Atualize o plano para atender às necessidades da sua equipe. Para obter qualquer ajuda, sinta-se à vontade para entrar em contato conosco.', machine_to_machine_other: @@ -17,14 +18,16 @@ const paywall = { 'Atingiu o limite de {{count, number}} permissões por recurso de API de . Atualize agora para expandir. Contacte-nos se precisar de assistência.', scopes_per_resource_other: 'Atingiu o limite de {{count, number}} permissões por recurso de API de . Atualize agora para expandir. Contacte-nos se precisar de assistência.', + /** UNTRANSLATED */ custom_domain: - 'Desbloqueie a funcionalidade de domínio personalizado e uma série de benefícios premium ao atualizar para um plano pago. Não hesite em Contacte-nos se precisar de ajuda.', + 'Unlock custom domain functionality by upgrading to Hobby or Pro plan. Don’t hesitate to contact us if you need any assistance.', social_connectors: 'Atingiu o limite de {{count, number}} conectores sociais de . Atualize o plano para obter conectores sociais adicionais e a capacidade de criar os seus próprios conectores usando os protocolos OIDC, OAuth 2.0 e SAML. Não hesite em Contacte-nos se precisar de ajuda.', social_connectors_other: 'Atingiu o limite de {{count, number}} conectores sociais de . Atualize o plano para obter conectores sociais adicionais e a capacidade de criar os seus próprios conectores usando os protocolos OIDC, OAuth 2.0 e SAML. Não hesite em Contacte-nos se precisar de ajuda.', + /** UNTRANSLATED */ standard_connectors_feature: - 'Atualize para um plano pago para criar os seus próprios conectores usando os protocolos OIDC, OAuth 2.0 e SAML, além de obter conectores sociais ilimitados e todas as funcionalidades premium. Não hesite em Contacte-nos se precisar de ajuda.', + 'Upgrade to the Hobby or Pro plan to create your own connectors using OIDC, OAuth 2.0, and SAML protocols, plus unlimited social connectors and all the premium features. Feel free to contact us if you need any assistance.', standard_connectors: 'Atingiu o limite de {{count, number}} conectores sociais de . Atualize o plano para obter conectores sociais adicionais e a capacidade de criar os seus próprios conectores usando os protocolos OIDC, OAuth 2.0 e SAML. Não hesite em Contacte-nos se precisar de ajuda.', standard_connectors_other: diff --git a/packages/phrases/src/locales/ru/translation/admin-console/upsell/index.ts b/packages/phrases/src/locales/ru/translation/admin-console/upsell/index.ts index 8d8419ee8..47337fa71 100644 --- a/packages/phrases/src/locales/ru/translation/admin-console/upsell/index.ts +++ b/packages/phrases/src/locales/ru/translation/admin-console/upsell/index.ts @@ -1,7 +1,6 @@ import paywall from './paywall.js'; const upsell = { - pro_tag: 'PRO', upgrade_plan: 'Повысить план', compare_plans: 'Сравнить планы', create_tenant: { diff --git a/packages/phrases/src/locales/ru/translation/admin-console/upsell/paywall.ts b/packages/phrases/src/locales/ru/translation/admin-console/upsell/paywall.ts index f10bf4ac9..515913f8d 100644 --- a/packages/phrases/src/locales/ru/translation/admin-console/upsell/paywall.ts +++ b/packages/phrases/src/locales/ru/translation/admin-console/upsell/paywall.ts @@ -3,8 +3,9 @@ const paywall = { 'Достигнут лимит {{count, number}} приложения(й) для . Обновите план, чтобы удовлетворить потребности вашей команды. При необходимости помощи, не стесняйтесь связаться с нами.', applications_other: 'Достигнут лимит {{count, number}} приложений для . Обновите план, чтобы удовлетворить потребности вашей команды. При необходимости помощи, не стесняйтесь связаться с нами.', + /** UNTRANSLATED */ machine_to_machine_feature: - 'Перейдите на платный план, чтобы создать машинное приложение и получить доступ ко всем премиум-функциям. При необходимости помощи, не стесняйтесь связаться с нами.', + 'Upgrade to the Hobby plan to unlock 1 machine-to-machine application, or choose the Pro plan for unlimited usage. For any assistance, feel free to contact us.', machine_to_machine: 'Достигнут лимит {{count, number}} машинных приложений для . Обновите план, чтобы удовлетворить потребности вашей команды. При необходимости помощи, не стесняйтесь связаться с нами.', machine_to_machine_other: @@ -17,14 +18,16 @@ const paywall = { 'Достигнут лимит {{count, number}} разрешений на ресурс API в плане . Повысьте план, чтобы увеличить количество разрешений. Свяжитесь с нами для получения помощи.', scopes_per_resource_other: 'Достигнут лимит {{count, number}} разрешений на ресурс API в плане . Повысьте план, чтобы увеличить количество разрешений. Свяжитесь с нами для получения помощи.', + /** UNTRANSLATED */ custom_domain: - 'Разблокируйте функциональность настраиваемого домена и ряд премиум-преимуществ, повысив до платного плана. Если вам нужна помощь, не стесняйтесь связаться с нами.', + 'Unlock custom domain functionality by upgrading to Hobby or Pro plan. Don’t hesitate to contact us if you need any assistance.', social_connectors: 'Достигнут лимит {{count, number}} социальных коннекторов в плане . Для удовлетворения потребностей вашей команды повысьте план, чтобы получить дополнительные социальные коннекторы и возможность создания собственных коннекторов с использованием протоколов OIDC, OAuth 2.0 и SAML. Если вам нужна помощь, не стесняйтесь связаться с нами.', social_connectors_other: 'Достигнут лимит {{count, number}} социальных коннекторов в плане . Для удовлетворения потребностей вашей команды повысьте план, чтобы получить дополнительные социальные коннекторы и возможность создания собственных коннекторов с использованием протоколов OIDC, OAuth 2.0 и SAML. Если вам нужна помощь, не стесняйтесь связаться с нами.', + /** UNTRANSLATED */ standard_connectors_feature: - 'Повысьте до платного плана, чтобы создавать свои собственные коннекторы с использованием протоколов OIDC, OAuth 2.0 и SAML, а также получить неограниченное количество социальных коннекторов и все премиум-функции. Если вам нужна помощь, не стесняйтесь связаться с нами.', + 'Upgrade to the Hobby or Pro plan to create your own connectors using OIDC, OAuth 2.0, and SAML protocols, plus unlimited social connectors and all the premium features. Feel free to contact us if you need any assistance.', standard_connectors: 'Достигнут лимит {{count, number}} социальных коннекторов в плане . Для удовлетворения потребностей вашей команды повысьте план, чтобы получить дополнительные социальные коннекторы и возможность создания собственных коннекторов с использованием протоколов OIDC, OAuth 2.0 и SAML. Если вам нужна помощь, не стесняйтесь связаться с нами.', standard_connectors_other: diff --git a/packages/phrases/src/locales/tr-tr/translation/admin-console/upsell/index.ts b/packages/phrases/src/locales/tr-tr/translation/admin-console/upsell/index.ts index 37bc0ffee..f793c988c 100644 --- a/packages/phrases/src/locales/tr-tr/translation/admin-console/upsell/index.ts +++ b/packages/phrases/src/locales/tr-tr/translation/admin-console/upsell/index.ts @@ -1,7 +1,6 @@ import paywall from './paywall.js'; const upsell = { - pro_tag: 'PRO', upgrade_plan: 'Planı Yükselt', compare_plans: 'Planları Karşılaştır', create_tenant: { diff --git a/packages/phrases/src/locales/tr-tr/translation/admin-console/upsell/paywall.ts b/packages/phrases/src/locales/tr-tr/translation/admin-console/upsell/paywall.ts index 04444e0d5..4a7078fff 100644 --- a/packages/phrases/src/locales/tr-tr/translation/admin-console/upsell/paywall.ts +++ b/packages/phrases/src/locales/tr-tr/translation/admin-console/upsell/paywall.ts @@ -3,8 +3,9 @@ const paywall = { ' limitine ulaşılan {{count, number}} başvuru. Ekibinizin ihtiyaçlarını karşılamak için planı yükseltin. Yardım için lütfen bizimle iletişime geçin.', applications_other: ' limitine ulaşılan {{count, number}} başvurular. Ekibinizin ihtiyaçlarını karşılamak için planı yükseltin. Yardım için lütfen bizimle iletişime geçin.', + /** UNTRANSLATED */ machine_to_machine_feature: - 'Makine-makine uygulaması oluşturmak ve tüm premium özelliklere erişim sağlamak için ücretli bir plana yükseltin. Yardım için lütfen bizimle iletişime geçin.', + 'Upgrade to the Hobby plan to unlock 1 machine-to-machine application, or choose the Pro plan for unlimited usage. For any assistance, feel free to contact us.', machine_to_machine: ' limitine ulaşılan {{count, number}} makine-makine başvurusu. Ekibinizin ihtiyaçlarını karşılamak için planı yükseltin. Yardım için lütfen bizimle iletişime geçin.', machine_to_machine_other: @@ -17,14 +18,16 @@ const paywall = { '{{count, number}} API kaynağı başına izin sınırına ulaşıldı. Genişletmek için şimdi yükseltin. Yardıma ihtiyacınız olursa, iletişime geçin.', scopes_per_resource_other: '{{count, number}} API kaynağı başına izin sınırına ulaşıldı. Genişletmek için şimdi yükseltin. Yardıma ihtiyacınız olursa, iletişime geçin.', + /** UNTRANSLATED */ custom_domain: - 'Özel etki alanı işlevselliğini açığa çıkarın ve ücretli bir plana geçerek bir dizi premium avantajdan yararlanın. Yardıma ihtiyacınız olursa, iletişime geçin.', + 'Unlock custom domain functionality by upgrading to Hobby or Pro plan. Don’t hesitate to contact us if you need any assistance.', social_connectors: '{{count, number}} sosyal bağlayıcı sınırına ulaşıldı. Ekibinizin ihtiyaçlarını karşılamak için planı yükseltin ve OIDC, OAuth 2.0 ve SAML protokolleri kullanarak kendi bağlayıcılarınızı oluşturma yeteneğine sahip olun. Yardıma ihtiyacınız olursa, iletişime geçin.', social_connectors_other: '{{count, number}} sosyal bağlayıcı sınırına ulaşıldı. Ekibinizin ihtiyaçlarını karşılamak için planı yükseltin ve OIDC, OAuth 2.0 ve SAML protokolleri kullanarak kendi bağlayıcılarınızı oluşturma yeteneğine sahip olun. Yardıma ihtiyacınız olursa, iletişime geçin.', + /** UNTRANSLATED */ standard_connectors_feature: - 'OIDC, OAuth 2.0 ve SAML protokollerini kullanarak kendi bağlayıcılarınızı oluşturmak, sınırsız sosyal bağlayıcılar ve tüm premium özelliklere erişim sağlamak için ücretli bir plana geçin. Yardıma ihtiyacınız olursa, iletişime geçin.', + 'Upgrade to the Hobby or Pro plan to create your own connectors using OIDC, OAuth 2.0, and SAML protocols, plus unlimited social connectors and all the premium features. Feel free to contact us if you need any assistance.', standard_connectors: '{{count, number}} sosyal bağlayıcı sınırına ulaşıldı. Ekibinizin ihtiyaçlarını karşılamak için planı yükseltin ve OIDC, OAuth 2.0 ve SAML protokolleri kullanarak kendi bağlayıcılarınızı oluşturma yeteneğine sahip olun. Yardıma ihtiyacınız olursa, iletişime geçin.', standard_connectors_other: diff --git a/packages/phrases/src/locales/zh-cn/translation/admin-console/upsell/index.ts b/packages/phrases/src/locales/zh-cn/translation/admin-console/upsell/index.ts index 0a893cc2c..969cc8060 100644 --- a/packages/phrases/src/locales/zh-cn/translation/admin-console/upsell/index.ts +++ b/packages/phrases/src/locales/zh-cn/translation/admin-console/upsell/index.ts @@ -1,7 +1,6 @@ import paywall from './paywall.js'; const upsell = { - pro_tag: 'PRO', upgrade_plan: '升级计划', compare_plans: '比较计划', create_tenant: { diff --git a/packages/phrases/src/locales/zh-cn/translation/admin-console/upsell/paywall.ts b/packages/phrases/src/locales/zh-cn/translation/admin-console/upsell/paywall.ts index 7ee3c7dd8..4268967f8 100644 --- a/packages/phrases/src/locales/zh-cn/translation/admin-console/upsell/paywall.ts +++ b/packages/phrases/src/locales/zh-cn/translation/admin-console/upsell/paywall.ts @@ -3,8 +3,9 @@ const paywall = { '已达到 的{{count, number}}个应用限制。升级计划以满足团队需求。如需帮助,请随时联系我们。', applications_other: '已达到 的{{count, number}}个应用限制。升级计划以满足团队需求。如需帮助,请随时联系我们。', + /** UNTRANSLATED */ machine_to_machine_feature: - '升级到付费计划以创建机器对机器应用,并获得所有高级功能的访问权限。如需帮助,请随时联系我们。', + 'Upgrade to the Hobby plan to unlock 1 machine-to-machine application, or choose the Pro plan for unlimited usage. For any assistance, feel free to contact us.', machine_to_machine: '已达到 的{{count, number}}个机器对机器应用限制。升级计划以满足团队需求。如需帮助,请随时联系我们。', machine_to_machine_other: @@ -17,14 +18,16 @@ const paywall = { '已达到的{{count, number}}个 API 资源每个权限限制。立即升级以扩展。如需任何帮助,请联系我们。', scopes_per_resource_other: '已达到的{{count, number}}个 API 资源每个权限限制。立即升级以扩展。如需任何帮助,请联系我们。', + /** UNTRANSLATED */ custom_domain: - '通过升级到付费计划解锁自定义域功能和一系列高级福利。如需任何帮助,请联系我们。', + 'Unlock custom domain functionality by upgrading to Hobby or Pro plan. Don’t hesitate to contact us if you need any assistance.', social_connectors: '已达到的{{count, number}}个社交连接器限制。为满足您团队的需求,请升级计划以获取额外的社交连接器,并可以使用 OIDC、OAuth 2.0 和 SAML 协议创建您自己的连接器。如需任何帮助,请联系我们。', social_connectors_other: '已达到的{{count, number}}个社交连接器限制。为满足您团队的需求,请升级计划以获取额外的社交连接器,并可以使用 OIDC、OAuth 2.0 和 SAML 协议创建您自己的连接器。如需任何帮助,请联系我们。', + /** UNTRANSLATED */ standard_connectors_feature: - '升级到付费计划以使用 OIDC、OAuth 2.0 和 SAML 协议创建您自己的连接器,并获得无限社交连接器和所有高级功能。如需任何帮助,请联系我们。', + 'Upgrade to the Hobby or Pro plan to create your own connectors using OIDC, OAuth 2.0, and SAML protocols, plus unlimited social connectors and all the premium features. Feel free to contact us if you need any assistance.', standard_connectors: '已达到的{{count, number}}个社交连接器限制。为满足您团队的需求,请升级计划以获取额外的社交连接器,并可以使用 OIDC、OAuth 2.0 和 SAML 协议创建您自己的连接器。如需任何帮助,请联系我们。', standard_connectors_other: diff --git a/packages/phrases/src/locales/zh-hk/translation/admin-console/upsell/index.ts b/packages/phrases/src/locales/zh-hk/translation/admin-console/upsell/index.ts index 66807350a..6f77767d7 100644 --- a/packages/phrases/src/locales/zh-hk/translation/admin-console/upsell/index.ts +++ b/packages/phrases/src/locales/zh-hk/translation/admin-console/upsell/index.ts @@ -1,7 +1,6 @@ import paywall from './paywall.js'; const upsell = { - pro_tag: 'PRO', upgrade_plan: '升級計劃', compare_plans: '比較計劃', create_tenant: { diff --git a/packages/phrases/src/locales/zh-hk/translation/admin-console/upsell/paywall.ts b/packages/phrases/src/locales/zh-hk/translation/admin-console/upsell/paywall.ts index af6dc390e..24882784a 100644 --- a/packages/phrases/src/locales/zh-hk/translation/admin-console/upsell/paywall.ts +++ b/packages/phrases/src/locales/zh-hk/translation/admin-console/upsell/paywall.ts @@ -3,8 +3,9 @@ const paywall = { '已達到 的{{count, number}}個應用程式限制。升級計劃以滿足團隊需求。如需任何協助,歡迎聯絡我們。', applications_other: '已達到 的{{count, number}}個應用程式限制。升級計劃以滿足團隊需求。如需任何協助,歡迎聯絡我們。', + /** UNTRANSLATED */ machine_to_machine_feature: - '升級到付費計劃以創建機器對機器應用,並獲得所有高級功能的訪問權限。如需協助,歡迎聯絡我們。', + 'Upgrade to the Hobby plan to unlock 1 machine-to-machine application, or choose the Pro plan for unlimited usage. For any assistance, feel free to contact us.', machine_to_machine: '已達到 的{{count, number}}個機器對機器應用程式限制。升級計劃以滿足團隊需求。如需任何協助,歡迎聯絡我們。', machine_to_machine_other: @@ -17,14 +18,16 @@ const paywall = { '已達到的{{count, number}}個 API 資源每個權限限制。立即升級以擴展。如需任何幫助,請聯繫我們。', scopes_per_resource_other: '已達到的{{count, number}}個 API 資源每個權限限制。立即升級以擴展。如需任何幫助,請聯繫我們。', + /** UNTRANSLATED */ custom_domain: - '通過升級到付費計劃解鎖自定義域功能和一系列高級福利。如需任何幫助,請聯繫我們。', + 'Unlock custom domain functionality by upgrading to Hobby or Pro plan. Don’t hesitate to contact us if you need any assistance.', social_connectors: '已達到的{{count, number}}個社交連接器限制。為滿足您團隊的需求,請升級計劃以獲取額外的社交連接器,並可以使用 OIDC、OAuth 2.0 和 SAML 協議創建您自己的連接器。如需任何幫助,請聯繫我們。', social_connectors_other: '已達到的{{count, number}}個社交連接器限制。為滿足您團隊的需求,請升級計劃以獲取額外的社交連接器,並可以使用 OIDC、OAuth 2.0 和 SAML 協議創建您自己的連接器。如需任何幫助,請聯繫我們。', + /** UNTRANSLATED */ standard_connectors_feature: - '升級到付費計劃以使用 OIDC、OAuth 2.0 和 SAML 協議創建您自己的連接器,並獲得無限社交連接器和所有高級功能。如需任何幫助,請聯繫我們。', + 'Upgrade to the Hobby or Pro plan to create your own connectors using OIDC, OAuth 2.0, and SAML protocols, plus unlimited social connectors and all the premium features. Feel free to contact us if you need any assistance.', standard_connectors: '已達到的{{count, number}}個社交連接器限制。為滿足您團隊的需求,請升級計劃以獲取額外的社交連接器,並可以使用 OIDC、OAuth 2.0 和 SAML 協議創建您自己的連接器。如需任何幫助,請聯繫我們。', standard_connectors_other: diff --git a/packages/phrases/src/locales/zh-tw/translation/admin-console/upsell/index.ts b/packages/phrases/src/locales/zh-tw/translation/admin-console/upsell/index.ts index 66807350a..6f77767d7 100644 --- a/packages/phrases/src/locales/zh-tw/translation/admin-console/upsell/index.ts +++ b/packages/phrases/src/locales/zh-tw/translation/admin-console/upsell/index.ts @@ -1,7 +1,6 @@ import paywall from './paywall.js'; const upsell = { - pro_tag: 'PRO', upgrade_plan: '升級計劃', compare_plans: '比較計劃', create_tenant: { diff --git a/packages/phrases/src/locales/zh-tw/translation/admin-console/upsell/paywall.ts b/packages/phrases/src/locales/zh-tw/translation/admin-console/upsell/paywall.ts index af6dc390e..24882784a 100644 --- a/packages/phrases/src/locales/zh-tw/translation/admin-console/upsell/paywall.ts +++ b/packages/phrases/src/locales/zh-tw/translation/admin-console/upsell/paywall.ts @@ -3,8 +3,9 @@ const paywall = { '已達到 的{{count, number}}個應用程式限制。升級計劃以滿足團隊需求。如需任何協助,歡迎聯絡我們。', applications_other: '已達到 的{{count, number}}個應用程式限制。升級計劃以滿足團隊需求。如需任何協助,歡迎聯絡我們。', + /** UNTRANSLATED */ machine_to_machine_feature: - '升級到付費計劃以創建機器對機器應用,並獲得所有高級功能的訪問權限。如需協助,歡迎聯絡我們。', + 'Upgrade to the Hobby plan to unlock 1 machine-to-machine application, or choose the Pro plan for unlimited usage. For any assistance, feel free to contact us.', machine_to_machine: '已達到 的{{count, number}}個機器對機器應用程式限制。升級計劃以滿足團隊需求。如需任何協助,歡迎聯絡我們。', machine_to_machine_other: @@ -17,14 +18,16 @@ const paywall = { '已達到的{{count, number}}個 API 資源每個權限限制。立即升級以擴展。如需任何幫助,請聯繫我們。', scopes_per_resource_other: '已達到的{{count, number}}個 API 資源每個權限限制。立即升級以擴展。如需任何幫助,請聯繫我們。', + /** UNTRANSLATED */ custom_domain: - '通過升級到付費計劃解鎖自定義域功能和一系列高級福利。如需任何幫助,請聯繫我們。', + 'Unlock custom domain functionality by upgrading to Hobby or Pro plan. Don’t hesitate to contact us if you need any assistance.', social_connectors: '已達到的{{count, number}}個社交連接器限制。為滿足您團隊的需求,請升級計劃以獲取額外的社交連接器,並可以使用 OIDC、OAuth 2.0 和 SAML 協議創建您自己的連接器。如需任何幫助,請聯繫我們。', social_connectors_other: '已達到的{{count, number}}個社交連接器限制。為滿足您團隊的需求,請升級計劃以獲取額外的社交連接器,並可以使用 OIDC、OAuth 2.0 和 SAML 協議創建您自己的連接器。如需任何幫助,請聯繫我們。', + /** UNTRANSLATED */ standard_connectors_feature: - '升級到付費計劃以使用 OIDC、OAuth 2.0 和 SAML 協議創建您自己的連接器,並獲得無限社交連接器和所有高級功能。如需任何幫助,請聯繫我們。', + 'Upgrade to the Hobby or Pro plan to create your own connectors using OIDC, OAuth 2.0, and SAML protocols, plus unlimited social connectors and all the premium features. Feel free to contact us if you need any assistance.', standard_connectors: '已達到的{{count, number}}個社交連接器限制。為滿足您團隊的需求,請升級計劃以獲取額外的社交連接器,並可以使用 OIDC、OAuth 2.0 和 SAML 協議創建您自己的連接器。如需任何幫助,請聯繫我們。', standard_connectors_other: diff --git a/packages/toolkit/core-kit/scss/_console-themes.scss b/packages/toolkit/core-kit/scss/_console-themes.scss index e4d4bc015..41b3148c3 100644 --- a/packages/toolkit/core-kit/scss/_console-themes.scss +++ b/packages/toolkit/core-kit/scss/_console-themes.scss @@ -181,6 +181,7 @@ --color-guide-dropdown-border: var(--color-border); --color-skeleton-shimmer-rgb: 255, 255, 255; // rgb of Layer-1 --color-specific-tag-upsell: var(--color-primary-50); + --color-specific-tag-test: var(--color-tertiary-50); --color-specific-toggle-thumb-disabled: #ffffffb3; // Background @@ -382,6 +383,7 @@ --color-guide-dropdown-border: var(--color-neutral-variant-70); --color-skeleton-shimmer-rgb: 42, 44, 50; // rgb of Layer-1 --color-specific-tag-upsell: var(--color-primary-70); + --color-specific-tag-test: var(--color-tertiary-80); --color-specific-toggle-thumb-disabled: #ffffff4d; // Background