From 29bd6c957cb58ff147b74e39a76cfcaedfaa0373 Mon Sep 17 00:00:00 2001 From: Iago Dahlem Lorensini Date: Thu, 25 Jun 2026 15:30:51 -0300 Subject: [PATCH 1/2] fix(ui): Gate ConfigureSSO wizard steps on domain verification Mark the Domains step complete when any organization domain is verified via the new `hasAnyOrganizationDomainsVerified` helper, and require all domains to be verified before the Connection, Test, and Activate steps become reachable. --- .../ConfigureSSO/ConfigureSSOWizard.tsx | 16 ++++++++++------ .../domain/organizationEnterpriseConnection.ts | 3 +++ 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/packages/ui/src/components/ConfigureSSO/ConfigureSSOWizard.tsx b/packages/ui/src/components/ConfigureSSO/ConfigureSSOWizard.tsx index 5da7247775c..c1719b4f30f 100644 --- a/packages/ui/src/components/ConfigureSSO/ConfigureSSOWizard.tsx +++ b/packages/ui/src/components/ConfigureSSO/ConfigureSSOWizard.tsx @@ -4,7 +4,10 @@ import { CardStateProvider } from '@/elements/contexts'; import { ConfigureSSOProvider } from './ConfigureSSOContext'; import { ConfigureSSOHeader } from './ConfigureSSOHeader'; -import { areAllOrganizationDomainsVerified } from './domain/organizationEnterpriseConnection'; +import { + areAllOrganizationDomainsVerified, + hasAnyOrganizationDomainsVerified, +} from './domain/organizationEnterpriseConnection'; import { Wizard, type WizardStepConfig } from './elements/Wizard'; import { ActivateStep, ConfigureStep, OrganizationDomainsStep, TestConfigurationStep } from './steps'; @@ -17,30 +20,31 @@ export const ConfigureSSOWizard = ({ title, forceInitialStep, ...props }: Config const { organizationEnterpriseConnection: c, organizationDomains } = props; const allDomainsVerified = areAllOrganizationDomainsVerified(organizationDomains); + const hasAnyDomainsVerified = hasAnyOrganizationDomainsVerified(organizationDomains); const steps = React.useMemo( () => [ - { id: 'verify-domain', label: 'Domains', isComplete: () => allDomainsVerified }, + { id: 'verify-domain', label: 'Domains', isComplete: () => hasAnyDomainsVerified }, { id: 'configure', label: 'Connection', - isReachable: () => allDomainsVerified || c.hasConnection, + isReachable: () => allDomainsVerified && c.hasConnection, isComplete: () => c.hasMinimumConfiguration || c.isActive, }, { id: 'test', label: 'Test', - isReachable: () => c.hasMinimumConfiguration || c.isActive, + isReachable: () => allDomainsVerified && (c.hasMinimumConfiguration || c.isActive), isComplete: () => c.hasSuccessfulTestRun || c.isActive, }, { id: 'activate', label: 'Activate', - isReachable: () => c.hasSuccessfulTestRun || c.isActive, + isReachable: () => allDomainsVerified && (c.hasSuccessfulTestRun || c.isActive), isComplete: () => c.isActive, }, ], - [c, allDomainsVerified], + [c, allDomainsVerified, hasAnyDomainsVerified], ); const initialStepId = forceInitialStep ? steps[0].id : undefined; diff --git a/packages/ui/src/components/ConfigureSSO/domain/organizationEnterpriseConnection.ts b/packages/ui/src/components/ConfigureSSO/domain/organizationEnterpriseConnection.ts index fd9f7c7bd56..c2e70de5cfe 100644 --- a/packages/ui/src/components/ConfigureSSO/domain/organizationEnterpriseConnection.ts +++ b/packages/ui/src/components/ConfigureSSO/domain/organizationEnterpriseConnection.ts @@ -56,6 +56,9 @@ export const isEnterpriseConnectionConfigured = ( export const areAllOrganizationDomainsVerified = (domains: OrganizationDomainResource[] | null | undefined): boolean => !!domains?.length && domains.every(domain => domain.ownershipVerification?.status === 'verified'); +export const hasAnyOrganizationDomainsVerified = (domains: OrganizationDomainResource[] | null | undefined): boolean => + !!domains?.length && domains.some(domain => domain.ownershipVerification?.status === 'verified'); + const connectionStatus = ({ hasConnection, isActive, From bdf2fe9ceadd36b6f1a8f7ddabb2e3e395321206 Mon Sep 17 00:00:00 2001 From: Iago Dahlem Lorensini Date: Thu, 25 Jun 2026 15:32:18 -0300 Subject: [PATCH 2/2] chore(ui): Add changeset for verify domain step completion Document the patch that marks the verify domain step as complete once any domain is verified. --- .changeset/tall-banks-invite.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/tall-banks-invite.md diff --git a/.changeset/tall-banks-invite.md b/.changeset/tall-banks-invite.md new file mode 100644 index 00000000000..12a04904246 --- /dev/null +++ b/.changeset/tall-banks-invite.md @@ -0,0 +1,5 @@ +--- +'@clerk/ui': patch +--- + +Make verify domain step complete when any domain is verified.