From 56b845fa81497a766269387498d190b285f68b68 Mon Sep 17 00:00:00 2001 From: Laura Beatris Date: Wed, 20 May 2026 10:13:30 -0300 Subject: [PATCH 01/16] Move verify domain as first step --- .../ui/src/components/ConfigureSSO/ConfigureSSO.tsx | 8 ++++---- .../components/ConfigureSSO/deriveInitialStep.ts | 8 +------- .../ConfigureSSO/steps/VerifyDomainStep.tsx | 13 ------------- 3 files changed, 5 insertions(+), 24 deletions(-) diff --git a/packages/ui/src/components/ConfigureSSO/ConfigureSSO.tsx b/packages/ui/src/components/ConfigureSSO/ConfigureSSO.tsx index 399672d1cdb..f08b3f5804a 100644 --- a/packages/ui/src/components/ConfigureSSO/ConfigureSSO.tsx +++ b/packages/ui/src/components/ConfigureSSO/ConfigureSSO.tsx @@ -107,10 +107,6 @@ const ConfigureSSOSteps = () => { - - - - { + + + + { const { isDomainTakenByOtherOrg, hasSuccessfulTestRun } = options; - // Go to the verify domain step in order to display warning - if (isDomainTakenByOtherOrg) { + if (isDomainTakenByOtherOrg || !enterpriseConnection) { return 'verify-domain'; } - // If no initial connection, go to the select provider step - if (!enterpriseConnection) { - return 'select-provider'; - } - // Connection is enabled, go to the confirmation step const isEnabled = enterpriseConnection?.active; if (isEnabled) { diff --git a/packages/ui/src/components/ConfigureSSO/steps/VerifyDomainStep.tsx b/packages/ui/src/components/ConfigureSSO/steps/VerifyDomainStep.tsx index 5600e6c65d1..bd03ba0a4c7 100644 --- a/packages/ui/src/components/ConfigureSSO/steps/VerifyDomainStep.tsx +++ b/packages/ui/src/components/ConfigureSSO/steps/VerifyDomainStep.tsx @@ -313,7 +313,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 +356,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(); }, }); From 6ffca59375715c2825477305407bfff4e7243243 Mon Sep 17 00:00:00 2001 From: Laura Beatris Date: Wed, 20 May 2026 11:33:01 -0300 Subject: [PATCH 02/16] Update select provider step title --- packages/localizations/src/ar-SA.ts | 4 ---- packages/localizations/src/be-BY.ts | 4 ---- packages/localizations/src/bg-BG.ts | 4 ---- packages/localizations/src/bn-IN.ts | 12 ++++-------- packages/localizations/src/ca-ES.ts | 4 ---- packages/localizations/src/cs-CZ.ts | 4 ---- packages/localizations/src/da-DK.ts | 4 ---- packages/localizations/src/de-DE.ts | 4 ---- packages/localizations/src/el-GR.ts | 4 ---- packages/localizations/src/en-GB.ts | 4 ---- packages/localizations/src/en-US.ts | 8 ++------ packages/localizations/src/es-CR.ts | 4 ---- packages/localizations/src/es-ES.ts | 4 ---- packages/localizations/src/es-MX.ts | 4 ---- packages/localizations/src/es-UY.ts | 4 ---- packages/localizations/src/fa-IR.ts | 4 ---- packages/localizations/src/fi-FI.ts | 4 ---- packages/localizations/src/fr-FR.ts | 4 ---- packages/localizations/src/he-IL.ts | 4 ---- packages/localizations/src/hi-IN.ts | 4 ---- packages/localizations/src/hr-HR.ts | 4 ---- packages/localizations/src/hu-HU.ts | 4 ---- packages/localizations/src/id-ID.ts | 4 ---- packages/localizations/src/is-IS.ts | 4 ---- packages/localizations/src/it-IT.ts | 4 ---- packages/localizations/src/ja-JP.ts | 4 ---- packages/localizations/src/kk-KZ.ts | 12 ++++-------- packages/localizations/src/ko-KR.ts | 4 ---- packages/localizations/src/mn-MN.ts | 12 ++++-------- packages/localizations/src/ms-MY.ts | 4 ---- packages/localizations/src/nb-NO.ts | 4 ---- packages/localizations/src/nl-BE.ts | 4 ---- packages/localizations/src/nl-NL.ts | 4 ---- packages/localizations/src/pl-PL.ts | 4 ---- packages/localizations/src/pt-BR.ts | 4 ---- packages/localizations/src/pt-PT.ts | 4 ---- packages/localizations/src/ro-RO.ts | 4 ---- packages/localizations/src/ru-RU.ts | 4 ---- packages/localizations/src/sk-SK.ts | 4 ---- packages/localizations/src/sr-RS.ts | 4 ---- packages/localizations/src/sv-SE.ts | 4 ---- packages/localizations/src/ta-IN.ts | 12 ++++-------- packages/localizations/src/te-IN.ts | 12 ++++-------- packages/localizations/src/th-TH.ts | 4 ---- packages/localizations/src/tr-TR.ts | 4 ---- packages/localizations/src/uk-UA.ts | 4 ---- packages/localizations/src/vi-VN.ts | 4 ---- packages/localizations/src/zh-CN.ts | 4 ---- packages/localizations/src/zh-TW.ts | 4 ---- packages/shared/src/types/localization.ts | 4 ---- .../ConfigureSSO/steps/SelectProviderStep.tsx | 14 -------------- 51 files changed, 22 insertions(+), 236 deletions(-) diff --git a/packages/localizations/src/ar-SA.ts b/packages/localizations/src/ar-SA.ts index acbbec64384..5d4e1c072b6 100644 --- a/packages/localizations/src/ar-SA.ts +++ b/packages/localizations/src/ar-SA.ts @@ -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..15401eb950d 100644 --- a/packages/localizations/src/be-BY.ts +++ b/packages/localizations/src/be-BY.ts @@ -190,10 +190,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..1cb10e91604 100644 --- a/packages/localizations/src/bg-BG.ts +++ b/packages/localizations/src/bg-BG.ts @@ -191,10 +191,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..e9e911e6123 100644 --- a/packages/localizations/src/bn-IN.ts +++ b/packages/localizations/src/bn-IN.ts @@ -187,18 +187,14 @@ export const bnIN: LocalizationResource = { 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..a0707cec43d 100644 --- a/packages/localizations/src/ca-ES.ts +++ b/packages/localizations/src/ca-ES.ts @@ -197,10 +197,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..fff746e67e0 100644 --- a/packages/localizations/src/cs-CZ.ts +++ b/packages/localizations/src/cs-CZ.ts @@ -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..9838d23c908 100644 --- a/packages/localizations/src/da-DK.ts +++ b/packages/localizations/src/da-DK.ts @@ -190,10 +190,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..1e074c8e700 100644 --- a/packages/localizations/src/de-DE.ts +++ b/packages/localizations/src/de-DE.ts @@ -196,10 +196,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..571334f41df 100644 --- a/packages/localizations/src/el-GR.ts +++ b/packages/localizations/src/el-GR.ts @@ -190,10 +190,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..ac0a1c42771 100644 --- a/packages/localizations/src/en-GB.ts +++ b/packages/localizations/src/en-GB.ts @@ -190,10 +190,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', diff --git a/packages/localizations/src/en-US.ts b/packages/localizations/src/en-US.ts index a9a83381088..07b08d945d1 100644 --- a/packages/localizations/src/en-US.ts +++ b/packages/localizations/src/en-US.ts @@ -237,12 +237,8 @@ export const enUS: LocalizationResource = { 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', diff --git a/packages/localizations/src/es-CR.ts b/packages/localizations/src/es-CR.ts index c8ee78fa910..ff85efea746 100644 --- a/packages/localizations/src/es-CR.ts +++ b/packages/localizations/src/es-CR.ts @@ -190,10 +190,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..7ce2ce85837 100644 --- a/packages/localizations/src/es-ES.ts +++ b/packages/localizations/src/es-ES.ts @@ -196,10 +196,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..377b4d37335 100644 --- a/packages/localizations/src/es-MX.ts +++ b/packages/localizations/src/es-MX.ts @@ -191,10 +191,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..e691b01f53a 100644 --- a/packages/localizations/src/es-UY.ts +++ b/packages/localizations/src/es-UY.ts @@ -190,10 +190,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..b95e7e633d1 100644 --- a/packages/localizations/src/fa-IR.ts +++ b/packages/localizations/src/fa-IR.ts @@ -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..2ac1b92fbdc 100644 --- a/packages/localizations/src/fi-FI.ts +++ b/packages/localizations/src/fi-FI.ts @@ -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..da5fe26eb0b 100644 --- a/packages/localizations/src/fr-FR.ts +++ b/packages/localizations/src/fr-FR.ts @@ -198,10 +198,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..b184977811a 100644 --- a/packages/localizations/src/he-IL.ts +++ b/packages/localizations/src/he-IL.ts @@ -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..35c14ddf22c 100644 --- a/packages/localizations/src/hi-IN.ts +++ b/packages/localizations/src/hi-IN.ts @@ -190,10 +190,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..9f426f55218 100644 --- a/packages/localizations/src/hr-HR.ts +++ b/packages/localizations/src/hr-HR.ts @@ -219,10 +219,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..ffa3e77443e 100644 --- a/packages/localizations/src/hu-HU.ts +++ b/packages/localizations/src/hu-HU.ts @@ -219,10 +219,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..fed077348d2 100644 --- a/packages/localizations/src/id-ID.ts +++ b/packages/localizations/src/id-ID.ts @@ -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..25e9881b30b 100644 --- a/packages/localizations/src/is-IS.ts +++ b/packages/localizations/src/is-IS.ts @@ -218,10 +218,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..cb52575873a 100644 --- a/packages/localizations/src/it-IT.ts +++ b/packages/localizations/src/it-IT.ts @@ -196,10 +196,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..d52733ba150 100644 --- a/packages/localizations/src/ja-JP.ts +++ b/packages/localizations/src/ja-JP.ts @@ -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..a80b37e988e 100644 --- a/packages/localizations/src/kk-KZ.ts +++ b/packages/localizations/src/kk-KZ.ts @@ -187,18 +187,14 @@ export const kkKZ: LocalizationResource = { 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..4cfea0523da 100644 --- a/packages/localizations/src/ko-KR.ts +++ b/packages/localizations/src/ko-KR.ts @@ -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..ff3a98ac128 100644 --- a/packages/localizations/src/mn-MN.ts +++ b/packages/localizations/src/mn-MN.ts @@ -187,18 +187,14 @@ export const mnMN: LocalizationResource = { 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..11c963c7080 100644 --- a/packages/localizations/src/ms-MY.ts +++ b/packages/localizations/src/ms-MY.ts @@ -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..334b27d4112 100644 --- a/packages/localizations/src/nb-NO.ts +++ b/packages/localizations/src/nb-NO.ts @@ -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..890ce093424 100644 --- a/packages/localizations/src/nl-BE.ts +++ b/packages/localizations/src/nl-BE.ts @@ -190,10 +190,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..5805978eb9b 100644 --- a/packages/localizations/src/nl-NL.ts +++ b/packages/localizations/src/nl-NL.ts @@ -190,10 +190,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..0fb5b23907c 100644 --- a/packages/localizations/src/pl-PL.ts +++ b/packages/localizations/src/pl-PL.ts @@ -190,10 +190,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..312095e2b3b 100644 --- a/packages/localizations/src/pt-BR.ts +++ b/packages/localizations/src/pt-BR.ts @@ -196,10 +196,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..64db2ffaaf7 100644 --- a/packages/localizations/src/pt-PT.ts +++ b/packages/localizations/src/pt-PT.ts @@ -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..6b3f2c9dae8 100644 --- a/packages/localizations/src/ro-RO.ts +++ b/packages/localizations/src/ro-RO.ts @@ -196,10 +196,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..f7a5a984b6b 100644 --- a/packages/localizations/src/ru-RU.ts +++ b/packages/localizations/src/ru-RU.ts @@ -190,10 +190,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..7e2490381c2 100644 --- a/packages/localizations/src/sk-SK.ts +++ b/packages/localizations/src/sk-SK.ts @@ -190,10 +190,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..c28f5a11a5f 100644 --- a/packages/localizations/src/sr-RS.ts +++ b/packages/localizations/src/sr-RS.ts @@ -190,10 +190,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..9ea07b4256c 100644 --- a/packages/localizations/src/sv-SE.ts +++ b/packages/localizations/src/sv-SE.ts @@ -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..b904683de39 100644 --- a/packages/localizations/src/ta-IN.ts +++ b/packages/localizations/src/ta-IN.ts @@ -187,18 +187,14 @@ export const taIN: LocalizationResource = { 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..77b1501bd22 100644 --- a/packages/localizations/src/te-IN.ts +++ b/packages/localizations/src/te-IN.ts @@ -187,18 +187,14 @@ export const teIN: LocalizationResource = { 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..ceb9479ee31 100644 --- a/packages/localizations/src/th-TH.ts +++ b/packages/localizations/src/th-TH.ts @@ -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..0e4d43cdecf 100644 --- a/packages/localizations/src/tr-TR.ts +++ b/packages/localizations/src/tr-TR.ts @@ -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..85900d3fc64 100644 --- a/packages/localizations/src/uk-UA.ts +++ b/packages/localizations/src/uk-UA.ts @@ -190,10 +190,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..00357809d1d 100644 --- a/packages/localizations/src/vi-VN.ts +++ b/packages/localizations/src/vi-VN.ts @@ -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..e9861598e9f 100644 --- a/packages/localizations/src/zh-CN.ts +++ b/packages/localizations/src/zh-CN.ts @@ -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..1d4ebc4a8cd 100644 --- a/packages/localizations/src/zh-TW.ts +++ b/packages/localizations/src/zh-TW.ts @@ -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..087dca472f2 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; diff --git a/packages/ui/src/components/ConfigureSSO/steps/SelectProviderStep.tsx b/packages/ui/src/components/ConfigureSSO/steps/SelectProviderStep.tsx index 882bf513211..44964cabf02 100644 --- a/packages/ui/src/components/ConfigureSSO/steps/SelectProviderStep.tsx +++ b/packages/ui/src/components/ConfigureSSO/steps/SelectProviderStep.tsx @@ -86,20 +86,6 @@ export const SelectProviderStep = (): JSX.Element => { ({ gap: theme.space.$5 })}> - ({ gap: theme.space.$1x5 })}> - - - - - {PROVIDER_GROUPS.map(group => ( Date: Wed, 20 May 2026 12:28:49 -0300 Subject: [PATCH 03/16] Display domain as sidebar footer --- .../ConfigureSSO/ConfigureSSONavbar.tsx | 33 +++++++++++++++++-- packages/ui/src/elements/Navbar.tsx | 9 +++-- 2 files changed, 38 insertions(+), 4 deletions(-) diff --git a/packages/ui/src/components/ConfigureSSO/ConfigureSSONavbar.tsx b/packages/ui/src/components/ConfigureSSO/ConfigureSSONavbar.tsx index c4f60ee94de..95ef63a3d96 100644 --- a/packages/ui/src/components/ConfigureSSO/ConfigureSSONavbar.tsx +++ b/packages/ui/src/components/ConfigureSSO/ConfigureSSONavbar.tsx @@ -1,8 +1,8 @@ -import { useOrganization } from '@clerk/shared/react/index'; +import { useOrganization, useUser } from '@clerk/shared/react/index'; import React from 'react'; import { useEnvironment } from '@/contexts'; -import { Box, Col, Flex, Icon, localizationKeys, Text, useAppearance } from '@/customizables'; +import { Box, Col, Flex, Hr, Icon, localizationKeys, Text, useAppearance } from '@/customizables'; import { ApplicationLogo } from '@/elements/ApplicationLogo'; import { NavBar, NavbarContextProvider } from '@/elements/Navbar'; import { BoxIcon } from '@/icons'; @@ -77,6 +77,7 @@ export const ConfigureSSONavbar = ({ children, contentRef }: ConfigureSSONavbarP title={localizationKeys('configureSSO.navbar.title')} routes={[]} contentRef={contentRef} + footer={} /> {children} @@ -100,3 +101,31 @@ const OrganizationSidebarSubtitle = (): JSX.Element | null => { ); }; + +const PrimaryEmailDomainFooter = (): JSX.Element | null => { + const { user } = useUser(); + const emailDomain = user?.primaryEmailAddress?.emailAddress.split('@')[1]; + + if (!emailDomain) { + return null; + } + + return ( + ({ + gap: t.space.$6, + padding: `${t.space.$none} ${t.space.$3}`, + })} + > +
+ + + {emailDomain} + + + ); +}; diff --git a/packages/ui/src/elements/Navbar.tsx b/packages/ui/src/elements/Navbar.tsx index 538a83474cd..2e0a1418721 100644 --- a/packages/ui/src/elements/Navbar.tsx +++ b/packages/ui/src/elements/Navbar.tsx @@ -50,10 +50,11 @@ type NavBarProps = { contentRef: React.RefObject; routes: NavbarRoute[]; header?: React.ReactNode; + footer?: React.ReactNode; }; export const NavBar = (props: NavBarProps) => { - const { contentRef, title, titleSx, containerSx, description, routes, header } = props; + const { contentRef, title, titleSx, containerSx, description, routes, header, footer } = props; const { close } = useNavbarContext(); const { navigate } = useRouter(); const { navigateToFlowStart } = useNavigateToFlowStart(); @@ -132,6 +133,7 @@ export const NavBar = (props: NavBarProps) => { titleSx={titleSx} containerSx={containerSx} description={description} + footer={footer} > {header} {items} @@ -139,6 +141,7 @@ export const NavBar = (props: NavBarProps) => { {header} {items} + {footer} ); @@ -150,9 +153,10 @@ const NavbarContainer = ( titleSx?: ThemableCssProp; containerSx?: ThemableCssProp; description?: LocalizationKey | string; + footer?: React.ReactNode; }>, ) => { - const { title, titleSx, containerSx, description } = props; + const { title, titleSx, containerSx, description, footer } = props; return ( ({ gap: t.space.$6, flex: `0 0 ${t.space.$60}` }), containerSx]}> + {footer} ({ gap: t.space.$0x5, From 015369d87c2231f5d493b162e24df42918210955 Mon Sep 17 00:00:00 2001 From: Laura Beatris Date: Wed, 20 May 2026 12:38:19 -0300 Subject: [PATCH 04/16] Update permission key according to FAPI changes --- packages/localizations/src/en-GB.ts | 2 +- packages/localizations/src/en-US.ts | 2 +- packages/ui/src/components/ConfigureSSO/ConfigureSSO.tsx | 2 +- .../src/components/ConfigureSSO/__tests__/ConfigureSSO.test.tsx | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/localizations/src/en-GB.ts b/packages/localizations/src/en-GB.ts index ac0a1c42771..5cf64510510 100644 --- a/packages/localizations/src/en-GB.ts +++ b/packages/localizations/src/en-GB.ts @@ -199,7 +199,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 07b08d945d1..77233f232e5 100644 --- a/packages/localizations/src/en-US.ts +++ b/packages/localizations/src/en-US.ts @@ -248,7 +248,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', diff --git a/packages/ui/src/components/ConfigureSSO/ConfigureSSO.tsx b/packages/ui/src/components/ConfigureSSO/ConfigureSSO.tsx index f08b3f5804a..24cff1effb2 100644 --- a/packages/ui/src/components/ConfigureSSO/ConfigureSSO.tsx +++ b/packages/ui/src/components/ConfigureSSO/ConfigureSSO.tsx @@ -146,7 +146,7 @@ const ConfigureSSOCardProtect = ({ children }: { children: React.ReactNode }) => 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/__tests__/ConfigureSSO.test.tsx b/packages/ui/src/components/ConfigureSSO/__tests__/ConfigureSSO.test.tsx index b1c3e2089a6..a2cdf3cd756 100644 --- a/packages/ui/src/components/ConfigureSSO/__tests__/ConfigureSSO.test.tsx +++ b/packages/ui/src/components/ConfigureSSO/__tests__/ConfigureSSO.test.tsx @@ -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'] }], }); }); From ca16782be8e9f62f591494823fa75d7dfa7226f3 Mon Sep 17 00:00:00 2001 From: Laura Beatris Date: Wed, 20 May 2026 15:15:15 -0300 Subject: [PATCH 05/16] Add more UI descriptors --- packages/localizations/src/ar-SA.ts | 4 +- packages/localizations/src/be-BY.ts | 5 +- packages/localizations/src/bg-BG.ts | 5 +- packages/localizations/src/bn-IN.ts | 4 +- packages/localizations/src/ca-ES.ts | 5 +- packages/localizations/src/cs-CZ.ts | 4 +- packages/localizations/src/da-DK.ts | 5 +- packages/localizations/src/de-DE.ts | 5 +- packages/localizations/src/el-GR.ts | 5 +- packages/localizations/src/en-GB.ts | 5 +- packages/localizations/src/en-US.ts | 5 +- packages/localizations/src/es-CR.ts | 5 +- packages/localizations/src/es-ES.ts | 5 +- packages/localizations/src/es-MX.ts | 5 +- packages/localizations/src/es-UY.ts | 5 +- packages/localizations/src/fa-IR.ts | 4 +- packages/localizations/src/fi-FI.ts | 4 +- packages/localizations/src/fr-FR.ts | 5 +- packages/localizations/src/he-IL.ts | 4 +- packages/localizations/src/hi-IN.ts | 5 +- packages/localizations/src/hr-HR.ts | 5 +- packages/localizations/src/hu-HU.ts | 5 +- packages/localizations/src/id-ID.ts | 4 +- packages/localizations/src/is-IS.ts | 5 +- packages/localizations/src/it-IT.ts | 5 +- packages/localizations/src/ja-JP.ts | 4 +- packages/localizations/src/kk-KZ.ts | 4 +- packages/localizations/src/ko-KR.ts | 4 +- packages/localizations/src/mn-MN.ts | 4 +- packages/localizations/src/ms-MY.ts | 4 +- packages/localizations/src/nb-NO.ts | 4 +- packages/localizations/src/nl-BE.ts | 5 +- packages/localizations/src/nl-NL.ts | 5 +- packages/localizations/src/pl-PL.ts | 5 +- packages/localizations/src/pt-BR.ts | 5 +- packages/localizations/src/pt-PT.ts | 4 +- packages/localizations/src/ro-RO.ts | 5 +- packages/localizations/src/ru-RU.ts | 5 +- packages/localizations/src/sk-SK.ts | 5 +- packages/localizations/src/sr-RS.ts | 5 +- packages/localizations/src/sv-SE.ts | 4 +- packages/localizations/src/ta-IN.ts | 4 +- packages/localizations/src/te-IN.ts | 4 +- packages/localizations/src/th-TH.ts | 4 +- packages/localizations/src/tr-TR.ts | 4 +- packages/localizations/src/uk-UA.ts | 5 +- packages/localizations/src/vi-VN.ts | 4 +- packages/localizations/src/zh-CN.ts | 4 +- packages/localizations/src/zh-TW.ts | 4 +- .../components/ConfigureSSO/elements/Step.tsx | 11 +++- .../ConfigureSSO/steps/ConfigureStep.tsx | 36 ++++++++++++ .../ConfigureSSO/steps/ConfirmationStep.tsx | 11 ++++ .../ConfigureSSO/steps/SelectProviderStep.tsx | 12 ++++ .../steps/TestConfigurationStep.tsx | 17 +++++- .../steps/TestRunHowToFixSection.tsx | 4 +- .../ConfigureSSO/steps/VerifyDomainStep.tsx | 29 ++++++++++ .../src/customizables/elementDescriptors.ts | 55 +++++++++++++++++++ packages/ui/src/internal/appearance.ts | 55 +++++++++++++++++++ 58 files changed, 325 insertions(+), 128 deletions(-) diff --git a/packages/localizations/src/ar-SA.ts b/packages/localizations/src/ar-SA.ts index 5d4e1c072b6..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)', diff --git a/packages/localizations/src/be-BY.ts b/packages/localizations/src/be-BY.ts index 15401eb950d..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)', diff --git a/packages/localizations/src/bg-BG.ts b/packages/localizations/src/bg-BG.ts index 1cb10e91604..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)', diff --git a/packages/localizations/src/bn-IN.ts b/packages/localizations/src/bn-IN.ts index e9e911e6123..e762c22d12e 100644 --- a/packages/localizations/src/bn-IN.ts +++ b/packages/localizations/src/bn-IN.ts @@ -180,8 +180,8 @@ export const bnIN: LocalizationResource = { }, configureSSO: { missingManageEnterpriseConnectionsPermission: { - subtitle: 'এন্টারপ্রাইজ সংযোগ পরিচালনার অনুমতি পেতে আপনার সংস্থার প্রশাসকের সাথে যোগাযোগ করুন।', - title: 'এন্টারপ্রাইজ সংযোগ পরিচালনার অনুমতি আপনার নেই', + subtitle: 'আপনার অনুমতি আপগ্রেড করতে আপনার সংস্থার প্রশাসকের সাথে যোগাযোগ করুন।', + title: 'একক সাইন-অন (SSO) পরিচালনার অনুমতি আপনার নেই', }, navbar: { title: 'একক সাইন-অন (SSO) কনফিগার করুন', diff --git a/packages/localizations/src/ca-ES.ts b/packages/localizations/src/ca-ES.ts index a0707cec43d..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)", diff --git a/packages/localizations/src/cs-CZ.ts b/packages/localizations/src/cs-CZ.ts index fff746e67e0..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)', diff --git a/packages/localizations/src/da-DK.ts b/packages/localizations/src/da-DK.ts index 9838d23c908..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)', diff --git a/packages/localizations/src/de-DE.ts b/packages/localizations/src/de-DE.ts index 1e074c8e700..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', diff --git a/packages/localizations/src/el-GR.ts b/packages/localizations/src/el-GR.ts index 571334f41df..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)', diff --git a/packages/localizations/src/en-GB.ts b/packages/localizations/src/en-GB.ts index 5cf64510510..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)', diff --git a/packages/localizations/src/en-US.ts b/packages/localizations/src/en-US.ts index 77233f232e5..0e8f50a0dca 100644 --- a/packages/localizations/src/en-US.ts +++ b/packages/localizations/src/en-US.ts @@ -229,9 +229,8 @@ 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)', diff --git a/packages/localizations/src/es-CR.ts b/packages/localizations/src/es-CR.ts index ff85efea746..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)', diff --git a/packages/localizations/src/es-ES.ts b/packages/localizations/src/es-ES.ts index 7ce2ce85837..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)', diff --git a/packages/localizations/src/es-MX.ts b/packages/localizations/src/es-MX.ts index 377b4d37335..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)', diff --git a/packages/localizations/src/es-UY.ts b/packages/localizations/src/es-UY.ts index e691b01f53a..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)', diff --git a/packages/localizations/src/fa-IR.ts b/packages/localizations/src/fa-IR.ts index b95e7e633d1..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)', diff --git a/packages/localizations/src/fi-FI.ts b/packages/localizations/src/fi-FI.ts index 2ac1b92fbdc..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)', diff --git a/packages/localizations/src/fr-FR.ts b/packages/localizations/src/fr-FR.ts index da5fe26eb0b..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)", diff --git a/packages/localizations/src/he-IL.ts b/packages/localizations/src/he-IL.ts index b184977811a..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)', diff --git a/packages/localizations/src/hi-IN.ts b/packages/localizations/src/hi-IN.ts index 35c14ddf22c..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) कॉन्फ़िगर करें', diff --git a/packages/localizations/src/hr-HR.ts b/packages/localizations/src/hr-HR.ts index 9f426f55218..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)', diff --git a/packages/localizations/src/hu-HU.ts b/packages/localizations/src/hu-HU.ts index ffa3e77443e..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', diff --git a/packages/localizations/src/id-ID.ts b/packages/localizations/src/id-ID.ts index fed077348d2..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)', diff --git a/packages/localizations/src/is-IS.ts b/packages/localizations/src/is-IS.ts index 25e9881b30b..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)', diff --git a/packages/localizations/src/it-IT.ts b/packages/localizations/src/it-IT.ts index cb52575873a..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)', diff --git a/packages/localizations/src/ja-JP.ts b/packages/localizations/src/ja-JP.ts index d52733ba150..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)を設定', diff --git a/packages/localizations/src/kk-KZ.ts b/packages/localizations/src/kk-KZ.ts index a80b37e988e..ce4c0f5a143 100644 --- a/packages/localizations/src/kk-KZ.ts +++ b/packages/localizations/src/kk-KZ.ts @@ -180,8 +180,8 @@ export const kkKZ: LocalizationResource = { }, configureSSO: { missingManageEnterpriseConnectionsPermission: { - subtitle: 'Корпоративтік қосылыстарды басқару рұқсаттарын алу үшін ұйым әкімшісіне хабарласыңыз.', - title: 'Сізде корпоративтік қосылыстарды басқаруға рұқсат жоқ', + subtitle: 'Рұқсаттарыңызды жаңарту үшін ұйым әкімшісіне хабарласыңыз.', + title: 'Сізде бірыңғай кіруді (SSO) басқаруға рұқсат жоқ', }, navbar: { title: 'Бірыңғай кіруді конфигурациялау (SSO)', diff --git a/packages/localizations/src/ko-KR.ts b/packages/localizations/src/ko-KR.ts index 4cfea0523da..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) 구성', diff --git a/packages/localizations/src/mn-MN.ts b/packages/localizations/src/mn-MN.ts index ff3a98ac128..4935f8b22aa 100644 --- a/packages/localizations/src/mn-MN.ts +++ b/packages/localizations/src/mn-MN.ts @@ -180,8 +180,8 @@ export const mnMN: LocalizationResource = { }, configureSSO: { missingManageEnterpriseConnectionsPermission: { - subtitle: 'Аж ахуйн нэгжийн холболтыг удирдах эрх авахын тулд байгууллагынхаа админтай холбогдоно уу.', - title: 'Танд аж ахуйн нэгжийн холболтыг удирдах эрх байхгүй байна', + subtitle: 'Эрхээ дээшлүүлэхийн тулд байгууллагынхаа админтай холбогдоно уу.', + title: 'Танд Нэгдсэн нэвтрэлт (SSO) удирдах эрх байхгүй байна', }, navbar: { title: 'Нэгдсэн нэвтрэлт (SSO) тохируулах', diff --git a/packages/localizations/src/ms-MY.ts b/packages/localizations/src/ms-MY.ts index 11c963c7080..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)', diff --git a/packages/localizations/src/nb-NO.ts b/packages/localizations/src/nb-NO.ts index 334b27d4112..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)', diff --git a/packages/localizations/src/nl-BE.ts b/packages/localizations/src/nl-BE.ts index 890ce093424..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', diff --git a/packages/localizations/src/nl-NL.ts b/packages/localizations/src/nl-NL.ts index 5805978eb9b..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', diff --git a/packages/localizations/src/pl-PL.ts b/packages/localizations/src/pl-PL.ts index 0fb5b23907c..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)', diff --git a/packages/localizations/src/pt-BR.ts b/packages/localizations/src/pt-BR.ts index 312095e2b3b..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)', diff --git a/packages/localizations/src/pt-PT.ts b/packages/localizations/src/pt-PT.ts index 64db2ffaaf7..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)', diff --git a/packages/localizations/src/ro-RO.ts b/packages/localizations/src/ro-RO.ts index 6b3f2c9dae8..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)', diff --git a/packages/localizations/src/ru-RU.ts b/packages/localizations/src/ru-RU.ts index f7a5a984b6b..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)', diff --git a/packages/localizations/src/sk-SK.ts b/packages/localizations/src/sk-SK.ts index 7e2490381c2..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)', diff --git a/packages/localizations/src/sr-RS.ts b/packages/localizations/src/sr-RS.ts index c28f5a11a5f..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)', diff --git a/packages/localizations/src/sv-SE.ts b/packages/localizations/src/sv-SE.ts index 9ea07b4256c..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)', diff --git a/packages/localizations/src/ta-IN.ts b/packages/localizations/src/ta-IN.ts index b904683de39..9ee902b4137 100644 --- a/packages/localizations/src/ta-IN.ts +++ b/packages/localizations/src/ta-IN.ts @@ -180,8 +180,8 @@ export const taIN: LocalizationResource = { }, configureSSO: { missingManageEnterpriseConnectionsPermission: { - subtitle: 'நிறுவன இணைப்புகளை நிர்வகிக்க அனுமதிகளைப் பெற உங்கள் நிறுவனத்தின் நிர்வாகியைத் தொடர்பு கொள்ளவும்.', - title: 'நிறுவன இணைப்புகளை நிர்வகிக்க உங்களுக்கு அனுமதி இல்லை', + subtitle: 'உங்கள் அனுமதிகளை மேம்படுத்த உங்கள் நிறுவனத்தின் நிர்வாகியைத் தொடர்பு கொள்ளவும்.', + title: 'ஒற்றை உள்நுழைவை (SSO) நிர்வகிக்க உங்களுக்கு அனுமதி இல்லை', }, navbar: { title: 'ஒற்றை உள்நுழைவை (SSO) உள்ளமை', diff --git a/packages/localizations/src/te-IN.ts b/packages/localizations/src/te-IN.ts index 77b1501bd22..1133e94c6fd 100644 --- a/packages/localizations/src/te-IN.ts +++ b/packages/localizations/src/te-IN.ts @@ -180,8 +180,8 @@ export const teIN: LocalizationResource = { }, configureSSO: { missingManageEnterpriseConnectionsPermission: { - subtitle: 'ఎంటర్‌ప్రైజ్ కనెక్షన్‌లను నిర్వహించడానికి అనుమతులు పొందడానికి మీ సంస్థ నిర్వాహకుడిని సంప్రదించండి.', - title: 'ఎంటర్‌ప్రైజ్ కనెక్షన్‌లను నిర్వహించడానికి మీకు అనుమతి లేదు', + subtitle: 'మీ అనుమతులను అప్‌గ్రేడ్ చేయడానికి మీ సంస్థ నిర్వాహకుడిని సంప్రదించండి.', + title: 'సింగిల్ సైన్-ఆన్ (SSO) నిర్వహించడానికి మీకు అనుమతి లేదు', }, navbar: { title: 'సింగిల్ సైన్-ఆన్ (SSO) కాన్ఫిగర్ చేయండి', diff --git a/packages/localizations/src/th-TH.ts b/packages/localizations/src/th-TH.ts index ceb9479ee31..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)', diff --git a/packages/localizations/src/tr-TR.ts b/packages/localizations/src/tr-TR.ts index 0e4d43cdecf..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', diff --git a/packages/localizations/src/uk-UA.ts b/packages/localizations/src/uk-UA.ts index 85900d3fc64..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)', diff --git a/packages/localizations/src/vi-VN.ts b/packages/localizations/src/vi-VN.ts index 00357809d1d..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)', diff --git a/packages/localizations/src/zh-CN.ts b/packages/localizations/src/zh-CN.ts index e9861598e9f..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)', diff --git a/packages/localizations/src/zh-TW.ts b/packages/localizations/src/zh-TW.ts index 1d4ebc4a8cd..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)', 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 => ( { ({ gap: theme.space.$5 })}> ({ gap: theme.space.$1x5 })}> { return ( ({ gap: theme.space.$1x5 })}> { const OktaCreateAppStepContent = (): JSX.Element => { return ( ({ gap: theme.space.$1x5, @@ -271,26 +274,31 @@ const OktaCreateAppStepContent = (): JSX.Element => { })} > { return ( ({ gap: theme.space.$1x5 })}> ({ gap: theme.space.$1x5, @@ -317,11 +327,13 @@ const OktaCompleteSamlIntegrationStepContent = (): JSX.Element => { })} > { ({ gap: theme.space.$3 })}> {provider === 'saml_custom' && ( { )} ({ 'tr > th:first-of-type': { paddingInlineStart: theme.space.$4, @@ -400,6 +414,10 @@ export const ConfigureAttributesSubStep = (): JSX.Element => { /> { /> ({ gap: theme.space.$1x5, @@ -469,11 +488,13 @@ const OktaConfigureAttributesStepContent = (): JSX.Element => { })} > @@ -482,6 +503,7 @@ const OktaConfigureAttributesStepContent = (): JSX.Element => { localizationKey={localizationKeys('configureSSO.configureStep.samlOkta.configureAttributes.step2')} /> ({ gap: theme.space.$1x5, @@ -494,6 +516,7 @@ const OktaConfigureAttributesStepContent = (): JSX.Element => { {ATTRIBUTE_PAIRS.map(pair => ( { ({ gap: theme.space.$3 })}> { ({ gap: theme.space.$3 })}> { /> ({ gap: theme.space.$1x5, @@ -582,26 +608,31 @@ export const AssignUsersSubStep = (): JSX.Element => { })} > { gap={5} > {existingCertPresent && ( )} ({ gap: theme.space.$3 })} > ({ // Outline-button look (mirrors SimpleButton variant='outline' for visual continuity). borderWidth: theme.borderWidths.$normal, @@ -216,6 +224,8 @@ const ProviderCard = ({ name, value, iconId, label, checked, onChange }: Provide /> { const isMonochromatic = MONOCHROMATIC_PROVIDER_ICONS.has(iconId); @@ -241,6 +251,8 @@ const ProviderCard = ({ name, value, iconId, label, checked, onChange }: Provide /> ({ color: theme.colors.$colorForeground })} diff --git a/packages/ui/src/components/ConfigureSSO/steps/TestConfigurationStep.tsx b/packages/ui/src/components/ConfigureSSO/steps/TestConfigurationStep.tsx index c7f21ed730f..4bb5a63f62e 100644 --- a/packages/ui/src/components/ConfigureSSO/steps/TestConfigurationStep.tsx +++ b/packages/ui/src/components/ConfigureSSO/steps/TestConfigurationStep.tsx @@ -113,6 +113,7 @@ export const TestConfigurationStep = (): JSX.Element => {
({ background: t.colors.$colorBackground, @@ -344,7 +347,7 @@ const TestResultsTable = ({ > setSelectedTestRun(row)} sx={t => ({ cursor: 'pointer', @@ -560,6 +565,7 @@ const ParsedUserInfoSection = ({ return ( ({ @@ -622,6 +628,7 @@ const FullMessageBlock = ({ message }: { message: string }): JSX.Element => { localizationKey={localizationKeys('configureSSO.testConfigurationStep.testRunDetails.runDetails.fullMessage')} /> { /> ({ margin: 0, @@ -682,6 +690,8 @@ const TestRunStatusCell = ({ testRun }: { testRun: EnterpriseConnectionTestRunRe if (testRun.status === 'success') { return ( @@ -690,6 +700,8 @@ const TestRunStatusCell = ({ testRun }: { testRun: EnterpriseConnectionTestRunRe if (testRun.status === 'failed') { return ( @@ -697,6 +709,8 @@ const TestRunStatusCell = ({ testRun }: { testRun: EnterpriseConnectionTestRunRe } return ( @@ -736,6 +750,7 @@ const CopyTestUrlButton = ({ onTestRunCreated }: CopyTestUrlButtonProps): JSX.El return ( ({ 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' })} @@ -385,11 +400,15 @@ export const EnterVerificationCodeStep = ({ > ({ fontSize: t.fontSizes.$sm })} localizationKey={localizationKeys('configureSSO.verifyEmailDomainStep.emailCode.formTitle')} /> ({ width: t.sizes.$8, @@ -441,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')} @@ -450,6 +475,8 @@ const EmailAlreadyVerified = ({ emailAddress }: { emailAddress: string }): JSX.E sx={{ flex: 1 }} > ; 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; + + configureSSOTestUrlCopyButton: 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; From 9ec7730c68149670bb7b9a14e3485f8f54feb21e Mon Sep 17 00:00:00 2001 From: Laura Beatris Date: Wed, 20 May 2026 17:36:41 -0300 Subject: [PATCH 06/16] Do not allow going back to provider selection --- .../components/ConfigureSSO/ConfigureSSO.tsx | 19 ++++++++++++++----- .../ConfigureSSO/ConfigureSSOHeader.tsx | 8 ++++---- .../ConfigureSSO/deriveInitialStep.ts | 6 +++++- .../ConfigureSSO/steps/SelectProviderStep.tsx | 8 ++++++-- 4 files changed, 29 insertions(+), 12 deletions(-) diff --git a/packages/ui/src/components/ConfigureSSO/ConfigureSSO.tsx b/packages/ui/src/components/ConfigureSSO/ConfigureSSO.tsx index 24cff1effb2..ecb4a1a0d4c 100644 --- a/packages/ui/src/components/ConfigureSSO/ConfigureSSO.tsx +++ b/packages/ui/src/components/ConfigureSSO/ConfigureSSO.tsx @@ -100,13 +100,26 @@ 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 { 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/deriveInitialStep.ts b/packages/ui/src/components/ConfigureSSO/deriveInitialStep.ts index 22e21af2929..661afd409e1 100644 --- a/packages/ui/src/components/ConfigureSSO/deriveInitialStep.ts +++ b/packages/ui/src/components/ConfigureSSO/deriveInitialStep.ts @@ -12,7 +12,11 @@ export const deriveInitialStep = ( ): WizardStepId => { const { isDomainTakenByOtherOrg, hasSuccessfulTestRun } = options; - if (isDomainTakenByOtherOrg || !enterpriseConnection) { + if (!enterpriseConnection) { + return 'select-provider'; + } + + if (isDomainTakenByOtherOrg) { return 'verify-domain'; } diff --git a/packages/ui/src/components/ConfigureSSO/steps/SelectProviderStep.tsx b/packages/ui/src/components/ConfigureSSO/steps/SelectProviderStep.tsx index 1a06f487091..b94a11f3ebe 100644 --- a/packages/ui/src/components/ConfigureSSO/steps/SelectProviderStep.tsx +++ b/packages/ui/src/components/ConfigureSSO/steps/SelectProviderStep.tsx @@ -42,8 +42,12 @@ const PROVIDER_GROUPS: ReadonlyArray<{ export const SelectProviderStep = (): JSX.Element => { const { goToStep } = useWizard(); - const { setProvider, createEnterpriseConnection } = useConfigureSSO(); - const [selected, setSelected] = React.useState(null); + const { provider, setProvider, createEnterpriseConnection } = useConfigureSSO(); + + // Re-hydrate from context so users returning from `verify-domain` + // (after picking a provider but needing to verify their email first) + // don't have to re-click their provider. + const [selected, setSelected] = React.useState(provider ?? null); const { user } = useUser(); const card = useCardState(); From ad29c4e65860736f2762913a6f2c166c33a6de50 Mon Sep 17 00:00:00 2001 From: Laura Beatris Date: Wed, 20 May 2026 18:07:44 -0300 Subject: [PATCH 07/16] Introduce SP labels per provider --- packages/localizations/src/en-US.ts | 24 ++++++++++++------- packages/shared/src/types/localization.ts | 24 ++++++++++++------- .../ConfigureSSO/steps/ConfigureStep.tsx | 4 ++-- 3 files changed, 34 insertions(+), 18 deletions(-) diff --git a/packages/localizations/src/en-US.ts b/packages/localizations/src/en-US.ts index 0e8f50a0dca..7a32460f01a 100644 --- a/packages/localizations/src/en-US.ts +++ b/packages/localizations/src/en-US.ts @@ -338,14 +338,6 @@ 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: @@ -376,6 +368,14 @@ export const enUS: LocalizationResource = { }, samlOkta: { headerTitle: 'Configure Okta Workforce', + 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', @@ -464,6 +464,14 @@ export const enUS: LocalizationResource = { }, samlCustom: { headerTitle: 'Configure your identity provider (IdP)', + 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/shared/src/types/localization.ts b/packages/shared/src/types/localization.ts index 087dca472f2..6a13bd4be8c 100644 --- a/packages/shared/src/types/localization.ts +++ b/packages/shared/src/types/localization.ts @@ -1397,14 +1397,6 @@ export type __internal_LocalizationResource = { }; }; configureStep: { - spFields: { - acsUrl: { - label: LocalizationValue; - }; - spEntityId: { - label: LocalizationValue; - }; - }; attributeMapping: { title: LocalizationValue; paragraph: LocalizationValue; @@ -1434,6 +1426,14 @@ export type __internal_LocalizationResource = { }; samlOkta: { headerTitle: LocalizationValue; + spFields: { + acsUrl: { + label: LocalizationValue; + }; + spEntityId: { + label: LocalizationValue; + }; + }; createApp: { headerSubtitle: LocalizationValue; title: LocalizationValue; @@ -1518,6 +1518,14 @@ export type __internal_LocalizationResource = { }; samlCustom: { headerTitle: LocalizationValue; + spFields: { + acsUrl: { + label: LocalizationValue; + }; + spEntityId: { + label: LocalizationValue; + }; + }; createApp: { headerSubtitle: LocalizationValue; title: LocalizationValue; diff --git a/packages/ui/src/components/ConfigureSSO/steps/ConfigureStep.tsx b/packages/ui/src/components/ConfigureSSO/steps/ConfigureStep.tsx index 742e217f5c0..bdd5f722fa9 100644 --- a/packages/ui/src/components/ConfigureSSO/steps/ConfigureStep.tsx +++ b/packages/ui/src/components/ConfigureSSO/steps/ConfigureStep.tsx @@ -163,12 +163,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, }); From e2904ada6cdc4bea944b8c2d254c80991d358f3d Mon Sep 17 00:00:00 2001 From: Laura Beatris Date: Wed, 20 May 2026 18:23:37 -0300 Subject: [PATCH 08/16] Improve attribute statement mapping per provider --- packages/localizations/src/en-US.ts | 23 ++ packages/shared/src/types/localization.ts | 23 ++ .../ConfigureSSO/deriveInitialStep.ts | 10 +- .../ConfigureSSO/steps/ConfigureStep.tsx | 325 +++++++++--------- 4 files changed, 205 insertions(+), 176 deletions(-) diff --git a/packages/localizations/src/en-US.ts b/packages/localizations/src/en-US.ts index 7a32460f01a..71151acba4a 100644 --- a/packages/localizations/src/en-US.ts +++ b/packages/localizations/src/en-US.ts @@ -368,6 +368,17 @@ 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', @@ -464,6 +475,18 @@ 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', diff --git a/packages/shared/src/types/localization.ts b/packages/shared/src/types/localization.ts index 6a13bd4be8c..f99a0f7cd64 100644 --- a/packages/shared/src/types/localization.ts +++ b/packages/shared/src/types/localization.ts @@ -1426,6 +1426,17 @@ 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; @@ -1518,6 +1529,18 @@ 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; diff --git a/packages/ui/src/components/ConfigureSSO/deriveInitialStep.ts b/packages/ui/src/components/ConfigureSSO/deriveInitialStep.ts index 661afd409e1..4a403486be4 100644 --- a/packages/ui/src/components/ConfigureSSO/deriveInitialStep.ts +++ b/packages/ui/src/components/ConfigureSSO/deriveInitialStep.ts @@ -12,14 +12,16 @@ export const deriveInitialStep = ( ): WizardStepId => { const { isDomainTakenByOtherOrg, hasSuccessfulTestRun } = options; - if (!enterpriseConnection) { - return 'select-provider'; - } - + // Go to the verify domain step in order to display warning if (isDomainTakenByOtherOrg) { return 'verify-domain'; } + // If no initial connection, go to the select provider step + if (!enterpriseConnection) { + return 'select-provider'; + } + // Connection is enabled, go to the confirmation step const isEnabled = enterpriseConnection?.active; if (isEnabled) { diff --git a/packages/ui/src/components/ConfigureSSO/steps/ConfigureStep.tsx b/packages/ui/src/components/ConfigureSSO/steps/ConfigureStep.tsx index bdd5f722fa9..858225f9283 100644 --- a/packages/ui/src/components/ConfigureSSO/steps/ConfigureStep.tsx +++ b/packages/ui/src/components/ConfigureSSO/steps/ConfigureStep.tsx @@ -13,6 +13,7 @@ import { Flow, Heading, Icon, + type LocalizationKey, localizationKeys, Table, Tbody, @@ -36,6 +37,7 @@ import { handleError } from '@/utils/errorHandler'; import { useConfigureSSO } from '../ConfigureSSOContext'; import { Step } from '../elements/Step'; import { useWizard, Wizard } from '../elements/Wizard'; +import type { ProviderType } from '../types'; import { useConfigureStepTranslations } from './configureStepTranslations'; export const ConfigureStep = (): 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: true, + first: localizationKeys('configureSSO.configureStep.samlOkta.attributeMapping.rows.firstName.name'), + second: localizationKeys('configureSSO.configureStep.samlOkta.attributeMapping.rows.firstName.value'), + }, + { + id: 'lastName', + isRequired: true, + 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: true, + first: localizationKeys('configureSSO.configureStep.samlCustom.attributeMapping.rows.firstName.userProfile'), + second: localizationKeys('configureSSO.configureStep.samlCustom.attributeMapping.rows.firstName.attributeName'), + }, + { + id: 'lastName', + isRequired: true, + 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(); @@ -347,7 +383,7 @@ export const ConfigureAttributesSubStep = (): 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 ( <> @@ -362,95 +398,9 @@ export const ConfigureAttributesSubStep = (): JSX.Element => { /> )} -
({ padding: `${t.space.$10} 0`, flex: 1 })} @@ -373,6 +377,7 @@ const TestResultsTable = ({ rows.map(row => (
({ - 'tr > th:first-of-type': { - paddingInlineStart: theme.space.$4, - }, - })} - > - - - + {provider === 'saml_okta' && } - - - {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 })} - > - - - - - - - - -
- - {isOkta && } + {mappingConfig && }
@@ -493,56 +443,87 @@ const OktaConfigureAttributesStepContent = (): JSX.Element => { colorScheme='secondary' localizationKey={localizationKeys('configureSSO.configureStep.samlOkta.configureAttributes.step1')} /> + {/* + * 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). + */} + localizationKey={localizationKeys('configureSSO.configureStep.samlOkta.configureAttributes.step2')} + /> + + + ); +}; + +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} + /> + {row.isRequired && ( - - ))} - - - - - ); -}; + )} + + + +
+); export const AssignUsersSubStep = (): JSX.Element => { const { goNext, goPrev, isFirstStep, isLastStep } = useWizard(); From 923905be4158689fd7e72a73883add4952b556f1 Mon Sep 17 00:00:00 2001 From: Laura Beatris Date: Wed, 20 May 2026 19:02:58 -0300 Subject: [PATCH 09/16] Refactor button to open test URL --- packages/localizations/src/en-US.ts | 14 +- packages/shared/src/types/localization.ts | 4 +- .../ConfigureSSO/steps/ConfigureStep.tsx | 74 ++++----- .../steps/TestConfigurationStep.tsx | 140 +++++++----------- .../src/customizables/elementDescriptors.ts | 2 +- packages/ui/src/internal/appearance.ts | 2 +- 6 files changed, 95 insertions(+), 141 deletions(-) diff --git a/packages/localizations/src/en-US.ts b/packages/localizations/src/en-US.ts index 71151acba4a..af8c07db526 100644 --- a/packages/localizations/src/en-US.ts +++ b/packages/localizations/src/en-US.ts @@ -275,9 +275,7 @@ 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', @@ -340,8 +338,6 @@ export const enUS: LocalizationResource = { configureStep: { 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', @@ -409,10 +405,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: { diff --git a/packages/shared/src/types/localization.ts b/packages/shared/src/types/localization.ts index f99a0f7cd64..e2b70312738 100644 --- a/packages/shared/src/types/localization.ts +++ b/packages/shared/src/types/localization.ts @@ -1339,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; diff --git a/packages/ui/src/components/ConfigureSSO/steps/ConfigureStep.tsx b/packages/ui/src/components/ConfigureSSO/steps/ConfigureStep.tsx index 858225f9283..476e16afd56 100644 --- a/packages/ui/src/components/ConfigureSSO/steps/ConfigureStep.tsx +++ b/packages/ui/src/components/ConfigureSSO/steps/ConfigureStep.tsx @@ -418,48 +418,38 @@ export const ConfigureAttributesSubStep = (): JSX.Element => { ); }; -const OktaConfigureAttributesStepContent = (): JSX.Element => { - return ( - <> - - - ({ - 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 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 => ( { elementDescriptor={descriptors.configureSSOStep} elementId={descriptors.configureSSOStep.setId('test')} > - + { borderBottomColor: theme.colors.$borderAlpha100, })} > - ({ - borderTopWidth: 0, - paddingTop: 0, - paddingBottom: 0, - flexDirection: 'column-reverse', - gap: t.space.$1, - })} - > + - - - - - - - - + + + - - ({ - 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 })} > + + + + + { onPageChange={setCurrentPage} onTestRunCreated={handleTestRunCreated} /> - + @@ -369,7 +342,7 @@ const TestResultsTable = ({ justify='center' sx={t => ({ padding: `${t.space.$10} 0`, flex: 1 })} > - + @@ -717,20 +690,18 @@ const TestRunStatusCell = ({ testRun }: { testRun: EnterpriseConnectionTestRunRe ); }; -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; } @@ -740,9 +711,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)); @@ -750,16 +722,14 @@ const CopyTestUrlButton = ({ onTestRunCreated }: CopyTestUrlButtonProps): JSX.El return ( ); diff --git a/packages/ui/src/customizables/elementDescriptors.ts b/packages/ui/src/customizables/elementDescriptors.ts index 1330a553bac..55d3863b094 100644 --- a/packages/ui/src/customizables/elementDescriptors.ts +++ b/packages/ui/src/customizables/elementDescriptors.ts @@ -582,7 +582,7 @@ export const APPEARANCE_KEYS = containsAllElementsConfigKeys([ 'configureSSOCertificateFileName', 'configureSSOCertificateRemoveButton', - 'configureSSOTestUrlCopyButton', + 'configureSSOTestUrlOpenButton', 'configureSSOTestRefreshButton', 'configureSSOTestResultsTable', 'configureSSOTestResultsRow', diff --git a/packages/ui/src/internal/appearance.ts b/packages/ui/src/internal/appearance.ts index 4d6260a1d7c..41a80cdbf8b 100644 --- a/packages/ui/src/internal/appearance.ts +++ b/packages/ui/src/internal/appearance.ts @@ -718,7 +718,7 @@ export type ElementsConfig = { configureSSOCertificateFileName: WithOptions; configureSSOCertificateRemoveButton: WithOptions; - configureSSOTestUrlCopyButton: WithOptions; + configureSSOTestUrlOpenButton: WithOptions; configureSSOTestRefreshButton: WithOptions; configureSSOTestResultsTable: WithOptions; configureSSOTestResultsRow: WithOptions; From f55ab6f3b2ef822c2adc5da1ccff60e3776314b3 Mon Sep 17 00:00:00 2001 From: Laura Beatris Date: Wed, 20 May 2026 19:17:40 -0300 Subject: [PATCH 10/16] Improve empty state for test logs --- packages/localizations/src/en-US.ts | 6 ++++- packages/shared/src/types/localization.ts | 4 ++++ .../steps/TestConfigurationStep.tsx | 22 ++++++++++++++----- 3 files changed, 26 insertions(+), 6 deletions(-) diff --git a/packages/localizations/src/en-US.ts b/packages/localizations/src/en-US.ts index af8c07db526..974c731dc4e 100644 --- a/packages/localizations/src/en-US.ts +++ b/packages/localizations/src/en-US.ts @@ -278,12 +278,16 @@ export const enUS: LocalizationResource = { 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', diff --git a/packages/shared/src/types/localization.ts b/packages/shared/src/types/localization.ts index e2b70312738..2d0dcc7bdea 100644 --- a/packages/shared/src/types/localization.ts +++ b/packages/shared/src/types/localization.ts @@ -1348,6 +1348,10 @@ export type __internal_LocalizationResource = { status__success: LocalizationValue; status__failed: LocalizationValue; status__pending: LocalizationValue; + empty: { + title: LocalizationValue; + subtitle: LocalizationValue; + }; }; testRunDetails: { title: LocalizationValue; diff --git a/packages/ui/src/components/ConfigureSSO/steps/TestConfigurationStep.tsx b/packages/ui/src/components/ConfigureSSO/steps/TestConfigurationStep.tsx index 4a803e59e7a..98580e8b685 100644 --- a/packages/ui/src/components/ConfigureSSO/steps/TestConfigurationStep.tsx +++ b/packages/ui/src/components/ConfigureSSO/steps/TestConfigurationStep.tsx @@ -139,7 +139,6 @@ export const TestConfigurationStep = (): JSX.Element => { pageSize={TEST_RUNS_PAGE_SIZE} totalCount={totalCount ?? 0} onPageChange={setCurrentPage} - onTestRunCreated={handleTestRunCreated} /> @@ -232,7 +231,6 @@ type TestResultsTableProps = { rows: EnterpriseConnectionTestRunResource[]; isLoading: boolean; isPolling: boolean; - onTestRunCreated?: (testUrl: string) => void; page: number; pageCount: number; pageSize: number; @@ -244,7 +242,6 @@ const TestResultsTable = ({ rows, isLoading, isPolling, - onTestRunCreated, page, pageCount, pageSize, @@ -338,11 +335,26 @@ const TestResultsTable = ({ From 12cad9e86519cdfe833ff5721279e514a09d22e9 Mon Sep 17 00:00:00 2001 From: Laura Beatris Date: Wed, 20 May 2026 19:27:09 -0300 Subject: [PATCH 11/16] Add changeset --- .changeset/vast-numbers-work.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 .changeset/vast-numbers-work.md 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 From 203fea97ed912d36af69a59ff9679eaaa7204c42 Mon Sep 17 00:00:00 2001 From: Laura Beatris Date: Wed, 20 May 2026 19:42:47 -0300 Subject: [PATCH 12/16] Update firstName/lastName attributes to optional --- .../ConfigureSSO/steps/ConfigureStep.tsx | 28 +++++++++++-------- 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/packages/ui/src/components/ConfigureSSO/steps/ConfigureStep.tsx b/packages/ui/src/components/ConfigureSSO/steps/ConfigureStep.tsx index 476e16afd56..616378878a7 100644 --- a/packages/ui/src/components/ConfigureSSO/steps/ConfigureStep.tsx +++ b/packages/ui/src/components/ConfigureSSO/steps/ConfigureStep.tsx @@ -138,13 +138,13 @@ const SAML_OKTA_ATTRIBUTE_MAPPING: AttributeMappingTableConfig = { }, { id: 'firstName', - isRequired: true, + isRequired: false, first: localizationKeys('configureSSO.configureStep.samlOkta.attributeMapping.rows.firstName.name'), second: localizationKeys('configureSSO.configureStep.samlOkta.attributeMapping.rows.firstName.value'), }, { id: 'lastName', - isRequired: true, + isRequired: false, first: localizationKeys('configureSSO.configureStep.samlOkta.attributeMapping.rows.lastName.name'), second: localizationKeys('configureSSO.configureStep.samlOkta.attributeMapping.rows.lastName.value'), }, @@ -171,13 +171,13 @@ const SAML_CUSTOM_ATTRIBUTE_MAPPING: AttributeMappingTableConfig = { }, { id: 'firstName', - isRequired: true, + isRequired: false, first: localizationKeys('configureSSO.configureStep.samlCustom.attributeMapping.rows.firstName.userProfile'), second: localizationKeys('configureSSO.configureStep.samlCustom.attributeMapping.rows.firstName.attributeName'), }, { id: 'lastName', - isRequired: true, + isRequired: false, first: localizationKeys('configureSSO.configureStep.samlCustom.attributeMapping.rows.lastName.userProfile'), second: localizationKeys('configureSSO.configureStep.samlCustom.attributeMapping.rows.lastName.attributeName'), }, @@ -492,14 +492,18 @@ const AttributeMappingTable = ({ config }: { config: AttributeMappingTableConfig sx={config.monoFirst ? { fontFamily: 'monospace' } : undefined} localizationKey={row.first} /> - {row.isRequired && ( - - )} + ({ - gap: t.space.$6, - padding: `${t.space.$none} ${t.space.$3}`, - })} - > -
({ backgroundColor: t.colors.$borderAlpha100 })} /> - - - {emailDomain} - - - ); -}; diff --git a/packages/ui/src/elements/Navbar.tsx b/packages/ui/src/elements/Navbar.tsx index 2e0a1418721..538a83474cd 100644 --- a/packages/ui/src/elements/Navbar.tsx +++ b/packages/ui/src/elements/Navbar.tsx @@ -50,11 +50,10 @@ type NavBarProps = { contentRef: React.RefObject; routes: NavbarRoute[]; header?: React.ReactNode; - footer?: React.ReactNode; }; export const NavBar = (props: NavBarProps) => { - const { contentRef, title, titleSx, containerSx, description, routes, header, footer } = props; + const { contentRef, title, titleSx, containerSx, description, routes, header } = props; const { close } = useNavbarContext(); const { navigate } = useRouter(); const { navigateToFlowStart } = useNavigateToFlowStart(); @@ -133,7 +132,6 @@ export const NavBar = (props: NavBarProps) => { titleSx={titleSx} containerSx={containerSx} description={description} - footer={footer} > {header} {items} @@ -141,7 +139,6 @@ export const NavBar = (props: NavBarProps) => { {header} {items} - {footer} ); @@ -153,10 +150,9 @@ const NavbarContainer = ( titleSx?: ThemableCssProp; containerSx?: ThemableCssProp; description?: LocalizationKey | string; - footer?: React.ReactNode; }>, ) => { - const { title, titleSx, containerSx, description, footer } = props; + const { title, titleSx, containerSx, description } = props; return ( ({ gap: t.space.$6, flex: `0 0 ${t.space.$60}` }), containerSx]}> - {footer} ({ gap: t.space.$0x5, From ff961e4ba8ebcbe82cda560d06865c2559645ca1 Mon Sep 17 00:00:00 2001 From: Laura Beatris Date: Fri, 22 May 2026 15:31:17 -0300 Subject: [PATCH 16/16] Add `useSpinDelay` hook --- .../steps/TestConfigurationStep.tsx | 7 +- packages/ui/src/hooks/index.ts | 1 + packages/ui/src/hooks/useSpinDelay.ts | 66 +++++++++++++++++++ 3 files changed, 71 insertions(+), 3 deletions(-) create mode 100644 packages/ui/src/hooks/useSpinDelay.ts diff --git a/packages/ui/src/components/ConfigureSSO/steps/TestConfigurationStep.tsx b/packages/ui/src/components/ConfigureSSO/steps/TestConfigurationStep.tsx index ab4dc988762..1073b873687 100644 --- a/packages/ui/src/components/ConfigureSSO/steps/TestConfigurationStep.tsx +++ b/packages/ui/src/components/ConfigureSSO/steps/TestConfigurationStep.tsx @@ -32,7 +32,7 @@ import { useCardState } from '@/elements/contexts'; import { Drawer } from '@/elements/Drawer'; import { IconButton } from '@/elements/IconButton'; import { Pagination } from '@/elements/Pagination'; -import { useClipboard } from '@/hooks'; +import { useClipboard, useSpinDelay } from '@/hooks'; import { Check, Copy, LinkIcon, RotateLeftRight } from '@/icons'; import { common, mqu } from '@/styledSystem'; import { handleError } from '@/utils/errorHandler'; @@ -65,6 +65,7 @@ export const TestConfigurationStep = (): JSX.Element => { }); const isRefreshingTestRuns = areTestRunsFetching && !areTestRunsLoading; + const showRefreshLogsSpinner = useSpinDelay(isRefreshingTestRuns); const pageCount = totalCount ? Math.ceil(totalCount / TEST_RUNS_PAGE_SIZE) : 0; const handleTestRunCreated = () => { @@ -114,10 +115,10 @@ export const TestConfigurationStep = (): JSX.Element => { colorScheme='secondary' size='xs' onClick={() => void revalidateTestRuns()} - isDisabled={isRefreshingTestRuns} + isDisabled={showRefreshLogsSpinner} sx={t => ({ gap: t.space.$1x5 })} > - {isRefreshingTestRuns ? ( + {showRefreshLogsSpinner ? ( : ; + */ +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; +}
({ padding: `${t.space.$10} 0`, flex: 1 })} + sx={t => ({ + padding: `${t.space.$10} 0`, + flex: 1, + gap: t.space.$1, + textAlign: 'center', + })} > - + +
From aab3df28054c20780098cb7664de28dddccd4bdc Mon Sep 17 00:00:00 2001 From: Laura Beatris Date: Wed, 20 May 2026 19:54:03 -0300 Subject: [PATCH 13/16] Add loading feedback to refresh logs button --- .../__tests__/ConfigureSSO.test.tsx | 14 ++++++------- .../steps/TestConfigurationStep.tsx | 21 +++++++++++++------ .../__tests__/SelectProviderStep.test.tsx | 4 ++-- 3 files changed, 24 insertions(+), 15 deletions(-) diff --git a/packages/ui/src/components/ConfigureSSO/__tests__/ConfigureSSO.test.tsx b/packages/ui/src/components/ConfigureSSO/__tests__/ConfigureSSO.test.tsx index a2cdf3cd756..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 () => { @@ -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/steps/TestConfigurationStep.tsx b/packages/ui/src/components/ConfigureSSO/steps/TestConfigurationStep.tsx index 98580e8b685..ab4dc988762 100644 --- a/packages/ui/src/components/ConfigureSSO/steps/TestConfigurationStep.tsx +++ b/packages/ui/src/components/ConfigureSSO/steps/TestConfigurationStep.tsx @@ -56,6 +56,7 @@ export const TestConfigurationStep = (): JSX.Element => { data: testRuns, totalCount, isLoading: areTestRunsLoading, + isFetching: areTestRunsFetching, isPolling, revalidate: revalidateTestRuns, } = __internal_useEnterpriseConnectionTestRuns({ @@ -63,6 +64,7 @@ export const TestConfigurationStep = (): JSX.Element => { params: { initialPage: currentPage, pageSize: TEST_RUNS_PAGE_SIZE }, }); + const isRefreshingTestRuns = areTestRunsFetching && !areTestRunsLoading; const pageCount = totalCount ? Math.ceil(totalCount / TEST_RUNS_PAGE_SIZE) : 0; const handleTestRunCreated = () => { @@ -112,14 +114,21 @@ export const TestConfigurationStep = (): JSX.Element => { colorScheme='secondary' size='xs' onClick={() => void revalidateTestRuns()} - isDisabled={areTestRunsLoading} + isDisabled={isRefreshingTestRuns} sx={t => ({ gap: t.space.$1x5 })} > - + {isRefreshingTestRuns ? ( + + ) : ( + + )} { 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 () => { From c295f35990361630c06632d1e28577e5177425fc Mon Sep 17 00:00:00 2001 From: Laura Beatris Date: Thu, 21 May 2026 13:41:24 -0300 Subject: [PATCH 14/16] Fix separator to use theme value --- packages/ui/src/components/ConfigureSSO/ConfigureSSONavbar.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/ui/src/components/ConfigureSSO/ConfigureSSONavbar.tsx b/packages/ui/src/components/ConfigureSSO/ConfigureSSONavbar.tsx index 95ef63a3d96..4c041feccfe 100644 --- a/packages/ui/src/components/ConfigureSSO/ConfigureSSONavbar.tsx +++ b/packages/ui/src/components/ConfigureSSO/ConfigureSSONavbar.tsx @@ -117,7 +117,7 @@ const PrimaryEmailDomainFooter = (): JSX.Element | null => { padding: `${t.space.$none} ${t.space.$3}`, })} > -
+
({ backgroundColor: t.colors.$borderAlpha100 })} /> Date: Fri, 22 May 2026 14:08:19 -0300 Subject: [PATCH 15/16] Simplify navbar to drop email domain --- .../ConfigureSSO/ConfigureSSONavbar.tsx | 49 ++++--------------- packages/ui/src/elements/Navbar.tsx | 9 +--- 2 files changed, 12 insertions(+), 46 deletions(-) diff --git a/packages/ui/src/components/ConfigureSSO/ConfigureSSONavbar.tsx b/packages/ui/src/components/ConfigureSSO/ConfigureSSONavbar.tsx index 4c041feccfe..e45f1d871b2 100644 --- a/packages/ui/src/components/ConfigureSSO/ConfigureSSONavbar.tsx +++ b/packages/ui/src/components/ConfigureSSO/ConfigureSSONavbar.tsx @@ -1,8 +1,8 @@ -import { useOrganization, useUser } from '@clerk/shared/react/index'; +import { useOrganization } from '@clerk/shared/react/index'; import React from 'react'; import { useEnvironment } from '@/contexts'; -import { Box, Col, Flex, Hr, Icon, localizationKeys, Text, useAppearance } from '@/customizables'; +import { Box, Col, Flex, Icon, localizationKeys, Text, useAppearance } from '@/customizables'; import { ApplicationLogo } from '@/elements/ApplicationLogo'; import { NavBar, NavbarContextProvider } from '@/elements/Navbar'; import { BoxIcon } from '@/icons'; @@ -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} - footer={} /> {children} @@ -101,31 +100,3 @@ const OrganizationSidebarSubtitle = (): JSX.Element | null => { ); }; - -const PrimaryEmailDomainFooter = (): JSX.Element | null => { - const { user } = useUser(); - const emailDomain = user?.primaryEmailAddress?.emailAddress.split('@')[1]; - - if (!emailDomain) { - return null; - } - - return ( -