0
Fork 0
mirror of https://github.com/logto-io/logto.git synced 2025-04-07 23:01:25 -05:00

refactor(console): add tags for upcoming feature items (#4837)

This commit is contained in:
Xiao Yijun 2023-11-09 10:04:37 +08:00 committed by GitHub
parent 8e07825f17
commit 3e75770067
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
39 changed files with 435 additions and 78 deletions

View file

@ -7,6 +7,7 @@ import ArrowRight from '@/assets/icons/arrow-right.svg';
import PlanDescription from '@/components/PlanDescription';
import PlanName from '@/components/PlanName';
import PlanQuotaList from '@/components/PlanQuotaList';
import { comingSoonQuotaKeys } from '@/consts/plan-quotas';
import { ReservedPlanId } from '@/consts/subscriptions';
import { TenantsContext } from '@/contexts/TenantsProvider';
import Button from '@/ds-components/Button';
@ -23,6 +24,9 @@ const featuredQuotaKeys: Array<keyof SubscriptionPlanQuota> = [
'standardConnectorsLimit',
'rolesLimit',
'scopesPerRoleLimit',
'mfaEnabled',
'omniSignInEnabled',
'organizationEnabled',
'auditLogsRetentionDays',
];
@ -86,6 +90,7 @@ function PlanCardItem({ plan, onSelect }: Props) {
hasIcon
quota={quota}
featuredQuotaKeys={featuredQuotaKeys}
comingSoonQuotaKeys={comingSoonQuotaKeys}
className={styles.list}
/>
{isFreePlan && isFreeTenantExceeded && (

View file

@ -10,6 +10,8 @@ import {
quotaItemPhrasesMap,
quotaItemLimitedPhrasesMap,
} from '@/consts/quota-item-phrases';
import DynamicT from '@/ds-components/DynamicT';
import Tag from '@/ds-components/Tag';
import { type SubscriptionPlanQuota } from '@/types/subscriptions';
import * as styles from './index.module.scss';
@ -19,9 +21,10 @@ type Props = {
quotaKey: keyof SubscriptionPlanQuota;
quotaValue: SubscriptionPlanQuota[keyof SubscriptionPlanQuota];
isDiffItem?: boolean;
isComingSoonTagVisible?: boolean;
};
function QuotaItem({ hasIcon, quotaKey, quotaValue, isDiffItem }: Props) {
function QuotaItem({ hasIcon, quotaKey, quotaValue, isDiffItem, isComingSoonTagVisible }: Props) {
const { t } = useTranslation(undefined, { keyPrefix: 'admin_console.subscription.quota_item' });
const isUnlimited = quotaValue === null;
const isNotCapable = quotaValue === 0 || quotaValue === false;
@ -49,6 +52,11 @@ function QuotaItem({ hasIcon, quotaKey, quotaValue, isDiffItem }: Props) {
</>
)}
</span>
{isComingSoonTagVisible && (
<Tag>
<DynamicT forKey="general.coming_soon" />
</Tag>
)}
</span>
</li>
);

View file

@ -11,12 +11,20 @@ import * as styles from './index.module.scss';
type Props = {
quota: Partial<SubscriptionPlanQuota>;
featuredQuotaKeys?: Array<keyof SubscriptionPlanQuota>;
comingSoonQuotaKeys?: Array<keyof SubscriptionPlanQuota>;
className?: string;
isDiff?: boolean;
hasIcon?: boolean;
};
function PlanQuotaList({ quota, featuredQuotaKeys, isDiff, hasIcon, className }: Props) {
function PlanQuotaList({
quota,
featuredQuotaKeys,
comingSoonQuotaKeys,
isDiff,
hasIcon,
className,
}: Props) {
const items = useMemo(() => {
// eslint-disable-next-line no-restricted-syntax
const entries = Object.entries(quota) as Array<
@ -43,6 +51,9 @@ function PlanQuotaList({ quota, featuredQuotaKeys, isDiff, hasIcon, className }:
quotaKey={quotaKey}
quotaValue={quotaValue}
hasIcon={hasIcon}
isComingSoonTagVisible={
(quotaValue === null || Boolean(quotaValue)) && comingSoonQuotaKeys?.includes(quotaKey)
}
/>
))}
</ul>

View file

@ -6,6 +6,7 @@ import {
type SubscriptionPlanTableGroupKeyMap,
SubscriptionPlanTableGroupKey,
ReservedPlanName,
type SubscriptionPlanQuota,
} from '@/types/subscriptions';
import { isDevFeaturesEnabled as isDevelopmentFeaturesEnabled } from './env';
@ -79,6 +80,12 @@ export const ticketSupportResponseTimeMap: Record<string, number | undefined> =
[ReservedPlanId.pro]: 48,
};
export const organizationEnabledMap: EnabledFeatureMap = {
[ReservedPlanId.free]: false,
[ReservedPlanId.hobby]: true,
[ReservedPlanId.pro]: true,
};
/**
* Note: this is only for display purpose.
*
@ -113,6 +120,7 @@ const enterprisePlanTable: SubscriptionPlanTable = {
hooksLimit: undefined,
communitySupportEnabled: true,
ticketSupportResponseTime: undefined,
organizationEnabled: true,
};
/**
@ -150,9 +158,15 @@ export const planTableGroupKeyMap: SubscriptionPlanTableGroupKeyMap = Object.fre
'rolesLimit',
'scopesPerRoleLimit',
],
[SubscriptionPlanTableGroupKey.organization]: ['organizationEnabled'],
[SubscriptionPlanTableGroupKey.auditLogs]: ['auditLogsRetentionDays'],
[SubscriptionPlanTableGroupKey.hooks]: ['hooksLimit'],
[SubscriptionPlanTableGroupKey.support]: ['communitySupportEnabled', 'ticketSupportResponseTime'],
}) satisfies SubscriptionPlanTableGroupKeyMap;
export const planQuotaItemOrder = Object.values(planTableGroupKeyMap).flat();
export const comingSoonQuotaKeys: Array<keyof SubscriptionPlanQuota> = [
'omniSignInEnabled',
'organizationEnabled',
];

View file

@ -22,6 +22,7 @@ export const quotaItemPhrasesMap: Record<
communitySupportEnabled: 'community_support_enabled.name',
ticketSupportResponseTime: 'customer_ticket_support.name',
mfaEnabled: 'mfa_enabled.name',
organizationEnabled: 'organization_enabled.name',
};
export const quotaItemUnlimitedPhrasesMap: Record<
@ -44,6 +45,7 @@ export const quotaItemUnlimitedPhrasesMap: Record<
communitySupportEnabled: 'community_support_enabled.unlimited',
ticketSupportResponseTime: 'customer_ticket_support.unlimited',
mfaEnabled: 'mfa_enabled.unlimited',
organizationEnabled: 'organization_enabled.unlimited',
};
export const quotaItemLimitedPhrasesMap: Record<
@ -66,6 +68,7 @@ export const quotaItemLimitedPhrasesMap: Record<
communitySupportEnabled: 'community_support_enabled.limited',
ticketSupportResponseTime: 'customer_ticket_support.limited',
mfaEnabled: 'mfa_enabled.limited',
organizationEnabled: 'organization_enabled.limited',
};
export const quotaItemNotEligiblePhrasesMap: Record<
@ -88,4 +91,5 @@ export const quotaItemNotEligiblePhrasesMap: Record<
communitySupportEnabled: 'community_support_enabled.not_eligible',
ticketSupportResponseTime: 'customer_ticket_support.not_eligible',
mfaEnabled: 'mfa_enabled.not_eligible',
organizationEnabled: 'organization_enabled.not_eligible',
};

View file

@ -16,6 +16,7 @@ const planQuotaGroupKeyPhraseMap: {
[SubscriptionPlanTableGroupKey.userAuthentication]: 'user_authn.title',
[SubscriptionPlanTableGroupKey.roles]: 'user_management.title',
[SubscriptionPlanTableGroupKey.hooks]: 'hooks.title',
[SubscriptionPlanTableGroupKey.organization]: 'organization.title',
[SubscriptionPlanTableGroupKey.auditLogs]: 'audit_logs.title',
[SubscriptionPlanTableGroupKey.support]: 'support.title',
};

View file

@ -36,6 +36,7 @@ const planQuotaKeyPhraseMap: {
auditLogsRetentionDays: 'audit_logs.retention',
communitySupportEnabled: 'support.community',
ticketSupportResponseTime: 'support.customer_ticket',
organizationEnabled: 'organization.organization',
};
type Props = {

View file

@ -13,8 +13,11 @@ export type SubscriptionPlanQuota = Omit<
SubscriptionPlanResponse['quota'],
'builtInEmailConnectorEnabled'
> & {
// Support
communitySupportEnabled: boolean;
ticketSupportResponseTime: number;
// Organization
organizationEnabled: boolean;
};
export type SubscriptionPlan = Omit<SubscriptionPlanResponse, 'quota'> & {
@ -54,6 +57,7 @@ export enum SubscriptionPlanTableGroupKey {
roles = 'roles',
auditLogs = 'auditLogs',
hooks = 'hooks',
organization = 'organization',
support = 'support',
}

View file

@ -3,7 +3,11 @@ import dayjs from 'dayjs';
import { tryReadResponseErrorBody } from '@/cloud/hooks/use-cloud-api';
import { type SubscriptionPlanResponse } from '@/cloud/types/router';
import { communitySupportEnabledMap, ticketSupportResponseTimeMap } from '@/consts/plan-quotas';
import {
communitySupportEnabledMap,
organizationEnabledMap,
ticketSupportResponseTimeMap,
} from '@/consts/plan-quotas';
import { reservedPlanIdOrder } from '@/consts/subscriptions';
export const addSupportQuotaToPlan = (subscriptionPlanResponse: SubscriptionPlanResponse) => {
@ -15,6 +19,7 @@ export const addSupportQuotaToPlan = (subscriptionPlanResponse: SubscriptionPlan
...quota,
communitySupportEnabled: communitySupportEnabledMap[id] ?? false, // Fallback to not supported
ticketSupportResponseTime: ticketSupportResponseTimeMap[id] ?? 0, // Fallback to not supported
organizationEnabled: organizationEnabledMap[id] ?? false, // Fallback to not supported
},
};
};

View file

@ -47,10 +47,14 @@ const quota_item = {
not_eligible: 'Entferne deine benutzerdefinierte Domain',
},
omni_sign_in_enabled: {
name: 'Omni-Anmeldung',
limited: 'Omni-Anmeldung',
unlimited: 'Omni-Anmeldung',
not_eligible: 'Deaktiviere deine Omni-Anmeldung',
/** UNTRANSLATED */
name: 'SSO',
/** UNTRANSLATED */
limited: 'SSO',
/** UNTRANSLATED */
unlimited: 'SSO',
/** UNTRANSLATED */
not_eligible: 'Disable your SSO',
},
built_in_email_connector_enabled: {
name: 'Integrierter E-Mail-Connector',
@ -93,6 +97,16 @@ const quota_item = {
unlimited: 'Unbegrenzte Webhooks',
not_eligible: 'Entferne deine Webhooks',
},
organization_enabled: {
/** UNTRANSLATED */
name: 'Organization',
/** UNTRANSLATED */
limited: 'Organization',
/** UNTRANSLATED */
unlimited: 'Organization',
/** UNTRANSLATED */
not_eligible: 'Remove your organizations',
},
audit_logs_retention_days: {
name: 'Audit-Log-Retention',
limited: 'Audit-Log-Retention: {{count, number}} Tag',

View file

@ -26,7 +26,8 @@ const quota_table = {
},
user_authn: {
title: 'Benutzerauthentifizierung',
omni_sign_in: 'Omni-Anmeldung',
/** UNTRANSLATED */
omni_sign_in: 'Enterprise SSO (Q4, 2023)',
password: 'Passwort',
passwordless: 'Passwortlos - E-Mail und SMS',
email_connector: 'E-Mail-Connector',
@ -50,6 +51,12 @@ const quota_table = {
title: 'Webhooks',
hooks: 'Webhooks',
},
organization: {
/** UNTRANSLATED */
title: 'Organization',
/** UNTRANSLATED */
organization: 'Organization (Q4, 2023)',
},
support: {
title: 'Support',
community: 'Community',

View file

@ -47,10 +47,10 @@ const quota_item = {
not_eligible: 'Remove your custom domain',
},
omni_sign_in_enabled: {
name: 'Omni sign-in',
limited: 'Omni sign-in',
unlimited: 'Omni sign-in',
not_eligible: 'Disable your omni sign-in',
name: 'SSO',
limited: 'SSO',
unlimited: 'SSO',
not_eligible: 'Disable your SSO',
},
built_in_email_connector_enabled: {
name: 'Built-in email connector',
@ -93,6 +93,12 @@ const quota_item = {
unlimited: 'Unlimited webhooks',
not_eligible: 'Remove your webhooks',
},
organization_enabled: {
name: 'Organization',
limited: 'Organization',
unlimited: 'Organization',
not_eligible: 'Remove your organizations',
},
audit_logs_retention_days: {
name: 'Audit logs retention',
limited: 'Audit logs retention: {{count, number}} day',

View file

@ -26,7 +26,7 @@ const quota_table = {
},
user_authn: {
title: 'User authentication',
omni_sign_in: 'Omni sign-in',
omni_sign_in: 'Enterprise SSO (Q4, 2023)',
password: 'Password',
passwordless: 'Passwordless - Email and SMS',
email_connector: 'Email connector',
@ -50,6 +50,10 @@ const quota_table = {
title: 'Webhooks',
hooks: 'Webhooks',
},
organization: {
title: 'Organization',
organization: 'Organization (Q4, 2023)',
},
support: {
title: 'Support',
community: 'Community',

View file

@ -47,10 +47,14 @@ const quota_item = {
not_eligible: 'Elimine su dominio personalizado',
},
omni_sign_in_enabled: {
name: 'Inicio de sesión Omni',
limited: 'Inicio de sesión Omni',
unlimited: 'Inicio de sesión Omni',
not_eligible: 'Deshabilite su inicio de sesión Omni',
/** UNTRANSLATED */
name: 'SSO',
/** UNTRANSLATED */
limited: 'SSO',
/** UNTRANSLATED */
unlimited: 'SSO',
/** UNTRANSLATED */
not_eligible: 'Disable your SSO',
},
built_in_email_connector_enabled: {
name: 'Conector de correo electrónico integrado',
@ -93,6 +97,16 @@ const quota_item = {
unlimited: 'Webhooks ilimitados',
not_eligible: 'Elimina tus webhooks',
},
organization_enabled: {
/** UNTRANSLATED */
name: 'Organization',
/** UNTRANSLATED */
limited: 'Organization',
/** UNTRANSLATED */
unlimited: 'Organization',
/** UNTRANSLATED */
not_eligible: 'Remove your organizations',
},
audit_logs_retention_days: {
name: 'Conservación de registros de auditoría',
limited: 'Conservación de registros de auditoría: {{count, number}} día',

View file

@ -26,7 +26,8 @@ const quota_table = {
},
user_authn: {
title: 'Autenticación de usuario',
omni_sign_in: 'Inicio de sesión omnicanal',
/** UNTRANSLATED */
omni_sign_in: 'Enterprise SSO (Q4, 2023)',
password: 'Contraseña',
passwordless: 'Sin contraseña - Correo electrónico y SMS',
email_connector: 'Conector de correo electrónico',
@ -50,6 +51,12 @@ const quota_table = {
title: 'Webhooks',
hooks: 'Webhooks',
},
organization: {
/** UNTRANSLATED */
title: 'Organization',
/** UNTRANSLATED */
organization: 'Organization (Q4, 2023)',
},
support: {
title: 'Soporte',
community: 'Comunidad',

View file

@ -47,10 +47,14 @@ const quota_item = {
not_eligible: 'Supprimez votre domaine personnalisé',
},
omni_sign_in_enabled: {
name: 'Connexion omni',
limited: 'Connexion omni',
unlimited: 'Connexion omni',
not_eligible: 'Désactivez votre connexion omni',
/** UNTRANSLATED */
name: 'SSO',
/** UNTRANSLATED */
limited: 'SSO',
/** UNTRANSLATED */
unlimited: 'SSO',
/** UNTRANSLATED */
not_eligible: 'Disable your SSO',
},
built_in_email_connector_enabled: {
name: 'Connecteur de messagerie intégré',
@ -93,6 +97,16 @@ const quota_item = {
unlimited: 'Webhooks illimités',
not_eligible: 'Supprimez vos webhooks',
},
organization_enabled: {
/** UNTRANSLATED */
name: 'Organization',
/** UNTRANSLATED */
limited: 'Organization',
/** UNTRANSLATED */
unlimited: 'Organization',
/** UNTRANSLATED */
not_eligible: 'Remove your organizations',
},
audit_logs_retention_days: {
name: "Conservation des journaux d'audit",
limited: "Conservation des journaux d'audit: {{count, number}} jour",

View file

@ -26,7 +26,8 @@ const quota_table = {
},
user_authn: {
title: 'Authentification des utilisateurs',
omni_sign_in: 'Connexion omnicanale',
/** UNTRANSLATED */
omni_sign_in: 'Enterprise SSO (Q4, 2023)',
password: 'Mot de passe',
passwordless: 'Sans mot de passe - Email et SMS',
email_connector: 'Connecteur email',
@ -50,6 +51,12 @@ const quota_table = {
title: 'Webhooks',
hooks: 'Webhooks',
},
organization: {
/** UNTRANSLATED */
title: 'Organization',
/** UNTRANSLATED */
organization: 'Organization (Q4, 2023)',
},
support: {
title: 'Support',
community: 'Communauté',

View file

@ -47,10 +47,14 @@ const quota_item = {
not_eligible: 'Rimuovi il tuo dominio personalizzato',
},
omni_sign_in_enabled: {
name: 'Omnisign-in',
limited: 'Omnisign-in',
unlimited: 'Omnisign-in',
not_eligible: 'Disabilita il tuo Omnisign-in',
/** UNTRANSLATED */
name: 'SSO',
/** UNTRANSLATED */
limited: 'SSO',
/** UNTRANSLATED */
unlimited: 'SSO',
/** UNTRANSLATED */
not_eligible: 'Disable your SSO',
},
built_in_email_connector_enabled: {
name: 'Connettore email incorporato',
@ -93,6 +97,16 @@ const quota_item = {
unlimited: 'Webhook illimitati',
not_eligible: 'Rimuovi i tuoi webhook',
},
organization_enabled: {
/** UNTRANSLATED */
name: 'Organization',
/** UNTRANSLATED */
limited: 'Organization',
/** UNTRANSLATED */
unlimited: 'Organization',
/** UNTRANSLATED */
not_eligible: 'Remove your organizations',
},
audit_logs_retention_days: {
name: 'Conservazione log di audit',
limited: 'Conservazione log di audit: {{count, number}} giorno',

View file

@ -26,7 +26,8 @@ const quota_table = {
},
user_authn: {
title: 'Autenticazione utente',
omni_sign_in: 'Accesso onnicomprensivo',
/** UNTRANSLATED */
omni_sign_in: 'Enterprise SSO (Q4, 2023)',
password: 'Password',
passwordless: 'Senza password - E-mail e SMS',
email_connector: 'Connettore e-mail',
@ -50,6 +51,12 @@ const quota_table = {
title: 'Webhooks',
hooks: 'Webhooks',
},
organization: {
/** UNTRANSLATED */
title: 'Organization',
/** UNTRANSLATED */
organization: 'Organization (Q4, 2023)',
},
support: {
title: 'Assistenza',
community: 'Community',

View file

@ -47,10 +47,14 @@ const quota_item = {
not_eligible: 'カスタムドメインを削除してください',
},
omni_sign_in_enabled: {
name: 'Omniサインイン',
limited: 'Omniサインイン',
unlimited: 'Omniサインイン',
not_eligible: 'Omniサインインを無効にしてください',
/** UNTRANSLATED */
name: 'SSO',
/** UNTRANSLATED */
limited: 'SSO',
/** UNTRANSLATED */
unlimited: 'SSO',
/** UNTRANSLATED */
not_eligible: 'Disable your SSO',
},
built_in_email_connector_enabled: {
name: '組込みメールコネクタ',
@ -93,6 +97,16 @@ const quota_item = {
unlimited: '無制限のWebhooks',
not_eligible: 'Webhookを削除してください',
},
organization_enabled: {
/** UNTRANSLATED */
name: 'Organization',
/** UNTRANSLATED */
limited: 'Organization',
/** UNTRANSLATED */
unlimited: 'Organization',
/** UNTRANSLATED */
not_eligible: 'Remove your organizations',
},
audit_logs_retention_days: {
name: '監査ログの保持期間',
limited: '監査ログの保持期間: {{count, number}} 日',

View file

@ -26,7 +26,8 @@ const quota_table = {
},
user_authn: {
title: 'ユーザー認証',
omni_sign_in: 'オムニサインイン',
/** UNTRANSLATED */
omni_sign_in: 'Enterprise SSO (Q4, 2023)',
password: 'パスワード',
passwordless: 'パスワードレス - E-mailとSMS',
email_connector: 'E-mailコネクタ',
@ -50,6 +51,12 @@ const quota_table = {
title: 'ウェブフック',
hooks: 'ウェブフック',
},
organization: {
/** UNTRANSLATED */
title: 'Organization',
/** UNTRANSLATED */
organization: 'Organization (Q4, 2023)',
},
support: {
title: 'サポート',
community: 'コミュニティ',

View file

@ -47,10 +47,14 @@ const quota_item = {
not_eligible: '사용자 정의 도메인을 제거하십시오',
},
omni_sign_in_enabled: {
name: 'Omin 사인인',
limited: 'Omin 사인인',
unlimited: 'Omin 사인인',
not_eligible: 'Omin 사인인을 비활성화하세요',
/** UNTRANSLATED */
name: 'SSO',
/** UNTRANSLATED */
limited: 'SSO',
/** UNTRANSLATED */
unlimited: 'SSO',
/** UNTRANSLATED */
not_eligible: 'Disable your SSO',
},
built_in_email_connector_enabled: {
name: '내장된 이메일 커넥터',
@ -93,6 +97,16 @@ const quota_item = {
unlimited: '무제한 Webhooks',
not_eligible: '웹훅을 삭제하세요',
},
organization_enabled: {
/** UNTRANSLATED */
name: 'Organization',
/** UNTRANSLATED */
limited: 'Organization',
/** UNTRANSLATED */
unlimited: 'Organization',
/** UNTRANSLATED */
not_eligible: 'Remove your organizations',
},
audit_logs_retention_days: {
name: '감사 로그 보존 기간',
limited: '감사 로그 보존 기간: {{count, number}} 일',

View file

@ -26,7 +26,8 @@ const quota_table = {
},
user_authn: {
title: '사용자 인증',
omni_sign_in: '옴니 사인인',
/** UNTRANSLATED */
omni_sign_in: 'Enterprise SSO (Q4, 2023)',
password: '비밀번호',
passwordless: '비밀번호 없음 - 이메일과 SMS',
email_connector: '이메일 커넥터',
@ -50,6 +51,12 @@ const quota_table = {
title: 'Webhooks',
hooks: 'Webhooks',
},
organization: {
/** UNTRANSLATED */
title: 'Organization',
/** UNTRANSLATED */
organization: 'Organization (Q4, 2023)',
},
support: {
title: '지원',
community: '커뮤니티',

View file

@ -47,10 +47,14 @@ const quota_item = {
not_eligible: 'Usuń swoją niestandardową domenę',
},
omni_sign_in_enabled: {
name: 'Omni logowanie',
limited: 'Omni logowanie',
unlimited: 'Omni logowanie',
not_eligible: 'Wyłącz swoje omni logowanie',
/** UNTRANSLATED */
name: 'SSO',
/** UNTRANSLATED */
limited: 'SSO',
/** UNTRANSLATED */
unlimited: 'SSO',
/** UNTRANSLATED */
not_eligible: 'Disable your SSO',
},
built_in_email_connector_enabled: {
name: 'Wbudowany konektor e-mail',
@ -93,6 +97,16 @@ const quota_item = {
unlimited: 'Nieograniczona liczba webhooków',
not_eligible: 'Usuń swoje webhooki',
},
organization_enabled: {
/** UNTRANSLATED */
name: 'Organization',
/** UNTRANSLATED */
limited: 'Organization',
/** UNTRANSLATED */
unlimited: 'Organization',
/** UNTRANSLATED */
not_eligible: 'Remove your organizations',
},
audit_logs_retention_days: {
name: 'Przechowywanie dzienników audytowych',
limited: 'Przechowywanie dzienników audytowych: {{count, number}} dzień',

View file

@ -26,7 +26,8 @@ const quota_table = {
},
user_authn: {
title: 'Uwierzytelnianie użytkowników',
omni_sign_in: 'Omni logowanie',
/** UNTRANSLATED */
omni_sign_in: 'Enterprise SSO (Q4, 2023)',
password: 'Hasło',
passwordless: 'Logowanie bez hasła - E-mail i SMS',
email_connector: 'Podłączenie e-mail',
@ -50,6 +51,12 @@ const quota_table = {
title: 'Webhooki',
hooks: 'Webhooki',
},
organization: {
/** UNTRANSLATED */
title: 'Organization',
/** UNTRANSLATED */
organization: 'Organization (Q4, 2023)',
},
support: {
title: 'Wsparcie',
community: 'Społeczność',

View file

@ -47,10 +47,14 @@ const quota_item = {
not_eligible: 'Remova seu domínio personalizado',
},
omni_sign_in_enabled: {
name: 'Omni sign-in',
limited: 'Omni sign-in',
unlimited: 'Omni sign-in',
not_eligible: 'Desabilite seu omni sign-in',
/** UNTRANSLATED */
name: 'SSO',
/** UNTRANSLATED */
limited: 'SSO',
/** UNTRANSLATED */
unlimited: 'SSO',
/** UNTRANSLATED */
not_eligible: 'Disable your SSO',
},
built_in_email_connector_enabled: {
name: 'Conector de email incorporado',
@ -93,6 +97,16 @@ const quota_item = {
unlimited: 'Webhooks ilimitados',
not_eligible: 'Remova seus webhooks',
},
organization_enabled: {
/** UNTRANSLATED */
name: 'Organization',
/** UNTRANSLATED */
limited: 'Organization',
/** UNTRANSLATED */
unlimited: 'Organization',
/** UNTRANSLATED */
not_eligible: 'Remove your organizations',
},
audit_logs_retention_days: {
name: 'Permanência de registros de auditoria',
limited: 'Permanência de registros de auditoria: {{count, number}} dia',

View file

@ -26,7 +26,8 @@ const quota_table = {
},
user_authn: {
title: 'Autenticação de usuário',
omni_sign_in: 'Entrada Omni',
/** UNTRANSLATED */
omni_sign_in: 'Enterprise SSO (Q4, 2023)',
password: 'Senha',
passwordless: 'Sem senha - E-mail e SMS',
email_connector: 'Conector de e-mail',
@ -50,6 +51,12 @@ const quota_table = {
title: 'Webhooks',
hooks: 'Webhooks',
},
organization: {
/** UNTRANSLATED */
title: 'Organization',
/** UNTRANSLATED */
organization: 'Organization (Q4, 2023)',
},
support: {
title: 'Suporte',
community: 'Comunidade',

View file

@ -47,10 +47,14 @@ const quota_item = {
not_eligible: 'Remover o teu domínio personalizado',
},
omni_sign_in_enabled: {
name: 'Omni sign-in',
limited: 'Omni sign-in',
unlimited: 'Omni sign-in',
not_eligible: 'Desativar o teu omni sign-in',
/** UNTRANSLATED */
name: 'SSO',
/** UNTRANSLATED */
limited: 'SSO',
/** UNTRANSLATED */
unlimited: 'SSO',
/** UNTRANSLATED */
not_eligible: 'Disable your SSO',
},
built_in_email_connector_enabled: {
name: 'Conector de e-mail incorporado',
@ -93,6 +97,16 @@ const quota_item = {
unlimited: 'Webhooks ilimitados',
not_eligible: 'Remova os seus webhooks',
},
organization_enabled: {
/** UNTRANSLATED */
name: 'Organization',
/** UNTRANSLATED */
limited: 'Organization',
/** UNTRANSLATED */
unlimited: 'Organization',
/** UNTRANSLATED */
not_eligible: 'Remove your organizations',
},
audit_logs_retention_days: {
name: 'Conservação de registos de auditoria',
limited: 'Conservação de registos de auditoria: {{count, number}} dia',

View file

@ -26,7 +26,8 @@ const quota_table = {
},
user_authn: {
title: 'Autenticação do utilizador',
omni_sign_in: 'Início de sessão Omni',
/** UNTRANSLATED */
omni_sign_in: 'Enterprise SSO (Q4, 2023)',
password: 'Palavra-passe',
passwordless: 'Sem palavra-passe - E-mail e SMS',
email_connector: 'Conector de e-mail',
@ -50,6 +51,12 @@ const quota_table = {
title: 'Hooks',
hooks: 'Hooks',
},
organization: {
/** UNTRANSLATED */
title: 'Organization',
/** UNTRANSLATED */
organization: 'Organization (Q4, 2023)',
},
support: {
title: 'Suporte',
community: 'Comunidade',

View file

@ -47,10 +47,14 @@ const quota_item = {
not_eligible: 'Удалите свой пользовательский домен',
},
omni_sign_in_enabled: {
name: 'Omni-вход',
limited: 'Omni-вход',
unlimited: 'Omni-вход',
not_eligible: 'Выключите свой Omni-вход',
/** UNTRANSLATED */
name: 'SSO',
/** UNTRANSLATED */
limited: 'SSO',
/** UNTRANSLATED */
unlimited: 'SSO',
/** UNTRANSLATED */
not_eligible: 'Disable your SSO',
},
built_in_email_connector_enabled: {
name: 'Встроенный электронный коннектор',
@ -93,6 +97,16 @@ const quota_item = {
unlimited: 'Неограниченное количество вебхуков',
not_eligible: 'Удалите ваши вебхуки',
},
organization_enabled: {
/** UNTRANSLATED */
name: 'Organization',
/** UNTRANSLATED */
limited: 'Organization',
/** UNTRANSLATED */
unlimited: 'Organization',
/** UNTRANSLATED */
not_eligible: 'Remove your organizations',
},
audit_logs_retention_days: {
name: 'Время хранения аудит-логов',
limited: 'Время хранения аудит-логов: {{count, number}} день',

View file

@ -26,7 +26,8 @@ const quota_table = {
},
user_authn: {
title: 'Проверка подлинности пользователя',
omni_sign_in: 'Многочисленные входы',
/** UNTRANSLATED */
omni_sign_in: 'Enterprise SSO (Q4, 2023)',
password: 'Пароль',
passwordless: 'Без пароля - Электронная почта и SMS',
email_connector: 'Подключение электронной почты',
@ -50,6 +51,12 @@ const quota_table = {
title: 'Вебхуки',
hooks: 'Вебхуки',
},
organization: {
/** UNTRANSLATED */
title: 'Organization',
/** UNTRANSLATED */
organization: 'Organization (Q4, 2023)',
},
support: {
title: 'Поддержка',
community: 'Сообщество',

View file

@ -47,10 +47,14 @@ const quota_item = {
not_eligible: 'Özel alan adınızı kaldirin',
},
omni_sign_in_enabled: {
name: 'Omni oturumu aç',
limited: 'Omni oturumu aç',
unlimited: 'Omni oturumu aç',
not_eligible: 'Omni oturumunu devre dışı bırakın',
/** UNTRANSLATED */
name: 'SSO',
/** UNTRANSLATED */
limited: 'SSO',
/** UNTRANSLATED */
unlimited: 'SSO',
/** UNTRANSLATED */
not_eligible: 'Disable your SSO',
},
built_in_email_connector_enabled: {
name: 'Dahili e-posta bağlayıcı',
@ -93,6 +97,16 @@ const quota_item = {
unlimited: 'Sınırsız webhooklar',
not_eligible: 'Webhooklarınızı kaldırın',
},
organization_enabled: {
/** UNTRANSLATED */
name: 'Organization',
/** UNTRANSLATED */
limited: 'Organization',
/** UNTRANSLATED */
unlimited: 'Organization',
/** UNTRANSLATED */
not_eligible: 'Remove your organizations',
},
audit_logs_retention_days: {
name: 'Denetim günlükleri saklama süresi',
limited: 'Denetim günlükleri saklama süresi: {{count, number}} gün',

View file

@ -26,7 +26,8 @@ const quota_table = {
},
user_authn: {
title: 'Kullanıcı Kimlik Doğrulama',
omni_sign_in: 'Çoklu oturum açma',
/** UNTRANSLATED */
omni_sign_in: 'Enterprise SSO (Q4, 2023)',
password: 'Parola',
passwordless: 'Parolasız - E-posta ve SMS',
email_connector: 'E-posta bağlayıcı',
@ -50,6 +51,12 @@ const quota_table = {
title: 'Web Kancaları',
hooks: 'Web Kancaları',
},
organization: {
/** UNTRANSLATED */
title: 'Organization',
/** UNTRANSLATED */
organization: 'Organization (Q4, 2023)',
},
support: {
title: 'Destek',
community: 'Topluluk',

View file

@ -47,10 +47,14 @@ const quota_item = {
not_eligible: '移除你的自定义域名',
},
omni_sign_in_enabled: {
name: 'Omni 登录',
limited: 'Omni 登录',
unlimited: 'Omni 登录',
not_eligible: '禁用你的 Omni 登录',
/** UNTRANSLATED */
name: 'SSO',
/** UNTRANSLATED */
limited: 'SSO',
/** UNTRANSLATED */
unlimited: 'SSO',
/** UNTRANSLATED */
not_eligible: 'Disable your SSO',
},
built_in_email_connector_enabled: {
name: '内置电子邮件连接器',
@ -93,6 +97,16 @@ const quota_item = {
unlimited: '无限制的 Webhooks',
not_eligible: '移除您的 Webhooks',
},
organization_enabled: {
/** UNTRANSLATED */
name: 'Organization',
/** UNTRANSLATED */
limited: 'Organization',
/** UNTRANSLATED */
unlimited: 'Organization',
/** UNTRANSLATED */
not_eligible: 'Remove your organizations',
},
audit_logs_retention_days: {
name: '审计日志保留',
limited: '审计日志保留:{{count, number}} 天',

View file

@ -26,7 +26,8 @@ const quota_table = {
},
user_authn: {
title: '用户认证',
omni_sign_in: '全渠道登录',
/** UNTRANSLATED */
omni_sign_in: 'Enterprise SSO (Q4, 2023)',
password: '密码',
passwordless: '免密码登录 - 电子邮件和短信',
email_connector: '电子邮件连接器',
@ -50,6 +51,12 @@ const quota_table = {
title: 'Webhooks',
hooks: 'Webhooks',
},
organization: {
/** UNTRANSLATED */
title: 'Organization',
/** UNTRANSLATED */
organization: 'Organization (Q4, 2023)',
},
support: {
title: '支持',
community: '社区',

View file

@ -47,10 +47,14 @@ const quota_item = {
not_eligible: '刪除您的自定義網域',
},
omni_sign_in_enabled: {
name: '全方位登入',
limited: '全方位登入',
unlimited: '全方位登入',
not_eligible: '停用全方位登入',
/** UNTRANSLATED */
name: 'SSO',
/** UNTRANSLATED */
limited: 'SSO',
/** UNTRANSLATED */
unlimited: 'SSO',
/** UNTRANSLATED */
not_eligible: 'Disable your SSO',
},
built_in_email_connector_enabled: {
name: '內建電子郵件連接器',
@ -93,6 +97,16 @@ const quota_item = {
unlimited: '無限制的 Webhooks',
not_eligible: '移除您的 Webhooks',
},
organization_enabled: {
/** UNTRANSLATED */
name: 'Organization',
/** UNTRANSLATED */
limited: 'Organization',
/** UNTRANSLATED */
unlimited: 'Organization',
/** UNTRANSLATED */
not_eligible: 'Remove your organizations',
},
audit_logs_retention_days: {
name: '審計日誌保留',
limited: '審計日誌保留:{{count, number}} 天',

View file

@ -26,7 +26,8 @@ const quota_table = {
},
user_authn: {
title: '用戶認證',
omni_sign_in: '萬用登錄',
/** UNTRANSLATED */
omni_sign_in: 'Enterprise SSO (Q4, 2023)',
password: '密碼',
passwordless: '免密碼登錄 - 電子郵件和短信',
email_connector: '電子郵件連接器',
@ -50,6 +51,12 @@ const quota_table = {
title: 'Webhooks',
hooks: 'Webhooks',
},
organization: {
/** UNTRANSLATED */
title: 'Organization',
/** UNTRANSLATED */
organization: 'Organization (Q4, 2023)',
},
support: {
title: '支援',
community: '社群',

View file

@ -47,10 +47,14 @@ const quota_item = {
not_eligible: '移除您的自訂網域',
},
omni_sign_in_enabled: {
name: 'Omni sign-in',
limited: 'Omni sign-in',
unlimited: 'Omni sign-in',
not_eligible: '停用您的 Omni sign-in',
/** UNTRANSLATED */
name: 'SSO',
/** UNTRANSLATED */
limited: 'SSO',
/** UNTRANSLATED */
unlimited: 'SSO',
/** UNTRANSLATED */
not_eligible: 'Disable your SSO',
},
built_in_email_connector_enabled: {
name: '內建電子郵件連接程式',
@ -93,6 +97,16 @@ const quota_item = {
unlimited: '無限制的 Webhooks',
not_eligible: '移除您的 Webhooks',
},
organization_enabled: {
/** UNTRANSLATED */
name: 'Organization',
/** UNTRANSLATED */
limited: 'Organization',
/** UNTRANSLATED */
unlimited: 'Organization',
/** UNTRANSLATED */
not_eligible: 'Remove your organizations',
},
audit_logs_retention_days: {
name: '審計記錄保留期限',
limited: '審計記錄保留期限:{{count, number}} 天',

View file

@ -26,7 +26,8 @@ const quota_table = {
},
user_authn: {
title: '使用者認證',
omni_sign_in: 'Omni 登入',
/** UNTRANSLATED */
omni_sign_in: 'Enterprise SSO (Q4, 2023)',
password: '密碼',
passwordless: '免密碼登入 - 電子郵件和簡訊',
email_connector: '電子郵件連接器',
@ -50,6 +51,12 @@ const quota_table = {
title: 'Webhooks',
hooks: 'Webhooks',
},
organization: {
/** UNTRANSLATED */
title: 'Organization',
/** UNTRANSLATED */
organization: 'Organization (Q4, 2023)',
},
support: {
title: '支援',
community: '社群',