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);