11import type {
22 __internal_CheckoutProps ,
3+ __internal_EnableOrganizationsProps ,
34 __internal_PlanDetailsProps ,
45 __internal_SubscriptionDetailsProps ,
56 __internal_UserVerificationProps ,
@@ -27,6 +28,7 @@ import type { ClerkComponentName } from './lazyModules/components';
2728import {
2829 BlankCaptchaModal ,
2930 CreateOrganizationModal ,
31+ EnableOrganizationsModal ,
3032 ImpersonationFab ,
3133 KeylessPrompt ,
3234 OrganizationProfileModal ,
@@ -79,7 +81,8 @@ export type ComponentControls = {
7981 | 'createOrganization'
8082 | 'userVerification'
8183 | 'waitlist'
82- | 'blankCaptcha' ,
84+ | 'blankCaptcha'
85+ | 'enableOrganizations' ,
8386 > (
8487 modal : T ,
8588 props : T extends 'signIn'
@@ -90,7 +93,9 @@ export type ComponentControls = {
9093 ? __internal_UserVerificationProps
9194 : T extends 'waitlist'
9295 ? WaitlistProps
93- : UserProfileProps ,
96+ : T extends 'enableOrganizations'
97+ ? __internal_EnableOrganizationsProps
98+ : UserProfileProps ,
9499 ) => void ;
95100 closeModal : (
96101 modal :
@@ -102,7 +107,8 @@ export type ComponentControls = {
102107 | 'createOrganization'
103108 | 'userVerification'
104109 | 'waitlist'
105- | 'blankCaptcha' ,
110+ | 'blankCaptcha'
111+ | 'enableOrganizations' ,
106112 options ?: {
107113 notify ?: boolean ;
108114 } ,
@@ -152,6 +158,7 @@ interface ComponentsState {
152158 userVerificationModal : null | __internal_UserVerificationProps ;
153159 organizationProfileModal : null | OrganizationProfileProps ;
154160 createOrganizationModal : null | CreateOrganizationProps ;
161+ enableOrganizationsModal : null | __internal_EnableOrganizationsProps ;
155162 blankCaptchaModal : null ;
156163 organizationSwitcherPrefetch : boolean ;
157164 waitlistModal : null | WaitlistProps ;
@@ -245,6 +252,7 @@ const Components = (props: ComponentsProps) => {
245252 userVerificationModal : null ,
246253 organizationProfileModal : null ,
247254 createOrganizationModal : null ,
255+ enableOrganizationsModal : null ,
248256 organizationSwitcherPrefetch : false ,
249257 waitlistModal : null ,
250258 blankCaptchaModal : null ,
@@ -274,6 +282,7 @@ const Components = (props: ComponentsProps) => {
274282 createOrganizationModal,
275283 waitlistModal,
276284 blankCaptchaModal,
285+ enableOrganizationsModal,
277286 checkoutDrawer,
278287 planDetailsDrawer,
279288 subscriptionDetailsDrawer,
@@ -325,9 +334,10 @@ const Components = (props: ComponentsProps) => {
325334 clearUrlStateParam ( ) ;
326335 setState ( s => {
327336 function handleCloseModalForExperimentalUserVerification ( ) {
328- const modal = s [ `${ name } Modal` ] || { } ;
337+ const modal = s [ `${ name } Modal` ] ;
329338 if ( modal && typeof modal === 'object' && 'afterVerificationCancelled' in modal && notify ) {
330- modal . afterVerificationCancelled ?.( ) ;
339+ // TypeScript doesn't narrow properly with template literal access and 'in' operator
340+ ( modal as { afterVerificationCancelled ?: ( ) => void } ) . afterVerificationCancelled ?.( ) ;
331341 }
332342 }
333343
@@ -484,6 +494,22 @@ const Components = (props: ComponentsProps) => {
484494 </ LazyModalRenderer >
485495 ) ;
486496
497+ const mountedEnableOrganizationsModal = (
498+ < LazyModalRenderer
499+ globalAppearance = { state . appearance }
500+ appearanceKey = { 'enableOrganizations' }
501+ componentAppearance = { enableOrganizationsModal ?. appearance }
502+ flowName = { 'enableOrganizations' }
503+ onClose = { ( ) => componentsControls . closeModal ( 'enableOrganizations' ) }
504+ onExternalNavigate = { ( ) => componentsControls . closeModal ( 'enableOrganizations' ) }
505+ startPath = { buildVirtualRouterUrl ( { base : '/enable-organizations' , path : urlStateParam ?. path } ) }
506+ componentName = { 'EnableOrganizationsModal' }
507+ modalContainerSx = { { alignItems : 'center' } }
508+ >
509+ < EnableOrganizationsModal { ...enableOrganizationsModal } />
510+ </ LazyModalRenderer >
511+ ) ;
512+
487513 const mountedOrganizationProfileModal = (
488514 < LazyModalRenderer
489515 globalAppearance = { state . appearance }
@@ -587,6 +613,7 @@ const Components = (props: ComponentsProps) => {
587613 { createOrganizationModal && mountedCreateOrganizationModal }
588614 { waitlistModal && mountedWaitlistModal }
589615 { blankCaptchaModal && mountedBlankCaptchaModal }
616+ { enableOrganizationsModal && mountedEnableOrganizationsModal }
590617
591618 < MountedCheckoutDrawer
592619 appearance = { state . appearance }
0 commit comments