diff --git a/.changeset/vast-numbers-work.md b/.changeset/vast-numbers-work.md new file mode 100644 index 00000000000..cafd564d8c7 --- /dev/null +++ b/.changeset/vast-numbers-work.md @@ -0,0 +1,12 @@ +--- +'@clerk/localizations': patch +'@clerk/shared': patch +'@clerk/ui': patch +--- + +Introduce UX improvements for `` such as: + +- Show the user's primary email domain in the sidebar footer for at-a-glance context +- Render attribute-mapping and service-provider field labels per IdP nomenclature +- Add "Open test URL" button and surface a clear empty state +- Expand the appearance descriptor surface across step content so developers can override styling diff --git a/packages/localizations/src/ar-SA.ts b/packages/localizations/src/ar-SA.ts index acbbec64384..bc77a14870a 100644 --- a/packages/localizations/src/ar-SA.ts +++ b/packages/localizations/src/ar-SA.ts @@ -180,8 +180,8 @@ export const arSA: LocalizationResource = { }, configureSSO: { missingManageEnterpriseConnectionsPermission: { - subtitle: 'تواصل مع مسؤول مؤسستك للحصول على أذونات لإدارة الاتصالات المؤسسية.', - title: 'ليس لديك إذن لإدارة الاتصالات المؤسسية', + subtitle: 'تواصل مع مسؤول مؤسستك لترقية أذوناتك.', + title: 'ليس لديك إذن لإدارة تسجيل الدخول الموحد (SSO)', }, navbar: { title: 'تكوين تسجيل الدخول الموحد (SSO)', @@ -189,10 +189,6 @@ export const arSA: LocalizationResource = { selectProviderStep: { title: 'اختر المزود', subtitle: 'اختر المزود الذي ستقوم بإعداد تسجيل الدخول الموحد (SSO) له.', - body: { - title: 'اختر مزود الهوية الخاص بك', - description: 'سنرشدك خلال عملية الإعداد التفصيلية بعد ذلك.', - }, saml: { groupLabel: 'SAML', okta: 'Okta Workforce', diff --git a/packages/localizations/src/be-BY.ts b/packages/localizations/src/be-BY.ts index 1538487fea7..b24fe2a2a0e 100644 --- a/packages/localizations/src/be-BY.ts +++ b/packages/localizations/src/be-BY.ts @@ -180,9 +180,8 @@ export const beBY: LocalizationResource = { }, configureSSO: { missingManageEnterpriseConnectionsPermission: { - subtitle: - 'Звярніцеся да адміністратара вашай арганізацыі, каб атрымаць дазволы на кіраванне карпаратыўнымі падключэннямі.', - title: 'У вас няма дазволу на кіраванне карпаратыўнымі падключэннямі', + subtitle: 'Звярніцеся да адміністратара вашай арганізацыі, каб павысіць вашы дазволы.', + title: 'У вас няма дазволу на кіраванне адзіным уваходам (SSO)', }, navbar: { title: 'Налада адзінага ўваходу (SSO)', @@ -190,10 +189,6 @@ export const beBY: LocalizationResource = { selectProviderStep: { title: 'Выберыце правайдэра', subtitle: 'Выберыце правайдэра, для якога вы будзеце наладжваць SSO.', - body: { - title: 'Выберыце вашага правайдэра ідэнтыфікацыі', - description: 'Мы правядзём вас праз падрабязны працэс налады далей.', - }, saml: { groupLabel: 'SAML', okta: 'Okta Workforce', diff --git a/packages/localizations/src/bg-BG.ts b/packages/localizations/src/bg-BG.ts index c2bdb424e06..1f4fd93ba1e 100644 --- a/packages/localizations/src/bg-BG.ts +++ b/packages/localizations/src/bg-BG.ts @@ -181,9 +181,8 @@ export const bgBG: LocalizationResource = { }, configureSSO: { missingManageEnterpriseConnectionsPermission: { - subtitle: - 'Свържете се с администратора на вашата организация, за да получите разрешения за управление на корпоративни връзки.', - title: 'Нямате разрешение да управлявате корпоративни връзки', + subtitle: 'Свържете се с администратора на вашата организация, за да повишите разрешенията си.', + title: 'Нямате разрешение да управлявате единен вход (SSO)', }, navbar: { title: 'Конфигуриране на единен вход (SSO)', @@ -191,10 +190,6 @@ export const bgBG: LocalizationResource = { selectProviderStep: { title: 'Изберете доставчик', subtitle: 'Изберете доставчика, за който ще конфигурирате SSO.', - body: { - title: 'Изберете вашия доставчик на идентичност', - description: 'Ще ви преведем през подробния процес на настройка след това.', - }, saml: { groupLabel: 'SAML', okta: 'Okta Workforce', diff --git a/packages/localizations/src/bn-IN.ts b/packages/localizations/src/bn-IN.ts index cad5d735712..e762c22d12e 100644 --- a/packages/localizations/src/bn-IN.ts +++ b/packages/localizations/src/bn-IN.ts @@ -180,25 +180,21 @@ export const bnIN: LocalizationResource = { }, configureSSO: { missingManageEnterpriseConnectionsPermission: { - subtitle: 'এন্টারপ্রাইজ সংযোগ পরিচালনার অনুমতি পেতে আপনার সংস্থার প্রশাসকের সাথে যোগাযোগ করুন।', - title: 'এন্টারপ্রাইজ সংযোগ পরিচালনার অনুমতি আপনার নেই', + subtitle: 'আপনার অনুমতি আপগ্রেড করতে আপনার সংস্থার প্রশাসকের সাথে যোগাযোগ করুন।', + title: 'একক সাইন-অন (SSO) পরিচালনার অনুমতি আপনার নেই', }, navbar: { title: 'একক সাইন-অন (SSO) কনফিগার করুন', }, selectProviderStep: { - title: 'Select provider', - subtitle: 'Select the provider you are going to setup SSO for.', - body: { - title: 'Select your identity provider', - description: "We'll guide you through the detailed setup process next.", - }, + title: 'প্রদানকারী নির্বাচন করুন', + subtitle: 'আপনি যে প্রদানকারীর জন্য SSO সেটআপ করতে যাচ্ছেন তা নির্বাচন করুন।', saml: { groupLabel: 'SAML', okta: 'Okta Workforce', - customSaml: 'Custom SAML Provider', + customSaml: 'কাস্টম SAML প্রদানকারী', }, - warning: 'Once a provider is selected you cannot change again until the configuration is over', + warning: 'একবার প্রদানকারী নির্বাচন করার পরে, কনফিগারেশন শেষ না হওয়া পর্যন্ত আপনি আবার পরিবর্তন করতে পারবেন না', }, verifyEmailDomainStep: { title: 'ইমেইল ঠিকানা যাচাই করুন', diff --git a/packages/localizations/src/ca-ES.ts b/packages/localizations/src/ca-ES.ts index 6bd13c43151..3b5339884e9 100644 --- a/packages/localizations/src/ca-ES.ts +++ b/packages/localizations/src/ca-ES.ts @@ -187,9 +187,8 @@ export const caES: LocalizationResource = { }, configureSSO: { missingManageEnterpriseConnectionsPermission: { - subtitle: - "Contacta amb l'administrador de la teva organització per obtenir permisos per gestionar connexions empresarials.", - title: 'No tens permís per gestionar connexions empresarials', + subtitle: "Contacta amb l'administrador de la teva organització per ampliar els teus permisos.", + title: "No tens permís per gestionar l'inici de sessió únic (SSO)", }, navbar: { title: "Configura l'inici de sessió únic (SSO)", @@ -197,10 +196,6 @@ export const caES: LocalizationResource = { selectProviderStep: { title: 'Seleccioneu un proveïdor', subtitle: 'Seleccioneu el proveïdor per al qual configurareu SSO.', - body: { - title: "Seleccioneu el vostre proveïdor d'identitat", - description: 'Us guiarem pel procés de configuració detallat a continuació.', - }, saml: { groupLabel: 'SAML', okta: 'Okta Workforce', diff --git a/packages/localizations/src/cs-CZ.ts b/packages/localizations/src/cs-CZ.ts index ce1298ebd2f..3a5c09c266f 100644 --- a/packages/localizations/src/cs-CZ.ts +++ b/packages/localizations/src/cs-CZ.ts @@ -184,8 +184,8 @@ export const csCZ: LocalizationResource = { }, configureSSO: { missingManageEnterpriseConnectionsPermission: { - subtitle: 'Kontaktujte správce vaší organizace, abyste získali oprávnění ke správě podnikových připojení.', - title: 'Nemáte oprávnění ke správě podnikových připojení', + subtitle: 'Kontaktujte správce vaší organizace pro rozšíření vašich oprávnění.', + title: 'Nemáte oprávnění ke správě jednotného přihlášení (SSO)', }, navbar: { title: 'Nastavit jednotné přihlášení (SSO)', @@ -193,10 +193,6 @@ export const csCZ: LocalizationResource = { selectProviderStep: { title: 'Vyberte poskytovatele', subtitle: 'Vyberte poskytovatele, pro kterého budete nastavovat SSO.', - body: { - title: 'Vyberte svého poskytovatele identity', - description: 'Provedeme vás dále podrobným procesem nastavení.', - }, saml: { groupLabel: 'SAML', okta: 'Okta Workforce', diff --git a/packages/localizations/src/da-DK.ts b/packages/localizations/src/da-DK.ts index fc27e1277a8..53f74d0a66f 100644 --- a/packages/localizations/src/da-DK.ts +++ b/packages/localizations/src/da-DK.ts @@ -180,9 +180,8 @@ export const daDK: LocalizationResource = { }, configureSSO: { missingManageEnterpriseConnectionsPermission: { - subtitle: - 'Kontakt din organisations administrator for at få tilladelse til at administrere virksomhedsforbindelser.', - title: 'Du har ikke tilladelse til at administrere virksomhedsforbindelser', + subtitle: 'Kontakt din organisations administrator for at opgradere dine tilladelser.', + title: 'Du har ikke tilladelse til at administrere single sign-on (SSO)', }, navbar: { title: 'Konfigurer single sign-on (SSO)', @@ -190,10 +189,6 @@ export const daDK: LocalizationResource = { selectProviderStep: { title: 'Vælg udbyder', subtitle: 'Vælg den udbyder, du vil opsætte SSO for.', - body: { - title: 'Vælg din identitetsudbyder', - description: 'Vi guider dig gennem den detaljerede opsætningsproces næste gang.', - }, saml: { groupLabel: 'SAML', okta: 'Okta Workforce', diff --git a/packages/localizations/src/de-DE.ts b/packages/localizations/src/de-DE.ts index 472151ef874..5ebc5a9025c 100644 --- a/packages/localizations/src/de-DE.ts +++ b/packages/localizations/src/de-DE.ts @@ -186,9 +186,8 @@ export const deDE: LocalizationResource = { }, configureSSO: { missingManageEnterpriseConnectionsPermission: { - subtitle: - 'Wenden Sie sich an Ihren Organisationsadministrator, um Berechtigungen zur Verwaltung von Enterprise-Verbindungen zu erhalten.', - title: 'Sie haben keine Berechtigung, Enterprise-Verbindungen zu verwalten', + subtitle: 'Wenden Sie sich an Ihren Organisationsadministrator, um Ihre Berechtigungen zu erweitern.', + title: 'Sie haben keine Berechtigung, Single Sign-On (SSO) zu verwalten', }, navbar: { title: 'Single Sign-On (SSO) konfigurieren', @@ -196,10 +195,6 @@ export const deDE: LocalizationResource = { selectProviderStep: { title: 'Anbieter auswählen', subtitle: 'Wählen Sie den Anbieter, für den Sie SSO einrichten möchten.', - body: { - title: 'Wählen Sie Ihren Identitätsanbieter', - description: 'Wir führen Sie als nächstes durch den detaillierten Einrichtungsprozess.', - }, saml: { groupLabel: 'SAML', okta: 'Okta Workforce', diff --git a/packages/localizations/src/el-GR.ts b/packages/localizations/src/el-GR.ts index f0642b4cfdf..0ae1f413953 100644 --- a/packages/localizations/src/el-GR.ts +++ b/packages/localizations/src/el-GR.ts @@ -180,9 +180,8 @@ export const elGR: LocalizationResource = { }, configureSSO: { missingManageEnterpriseConnectionsPermission: { - subtitle: - 'Επικοινωνήστε με τον διαχειριστή του οργανισμού σας για να αποκτήσετε άδειες διαχείρισης εταιρικών συνδέσεων.', - title: 'Δεν έχετε άδεια διαχείρισης εταιρικών συνδέσεων', + subtitle: 'Επικοινωνήστε με τον διαχειριστή του οργανισμού σας για να αναβαθμίσετε τις άδειές σας.', + title: 'Δεν έχετε άδεια διαχείρισης της Ενιαίας Σύνδεσης (SSO)', }, navbar: { title: 'Διαμόρφωση Ενιαίας Σύνδεσης (SSO)', @@ -190,10 +189,6 @@ export const elGR: LocalizationResource = { selectProviderStep: { title: 'Επιλέξτε πάροχο', subtitle: 'Επιλέξτε τον πάροχο για τον οποίο θα ρυθμίσετε SSO.', - body: { - title: 'Επιλέξτε τον πάροχο ταυτότητάς σας', - description: 'Θα σας καθοδηγήσουμε στη λεπτομερή διαδικασία ρύθμισης στη συνέχεια.', - }, saml: { groupLabel: 'SAML', okta: 'Okta Workforce', diff --git a/packages/localizations/src/en-GB.ts b/packages/localizations/src/en-GB.ts index 8bb66ccc047..e3123b6333a 100644 --- a/packages/localizations/src/en-GB.ts +++ b/packages/localizations/src/en-GB.ts @@ -180,9 +180,8 @@ export const enGB: LocalizationResource = { }, configureSSO: { missingManageEnterpriseConnectionsPermission: { - subtitle: - 'Contact your organisation administrator in order to have permissions to manage enterprise connections.', - title: 'You do not have permission to manage enterprise connections', + subtitle: "Contact your organisation's administrator to upgrade your permissions.", + title: 'You do not have permission to manage Single Sign-On (SSO)', }, navbar: { title: 'Configure Single Sign-On (SSO)', @@ -190,10 +189,6 @@ export const enGB: LocalizationResource = { selectProviderStep: { title: 'Select provider', subtitle: 'Select the provider you are going to set up SSO for.', - body: { - title: 'Select your identity provider', - description: "We'll guide you through the detailed setup process next.", - }, saml: { groupLabel: 'SAML', okta: 'Okta Workforce', @@ -203,7 +198,7 @@ export const enGB: LocalizationResource = { }, verifyEmailDomainStep: { title: 'Verify email address', - subtitle: 'Verify the email address you want to enable the enterprise connection on.', + subtitle: 'Verify the domain you want to enable the enterprise connection on.', addEmailAddress: { formTitle: 'We need your email', formSubtitle: 'In order to start we will need your email address', diff --git a/packages/localizations/src/en-US.ts b/packages/localizations/src/en-US.ts index a9a83381088..974c731dc4e 100644 --- a/packages/localizations/src/en-US.ts +++ b/packages/localizations/src/en-US.ts @@ -229,20 +229,15 @@ export const enUS: LocalizationResource = { }, }, missingManageEnterpriseConnectionsPermission: { - subtitle: - 'Contact your organization administrator in order to have permissions to manage enterprise connections.', - title: 'You do not have permission to manage enterprise connections', + subtitle: "Contact your organization's administrator to upgrade your permissions.", + title: 'You do not have permission to manage Single Sign-on (SSO)', }, navbar: { title: 'Configure Single Sign-On (SSO)', }, selectProviderStep: { - title: 'Select provider', - subtitle: 'Select the provider you are going to setup SSO for.', - body: { - title: 'Select your identity provider', - description: "We'll guide you through the detailed setup process next.", - }, + title: 'Select your identity provider', + subtitle: 'We’ll guide you through the detailed setup process next.', saml: { groupLabel: 'SAML', okta: 'Okta Workforce', @@ -252,7 +247,7 @@ export const enUS: LocalizationResource = { }, verifyEmailDomainStep: { title: 'Verify email address', - subtitle: 'Verify the email address you want to enable the enterprise connection on.', + subtitle: 'Verify the domain you want to enable the enterprise connection on.', addEmailAddress: { formTitle: 'We need your email', formSubtitle: 'In order to start we will need your email address', @@ -280,17 +275,19 @@ export const enUS: LocalizationResource = { error__noSuccessfulTestRun: 'You need at least one successful test run before you can continue. Generate a test SSO URL and complete the sign-in flow.', testUrl: { - title: 'Test your SSO URL', - subtitle: 'Generate and copy a test SSO URL to authenticate with.', - actionLabel__copy: 'Copy test URL', + actionLabel__open: 'Open test URL', }, testResults: { - title: 'Test results', + title: 'Your test results', actionLabel__refresh: 'Refresh logs', polling: 'Waiting for the test run to complete…', status__success: 'Success', status__failed: 'Failed', status__pending: 'Pending', + empty: { + title: 'No test results', + subtitle: 'Use the button above to start running tests', + }, }, testRunDetails: { title: 'Test run', @@ -343,18 +340,8 @@ export const enUS: LocalizationResource = { }, }, configureStep: { - spFields: { - acsUrl: { - label: 'Single sign-on URL', - }, - spEntityId: { - label: 'Audience URI', - }, - }, attributeMapping: { title: 'We expect your SAML responses to have the following specific attributes:', - paragraph: - "These are the defaults and probably won't need you to change them. However, many SAML configuration errors are due to incorrect attribute mappings, so it's worth double-checking. Here's how:", columns: { attribute: 'Attribute', claimName: 'Claim Name', @@ -381,6 +368,25 @@ export const enUS: LocalizationResource = { }, samlOkta: { headerTitle: 'Configure Okta Workforce', + attributeMapping: { + columns: { + name: 'Name', + value: 'Value', + }, + rows: { + email: { name: 'mail', value: 'user.profile.mail' }, + firstName: { name: 'firstName', value: 'user.profile.firstName' }, + lastName: { name: 'lastName', value: 'user.profile.lastName' }, + }, + }, + spFields: { + acsUrl: { + label: 'Single sign-on URL', + }, + spEntityId: { + label: 'Audience URI (SP Entity ID)', + }, + }, createApp: { headerSubtitle: 'Create a new enterprise application in your Okta Dashboard', title: 'Create a new enterprise application in Okta', @@ -403,10 +409,10 @@ export const enUS: LocalizationResource = { step2: 'Complete the form with any comments and select Finish.', }, configureAttributes: { - headerSubtitle: 'Map users attributes from Okta to Clerk', - step1: 'In the Okta dashboard, find the Attribute Statements section.', - step2: - 'Select Add Expression for each attribute, and enter the following name and expression pairs:', + headerSubtitle: 'Map user attributes from Okta to Clerk', + step1: + 'Open the Sign On tab of your Okta application and locate the Attribute Statements section. If you don’t see it, click Show legacy configuration, then Edit.', + step2: 'Select Add Expression for each row below, then enter the matching name and value:', pairs: { conjunction: ' and ', email: { @@ -469,6 +475,26 @@ export const enUS: LocalizationResource = { }, samlCustom: { headerTitle: 'Configure your identity provider (IdP)', + attributeMapping: { + columns: { + userProfile: 'Identity Provider User Profile', + attributeName: 'Attribute Name', + }, + rows: { + id: { userProfile: 'Unique identifier representing a user', attributeName: 'id' }, + email: { userProfile: 'User’s email address', attributeName: 'email' }, + firstName: { userProfile: 'User’s first name', attributeName: 'firstName' }, + lastName: { userProfile: 'User’s last name', attributeName: 'lastName' }, + }, + }, + spFields: { + acsUrl: { + label: 'Assertion consumer service (ACS) URL', + }, + spEntityId: { + label: 'Service provider entity ID', + }, + }, createApp: { headerSubtitle: 'Register Clerk as a service provider in your IdP, then add your identity provider configuration.', diff --git a/packages/localizations/src/es-CR.ts b/packages/localizations/src/es-CR.ts index c8ee78fa910..5c193ce8b3d 100644 --- a/packages/localizations/src/es-CR.ts +++ b/packages/localizations/src/es-CR.ts @@ -180,9 +180,8 @@ export const esCR: LocalizationResource = { }, configureSSO: { missingManageEnterpriseConnectionsPermission: { - subtitle: - 'Contacta al administrador de tu organización para obtener permisos para gestionar conexiones de empresa.', - title: 'No tenés permiso para gestionar conexiones de empresa', + subtitle: 'Contactá al administrador de tu organización para mejorar tus permisos.', + title: 'No tenés permiso para gestionar el inicio de sesión único (SSO)', }, navbar: { title: 'Configurar inicio de sesión único (SSO)', @@ -190,10 +189,6 @@ export const esCR: LocalizationResource = { selectProviderStep: { title: 'Seleccionar proveedor', subtitle: 'Selecciona el proveedor para el que vas a configurar SSO.', - body: { - title: 'Selecciona tu proveedor de identidad', - description: 'Te guiaremos a través del proceso de configuración detallado a continuación.', - }, saml: { groupLabel: 'SAML', okta: 'Okta Workforce', diff --git a/packages/localizations/src/es-ES.ts b/packages/localizations/src/es-ES.ts index a405044dbc0..2ffb8d21c1b 100644 --- a/packages/localizations/src/es-ES.ts +++ b/packages/localizations/src/es-ES.ts @@ -186,9 +186,8 @@ export const esES: LocalizationResource = { }, configureSSO: { missingManageEnterpriseConnectionsPermission: { - subtitle: - 'Contacte al administrador de su organización para obtener permisos para gestionar conexiones empresariales.', - title: 'No tiene permiso para gestionar conexiones empresariales', + subtitle: 'Contacte al administrador de su organización para ampliar sus permisos.', + title: 'No tiene permiso para gestionar el inicio de sesión único (SSO)', }, navbar: { title: 'Configurar inicio de sesión único (SSO)', @@ -196,10 +195,6 @@ export const esES: LocalizationResource = { selectProviderStep: { title: 'Seleccionar proveedor', subtitle: 'Selecciona el proveedor para el que vas a configurar SSO.', - body: { - title: 'Selecciona tu proveedor de identidad', - description: 'Te guiaremos a través del proceso de configuración detallado a continuación.', - }, saml: { groupLabel: 'SAML', okta: 'Okta Workforce', diff --git a/packages/localizations/src/es-MX.ts b/packages/localizations/src/es-MX.ts index 4e0cdecae5a..1b1fa64ac67 100644 --- a/packages/localizations/src/es-MX.ts +++ b/packages/localizations/src/es-MX.ts @@ -181,9 +181,8 @@ export const esMX: LocalizationResource = { }, configureSSO: { missingManageEnterpriseConnectionsPermission: { - subtitle: - 'Contacta al administrador de tu organización para obtener permisos para administrar conexiones de empresa.', - title: 'No tienes permiso para administrar conexiones de empresa', + subtitle: 'Contacta al administrador de tu organización para ampliar tus permisos.', + title: 'No tienes permiso para administrar el inicio de sesión único (SSO)', }, navbar: { title: 'Configurar inicio de sesión único (SSO)', @@ -191,10 +190,6 @@ export const esMX: LocalizationResource = { selectProviderStep: { title: 'Seleccionar proveedor', subtitle: 'Selecciona el proveedor para el que vas a configurar SSO.', - body: { - title: 'Selecciona tu proveedor de identidad', - description: 'Te guiaremos a través del proceso de configuración detallado a continuación.', - }, saml: { groupLabel: 'SAML', okta: 'Okta Workforce', diff --git a/packages/localizations/src/es-UY.ts b/packages/localizations/src/es-UY.ts index e679a004199..bd16067ed07 100644 --- a/packages/localizations/src/es-UY.ts +++ b/packages/localizations/src/es-UY.ts @@ -180,9 +180,8 @@ export const esUY: LocalizationResource = { }, configureSSO: { missingManageEnterpriseConnectionsPermission: { - subtitle: - 'Contactá al administrador de tu organización para obtener permisos para gestionar conexiones empresariales.', - title: 'No tenés permiso para gestionar conexiones empresariales', + subtitle: 'Contactá al administrador de tu organización para ampliar tus permisos.', + title: 'No tenés permiso para gestionar el inicio de sesión único (SSO)', }, navbar: { title: 'Configurar inicio de sesión único (SSO)', @@ -190,10 +189,6 @@ export const esUY: LocalizationResource = { selectProviderStep: { title: 'Seleccionar proveedor', subtitle: 'Seleccioná el proveedor para el que vas a configurar SSO.', - body: { - title: 'Seleccioná tu proveedor de identidad', - description: 'Te guiaremos a través del proceso de configuración detallado a continuación.', - }, saml: { groupLabel: 'SAML', okta: 'Okta Workforce', diff --git a/packages/localizations/src/fa-IR.ts b/packages/localizations/src/fa-IR.ts index 51fa192ebf5..16b8afa5448 100644 --- a/packages/localizations/src/fa-IR.ts +++ b/packages/localizations/src/fa-IR.ts @@ -185,8 +185,8 @@ export const faIR: LocalizationResource = { }, configureSSO: { missingManageEnterpriseConnectionsPermission: { - subtitle: 'برای دریافت مجوز مدیریت اتصالات سازمانی با مدیر سازمان خود تماس بگیرید.', - title: 'شما اجازه مدیریت اتصالات سازمانی را ندارید', + subtitle: 'برای ارتقای مجوزهای خود با مدیر سازمان تماس بگیرید.', + title: 'شما اجازه مدیریت ورود یکپارچه (SSO) را ندارید', }, navbar: { title: 'پیکربندی ورود یکپارچه (SSO)', @@ -194,10 +194,6 @@ export const faIR: LocalizationResource = { selectProviderStep: { title: 'ارائه‌دهنده را انتخاب کنید', subtitle: 'ارائه‌دهنده‌ای را که می‌خواهید SSO را برای آن راه‌اندازی کنید، انتخاب کنید.', - body: { - title: 'ارائه‌دهنده هویت خود را انتخاب کنید', - description: 'در ادامه شما را در فرآیند راه‌اندازی دقیق راهنمایی خواهیم کرد.', - }, saml: { groupLabel: 'SAML', okta: 'Okta Workforce', diff --git a/packages/localizations/src/fi-FI.ts b/packages/localizations/src/fi-FI.ts index 5e79561a87f..7f5fa9eeb14 100644 --- a/packages/localizations/src/fi-FI.ts +++ b/packages/localizations/src/fi-FI.ts @@ -208,8 +208,8 @@ export const fiFI: LocalizationResource = { }, configureSSO: { missingManageEnterpriseConnectionsPermission: { - subtitle: 'Ota yhteyttä organisaatiosi järjestelmänvalvojaan saadaksesi oikeudet hallita yritysyhteyksiä.', - title: 'Sinulla ei ole oikeutta hallita yritysyhteyksiä', + subtitle: 'Ota yhteyttä organisaatiosi järjestelmänvalvojaan päivittääksesi oikeuksiasi.', + title: 'Sinulla ei ole oikeutta hallita kertakirjautumista (SSO)', }, navbar: { title: 'Määritä kertakirjautuminen (SSO)', @@ -217,10 +217,6 @@ export const fiFI: LocalizationResource = { selectProviderStep: { title: 'Valitse palveluntarjoaja', subtitle: 'Valitse palveluntarjoaja, jolle määrität SSO:n.', - body: { - title: 'Valitse henkilöllisyyden tarjoaja', - description: 'Opastamme sinut yksityiskohtaisen määritysprosessin läpi seuraavaksi.', - }, saml: { groupLabel: 'SAML', okta: 'Okta Workforce', diff --git a/packages/localizations/src/fr-FR.ts b/packages/localizations/src/fr-FR.ts index a7d1e6226ef..a33f1289508 100644 --- a/packages/localizations/src/fr-FR.ts +++ b/packages/localizations/src/fr-FR.ts @@ -188,9 +188,8 @@ export const frFR: LocalizationResource = { }, configureSSO: { missingManageEnterpriseConnectionsPermission: { - subtitle: - "Contactez l'administrateur de votre organisation afin d'obtenir les permissions pour gérer les connexions d'entreprise.", - title: "Vous n'avez pas la permission de gérer les connexions d'entreprise", + subtitle: "Contactez l'administrateur de votre organisation pour étendre vos permissions.", + title: "Vous n'avez pas la permission de gérer l'authentification unique (SSO)", }, navbar: { title: "Configurer l'authentification unique (SSO)", @@ -198,10 +197,6 @@ export const frFR: LocalizationResource = { selectProviderStep: { title: 'Sélectionner un fournisseur', subtitle: 'Sélectionnez le fournisseur pour lequel vous allez configurer le SSO.', - body: { - title: "Sélectionnez votre fournisseur d'identité", - description: 'Nous vous guiderons ensuite à travers le processus de configuration détaillé.', - }, saml: { groupLabel: 'SAML', okta: 'Okta Workforce', diff --git a/packages/localizations/src/he-IL.ts b/packages/localizations/src/he-IL.ts index 84baa478895..6dbf545ab7e 100644 --- a/packages/localizations/src/he-IL.ts +++ b/packages/localizations/src/he-IL.ts @@ -180,8 +180,8 @@ export const heIL: LocalizationResource = { }, configureSSO: { missingManageEnterpriseConnectionsPermission: { - subtitle: 'פנה למנהל הארגון שלך כדי לקבל הרשאות לניהול חיבורים ארגוניים.', - title: 'אין לך הרשאה לנהל חיבורים ארגוניים', + subtitle: 'פנה למנהל הארגון שלך כדי לשדרג את ההרשאות שלך.', + title: 'אין לך הרשאה לנהל כניסה אחידה (SSO)', }, navbar: { title: 'הגדרת כניסה אחידה (SSO)', @@ -189,10 +189,6 @@ export const heIL: LocalizationResource = { selectProviderStep: { title: 'בחר ספק', subtitle: 'בחר את הספק שעבורו תגדיר SSO.', - body: { - title: 'בחר את ספק הזהות שלך', - description: 'נדריך אותך בתהליך ההגדרה המפורט בהמשך.', - }, saml: { groupLabel: 'SAML', okta: 'Okta Workforce', diff --git a/packages/localizations/src/hi-IN.ts b/packages/localizations/src/hi-IN.ts index 953ae401e4d..4f22e8b3c28 100644 --- a/packages/localizations/src/hi-IN.ts +++ b/packages/localizations/src/hi-IN.ts @@ -180,9 +180,8 @@ export const hiIN: LocalizationResource = { }, configureSSO: { missingManageEnterpriseConnectionsPermission: { - subtitle: - 'एंटरप्राइज़ कनेक्शन प्रबंधित करने की अनुमति प्राप्त करने के लिए अपने संगठन के व्यवस्थापक से संपर्क करें।', - title: 'आपके पास एंटरप्राइज़ कनेक्शन प्रबंधित करने की अनुमति नहीं है', + subtitle: 'अपनी अनुमतियाँ अपग्रेड करने के लिए अपने संगठन के व्यवस्थापक से संपर्क करें।', + title: 'आपके पास सिंगल साइन-ऑन (SSO) प्रबंधित करने की अनुमति नहीं है', }, navbar: { title: 'सिंगल साइन-ऑन (SSO) कॉन्फ़िगर करें', @@ -190,10 +189,6 @@ export const hiIN: LocalizationResource = { selectProviderStep: { title: 'प्रदाता चुनें', subtitle: 'उस प्रदाता का चयन करें जिसके लिए आप SSO सेट अप कर रहे हैं।', - body: { - title: 'अपना पहचान प्रदाता चुनें', - description: 'हम आपको आगे विस्तृत सेटअप प्रक्रिया के माध्यम से मार्गदर्शन करेंगे।', - }, saml: { groupLabel: 'SAML', okta: 'Okta Workforce', diff --git a/packages/localizations/src/hr-HR.ts b/packages/localizations/src/hr-HR.ts index c227d5d901e..1b31cfebbfa 100644 --- a/packages/localizations/src/hr-HR.ts +++ b/packages/localizations/src/hr-HR.ts @@ -209,9 +209,8 @@ export const hrHR: LocalizationResource = { }, configureSSO: { missingManageEnterpriseConnectionsPermission: { - subtitle: - 'Obratite se administratoru vaše organizacije kako biste dobili dopuštenja za upravljanje poslovnim vezama.', - title: 'Nemate dopuštenje za upravljanje poslovnim vezama', + subtitle: 'Obratite se administratoru vaše organizacije kako biste nadogradili svoja dopuštenja.', + title: 'Nemate dopuštenje za upravljanje jedinstvenom prijavom (SSO)', }, navbar: { title: 'Konfiguriraj jedinstvenu prijavu (SSO)', @@ -219,10 +218,6 @@ export const hrHR: LocalizationResource = { selectProviderStep: { title: 'Odaberite pružatelja', subtitle: 'Odaberite pružatelja za kojeg ćete postaviti SSO.', - body: { - title: 'Odaberite svog pružatelja identiteta', - description: 'Vodit ćemo vas kroz detaljan proces postavljanja u nastavku.', - }, saml: { groupLabel: 'SAML', okta: 'Okta Workforce', diff --git a/packages/localizations/src/hu-HU.ts b/packages/localizations/src/hu-HU.ts index 87fee862da2..3714f35e4a0 100644 --- a/packages/localizations/src/hu-HU.ts +++ b/packages/localizations/src/hu-HU.ts @@ -209,9 +209,8 @@ export const huHU: LocalizationResource = { }, configureSSO: { missingManageEnterpriseConnectionsPermission: { - subtitle: - 'Vegye fel a kapcsolatot szervezete adminisztrátorával, hogy jogosultságot kapjon a vállalati kapcsolatok kezelésére.', - title: 'Nincs jogosultsága vállalati kapcsolatok kezelésére', + subtitle: 'Vegye fel a kapcsolatot szervezete adminisztrátorával a jogosultságai bővítéséhez.', + title: 'Nincs jogosultsága az egyszeri bejelentkezés (SSO) kezelésére', }, navbar: { title: 'Egyszeri bejelentkezés (SSO) beállítása', @@ -219,10 +218,6 @@ export const huHU: LocalizationResource = { selectProviderStep: { title: 'Szolgáltató kiválasztása', subtitle: 'Válassza ki azt a szolgáltatót, amelyhez beállítja az SSO-t.', - body: { - title: 'Válassza ki az identitásszolgáltatóját', - description: 'Ezután végigvezetjük a részletes beállítási folyamaton.', - }, saml: { groupLabel: 'SAML', okta: 'Okta Workforce', diff --git a/packages/localizations/src/id-ID.ts b/packages/localizations/src/id-ID.ts index 8d32eac4c53..1483a6307e2 100644 --- a/packages/localizations/src/id-ID.ts +++ b/packages/localizations/src/id-ID.ts @@ -180,8 +180,8 @@ export const idID: LocalizationResource = { }, configureSSO: { missingManageEnterpriseConnectionsPermission: { - subtitle: 'Hubungi administrator organisasi Anda untuk mendapatkan izin mengelola koneksi enterprise.', - title: 'Anda tidak memiliki izin untuk mengelola koneksi enterprise', + subtitle: 'Hubungi administrator organisasi Anda untuk meningkatkan izin Anda.', + title: 'Anda tidak memiliki izin untuk mengelola Single Sign-On (SSO)', }, navbar: { title: 'Konfigurasi Single Sign-On (SSO)', @@ -189,10 +189,6 @@ export const idID: LocalizationResource = { selectProviderStep: { title: 'Pilih penyedia', subtitle: 'Pilih penyedia yang akan Anda atur untuk SSO.', - body: { - title: 'Pilih penyedia identitas Anda', - description: 'Kami akan memandu Anda melalui proses penyiapan terperinci berikutnya.', - }, saml: { groupLabel: 'SAML', okta: 'Okta Workforce', diff --git a/packages/localizations/src/is-IS.ts b/packages/localizations/src/is-IS.ts index d39cf2bd19e..304827137bb 100644 --- a/packages/localizations/src/is-IS.ts +++ b/packages/localizations/src/is-IS.ts @@ -208,9 +208,8 @@ export const isIS: LocalizationResource = { }, configureSSO: { missingManageEnterpriseConnectionsPermission: { - subtitle: - 'Hafðu samband við stjórnanda fyrirtækisins þíns til að fá heimildir til að stjórna fyrirtækjatengingum.', - title: 'Þú hefur ekki heimild til að stjórna fyrirtækjatengingum', + subtitle: 'Hafðu samband við stjórnanda fyrirtækisins þíns til að uppfæra heimildir þínar.', + title: 'Þú hefur ekki heimild til að stjórna einnar innskráningar (SSO)', }, navbar: { title: 'Stilla einnar innskráningar (SSO)', @@ -218,10 +217,6 @@ export const isIS: LocalizationResource = { selectProviderStep: { title: 'Veldu þjónustuaðila', subtitle: 'Veldu þjónustuaðilann sem þú ætlar að setja upp SSO fyrir.', - body: { - title: 'Veldu auðkennisþjónustuaðila þinn', - description: 'Við munum leiðbeina þér í gegnum ítarlegt uppsetningarferli næst.', - }, saml: { groupLabel: 'SAML', okta: 'Okta Workforce', diff --git a/packages/localizations/src/it-IT.ts b/packages/localizations/src/it-IT.ts index 78d2d18e007..619225ef990 100644 --- a/packages/localizations/src/it-IT.ts +++ b/packages/localizations/src/it-IT.ts @@ -186,9 +186,8 @@ export const itIT: LocalizationResource = { }, configureSSO: { missingManageEnterpriseConnectionsPermission: { - subtitle: - "Contatta l'amministratore della tua organizzazione per ottenere i permessi per gestire le connessioni aziendali.", - title: 'Non hai il permesso di gestire le connessioni aziendali', + subtitle: "Contatta l'amministratore della tua organizzazione per ampliare i tuoi permessi.", + title: 'Non hai il permesso di gestire il Single Sign-On (SSO)', }, navbar: { title: 'Configura Single Sign-On (SSO)', @@ -196,10 +195,6 @@ export const itIT: LocalizationResource = { selectProviderStep: { title: 'Seleziona provider', subtitle: "Seleziona il provider per cui configurerai l'SSO.", - body: { - title: 'Seleziona il tuo provider di identità', - description: 'Ti guideremo nel processo di configurazione dettagliato successivamente.', - }, saml: { groupLabel: 'SAML', okta: 'Okta Workforce', diff --git a/packages/localizations/src/ja-JP.ts b/packages/localizations/src/ja-JP.ts index c91544f4580..35ecb633605 100644 --- a/packages/localizations/src/ja-JP.ts +++ b/packages/localizations/src/ja-JP.ts @@ -191,8 +191,8 @@ export const jaJP: LocalizationResource = { }, configureSSO: { missingManageEnterpriseConnectionsPermission: { - subtitle: 'エンタープライズ接続を管理する権限を取得するには、組織の管理者にお問い合わせください。', - title: 'エンタープライズ接続を管理する権限がありません', + subtitle: '権限をアップグレードするには、組織の管理者にお問い合わせください。', + title: 'シングルサインオン(SSO)を管理する権限がありません', }, navbar: { title: 'シングルサインオン(SSO)を設定', @@ -200,10 +200,6 @@ export const jaJP: LocalizationResource = { selectProviderStep: { title: 'プロバイダーを選択', subtitle: 'SSOを設定するプロバイダーを選択してください。', - body: { - title: 'IDプロバイダーを選択してください', - description: '次に、詳細な設定プロセスをご案内します。', - }, saml: { groupLabel: 'SAML', okta: 'Okta Workforce', diff --git a/packages/localizations/src/kk-KZ.ts b/packages/localizations/src/kk-KZ.ts index 7b9ec0b6a7b..ce4c0f5a143 100644 --- a/packages/localizations/src/kk-KZ.ts +++ b/packages/localizations/src/kk-KZ.ts @@ -180,25 +180,21 @@ export const kkKZ: LocalizationResource = { }, configureSSO: { missingManageEnterpriseConnectionsPermission: { - subtitle: 'Корпоративтік қосылыстарды басқару рұқсаттарын алу үшін ұйым әкімшісіне хабарласыңыз.', - title: 'Сізде корпоративтік қосылыстарды басқаруға рұқсат жоқ', + subtitle: 'Рұқсаттарыңызды жаңарту үшін ұйым әкімшісіне хабарласыңыз.', + title: 'Сізде бірыңғай кіруді (SSO) басқаруға рұқсат жоқ', }, navbar: { title: 'Бірыңғай кіруді конфигурациялау (SSO)', }, selectProviderStep: { - title: 'Select provider', - subtitle: 'Select the provider you are going to setup SSO for.', - body: { - title: 'Select your identity provider', - description: "We'll guide you through the detailed setup process next.", - }, + title: 'Провайдерді таңдау', + subtitle: 'SSO-ны баптамақшы провайдерді таңдаңыз.', saml: { groupLabel: 'SAML', okta: 'Okta Workforce', - customSaml: 'Custom SAML Provider', + customSaml: 'Реттелетін SAML провайдері', }, - warning: 'Once a provider is selected you cannot change again until the configuration is over', + warning: 'Провайдер таңдалғаннан кейін, конфигурация аяқталғанша өзгерте алмайсыз', }, verifyEmailDomainStep: { title: 'Электрондық пошта мекенжайын растау', diff --git a/packages/localizations/src/ko-KR.ts b/packages/localizations/src/ko-KR.ts index 6845d4b6b7f..38e8112a117 100644 --- a/packages/localizations/src/ko-KR.ts +++ b/packages/localizations/src/ko-KR.ts @@ -187,8 +187,8 @@ export const koKR: LocalizationResource = { }, configureSSO: { missingManageEnterpriseConnectionsPermission: { - subtitle: '엔터프라이즈 연결을 관리할 권한을 얻으려면 조직 관리자에게 문의하세요.', - title: '엔터프라이즈 연결을 관리할 권한이 없습니다', + subtitle: '권한을 업그레이드하려면 조직 관리자에게 문의하세요.', + title: '싱글 사인온(SSO)을 관리할 권한이 없습니다', }, navbar: { title: '싱글 사인온(SSO) 구성', @@ -196,10 +196,6 @@ export const koKR: LocalizationResource = { selectProviderStep: { title: '공급자 선택', subtitle: 'SSO를 설정할 공급자를 선택하세요.', - body: { - title: 'ID 공급자를 선택하세요', - description: '다음 단계에서 자세한 설정 프로세스를 안내해 드립니다.', - }, saml: { groupLabel: 'SAML', okta: 'Okta Workforce', diff --git a/packages/localizations/src/mn-MN.ts b/packages/localizations/src/mn-MN.ts index 49b90e98a5e..4935f8b22aa 100644 --- a/packages/localizations/src/mn-MN.ts +++ b/packages/localizations/src/mn-MN.ts @@ -180,25 +180,21 @@ export const mnMN: LocalizationResource = { }, configureSSO: { missingManageEnterpriseConnectionsPermission: { - subtitle: 'Аж ахуйн нэгжийн холболтыг удирдах эрх авахын тулд байгууллагынхаа админтай холбогдоно уу.', - title: 'Танд аж ахуйн нэгжийн холболтыг удирдах эрх байхгүй байна', + subtitle: 'Эрхээ дээшлүүлэхийн тулд байгууллагынхаа админтай холбогдоно уу.', + title: 'Танд Нэгдсэн нэвтрэлт (SSO) удирдах эрх байхгүй байна', }, navbar: { title: 'Нэгдсэн нэвтрэлт (SSO) тохируулах', }, selectProviderStep: { - title: 'Select provider', - subtitle: 'Select the provider you are going to setup SSO for.', - body: { - title: 'Select your identity provider', - description: "We'll guide you through the detailed setup process next.", - }, + title: 'Үйлчилгээ үзүүлэгчийг сонгох', + subtitle: 'SSO тохируулах гэж буй үйлчилгээ үзүүлэгчээ сонгоно уу.', saml: { groupLabel: 'SAML', okta: 'Okta Workforce', - customSaml: 'Custom SAML Provider', + customSaml: 'Хэрэглэгчийн тохируулсан SAML үйлчилгээ үзүүлэгч', }, - warning: 'Once a provider is selected you cannot change again until the configuration is over', + warning: 'Үйлчилгээ үзүүлэгчийг сонгосны дараа тохиргоо дуустал өөрчлөх боломжгүй', }, verifyEmailDomainStep: { title: 'И-мэйл хаягийг баталгаажуулах', diff --git a/packages/localizations/src/ms-MY.ts b/packages/localizations/src/ms-MY.ts index d02086c1104..fe2696f813d 100644 --- a/packages/localizations/src/ms-MY.ts +++ b/packages/localizations/src/ms-MY.ts @@ -180,8 +180,8 @@ export const msMY: LocalizationResource = { }, configureSSO: { missingManageEnterpriseConnectionsPermission: { - subtitle: 'Hubungi pentadbir organisasi anda untuk mendapatkan kebenaran mengurus sambungan perusahaan.', - title: 'Anda tidak mempunyai kebenaran untuk mengurus sambungan perusahaan', + subtitle: 'Hubungi pentadbir organisasi anda untuk menaik taraf kebenaran anda.', + title: 'Anda tidak mempunyai kebenaran untuk mengurus Log Masuk Tunggal (SSO)', }, navbar: { title: 'Konfigurasi Log Masuk Tunggal (SSO)', @@ -189,10 +189,6 @@ export const msMY: LocalizationResource = { selectProviderStep: { title: 'Pilih pembekal', subtitle: 'Pilih pembekal yang anda akan sediakan SSO untuknya.', - body: { - title: 'Pilih pembekal identiti anda', - description: 'Kami akan membimbing anda melalui proses persediaan terperinci seterusnya.', - }, saml: { groupLabel: 'SAML', okta: 'Okta Workforce', diff --git a/packages/localizations/src/nb-NO.ts b/packages/localizations/src/nb-NO.ts index b1b0841ef54..0833499c8f4 100644 --- a/packages/localizations/src/nb-NO.ts +++ b/packages/localizations/src/nb-NO.ts @@ -209,8 +209,8 @@ export const nbNO: LocalizationResource = { }, configureSSO: { missingManageEnterpriseConnectionsPermission: { - subtitle: 'Kontakt organisasjonens administrator for å få tillatelser til å administrere bedriftstilkoblinger.', - title: 'Du har ikke tillatelse til å administrere bedriftstilkoblinger', + subtitle: 'Kontakt organisasjonens administrator for å oppgradere tillatelsene dine.', + title: 'Du har ikke tillatelse til å administrere enkeltpålogging (SSO)', }, navbar: { title: 'Konfigurer enkeltpålogging (SSO)', @@ -218,10 +218,6 @@ export const nbNO: LocalizationResource = { selectProviderStep: { title: 'Velg leverandør', subtitle: 'Velg leverandøren du skal konfigurere SSO for.', - body: { - title: 'Velg din identitetsleverandør', - description: 'Vi veileder deg gjennom den detaljerte konfigurasjonsprosessen neste gang.', - }, saml: { groupLabel: 'SAML', okta: 'Okta Workforce', diff --git a/packages/localizations/src/nl-BE.ts b/packages/localizations/src/nl-BE.ts index 953d3553c5a..f836c45b447 100644 --- a/packages/localizations/src/nl-BE.ts +++ b/packages/localizations/src/nl-BE.ts @@ -180,9 +180,8 @@ export const nlBE: LocalizationResource = { }, configureSSO: { missingManageEnterpriseConnectionsPermission: { - subtitle: - 'Neem contact op met de beheerder van uw organisatie om toestemming te krijgen voor het beheren van enterprise-verbindingen.', - title: 'U hebt geen toestemming om enterprise-verbindingen te beheren', + subtitle: 'Neem contact op met de beheerder van uw organisatie om uw rechten uit te breiden.', + title: 'U hebt geen toestemming om single sign-on (SSO) te beheren', }, navbar: { title: 'Single sign-on (SSO) configureren', @@ -190,10 +189,6 @@ export const nlBE: LocalizationResource = { selectProviderStep: { title: 'Provider selecteren', subtitle: 'Selecteer de provider waarvoor je SSO gaat instellen.', - body: { - title: 'Selecteer je identiteitsprovider', - description: 'We begeleiden je hierna door het gedetailleerde installatieproces.', - }, saml: { groupLabel: 'SAML', okta: 'Okta Workforce', diff --git a/packages/localizations/src/nl-NL.ts b/packages/localizations/src/nl-NL.ts index e542fcde19d..1ce7af52f1f 100644 --- a/packages/localizations/src/nl-NL.ts +++ b/packages/localizations/src/nl-NL.ts @@ -180,9 +180,8 @@ export const nlNL: LocalizationResource = { }, configureSSO: { missingManageEnterpriseConnectionsPermission: { - subtitle: - 'Neem contact op met de beheerder van je organisatie om toestemming te krijgen voor het beheren van enterprise-verbindingen.', - title: 'Je hebt geen toestemming om enterprise-verbindingen te beheren', + subtitle: 'Neem contact op met de beheerder van je organisatie om je rechten uit te breiden.', + title: 'Je hebt geen toestemming om single sign-on (SSO) te beheren', }, navbar: { title: 'Single sign-on (SSO) configureren', @@ -190,10 +189,6 @@ export const nlNL: LocalizationResource = { selectProviderStep: { title: 'Provider selecteren', subtitle: 'Selecteer de provider waarvoor je SSO gaat instellen.', - body: { - title: 'Selecteer je identiteitsprovider', - description: 'We begeleiden je hierna door het gedetailleerde installatieproces.', - }, saml: { groupLabel: 'SAML', okta: 'Okta Workforce', diff --git a/packages/localizations/src/pl-PL.ts b/packages/localizations/src/pl-PL.ts index e4dec046505..ad5cad86f3e 100644 --- a/packages/localizations/src/pl-PL.ts +++ b/packages/localizations/src/pl-PL.ts @@ -180,9 +180,8 @@ export const plPL: LocalizationResource = { }, configureSSO: { missingManageEnterpriseConnectionsPermission: { - subtitle: - 'Skontaktuj się z administratorem swojej organizacji, aby uzyskać uprawnienia do zarządzania połączeniami korporacyjnymi.', - title: 'Nie masz uprawnień do zarządzania połączeniami korporacyjnymi', + subtitle: 'Skontaktuj się z administratorem swojej organizacji, aby rozszerzyć swoje uprawnienia.', + title: 'Nie masz uprawnień do zarządzania logowaniem jednokrotnym (SSO)', }, navbar: { title: 'Skonfiguruj logowanie jednokrotne (SSO)', @@ -190,10 +189,6 @@ export const plPL: LocalizationResource = { selectProviderStep: { title: 'Wybierz dostawcę', subtitle: 'Wybierz dostawcę, dla którego skonfigurujesz SSO.', - body: { - title: 'Wybierz swojego dostawcę tożsamości', - description: 'Następnie przeprowadzimy Cię przez szczegółowy proces konfiguracji.', - }, saml: { groupLabel: 'SAML', okta: 'Okta Workforce', diff --git a/packages/localizations/src/pt-BR.ts b/packages/localizations/src/pt-BR.ts index 4c6a48f0911..10fac051b9e 100644 --- a/packages/localizations/src/pt-BR.ts +++ b/packages/localizations/src/pt-BR.ts @@ -186,9 +186,8 @@ export const ptBR: LocalizationResource = { }, configureSSO: { missingManageEnterpriseConnectionsPermission: { - subtitle: - 'Entre em contato com o administrador da sua organização para obter permissões para gerenciar conexões empresariais.', - title: 'Você não tem permissão para gerenciar conexões empresariais', + subtitle: 'Entre em contato com o administrador da sua organização para ampliar suas permissões.', + title: 'Você não tem permissão para gerenciar o logon único (SSO)', }, navbar: { title: 'Configurar logon único (SSO)', @@ -196,10 +195,6 @@ export const ptBR: LocalizationResource = { selectProviderStep: { title: 'Selecionar provedor', subtitle: 'Selecione o provedor para o qual você vai configurar o SSO.', - body: { - title: 'Selecione seu provedor de identidade', - description: 'Iremos guiá-lo pelo processo de configuração detalhado em seguida.', - }, saml: { groupLabel: 'SAML', okta: 'Okta Workforce', diff --git a/packages/localizations/src/pt-PT.ts b/packages/localizations/src/pt-PT.ts index 9209618c395..959a9b93ef9 100644 --- a/packages/localizations/src/pt-PT.ts +++ b/packages/localizations/src/pt-PT.ts @@ -188,8 +188,8 @@ export const ptPT: LocalizationResource = { }, configureSSO: { missingManageEnterpriseConnectionsPermission: { - subtitle: 'Contacte o administrador da sua organização para obter permissões para gerir ligações empresariais.', - title: 'Não tem permissão para gerir ligações empresariais', + subtitle: 'Contacte o administrador da sua organização para ampliar as suas permissões.', + title: 'Não tem permissão para gerir a autenticação única (SSO)', }, navbar: { title: 'Configurar autenticação única (SSO)', @@ -197,10 +197,6 @@ export const ptPT: LocalizationResource = { selectProviderStep: { title: 'Selecionar fornecedor', subtitle: 'Selecione o fornecedor para o qual vai configurar o SSO.', - body: { - title: 'Selecione o seu fornecedor de identidade', - description: 'Iremos guiá-lo pelo processo de configuração detalhado a seguir.', - }, saml: { groupLabel: 'SAML', okta: 'Okta Workforce', diff --git a/packages/localizations/src/ro-RO.ts b/packages/localizations/src/ro-RO.ts index cdd14ca133d..8ed87bb076a 100644 --- a/packages/localizations/src/ro-RO.ts +++ b/packages/localizations/src/ro-RO.ts @@ -186,9 +186,8 @@ export const roRO: LocalizationResource = { }, configureSSO: { missingManageEnterpriseConnectionsPermission: { - subtitle: - 'Contactați administratorul organizației dumneavoastră pentru a obține permisiuni de gestionare a conexiunilor de întreprindere.', - title: 'Nu aveți permisiunea să gestionați conexiunile de întreprindere', + subtitle: 'Contactați administratorul organizației dumneavoastră pentru a vă extinde permisiunile.', + title: 'Nu aveți permisiunea să gestionați autentificarea unică (SSO)', }, navbar: { title: 'Configurați autentificarea unică (SSO)', @@ -196,10 +195,6 @@ export const roRO: LocalizationResource = { selectProviderStep: { title: 'Selectați furnizorul', subtitle: 'Selectați furnizorul pentru care veți configura SSO.', - body: { - title: 'Selectați furnizorul de identitate', - description: 'Vă vom ghida în continuare prin procesul de configurare detaliat.', - }, saml: { groupLabel: 'SAML', okta: 'Okta Workforce', diff --git a/packages/localizations/src/ru-RU.ts b/packages/localizations/src/ru-RU.ts index ea011b5bc6f..8988d668748 100644 --- a/packages/localizations/src/ru-RU.ts +++ b/packages/localizations/src/ru-RU.ts @@ -180,9 +180,8 @@ export const ruRU: LocalizationResource = { }, configureSSO: { missingManageEnterpriseConnectionsPermission: { - subtitle: - 'Обратитесь к администратору вашей организации, чтобы получить разрешения на управление корпоративными подключениями.', - title: 'У вас нет разрешения на управление корпоративными подключениями', + subtitle: 'Обратитесь к администратору вашей организации, чтобы расширить ваши разрешения.', + title: 'У вас нет разрешения на управление единым входом (SSO)', }, navbar: { title: 'Настроить единый вход (SSO)', @@ -190,10 +189,6 @@ export const ruRU: LocalizationResource = { selectProviderStep: { title: 'Выберите поставщика', subtitle: 'Выберите поставщика, для которого вы будете настраивать SSO.', - body: { - title: 'Выберите вашего поставщика идентификации', - description: 'Далее мы проведём вас через подробный процесс настройки.', - }, saml: { groupLabel: 'SAML', okta: 'Okta Workforce', diff --git a/packages/localizations/src/sk-SK.ts b/packages/localizations/src/sk-SK.ts index 1391db75931..a8c250279c4 100644 --- a/packages/localizations/src/sk-SK.ts +++ b/packages/localizations/src/sk-SK.ts @@ -180,9 +180,8 @@ export const skSK: LocalizationResource = { }, configureSSO: { missingManageEnterpriseConnectionsPermission: { - subtitle: - 'Kontaktujte správcu vašej organizácie, aby ste získali oprávnenia na spravovanie podnikových pripojení.', - title: 'Nemáte oprávnenie spravovať podnikové pripojenia', + subtitle: 'Kontaktujte správcu vašej organizácie pre rozšírenie vašich oprávnení.', + title: 'Nemáte oprávnenie spravovať jednotné prihlasovanie (SSO)', }, navbar: { title: 'Nastaviť jednotné prihlasovanie (SSO)', @@ -190,10 +189,6 @@ export const skSK: LocalizationResource = { selectProviderStep: { title: 'Vyberte poskytovateľa', subtitle: 'Vyberte poskytovateľa, pre ktorého budete nastavovať SSO.', - body: { - title: 'Vyberte si svojho poskytovateľa identity', - description: 'Následne vás prevedieme podrobným procesom nastavenia.', - }, saml: { groupLabel: 'SAML', okta: 'Okta Workforce', diff --git a/packages/localizations/src/sr-RS.ts b/packages/localizations/src/sr-RS.ts index 121c01f3a83..db6dcdb34b4 100644 --- a/packages/localizations/src/sr-RS.ts +++ b/packages/localizations/src/sr-RS.ts @@ -180,9 +180,8 @@ export const srRS: LocalizationResource = { }, configureSSO: { missingManageEnterpriseConnectionsPermission: { - subtitle: - 'Kontaktirajte administratora vaše organizacije da biste dobili dozvole za upravljanje korporativnim vezama.', - title: 'Nemate dozvolu za upravljanje korporativnim vezama', + subtitle: 'Kontaktirajte administratora vaše organizacije da biste proširili svoje dozvole.', + title: 'Nemate dozvolu za upravljanje jedinstvenom prijavom (SSO)', }, navbar: { title: 'Konfiguriši jedinstvenu prijavu (SSO)', @@ -190,10 +189,6 @@ export const srRS: LocalizationResource = { selectProviderStep: { title: 'Izaberite provajdera', subtitle: 'Izaberite provajdera za koga ćete podesiti SSO.', - body: { - title: 'Izaberite svog provajdera identiteta', - description: 'Vodićemo vas kroz detaljan proces podešavanja u nastavku.', - }, saml: { groupLabel: 'SAML', okta: 'Okta Workforce', diff --git a/packages/localizations/src/sv-SE.ts b/packages/localizations/src/sv-SE.ts index 27bc5d6b657..986421ecbc5 100644 --- a/packages/localizations/src/sv-SE.ts +++ b/packages/localizations/src/sv-SE.ts @@ -180,8 +180,8 @@ export const svSE: LocalizationResource = { }, configureSSO: { missingManageEnterpriseConnectionsPermission: { - subtitle: 'Kontakta administratören för din organisation för att få behörighet att hantera företagsanslutningar.', - title: 'Du har inte behörighet att hantera företagsanslutningar', + subtitle: 'Kontakta administratören för din organisation för att utöka dina behörigheter.', + title: 'Du har inte behörighet att hantera enkel inloggning (SSO)', }, navbar: { title: 'Konfigurera enkel inloggning (SSO)', @@ -189,10 +189,6 @@ export const svSE: LocalizationResource = { selectProviderStep: { title: 'Välj leverantör', subtitle: 'Välj den leverantör du ska konfigurera SSO för.', - body: { - title: 'Välj din identitetsleverantör', - description: 'Vi guidar dig sedan genom den detaljerade konfigurationsprocessen.', - }, saml: { groupLabel: 'SAML', okta: 'Okta Workforce', diff --git a/packages/localizations/src/ta-IN.ts b/packages/localizations/src/ta-IN.ts index a39afd6887d..9ee902b4137 100644 --- a/packages/localizations/src/ta-IN.ts +++ b/packages/localizations/src/ta-IN.ts @@ -180,25 +180,21 @@ export const taIN: LocalizationResource = { }, configureSSO: { missingManageEnterpriseConnectionsPermission: { - subtitle: 'நிறுவன இணைப்புகளை நிர்வகிக்க அனுமதிகளைப் பெற உங்கள் நிறுவனத்தின் நிர்வாகியைத் தொடர்பு கொள்ளவும்.', - title: 'நிறுவன இணைப்புகளை நிர்வகிக்க உங்களுக்கு அனுமதி இல்லை', + subtitle: 'உங்கள் அனுமதிகளை மேம்படுத்த உங்கள் நிறுவனத்தின் நிர்வாகியைத் தொடர்பு கொள்ளவும்.', + title: 'ஒற்றை உள்நுழைவை (SSO) நிர்வகிக்க உங்களுக்கு அனுமதி இல்லை', }, navbar: { title: 'ஒற்றை உள்நுழைவை (SSO) உள்ளமை', }, selectProviderStep: { - title: 'Select provider', - subtitle: 'Select the provider you are going to setup SSO for.', - body: { - title: 'Select your identity provider', - description: "We'll guide you through the detailed setup process next.", - }, + title: 'வழங்குநரைத் தேர்ந்தெடுக்கவும்', + subtitle: 'நீங்கள் SSO அமைக்கப் போகும் வழங்குநரைத் தேர்ந்தெடுக்கவும்.', saml: { groupLabel: 'SAML', okta: 'Okta Workforce', - customSaml: 'Custom SAML Provider', + customSaml: 'தனிப்பயன் SAML வழங்குநர்', }, - warning: 'Once a provider is selected you cannot change again until the configuration is over', + warning: 'வழங்குநரைத் தேர்ந்தெடுத்த பிறகு, கட்டமைப்பு முடியும் வரை மீண்டும் மாற்ற முடியாது', }, verifyEmailDomainStep: { title: 'மின்னஞ்சல் முகவரியை சரிபார்க்கவும்', diff --git a/packages/localizations/src/te-IN.ts b/packages/localizations/src/te-IN.ts index 59a37b83ef8..1133e94c6fd 100644 --- a/packages/localizations/src/te-IN.ts +++ b/packages/localizations/src/te-IN.ts @@ -180,25 +180,21 @@ export const teIN: LocalizationResource = { }, configureSSO: { missingManageEnterpriseConnectionsPermission: { - subtitle: 'ఎంటర్‌ప్రైజ్ కనెక్షన్‌లను నిర్వహించడానికి అనుమతులు పొందడానికి మీ సంస్థ నిర్వాహకుడిని సంప్రదించండి.', - title: 'ఎంటర్‌ప్రైజ్ కనెక్షన్‌లను నిర్వహించడానికి మీకు అనుమతి లేదు', + subtitle: 'మీ అనుమతులను అప్‌గ్రేడ్ చేయడానికి మీ సంస్థ నిర్వాహకుడిని సంప్రదించండి.', + title: 'సింగిల్ సైన్-ఆన్ (SSO) నిర్వహించడానికి మీకు అనుమతి లేదు', }, navbar: { title: 'సింగిల్ సైన్-ఆన్ (SSO) కాన్ఫిగర్ చేయండి', }, selectProviderStep: { - title: 'Select provider', - subtitle: 'Select the provider you are going to setup SSO for.', - body: { - title: 'Select your identity provider', - description: "We'll guide you through the detailed setup process next.", - }, + title: 'ప్రొవైడర్‌ను ఎంచుకోండి', + subtitle: 'మీరు SSO సెటప్ చేయబోతున్న ప్రొవైడర్‌ను ఎంచుకోండి.', saml: { groupLabel: 'SAML', okta: 'Okta Workforce', - customSaml: 'Custom SAML Provider', + customSaml: 'కస్టమ్ SAML ప్రొవైడర్', }, - warning: 'Once a provider is selected you cannot change again until the configuration is over', + warning: 'ఒకసారి ప్రొవైడర్ ఎంచుకున్న తర్వాత, కాన్ఫిగరేషన్ ముగిసే వరకు మీరు మళ్లీ మార్చలేరు', }, verifyEmailDomainStep: { title: 'ఇమెయిల్ చిరునామా ధృవీకరించండి', diff --git a/packages/localizations/src/th-TH.ts b/packages/localizations/src/th-TH.ts index 9e07e78a84c..6a8ca5f679e 100644 --- a/packages/localizations/src/th-TH.ts +++ b/packages/localizations/src/th-TH.ts @@ -184,8 +184,8 @@ export const thTH: LocalizationResource = { }, configureSSO: { missingManageEnterpriseConnectionsPermission: { - subtitle: 'ติดต่อผู้ดูแลระบบขององค์กรของคุณเพื่อขอสิทธิ์ในการจัดการการเชื่อมต่อระดับองค์กร', - title: 'คุณไม่มีสิทธิ์จัดการการเชื่อมต่อระดับองค์กร', + subtitle: 'ติดต่อผู้ดูแลระบบขององค์กรของคุณเพื่ออัปเกรดสิทธิ์ของคุณ', + title: 'คุณไม่มีสิทธิ์จัดการการลงชื่อเข้าใช้แบบครั้งเดียว (SSO)', }, navbar: { title: 'กำหนดค่าการลงชื่อเข้าใช้แบบครั้งเดียว (SSO)', @@ -193,10 +193,6 @@ export const thTH: LocalizationResource = { selectProviderStep: { title: 'เลือกผู้ให้บริการ', subtitle: 'เลือกผู้ให้บริการที่คุณจะตั้งค่า SSO ให้', - body: { - title: 'เลือกผู้ให้บริการข้อมูลประจำตัวของคุณ', - description: 'เราจะแนะนำคุณตลอดกระบวนการตั้งค่าโดยละเอียดในขั้นตอนถัดไป', - }, saml: { groupLabel: 'SAML', okta: 'Okta Workforce', diff --git a/packages/localizations/src/tr-TR.ts b/packages/localizations/src/tr-TR.ts index 3810ef5072a..939380a2176 100644 --- a/packages/localizations/src/tr-TR.ts +++ b/packages/localizations/src/tr-TR.ts @@ -180,8 +180,8 @@ export const trTR: LocalizationResource = { }, configureSSO: { missingManageEnterpriseConnectionsPermission: { - subtitle: 'Kurumsal bağlantıları yönetme izinleri almak için organizasyonunuzun yöneticisiyle iletişime geçin.', - title: 'Kurumsal bağlantıları yönetme izniniz yok', + subtitle: 'İzinlerinizi yükseltmek için organizasyonunuzun yöneticisiyle iletişime geçin.', + title: 'Tek Oturum Açmayı (SSO) yönetme izniniz yok', }, navbar: { title: 'Tek Oturum Açmayı (SSO) Yapılandır', @@ -189,10 +189,6 @@ export const trTR: LocalizationResource = { selectProviderStep: { title: 'Sağlayıcıyı seçin', subtitle: "SSO'yu ayarlayacağınız sağlayıcıyı seçin.", - body: { - title: 'Kimlik sağlayıcınızı seçin', - description: 'Bir sonraki adımda sizi ayrıntılı kurulum sürecinde yönlendireceğiz.', - }, saml: { groupLabel: 'SAML', okta: 'Okta Workforce', diff --git a/packages/localizations/src/uk-UA.ts b/packages/localizations/src/uk-UA.ts index f27857e7d28..9a036c44183 100644 --- a/packages/localizations/src/uk-UA.ts +++ b/packages/localizations/src/uk-UA.ts @@ -180,9 +180,8 @@ export const ukUA: LocalizationResource = { }, configureSSO: { missingManageEnterpriseConnectionsPermission: { - subtitle: - 'Зверніться до адміністратора вашої організації, щоб отримати дозвіл на керування корпоративними підключеннями.', - title: 'У вас немає дозволу на керування корпоративними підключеннями', + subtitle: 'Зверніться до адміністратора вашої організації, щоб розширити ваші дозволи.', + title: 'У вас немає дозволу на керування єдиним входом (SSO)', }, navbar: { title: 'Налаштувати єдиний вхід (SSO)', @@ -190,10 +189,6 @@ export const ukUA: LocalizationResource = { selectProviderStep: { title: 'Виберіть постачальника', subtitle: 'Виберіть постачальника, для якого ви налаштовуватимете SSO.', - body: { - title: 'Виберіть вашого постачальника ідентифікації', - description: 'Далі ми проведемо вас через детальний процес налаштування.', - }, saml: { groupLabel: 'SAML', okta: 'Okta Workforce', diff --git a/packages/localizations/src/vi-VN.ts b/packages/localizations/src/vi-VN.ts index a2546dd6c78..667c0833da2 100644 --- a/packages/localizations/src/vi-VN.ts +++ b/packages/localizations/src/vi-VN.ts @@ -184,8 +184,8 @@ export const viVN: LocalizationResource = { }, configureSSO: { missingManageEnterpriseConnectionsPermission: { - subtitle: 'Liên hệ với quản trị viên tổ chức của bạn để có quyền quản lý các kết nối doanh nghiệp.', - title: 'Bạn không có quyền quản lý các kết nối doanh nghiệp', + subtitle: 'Liên hệ với quản trị viên tổ chức của bạn để nâng cấp quyền của bạn.', + title: 'Bạn không có quyền quản lý đăng nhập một lần (SSO)', }, navbar: { title: 'Cấu hình đăng nhập một lần (SSO)', @@ -193,10 +193,6 @@ export const viVN: LocalizationResource = { selectProviderStep: { title: 'Chọn nhà cung cấp', subtitle: 'Chọn nhà cung cấp mà bạn sẽ thiết lập SSO cho.', - body: { - title: 'Chọn nhà cung cấp danh tính của bạn', - description: 'Chúng tôi sẽ hướng dẫn bạn qua quy trình thiết lập chi tiết tiếp theo.', - }, saml: { groupLabel: 'SAML', okta: 'Okta Workforce', diff --git a/packages/localizations/src/zh-CN.ts b/packages/localizations/src/zh-CN.ts index 2f666e2e208..ba3034405f5 100644 --- a/packages/localizations/src/zh-CN.ts +++ b/packages/localizations/src/zh-CN.ts @@ -180,8 +180,8 @@ export const zhCN: LocalizationResource = { }, configureSSO: { missingManageEnterpriseConnectionsPermission: { - subtitle: '请联系您的组织管理员以获得管理企业连接的权限。', - title: '您无权管理企业连接', + subtitle: '请联系您的组织管理员以升级您的权限。', + title: '您无权管理单点登录 (SSO)', }, navbar: { title: '配置单点登录 (SSO)', @@ -189,10 +189,6 @@ export const zhCN: LocalizationResource = { selectProviderStep: { title: '选择提供商', subtitle: '选择您要为其设置 SSO 的提供商。', - body: { - title: '选择您的身份提供商', - description: '接下来我们将引导您完成详细的设置过程。', - }, saml: { groupLabel: 'SAML', okta: 'Okta Workforce', diff --git a/packages/localizations/src/zh-TW.ts b/packages/localizations/src/zh-TW.ts index 84aa6b8e184..3740bc4fc6f 100644 --- a/packages/localizations/src/zh-TW.ts +++ b/packages/localizations/src/zh-TW.ts @@ -186,8 +186,8 @@ export const zhTW: LocalizationResource = { }, configureSSO: { missingManageEnterpriseConnectionsPermission: { - subtitle: '請聯絡您的組織管理員以取得管理企業連線的權限。', - title: '您沒有管理企業連線的權限', + subtitle: '請聯絡您的組織管理員以升級您的權限。', + title: '您沒有管理單一登入 (SSO) 的權限', }, navbar: { title: '設定單一登入 (SSO)', @@ -195,10 +195,6 @@ export const zhTW: LocalizationResource = { selectProviderStep: { title: '選擇提供者', subtitle: '選擇您要為其設定 SSO 的提供者。', - body: { - title: '選擇您的身分提供者', - description: '接下來我們將引導您完成詳細的設定流程。', - }, saml: { groupLabel: 'SAML', okta: 'Okta Workforce', diff --git a/packages/shared/src/types/localization.ts b/packages/shared/src/types/localization.ts index db7df988428..2d0dcc7bdea 100644 --- a/packages/shared/src/types/localization.ts +++ b/packages/shared/src/types/localization.ts @@ -1303,10 +1303,6 @@ export type __internal_LocalizationResource = { selectProviderStep: { title: LocalizationValue; subtitle: LocalizationValue; - body: { - title: LocalizationValue; - description: LocalizationValue; - }; saml: { groupLabel: LocalizationValue; okta: LocalizationValue; @@ -1343,9 +1339,7 @@ export type __internal_LocalizationResource = { subtitle: LocalizationValue; error__noSuccessfulTestRun: LocalizationValue; testUrl: { - title: LocalizationValue; - subtitle: LocalizationValue; - actionLabel__copy: LocalizationValue; + actionLabel__open: LocalizationValue; }; testResults: { title: LocalizationValue; @@ -1354,6 +1348,10 @@ export type __internal_LocalizationResource = { status__success: LocalizationValue; status__failed: LocalizationValue; status__pending: LocalizationValue; + empty: { + title: LocalizationValue; + subtitle: LocalizationValue; + }; }; testRunDetails: { title: LocalizationValue; @@ -1401,14 +1399,6 @@ export type __internal_LocalizationResource = { }; }; configureStep: { - spFields: { - acsUrl: { - label: LocalizationValue; - }; - spEntityId: { - label: LocalizationValue; - }; - }; attributeMapping: { title: LocalizationValue; paragraph: LocalizationValue; @@ -1438,6 +1428,25 @@ export type __internal_LocalizationResource = { }; samlOkta: { headerTitle: LocalizationValue; + attributeMapping: { + columns: { + name: LocalizationValue; + value: LocalizationValue; + }; + rows: { + email: { name: LocalizationValue; value: LocalizationValue }; + firstName: { name: LocalizationValue; value: LocalizationValue }; + lastName: { name: LocalizationValue; value: LocalizationValue }; + }; + }; + spFields: { + acsUrl: { + label: LocalizationValue; + }; + spEntityId: { + label: LocalizationValue; + }; + }; createApp: { headerSubtitle: LocalizationValue; title: LocalizationValue; @@ -1522,6 +1531,26 @@ export type __internal_LocalizationResource = { }; samlCustom: { headerTitle: LocalizationValue; + attributeMapping: { + columns: { + userProfile: LocalizationValue; + attributeName: LocalizationValue; + }; + rows: { + id: { userProfile: LocalizationValue; attributeName: LocalizationValue }; + email: { userProfile: LocalizationValue; attributeName: LocalizationValue }; + firstName: { userProfile: LocalizationValue; attributeName: LocalizationValue }; + lastName: { userProfile: LocalizationValue; attributeName: LocalizationValue }; + }; + }; + spFields: { + acsUrl: { + label: LocalizationValue; + }; + spEntityId: { + label: LocalizationValue; + }; + }; createApp: { headerSubtitle: LocalizationValue; title: LocalizationValue; diff --git a/packages/ui/src/components/ConfigureSSO/ConfigureSSO.tsx b/packages/ui/src/components/ConfigureSSO/ConfigureSSO.tsx index 399672d1cdb..ecb4a1a0d4c 100644 --- a/packages/ui/src/components/ConfigureSSO/ConfigureSSO.tsx +++ b/packages/ui/src/components/ConfigureSSO/ConfigureSSO.tsx @@ -100,16 +100,25 @@ const ConfigureSSOCardContent = ({ contentRef }: { contentRef: React.RefObject { - const { initialStepId } = useConfigureSSO(); + const { initialStepId, enterpriseConnection } = useConfigureSSO(); return ( - - - + {/* + * `select-provider` is only a wizard step while there's no enterprise + * connection yet — creating one unregisters this step, which: + * 1. Hides it from the breadcrumb (no need for a manual filter), and + * 2. Prevents `goPrev` from any later step (e.g. configure's first + * substep) from ever bubbling back into provider selection. + */} + {!enterpriseConnection && ( + + + + )} const { session } = useSession(); const isPersonalWorkspace = !session?.lastActiveOrganizationId; const canManageEnterpriseConnections = useProtect( - has => isPersonalWorkspace || has({ permission: 'org:sys_enterprise_connections:manage' }), + has => isPersonalWorkspace || has({ permission: 'org:sys_entconns:manage' }), ); if (!canManageEnterpriseConnections) { diff --git a/packages/ui/src/components/ConfigureSSO/ConfigureSSOHeader.tsx b/packages/ui/src/components/ConfigureSSO/ConfigureSSOHeader.tsx index df9e93498bb..13ba01b2c46 100644 --- a/packages/ui/src/components/ConfigureSSO/ConfigureSSOHeader.tsx +++ b/packages/ui/src/components/ConfigureSSO/ConfigureSSOHeader.tsx @@ -7,10 +7,10 @@ import { useWizard } from './elements/Wizard'; export const ConfigureSSOHeader = (): JSX.Element => { const { activeSteps, currentStep, goToStep } = useWizard(); const { t } = useLocalizations(); - // Select Provider isn't part of the visual breadcrumb per the design — - // filter it out here. The wizard still tracks it as the first step - // for navigation (goNext from it advances to verify-domain, Previous - // is naturally disabled because isFirstStep is true). + + // `select-provider` is only mounted while there's no enterprise connection, + // but per design it should never appear in the visual breadcrumb regardless, + // so we always filter it out here const visibleSteps = activeSteps.filter(step => step.id !== 'select-provider'); const currentIndex = visibleSteps.findIndex(step => step.id === currentStep?.id); diff --git a/packages/ui/src/components/ConfigureSSO/ConfigureSSONavbar.tsx b/packages/ui/src/components/ConfigureSSO/ConfigureSSONavbar.tsx index c4f60ee94de..e45f1d871b2 100644 --- a/packages/ui/src/components/ConfigureSSO/ConfigureSSONavbar.tsx +++ b/packages/ui/src/components/ConfigureSSO/ConfigureSSONavbar.tsx @@ -23,6 +23,14 @@ export const ConfigureSSONavbar = ({ children, contentRef }: ConfigureSSONavbarP return ( ({ fontSize: t.fontSizes.$lg })} + containerSx={{ + flexDirection: 'column-reverse', + flex: 0, + }} + routes={[]} header={ } - titleSx={t => ({ fontSize: t.fontSizes.$lg })} - containerSx={{ - flexDirection: 'column-reverse', - flex: 0, - }} - title={localizationKeys('configureSSO.navbar.title')} - routes={[]} - contentRef={contentRef} /> {children} diff --git a/packages/ui/src/components/ConfigureSSO/__tests__/ConfigureSSO.test.tsx b/packages/ui/src/components/ConfigureSSO/__tests__/ConfigureSSO.test.tsx index b1c3e2089a6..95c79396819 100644 --- a/packages/ui/src/components/ConfigureSSO/__tests__/ConfigureSSO.test.tsx +++ b/packages/ui/src/components/ConfigureSSO/__tests__/ConfigureSSO.test.tsx @@ -24,9 +24,9 @@ describe('ConfigureSSO', () => { const { findByText, queryByText } = render(, { wrapper }); - await findByText(/you do not have permission to manage enterprise connections/i); - expect(queryByText(/contact your organization administrator in order to have permissions/i)).toBeInTheDocument(); - expect(queryByText(/select provider/i)).not.toBeInTheDocument(); + await findByText(/you do not have permission to manage single sign-on/i); + expect(queryByText(/contact your organization.*administrator to upgrade your permissions/i)).toBeInTheDocument(); + expect(queryByText(/select your identity provider/i)).not.toBeInTheDocument(); }); it('renders the wizard when the active organization membership has the manage enterprise connections permission', async () => { @@ -36,7 +36,7 @@ describe('ConfigureSSO', () => { f.withOrganizations(); f.withUser({ email_addresses: ['test@clerk.com'], - organization_memberships: [{ name: 'Org1', permissions: ['org:sys_enterprise_connections:manage'] }], + organization_memberships: [{ name: 'Org1', permissions: ['org:sys_entconns:manage'] }], }); }); @@ -45,9 +45,9 @@ describe('ConfigureSSO', () => { const { findByText, queryByText } = render(, { wrapper }); await waitFor(() => { - expect(queryByText(/you do not have permission to manage enterprise connections/i)).not.toBeInTheDocument(); + expect(queryByText(/you do not have permission to manage single sign-on/i)).not.toBeInTheDocument(); }); - await findByText(/select provider/i); + await findByText(/select your identity provider/i); }); }); @@ -63,8 +63,8 @@ describe('ConfigureSSO', () => { const { findByText, queryByText } = render(, { wrapper }); - await findByText(/select provider/i); - expect(queryByText(/you do not have permission to manage enterprise connections/i)).not.toBeInTheDocument(); + await findByText(/select your identity provider/i); + expect(queryByText(/you do not have permission to manage single sign-on/i)).not.toBeInTheDocument(); }); }); }); diff --git a/packages/ui/src/components/ConfigureSSO/elements/Step.tsx b/packages/ui/src/components/ConfigureSSO/elements/Step.tsx index 71618955cba..870b6a6457a 100644 --- a/packages/ui/src/components/ConfigureSSO/elements/Step.tsx +++ b/packages/ui/src/components/ConfigureSSO/elements/Step.tsx @@ -38,6 +38,7 @@ type StepSectionProps = PropsOfComponent & { const Section = ({ fill, sx, ...props }: StepSectionProps): JSX.Element => ( ({ padding: theme.space.$5 }), fill && { flex: 1 }, sx]} /> @@ -55,6 +56,7 @@ const Header = ({ title, description, children }: StepHeaderProps): JSX.Element return (
({ borderBottomWidth: theme.borderWidths.$normal, borderBottomStyle: theme.borderStyles.$solid, @@ -67,10 +69,16 @@ const Header = ({ title, description, children }: StepHeaderProps): JSX.Element sx={theme => ({ gap: theme.space.$4 })} > ({ gap: theme.space.$2, minWidth: 0 })}> - {titleText} + + {titleText} + {descriptionText && ( @@ -89,6 +97,7 @@ type StepBodyProps = PropsOfComponent; const Body = ({ sx, ...props }: StepBodyProps): JSX.Element => ( { @@ -107,51 +109,85 @@ const InnerStepCounter = (): JSX.Element => { ); }; -const ATTRIBUTE_ROWS = [ - { - id: 'email', - isRequired: true, - attribute: localizationKeys('configureSSO.configureStep.attributeMapping.rows.email.attribute'), - claim: localizationKeys('configureSSO.configureStep.attributeMapping.rows.email.claim'), - oktaClaimValue: localizationKeys('configureSSO.configureStep.samlOkta.configureAttributes.pairs.email.expression'), - }, - { - id: 'firstName', - isRequired: false, - attribute: localizationKeys('configureSSO.configureStep.attributeMapping.rows.firstName.attribute'), - claim: localizationKeys('configureSSO.configureStep.attributeMapping.rows.firstName.claim'), - oktaClaimValue: localizationKeys( - 'configureSSO.configureStep.samlOkta.configureAttributes.pairs.firstName.expression', - ), - }, - { - id: 'lastName', - isRequired: false, - attribute: localizationKeys('configureSSO.configureStep.attributeMapping.rows.lastName.attribute'), - claim: localizationKeys('configureSSO.configureStep.attributeMapping.rows.lastName.claim'), - oktaClaimValue: localizationKeys( - 'configureSSO.configureStep.samlOkta.configureAttributes.pairs.lastName.expression', - ), - }, -] as const; +/** + * Per-provider attribute mapping table descriptor + */ +type AttributeMappingTableConfig = { + columns: { first: LocalizationKey; second: LocalizationKey }; + monoFirst?: boolean; + rows: ReadonlyArray<{ + id: string; + isRequired: boolean; + first: LocalizationKey; + second: LocalizationKey; + }>; +}; -const ATTRIBUTE_PAIRS = [ - { - id: 'email', - name: localizationKeys('configureSSO.configureStep.samlOkta.configureAttributes.pairs.email.name'), - expression: localizationKeys('configureSSO.configureStep.samlOkta.configureAttributes.pairs.email.expression'), - }, - { - id: 'firstName', - name: localizationKeys('configureSSO.configureStep.samlOkta.configureAttributes.pairs.firstName.name'), - expression: localizationKeys('configureSSO.configureStep.samlOkta.configureAttributes.pairs.firstName.expression'), +const SAML_OKTA_ATTRIBUTE_MAPPING: AttributeMappingTableConfig = { + columns: { + first: localizationKeys('configureSSO.configureStep.samlOkta.attributeMapping.columns.name'), + second: localizationKeys('configureSSO.configureStep.samlOkta.attributeMapping.columns.value'), }, - { - id: 'lastName', - name: localizationKeys('configureSSO.configureStep.samlOkta.configureAttributes.pairs.lastName.name'), - expression: localizationKeys('configureSSO.configureStep.samlOkta.configureAttributes.pairs.lastName.expression'), + monoFirst: true, + rows: [ + { + id: 'email', + isRequired: true, + first: localizationKeys('configureSSO.configureStep.samlOkta.attributeMapping.rows.email.name'), + second: localizationKeys('configureSSO.configureStep.samlOkta.attributeMapping.rows.email.value'), + }, + { + id: 'firstName', + isRequired: false, + first: localizationKeys('configureSSO.configureStep.samlOkta.attributeMapping.rows.firstName.name'), + second: localizationKeys('configureSSO.configureStep.samlOkta.attributeMapping.rows.firstName.value'), + }, + { + id: 'lastName', + isRequired: false, + first: localizationKeys('configureSSO.configureStep.samlOkta.attributeMapping.rows.lastName.name'), + second: localizationKeys('configureSSO.configureStep.samlOkta.attributeMapping.rows.lastName.value'), + }, + ], +}; + +const SAML_CUSTOM_ATTRIBUTE_MAPPING: AttributeMappingTableConfig = { + columns: { + first: localizationKeys('configureSSO.configureStep.samlCustom.attributeMapping.columns.userProfile'), + second: localizationKeys('configureSSO.configureStep.samlCustom.attributeMapping.columns.attributeName'), }, -] as const; + rows: [ + { + id: 'id', + isRequired: true, + first: localizationKeys('configureSSO.configureStep.samlCustom.attributeMapping.rows.id.userProfile'), + second: localizationKeys('configureSSO.configureStep.samlCustom.attributeMapping.rows.id.attributeName'), + }, + { + id: 'email', + isRequired: true, + first: localizationKeys('configureSSO.configureStep.samlCustom.attributeMapping.rows.email.userProfile'), + second: localizationKeys('configureSSO.configureStep.samlCustom.attributeMapping.rows.email.attributeName'), + }, + { + id: 'firstName', + isRequired: false, + first: localizationKeys('configureSSO.configureStep.samlCustom.attributeMapping.rows.firstName.userProfile'), + second: localizationKeys('configureSSO.configureStep.samlCustom.attributeMapping.rows.firstName.attributeName'), + }, + { + id: 'lastName', + isRequired: false, + first: localizationKeys('configureSSO.configureStep.samlCustom.attributeMapping.rows.lastName.userProfile'), + second: localizationKeys('configureSSO.configureStep.samlCustom.attributeMapping.rows.lastName.attributeName'), + }, + ], +}; + +const ATTRIBUTE_MAPPING_BY_PROVIDER: Partial> = { + saml_okta: SAML_OKTA_ATTRIBUTE_MAPPING, + saml_custom: SAML_CUSTOM_ATTRIBUTE_MAPPING, +}; export const CreateAppSubStep = (): JSX.Element => { const { goNext, goPrev, isFirstStep, isLastStep } = useWizard(); @@ -163,12 +199,12 @@ export const CreateAppSubStep = (): JSX.Element => { const acsUrlField = useFormControl('acsUrl', acsUrl, { type: 'text', - label: localizationKeys('configureSSO.configureStep.spFields.acsUrl.label'), + label: localizationKeys(key('spFields.acsUrl.label')), isRequired: false, }); const spEntityIdField = useFormControl('spEntityId', spEntityId, { type: 'text', - label: localizationKeys('configureSSO.configureStep.spFields.spEntityId.label'), + label: localizationKeys(key('spFields.spEntityId.label')), isRequired: false, }); @@ -178,6 +214,7 @@ export const CreateAppSubStep = (): JSX.Element => { ({ gap: theme.space.$5 })}> ({ gap: theme.space.$1x5 })}> { return ( ({ gap: theme.space.$1x5 })}> { const OktaCreateAppStepContent = (): JSX.Element => { return ( ({ gap: theme.space.$1x5, @@ -271,26 +310,31 @@ const OktaCreateAppStepContent = (): JSX.Element => { })} > { return ( ({ gap: theme.space.$1x5 })}> ({ gap: theme.space.$1x5, @@ -317,11 +363,13 @@ const OktaCompleteSamlIntegrationStepContent = (): JSX.Element => { })} > { const { goNext, goPrev, isFirstStep, isLastStep } = useWizard(); const { provider } = useConfigureSSO(); - const isOkta = provider === 'saml_okta'; + const mappingConfig = provider ? ATTRIBUTE_MAPPING_BY_PROVIDER[provider] : undefined; return ( <> @@ -343,96 +391,16 @@ export const ConfigureAttributesSubStep = (): JSX.Element => { ({ gap: theme.space.$3 })}> {provider === 'saml_custom' && ( )} - ({ - 'tr > th:first-of-type': { - paddingInlineStart: theme.space.$4, - }, - })} - > - - - - - - - {isOkta && ( - - )} - - - - - {ATTRIBUTE_ROWS.map(row => ( - - - - - - {isOkta && ( - - )} - - ))} - -
- ({ fontSize: theme.fontSizes.$xs })} - localizationKey={localizationKeys('configureSSO.configureStep.attributeMapping.columns.attribute')} - /> - - ({ fontSize: theme.fontSizes.$xs })} - localizationKey={localizationKeys('configureSSO.configureStep.attributeMapping.columns.claimName')} - /> - - ({ fontSize: theme.fontSizes.$xs })} - localizationKey={localizationKeys( - 'configureSSO.configureStep.attributeMapping.columns.claimValue', - )} - /> -
- ({ gap: theme.space.$2 })} - > - - - - - - - - -
+ {provider === 'saml_okta' && } - {isOkta && } + {mappingConfig && }
@@ -450,76 +418,106 @@ export const ConfigureAttributesSubStep = (): JSX.Element => { ); }; -const OktaConfigureAttributesStepContent = (): JSX.Element => { - return ( - <> - - - ({ - gap: theme.space.$1x5, - margin: 0, - paddingInlineStart: theme.space.$5, - listStyleType: 'decimal', - })} - > - - +const OktaConfigureAttributesStepContent = (): JSX.Element => ( + ({ + gap: theme.space.$1x5, + margin: 0, + paddingInlineStart: theme.space.$5, + listStyleType: 'decimal', + })} + > + + {/* + * The actual name/expression pairs that step 2 refers to are rendered + * by the `AttributeMappingTable` immediately below this component — + * keeping them in a single tabular surface instead of an inline badge + * list matches the design (see Okta screenshot: "Create the following + * attribute mapping statements:" + table). + */} + + +); + +const AttributeMappingTable = ({ config }: { config: AttributeMappingTableConfig }): JSX.Element => ( + ({ + 'tr > th:first-of-type': { + paddingInlineStart: theme.space.$4, + }, + })} + > + + + ({ - gap: theme.space.$1x5, - margin: 0, - marginTop: theme.space.$1x5, - paddingInlineStart: theme.space.$5, - listStyleType: '"- "', - })} - > - {ATTRIBUTE_PAIRS.map(pair => ( + + + + + + + {config.rows.map(row => ( + + + + + ))} + +
({ fontSize: theme.fontSizes.$xs })} + localizationKey={config.columns.first} /> -
+ ({ fontSize: theme.fontSizes.$xs })} + localizationKey={config.columns.second} + /> +
+ ({ gap: theme.space.$2 })} + > - - - - - - - ))} - - - - - ); -}; + as='span' + colorScheme={config.monoFirst ? undefined : 'secondary'} + sx={config.monoFirst ? { fontFamily: 'monospace' } : undefined} + localizationKey={row.first} + /> + + + + +
+); export const AssignUsersSubStep = (): JSX.Element => { const { goNext, goPrev, isFirstStep, isLastStep } = useWizard(); @@ -531,6 +529,7 @@ export const AssignUsersSubStep = (): JSX.Element => { ({ gap: theme.space.$3 })}> { ({ gap: theme.space.$3 })}> { /> ({ gap: theme.space.$1x5, @@ -582,26 +583,31 @@ export const AssignUsersSubStep = (): JSX.Element => { })} > { gap={5} > {existingCertPresent && ( )} - - - + + - - ({ - borderTopWidth: 0, - paddingTop: 0, - paddingBottom: 0, - flexDirection: 'column-reverse', - gap: t.space.$2, - flex: 1, - minHeight: 0, - '& > *:first-of-type': { - flex: 1, - minHeight: 0, - }, - })} + ({ flex: 1, minHeight: 0, gap: t.space.$3 })}> + ({ gap: t.space.$2, flexShrink: 0 })} > + + + + + { pageSize={TEST_RUNS_PAGE_SIZE} totalCount={totalCount ?? 0} onPageChange={setCurrentPage} - onTestRunCreated={handleTestRunCreated} /> - + {card.error ? ( ({ flexShrink: 0, paddingInline: t.space.$5, @@ -257,7 +241,6 @@ type TestResultsTableProps = { rows: EnterpriseConnectionTestRunResource[]; isLoading: boolean; isPolling: boolean; - onTestRunCreated?: (testUrl: string) => void; page: number; pageCount: number; pageSize: number; @@ -269,7 +252,6 @@ const TestResultsTable = ({ rows, isLoading, isPolling, - onTestRunCreated, page, pageCount, pageSize, @@ -304,6 +286,7 @@ const TestResultsTable = ({ })} > ({ background: t.colors.$colorBackground, @@ -344,7 +327,7 @@ const TestResultsTable = ({ > @@ -373,6 +372,7 @@ const TestResultsTable = ({ rows.map(row => ( setSelectedTestRun(row)} sx={t => ({ cursor: 'pointer', @@ -560,6 +560,7 @@ const ParsedUserInfoSection = ({ return ( ({ @@ -622,6 +623,7 @@ const FullMessageBlock = ({ message }: { message: string }): JSX.Element => { localizationKey={localizationKeys('configureSSO.testConfigurationStep.testRunDetails.runDetails.fullMessage')} /> { /> ({ margin: 0, @@ -682,6 +685,8 @@ const TestRunStatusCell = ({ testRun }: { testRun: EnterpriseConnectionTestRunRe if (testRun.status === 'success') { return ( @@ -690,6 +695,8 @@ const TestRunStatusCell = ({ testRun }: { testRun: EnterpriseConnectionTestRunRe if (testRun.status === 'failed') { return ( @@ -697,26 +704,26 @@ const TestRunStatusCell = ({ testRun }: { testRun: EnterpriseConnectionTestRunRe } return ( ); }; -type CopyTestUrlButtonProps = { +type OpenTestUrlButtonProps = { onTestRunCreated?: (testUrl: string) => void; }; -const CopyTestUrlButton = ({ onTestRunCreated }: CopyTestUrlButtonProps): JSX.Element => { +const OpenTestUrlButton = ({ onTestRunCreated }: OpenTestUrlButtonProps): JSX.Element => { const { user } = useUser(); const card = useCardState(); const { enterpriseConnection } = useConfigureSSO(); - const [testUrl, setTestUrl] = useState(''); const [isCreatingTestRun, setIsCreatingTestRun] = useState(false); - const { onCopy, hasCopied } = useClipboard(testUrl); - const createTestRun = () => { + const openTestRun = () => { if (!user || !enterpriseConnection) { return; } @@ -726,9 +733,10 @@ const CopyTestUrlButton = ({ onTestRunCreated }: CopyTestUrlButtonProps): JSX.El user .createEnterpriseConnectionTestRun(enterpriseConnection.id) .then(({ url }) => { - setTestUrl(url); - onCopy(url); onTestRunCreated?.(url); + // `noopener,noreferrer` so the IdP can't reach back into the dashboard + // via `window.opener` once it lands the SAML response. + window.open(url, '_blank', 'noopener,noreferrer'); }) .catch(err => handleError(err as Error, [], card.setError)) .finally(() => setIsCreatingTestRun(false)); @@ -736,15 +744,14 @@ const CopyTestUrlButton = ({ onTestRunCreated }: CopyTestUrlButtonProps): JSX.El return ( ); diff --git a/packages/ui/src/components/ConfigureSSO/steps/TestRunHowToFixSection.tsx b/packages/ui/src/components/ConfigureSSO/steps/TestRunHowToFixSection.tsx index 1b08d8d12e0..bbfc44fd3d1 100644 --- a/packages/ui/src/components/ConfigureSSO/steps/TestRunHowToFixSection.tsx +++ b/packages/ui/src/components/ConfigureSSO/steps/TestRunHowToFixSection.tsx @@ -1,4 +1,4 @@ -import { Box, Flex, Heading, Icon, Link, localizationKeys, Span, Text } from '@/customizables'; +import { Box, descriptors, Flex, Heading, Icon, Link, localizationKeys, Span, Text } from '@/customizables'; import { ArrowRightIcon } from '@/icons'; import type { LocalizationKey } from '../../../localization'; @@ -75,6 +75,7 @@ export const TestRunHowToFixSection = ({ errorCode }: TestRunHowToFixSectionProp return ( ({ @@ -104,6 +105,7 @@ export const TestRunHowToFixSection = ({ errorCode }: TestRunHowToFixSectionProp { ({ gap: t.space.$3, alignItems: 'center', flex: 1 })} > ({ width: t.sizes.$8, @@ -72,6 +74,7 @@ export const VerifyDomainStep = (): JSX.Element => { sx={t => ({ textAlign: 'center', maxWidth: t.sizes.$94 })} > ({ fontSize: t.fontSizes.$lg, textWrap: 'balance' })} localizationKey={localizationKeys('configureSSO.verifyEmailDomainStep.domainTaken.title', { @@ -79,6 +82,7 @@ export const VerifyDomainStep = (): JSX.Element => { })} /> ({ @@ -243,6 +249,8 @@ export const ProvideEmailStep = ({ emailAddressRef, preExistingEmailIdRef }: Pro })} > ({ width: t.sizes.$8, @@ -252,6 +260,8 @@ export const ProvideEmailStep = ({ emailAddressRef, preExistingEmailIdRef }: Pro /> ({ fontSize: t.fontSizes.$lg, fontWeight: t.fontWeights.$bold })} localizationKey={localizationKeys('configureSSO.verifyEmailDomainStep.addEmailAddress.formTitle')} @@ -263,12 +273,16 @@ export const ProvideEmailStep = ({ emailAddressRef, preExistingEmailIdRef }: Pro sx={{ width: '100%' }} > {card.error ? ( ({ color: t.colors.$danger500, fontSize: t.fontSizes.$sm, textAlign: 'start' })} @@ -313,7 +328,6 @@ export const EnterVerificationCodeStep = ({ emailAddressRef: React.MutableRefObject; }): JSX.Element | null => { const { user } = useUser(); - const { provider, createEnterpriseConnection } = useConfigureSSO(); const card = useCardState(); const { goNext, goPrev } = useWizard(); const primaryEmailAddress = user?.primaryEmailAddress; @@ -357,18 +371,6 @@ export const EnterVerificationCodeStep = ({ } } - if (!provider) { - void goNext(); - return; - } - - try { - await createEnterpriseConnection(provider, emailToVerify); - } catch (err) { - handleError(err as Error, [], card.setError); - return; - } - void goNext(); }, }); @@ -398,11 +400,15 @@ export const EnterVerificationCodeStep = ({ > ({ fontSize: t.fontSizes.$sm })} localizationKey={localizationKeys('configureSSO.verifyEmailDomainStep.emailCode.formTitle')} /> ({ width: t.sizes.$8, @@ -454,6 +464,8 @@ const EmailAlreadyVerified = ({ emailAddress }: { emailAddress: string }): JSX.E sx={t => ({ textAlign: 'center', maxWidth: t.sizes.$66 })} > ({ fontSize: t.fontSizes.$lg, fontWeight: t.fontWeights.$bold })} localizationKey={localizationKeys('configureSSO.verifyEmailDomainStep.emailCode.verified.title')} @@ -463,6 +475,8 @@ const EmailAlreadyVerified = ({ emailAddress }: { emailAddress: string }): JSX.E sx={{ flex: 1 }} > { const { wrapper } = await createFixtures(); renderStep(wrapper); - expect(screen.getByRole('heading', { name: 'Select provider' })).toBeInTheDocument(); - expect(screen.getByText('Select your identity provider')).toBeInTheDocument(); + expect(screen.getByRole('heading', { name: 'Select your identity provider' })).toBeInTheDocument(); + expect(screen.getByText(/We.*ll guide you through the detailed setup process next\./)).toBeInTheDocument(); }); it('renders both SAML provider radios with their labels', async () => { diff --git a/packages/ui/src/customizables/elementDescriptors.ts b/packages/ui/src/customizables/elementDescriptors.ts index 9f228b833cc..55d3863b094 100644 --- a/packages/ui/src/customizables/elementDescriptors.ts +++ b/packages/ui/src/customizables/elementDescriptors.ts @@ -544,11 +544,66 @@ export const APPEARANCE_KEYS = containsAllElementsConfigKeys([ 'configureSSOStepperItemLabel', 'configureSSOStepperSeparator', 'configureSSOStep', + 'configureSSOStepHeader', + 'configureSSOStepHeaderTitle', + 'configureSSOStepHeaderDescription', + 'configureSSOStepBody', + 'configureSSOStepSection', 'configureSSOStepCounter', 'configureSSOFooter', 'configureSSOFooterPreviousButton', 'configureSSOFooterContinueButton', + 'configureSSOProviderGroup', + 'configureSSOProviderGroupLabel', + 'configureSSOProviderGrid', + 'configureSSOProviderCard', + 'configureSSOProviderCardIcon', + 'configureSSOProviderCardLabel', + + 'configureSSOVerifyDomainErrorRoot', + 'configureSSOVerifyDomainErrorIcon', + 'configureSSOVerifyDomainErrorTitle', + 'configureSSOVerifyDomainErrorSubtitle', + 'configureSSOEmailVerificationForm', + 'configureSSOEmailVerificationIcon', + 'configureSSOEmailVerificationTitle', + 'configureSSOEmailVerificationSubtitle', + 'configureSSOEmailVerificationInput', + 'configureSSOEmailVerificationError', + + 'configureSSOInstructionsHeading', + 'configureSSOInstructionsList', + 'configureSSOInstructionsListItem', + 'configureSSOAttributeMappingTable', + 'configureSSOAttributeMappingBadge', + 'configureSSOCertificateUploadButton', + 'configureSSOCertificateFileBadge', + 'configureSSOCertificateFileName', + 'configureSSOCertificateRemoveButton', + + 'configureSSOTestUrlOpenButton', + 'configureSSOTestRefreshButton', + 'configureSSOTestResultsTable', + 'configureSSOTestResultsRow', + 'configureSSOTestResultsEmpty', + 'configureSSOTestResultsLoadingSpinner', + 'configureSSOTestRunStatusBadge', + 'configureSSOTestRunFullMessage', + 'configureSSOTestRunFullMessageCopyButton', + 'configureSSOTestRunHowToFixSection', + 'configureSSOTestRunHowToFixDocsLink', + 'configureSSOTestRunParsedUserInfo', + 'configureSSOTestError', + + 'configureSSOConfirmationStatusBadge', + 'configureSSOConfirmationDomainLink', + 'configureSSOConfirmationConfigDetailsLabel', + 'configureSSOConfirmationConfigDetailsValue', + 'configureSSOConfirmationConfigDetailsLink', + 'configureSSOConfirmationReconfigureButton', + 'configureSSOConfirmationResetButton', + 'web3SolanaWalletButtonsRoot', 'web3SolanaWalletButtons', 'web3SolanaWalletButtonsIconButton', diff --git a/packages/ui/src/hooks/index.ts b/packages/ui/src/hooks/index.ts index 796773dd1d4..dcbc9e9f64a 100644 --- a/packages/ui/src/hooks/index.ts +++ b/packages/ui/src/hooks/index.ts @@ -16,4 +16,5 @@ export * from './usePrefersReducedMotion'; export * from './useSafeState'; export * from './useScrollLock'; export * from './useSearchInput'; +export * from './useSpinDelay'; export * from './useTotalEnabledAuthMethods'; diff --git a/packages/ui/src/hooks/useSpinDelay.ts b/packages/ui/src/hooks/useSpinDelay.ts new file mode 100644 index 00000000000..00c3b8d4562 --- /dev/null +++ b/packages/ui/src/hooks/useSpinDelay.ts @@ -0,0 +1,66 @@ +import { useEffect, useRef } from 'react'; + +import { useSafeState } from './useSafeState'; + +type UseSpinDelayOptions = { + /** + * The amount of time (in ms) to wait before reflecting `value === true`. If `value` flips back + * to `false` before this elapses, the flag is never set to `true` (the spinner is skipped). + * + * @default 0 + */ + delay?: number; + /** + * Once the flag becomes `true`, it stays `true` for at least this long (in ms) even if the + * underlying `value` returns to `false` earlier. Prevents the spinner from flickering on fast + * operations. + * + * @default 425 + */ + minDuration?: number; +}; + +const DEFAULT_DELAY = 0; +// 425ms is the default used by the dashboard (`apps/dashboard/app/hooks/use-pending-hooks.ts`), +// chosen by trial-and-error as the threshold above which a spinner feels intentional rather +// than a flicker. +const DEFAULT_MIN_DURATION = 425; + +/** + * Smooths a transient boolean flag (typically a loading/fetching state) so the consumer never + * shows a spinner that flickers on and off within a single frame. + * + * @example + * const isFetching = useSomeQuery(); + * const showSpinner = useSpinDelay(isFetching, { delay: 0, minDuration: 425 }); + * return showSpinner ? : ; + */ +export function useSpinDelay( + value: boolean, + { delay = DEFAULT_DELAY, minDuration = DEFAULT_MIN_DURATION }: UseSpinDelayOptions = {}, +): boolean { + const [displayed, setDisplayed] = useSafeState(false); + const shownAtRef = useRef(null); + + useEffect(() => { + if (value && !displayed) { + const timeout = setTimeout(() => { + shownAtRef.current = Date.now(); + setDisplayed(true); + }, delay); + return () => clearTimeout(timeout); + } + + if (!value && displayed) { + const elapsed = shownAtRef.current != null ? Date.now() - shownAtRef.current : minDuration; + const remaining = Math.max(0, minDuration - elapsed); + const timeout = setTimeout(() => { + shownAtRef.current = null; + setDisplayed(false); + }, remaining); + return () => clearTimeout(timeout); + } + }, [value, displayed, delay, minDuration, setDisplayed]); + + return displayed; +} diff --git a/packages/ui/src/internal/appearance.ts b/packages/ui/src/internal/appearance.ts index e558f3af36c..41a80cdbf8b 100644 --- a/packages/ui/src/internal/appearance.ts +++ b/packages/ui/src/internal/appearance.ts @@ -680,11 +680,66 @@ export type ElementsConfig = { configureSSOStepperItemLabel: WithOptions; configureSSOStepperSeparator: WithOptions; configureSSOStep: WithOptions; + configureSSOStepHeader: WithOptions; + configureSSOStepHeaderTitle: WithOptions; + configureSSOStepHeaderDescription: WithOptions; + configureSSOStepBody: WithOptions; + configureSSOStepSection: WithOptions; configureSSOStepCounter: WithOptions; configureSSOFooter: WithOptions; configureSSOFooterPreviousButton: WithOptions; configureSSOFooterContinueButton: WithOptions; + configureSSOProviderGroup: WithOptions; + configureSSOProviderGroupLabel: WithOptions; + configureSSOProviderGrid: WithOptions; + configureSSOProviderCard: WithOptions; + configureSSOProviderCardIcon: WithOptions; + configureSSOProviderCardLabel: WithOptions; + + configureSSOVerifyDomainErrorRoot: WithOptions; + configureSSOVerifyDomainErrorIcon: WithOptions; + configureSSOVerifyDomainErrorTitle: WithOptions; + configureSSOVerifyDomainErrorSubtitle: WithOptions; + configureSSOEmailVerificationForm: WithOptions; + configureSSOEmailVerificationIcon: WithOptions; + configureSSOEmailVerificationTitle: WithOptions; + configureSSOEmailVerificationSubtitle: WithOptions; + configureSSOEmailVerificationInput: WithOptions; + configureSSOEmailVerificationError: WithOptions; + + configureSSOInstructionsHeading: WithOptions; + configureSSOInstructionsList: WithOptions; + configureSSOInstructionsListItem: WithOptions; + configureSSOAttributeMappingTable: WithOptions; + configureSSOAttributeMappingBadge: WithOptions; + configureSSOCertificateUploadButton: WithOptions; + configureSSOCertificateFileBadge: WithOptions; + configureSSOCertificateFileName: WithOptions; + configureSSOCertificateRemoveButton: WithOptions; + + configureSSOTestUrlOpenButton: WithOptions; + configureSSOTestRefreshButton: WithOptions; + configureSSOTestResultsTable: WithOptions; + configureSSOTestResultsRow: WithOptions; + configureSSOTestResultsEmpty: WithOptions; + configureSSOTestResultsLoadingSpinner: WithOptions; + configureSSOTestRunStatusBadge: WithOptions; + configureSSOTestRunFullMessage: WithOptions; + configureSSOTestRunFullMessageCopyButton: WithOptions; + configureSSOTestRunHowToFixSection: WithOptions; + configureSSOTestRunHowToFixDocsLink: WithOptions; + configureSSOTestRunParsedUserInfo: WithOptions; + configureSSOTestError: WithOptions; + + configureSSOConfirmationStatusBadge: WithOptions; + configureSSOConfirmationDomainLink: WithOptions; + configureSSOConfirmationConfigDetailsLabel: WithOptions; + configureSSOConfirmationConfigDetailsValue: WithOptions; + configureSSOConfirmationConfigDetailsLink: WithOptions; + configureSSOConfirmationReconfigureButton: WithOptions; + configureSSOConfirmationResetButton: WithOptions; + web3SolanaWalletButtonsRoot: WithOptions; web3SolanaWalletButtons: WithOptions; web3SolanaWalletButtonsIconButton: WithOptions;
({ padding: `${t.space.$10} 0`, flex: 1 })} + sx={t => ({ + padding: `${t.space.$10} 0`, + flex: 1, + gap: t.space.$1, + textAlign: 'center', + })} > - + +