diff --git a/packages/console/src/components/CreateConnectorForm/Skeleton/index.tsx b/packages/console/src/components/CreateConnectorForm/Skeleton/index.tsx index 58c2f9900..162c13f1b 100644 --- a/packages/console/src/components/CreateConnectorForm/Skeleton/index.tsx +++ b/packages/console/src/components/CreateConnectorForm/Skeleton/index.tsx @@ -5,10 +5,14 @@ import * as radioGroupStyles from '../ConnectorRadioGroup/index.module.scss'; import * as styles from './index.module.scss'; -function Skeleton() { +type Props = { + numberOfLoadingConnectors?: number; +}; + +function Skeleton({ numberOfLoadingConnectors = 8 }: Props) { return (
- {Array.from({ length: 8 }).map((_, index) => ( + {Array.from({ length: numberOfLoadingConnectors }).map((_, index) => ( // eslint-disable-next-line react/no-array-index-key
diff --git a/packages/console/src/containers/ConsoleContent/index.tsx b/packages/console/src/containers/ConsoleContent/index.tsx index 958051bcd..d6a3b9e3c 100644 --- a/packages/console/src/containers/ConsoleContent/index.tsx +++ b/packages/console/src/containers/ConsoleContent/index.tsx @@ -116,7 +116,10 @@ function ConsoleContent() { } /> {isDevFeaturesEnabled && ( - } /> + + } /> + } /> + )} } /> diff --git a/packages/console/src/pages/EnterpriseSso/SsoCreationModal/SsoConnectorRadioGroup/SsoConnectorRadio/index.module.scss b/packages/console/src/pages/EnterpriseSso/SsoCreationModal/SsoConnectorRadioGroup/SsoConnectorRadio/index.module.scss new file mode 100644 index 000000000..b6666fb71 --- /dev/null +++ b/packages/console/src/pages/EnterpriseSso/SsoCreationModal/SsoConnectorRadioGroup/SsoConnectorRadio/index.module.scss @@ -0,0 +1,46 @@ +@use '@/scss/underscore' as _; + +.ssoConnector { + font: var(--font-body-2); + display: flex; + + .content { + flex: 1; + margin-left: _.unit(3); + + .name { + font: var(--font-label-2); + @include _.multi-line-ellipsis(1); + padding-right: _.unit(3); + } + + .description { + font: var(--font-body-3); + color: var(--color-text-secondary); + margin-top: _.unit(1); + @include _.multi-line-ellipsis(4); + } + } +} + +.container { + width: 40px; + height: 40px; + border-radius: 8px; + background-color: var(--color-hover); + display: flex; + align-items: center; + justify-content: center; + flex-shrink: 0; + + > img { + width: 28px; + height: 28px; + } +} + +.logo { + width: 40px; + height: 40px; + flex-shrink: 0; +} diff --git a/packages/console/src/pages/EnterpriseSso/SsoCreationModal/SsoConnectorRadioGroup/SsoConnectorRadio/index.tsx b/packages/console/src/pages/EnterpriseSso/SsoCreationModal/SsoConnectorRadioGroup/SsoConnectorRadio/index.tsx new file mode 100644 index 000000000..2ff50caac --- /dev/null +++ b/packages/console/src/pages/EnterpriseSso/SsoCreationModal/SsoConnectorRadioGroup/SsoConnectorRadio/index.tsx @@ -0,0 +1,33 @@ +import { type SsoConnectorFactoryDetail } from '@logto/schemas'; +import classNames from 'classnames'; + +import ImageWithErrorFallback from '@/ds-components/ImageWithErrorFallback'; + +import * as styles from './index.module.scss'; + +type Props = { + data: SsoConnectorFactoryDetail; +}; + +function SsoConnectorRadio({ data: { providerName, logo, description } }: Props) { + return ( +
+ +
+
+ {providerName} +
+
+ {description} +
+
+
+ ); +} + +export default SsoConnectorRadio; diff --git a/packages/console/src/pages/EnterpriseSso/SsoCreationModal/SsoConnectorRadioGroup/index.module.scss b/packages/console/src/pages/EnterpriseSso/SsoCreationModal/SsoConnectorRadioGroup/index.module.scss new file mode 100644 index 000000000..0a7e72f53 --- /dev/null +++ b/packages/console/src/pages/EnterpriseSso/SsoCreationModal/SsoConnectorRadioGroup/index.module.scss @@ -0,0 +1,40 @@ +@use '@/scss/underscore' as _; +@use '@/scss/dimensions' as dim; + +.ssoConnectorGroup { + gap: _.unit(4); + display: grid; + grid-template-columns: repeat(4, 1fr); + + @media screen and (max-width: dim.$modal-layout-grid-large) { + grid-template-columns: repeat(3, 1fr); + } + + @media screen and (max-width: dim.$modal-layout-grid-medium) { + grid-template-columns: repeat(2, 1fr); + } + + @media screen and (max-width: dim.$modal-layout-grid-small) { + grid-template-columns: repeat(1, 1fr); + } + + &.medium { + grid-template-columns: repeat(2, 1fr); + + @media screen and (max-width: dim.$modal-layout-grid-small) { + grid-template-columns: repeat(1, 1fr); + } + } + + &.large { + grid-template-columns: repeat(3, 1fr); + + @media screen and (max-width: dim.$modal-layout-grid-medium) { + grid-template-columns: repeat(2, 1fr); + } + + @media screen and (max-width: dim.$modal-layout-grid-small) { + grid-template-columns: repeat(1, 1fr); + } + } +} diff --git a/packages/console/src/pages/EnterpriseSso/SsoCreationModal/SsoConnectorRadioGroup/index.tsx b/packages/console/src/pages/EnterpriseSso/SsoCreationModal/SsoConnectorRadioGroup/index.tsx new file mode 100644 index 000000000..b63ec4cad --- /dev/null +++ b/packages/console/src/pages/EnterpriseSso/SsoCreationModal/SsoConnectorRadioGroup/index.tsx @@ -0,0 +1,37 @@ +import { type SsoConnectorFactoryDetail } from '@logto/schemas'; +import classNames from 'classnames'; + +import { type ConnectorRadioGroupSize } from '@/components/CreateConnectorForm/ConnectorRadioGroup'; +import RadioGroup, { Radio } from '@/ds-components/RadioGroup'; + +import SsoConnectorRadio from './SsoConnectorRadio'; +import * as styles from './index.module.scss'; + +type Props = { + name: string; + value?: string; + className?: string; + size: ConnectorRadioGroupSize; + connectors: SsoConnectorFactoryDetail[]; + onChange: (providerName: string) => void; +}; + +function SsoConnectorRadioGroup({ name, value, className, size, connectors, onChange }: Props) { + return ( + + {connectors.map((data) => ( + + + + ))} + + ); +} + +export default SsoConnectorRadioGroup; diff --git a/packages/console/src/pages/EnterpriseSso/SsoCreationModal/index.module.scss b/packages/console/src/pages/EnterpriseSso/SsoCreationModal/index.module.scss new file mode 100644 index 000000000..79ff58842 --- /dev/null +++ b/packages/console/src/pages/EnterpriseSso/SsoCreationModal/index.module.scss @@ -0,0 +1,7 @@ +@use '@/scss/underscore' as _; + +.textDivider { + font: var(--font-body-2); + color: var(--color-text-secondary); + margin: _.unit(6) 0 _.unit(4); +} diff --git a/packages/console/src/pages/EnterpriseSso/SsoCreationModal/index.tsx b/packages/console/src/pages/EnterpriseSso/SsoCreationModal/index.tsx new file mode 100644 index 000000000..33f87cdec --- /dev/null +++ b/packages/console/src/pages/EnterpriseSso/SsoCreationModal/index.tsx @@ -0,0 +1,150 @@ +import { type SsoConnectorFactoriesResponse, type SsoConnector } from '@logto/schemas'; +import { useMemo, useState } from 'react'; +import { useForm } from 'react-hook-form'; +import { useTranslation } from 'react-i18next'; +import Modal from 'react-modal'; +import useSWR from 'swr'; + +import Skeleton from '@/components/CreateConnectorForm/Skeleton'; +import { getConnectorRadioGroupSize } from '@/components/CreateConnectorForm/utils'; +import Button from '@/ds-components/Button'; +import DynamicT from '@/ds-components/DynamicT'; +import FormField from '@/ds-components/FormField'; +import ModalLayout from '@/ds-components/ModalLayout'; +import TextInput from '@/ds-components/TextInput'; +import { type RequestError } from '@/hooks/use-api'; +import useApi from '@/hooks/use-api'; +import * as modalStyles from '@/scss/modal.module.scss'; +import { trySubmitSafe } from '@/utils/form'; + +import SsoConnectorRadioGroup from './SsoConnectorRadioGroup'; +import * as styles from './index.module.scss'; + +type Props = { + isOpen: boolean; + onClose: (ssoConnectorId?: string) => void; +}; + +type FormType = { + connectorName: string; +}; + +function SsoCreationModal({ isOpen, onClose: rawOnClose }: Props) { + const { t } = useTranslation(undefined, { keyPrefix: 'admin_console' }); + const [selectedProviderName, setSelectedProviderName] = useState(); + const { data, error } = useSWR( + 'api/sso-connector-factories' + ); + const { + reset, + register, + handleSubmit, + formState: { isSubmitting, errors }, + } = useForm(); + const api = useApi(); + + const isLoading = !data && !error; + + const { standardConnectors = [], providerConnectors = [] } = data ?? {}; + + const radioGroupSize = useMemo( + () => getConnectorRadioGroupSize(standardConnectors.length + providerConnectors.length), + [standardConnectors, providerConnectors] + ); + + const isCreateButtonDisabled = useMemo( + () => + ![...standardConnectors, ...providerConnectors].some( + ({ providerName }) => selectedProviderName === providerName + ), + [selectedProviderName, standardConnectors, providerConnectors] + ); + + // `rawOnClose` does not clean the state of the modal. + const onClose = (ssoConnectorId?: string) => { + setSelectedProviderName(undefined); + reset(); + rawOnClose(ssoConnectorId); + }; + + const handleSsoSelection = (providerName: string) => { + setSelectedProviderName(providerName); + }; + + const onSubmit = handleSubmit( + trySubmitSafe(async (formData) => { + if (isSubmitting) { + return; + } + + const createdSsoConnector = await api + .post(`api/sso-connectors`, { json: { ...formData, providerName: selectedProviderName } }) + .json(); + + onClose(createdSsoConnector.id); + }) + ); + + if (!isOpen) { + return null; + } + + return ( + { + onClose(); + }} + > + + } + size={radioGroupSize} + onClose={onClose} + > + {isLoading && } + {error?.message} + {providerConnectors.length > 0 && ( + <> + +
+ +
+ + )} + + + + +
+
+ ); +} + +export default SsoCreationModal; diff --git a/packages/console/src/pages/EnterpriseSso/index.tsx b/packages/console/src/pages/EnterpriseSso/index.tsx index e3ca0087a..beabbe040 100644 --- a/packages/console/src/pages/EnterpriseSso/index.tsx +++ b/packages/console/src/pages/EnterpriseSso/index.tsx @@ -2,6 +2,7 @@ import { withAppInsights } from '@logto/app-insights/react'; import { type SsoConnectorWithProviderConfig, Theme } from '@logto/schemas'; import { conditional } from '@silverhand/essentials'; import { useTranslation } from 'react-i18next'; +import { useLocation } from 'react-router-dom'; import useSWR from 'swr'; import Plus from '@/assets/icons/plus.svg'; @@ -20,16 +21,19 @@ import useTenantPathname from '@/hooks/use-tenant-pathname'; import useTheme from '@/hooks/use-theme'; import { buildUrl } from '@/utils/url'; +import SsoCreationModal from './SsoCreationModal'; import * as styles from './index.module.scss'; const pageSize = defaultPageSize; const enterpriseSsoPathname = '/enterprise-sso'; const createEnterpriseSsoPathname = `${enterpriseSsoPathname}/create`; +const buildGuidePathname = (id: string) => `${enterpriseSsoPathname}/${id}/guide`; const buildDetailsPathname = (id: string) => `${enterpriseSsoPathname}/${id}`; function EnterpriseSsoConnectors() { const theme = useTheme(); + const { pathname } = useLocation(); const { navigate } = useTenantPathname(); const { t } = useTranslation(undefined, { keyPrefix: 'admin_console' }); const [{ page }, updateSearchParameters] = useSearchParametersWatcher({ @@ -163,6 +167,19 @@ function EnterpriseSsoConnectors() { ), onRetry: async () => mutate(undefined, true), }} + widgets={ + { + if (id) { + navigate(buildGuidePathname(id), { replace: true }); + return; + } + + navigate(enterpriseSsoPathname); + }} + /> + } /> ); } diff --git a/packages/phrases/src/locales/de/translation/admin-console/enterprise-sso.ts b/packages/phrases/src/locales/de/translation/admin-console/enterprise-sso.ts index fa9db12c4..a938e55e1 100644 --- a/packages/phrases/src/locales/de/translation/admin-console/enterprise-sso.ts +++ b/packages/phrases/src/locales/de/translation/admin-console/enterprise-sso.ts @@ -24,6 +24,18 @@ const enterprise_sso = { /** UNTRANSLATED */ placeholder_description: 'Logto has provided many built-in enterprise identity providers to connect, meantime you can create your own with standard protocols.', + create_modal: { + /** UNTRANSLATED */ + title: 'Add enterprise connector', + /** UNTRANSLATED */ + text_divider: 'Or you can customize your connector by a standard protocol.', + /** UNTRANSLATED */ + connector_name_field_title: 'Connector name', + /** UNTRANSLATED */ + connector_name_field_placeholder: 'Name for the enterprise identity provider', + /** UNTRANSLATED */ + create_button_text: 'Create connector', + }, }; export default Object.freeze(enterprise_sso); diff --git a/packages/phrases/src/locales/en/translation/admin-console/enterprise-sso.ts b/packages/phrases/src/locales/en/translation/admin-console/enterprise-sso.ts index c467d48fa..9a244c83e 100644 --- a/packages/phrases/src/locales/en/translation/admin-console/enterprise-sso.ts +++ b/packages/phrases/src/locales/en/translation/admin-console/enterprise-sso.ts @@ -12,6 +12,13 @@ const enterprise_sso = { placeholder_title: 'Enterprise connector', placeholder_description: 'Logto has provided many built-in enterprise identity providers to connect, meantime you can create your own with standard protocols.', + create_modal: { + title: 'Add enterprise connector', + text_divider: 'Or you can customize your connector by a standard protocol.', + connector_name_field_title: 'Connector name', + connector_name_field_placeholder: 'Name for the enterprise identity provider', + create_button_text: 'Create connector', + }, }; export default Object.freeze(enterprise_sso); diff --git a/packages/phrases/src/locales/es/translation/admin-console/enterprise-sso.ts b/packages/phrases/src/locales/es/translation/admin-console/enterprise-sso.ts index fa9db12c4..a938e55e1 100644 --- a/packages/phrases/src/locales/es/translation/admin-console/enterprise-sso.ts +++ b/packages/phrases/src/locales/es/translation/admin-console/enterprise-sso.ts @@ -24,6 +24,18 @@ const enterprise_sso = { /** UNTRANSLATED */ placeholder_description: 'Logto has provided many built-in enterprise identity providers to connect, meantime you can create your own with standard protocols.', + create_modal: { + /** UNTRANSLATED */ + title: 'Add enterprise connector', + /** UNTRANSLATED */ + text_divider: 'Or you can customize your connector by a standard protocol.', + /** UNTRANSLATED */ + connector_name_field_title: 'Connector name', + /** UNTRANSLATED */ + connector_name_field_placeholder: 'Name for the enterprise identity provider', + /** UNTRANSLATED */ + create_button_text: 'Create connector', + }, }; export default Object.freeze(enterprise_sso); diff --git a/packages/phrases/src/locales/fr/translation/admin-console/enterprise-sso.ts b/packages/phrases/src/locales/fr/translation/admin-console/enterprise-sso.ts index fa9db12c4..a938e55e1 100644 --- a/packages/phrases/src/locales/fr/translation/admin-console/enterprise-sso.ts +++ b/packages/phrases/src/locales/fr/translation/admin-console/enterprise-sso.ts @@ -24,6 +24,18 @@ const enterprise_sso = { /** UNTRANSLATED */ placeholder_description: 'Logto has provided many built-in enterprise identity providers to connect, meantime you can create your own with standard protocols.', + create_modal: { + /** UNTRANSLATED */ + title: 'Add enterprise connector', + /** UNTRANSLATED */ + text_divider: 'Or you can customize your connector by a standard protocol.', + /** UNTRANSLATED */ + connector_name_field_title: 'Connector name', + /** UNTRANSLATED */ + connector_name_field_placeholder: 'Name for the enterprise identity provider', + /** UNTRANSLATED */ + create_button_text: 'Create connector', + }, }; export default Object.freeze(enterprise_sso); diff --git a/packages/phrases/src/locales/it/translation/admin-console/enterprise-sso.ts b/packages/phrases/src/locales/it/translation/admin-console/enterprise-sso.ts index fa9db12c4..a938e55e1 100644 --- a/packages/phrases/src/locales/it/translation/admin-console/enterprise-sso.ts +++ b/packages/phrases/src/locales/it/translation/admin-console/enterprise-sso.ts @@ -24,6 +24,18 @@ const enterprise_sso = { /** UNTRANSLATED */ placeholder_description: 'Logto has provided many built-in enterprise identity providers to connect, meantime you can create your own with standard protocols.', + create_modal: { + /** UNTRANSLATED */ + title: 'Add enterprise connector', + /** UNTRANSLATED */ + text_divider: 'Or you can customize your connector by a standard protocol.', + /** UNTRANSLATED */ + connector_name_field_title: 'Connector name', + /** UNTRANSLATED */ + connector_name_field_placeholder: 'Name for the enterprise identity provider', + /** UNTRANSLATED */ + create_button_text: 'Create connector', + }, }; export default Object.freeze(enterprise_sso); diff --git a/packages/phrases/src/locales/ja/translation/admin-console/enterprise-sso.ts b/packages/phrases/src/locales/ja/translation/admin-console/enterprise-sso.ts index fa9db12c4..a938e55e1 100644 --- a/packages/phrases/src/locales/ja/translation/admin-console/enterprise-sso.ts +++ b/packages/phrases/src/locales/ja/translation/admin-console/enterprise-sso.ts @@ -24,6 +24,18 @@ const enterprise_sso = { /** UNTRANSLATED */ placeholder_description: 'Logto has provided many built-in enterprise identity providers to connect, meantime you can create your own with standard protocols.', + create_modal: { + /** UNTRANSLATED */ + title: 'Add enterprise connector', + /** UNTRANSLATED */ + text_divider: 'Or you can customize your connector by a standard protocol.', + /** UNTRANSLATED */ + connector_name_field_title: 'Connector name', + /** UNTRANSLATED */ + connector_name_field_placeholder: 'Name for the enterprise identity provider', + /** UNTRANSLATED */ + create_button_text: 'Create connector', + }, }; export default Object.freeze(enterprise_sso); diff --git a/packages/phrases/src/locales/ko/translation/admin-console/enterprise-sso.ts b/packages/phrases/src/locales/ko/translation/admin-console/enterprise-sso.ts index fa9db12c4..a938e55e1 100644 --- a/packages/phrases/src/locales/ko/translation/admin-console/enterprise-sso.ts +++ b/packages/phrases/src/locales/ko/translation/admin-console/enterprise-sso.ts @@ -24,6 +24,18 @@ const enterprise_sso = { /** UNTRANSLATED */ placeholder_description: 'Logto has provided many built-in enterprise identity providers to connect, meantime you can create your own with standard protocols.', + create_modal: { + /** UNTRANSLATED */ + title: 'Add enterprise connector', + /** UNTRANSLATED */ + text_divider: 'Or you can customize your connector by a standard protocol.', + /** UNTRANSLATED */ + connector_name_field_title: 'Connector name', + /** UNTRANSLATED */ + connector_name_field_placeholder: 'Name for the enterprise identity provider', + /** UNTRANSLATED */ + create_button_text: 'Create connector', + }, }; export default Object.freeze(enterprise_sso); diff --git a/packages/phrases/src/locales/pl-pl/translation/admin-console/enterprise-sso.ts b/packages/phrases/src/locales/pl-pl/translation/admin-console/enterprise-sso.ts index fa9db12c4..a938e55e1 100644 --- a/packages/phrases/src/locales/pl-pl/translation/admin-console/enterprise-sso.ts +++ b/packages/phrases/src/locales/pl-pl/translation/admin-console/enterprise-sso.ts @@ -24,6 +24,18 @@ const enterprise_sso = { /** UNTRANSLATED */ placeholder_description: 'Logto has provided many built-in enterprise identity providers to connect, meantime you can create your own with standard protocols.', + create_modal: { + /** UNTRANSLATED */ + title: 'Add enterprise connector', + /** UNTRANSLATED */ + text_divider: 'Or you can customize your connector by a standard protocol.', + /** UNTRANSLATED */ + connector_name_field_title: 'Connector name', + /** UNTRANSLATED */ + connector_name_field_placeholder: 'Name for the enterprise identity provider', + /** UNTRANSLATED */ + create_button_text: 'Create connector', + }, }; export default Object.freeze(enterprise_sso); diff --git a/packages/phrases/src/locales/pt-br/translation/admin-console/enterprise-sso.ts b/packages/phrases/src/locales/pt-br/translation/admin-console/enterprise-sso.ts index fa9db12c4..a938e55e1 100644 --- a/packages/phrases/src/locales/pt-br/translation/admin-console/enterprise-sso.ts +++ b/packages/phrases/src/locales/pt-br/translation/admin-console/enterprise-sso.ts @@ -24,6 +24,18 @@ const enterprise_sso = { /** UNTRANSLATED */ placeholder_description: 'Logto has provided many built-in enterprise identity providers to connect, meantime you can create your own with standard protocols.', + create_modal: { + /** UNTRANSLATED */ + title: 'Add enterprise connector', + /** UNTRANSLATED */ + text_divider: 'Or you can customize your connector by a standard protocol.', + /** UNTRANSLATED */ + connector_name_field_title: 'Connector name', + /** UNTRANSLATED */ + connector_name_field_placeholder: 'Name for the enterprise identity provider', + /** UNTRANSLATED */ + create_button_text: 'Create connector', + }, }; export default Object.freeze(enterprise_sso); diff --git a/packages/phrases/src/locales/pt-pt/translation/admin-console/enterprise-sso.ts b/packages/phrases/src/locales/pt-pt/translation/admin-console/enterprise-sso.ts index fa9db12c4..a938e55e1 100644 --- a/packages/phrases/src/locales/pt-pt/translation/admin-console/enterprise-sso.ts +++ b/packages/phrases/src/locales/pt-pt/translation/admin-console/enterprise-sso.ts @@ -24,6 +24,18 @@ const enterprise_sso = { /** UNTRANSLATED */ placeholder_description: 'Logto has provided many built-in enterprise identity providers to connect, meantime you can create your own with standard protocols.', + create_modal: { + /** UNTRANSLATED */ + title: 'Add enterprise connector', + /** UNTRANSLATED */ + text_divider: 'Or you can customize your connector by a standard protocol.', + /** UNTRANSLATED */ + connector_name_field_title: 'Connector name', + /** UNTRANSLATED */ + connector_name_field_placeholder: 'Name for the enterprise identity provider', + /** UNTRANSLATED */ + create_button_text: 'Create connector', + }, }; export default Object.freeze(enterprise_sso); diff --git a/packages/phrases/src/locales/ru/translation/admin-console/enterprise-sso.ts b/packages/phrases/src/locales/ru/translation/admin-console/enterprise-sso.ts index fa9db12c4..a938e55e1 100644 --- a/packages/phrases/src/locales/ru/translation/admin-console/enterprise-sso.ts +++ b/packages/phrases/src/locales/ru/translation/admin-console/enterprise-sso.ts @@ -24,6 +24,18 @@ const enterprise_sso = { /** UNTRANSLATED */ placeholder_description: 'Logto has provided many built-in enterprise identity providers to connect, meantime you can create your own with standard protocols.', + create_modal: { + /** UNTRANSLATED */ + title: 'Add enterprise connector', + /** UNTRANSLATED */ + text_divider: 'Or you can customize your connector by a standard protocol.', + /** UNTRANSLATED */ + connector_name_field_title: 'Connector name', + /** UNTRANSLATED */ + connector_name_field_placeholder: 'Name for the enterprise identity provider', + /** UNTRANSLATED */ + create_button_text: 'Create connector', + }, }; export default Object.freeze(enterprise_sso); diff --git a/packages/phrases/src/locales/tr-tr/translation/admin-console/enterprise-sso.ts b/packages/phrases/src/locales/tr-tr/translation/admin-console/enterprise-sso.ts index fa9db12c4..a938e55e1 100644 --- a/packages/phrases/src/locales/tr-tr/translation/admin-console/enterprise-sso.ts +++ b/packages/phrases/src/locales/tr-tr/translation/admin-console/enterprise-sso.ts @@ -24,6 +24,18 @@ const enterprise_sso = { /** UNTRANSLATED */ placeholder_description: 'Logto has provided many built-in enterprise identity providers to connect, meantime you can create your own with standard protocols.', + create_modal: { + /** UNTRANSLATED */ + title: 'Add enterprise connector', + /** UNTRANSLATED */ + text_divider: 'Or you can customize your connector by a standard protocol.', + /** UNTRANSLATED */ + connector_name_field_title: 'Connector name', + /** UNTRANSLATED */ + connector_name_field_placeholder: 'Name for the enterprise identity provider', + /** UNTRANSLATED */ + create_button_text: 'Create connector', + }, }; export default Object.freeze(enterprise_sso); diff --git a/packages/phrases/src/locales/zh-cn/translation/admin-console/enterprise-sso.ts b/packages/phrases/src/locales/zh-cn/translation/admin-console/enterprise-sso.ts index fa9db12c4..a938e55e1 100644 --- a/packages/phrases/src/locales/zh-cn/translation/admin-console/enterprise-sso.ts +++ b/packages/phrases/src/locales/zh-cn/translation/admin-console/enterprise-sso.ts @@ -24,6 +24,18 @@ const enterprise_sso = { /** UNTRANSLATED */ placeholder_description: 'Logto has provided many built-in enterprise identity providers to connect, meantime you can create your own with standard protocols.', + create_modal: { + /** UNTRANSLATED */ + title: 'Add enterprise connector', + /** UNTRANSLATED */ + text_divider: 'Or you can customize your connector by a standard protocol.', + /** UNTRANSLATED */ + connector_name_field_title: 'Connector name', + /** UNTRANSLATED */ + connector_name_field_placeholder: 'Name for the enterprise identity provider', + /** UNTRANSLATED */ + create_button_text: 'Create connector', + }, }; export default Object.freeze(enterprise_sso); diff --git a/packages/phrases/src/locales/zh-hk/translation/admin-console/enterprise-sso.ts b/packages/phrases/src/locales/zh-hk/translation/admin-console/enterprise-sso.ts index fa9db12c4..a938e55e1 100644 --- a/packages/phrases/src/locales/zh-hk/translation/admin-console/enterprise-sso.ts +++ b/packages/phrases/src/locales/zh-hk/translation/admin-console/enterprise-sso.ts @@ -24,6 +24,18 @@ const enterprise_sso = { /** UNTRANSLATED */ placeholder_description: 'Logto has provided many built-in enterprise identity providers to connect, meantime you can create your own with standard protocols.', + create_modal: { + /** UNTRANSLATED */ + title: 'Add enterprise connector', + /** UNTRANSLATED */ + text_divider: 'Or you can customize your connector by a standard protocol.', + /** UNTRANSLATED */ + connector_name_field_title: 'Connector name', + /** UNTRANSLATED */ + connector_name_field_placeholder: 'Name for the enterprise identity provider', + /** UNTRANSLATED */ + create_button_text: 'Create connector', + }, }; export default Object.freeze(enterprise_sso); diff --git a/packages/phrases/src/locales/zh-tw/translation/admin-console/enterprise-sso.ts b/packages/phrases/src/locales/zh-tw/translation/admin-console/enterprise-sso.ts index fa9db12c4..a938e55e1 100644 --- a/packages/phrases/src/locales/zh-tw/translation/admin-console/enterprise-sso.ts +++ b/packages/phrases/src/locales/zh-tw/translation/admin-console/enterprise-sso.ts @@ -24,6 +24,18 @@ const enterprise_sso = { /** UNTRANSLATED */ placeholder_description: 'Logto has provided many built-in enterprise identity providers to connect, meantime you can create your own with standard protocols.', + create_modal: { + /** UNTRANSLATED */ + title: 'Add enterprise connector', + /** UNTRANSLATED */ + text_divider: 'Or you can customize your connector by a standard protocol.', + /** UNTRANSLATED */ + connector_name_field_title: 'Connector name', + /** UNTRANSLATED */ + connector_name_field_placeholder: 'Name for the enterprise identity provider', + /** UNTRANSLATED */ + create_button_text: 'Create connector', + }, }; export default Object.freeze(enterprise_sso);