From c8489d33fbaceaed2369bf26f6cb13804badcf8f Mon Sep 17 00:00:00 2001 From: Nikos Douvlis Date: Sun, 2 Nov 2025 11:18:14 +0200 Subject: [PATCH 01/31] introduce @clerk/ui and move clerk-js/src/ui into the new package --- packages/clerk-js/package.json | 9 +- packages/clerk-js/src/core/clerk.ts | 32 ++- packages/clerk-js/src/core/constants.ts | 63 +----- packages/clerk-js/src/core/errors.ts | 130 +---------- packages/clerk-js/src/core/warnings.ts | 65 +----- .../ui/localization/defaultEnglishResource.ts | 4 - packages/clerk-js/src/utils/index.ts | 2 - .../clerk-js/src/utils/queryStateParams.ts | 8 - packages/clerk-js/tsconfig.json | 2 +- packages/shared/package.json | 10 + .../src/internal/clerk-js}/componentGuards.ts | 0 .../shared/src/internal/clerk-js/constants.ts | 57 +++++ .../internal/clerk-js/dynamicParamParser.ts | 14 ++ .../shared/src/internal/clerk-js/errors.ts | 206 ++++++++++++++++++ .../shared/src/internal/clerk-js/index.ts | 0 .../shared/src/internal/clerk-js/warnings.ts | 63 ++++++ packages/shared/tsdown.config.mts | 1 + packages/ui/package.json | 80 +++++++ .../src/ui => ui/src}/Components.tsx | 20 +- .../{clerk-js/src/ui => ui/src}/baseTheme.ts | 0 .../src}/common/CalloutWithAction.tsx | 0 .../common/ChooseEnterpriseConnectionCard.tsx | 0 .../common/CustomPageContentContainer.tsx | 0 .../src/ui => ui/src}/common/DevOnly.tsx | 0 .../src}/common/EmailLinkCompleteFlowCard.tsx | 0 .../src}/common/EmailLinkStatusCard.tsx | 0 .../ui => ui/src}/common/EmailLinkVerify.tsx | 0 .../src/ui => ui/src}/common/Gate.tsx | 0 .../src}/common/InfiniteListSpinner.tsx | 0 .../src}/common/NotificationCountBadge.tsx | 0 .../src}/common/PrintableComponent.tsx | 0 .../src}/common/ProviderInitialIcon.tsx | 0 .../src/ui => ui/src}/common/QRCode.tsx | 0 .../src}/common/RemoveResourceForm.tsx | 0 .../src/ui => ui/src}/common/SSOCallback.tsx | 0 .../src/ui => ui/src}/common/Wizard.tsx | 0 .../src}/common/__tests__/redirects.test.ts | 0 .../common/__tests__/verification.test.ts | 0 .../common/__tests__/withRedirect.test.tsx | 0 .../src/ui => ui/src}/common/constants.ts | 0 .../src/ui => ui/src}/common/forms.ts | 0 .../src/ui => ui/src}/common/index.ts | 0 .../organizations/OrganizationPreview.tsx | 0 .../src/ui => ui/src}/common/redirects.ts | 0 .../src/ui => ui/src}/common/verification.ts | 0 .../src/ui => ui/src}/common/withRedirect.tsx | 5 +- .../src}/components/ApiKeys/ApiKeys.tsx | 0 .../src}/components/ApiKeys/ApiKeysTable.tsx | 0 .../components/ApiKeys/CreateApiKeyForm.tsx | 0 .../ApiKeys/RevokeAPIKeyConfirmationModal.tsx | 0 .../src}/components/ApiKeys/useApiKeys.ts | 0 .../components/BlankCaptchaModal/index.tsx | 0 .../components/Checkout/CheckoutComplete.tsx | 0 .../src}/components/Checkout/CheckoutForm.tsx | 0 .../src}/components/Checkout/CheckoutPage.tsx | 0 .../Checkout/__tests__/Checkout.test.tsx | 0 .../src}/components/Checkout/index.tsx | 0 .../src}/components/Checkout/parts.tsx | 0 .../CreateOrganization/CreateOrganization.tsx | 0 .../CreateOrganizationForm.tsx | 0 .../CreateOrganizationPage.tsx | 0 .../__tests__/CreateOrganization.test.tsx | 0 .../components/CreateOrganization/index.tsx | 0 .../src}/components/GoogleOneTap/index.tsx | 0 .../components/GoogleOneTap/one-tap-start.tsx | 0 .../components/ImpersonationFab/index.tsx | 2 +- .../KeylessPrompt/ClerkLogoIcon.tsx | 0 .../components/KeylessPrompt/KeySlashIcon.tsx | 0 .../src}/components/KeylessPrompt/index.tsx | 0 .../use-revalidate-environment.ts | 3 +- .../components/OAuthConsent/OAuthConsent.tsx | 0 .../OrganizationList/OrganizationListPage.tsx | 0 .../OrganizationList/UserInvitationList.tsx | 0 .../OrganizationList/UserMembershipList.tsx | 0 .../OrganizationList/UserSuggestionList.tsx | 0 .../__tests__/OrganizationList.test.tsx | 0 .../components/OrganizationList/index.tsx | 0 .../components/OrganizationList/shared.tsx | 0 .../src}/components/OrganizationList/utils.ts | 0 .../ActionConfirmationPage.tsx | 0 .../OrganizationProfile/ActiveMembersList.tsx | 0 .../OrganizationProfile/AddDomainForm.tsx | 0 .../OrganizationProfile/BillingWidget.tsx | 0 .../OrganizationProfile/DomainList.tsx | 0 .../OrganizationProfile/EnrollmentBadge.tsx | 0 .../OrganizationProfile/InviteMembersForm.tsx | 0 .../InviteMembersScreen.tsx | 0 .../InvitedMembersList.tsx | 0 .../OrganizationProfile/MemberListTable.tsx | 0 .../OrganizationProfile/MembersActions.tsx | 0 .../OrganizationProfile/MembersSearch.tsx | 0 .../OrganizationProfile/MembershipWidget.tsx | 0 .../OrganizationApiKeysPage.tsx | 0 .../OrganizationBillingPage.tsx | 0 .../OrganizationGeneralPage.tsx | 0 .../OrganizationMembers.tsx | 0 .../OrganizationMembersTabInvitations.tsx | 0 .../OrganizationMembersTabRequests.tsx | 0 .../OrganizationPaymentAttemptPage.tsx | 0 .../OrganizationPlansPage.tsx | 0 .../OrganizationProfileAvatarUploader.tsx | 0 .../OrganizationProfileNavbar.tsx | 0 .../OrganizationProfileRoutes.tsx | 0 .../OrganizationStatementPage.tsx | 0 .../OrganizationProfile/ProfileForm.tsx | 0 .../OrganizationProfile/RemoveDomainForm.tsx | 0 .../RemoveDomainScreen.tsx | 0 .../OrganizationProfile/RequestToJoinList.tsx | 0 .../VerifiedDomainForm.tsx | 0 .../VerifiedDomainScreen.tsx | 0 .../OrganizationProfile/VerifyDomainForm.tsx | 0 .../VerifyDomainScreen.tsx | 0 .../__tests__/InviteMembersPage.test.tsx | 0 .../__tests__/LeaveOrganizationPage.test.tsx | 0 .../OrganizationGeneralPage.test.tsx | 0 .../__tests__/OrganizationMembers.test.tsx | 0 .../__tests__/OrganizationProfile.test.tsx | 0 .../__tests__/ProfileSettingsPage.test.tsx | 0 .../OrganizationProfile/__tests__/utils.ts | 0 .../components/OrganizationProfile/index.tsx | 0 .../OrganizationSwitcherPopover.tsx | 0 .../OrganizationSwitcherTrigger.tsx | 0 .../OtherOrganizationActions.tsx | 0 .../UserInvitationSuggestionList.tsx | 0 .../UserMembershipList.tsx | 0 .../__tests__/OrganizationSwitcher.test.tsx | 0 .../__tests__/test-utils.ts | 0 .../__tests__/utils.test.ts | 0 .../components/OrganizationSwitcher/index.tsx | 0 .../components/OrganizationSwitcher/utils.ts | 0 .../PaymentAttempts/PaymentAttemptPage.tsx | 0 .../PaymentAttempts/PaymentAttemptsList.tsx | 0 .../src}/components/PaymentAttempts/index.ts | 0 .../PaymentMethods/AddPaymentMethod.tsx | 0 .../PaymentMethods/PaymentElementSkeleton.tsx | 0 .../PaymentMethods/PaymentMethodRow.tsx | 0 .../PaymentMethods/PaymentMethods.tsx | 0 .../PaymentMethods/TestPaymentMethod.tsx | 0 .../src}/components/PaymentMethods/index.ts | 0 .../src}/components/Plans/PlanDetails.tsx | 0 .../Plans/__tests__/PlanDetails.test.tsx | 0 .../components/PricingTable/PricingTable.tsx | 0 .../PricingTable/PricingTableDefault.tsx | 0 .../PricingTable/PricingTableMatrix.tsx | 0 .../__tests__/PricingTable.test.tsx | 0 .../src}/components/PricingTable/index.tsx | 0 .../utils/pricing-footer-state.spec.ts | 0 .../utils/pricing-footer-state.ts | 0 .../src}/components/SessionTasks/index.tsx | 0 .../ChooseOrganizationScreen.tsx | 0 .../CreateOrganizationScreen.tsx | 0 .../__tests__/TaskChooseOrganization.test.tsx | 0 .../tasks/TaskChooseOrganization/index.tsx | 0 .../SessionTasks/tasks/withTaskGuard.ts | 2 +- .../components/SignIn/AlternativeMethods.tsx | 0 .../src}/components/SignIn/HavingTrouble.tsx | 0 .../src}/components/SignIn/ResetPassword.tsx | 0 .../SignIn/ResetPasswordSuccess.tsx | 0 .../SignIn/SignInAccountSwitcher.tsx | 0 ...nInAlternativePhoneCodePhoneNumberCard.tsx | 0 .../components/SignIn/SignInFactorOne.tsx | 0 ...nInFactorOneAlternativeChannelCodeForm.tsx | 0 ...ignInFactorOneAlternativePhoneCodeCard.tsx | 0 .../SignIn/SignInFactorOneCodeForm.tsx | 0 .../SignIn/SignInFactorOneEmailCodeCard.tsx | 0 .../SignIn/SignInFactorOneEmailLinkCard.tsx | 0 .../SignInFactorOneEnterpriseConnections.tsx | 0 .../SignInFactorOneForgotPasswordCard.tsx | 0 .../SignIn/SignInFactorOnePasskey.tsx | 0 .../SignIn/SignInFactorOnePasswordCard.tsx | 0 .../SignIn/SignInFactorOnePhoneCodeCard.tsx | 0 .../components/SignIn/SignInFactorTwo.tsx | 0 .../SignInFactorTwoAlternativeMethods.tsx | 0 .../SignIn/SignInFactorTwoBackupCodeCard.tsx | 0 .../SignIn/SignInFactorTwoCodeForm.tsx | 0 .../SignIn/SignInFactorTwoPhoneCodeCard.tsx | 0 .../SignIn/SignInFactorTwoTOTPCard.tsx | 0 .../components/SignIn/SignInSSOCallback.tsx | 0 .../components/SignIn/SignInSocialButtons.tsx | 2 +- .../src}/components/SignIn/SignInStart.tsx | 0 .../SignIn/__tests__/ResetPassword.test.tsx | 0 .../__tests__/ResetPasswordSuccess.test.tsx | 0 .../__tests__/SignInAccountSwitcher.test.tsx | 0 .../SignIn/__tests__/SignInFactorOne.test.tsx | 0 .../SignInFactorOneCodeForm.test.tsx | 0 .../SignIn/__tests__/SignInFactorTwo.test.tsx | 0 .../SignIn/__tests__/SignInStart.test.tsx | 0 .../handleCombinedFlowTransfer.test.ts | 0 .../components/SignIn/__tests__/utils.test.ts | 0 .../SignIn/handleCombinedFlowTransfer.ts | 0 .../ui => ui/src}/components/SignIn/index.tsx | 0 .../src}/components/SignIn/lazy-sign-up.ts | 0 .../ui => ui/src}/components/SignIn/shared.ts | 0 .../SignIn/useResetPasswordFactor.tsx | 0 .../ui => ui/src}/components/SignIn/utils.ts | 0 .../components/SignIn/withHavingTrouble.tsx | 0 .../src}/components/SignUp/SignUpContinue.tsx | 0 .../components/SignUp/SignUpEmailCodeCard.tsx | 0 .../components/SignUp/SignUpEmailLinkCard.tsx | 0 .../SignUp/SignUpEnterpriseConnections.tsx | 0 .../src}/components/SignUp/SignUpForm.tsx | 0 .../components/SignUp/SignUpPhoneCodeCard.tsx | 0 .../SignUp/SignUpRestrictedAccess.tsx | 0 .../components/SignUp/SignUpSSOCallback.tsx | 0 .../components/SignUp/SignUpSocialButtons.tsx | 0 .../src}/components/SignUp/SignUpStart.tsx | 0 ...artAlternativePhoneCodePhoneNumberCard.tsx | 0 .../SignUp/SignUpVerificationCodeForm.tsx | 0 .../components/SignUp/SignUpVerifyEmail.tsx | 0 .../components/SignUp/SignUpVerifyPhone.tsx | 0 .../SignUp/__tests__/SignUpContinue.test.tsx | 0 .../SignUpEmailLinkFlowComplete.test.tsx | 0 .../SignUp/__tests__/SignUpStart.test.tsx | 0 .../__tests__/SignUpVerifyEmail.test.tsx | 0 .../__tests__/SignUpVerifyPhone.test.tsx | 0 .../__tests__/signUpFormHelpers.test.ts | 0 .../ui => ui/src}/components/SignUp/index.tsx | 2 +- .../components/SignUp/signUpFormHelpers.ts | 0 .../ui => ui/src}/components/SignUp/util.ts | 0 .../src}/components/Statements/Statement.tsx | 0 .../components/Statements/StatementPage.tsx | 0 .../components/Statements/StatementsList.tsx | 0 .../src}/components/Statements/index.ts | 0 .../__tests__/SubscriptionDetails.test.tsx | 0 .../components/SubscriptionDetails/index.tsx | 0 .../Subscriptions/SubscriptionsList.tsx | 0 .../__tests__/SubscriptionsList.test.tsx | 0 .../src}/components/Subscriptions/badge.tsx | 0 .../src}/components/Subscriptions/index.tsx | 0 .../src}/components/UserAvatar/index.tsx | 0 .../components/UserButton/SessionActions.tsx | 0 .../UserButton/UserButtonPopover.tsx | 0 .../UserButtonTopLevelIdentifier.tsx | 0 .../UserButton/UserButtonTrigger.tsx | 0 .../UserButton/__tests__/UserButton.test.tsx | 0 .../src}/components/UserButton/index.tsx | 0 .../UserButton/useMultisessionActions.tsx | 0 .../components/UserProfile/AccountPage.tsx | 0 .../UserProfile/ActiveDevicesSection.tsx | 0 .../UserProfile/AddAuthenticatorApp.tsx | 0 .../components/UserProfile/ApiKeysPage.tsx | 0 .../components/UserProfile/BillingPage.tsx | 0 .../UserProfile/ConnectedAccountsMenu.tsx | 0 .../UserProfile/ConnectedAccountsSection.tsx | 0 .../components/UserProfile/DeleteSection.tsx | 0 .../components/UserProfile/DeleteUserForm.tsx | 0 .../src}/components/UserProfile/EmailForm.tsx | 0 .../components/UserProfile/EmailsSection.tsx | 0 .../UserProfile/EnterpriseAccountsSection.tsx | 0 .../UserProfile/LinkButtonWithDescription.tsx | 0 .../UserProfile/MfaBackupCodeCreateForm.tsx | 0 .../UserProfile/MfaBackupCodeList.tsx | 0 .../UserProfile/MfaBackupCodeScreen.tsx | 0 .../UserProfile/MfaBackupCodeTile.tsx | 0 .../src}/components/UserProfile/MfaForm.tsx | 0 .../UserProfile/MfaPhoneCodeScreen.tsx | 0 .../components/UserProfile/MfaScreens.tsx | 0 .../components/UserProfile/MfaSection.tsx | 0 .../components/UserProfile/MfaTOTPScreen.tsx | 0 .../components/UserProfile/PasskeySection.tsx | 0 .../components/UserProfile/PasswordForm.tsx | 0 .../UserProfile/PasswordSection.tsx | 0 .../src}/components/UserProfile/PhoneForm.tsx | 0 .../components/UserProfile/PhoneSection.tsx | 0 .../src}/components/UserProfile/PlansPage.tsx | 0 .../components/UserProfile/ProfileForm.tsx | 0 .../UserProfile/RemoveResourceForm.tsx | 0 .../components/UserProfile/SecurityPage.tsx | 0 .../UserProfile/UserProfileAvatarUploader.tsx | 0 .../UserProfile/UserProfileNavbar.tsx | 0 .../UserProfile/UserProfileRoutes.tsx | 0 .../UserProfile/UserProfileSection.tsx | 0 .../components/UserProfile/UsernameForm.tsx | 0 .../UserProfile/UsernameSection.tsx | 0 .../components/UserProfile/VerifyTOTP.tsx | 0 .../components/UserProfile/VerifyWithCode.tsx | 0 .../VerifyWithEnterpriseConnection.tsx | 0 .../components/UserProfile/VerifyWithLink.tsx | 0 .../src}/components/UserProfile/Web3Form.tsx | 0 .../components/UserProfile/Web3Section.tsx | 0 .../__tests__/AccountPage.test.tsx | 0 .../ConnectedAccountsSection.test.tsx | 14 +- .../__tests__/EmailsSection.test.tsx | 0 .../EnterpriseAccountsSection.test.tsx | 0 .../UserProfile/__tests__/MfaPage.test.tsx | 0 .../__tests__/PasskeysSection.test.tsx | 0 .../__tests__/PasswordSection.test.tsx | 0 .../__tests__/PhoneSection.test.tsx | 0 .../__tests__/SecurityPage.test.tsx | 2 +- .../__tests__/UserProfile.test.tsx | 0 .../__tests__/UserProfileSection.test.tsx | 0 .../__tests__/UsernameSection.test.tsx | 0 .../UserProfile/__tests__/utils.test.ts | 0 .../src}/components/UserProfile/index.tsx | 0 .../src}/components/UserProfile/utils.ts | 0 .../UserVerification/AlternativeMethods.tsx | 0 .../UserVerification/HavingTrouble.tsx | 0 .../UserVerification/UVFactorOneCodeForm.tsx | 0 .../UVFactorOneEmailCodeCard.tsx | 0 .../UVFactorOnePasskeysCard.tsx | 0 .../UVFactorOnePhoneCodeCard.tsx | 0 .../UVFactorTwoAlternativeMethods.tsx | 0 .../UVFactorTwoBackupCodeCard.tsx | 0 .../UserVerification/UVFactorTwoCodeForm.tsx | 0 .../UVFactorTwoPhoneCodeCard.tsx | 0 .../UserVerificationFactorOne.tsx | 0 .../UserVerificationFactorOnePassword.tsx | 0 .../UserVerificationFactorTwo.tsx | 0 .../UserVerificationFactorTwoTOTP.tsx | 0 .../__tests__/UVFactorOne.test.tsx | 0 .../__tests__/UVFactorTwo.test.tsx | 28 +-- .../components/UserVerification/index.tsx | 0 .../use-after-verification.ts | 0 .../useReverificationAlternativeStrategies.ts | 0 .../useUserVerificationSession.tsx | 0 .../src}/components/UserVerification/utils.ts | 0 .../UserVerification/withHavingTrouble.tsx | 0 .../src}/components/Waitlist/WaitlistForm.tsx | 0 .../Waitlist/__tests__/Waitlist.test.tsx | 0 .../src}/components/Waitlist/index.tsx | 0 .../Waitlist/waitlistFormHelpers.ts | 0 .../components/prefetch-organization-list.tsx | 0 .../{clerk-js/src/ui => ui/src}/constants.ts | 0 .../src}/contexts/AcceptedUserInvitations.tsx | 0 .../contexts/ClerkUIComponentsContext.tsx | 0 .../src}/contexts/CoreClerkContextWrapper.tsx | 0 .../src}/contexts/CoreClientContext.tsx | 0 .../src}/contexts/CoreSessionContext.tsx | 0 .../src}/contexts/CoreUserContext.tsx | 0 .../src}/contexts/EnvironmentContext.tsx | 0 .../ui => ui/src}/contexts/OptionsContext.tsx | 0 .../src}/contexts/components/ApiKeys.ts | 0 .../src}/contexts/components/Checkout.ts | 0 .../contexts/components/CreateOrganization.ts | 0 .../src}/contexts/components/GoogleOneTap.ts | 0 .../src}/contexts/components/OAuthConsent.ts | 0 .../contexts/components/OrganizationList.ts | 0 .../components/OrganizationProfile.ts | 0 .../components/OrganizationSwitcher.ts | 0 .../src}/contexts/components/Plans.tsx | 0 .../src}/contexts/components/PricingTable.ts | 0 .../src}/contexts/components/SessionTasks.ts | 0 .../src}/contexts/components/SignIn.ts | 0 .../src}/contexts/components/SignOut.ts | 0 .../src}/contexts/components/SignUp.ts | 0 .../contexts/components/SubscriberType.ts | 0 .../components/SubscriptionDetails.ts | 0 .../src}/contexts/components/UserAvatar.ts | 0 .../src}/contexts/components/UserButton.ts | 0 .../src}/contexts/components/UserProfile.ts | 0 .../contexts/components/UserVerification.ts | 0 .../src}/contexts/components/Waitlist.ts | 0 .../src}/contexts/components/index.ts | 0 .../src/ui => ui/src}/contexts/index.ts | 0 .../src/ui => ui/src}/contexts/utils.ts | 2 +- .../src}/customizables/AppearanceContext.tsx | 0 .../src/ui => ui/src}/customizables/Flow.tsx | 0 .../customizables/__tests__/FlowRoot.spec.tsx | 0 .../__tests__/elementDescriptors.test.tsx | 0 .../__tests__/makeCustomizable.test.tsx | 0 .../__tests__/parseAppearance.test.tsx | 0 .../__tests__/parseVariables.test.ts | 0 .../customizables/__tests__/test-utils.ts | 0 .../src}/customizables/classGeneration.ts | 0 .../src}/customizables/elementDescriptors.ts | 0 .../src/ui => ui/src}/customizables/index.ts | 0 .../src}/customizables/makeCustomizable.tsx | 0 .../src}/customizables/makeResponsive.tsx | 0 .../src}/customizables/parseAppearance.ts | 0 .../src}/customizables/parseVariables.ts | 0 .../src}/customizables/sanitizeDomProps.tsx | 0 .../src}/elements/Action/ActionCard.tsx | 0 .../src}/elements/Action/ActionClosed.tsx | 0 .../src}/elements/Action/ActionOpen.tsx | 0 .../src}/elements/Action/ActionRoot.tsx | 0 .../src}/elements/Action/ActionTrigger.tsx | 0 .../ui => ui/src}/elements/Action/index.tsx | 0 .../src/ui => ui/src}/elements/Actions.tsx | 0 .../src/ui => ui/src}/elements/Alert.tsx | 0 .../src/ui => ui/src}/elements/Animated.tsx | 0 .../src}/elements/ApplicationLogo.tsx | 0 .../src}/elements/ArrowBlockButton.tsx | 0 .../src/ui => ui/src}/elements/Avatar.tsx | 0 .../ui => ui/src}/elements/AvatarUploader.tsx | 0 .../src/ui => ui/src}/elements/BackLink.tsx | 0 .../src/ui => ui/src}/elements/Badge.tsx | 0 .../ui => ui/src}/elements/CaptchaElement.tsx | 0 .../src}/elements/Card/CardAction.tsx | 0 .../ui => ui/src}/elements/Card/CardAlert.tsx | 0 .../elements/Card/CardClerkAndPagesTag.tsx | 0 .../src}/elements/Card/CardContent.tsx | 0 .../src}/elements/Card/CardFooter.tsx | 0 .../ui => ui/src}/elements/Card/CardRoot.tsx | 0 .../src/ui => ui/src}/elements/Card/index.ts | 0 .../ui => ui/src}/elements/ClipboardInput.tsx | 0 .../ui => ui/src}/elements/CodeControl.tsx | 0 .../src/ui => ui/src}/elements/DataTable.tsx | 0 .../ui => ui/src}/elements/DevModeNotice.tsx | 0 .../src/ui => ui/src}/elements/Divider.tsx | 0 .../src/ui => ui/src}/elements/Drawer.tsx | 2 +- .../src/ui => ui/src}/elements/ErrorCard.tsx | 0 .../ui => ui/src}/elements/FieldControl.tsx | 0 .../src/ui => ui/src}/elements/Form.tsx | 0 .../ui => ui/src}/elements/FormButtons.tsx | 0 .../ui => ui/src}/elements/FormContainer.tsx | 0 .../ui => ui/src}/elements/FormControl.tsx | 0 .../src}/elements/FormattedPhoneNumber.tsx | 0 .../src}/elements/FullHeightLoader.tsx | 0 .../src/ui => ui/src}/elements/Gauge.tsx | 0 .../src/ui => ui/src}/elements/Header.tsx | 0 .../src/ui => ui/src}/elements/IconButton.tsx | 0 .../src/ui => ui/src}/elements/IconCircle.tsx | 0 .../src}/elements/IdentityPreview.tsx | 0 .../ui => ui/src}/elements/InformationBox.tsx | 0 .../src/ui => ui/src}/elements/InputGroup.tsx | 0 .../ui => ui/src}/elements/InputWithIcon.tsx | 0 .../src}/elements/InvisibleRootBox.tsx | 0 .../src}/elements/LegalConsentCheckbox.tsx | 0 .../src/ui => ui/src}/elements/LineItems.tsx | 0 .../ui => ui/src}/elements/LinkRenderer.tsx | 0 .../ui => ui/src}/elements/LoadingCard.tsx | 0 .../src/ui => ui/src}/elements/Menu.tsx | 0 .../src/ui => ui/src}/elements/Modal.tsx | 0 .../src/ui => ui/src}/elements/Navbar.tsx | 0 .../src}/elements/OrganizationAvatar.tsx | 0 .../src}/elements/OrganizationPreview.tsx | 0 .../src/ui => ui/src}/elements/Pagination.tsx | 0 .../ui => ui/src}/elements/PasswordInput.tsx | 2 +- .../elements/PersonalWorkspacePreview.tsx | 0 .../__tests__/useFormattedPhoneNumber.test.ts | 0 .../elements/PhoneInput/countryCodeData.ts | 0 .../src}/elements/PhoneInput/index.tsx | 0 .../PhoneInput/useFormattedPhoneNumber.ts | 0 .../src/ui => ui/src}/elements/Popover.tsx | 0 .../ui => ui/src}/elements/PopoverCard.tsx | 0 .../src/ui => ui/src}/elements/Portal.tsx | 0 .../ui => ui/src}/elements/PreviewButton.tsx | 0 .../ProfileCard/ProfileCardContent.tsx | 0 .../elements/ProfileCard/ProfileCardRoot.tsx | 0 .../src}/elements/ProfileCard/index.ts | 0 .../src/ui => ui/src}/elements/RadioGroup.tsx | 0 .../src}/elements/ReversibleContainer.tsx | 0 .../src/ui => ui/src}/elements/RootBox.tsx | 0 .../src/ui => ui/src}/elements/RouterLink.tsx | 0 .../src/ui => ui/src}/elements/Section.tsx | 0 .../src}/elements/SegmentedControl.tsx | 0 .../src/ui => ui/src}/elements/Select.tsx | 0 .../ui => ui/src}/elements/SocialButtons.tsx | 0 .../ui => ui/src}/elements/SuccessPage.tsx | 0 .../src/ui => ui/src}/elements/Switch.tsx | 0 .../src/ui => ui/src}/elements/Tabs.tsx | 0 .../src/ui => ui/src}/elements/TagInput.tsx | 0 .../ui => ui/src}/elements/ThreeDotsMenu.tsx | 0 .../ui => ui/src}/elements/TimerButton.tsx | 0 .../src/ui => ui/src}/elements/Tooltip.tsx | 0 .../src/ui => ui/src}/elements/UserAvatar.tsx | 0 .../ui => ui/src}/elements/UserPreview.tsx | 0 .../src}/elements/VerificationCodeCard.tsx | 0 .../src}/elements/VerificationLinkCard.tsx | 0 .../@formkit/auto-animate/react/index.ts | 0 .../elements/__tests__/CodeControl.test.tsx | 0 .../elements/__tests__/LinkRenderer.test.tsx | 0 .../elements/__tests__/PlainInput.test.tsx | 0 .../elements/__tests__/RadioGroup.test.tsx | 0 .../elements/__tests__/TimerButton.test.tsx | 0 .../ui => ui/src}/elements/contexts/index.tsx | 0 .../src/ui => ui/src}/elements/utils.ts | 0 .../src}/elements/withAvatarShimmer.tsx | 0 .../__tests__/createInternalTheme.test.ts | 0 .../src/ui => ui/src}/foundations/borders.ts | 0 .../src/ui => ui/src}/foundations/colors.ts | 0 .../src}/foundations/createInternalTheme.ts | 0 .../src}/foundations/defaultFoundations.ts | 0 .../src/ui => ui/src}/foundations/index.ts | 0 .../src/ui => ui/src}/foundations/opacity.ts | 0 .../src/ui => ui/src}/foundations/shadows.ts | 0 .../src/ui => ui/src}/foundations/sizes.ts | 0 .../ui => ui/src}/foundations/transitions.ts | 0 .../ui => ui/src}/foundations/typography.ts | 0 .../src/ui => ui/src}/foundations/zIndices.ts | 0 .../__tests__/useCoreOrganization.test.tsx | 0 .../useCoreOrganizationList.test.tsx | 0 .../src}/hooks/__tests__/useDevMode.test.tsx | 0 .../src}/hooks/__tests__/useDirection.test.ts | 0 .../useEnabledThirdPartyProviders.test.tsx | 0 .../__tests__/usePasswordComplexity.test.tsx | 0 .../hooks/__tests__/useSupportEmail.test.tsx | 0 .../src/ui => ui/src}/hooks/index.ts | 0 .../src}/hooks/useAlternativeStrategies.ts | 0 .../src}/hooks/useClerkModalStateParams.tsx | 2 +- .../src/ui => ui/src}/hooks/useClipboard.ts | 0 .../src/ui => ui/src}/hooks/useDebounce.ts | 0 .../src/ui => ui/src}/hooks/useDevMode.tsx | 0 .../src/ui => ui/src}/hooks/useDirection.ts | 0 .../src/ui => ui/src}/hooks/useEmailLink.ts | 0 .../hooks/useEnabledThirdPartyProviders.tsx | 0 .../src}/hooks/useEnterpriseSSOLink.ts | 0 .../src/ui => ui/src}/hooks/useFetch.ts | 0 .../src/ui => ui/src}/hooks/useFetchRoles.ts | 0 .../src/ui => ui/src}/hooks/useInView.ts | 0 .../ui => ui/src}/hooks/useLoadingStatus.ts | 0 .../src}/hooks/useMultipleSessions.ts | 0 .../src}/hooks/useNavigateToFlowStart.ts | 0 .../src}/hooks/useOrganizationListInView.ts | 0 .../src/ui => ui/src}/hooks/usePassword.ts | 0 .../src}/hooks/usePasswordComplexity.ts | 0 .../src/ui => ui/src}/hooks/usePopover.ts | 0 .../src}/hooks/usePrefersReducedMotion.ts | 0 .../ui => ui/src}/hooks/usePreloadTasks.ts | 0 .../src/ui => ui/src}/hooks/useSafeState.ts | 0 .../src/ui => ui/src}/hooks/useScrollLock.ts | 0 .../src/ui => ui/src}/hooks/useSearchInput.ts | 0 .../src}/hooks/useSetSessionWithTimeout.ts | 0 .../ui => ui/src}/hooks/useSupportEmail.ts | 0 .../src/ui => ui/src}/hooks/useTabState.ts | 0 .../src}/hooks/useWindowEventListener.ts | 0 .../{clerk-js/src/ui => ui/src}/icons/add.svg | 0 .../src/ui => ui/src}/icons/apple-pay.svg | 0 .../src/ui => ui/src}/icons/arrow-left.svg | 0 .../src}/icons/arrow-right-button.svg | 0 .../src/ui => ui/src}/icons/arrow-right.svg | 0 .../ui => ui/src}/icons/arrows-up-down.svg | 0 .../src/ui => ui/src}/icons/auth-app.svg | 0 .../src/ui => ui/src}/icons/billing.svg | 0 .../src/ui => ui/src}/icons/block.svg | 0 .../src/ui => ui/src}/icons/caret-left.svg | 0 .../src/ui => ui/src}/icons/caret-right.svg | 0 .../src/ui => ui/src}/icons/caret.svg | 0 .../src/ui => ui/src}/icons/chat-alt.svg | 0 .../src/ui => ui/src}/icons/check-circle.svg | 0 .../src/ui => ui/src}/icons/check.svg | 0 .../ui => ui/src}/icons/checkmark-filled.svg | 0 .../src/ui => ui/src}/icons/chevron-down.svg | 0 .../ui => ui/src}/icons/chevron-up-down.svg | 0 .../ui => ui/src}/icons/clipboard-outline.svg | 0 .../src/ui => ui/src}/icons/clipboard.svg | 0 .../src/ui => ui/src}/icons/close.svg | 0 .../src/ui => ui/src}/icons/code.svg | 0 .../src/ui => ui/src}/icons/cog-filled.svg | 0 .../{clerk-js/src/ui => ui/src}/icons/cog.svg | 0 .../src/ui => ui/src}/icons/copy.svg | 0 .../src/ui => ui/src}/icons/credit-card.svg | 0 .../src/ui => ui/src}/icons/device-laptop.svg | 0 .../src/ui => ui/src}/icons/device-mobile.svg | 0 .../src}/icons/dot-circle-horizontal.svg | 0 .../src/ui => ui/src}/icons/download.svg | 0 .../src/ui => ui/src}/icons/email.svg | 0 .../src}/icons/exclamation-circle.svg | 0 .../src}/icons/exclamation-triangle.svg | 0 .../src/ui => ui/src}/icons/eye-slash.svg | 0 .../{clerk-js/src/ui => ui/src}/icons/eye.svg | 0 .../src/ui => ui/src}/icons/fingerprint.svg | 0 .../src/ui => ui/src}/icons/folder.svg | 0 .../src/ui => ui/src}/icons/generic-pay.svg | 0 .../src/ui => ui/src}/icons/index.ts | 0 .../src}/icons/information-circle.svg | 0 .../src/ui => ui/src}/icons/link.svg | 0 .../src/ui => ui/src}/icons/lock-closed.svg | 0 .../src}/icons/lock-dotted-circle.svg | 0 .../src/ui => ui/src}/icons/logo-mark-new.svg | 0 .../src/ui => ui/src}/icons/logo-mark.svg | 0 .../ui => ui/src}/icons/magnifying-glass.svg | 0 .../src/ui => ui/src}/icons/menu.svg | 0 .../src/ui => ui/src}/icons/minus.svg | 0 .../src/ui => ui/src}/icons/mobile-small.svg | 0 .../src/ui => ui/src}/icons/mobile.svg | 0 .../src/ui => ui/src}/icons/organization.svg | 0 .../src/ui => ui/src}/icons/pencil-edit.svg | 0 .../src/ui => ui/src}/icons/pencil.svg | 0 .../src/ui => ui/src}/icons/plans.svg | 0 .../src/ui => ui/src}/icons/plus.svg | 0 .../src/ui => ui/src}/icons/print.svg | 0 .../src/ui => ui/src}/icons/question-mark.svg | 0 .../src/ui => ui/src}/icons/request-auth.svg | 0 .../ui => ui/src}/icons/rotate-left-right.svg | 0 .../src/ui => ui/src}/icons/selector.svg | 0 .../ui => ui/src}/icons/signout-double.svg | 0 .../src/ui => ui/src}/icons/signout.svg | 0 .../src/ui => ui/src}/icons/spinner-jumbo.svg | 0 .../src}/icons/switch-arrow-right.svg | 0 .../src/ui => ui/src}/icons/switch-arrows.svg | 0 .../src/ui => ui/src}/icons/threeDots.svg | 0 .../src/ui => ui/src}/icons/tick-shield.svg | 0 .../src/ui => ui/src}/icons/times.svg | 0 .../src/ui => ui/src}/icons/trash.svg | 0 .../src/ui => ui/src}/icons/upload.svg | 0 .../src/ui => ui/src}/icons/user.svg | 0 .../src/ui => ui/src}/icons/userAdd.svg | 0 .../src/ui => ui/src}/icons/users.svg | 0 packages/ui/src/index.ts | 1 + packages/ui/src/internal.ts | 1 + .../lazyModules/MountedCheckoutDrawer.tsx | 0 .../lazyModules/MountedPlanDetailDrawer.tsx | 0 .../MountedSubscriptionDetailDrawer.tsx | 0 .../src/ui => ui/src}/lazyModules/common.ts | 0 .../ui => ui/src}/lazyModules/components.ts | 0 .../src/ui => ui/src}/lazyModules/drawers.tsx | 0 .../ui => ui/src}/lazyModules/providers.tsx | 0 .../__tests__/applyTokensToString.test.ts | 0 .../__tests__/makeLocalizable.test.tsx | 0 .../__tests__/parseLocalization.test.tsx | 0 .../src}/localization/applyTokensToString.ts | 0 .../localization/defaultEnglishResource.ts | 3 + .../src/ui => ui/src}/localization/index.ts | 0 .../src}/localization/localizationKeys.ts | 0 .../localization/localizationModifiers.ts | 0 .../src}/localization/makeLocalizable.tsx | 0 .../src}/localization/parseLocalization.ts | 0 .../src/ui => ui/src}/portal/index.tsx | 5 +- .../src/ui => ui/src}/primitives/Alert.tsx | 0 .../ui => ui/src}/primitives/AlertIcon.tsx | 0 .../src/ui => ui/src}/primitives/Badge.tsx | 0 .../src/ui => ui/src}/primitives/Box.tsx | 0 .../src/ui => ui/src}/primitives/Button.tsx | 0 .../src/ui => ui/src}/primitives/Dd.tsx | 0 .../src/ui => ui/src}/primitives/Dl.tsx | 0 .../src/ui => ui/src}/primitives/Dt.tsx | 0 .../src/ui => ui/src}/primitives/Flex.tsx | 0 .../src/ui => ui/src}/primitives/Form.tsx | 0 .../src}/primitives/FormErrorText.tsx | 0 .../ui => ui/src}/primitives/FormInfoText.tsx | 0 .../ui => ui/src}/primitives/FormLabel.tsx | 0 .../src}/primitives/FormSuccessText.tsx | 0 .../src}/primitives/FormWarningText.tsx | 0 .../src/ui => ui/src}/primitives/Grid.tsx | 0 .../src/ui => ui/src}/primitives/Heading.tsx | 0 .../src/ui => ui/src}/primitives/Hr.tsx | 0 .../src/ui => ui/src}/primitives/Icon.tsx | 0 .../src/ui => ui/src}/primitives/Image.tsx | 0 .../src/ui => ui/src}/primitives/Input.tsx | 0 .../src/ui => ui/src}/primitives/Link.tsx | 0 .../src}/primitives/NotificationBadge.tsx | 0 .../src/ui => ui/src}/primitives/Span.tsx | 0 .../src/ui => ui/src}/primitives/Spinner.tsx | 0 .../src/ui => ui/src}/primitives/Table.tsx | 0 .../src/ui => ui/src}/primitives/Tbody.tsx | 0 .../src/ui => ui/src}/primitives/Td.tsx | 0 .../src/ui => ui/src}/primitives/Text.tsx | 0 .../src/ui => ui/src}/primitives/Th.tsx | 0 .../src/ui => ui/src}/primitives/Thead.tsx | 0 .../src/ui => ui/src}/primitives/Tr.tsx | 0 .../src}/primitives/applyDataStateProps.ts | 0 .../src}/primitives/gapPropertyCompat.ts | 0 .../src}/primitives/hooks/useFormField.tsx | 0 .../src}/primitives/hooks/useInput.ts | 0 .../src/ui => ui/src}/primitives/index.ts | 0 .../src/ui => ui/src}/router/BaseRouter.tsx | 0 .../src/ui => ui/src}/router/HashRouter.tsx | 0 .../src/ui => ui/src}/router/PathRouter.tsx | 0 .../src/ui => ui/src}/router/Route.tsx | 0 .../src/ui => ui/src}/router/RouteContext.tsx | 0 .../src/ui => ui/src}/router/Switch.tsx | 0 .../ui => ui/src}/router/VirtualRouter.tsx | 0 .../src}/router/__mocks__/RouteContext.tsx | 0 .../src}/router/__tests__/HashRouter.test.tsx | 0 .../src}/router/__tests__/PathRouter.test.tsx | 0 .../src}/router/__tests__/Switch.test.tsx | 0 .../router/__tests__/VirtualRouter.test.tsx | 0 .../src/ui => ui/src}/router/index.tsx | 0 .../src/ui => ui/src}/router/newPaths.ts | 0 .../src/ui => ui/src}/router/pathToRegexp.ts | 0 .../styledSystem/InternalThemeProvider.tsx | 0 .../src}/styledSystem/StyleCacheProvider.tsx | 0 .../__tests__/createVariants.test.ts | 0 .../ui => ui/src}/styledSystem/animations.ts | 0 .../src}/styledSystem/breakpoints.tsx | 0 .../src/ui => ui/src}/styledSystem/common.ts | 0 .../src}/styledSystem/createCssVariables.ts | 0 .../src}/styledSystem/createVariants.ts | 0 .../src/ui => ui/src}/styledSystem/index.ts | 0 .../src/ui => ui/src}/styledSystem/types.ts | 0 packages/{clerk-js/src/ui => ui/src}/types.ts | 0 .../src}/utils/ExternalElementMounter.tsx | 0 .../__tests__/createCustomMenuItems.test.ts | 0 .../utils/__tests__/createCustomPages.test.ts | 0 .../src}/utils/__tests__/cssSupports.test.ts | 0 .../src}/utils/__tests__/cssVariables.test.ts | 0 .../extractCssLayerNameFromAppearance.ts} | 32 +-- .../utils/__tests__/factorSorting.test.ts | 0 .../__tests__/formatSafeIdentifier.test.ts | 0 .../src}/utils/__tests__/intl.test.ts | 0 .../__tests__/originPrefersPopup.test.ts | 0 .../utils/__tests__/passwordUtils.test.tsx | 0 .../src}/utils/__tests__/phoneUtils.test.ts | 0 .../truncateTextWithEndVisible.test.ts | 0 .../ui/src/utils/buildVirtualRouterUrl.ts | 7 + .../src/ui => ui/src}/utils/colors/README.md | 0 .../utils/colors/__tests__/constants.test.ts | 0 .../src}/utils/colors/__tests__/index.test.ts | 0 .../utils/colors/__tests__/legacy.test.ts | 0 .../utils/colors/__tests__/modern.test.ts | 0 .../utils/colors/__tests__/scales.test.ts | 0 .../src}/utils/colors/__tests__/utils.test.ts | 0 .../ui => ui/src}/utils/colors/constants.ts | 0 .../src/ui => ui/src}/utils/colors/index.ts | 0 .../src/ui => ui/src}/utils/colors/legacy.ts | 0 .../src/ui => ui/src}/utils/colors/modern.ts | 0 .../src/ui => ui/src}/utils/colors/scales.ts | 0 .../src/ui => ui/src}/utils/colors/utils.ts | 0 .../src/ui => ui/src}/utils/containsAllOf.ts | 0 .../src}/utils/createCustomMenuItems.tsx | 0 .../ui => ui/src}/utils/createCustomPages.tsx | 2 +- .../src}/utils/createInfiniteAccessProxy.ts | 0 .../src/ui => ui/src}/utils/createSlug.ts | 0 .../src/ui => ui/src}/utils/cssSupports.ts | 0 .../src/ui => ui/src}/utils/cssVariables.ts | 0 .../src/utils/disambiguateRedirectOptions.ts | 0 .../src/ui => ui/src}/utils/errorHandler.ts | 0 .../extractCssLayerNameFromAppearance.ts} | 2 +- .../src/ui => ui/src}/utils/factorSorting.ts | 0 .../src/ui => ui/src}/utils/formatDate.ts | 0 .../src}/utils/formatSafeIdentifier.ts | 0 .../src/ui => ui/src}/utils/fromEntries.ts | 0 .../src}/utils/getClosestProfileScrollBox.ts | 0 .../src}/utils/getRelativeToNowDateKey.ts | 0 .../src}/utils/getValidReactChildren.ts | 0 .../{clerk-js/src/ui => ui/src}/utils/intl.ts | 0 .../src/ui => ui/src}/utils/isMobileDevice.ts | 0 .../src/ui => ui/src}/utils/mergeRefs.ts | 0 .../src/utils/normalizeRoutingOptions.ts | 0 .../ui => ui/src}/utils/originPrefersPopup.ts | 0 .../src/ui => ui/src}/utils/passwordUtils.ts | 0 .../src/ui => ui/src}/utils/phoneUtils.ts | 0 .../src/ui => ui/src}/utils/range.ts | 0 .../src/ui => ui/src}/utils/readObjectPath.ts | 0 .../src}/utils/removeUndefinedProps.ts | 0 .../src}/utils/roleLocalizationKey.ts | 0 .../ui => ui/src}/utils/runtimeEnvironment.ts | 0 .../src}/utils/sanitizeCustomLinkURL.ts | 2 +- .../src/ui => ui/src}/utils/sleep.ts | 0 .../src/ui => ui/src}/utils/timeAgo.ts | 0 .../src}/utils/truncateTextWithEndVisible.ts | 0 .../src/ui => ui/src}/utils/useFormControl.ts | 0 .../src/ui => ui/src}/utils/usernameUtils.ts | 0 .../src}/utils/web3CallbackErrorHandler.ts | 0 packages/ui/tsconfig.json | 35 +++ packages/ui/tsdown.config.mts | 24 ++ pnpm-lock.yaml | 177 +++++++++------ scripts/common.mjs | 22 ++ scripts/snapshot.mjs | 20 +- 740 files changed, 729 insertions(+), 438 deletions(-) delete mode 100644 packages/clerk-js/src/ui/localization/defaultEnglishResource.ts rename packages/{clerk-js/src/utils => shared/src/internal/clerk-js}/componentGuards.ts (100%) create mode 100644 packages/shared/src/internal/clerk-js/constants.ts create mode 100644 packages/shared/src/internal/clerk-js/dynamicParamParser.ts create mode 100644 packages/shared/src/internal/clerk-js/errors.ts create mode 100644 packages/shared/src/internal/clerk-js/index.ts create mode 100644 packages/shared/src/internal/clerk-js/warnings.ts create mode 100644 packages/ui/package.json rename packages/{clerk-js/src/ui => ui/src}/Components.tsx (96%) rename packages/{clerk-js/src/ui => ui/src}/baseTheme.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/common/CalloutWithAction.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/common/ChooseEnterpriseConnectionCard.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/common/CustomPageContentContainer.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/common/DevOnly.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/common/EmailLinkCompleteFlowCard.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/common/EmailLinkStatusCard.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/common/EmailLinkVerify.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/common/Gate.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/common/InfiniteListSpinner.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/common/NotificationCountBadge.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/common/PrintableComponent.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/common/ProviderInitialIcon.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/common/QRCode.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/common/RemoveResourceForm.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/common/SSOCallback.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/common/Wizard.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/common/__tests__/redirects.test.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/common/__tests__/verification.test.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/common/__tests__/withRedirect.test.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/common/constants.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/common/forms.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/common/index.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/common/organizations/OrganizationPreview.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/common/redirects.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/common/verification.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/common/withRedirect.tsx (96%) rename packages/{clerk-js/src/ui => ui/src}/components/ApiKeys/ApiKeys.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/ApiKeys/ApiKeysTable.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/ApiKeys/CreateApiKeyForm.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/ApiKeys/RevokeAPIKeyConfirmationModal.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/ApiKeys/useApiKeys.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/components/BlankCaptchaModal/index.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/Checkout/CheckoutComplete.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/Checkout/CheckoutForm.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/Checkout/CheckoutPage.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/Checkout/__tests__/Checkout.test.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/Checkout/index.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/Checkout/parts.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/CreateOrganization/CreateOrganization.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/CreateOrganization/CreateOrganizationForm.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/CreateOrganization/CreateOrganizationPage.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/CreateOrganization/__tests__/CreateOrganization.test.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/CreateOrganization/index.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/GoogleOneTap/index.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/GoogleOneTap/one-tap-start.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/ImpersonationFab/index.tsx (99%) rename packages/{clerk-js/src/ui => ui/src}/components/KeylessPrompt/ClerkLogoIcon.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/KeylessPrompt/KeySlashIcon.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/KeylessPrompt/index.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/KeylessPrompt/use-revalidate-environment.ts (95%) rename packages/{clerk-js/src/ui => ui/src}/components/OAuthConsent/OAuthConsent.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/OrganizationList/OrganizationListPage.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/OrganizationList/UserInvitationList.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/OrganizationList/UserMembershipList.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/OrganizationList/UserSuggestionList.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/OrganizationList/__tests__/OrganizationList.test.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/OrganizationList/index.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/OrganizationList/shared.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/OrganizationList/utils.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/components/OrganizationProfile/ActionConfirmationPage.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/OrganizationProfile/ActiveMembersList.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/OrganizationProfile/AddDomainForm.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/OrganizationProfile/BillingWidget.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/OrganizationProfile/DomainList.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/OrganizationProfile/EnrollmentBadge.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/OrganizationProfile/InviteMembersForm.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/OrganizationProfile/InviteMembersScreen.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/OrganizationProfile/InvitedMembersList.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/OrganizationProfile/MemberListTable.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/OrganizationProfile/MembersActions.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/OrganizationProfile/MembersSearch.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/OrganizationProfile/MembershipWidget.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/OrganizationProfile/OrganizationApiKeysPage.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/OrganizationProfile/OrganizationBillingPage.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/OrganizationProfile/OrganizationGeneralPage.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/OrganizationProfile/OrganizationMembers.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/OrganizationProfile/OrganizationMembersTabInvitations.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/OrganizationProfile/OrganizationMembersTabRequests.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/OrganizationProfile/OrganizationPaymentAttemptPage.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/OrganizationProfile/OrganizationPlansPage.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/OrganizationProfile/OrganizationProfileAvatarUploader.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/OrganizationProfile/OrganizationProfileNavbar.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/OrganizationProfile/OrganizationProfileRoutes.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/OrganizationProfile/OrganizationStatementPage.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/OrganizationProfile/ProfileForm.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/OrganizationProfile/RemoveDomainForm.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/OrganizationProfile/RemoveDomainScreen.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/OrganizationProfile/RequestToJoinList.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/OrganizationProfile/VerifiedDomainForm.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/OrganizationProfile/VerifiedDomainScreen.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/OrganizationProfile/VerifyDomainForm.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/OrganizationProfile/VerifyDomainScreen.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/OrganizationProfile/__tests__/InviteMembersPage.test.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/OrganizationProfile/__tests__/LeaveOrganizationPage.test.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/OrganizationProfile/__tests__/OrganizationGeneralPage.test.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/OrganizationProfile/__tests__/OrganizationMembers.test.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/OrganizationProfile/__tests__/OrganizationProfile.test.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/OrganizationProfile/__tests__/ProfileSettingsPage.test.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/OrganizationProfile/__tests__/utils.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/components/OrganizationProfile/index.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/OrganizationSwitcher/OrganizationSwitcherPopover.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/OrganizationSwitcher/OrganizationSwitcherTrigger.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/OrganizationSwitcher/OtherOrganizationActions.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/OrganizationSwitcher/UserInvitationSuggestionList.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/OrganizationSwitcher/UserMembershipList.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/OrganizationSwitcher/__tests__/OrganizationSwitcher.test.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/OrganizationSwitcher/__tests__/test-utils.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/components/OrganizationSwitcher/__tests__/utils.test.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/components/OrganizationSwitcher/index.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/OrganizationSwitcher/utils.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/components/PaymentAttempts/PaymentAttemptPage.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/PaymentAttempts/PaymentAttemptsList.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/PaymentAttempts/index.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/components/PaymentMethods/AddPaymentMethod.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/PaymentMethods/PaymentElementSkeleton.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/PaymentMethods/PaymentMethodRow.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/PaymentMethods/PaymentMethods.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/PaymentMethods/TestPaymentMethod.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/PaymentMethods/index.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/components/Plans/PlanDetails.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/Plans/__tests__/PlanDetails.test.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/PricingTable/PricingTable.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/PricingTable/PricingTableDefault.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/PricingTable/PricingTableMatrix.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/PricingTable/__tests__/PricingTable.test.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/PricingTable/index.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/PricingTable/utils/pricing-footer-state.spec.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/components/PricingTable/utils/pricing-footer-state.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/components/SessionTasks/index.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/SessionTasks/tasks/TaskChooseOrganization/ChooseOrganizationScreen.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/SessionTasks/tasks/TaskChooseOrganization/CreateOrganizationScreen.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/SessionTasks/tasks/TaskChooseOrganization/__tests__/TaskChooseOrganization.test.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/SessionTasks/tasks/TaskChooseOrganization/index.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/SessionTasks/tasks/withTaskGuard.ts (93%) rename packages/{clerk-js/src/ui => ui/src}/components/SignIn/AlternativeMethods.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/SignIn/HavingTrouble.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/SignIn/ResetPassword.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/SignIn/ResetPasswordSuccess.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/SignIn/SignInAccountSwitcher.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/SignIn/SignInAlternativePhoneCodePhoneNumberCard.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/SignIn/SignInFactorOne.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/SignIn/SignInFactorOneAlternativeChannelCodeForm.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/SignIn/SignInFactorOneAlternativePhoneCodeCard.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/SignIn/SignInFactorOneCodeForm.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/SignIn/SignInFactorOneEmailCodeCard.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/SignIn/SignInFactorOneEmailLinkCard.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/SignIn/SignInFactorOneEnterpriseConnections.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/SignIn/SignInFactorOneForgotPasswordCard.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/SignIn/SignInFactorOnePasskey.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/SignIn/SignInFactorOnePasswordCard.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/SignIn/SignInFactorOnePhoneCodeCard.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/SignIn/SignInFactorTwo.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/SignIn/SignInFactorTwoAlternativeMethods.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/SignIn/SignInFactorTwoBackupCodeCard.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/SignIn/SignInFactorTwoCodeForm.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/SignIn/SignInFactorTwoPhoneCodeCard.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/SignIn/SignInFactorTwoTOTPCard.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/SignIn/SignInSSOCallback.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/SignIn/SignInSocialButtons.tsx (98%) rename packages/{clerk-js/src/ui => ui/src}/components/SignIn/SignInStart.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/SignIn/__tests__/ResetPassword.test.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/SignIn/__tests__/ResetPasswordSuccess.test.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/SignIn/__tests__/SignInAccountSwitcher.test.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/SignIn/__tests__/SignInFactorOne.test.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/SignIn/__tests__/SignInFactorOneCodeForm.test.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/SignIn/__tests__/SignInFactorTwo.test.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/SignIn/__tests__/SignInStart.test.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/SignIn/__tests__/handleCombinedFlowTransfer.test.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/components/SignIn/__tests__/utils.test.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/components/SignIn/handleCombinedFlowTransfer.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/components/SignIn/index.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/SignIn/lazy-sign-up.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/components/SignIn/shared.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/components/SignIn/useResetPasswordFactor.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/SignIn/utils.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/components/SignIn/withHavingTrouble.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/SignUp/SignUpContinue.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/SignUp/SignUpEmailCodeCard.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/SignUp/SignUpEmailLinkCard.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/SignUp/SignUpEnterpriseConnections.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/SignUp/SignUpForm.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/SignUp/SignUpPhoneCodeCard.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/SignUp/SignUpRestrictedAccess.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/SignUp/SignUpSSOCallback.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/SignUp/SignUpSocialButtons.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/SignUp/SignUpStart.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/SignUp/SignUpStartAlternativePhoneCodePhoneNumberCard.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/SignUp/SignUpVerificationCodeForm.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/SignUp/SignUpVerifyEmail.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/SignUp/SignUpVerifyPhone.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/SignUp/__tests__/SignUpContinue.test.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/SignUp/__tests__/SignUpEmailLinkFlowComplete.test.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/SignUp/__tests__/SignUpStart.test.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/SignUp/__tests__/SignUpVerifyEmail.test.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/SignUp/__tests__/SignUpVerifyPhone.test.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/SignUp/__tests__/signUpFormHelpers.test.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/components/SignUp/index.tsx (97%) rename packages/{clerk-js/src/ui => ui/src}/components/SignUp/signUpFormHelpers.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/components/SignUp/util.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/components/Statements/Statement.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/Statements/StatementPage.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/Statements/StatementsList.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/Statements/index.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/components/SubscriptionDetails/__tests__/SubscriptionDetails.test.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/SubscriptionDetails/index.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/Subscriptions/SubscriptionsList.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/Subscriptions/__tests__/SubscriptionsList.test.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/Subscriptions/badge.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/Subscriptions/index.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/UserAvatar/index.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/UserButton/SessionActions.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/UserButton/UserButtonPopover.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/UserButton/UserButtonTopLevelIdentifier.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/UserButton/UserButtonTrigger.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/UserButton/__tests__/UserButton.test.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/UserButton/index.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/UserButton/useMultisessionActions.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/UserProfile/AccountPage.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/UserProfile/ActiveDevicesSection.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/UserProfile/AddAuthenticatorApp.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/UserProfile/ApiKeysPage.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/UserProfile/BillingPage.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/UserProfile/ConnectedAccountsMenu.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/UserProfile/ConnectedAccountsSection.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/UserProfile/DeleteSection.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/UserProfile/DeleteUserForm.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/UserProfile/EmailForm.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/UserProfile/EmailsSection.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/UserProfile/EnterpriseAccountsSection.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/UserProfile/LinkButtonWithDescription.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/UserProfile/MfaBackupCodeCreateForm.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/UserProfile/MfaBackupCodeList.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/UserProfile/MfaBackupCodeScreen.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/UserProfile/MfaBackupCodeTile.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/UserProfile/MfaForm.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/UserProfile/MfaPhoneCodeScreen.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/UserProfile/MfaScreens.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/UserProfile/MfaSection.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/UserProfile/MfaTOTPScreen.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/UserProfile/PasskeySection.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/UserProfile/PasswordForm.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/UserProfile/PasswordSection.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/UserProfile/PhoneForm.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/UserProfile/PhoneSection.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/UserProfile/PlansPage.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/UserProfile/ProfileForm.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/UserProfile/RemoveResourceForm.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/UserProfile/SecurityPage.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/UserProfile/UserProfileAvatarUploader.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/UserProfile/UserProfileNavbar.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/UserProfile/UserProfileRoutes.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/UserProfile/UserProfileSection.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/UserProfile/UsernameForm.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/UserProfile/UsernameSection.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/UserProfile/VerifyTOTP.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/UserProfile/VerifyWithCode.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/UserProfile/VerifyWithEnterpriseConnection.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/UserProfile/VerifyWithLink.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/UserProfile/Web3Form.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/UserProfile/Web3Section.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/UserProfile/__tests__/AccountPage.test.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/UserProfile/__tests__/ConnectedAccountsSection.test.tsx (97%) rename packages/{clerk-js/src/ui => ui/src}/components/UserProfile/__tests__/EmailsSection.test.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/UserProfile/__tests__/EnterpriseAccountsSection.test.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/UserProfile/__tests__/MfaPage.test.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/UserProfile/__tests__/PasskeysSection.test.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/UserProfile/__tests__/PasswordSection.test.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/UserProfile/__tests__/PhoneSection.test.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/UserProfile/__tests__/SecurityPage.test.tsx (99%) rename packages/{clerk-js/src/ui => ui/src}/components/UserProfile/__tests__/UserProfile.test.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/UserProfile/__tests__/UserProfileSection.test.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/UserProfile/__tests__/UsernameSection.test.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/UserProfile/__tests__/utils.test.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/components/UserProfile/index.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/UserProfile/utils.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/components/UserVerification/AlternativeMethods.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/UserVerification/HavingTrouble.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/UserVerification/UVFactorOneCodeForm.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/UserVerification/UVFactorOneEmailCodeCard.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/UserVerification/UVFactorOnePasskeysCard.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/UserVerification/UVFactorOnePhoneCodeCard.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/UserVerification/UVFactorTwoAlternativeMethods.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/UserVerification/UVFactorTwoBackupCodeCard.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/UserVerification/UVFactorTwoCodeForm.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/UserVerification/UVFactorTwoPhoneCodeCard.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/UserVerification/UserVerificationFactorOne.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/UserVerification/UserVerificationFactorOnePassword.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/UserVerification/UserVerificationFactorTwo.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/UserVerification/UserVerificationFactorTwoTOTP.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/UserVerification/__tests__/UVFactorOne.test.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/UserVerification/__tests__/UVFactorTwo.test.tsx (85%) rename packages/{clerk-js/src/ui => ui/src}/components/UserVerification/index.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/UserVerification/use-after-verification.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/components/UserVerification/useReverificationAlternativeStrategies.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/components/UserVerification/useUserVerificationSession.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/UserVerification/utils.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/components/UserVerification/withHavingTrouble.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/Waitlist/WaitlistForm.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/Waitlist/__tests__/Waitlist.test.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/Waitlist/index.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/components/Waitlist/waitlistFormHelpers.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/components/prefetch-organization-list.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/constants.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/contexts/AcceptedUserInvitations.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/contexts/ClerkUIComponentsContext.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/contexts/CoreClerkContextWrapper.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/contexts/CoreClientContext.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/contexts/CoreSessionContext.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/contexts/CoreUserContext.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/contexts/EnvironmentContext.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/contexts/OptionsContext.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/contexts/components/ApiKeys.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/contexts/components/Checkout.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/contexts/components/CreateOrganization.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/contexts/components/GoogleOneTap.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/contexts/components/OAuthConsent.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/contexts/components/OrganizationList.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/contexts/components/OrganizationProfile.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/contexts/components/OrganizationSwitcher.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/contexts/components/Plans.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/contexts/components/PricingTable.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/contexts/components/SessionTasks.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/contexts/components/SignIn.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/contexts/components/SignOut.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/contexts/components/SignUp.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/contexts/components/SubscriberType.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/contexts/components/SubscriptionDetails.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/contexts/components/UserAvatar.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/contexts/components/UserButton.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/contexts/components/UserProfile.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/contexts/components/UserVerification.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/contexts/components/Waitlist.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/contexts/components/index.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/contexts/index.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/contexts/utils.ts (94%) rename packages/{clerk-js/src/ui => ui/src}/customizables/AppearanceContext.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/customizables/Flow.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/customizables/__tests__/FlowRoot.spec.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/customizables/__tests__/elementDescriptors.test.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/customizables/__tests__/makeCustomizable.test.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/customizables/__tests__/parseAppearance.test.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/customizables/__tests__/parseVariables.test.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/customizables/__tests__/test-utils.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/customizables/classGeneration.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/customizables/elementDescriptors.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/customizables/index.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/customizables/makeCustomizable.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/customizables/makeResponsive.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/customizables/parseAppearance.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/customizables/parseVariables.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/customizables/sanitizeDomProps.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/elements/Action/ActionCard.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/elements/Action/ActionClosed.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/elements/Action/ActionOpen.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/elements/Action/ActionRoot.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/elements/Action/ActionTrigger.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/elements/Action/index.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/elements/Actions.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/elements/Alert.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/elements/Animated.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/elements/ApplicationLogo.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/elements/ArrowBlockButton.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/elements/Avatar.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/elements/AvatarUploader.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/elements/BackLink.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/elements/Badge.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/elements/CaptchaElement.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/elements/Card/CardAction.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/elements/Card/CardAlert.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/elements/Card/CardClerkAndPagesTag.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/elements/Card/CardContent.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/elements/Card/CardFooter.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/elements/Card/CardRoot.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/elements/Card/index.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/elements/ClipboardInput.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/elements/CodeControl.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/elements/DataTable.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/elements/DevModeNotice.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/elements/Divider.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/elements/Drawer.tsx (99%) rename packages/{clerk-js/src/ui => ui/src}/elements/ErrorCard.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/elements/FieldControl.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/elements/Form.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/elements/FormButtons.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/elements/FormContainer.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/elements/FormControl.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/elements/FormattedPhoneNumber.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/elements/FullHeightLoader.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/elements/Gauge.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/elements/Header.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/elements/IconButton.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/elements/IconCircle.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/elements/IdentityPreview.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/elements/InformationBox.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/elements/InputGroup.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/elements/InputWithIcon.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/elements/InvisibleRootBox.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/elements/LegalConsentCheckbox.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/elements/LineItems.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/elements/LinkRenderer.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/elements/LoadingCard.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/elements/Menu.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/elements/Modal.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/elements/Navbar.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/elements/OrganizationAvatar.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/elements/OrganizationPreview.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/elements/Pagination.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/elements/PasswordInput.tsx (98%) rename packages/{clerk-js/src/ui => ui/src}/elements/PersonalWorkspacePreview.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/elements/PhoneInput/__tests__/useFormattedPhoneNumber.test.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/elements/PhoneInput/countryCodeData.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/elements/PhoneInput/index.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/elements/PhoneInput/useFormattedPhoneNumber.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/elements/Popover.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/elements/PopoverCard.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/elements/Portal.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/elements/PreviewButton.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/elements/ProfileCard/ProfileCardContent.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/elements/ProfileCard/ProfileCardRoot.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/elements/ProfileCard/index.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/elements/RadioGroup.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/elements/ReversibleContainer.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/elements/RootBox.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/elements/RouterLink.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/elements/Section.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/elements/SegmentedControl.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/elements/Select.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/elements/SocialButtons.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/elements/SuccessPage.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/elements/Switch.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/elements/Tabs.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/elements/TagInput.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/elements/ThreeDotsMenu.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/elements/TimerButton.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/elements/Tooltip.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/elements/UserAvatar.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/elements/UserPreview.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/elements/VerificationCodeCard.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/elements/VerificationLinkCard.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/elements/__mocks__/@formkit/auto-animate/react/index.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/elements/__tests__/CodeControl.test.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/elements/__tests__/LinkRenderer.test.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/elements/__tests__/PlainInput.test.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/elements/__tests__/RadioGroup.test.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/elements/__tests__/TimerButton.test.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/elements/contexts/index.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/elements/utils.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/elements/withAvatarShimmer.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/foundations/__tests__/createInternalTheme.test.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/foundations/borders.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/foundations/colors.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/foundations/createInternalTheme.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/foundations/defaultFoundations.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/foundations/index.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/foundations/opacity.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/foundations/shadows.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/foundations/sizes.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/foundations/transitions.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/foundations/typography.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/foundations/zIndices.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/hooks/__tests__/useCoreOrganization.test.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/hooks/__tests__/useCoreOrganizationList.test.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/hooks/__tests__/useDevMode.test.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/hooks/__tests__/useDirection.test.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/hooks/__tests__/useEnabledThirdPartyProviders.test.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/hooks/__tests__/usePasswordComplexity.test.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/hooks/__tests__/useSupportEmail.test.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/hooks/index.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/hooks/useAlternativeStrategies.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/hooks/useClerkModalStateParams.tsx (91%) rename packages/{clerk-js/src/ui => ui/src}/hooks/useClipboard.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/hooks/useDebounce.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/hooks/useDevMode.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/hooks/useDirection.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/hooks/useEmailLink.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/hooks/useEnabledThirdPartyProviders.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/hooks/useEnterpriseSSOLink.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/hooks/useFetch.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/hooks/useFetchRoles.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/hooks/useInView.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/hooks/useLoadingStatus.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/hooks/useMultipleSessions.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/hooks/useNavigateToFlowStart.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/hooks/useOrganizationListInView.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/hooks/usePassword.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/hooks/usePasswordComplexity.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/hooks/usePopover.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/hooks/usePrefersReducedMotion.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/hooks/usePreloadTasks.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/hooks/useSafeState.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/hooks/useScrollLock.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/hooks/useSearchInput.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/hooks/useSetSessionWithTimeout.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/hooks/useSupportEmail.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/hooks/useTabState.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/hooks/useWindowEventListener.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/icons/add.svg (100%) rename packages/{clerk-js/src/ui => ui/src}/icons/apple-pay.svg (100%) rename packages/{clerk-js/src/ui => ui/src}/icons/arrow-left.svg (100%) rename packages/{clerk-js/src/ui => ui/src}/icons/arrow-right-button.svg (100%) rename packages/{clerk-js/src/ui => ui/src}/icons/arrow-right.svg (100%) rename packages/{clerk-js/src/ui => ui/src}/icons/arrows-up-down.svg (100%) rename packages/{clerk-js/src/ui => ui/src}/icons/auth-app.svg (100%) rename packages/{clerk-js/src/ui => ui/src}/icons/billing.svg (100%) rename packages/{clerk-js/src/ui => ui/src}/icons/block.svg (100%) rename packages/{clerk-js/src/ui => ui/src}/icons/caret-left.svg (100%) rename packages/{clerk-js/src/ui => ui/src}/icons/caret-right.svg (100%) rename packages/{clerk-js/src/ui => ui/src}/icons/caret.svg (100%) rename packages/{clerk-js/src/ui => ui/src}/icons/chat-alt.svg (100%) rename packages/{clerk-js/src/ui => ui/src}/icons/check-circle.svg (100%) rename packages/{clerk-js/src/ui => ui/src}/icons/check.svg (100%) rename packages/{clerk-js/src/ui => ui/src}/icons/checkmark-filled.svg (100%) rename packages/{clerk-js/src/ui => ui/src}/icons/chevron-down.svg (100%) rename packages/{clerk-js/src/ui => ui/src}/icons/chevron-up-down.svg (100%) rename packages/{clerk-js/src/ui => ui/src}/icons/clipboard-outline.svg (100%) rename packages/{clerk-js/src/ui => ui/src}/icons/clipboard.svg (100%) rename packages/{clerk-js/src/ui => ui/src}/icons/close.svg (100%) rename packages/{clerk-js/src/ui => ui/src}/icons/code.svg (100%) rename packages/{clerk-js/src/ui => ui/src}/icons/cog-filled.svg (100%) rename packages/{clerk-js/src/ui => ui/src}/icons/cog.svg (100%) rename packages/{clerk-js/src/ui => ui/src}/icons/copy.svg (100%) rename packages/{clerk-js/src/ui => ui/src}/icons/credit-card.svg (100%) rename packages/{clerk-js/src/ui => ui/src}/icons/device-laptop.svg (100%) rename packages/{clerk-js/src/ui => ui/src}/icons/device-mobile.svg (100%) rename packages/{clerk-js/src/ui => ui/src}/icons/dot-circle-horizontal.svg (100%) rename packages/{clerk-js/src/ui => ui/src}/icons/download.svg (100%) rename packages/{clerk-js/src/ui => ui/src}/icons/email.svg (100%) rename packages/{clerk-js/src/ui => ui/src}/icons/exclamation-circle.svg (100%) rename packages/{clerk-js/src/ui => ui/src}/icons/exclamation-triangle.svg (100%) rename packages/{clerk-js/src/ui => ui/src}/icons/eye-slash.svg (100%) rename packages/{clerk-js/src/ui => ui/src}/icons/eye.svg (100%) rename packages/{clerk-js/src/ui => ui/src}/icons/fingerprint.svg (100%) rename packages/{clerk-js/src/ui => ui/src}/icons/folder.svg (100%) rename packages/{clerk-js/src/ui => ui/src}/icons/generic-pay.svg (100%) rename packages/{clerk-js/src/ui => ui/src}/icons/index.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/icons/information-circle.svg (100%) rename packages/{clerk-js/src/ui => ui/src}/icons/link.svg (100%) rename packages/{clerk-js/src/ui => ui/src}/icons/lock-closed.svg (100%) rename packages/{clerk-js/src/ui => ui/src}/icons/lock-dotted-circle.svg (100%) rename packages/{clerk-js/src/ui => ui/src}/icons/logo-mark-new.svg (100%) rename packages/{clerk-js/src/ui => ui/src}/icons/logo-mark.svg (100%) rename packages/{clerk-js/src/ui => ui/src}/icons/magnifying-glass.svg (100%) rename packages/{clerk-js/src/ui => ui/src}/icons/menu.svg (100%) rename packages/{clerk-js/src/ui => ui/src}/icons/minus.svg (100%) rename packages/{clerk-js/src/ui => ui/src}/icons/mobile-small.svg (100%) rename packages/{clerk-js/src/ui => ui/src}/icons/mobile.svg (100%) rename packages/{clerk-js/src/ui => ui/src}/icons/organization.svg (100%) rename packages/{clerk-js/src/ui => ui/src}/icons/pencil-edit.svg (100%) rename packages/{clerk-js/src/ui => ui/src}/icons/pencil.svg (100%) rename packages/{clerk-js/src/ui => ui/src}/icons/plans.svg (100%) rename packages/{clerk-js/src/ui => ui/src}/icons/plus.svg (100%) rename packages/{clerk-js/src/ui => ui/src}/icons/print.svg (100%) rename packages/{clerk-js/src/ui => ui/src}/icons/question-mark.svg (100%) rename packages/{clerk-js/src/ui => ui/src}/icons/request-auth.svg (100%) rename packages/{clerk-js/src/ui => ui/src}/icons/rotate-left-right.svg (100%) rename packages/{clerk-js/src/ui => ui/src}/icons/selector.svg (100%) rename packages/{clerk-js/src/ui => ui/src}/icons/signout-double.svg (100%) rename packages/{clerk-js/src/ui => ui/src}/icons/signout.svg (100%) rename packages/{clerk-js/src/ui => ui/src}/icons/spinner-jumbo.svg (100%) rename packages/{clerk-js/src/ui => ui/src}/icons/switch-arrow-right.svg (100%) rename packages/{clerk-js/src/ui => ui/src}/icons/switch-arrows.svg (100%) rename packages/{clerk-js/src/ui => ui/src}/icons/threeDots.svg (100%) rename packages/{clerk-js/src/ui => ui/src}/icons/tick-shield.svg (100%) rename packages/{clerk-js/src/ui => ui/src}/icons/times.svg (100%) rename packages/{clerk-js/src/ui => ui/src}/icons/trash.svg (100%) rename packages/{clerk-js/src/ui => ui/src}/icons/upload.svg (100%) rename packages/{clerk-js/src/ui => ui/src}/icons/user.svg (100%) rename packages/{clerk-js/src/ui => ui/src}/icons/userAdd.svg (100%) rename packages/{clerk-js/src/ui => ui/src}/icons/users.svg (100%) create mode 100644 packages/ui/src/index.ts create mode 100644 packages/ui/src/internal.ts rename packages/{clerk-js/src/ui => ui/src}/lazyModules/MountedCheckoutDrawer.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/lazyModules/MountedPlanDetailDrawer.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/lazyModules/MountedSubscriptionDetailDrawer.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/lazyModules/common.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/lazyModules/components.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/lazyModules/drawers.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/lazyModules/providers.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/localization/__tests__/applyTokensToString.test.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/localization/__tests__/makeLocalizable.test.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/localization/__tests__/parseLocalization.test.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/localization/applyTokensToString.ts (100%) create mode 100644 packages/ui/src/localization/defaultEnglishResource.ts rename packages/{clerk-js/src/ui => ui/src}/localization/index.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/localization/localizationKeys.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/localization/localizationModifiers.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/localization/makeLocalizable.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/localization/parseLocalization.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/portal/index.tsx (92%) rename packages/{clerk-js/src/ui => ui/src}/primitives/Alert.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/primitives/AlertIcon.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/primitives/Badge.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/primitives/Box.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/primitives/Button.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/primitives/Dd.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/primitives/Dl.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/primitives/Dt.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/primitives/Flex.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/primitives/Form.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/primitives/FormErrorText.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/primitives/FormInfoText.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/primitives/FormLabel.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/primitives/FormSuccessText.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/primitives/FormWarningText.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/primitives/Grid.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/primitives/Heading.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/primitives/Hr.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/primitives/Icon.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/primitives/Image.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/primitives/Input.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/primitives/Link.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/primitives/NotificationBadge.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/primitives/Span.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/primitives/Spinner.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/primitives/Table.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/primitives/Tbody.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/primitives/Td.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/primitives/Text.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/primitives/Th.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/primitives/Thead.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/primitives/Tr.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/primitives/applyDataStateProps.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/primitives/gapPropertyCompat.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/primitives/hooks/useFormField.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/primitives/hooks/useInput.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/primitives/index.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/router/BaseRouter.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/router/HashRouter.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/router/PathRouter.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/router/Route.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/router/RouteContext.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/router/Switch.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/router/VirtualRouter.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/router/__mocks__/RouteContext.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/router/__tests__/HashRouter.test.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/router/__tests__/PathRouter.test.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/router/__tests__/Switch.test.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/router/__tests__/VirtualRouter.test.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/router/index.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/router/newPaths.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/router/pathToRegexp.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/styledSystem/InternalThemeProvider.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/styledSystem/StyleCacheProvider.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/styledSystem/__tests__/createVariants.test.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/styledSystem/animations.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/styledSystem/breakpoints.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/styledSystem/common.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/styledSystem/createCssVariables.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/styledSystem/createVariants.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/styledSystem/index.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/styledSystem/types.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/types.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/utils/ExternalElementMounter.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/utils/__tests__/createCustomMenuItems.test.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/utils/__tests__/createCustomPages.test.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/utils/__tests__/cssSupports.test.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/utils/__tests__/cssVariables.test.ts (100%) rename packages/{clerk-js/src/utils/__tests__/appearance.test.ts => ui/src/utils/__tests__/extractCssLayerNameFromAppearance.ts} (87%) rename packages/{clerk-js/src/ui => ui/src}/utils/__tests__/factorSorting.test.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/utils/__tests__/formatSafeIdentifier.test.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/utils/__tests__/intl.test.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/utils/__tests__/originPrefersPopup.test.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/utils/__tests__/passwordUtils.test.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/utils/__tests__/phoneUtils.test.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/utils/__tests__/truncateTextWithEndVisible.test.ts (100%) create mode 100644 packages/ui/src/utils/buildVirtualRouterUrl.ts rename packages/{clerk-js/src/ui => ui/src}/utils/colors/README.md (100%) rename packages/{clerk-js/src/ui => ui/src}/utils/colors/__tests__/constants.test.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/utils/colors/__tests__/index.test.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/utils/colors/__tests__/legacy.test.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/utils/colors/__tests__/modern.test.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/utils/colors/__tests__/scales.test.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/utils/colors/__tests__/utils.test.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/utils/colors/constants.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/utils/colors/index.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/utils/colors/legacy.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/utils/colors/modern.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/utils/colors/scales.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/utils/colors/utils.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/utils/containsAllOf.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/utils/createCustomMenuItems.tsx (100%) rename packages/{clerk-js/src/ui => ui/src}/utils/createCustomPages.tsx (99%) rename packages/{clerk-js/src/ui => ui/src}/utils/createInfiniteAccessProxy.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/utils/createSlug.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/utils/cssSupports.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/utils/cssVariables.ts (100%) rename packages/{clerk-js => ui}/src/utils/disambiguateRedirectOptions.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/utils/errorHandler.ts (100%) rename packages/{clerk-js/src/utils/appearance.ts => ui/src/utils/extractCssLayerNameFromAppearance.ts} (96%) rename packages/{clerk-js/src/ui => ui/src}/utils/factorSorting.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/utils/formatDate.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/utils/formatSafeIdentifier.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/utils/fromEntries.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/utils/getClosestProfileScrollBox.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/utils/getRelativeToNowDateKey.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/utils/getValidReactChildren.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/utils/intl.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/utils/isMobileDevice.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/utils/mergeRefs.ts (100%) rename packages/{clerk-js => ui}/src/utils/normalizeRoutingOptions.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/utils/originPrefersPopup.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/utils/passwordUtils.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/utils/phoneUtils.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/utils/range.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/utils/readObjectPath.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/utils/removeUndefinedProps.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/utils/roleLocalizationKey.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/utils/runtimeEnvironment.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/utils/sanitizeCustomLinkURL.ts (79%) rename packages/{clerk-js/src/ui => ui/src}/utils/sleep.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/utils/timeAgo.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/utils/truncateTextWithEndVisible.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/utils/useFormControl.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/utils/usernameUtils.ts (100%) rename packages/{clerk-js/src/ui => ui/src}/utils/web3CallbackErrorHandler.ts (100%) create mode 100644 packages/ui/tsconfig.json create mode 100644 packages/ui/tsdown.config.mts diff --git a/packages/clerk-js/package.json b/packages/clerk-js/package.json index 1096be1155f..2a136e1f231 100644 --- a/packages/clerk-js/package.json +++ b/packages/clerk-js/package.json @@ -63,24 +63,17 @@ "@base-org/account": "2.0.1", "@clerk/localizations": "workspace:^", "@clerk/shared": "workspace:^", + "@clerk/ui": "workspace:^", "@coinbase/wallet-sdk": "4.3.0", - "@emotion/cache": "11.11.0", - "@emotion/react": "11.11.1", - "@floating-ui/react": "0.27.12", - "@floating-ui/react-dom": "^2.1.3", - "@formkit/auto-animate": "^0.8.2", "@stripe/stripe-js": "5.6.0", "@swc/helpers": "^0.5.17", "@zxcvbn-ts/core": "3.0.4", "@zxcvbn-ts/language-common": "3.0.4", "alien-signals": "2.0.6", "browser-tabs-lock": "1.3.0", - "copy-to-clipboard": "3.3.3", "core-js": "3.41.0", "crypto-js": "^4.2.0", "dequal": "2.0.3", - "input-otp": "1.4.2", - "qrcode.react": "4.2.0", "regenerator-runtime": "0.14.1", "swr": "2.3.4" }, diff --git a/packages/clerk-js/src/core/clerk.ts b/packages/clerk-js/src/core/clerk.ts index d3e74295a09..fb2c8b9a431 100644 --- a/packages/clerk-js/src/core/clerk.ts +++ b/packages/clerk-js/src/core/clerk.ts @@ -9,6 +9,17 @@ import { isClerkAPIResponseError, isClerkRuntimeError, } from '@clerk/shared/error'; +import { + canViewOrManageAPIKeys, + disabledAllBillingFeatures, + disabledAPIKeysFeature, + disabledOrganizationsFeature, + isSignedInAndSingleSessionModeEnabled, + noOrganizationExists, + noUserExists, +} from '@clerk/shared/internal/clerk-js/componentGuards'; +import { ERROR_CODES } from '@clerk/shared/internal/clerk-js/constants'; +import { warnings } from '@clerk/shared/internal/clerk-js/warnings'; import { parsePublishableKey } from '@clerk/shared/keys'; import { logger } from '@clerk/shared/logger'; import { CLERK_NETLIFY_CACHE_BUST_PARAM } from '@clerk/shared/netlifyCacheHandler'; @@ -94,21 +105,17 @@ import type { } from '@clerk/shared/types'; import { addClerkPrefix, isAbsoluteUrl, stripScheme } from '@clerk/shared/url'; import { allSettled, handleValueOrFn, noop } from '@clerk/shared/utils'; +import type { MountComponentRenderer } from '@clerk/ui/internal'; import { debugLogger, initDebugLogger } from '@/utils/debug'; -import type { MountComponentRenderer } from '../ui/Components'; import { ALLOWED_PROTOCOLS, buildURL, - canViewOrManageAPIKeys, completeSignUpFlow, createAllowedRedirectOrigins, createBeforeUnloadTracker, createPageLifecycle, - disabledAllBillingFeatures, - disabledAPIKeysFeature, - disabledOrganizationsFeature, errorThrower, generateSignatureWithBase, generateSignatureWithCoinbaseWallet, @@ -123,10 +130,6 @@ import { isError, isOrganizationId, isRedirectForFAPIInitiatedFlow, - isSignedInAndSingleSessionModeEnabled, - noOrganizationExists, - noUserExists, - processCssLayerNameExtraction, removeClerkQueryParam, requiresUserInput, stripOrigin, @@ -138,7 +141,6 @@ import { memoizeListenerCallback } from '../utils/memoizeStateListenerCallback'; import { RedirectUrls } from '../utils/redirectUrls'; import { AuthCookieService } from './auth/AuthCookieService'; import { CaptchaHeartbeat } from './auth/CaptchaHeartbeat'; -import { CLERK_SATELLITE_URL, CLERK_SUFFIXED_COOKIES, CLERK_SYNCED, ERROR_CODES } from './constants'; import { clerkErrorInitFailed, clerkInvalidSignInUrlFormat, @@ -159,7 +161,6 @@ import { createCheckoutInstance } from './modules/checkout/instance'; import { BaseResource, Client, Environment, Organization, Waitlist } from './resources/internal'; import { getTaskEndpoint, navigateIfTaskExists, warnMissingPendingTaskHandlers } from './sessionTasks'; import { State } from './state'; -import { warnings } from './warnings'; type SetActiveHook = (intent?: 'sign-out') => void | Promise; @@ -2942,16 +2943,9 @@ export class Clerk implements ClerkInterface { }; #initOptions = (options?: ClerkOptions): ClerkOptions => { - const processedOptions = options ? { ...options } : {}; - - // Extract cssLayerName from baseTheme if present and move it to appearance level - if (processedOptions.appearance) { - processedOptions.appearance = processCssLayerNameExtraction(processedOptions.appearance); - } - return { ...defaultOptions, - ...processedOptions, + ...options, allowedRedirectOrigins: createAllowedRedirectOrigins( options?.allowedRedirectOrigins, this.frontendApi, diff --git a/packages/clerk-js/src/core/constants.ts b/packages/clerk-js/src/core/constants.ts index 98cd6bdcce9..685357c9521 100644 --- a/packages/clerk-js/src/core/constants.ts +++ b/packages/clerk-js/src/core/constants.ts @@ -1,57 +1,6 @@ -import type { SignUpModes } from '@clerk/shared/types'; - -// TODO: Do we still have a use for this or can we simply preserve all params? -export const PRESERVED_QUERYSTRING_PARAMS = [ - 'redirect_url', - 'after_sign_in_url', - 'after_sign_up_url', - 'sign_in_force_redirect_url', - 'sign_in_fallback_redirect_url', - 'sign_up_force_redirect_url', - 'sign_up_fallback_redirect_url', -]; - -export const CLERK_MODAL_STATE = '__clerk_modal_state'; -export const CLERK_SYNCED = '__clerk_synced'; -export const CLERK_SUFFIXED_COOKIES = 'suffixed_cookies'; -export const CLERK_SATELLITE_URL = '__clerk_satellite_url'; -export const ERROR_CODES = { - FORM_IDENTIFIER_NOT_FOUND: 'form_identifier_not_found', - FORM_PASSWORD_INCORRECT: 'form_password_incorrect', - FORM_PASSWORD_PWNED: 'form_password_pwned', - INVALID_STRATEGY_FOR_USER: 'strategy_for_user_invalid', - NOT_ALLOWED_TO_SIGN_UP: 'not_allowed_to_sign_up', - OAUTH_ACCESS_DENIED: 'oauth_access_denied', - OAUTH_EMAIL_DOMAIN_RESERVED_BY_SAML: 'oauth_email_domain_reserved_by_saml', - NOT_ALLOWED_ACCESS: 'not_allowed_access', - SAML_USER_ATTRIBUTE_MISSING: 'saml_user_attribute_missing', - USER_LOCKED: 'user_locked', - EXTERNAL_ACCOUNT_NOT_FOUND: 'external_account_not_found', - SIGN_UP_MODE_RESTRICTED: 'sign_up_mode_restricted', - SIGN_UP_MODE_RESTRICTED_WAITLIST: 'sign_up_restricted_waitlist', - ENTERPRISE_SSO_USER_ATTRIBUTE_MISSING: 'enterprise_sso_user_attribute_missing', - ENTERPRISE_SSO_EMAIL_ADDRESS_DOMAIN_MISMATCH: 'enterprise_sso_email_address_domain_mismatch', - ENTERPRISE_SSO_HOSTED_DOMAIN_MISMATCH: 'enterprise_sso_hosted_domain_mismatch', - SAML_EMAIL_ADDRESS_DOMAIN_MISMATCH: 'saml_email_address_domain_mismatch', - INVITATION_ACCOUNT_NOT_EXISTS: 'invitation_account_not_exists', - ORGANIZATION_MEMBERSHIP_QUOTA_EXCEEDED_FOR_SSO: 'organization_membership_quota_exceeded_for_sso', - CAPTCHA_INVALID: 'captcha_invalid', - FRAUD_DEVICE_BLOCKED: 'device_blocked', - FRAUD_ACTION_BLOCKED: 'action_blocked', - SIGNUP_RATE_LIMIT_EXCEEDED: 'signup_rate_limit_exceeded', - USER_BANNED: 'user_banned', -} as const; - -export const SIGN_IN_INITIAL_VALUE_KEYS = ['email_address', 'phone_number', 'username']; -export const SIGN_UP_INITIAL_VALUE_KEYS = ['email_address', 'phone_number', 'username', 'first_name', 'last_name']; - -export const DEBOUNCE_MS = 350; - -export const SIGN_UP_MODES = { - PUBLIC: 'public', - RESTRICTED: 'restricted', - WAITLIST: 'waitlist', -} satisfies Record; - -// This is the currently supported version of the Frontend API -export const SUPPORTED_FAPI_VERSION = '2025-04-10'; +/** + * Re-exporting constants from @clerk/shared to avoid refactoring all imports. + * The constants have been moved to @clerk/shared/internal/clerk-js/constants + * to make them available across all Clerk packages. + */ +export * from '@clerk/shared/internal/clerk-js'; diff --git a/packages/clerk-js/src/core/errors.ts b/packages/clerk-js/src/core/errors.ts index 3a589781565..45005bff61e 100644 --- a/packages/clerk-js/src/core/errors.ts +++ b/packages/clerk-js/src/core/errors.ts @@ -1,129 +1 @@ -const errorPrefix = 'ClerkJS:'; - -/** - * Used to log a warning when a Clerk feature is used in an unsupported environment. - * (Development Only) - * This is a warning and not an error because the application will still work, but the feature will not be available. - * - * @param strategy The strategy that is not supported in the current environment. - * @returns void - */ -export function clerkUnsupportedEnvironmentWarning(strategy: string) { - console.warn(`${errorPrefix} ${strategy} is not supported in this environment.`); -} - -export function clerkNetworkError(url: string, e: Error): never { - throw new Error(`${errorPrefix} Network error at "${url}" - ${e}. Please try again.`); -} - -export function clerkErrorInitFailed(): never { - throw new Error(`${errorPrefix} Something went wrong initializing Clerk.`); -} - -export function clerkErrorDevInitFailed(msg = ''): never { - throw new Error(`${errorPrefix} Something went wrong initializing Clerk in development mode.${msg && ` ${msg}`}`); -} - -export function clerkErrorPathRouterMissingPath(componentName: string): never { - throw new Error( - `${errorPrefix} Missing path option. The ${componentName} component was mounted with path routing so you need to specify the path where the component is mounted on e.g. path="/sign-in".`, - ); -} - -export function clerkCoreErrorContextProviderNotFound(providerName: string): never { - throw new Error(`${errorPrefix} You must wrap your application in a <${providerName}> component.`); -} - -export function clerkCoreErrorNoClerkSingleton(): never { - throw new Error(`${errorPrefix} Clerk is undefined`); -} - -export function clerkUIErrorDOMElementNotFound(): never { - throw new Error(`${errorPrefix} The target element is empty. Provide a valid DOM element.`); -} - -export function clerkMissingFapiClientInResources(): never { - throw new Error(`${errorPrefix} Missing FAPI client in resources.`); -} - -export function clerkOAuthCallbackDidNotCompleteSignInSignUp(type: 'sign in' | 'sign up'): never { - throw new Error( - `${errorPrefix} Something went wrong initializing Clerk during the ${type} flow. Please contact support.`, - ); -} - -export function clerkVerifyEmailAddressCalledBeforeCreate(type: 'SignIn' | 'SignUp'): never { - throw new Error(`${errorPrefix} You need to start a ${type} flow by calling ${type}.create() first.`); -} - -export function clerkInvalidStrategy(functionaName: string, strategy: string): never { - throw new Error(`${errorPrefix} Strategy "${strategy}" is not a valid strategy for ${functionaName}.`); -} - -export function clerkVerifyWeb3WalletCalledBeforeCreate(type: 'SignIn' | 'SignUp'): never { - throw new Error( - `${errorPrefix} You need to start a ${type} flow by calling ${type}.create({ identifier: 'your web3 wallet address' }) first`, - ); -} - -export function clerkVerifyPasskeyCalledBeforeCreate(): never { - throw new Error( - `${errorPrefix} You need to start a SignIn flow by calling SignIn.create({ strategy: 'passkey' }) first`, - ); -} - -export function clerkMissingOptionError(name = ''): never { - throw new Error(`${errorPrefix} Missing '${name}' option`); -} - -export function clerkInvalidFAPIResponse(status: string | null, supportEmail: string): never { - throw new Error( - `${errorPrefix} Response: ${status || 0} not supported yet.\nFor more information contact us at ${supportEmail}`, - ); -} - -export function clerkMissingDevBrowserJwt(): never { - throw new Error(`${errorPrefix} Missing dev browser jwt. Please contact support.`); -} - -export function clerkMissingProxyUrlAndDomain(): never { - throw new Error( - `${errorPrefix} Missing domain and proxyUrl. A satellite application needs to specify a domain or a proxyUrl.`, - ); -} - -export function clerkInvalidSignInUrlOrigin(): never { - throw new Error(`${errorPrefix} The signInUrl needs to be on a different origin than your satellite application.`); -} - -export function clerkInvalidSignInUrlFormat(): never { - throw new Error(`${errorPrefix} The signInUrl needs to have a absolute url format.`); -} - -export function clerkMissingSignInUrlAsSatellite(): never { - throw new Error( - `${errorPrefix} Missing signInUrl. A satellite application needs to specify the signInUrl for development instances.`, - ); -} - -export function clerkRedirectUrlIsMissingScheme(): never { - throw new Error(`${errorPrefix} Invalid redirect_url. A valid http or https url should be used for the redirection.`); -} - -export function clerkFailedToLoadThirdPartyScript(name?: string): never { - throw new Error(`${errorPrefix} Unable to retrieve a third party script${name ? ` ${name}` : ''}.`); -} - -export function clerkInvalidRoutingStrategy(strategy?: string): never { - throw new Error(`${errorPrefix} Invalid routing strategy, path cannot be used in tandem with ${strategy}.`); -} - -export function clerkUnsupportedReloadMethod(className: string): never { - throw new Error(`${errorPrefix} Calling ${className}.reload is not currently supported. Please contact support.`); -} - -export function clerkMissingWebAuthnPublicKeyOptions(name: 'create' | 'get'): never { - throw new Error( - `${errorPrefix} Missing publicKey. When calling 'navigator.credentials.${name}()' it is required to pass a publicKey object.`, - ); -} +export * from '@clerk/shared/internal/clerk-js/errors'; diff --git a/packages/clerk-js/src/core/warnings.ts b/packages/clerk-js/src/core/warnings.ts index 1d001112280..dc18ffaced5 100644 --- a/packages/clerk-js/src/core/warnings.ts +++ b/packages/clerk-js/src/core/warnings.ts @@ -1,63 +1,2 @@ -import type { Serializable } from '@clerk/shared/types'; - -const formatWarning = (msg: string) => { - return `🔒 Clerk:\n${msg.trim()}\n(This notice only appears in development)`; -}; - -const createMessageForDisabledOrganizations = ( - componentName: - | 'OrganizationProfile' - | 'OrganizationSwitcher' - | 'OrganizationList' - | 'CreateOrganization' - | 'TaskChooseOrganization', -) => { - return formatWarning( - `The <${componentName}/> cannot be rendered when the feature is turned off. Visit 'dashboard.clerk.com' to enable the feature. Since the feature is turned off, this is no-op.`, - ); -}; -const createMessageForDisabledBilling = (componentName: 'PricingTable' | 'Checkout' | 'PlanDetails') => { - return formatWarning( - `The <${componentName}/> component cannot be rendered when billing is disabled. Visit 'https://dashboard.clerk.com/last-active?path=billing/settings' to follow the necessary steps to enable billing. Since billing is disabled, this is no-op.`, - ); -}; -const warnings = { - cannotRenderComponentWhenSessionExists: - 'The and components cannot render when a user is already signed in, unless the application allows multiple sessions. Since a user is signed in and this application only allows a single session, Clerk is redirecting to the Home URL instead.', - cannotRenderSignUpComponentWhenSessionExists: - 'The component cannot render when a user is already signed in, unless the application allows multiple sessions. Since a user is signed in and this application only allows a single session, Clerk is redirecting to the value set in `afterSignUp` URL instead.', - cannotRenderSignUpComponentWhenTaskExists: - 'The component cannot render when a user has a pending task, unless the application allows multiple sessions. Since a user is signed in and this application only allows a single session, Clerk is redirecting to the task instead.', - cannotRenderComponentWhenTaskDoesNotExist: - ' cannot render unless a session task is pending. Clerk is redirecting to the value set in `redirectUrlComplete` instead.', - cannotRenderSignInComponentWhenSessionExists: - 'The component cannot render when a user is already signed in, unless the application allows multiple sessions. Since a user is signed in and this application only allows a single session, Clerk is redirecting to the `afterSignIn` URL instead.', - cannotRenderSignInComponentWhenTaskExists: - 'The component cannot render when a user has a pending task, unless the application allows multiple sessions. Since a user is signed in and this application only allows a single session, Clerk is redirecting to the task instead.', - cannotRenderComponentWhenUserDoesNotExist: - ' cannot render unless a user is signed in. Since no user is signed in, this is no-op.', - cannotRenderComponentWhenOrgDoesNotExist: ` cannot render unless an organization is active. Since no organization is currently active, this is no-op.`, - cannotRenderAnyOrganizationComponent: createMessageForDisabledOrganizations, - cannotRenderAnyBillingComponent: createMessageForDisabledBilling, - cannotOpenUserProfile: - 'The UserProfile modal cannot render unless a user is signed in. Since no user is signed in, this is no-op.', - cannotOpenCheckout: - 'The Checkout drawer cannot render unless a user is signed in. Since no user is signed in, this is no-op.', - cannotOpenSignInOrSignUp: - 'The SignIn or SignUp modals do not render when a user is already signed in, unless the application allows multiple sessions. Since a user is signed in and this application only allows a single session, this is no-op.', - cannotRenderAPIKeysComponent: - 'The component cannot be rendered when API keys is disabled. Since API keys is disabled, this is no-op.', - cannotRenderAPIKeysComponentForOrgWhenUnauthorized: - 'The component cannot be rendered for an organization unless a user has the required permissions. Since the user does not have the necessary permissions, this is no-op.', -}; - -type SerializableWarnings = Serializable; - -for (const key of Object.keys(warnings)) { - const item = warnings[key as keyof typeof warnings]; - if (typeof item !== 'function') { - warnings[key as keyof SerializableWarnings] = formatWarning(item); - } -} - -export { warnings }; +// Re-export warnings from shared package +export { warnings } from '@clerk/shared/internal/clerk-js/warnings'; diff --git a/packages/clerk-js/src/ui/localization/defaultEnglishResource.ts b/packages/clerk-js/src/ui/localization/defaultEnglishResource.ts deleted file mode 100644 index 81219b7f1ef..00000000000 --- a/packages/clerk-js/src/ui/localization/defaultEnglishResource.ts +++ /dev/null @@ -1,4 +0,0 @@ -import { enUS } from '@clerk/localizations'; -import type { DeepRequired } from '@clerk/shared/types'; - -export const defaultResource = enUS as DeepRequired; diff --git a/packages/clerk-js/src/utils/index.ts b/packages/clerk-js/src/utils/index.ts index 37bd8d49ff6..0673c6b42df 100644 --- a/packages/clerk-js/src/utils/index.ts +++ b/packages/clerk-js/src/utils/index.ts @@ -2,7 +2,6 @@ export * from './appearance'; export * from './beforeUnloadTracker'; export * from './billing'; export * from './completeSignUpFlow'; -export * from './componentGuards'; export * from './dynamicParamParser'; export * from './email'; export * from './encoders'; @@ -16,7 +15,6 @@ export * from './image'; export * from './instance'; export * from './jwt'; export * from './locale'; -export * from './normalizeRoutingOptions'; export * from './organization'; export * from './pageLifecycle'; export * from './path'; diff --git a/packages/clerk-js/src/utils/queryStateParams.ts b/packages/clerk-js/src/utils/queryStateParams.ts index 3cf8559213e..79b802b04e9 100644 --- a/packages/clerk-js/src/utils/queryStateParams.ts +++ b/packages/clerk-js/src/utils/queryStateParams.ts @@ -1,14 +1,6 @@ import { CLERK_MODAL_STATE } from '../core/constants'; import { encodeB64, getClerkQueryParam } from '../utils'; -export const buildVirtualRouterUrl = ({ base, path }: { base: string; path: string | undefined }) => { - if (!path) { - return base; - } - - return base + path; -}; - export const readStateParam = () => { const urlClerkState = getClerkQueryParam(CLERK_MODAL_STATE) ?? ''; diff --git a/packages/clerk-js/tsconfig.json b/packages/clerk-js/tsconfig.json index 96bcc440b5b..896a6e8665a 100644 --- a/packages/clerk-js/tsconfig.json +++ b/packages/clerk-js/tsconfig.json @@ -24,5 +24,5 @@ "@/*": ["./src/*"] } }, - "include": ["src", "vitest.config.mts", "vitest.setup.mts"] + "include": ["src", "vitest.config.mts", "vitest.setup.mts", "../shared/internal/clerk-js/componentGuards.ts"] } diff --git a/packages/shared/package.json b/packages/shared/package.json index cd1f496432a..6f4123c4270 100644 --- a/packages/shared/package.json +++ b/packages/shared/package.json @@ -80,6 +80,16 @@ "default": "./dist/types/index.js" } }, + "./internal/clerk-js/*": { + "import": { + "types": "./dist/runtime/internal/clerk-js/*.d.mts", + "default": "./dist/runtime/internal/clerk-js/*.mjs" + }, + "require": { + "types": "./dist/runtime/internal/clerk-js/*.d.ts", + "default": "./dist/runtime/internal/clerk-js/*.js" + } + }, "./package.json": "./package.json" }, "files": [ diff --git a/packages/clerk-js/src/utils/componentGuards.ts b/packages/shared/src/internal/clerk-js/componentGuards.ts similarity index 100% rename from packages/clerk-js/src/utils/componentGuards.ts rename to packages/shared/src/internal/clerk-js/componentGuards.ts diff --git a/packages/shared/src/internal/clerk-js/constants.ts b/packages/shared/src/internal/clerk-js/constants.ts new file mode 100644 index 00000000000..7c4f5254150 --- /dev/null +++ b/packages/shared/src/internal/clerk-js/constants.ts @@ -0,0 +1,57 @@ +import type { SignUpModes } from '../../types'; + +// TODO: Do we still have a use for this or can we simply preserve all params? +export const PRESERVED_QUERYSTRING_PARAMS = [ + 'redirect_url', + 'after_sign_in_url', + 'after_sign_up_url', + 'sign_in_force_redirect_url', + 'sign_in_fallback_redirect_url', + 'sign_up_force_redirect_url', + 'sign_up_fallback_redirect_url', +]; + +export const CLERK_MODAL_STATE = '__clerk_modal_state'; +export const CLERK_SYNCED = '__clerk_synced'; +export const CLERK_SUFFIXED_COOKIES = 'suffixed_cookies'; +export const CLERK_SATELLITE_URL = '__clerk_satellite_url'; +export const ERROR_CODES = { + FORM_IDENTIFIER_NOT_FOUND: 'form_identifier_not_found', + FORM_PASSWORD_INCORRECT: 'form_password_incorrect', + FORM_PASSWORD_PWNED: 'form_password_pwned', + INVALID_STRATEGY_FOR_USER: 'strategy_for_user_invalid', + NOT_ALLOWED_TO_SIGN_UP: 'not_allowed_to_sign_up', + OAUTH_ACCESS_DENIED: 'oauth_access_denied', + OAUTH_EMAIL_DOMAIN_RESERVED_BY_SAML: 'oauth_email_domain_reserved_by_saml', + NOT_ALLOWED_ACCESS: 'not_allowed_access', + SAML_USER_ATTRIBUTE_MISSING: 'saml_user_attribute_missing', + USER_LOCKED: 'user_locked', + EXTERNAL_ACCOUNT_NOT_FOUND: 'external_account_not_found', + SIGN_UP_MODE_RESTRICTED: 'sign_up_mode_restricted', + SIGN_UP_MODE_RESTRICTED_WAITLIST: 'sign_up_restricted_waitlist', + ENTERPRISE_SSO_USER_ATTRIBUTE_MISSING: 'enterprise_sso_user_attribute_missing', + ENTERPRISE_SSO_EMAIL_ADDRESS_DOMAIN_MISMATCH: 'enterprise_sso_email_address_domain_mismatch', + ENTERPRISE_SSO_HOSTED_DOMAIN_MISMATCH: 'enterprise_sso_hosted_domain_mismatch', + SAML_EMAIL_ADDRESS_DOMAIN_MISMATCH: 'saml_email_address_domain_mismatch', + INVITATION_ACCOUNT_NOT_EXISTS: 'invitation_account_not_exists', + ORGANIZATION_MEMBERSHIP_QUOTA_EXCEEDED_FOR_SSO: 'organization_membership_quota_exceeded_for_sso', + CAPTCHA_INVALID: 'captcha_invalid', + FRAUD_DEVICE_BLOCKED: 'device_blocked', + FRAUD_ACTION_BLOCKED: 'action_blocked', + SIGNUP_RATE_LIMIT_EXCEEDED: 'signup_rate_limit_exceeded', + USER_BANNED: 'user_banned', +} as const; + +export const SIGN_IN_INITIAL_VALUE_KEYS = ['email_address', 'phone_number', 'username']; +export const SIGN_UP_INITIAL_VALUE_KEYS = ['email_address', 'phone_number', 'username', 'first_name', 'last_name']; + +export const DEBOUNCE_MS = 350; + +export const SIGN_UP_MODES = { + PUBLIC: 'public', + RESTRICTED: 'restricted', + WAITLIST: 'waitlist', +} satisfies Record; + +// This is the currently supported version of the Frontend API +export const SUPPORTED_FAPI_VERSION = '2025-04-10'; diff --git a/packages/shared/src/internal/clerk-js/dynamicParamParser.ts b/packages/shared/src/internal/clerk-js/dynamicParamParser.ts new file mode 100644 index 00000000000..9f254312d9e --- /dev/null +++ b/packages/shared/src/internal/clerk-js/dynamicParamParser.ts @@ -0,0 +1,14 @@ +export const createDynamicParamParser = + ({ regex }: { regex: RegExp }) => + >({ urlWithParam, entity }: { urlWithParam: string; entity: T }) => { + const match = regex.exec(urlWithParam); + + if (match) { + const key = match[1]; + if (key in entity) { + const value = entity[key] as string; + return urlWithParam.replace(match[0], value); + } + } + return urlWithParam; + }; diff --git a/packages/shared/src/internal/clerk-js/errors.ts b/packages/shared/src/internal/clerk-js/errors.ts new file mode 100644 index 00000000000..b928460e43f --- /dev/null +++ b/packages/shared/src/internal/clerk-js/errors.ts @@ -0,0 +1,206 @@ +const errorPrefix = 'ClerkJS:'; + +/** + * + */ +export function clerkErrorPathRouterMissingPath(componentName: string): never { + throw new Error( + `${errorPrefix} Missing path option. The ${componentName} component was mounted with path routing so you need to specify the path where the component is mounted on e.g. path="/sign-in".`, + ); +} + +/** + * + */ +export function clerkInvalidRoutingStrategy(strategy?: string): never { + throw new Error(`${errorPrefix} Invalid routing strategy, path cannot be used in tandem with ${strategy}.`); +} + +/** + * + */ +export function clerkCoreErrorNoClerkSingleton(): never { + throw new Error( + `${errorPrefix} Clerk instance not found. Make sure Clerk is initialized before using any Clerk components.`, + ); +} + +/** + * + */ +export function clerkCoreErrorContextProviderNotFound(providerName: string): never { + throw new Error(`${errorPrefix} ${providerName} not found. Make sure you wrap your app with <${providerName}>.`); +} + +/** + * + */ +export function clerkUIErrorDOMElementNotFound(): never { + throw new Error(`${errorPrefix} The target element is empty. Provide a valid DOM element.`); +} + +/** + * Used to log a warning when a Clerk feature is used in an unsupported environment. + * (Development Only) + * This is a warning and not an error because the application will still work, but the feature will not be available. + * + * @param strategy - The strategy that is not supported in the current environment. + * @returns void + */ +export function clerkUnsupportedEnvironmentWarning(strategy: string) { + console.warn(`${errorPrefix} ${strategy} is not supported in this environment.`); +} + +/** + * + */ +export function clerkNetworkError(url: string, e: Error): never { + throw new Error(`${errorPrefix} Network error at "${url}" - ${e}. Please try again.`); +} + +/** + * + */ +export function clerkErrorInitFailed(): never { + throw new Error(`${errorPrefix} Something went wrong initializing Clerk.`); +} + +/** + * + */ +export function clerkErrorDevInitFailed(msg = ''): never { + throw new Error(`${errorPrefix} Something went wrong initializing Clerk in development mode.${msg && ` ${msg}`}`); +} + +/** + * + */ +export function clerkMissingFapiClientInResources(): never { + throw new Error(`${errorPrefix} Missing FAPI client in resources.`); +} + +/** + * + */ +export function clerkOAuthCallbackDidNotCompleteSignInSignUp(type: 'sign in' | 'sign up'): never { + throw new Error( + `${errorPrefix} Something went wrong initializing Clerk during the ${type} flow. Please contact support.`, + ); +} + +/** + * + */ +export function clerkVerifyEmailAddressCalledBeforeCreate(type: 'SignIn' | 'SignUp'): never { + throw new Error(`${errorPrefix} You need to start a ${type} flow by calling ${type}.create() first.`); +} + +/** + * + */ +export function clerkInvalidStrategy(functionaName: string, strategy: string): never { + throw new Error(`${errorPrefix} Strategy "${strategy}" is not a valid strategy for ${functionaName}.`); +} + +/** + * + */ +export function clerkVerifyWeb3WalletCalledBeforeCreate(type: 'SignIn' | 'SignUp'): never { + throw new Error( + `${errorPrefix} You need to start a ${type} flow by calling ${type}.create({ identifier: 'your web3 wallet address' }) first`, + ); +} + +/** + * + */ +export function clerkVerifyPasskeyCalledBeforeCreate(): never { + throw new Error( + `${errorPrefix} You need to start a SignIn flow by calling SignIn.create({ strategy: 'passkey' }) first`, + ); +} + +/** + * + */ +export function clerkMissingOptionError(name = ''): never { + throw new Error(`${errorPrefix} Missing '${name}' option`); +} + +/** + * + */ +export function clerkInvalidFAPIResponse(status: string | null, supportEmail: string): never { + throw new Error( + `${errorPrefix} Response: ${status || 0} not supported yet.\nFor more information contact us at ${supportEmail}`, + ); +} + +/** + * + */ +export function clerkMissingDevBrowserJwt(): never { + throw new Error(`${errorPrefix} Missing dev browser jwt. Please contact support.`); +} + +/** + * + */ +export function clerkMissingProxyUrlAndDomain(): never { + throw new Error( + `${errorPrefix} Missing domain and proxyUrl. A satellite application needs to specify a domain or a proxyUrl.`, + ); +} + +/** + * + */ +export function clerkInvalidSignInUrlOrigin(): never { + throw new Error(`${errorPrefix} The signInUrl needs to be on a different origin than your satellite application.`); +} + +/** + * + */ +export function clerkInvalidSignInUrlFormat(): never { + throw new Error(`${errorPrefix} The signInUrl needs to have a absolute url format.`); +} + +/** + * + */ +export function clerkMissingSignInUrlAsSatellite(): never { + throw new Error( + `${errorPrefix} Missing signInUrl. A satellite application needs to specify the signInUrl for development instances.`, + ); +} + +/** + * + */ +export function clerkRedirectUrlIsMissingScheme(): never { + throw new Error(`${errorPrefix} Invalid redirect_url. A valid http or https url should be used for the redirection.`); +} + +/** + * + */ +export function clerkFailedToLoadThirdPartyScript(name?: string): never { + throw new Error(`${errorPrefix} Unable to retrieve a third party script${name ? ` ${name}` : ''}.`); +} + +/** + * + */ +export function clerkUnsupportedReloadMethod(className: string): never { + throw new Error(`${errorPrefix} Calling ${className}.reload is not currently supported. Please contact support.`); +} + +/** + * + */ +export function clerkMissingWebAuthnPublicKeyOptions(name: 'create' | 'get'): never { + throw new Error( + `${errorPrefix} Missing publicKey. When calling 'navigator.credentials.${name}()' it is required to pass a publicKey object.`, + ); +} diff --git a/packages/shared/src/internal/clerk-js/index.ts b/packages/shared/src/internal/clerk-js/index.ts new file mode 100644 index 00000000000..e69de29bb2d diff --git a/packages/shared/src/internal/clerk-js/warnings.ts b/packages/shared/src/internal/clerk-js/warnings.ts new file mode 100644 index 00000000000..1d001112280 --- /dev/null +++ b/packages/shared/src/internal/clerk-js/warnings.ts @@ -0,0 +1,63 @@ +import type { Serializable } from '@clerk/shared/types'; + +const formatWarning = (msg: string) => { + return `🔒 Clerk:\n${msg.trim()}\n(This notice only appears in development)`; +}; + +const createMessageForDisabledOrganizations = ( + componentName: + | 'OrganizationProfile' + | 'OrganizationSwitcher' + | 'OrganizationList' + | 'CreateOrganization' + | 'TaskChooseOrganization', +) => { + return formatWarning( + `The <${componentName}/> cannot be rendered when the feature is turned off. Visit 'dashboard.clerk.com' to enable the feature. Since the feature is turned off, this is no-op.`, + ); +}; +const createMessageForDisabledBilling = (componentName: 'PricingTable' | 'Checkout' | 'PlanDetails') => { + return formatWarning( + `The <${componentName}/> component cannot be rendered when billing is disabled. Visit 'https://dashboard.clerk.com/last-active?path=billing/settings' to follow the necessary steps to enable billing. Since billing is disabled, this is no-op.`, + ); +}; +const warnings = { + cannotRenderComponentWhenSessionExists: + 'The and components cannot render when a user is already signed in, unless the application allows multiple sessions. Since a user is signed in and this application only allows a single session, Clerk is redirecting to the Home URL instead.', + cannotRenderSignUpComponentWhenSessionExists: + 'The component cannot render when a user is already signed in, unless the application allows multiple sessions. Since a user is signed in and this application only allows a single session, Clerk is redirecting to the value set in `afterSignUp` URL instead.', + cannotRenderSignUpComponentWhenTaskExists: + 'The component cannot render when a user has a pending task, unless the application allows multiple sessions. Since a user is signed in and this application only allows a single session, Clerk is redirecting to the task instead.', + cannotRenderComponentWhenTaskDoesNotExist: + ' cannot render unless a session task is pending. Clerk is redirecting to the value set in `redirectUrlComplete` instead.', + cannotRenderSignInComponentWhenSessionExists: + 'The component cannot render when a user is already signed in, unless the application allows multiple sessions. Since a user is signed in and this application only allows a single session, Clerk is redirecting to the `afterSignIn` URL instead.', + cannotRenderSignInComponentWhenTaskExists: + 'The component cannot render when a user has a pending task, unless the application allows multiple sessions. Since a user is signed in and this application only allows a single session, Clerk is redirecting to the task instead.', + cannotRenderComponentWhenUserDoesNotExist: + ' cannot render unless a user is signed in. Since no user is signed in, this is no-op.', + cannotRenderComponentWhenOrgDoesNotExist: ` cannot render unless an organization is active. Since no organization is currently active, this is no-op.`, + cannotRenderAnyOrganizationComponent: createMessageForDisabledOrganizations, + cannotRenderAnyBillingComponent: createMessageForDisabledBilling, + cannotOpenUserProfile: + 'The UserProfile modal cannot render unless a user is signed in. Since no user is signed in, this is no-op.', + cannotOpenCheckout: + 'The Checkout drawer cannot render unless a user is signed in. Since no user is signed in, this is no-op.', + cannotOpenSignInOrSignUp: + 'The SignIn or SignUp modals do not render when a user is already signed in, unless the application allows multiple sessions. Since a user is signed in and this application only allows a single session, this is no-op.', + cannotRenderAPIKeysComponent: + 'The component cannot be rendered when API keys is disabled. Since API keys is disabled, this is no-op.', + cannotRenderAPIKeysComponentForOrgWhenUnauthorized: + 'The component cannot be rendered for an organization unless a user has the required permissions. Since the user does not have the necessary permissions, this is no-op.', +}; + +type SerializableWarnings = Serializable; + +for (const key of Object.keys(warnings)) { + const item = warnings[key as keyof typeof warnings]; + if (typeof item !== 'function') { + warnings[key as keyof SerializableWarnings] = formatWarning(item); + } +} + +export { warnings }; diff --git a/packages/shared/tsdown.config.mts b/packages/shared/tsdown.config.mts index 6a559c60060..1a5167baf9e 100644 --- a/packages/shared/tsdown.config.mts +++ b/packages/shared/tsdown.config.mts @@ -41,6 +41,7 @@ export default defineConfig(({ watch }) => { './src/workerTimers/index.ts', './src/types/index.ts', './src/dom/*.ts', + './src/internal/clerk-js/*.ts', '!./src/**/*.{test,spec}.{ts,tsx}', ], outDir: './dist/runtime', diff --git a/packages/ui/package.json b/packages/ui/package.json new file mode 100644 index 00000000000..116f4f0a3a0 --- /dev/null +++ b/packages/ui/package.json @@ -0,0 +1,80 @@ +{ + "name": "@clerk/ui", + "version": "0.0.1", + "description": "Internal package that contains the UI components for the Clerk frontend SDKs", + "repository": { + "type": "git", + "url": "git+https://github.com/clerk/javascript.git", + "directory": "packages/ui" + }, + "license": "MIT", + "author": "Clerk", + "sideEffects": false, + "type": "module", + "exports": { + "./*": { + "import": { + "types": "./dist/*.d.mts", + "default": "./dist/*.mjs" + }, + "require": { + "types": "./dist/*.d.ts", + "default": "./dist/*.js" + } + }, + "./package.json": "./package.json" + }, + "files": [ + "dist" + ], + "scripts": { + "build": "tsdown", + "clean": "rimraf ./dist", + "dev": "tsdown --watch src", + "format": "node ../../scripts/format-package.mjs", + "format:check": "node ../../scripts/format-package.mjs --check", + "lint": "eslint src", + "lint:attw": "attw --pack . --profile node16", + "lint:publint": "publint", + "test": "vitest", + "test:ci": "vitest --maxWorkers=70%", + "test:coverage": "vitest --collectCoverage && open coverage/lcov-report/index.html" + }, + "dependencies": { + "@clerk/shared": "workspace:^", + "@emotion/cache": "11.11.0", + "@emotion/react": "11.11.1", + "@floating-ui/react": "0.27.12", + "@formkit/auto-animate": "^0.8.2", + "copy-to-clipboard": "3.3.3", + "csstype": "3.1.3", + "dequal": "2.0.3", + "input-otp": "1.4.2", + "qrcode.react": "4.2.0", + "swr": "2.3.4" + }, + "devDependencies": { + "@stripe/react-stripe-js": "3.1.1", + "@stripe/stripe-js": "5.6.0", + "cross-fetch": "^4.1.0", + "rolldown": "catalog:repo" + }, + "peerDependencies": { + "react": "catalog:peer-react", + "react-dom": "catalog:peer-react" + }, + "peerDependenciesMeta": { + "react": { + "optional": true + }, + "react-dom": { + "optional": true + } + }, + "engines": { + "node": ">=20.9.0" + }, + "publishConfig": { + "access": "public" + } +} diff --git a/packages/clerk-js/src/ui/Components.tsx b/packages/ui/src/Components.tsx similarity index 96% rename from packages/clerk-js/src/ui/Components.tsx rename to packages/ui/src/Components.tsx index 148736665ce..f79af700660 100644 --- a/packages/clerk-js/src/ui/Components.tsx +++ b/packages/ui/src/Components.tsx @@ -1,3 +1,4 @@ +import { clerkUIErrorDOMElementNotFound } from '@clerk/shared/internal/clerk-js'; import type { __internal_CheckoutProps, __internal_PlanDetailsProps, @@ -18,10 +19,8 @@ import type { import { createDeferredPromise } from '@clerk/shared/utils'; import React, { Suspense } from 'react'; -import { clerkUIErrorDOMElementNotFound } from '../core/errors'; -import { buildVirtualRouterUrl } from '../utils'; -import { disambiguateRedirectOptions } from '../utils/disambiguateRedirectOptions'; -import type { AppearanceCascade } from './customizables/parseAppearance'; // NOTE: Using `./hooks` instead of `./hooks/useClerkModalStateParams` will increase the bundle size +import type { AppearanceCascade } from './customizables/parseAppearance'; +// NOTE: Using `./hooks` instead of `./hooks/useClerkModalStateParams` will increase the bundle size import { useClerkModalStateParams } from './hooks/useClerkModalStateParams'; import type { ClerkComponentName } from './lazyModules/components'; import { @@ -47,11 +46,14 @@ import { OrganizationSwitcherPrefetch, } from './lazyModules/providers'; import type { AvailableComponentProps } from './types'; +import { buildVirtualRouterUrl } from './utils/buildVirtualRouterUrl'; +import { disambiguateRedirectOptions } from './utils/disambiguateRedirectOptions'; +import { extractCssLayerNameFromAppearance } from './utils/extractCssLayerNameFromAppearance'; /** * Avoid importing from `@clerk/shared/react` to prevent extra dependencies being added to the bundle. */ -export const useSafeLayoutEffect = typeof window !== 'undefined' ? React.useLayoutEffect : React.useEffect; +const useSafeLayoutEffect = typeof window !== 'undefined' ? React.useLayoutEffect : React.useEffect; const ROOT_ELEMENT_ID = 'clerk-components'; @@ -179,7 +181,13 @@ function assertDOMElement(element: HTMLElement): asserts element { } } -export const mountComponentRenderer = (clerk: Clerk, environment: EnvironmentResource, options: ClerkOptions) => { +export const mountComponentRenderer = (clerk: Clerk, environment: EnvironmentResource, _options: ClerkOptions) => { + const options = { ..._options }; + // Extract cssLayerName from baseTheme if present and move it to appearance level + if (options.appearance) { + options.appearance = extractCssLayerNameFromAppearance(options.appearance); + } + // TODO: Init of components should start // before /env and /client requests let clerkRoot = document.getElementById(ROOT_ELEMENT_ID); diff --git a/packages/clerk-js/src/ui/baseTheme.ts b/packages/ui/src/baseTheme.ts similarity index 100% rename from packages/clerk-js/src/ui/baseTheme.ts rename to packages/ui/src/baseTheme.ts diff --git a/packages/clerk-js/src/ui/common/CalloutWithAction.tsx b/packages/ui/src/common/CalloutWithAction.tsx similarity index 100% rename from packages/clerk-js/src/ui/common/CalloutWithAction.tsx rename to packages/ui/src/common/CalloutWithAction.tsx diff --git a/packages/clerk-js/src/ui/common/ChooseEnterpriseConnectionCard.tsx b/packages/ui/src/common/ChooseEnterpriseConnectionCard.tsx similarity index 100% rename from packages/clerk-js/src/ui/common/ChooseEnterpriseConnectionCard.tsx rename to packages/ui/src/common/ChooseEnterpriseConnectionCard.tsx diff --git a/packages/clerk-js/src/ui/common/CustomPageContentContainer.tsx b/packages/ui/src/common/CustomPageContentContainer.tsx similarity index 100% rename from packages/clerk-js/src/ui/common/CustomPageContentContainer.tsx rename to packages/ui/src/common/CustomPageContentContainer.tsx diff --git a/packages/clerk-js/src/ui/common/DevOnly.tsx b/packages/ui/src/common/DevOnly.tsx similarity index 100% rename from packages/clerk-js/src/ui/common/DevOnly.tsx rename to packages/ui/src/common/DevOnly.tsx diff --git a/packages/clerk-js/src/ui/common/EmailLinkCompleteFlowCard.tsx b/packages/ui/src/common/EmailLinkCompleteFlowCard.tsx similarity index 100% rename from packages/clerk-js/src/ui/common/EmailLinkCompleteFlowCard.tsx rename to packages/ui/src/common/EmailLinkCompleteFlowCard.tsx diff --git a/packages/clerk-js/src/ui/common/EmailLinkStatusCard.tsx b/packages/ui/src/common/EmailLinkStatusCard.tsx similarity index 100% rename from packages/clerk-js/src/ui/common/EmailLinkStatusCard.tsx rename to packages/ui/src/common/EmailLinkStatusCard.tsx diff --git a/packages/clerk-js/src/ui/common/EmailLinkVerify.tsx b/packages/ui/src/common/EmailLinkVerify.tsx similarity index 100% rename from packages/clerk-js/src/ui/common/EmailLinkVerify.tsx rename to packages/ui/src/common/EmailLinkVerify.tsx diff --git a/packages/clerk-js/src/ui/common/Gate.tsx b/packages/ui/src/common/Gate.tsx similarity index 100% rename from packages/clerk-js/src/ui/common/Gate.tsx rename to packages/ui/src/common/Gate.tsx diff --git a/packages/clerk-js/src/ui/common/InfiniteListSpinner.tsx b/packages/ui/src/common/InfiniteListSpinner.tsx similarity index 100% rename from packages/clerk-js/src/ui/common/InfiniteListSpinner.tsx rename to packages/ui/src/common/InfiniteListSpinner.tsx diff --git a/packages/clerk-js/src/ui/common/NotificationCountBadge.tsx b/packages/ui/src/common/NotificationCountBadge.tsx similarity index 100% rename from packages/clerk-js/src/ui/common/NotificationCountBadge.tsx rename to packages/ui/src/common/NotificationCountBadge.tsx diff --git a/packages/clerk-js/src/ui/common/PrintableComponent.tsx b/packages/ui/src/common/PrintableComponent.tsx similarity index 100% rename from packages/clerk-js/src/ui/common/PrintableComponent.tsx rename to packages/ui/src/common/PrintableComponent.tsx diff --git a/packages/clerk-js/src/ui/common/ProviderInitialIcon.tsx b/packages/ui/src/common/ProviderInitialIcon.tsx similarity index 100% rename from packages/clerk-js/src/ui/common/ProviderInitialIcon.tsx rename to packages/ui/src/common/ProviderInitialIcon.tsx diff --git a/packages/clerk-js/src/ui/common/QRCode.tsx b/packages/ui/src/common/QRCode.tsx similarity index 100% rename from packages/clerk-js/src/ui/common/QRCode.tsx rename to packages/ui/src/common/QRCode.tsx diff --git a/packages/clerk-js/src/ui/common/RemoveResourceForm.tsx b/packages/ui/src/common/RemoveResourceForm.tsx similarity index 100% rename from packages/clerk-js/src/ui/common/RemoveResourceForm.tsx rename to packages/ui/src/common/RemoveResourceForm.tsx diff --git a/packages/clerk-js/src/ui/common/SSOCallback.tsx b/packages/ui/src/common/SSOCallback.tsx similarity index 100% rename from packages/clerk-js/src/ui/common/SSOCallback.tsx rename to packages/ui/src/common/SSOCallback.tsx diff --git a/packages/clerk-js/src/ui/common/Wizard.tsx b/packages/ui/src/common/Wizard.tsx similarity index 100% rename from packages/clerk-js/src/ui/common/Wizard.tsx rename to packages/ui/src/common/Wizard.tsx diff --git a/packages/clerk-js/src/ui/common/__tests__/redirects.test.ts b/packages/ui/src/common/__tests__/redirects.test.ts similarity index 100% rename from packages/clerk-js/src/ui/common/__tests__/redirects.test.ts rename to packages/ui/src/common/__tests__/redirects.test.ts diff --git a/packages/clerk-js/src/ui/common/__tests__/verification.test.ts b/packages/ui/src/common/__tests__/verification.test.ts similarity index 100% rename from packages/clerk-js/src/ui/common/__tests__/verification.test.ts rename to packages/ui/src/common/__tests__/verification.test.ts diff --git a/packages/clerk-js/src/ui/common/__tests__/withRedirect.test.tsx b/packages/ui/src/common/__tests__/withRedirect.test.tsx similarity index 100% rename from packages/clerk-js/src/ui/common/__tests__/withRedirect.test.tsx rename to packages/ui/src/common/__tests__/withRedirect.test.tsx diff --git a/packages/clerk-js/src/ui/common/constants.ts b/packages/ui/src/common/constants.ts similarity index 100% rename from packages/clerk-js/src/ui/common/constants.ts rename to packages/ui/src/common/constants.ts diff --git a/packages/clerk-js/src/ui/common/forms.ts b/packages/ui/src/common/forms.ts similarity index 100% rename from packages/clerk-js/src/ui/common/forms.ts rename to packages/ui/src/common/forms.ts diff --git a/packages/clerk-js/src/ui/common/index.ts b/packages/ui/src/common/index.ts similarity index 100% rename from packages/clerk-js/src/ui/common/index.ts rename to packages/ui/src/common/index.ts diff --git a/packages/clerk-js/src/ui/common/organizations/OrganizationPreview.tsx b/packages/ui/src/common/organizations/OrganizationPreview.tsx similarity index 100% rename from packages/clerk-js/src/ui/common/organizations/OrganizationPreview.tsx rename to packages/ui/src/common/organizations/OrganizationPreview.tsx diff --git a/packages/clerk-js/src/ui/common/redirects.ts b/packages/ui/src/common/redirects.ts similarity index 100% rename from packages/clerk-js/src/ui/common/redirects.ts rename to packages/ui/src/common/redirects.ts diff --git a/packages/clerk-js/src/ui/common/verification.ts b/packages/ui/src/common/verification.ts similarity index 100% rename from packages/clerk-js/src/ui/common/verification.ts rename to packages/ui/src/common/verification.ts diff --git a/packages/clerk-js/src/ui/common/withRedirect.tsx b/packages/ui/src/common/withRedirect.tsx similarity index 96% rename from packages/clerk-js/src/ui/common/withRedirect.tsx rename to packages/ui/src/common/withRedirect.tsx index 84b40c60ec0..044e1847637 100644 --- a/packages/clerk-js/src/ui/common/withRedirect.tsx +++ b/packages/ui/src/common/withRedirect.tsx @@ -1,12 +1,11 @@ +import type { ComponentGuard } from '@clerk/shared/internal/clerk-js'; +import { isSignedInAndSingleSessionModeEnabled, warnings } from '@clerk/shared/internal/clerk-js'; import { isDevelopmentFromPublishableKey } from '@clerk/shared/keys'; import { useClerk } from '@clerk/shared/react'; import type { Clerk, ClerkOptions, EnvironmentResource } from '@clerk/shared/types'; import type { ComponentType } from 'react'; import React from 'react'; -import { warnings } from '../../core/warnings'; -import type { ComponentGuard } from '../../utils'; -import { isSignedInAndSingleSessionModeEnabled } from '../../utils'; import { useEnvironment, useOptions, useSignInContext, useSignUpContext } from '../contexts'; import { useRouter } from '../router'; import type { AvailableComponentProps } from '../types'; diff --git a/packages/clerk-js/src/ui/components/ApiKeys/ApiKeys.tsx b/packages/ui/src/components/ApiKeys/ApiKeys.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/ApiKeys/ApiKeys.tsx rename to packages/ui/src/components/ApiKeys/ApiKeys.tsx diff --git a/packages/clerk-js/src/ui/components/ApiKeys/ApiKeysTable.tsx b/packages/ui/src/components/ApiKeys/ApiKeysTable.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/ApiKeys/ApiKeysTable.tsx rename to packages/ui/src/components/ApiKeys/ApiKeysTable.tsx diff --git a/packages/clerk-js/src/ui/components/ApiKeys/CreateApiKeyForm.tsx b/packages/ui/src/components/ApiKeys/CreateApiKeyForm.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/ApiKeys/CreateApiKeyForm.tsx rename to packages/ui/src/components/ApiKeys/CreateApiKeyForm.tsx diff --git a/packages/clerk-js/src/ui/components/ApiKeys/RevokeAPIKeyConfirmationModal.tsx b/packages/ui/src/components/ApiKeys/RevokeAPIKeyConfirmationModal.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/ApiKeys/RevokeAPIKeyConfirmationModal.tsx rename to packages/ui/src/components/ApiKeys/RevokeAPIKeyConfirmationModal.tsx diff --git a/packages/clerk-js/src/ui/components/ApiKeys/useApiKeys.ts b/packages/ui/src/components/ApiKeys/useApiKeys.ts similarity index 100% rename from packages/clerk-js/src/ui/components/ApiKeys/useApiKeys.ts rename to packages/ui/src/components/ApiKeys/useApiKeys.ts diff --git a/packages/clerk-js/src/ui/components/BlankCaptchaModal/index.tsx b/packages/ui/src/components/BlankCaptchaModal/index.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/BlankCaptchaModal/index.tsx rename to packages/ui/src/components/BlankCaptchaModal/index.tsx diff --git a/packages/clerk-js/src/ui/components/Checkout/CheckoutComplete.tsx b/packages/ui/src/components/Checkout/CheckoutComplete.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/Checkout/CheckoutComplete.tsx rename to packages/ui/src/components/Checkout/CheckoutComplete.tsx diff --git a/packages/clerk-js/src/ui/components/Checkout/CheckoutForm.tsx b/packages/ui/src/components/Checkout/CheckoutForm.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/Checkout/CheckoutForm.tsx rename to packages/ui/src/components/Checkout/CheckoutForm.tsx diff --git a/packages/clerk-js/src/ui/components/Checkout/CheckoutPage.tsx b/packages/ui/src/components/Checkout/CheckoutPage.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/Checkout/CheckoutPage.tsx rename to packages/ui/src/components/Checkout/CheckoutPage.tsx diff --git a/packages/clerk-js/src/ui/components/Checkout/__tests__/Checkout.test.tsx b/packages/ui/src/components/Checkout/__tests__/Checkout.test.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/Checkout/__tests__/Checkout.test.tsx rename to packages/ui/src/components/Checkout/__tests__/Checkout.test.tsx diff --git a/packages/clerk-js/src/ui/components/Checkout/index.tsx b/packages/ui/src/components/Checkout/index.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/Checkout/index.tsx rename to packages/ui/src/components/Checkout/index.tsx diff --git a/packages/clerk-js/src/ui/components/Checkout/parts.tsx b/packages/ui/src/components/Checkout/parts.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/Checkout/parts.tsx rename to packages/ui/src/components/Checkout/parts.tsx diff --git a/packages/clerk-js/src/ui/components/CreateOrganization/CreateOrganization.tsx b/packages/ui/src/components/CreateOrganization/CreateOrganization.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/CreateOrganization/CreateOrganization.tsx rename to packages/ui/src/components/CreateOrganization/CreateOrganization.tsx diff --git a/packages/clerk-js/src/ui/components/CreateOrganization/CreateOrganizationForm.tsx b/packages/ui/src/components/CreateOrganization/CreateOrganizationForm.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/CreateOrganization/CreateOrganizationForm.tsx rename to packages/ui/src/components/CreateOrganization/CreateOrganizationForm.tsx diff --git a/packages/clerk-js/src/ui/components/CreateOrganization/CreateOrganizationPage.tsx b/packages/ui/src/components/CreateOrganization/CreateOrganizationPage.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/CreateOrganization/CreateOrganizationPage.tsx rename to packages/ui/src/components/CreateOrganization/CreateOrganizationPage.tsx diff --git a/packages/clerk-js/src/ui/components/CreateOrganization/__tests__/CreateOrganization.test.tsx b/packages/ui/src/components/CreateOrganization/__tests__/CreateOrganization.test.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/CreateOrganization/__tests__/CreateOrganization.test.tsx rename to packages/ui/src/components/CreateOrganization/__tests__/CreateOrganization.test.tsx diff --git a/packages/clerk-js/src/ui/components/CreateOrganization/index.tsx b/packages/ui/src/components/CreateOrganization/index.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/CreateOrganization/index.tsx rename to packages/ui/src/components/CreateOrganization/index.tsx diff --git a/packages/clerk-js/src/ui/components/GoogleOneTap/index.tsx b/packages/ui/src/components/GoogleOneTap/index.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/GoogleOneTap/index.tsx rename to packages/ui/src/components/GoogleOneTap/index.tsx diff --git a/packages/clerk-js/src/ui/components/GoogleOneTap/one-tap-start.tsx b/packages/ui/src/components/GoogleOneTap/one-tap-start.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/GoogleOneTap/one-tap-start.tsx rename to packages/ui/src/components/GoogleOneTap/one-tap-start.tsx diff --git a/packages/clerk-js/src/ui/components/ImpersonationFab/index.tsx b/packages/ui/src/components/ImpersonationFab/index.tsx similarity index 99% rename from packages/clerk-js/src/ui/components/ImpersonationFab/index.tsx rename to packages/ui/src/components/ImpersonationFab/index.tsx index 7596010d4e4..a7a13fb3022 100644 --- a/packages/clerk-js/src/ui/components/ImpersonationFab/index.tsx +++ b/packages/ui/src/components/ImpersonationFab/index.tsx @@ -3,7 +3,6 @@ import type { SignedInSessionResource } from '@clerk/shared/types'; import type { PointerEventHandler } from 'react'; import React, { useEffect, useRef } from 'react'; -import { getFullName, getIdentifier } from '../../../utils/user'; import { useSignOutContext, withCoreUserGuard } from '../../contexts'; import type { LocalizationKey } from '../../customizables'; import { @@ -22,6 +21,7 @@ import { useMultipleSessions } from '../../hooks/useMultipleSessions'; import { Eye } from '../../icons'; import type { PropsOfComponent } from '../../styledSystem'; import { InternalThemeProvider, mqu } from '../../styledSystem'; +import { getFullName, getIdentifier } from '../../utils/user'; type EyeCircleProps = PropsOfComponent & { width: string; diff --git a/packages/clerk-js/src/ui/components/KeylessPrompt/ClerkLogoIcon.tsx b/packages/ui/src/components/KeylessPrompt/ClerkLogoIcon.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/KeylessPrompt/ClerkLogoIcon.tsx rename to packages/ui/src/components/KeylessPrompt/ClerkLogoIcon.tsx diff --git a/packages/clerk-js/src/ui/components/KeylessPrompt/KeySlashIcon.tsx b/packages/ui/src/components/KeylessPrompt/KeySlashIcon.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/KeylessPrompt/KeySlashIcon.tsx rename to packages/ui/src/components/KeylessPrompt/KeySlashIcon.tsx diff --git a/packages/clerk-js/src/ui/components/KeylessPrompt/index.tsx b/packages/ui/src/components/KeylessPrompt/index.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/KeylessPrompt/index.tsx rename to packages/ui/src/components/KeylessPrompt/index.tsx diff --git a/packages/clerk-js/src/ui/components/KeylessPrompt/use-revalidate-environment.ts b/packages/ui/src/components/KeylessPrompt/use-revalidate-environment.ts similarity index 95% rename from packages/clerk-js/src/ui/components/KeylessPrompt/use-revalidate-environment.ts rename to packages/ui/src/components/KeylessPrompt/use-revalidate-environment.ts index fca17dc5c6f..32959532121 100644 --- a/packages/clerk-js/src/ui/components/KeylessPrompt/use-revalidate-environment.ts +++ b/packages/ui/src/components/KeylessPrompt/use-revalidate-environment.ts @@ -2,7 +2,6 @@ import { useClerk } from '@clerk/shared/react'; import { useEffect, useReducer, useRef } from 'react'; import type { Clerk } from '../../../core/clerk'; -import type { Environment } from '../../../core/resources'; import { useEnvironment } from '../../contexts'; const THROTTLE_DURATION_MS = 10 * 1000; @@ -22,7 +21,7 @@ function useRevalidateEnvironment() { 'focus', async () => { - const environment = (clerk as Clerk).__unstable__environment as Environment | undefined; + const environment = (clerk as Clerk).__unstable__environment; if (!environment) { return; diff --git a/packages/clerk-js/src/ui/components/OAuthConsent/OAuthConsent.tsx b/packages/ui/src/components/OAuthConsent/OAuthConsent.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/OAuthConsent/OAuthConsent.tsx rename to packages/ui/src/components/OAuthConsent/OAuthConsent.tsx diff --git a/packages/clerk-js/src/ui/components/OrganizationList/OrganizationListPage.tsx b/packages/ui/src/components/OrganizationList/OrganizationListPage.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/OrganizationList/OrganizationListPage.tsx rename to packages/ui/src/components/OrganizationList/OrganizationListPage.tsx diff --git a/packages/clerk-js/src/ui/components/OrganizationList/UserInvitationList.tsx b/packages/ui/src/components/OrganizationList/UserInvitationList.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/OrganizationList/UserInvitationList.tsx rename to packages/ui/src/components/OrganizationList/UserInvitationList.tsx diff --git a/packages/clerk-js/src/ui/components/OrganizationList/UserMembershipList.tsx b/packages/ui/src/components/OrganizationList/UserMembershipList.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/OrganizationList/UserMembershipList.tsx rename to packages/ui/src/components/OrganizationList/UserMembershipList.tsx diff --git a/packages/clerk-js/src/ui/components/OrganizationList/UserSuggestionList.tsx b/packages/ui/src/components/OrganizationList/UserSuggestionList.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/OrganizationList/UserSuggestionList.tsx rename to packages/ui/src/components/OrganizationList/UserSuggestionList.tsx diff --git a/packages/clerk-js/src/ui/components/OrganizationList/__tests__/OrganizationList.test.tsx b/packages/ui/src/components/OrganizationList/__tests__/OrganizationList.test.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/OrganizationList/__tests__/OrganizationList.test.tsx rename to packages/ui/src/components/OrganizationList/__tests__/OrganizationList.test.tsx diff --git a/packages/clerk-js/src/ui/components/OrganizationList/index.tsx b/packages/ui/src/components/OrganizationList/index.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/OrganizationList/index.tsx rename to packages/ui/src/components/OrganizationList/index.tsx diff --git a/packages/clerk-js/src/ui/components/OrganizationList/shared.tsx b/packages/ui/src/components/OrganizationList/shared.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/OrganizationList/shared.tsx rename to packages/ui/src/components/OrganizationList/shared.tsx diff --git a/packages/clerk-js/src/ui/components/OrganizationList/utils.ts b/packages/ui/src/components/OrganizationList/utils.ts similarity index 100% rename from packages/clerk-js/src/ui/components/OrganizationList/utils.ts rename to packages/ui/src/components/OrganizationList/utils.ts diff --git a/packages/clerk-js/src/ui/components/OrganizationProfile/ActionConfirmationPage.tsx b/packages/ui/src/components/OrganizationProfile/ActionConfirmationPage.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/OrganizationProfile/ActionConfirmationPage.tsx rename to packages/ui/src/components/OrganizationProfile/ActionConfirmationPage.tsx diff --git a/packages/clerk-js/src/ui/components/OrganizationProfile/ActiveMembersList.tsx b/packages/ui/src/components/OrganizationProfile/ActiveMembersList.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/OrganizationProfile/ActiveMembersList.tsx rename to packages/ui/src/components/OrganizationProfile/ActiveMembersList.tsx diff --git a/packages/clerk-js/src/ui/components/OrganizationProfile/AddDomainForm.tsx b/packages/ui/src/components/OrganizationProfile/AddDomainForm.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/OrganizationProfile/AddDomainForm.tsx rename to packages/ui/src/components/OrganizationProfile/AddDomainForm.tsx diff --git a/packages/clerk-js/src/ui/components/OrganizationProfile/BillingWidget.tsx b/packages/ui/src/components/OrganizationProfile/BillingWidget.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/OrganizationProfile/BillingWidget.tsx rename to packages/ui/src/components/OrganizationProfile/BillingWidget.tsx diff --git a/packages/clerk-js/src/ui/components/OrganizationProfile/DomainList.tsx b/packages/ui/src/components/OrganizationProfile/DomainList.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/OrganizationProfile/DomainList.tsx rename to packages/ui/src/components/OrganizationProfile/DomainList.tsx diff --git a/packages/clerk-js/src/ui/components/OrganizationProfile/EnrollmentBadge.tsx b/packages/ui/src/components/OrganizationProfile/EnrollmentBadge.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/OrganizationProfile/EnrollmentBadge.tsx rename to packages/ui/src/components/OrganizationProfile/EnrollmentBadge.tsx diff --git a/packages/clerk-js/src/ui/components/OrganizationProfile/InviteMembersForm.tsx b/packages/ui/src/components/OrganizationProfile/InviteMembersForm.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/OrganizationProfile/InviteMembersForm.tsx rename to packages/ui/src/components/OrganizationProfile/InviteMembersForm.tsx diff --git a/packages/clerk-js/src/ui/components/OrganizationProfile/InviteMembersScreen.tsx b/packages/ui/src/components/OrganizationProfile/InviteMembersScreen.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/OrganizationProfile/InviteMembersScreen.tsx rename to packages/ui/src/components/OrganizationProfile/InviteMembersScreen.tsx diff --git a/packages/clerk-js/src/ui/components/OrganizationProfile/InvitedMembersList.tsx b/packages/ui/src/components/OrganizationProfile/InvitedMembersList.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/OrganizationProfile/InvitedMembersList.tsx rename to packages/ui/src/components/OrganizationProfile/InvitedMembersList.tsx diff --git a/packages/clerk-js/src/ui/components/OrganizationProfile/MemberListTable.tsx b/packages/ui/src/components/OrganizationProfile/MemberListTable.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/OrganizationProfile/MemberListTable.tsx rename to packages/ui/src/components/OrganizationProfile/MemberListTable.tsx diff --git a/packages/clerk-js/src/ui/components/OrganizationProfile/MembersActions.tsx b/packages/ui/src/components/OrganizationProfile/MembersActions.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/OrganizationProfile/MembersActions.tsx rename to packages/ui/src/components/OrganizationProfile/MembersActions.tsx diff --git a/packages/clerk-js/src/ui/components/OrganizationProfile/MembersSearch.tsx b/packages/ui/src/components/OrganizationProfile/MembersSearch.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/OrganizationProfile/MembersSearch.tsx rename to packages/ui/src/components/OrganizationProfile/MembersSearch.tsx diff --git a/packages/clerk-js/src/ui/components/OrganizationProfile/MembershipWidget.tsx b/packages/ui/src/components/OrganizationProfile/MembershipWidget.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/OrganizationProfile/MembershipWidget.tsx rename to packages/ui/src/components/OrganizationProfile/MembershipWidget.tsx diff --git a/packages/clerk-js/src/ui/components/OrganizationProfile/OrganizationApiKeysPage.tsx b/packages/ui/src/components/OrganizationProfile/OrganizationApiKeysPage.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/OrganizationProfile/OrganizationApiKeysPage.tsx rename to packages/ui/src/components/OrganizationProfile/OrganizationApiKeysPage.tsx diff --git a/packages/clerk-js/src/ui/components/OrganizationProfile/OrganizationBillingPage.tsx b/packages/ui/src/components/OrganizationProfile/OrganizationBillingPage.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/OrganizationProfile/OrganizationBillingPage.tsx rename to packages/ui/src/components/OrganizationProfile/OrganizationBillingPage.tsx diff --git a/packages/clerk-js/src/ui/components/OrganizationProfile/OrganizationGeneralPage.tsx b/packages/ui/src/components/OrganizationProfile/OrganizationGeneralPage.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/OrganizationProfile/OrganizationGeneralPage.tsx rename to packages/ui/src/components/OrganizationProfile/OrganizationGeneralPage.tsx diff --git a/packages/clerk-js/src/ui/components/OrganizationProfile/OrganizationMembers.tsx b/packages/ui/src/components/OrganizationProfile/OrganizationMembers.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/OrganizationProfile/OrganizationMembers.tsx rename to packages/ui/src/components/OrganizationProfile/OrganizationMembers.tsx diff --git a/packages/clerk-js/src/ui/components/OrganizationProfile/OrganizationMembersTabInvitations.tsx b/packages/ui/src/components/OrganizationProfile/OrganizationMembersTabInvitations.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/OrganizationProfile/OrganizationMembersTabInvitations.tsx rename to packages/ui/src/components/OrganizationProfile/OrganizationMembersTabInvitations.tsx diff --git a/packages/clerk-js/src/ui/components/OrganizationProfile/OrganizationMembersTabRequests.tsx b/packages/ui/src/components/OrganizationProfile/OrganizationMembersTabRequests.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/OrganizationProfile/OrganizationMembersTabRequests.tsx rename to packages/ui/src/components/OrganizationProfile/OrganizationMembersTabRequests.tsx diff --git a/packages/clerk-js/src/ui/components/OrganizationProfile/OrganizationPaymentAttemptPage.tsx b/packages/ui/src/components/OrganizationProfile/OrganizationPaymentAttemptPage.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/OrganizationProfile/OrganizationPaymentAttemptPage.tsx rename to packages/ui/src/components/OrganizationProfile/OrganizationPaymentAttemptPage.tsx diff --git a/packages/clerk-js/src/ui/components/OrganizationProfile/OrganizationPlansPage.tsx b/packages/ui/src/components/OrganizationProfile/OrganizationPlansPage.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/OrganizationProfile/OrganizationPlansPage.tsx rename to packages/ui/src/components/OrganizationProfile/OrganizationPlansPage.tsx diff --git a/packages/clerk-js/src/ui/components/OrganizationProfile/OrganizationProfileAvatarUploader.tsx b/packages/ui/src/components/OrganizationProfile/OrganizationProfileAvatarUploader.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/OrganizationProfile/OrganizationProfileAvatarUploader.tsx rename to packages/ui/src/components/OrganizationProfile/OrganizationProfileAvatarUploader.tsx diff --git a/packages/clerk-js/src/ui/components/OrganizationProfile/OrganizationProfileNavbar.tsx b/packages/ui/src/components/OrganizationProfile/OrganizationProfileNavbar.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/OrganizationProfile/OrganizationProfileNavbar.tsx rename to packages/ui/src/components/OrganizationProfile/OrganizationProfileNavbar.tsx diff --git a/packages/clerk-js/src/ui/components/OrganizationProfile/OrganizationProfileRoutes.tsx b/packages/ui/src/components/OrganizationProfile/OrganizationProfileRoutes.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/OrganizationProfile/OrganizationProfileRoutes.tsx rename to packages/ui/src/components/OrganizationProfile/OrganizationProfileRoutes.tsx diff --git a/packages/clerk-js/src/ui/components/OrganizationProfile/OrganizationStatementPage.tsx b/packages/ui/src/components/OrganizationProfile/OrganizationStatementPage.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/OrganizationProfile/OrganizationStatementPage.tsx rename to packages/ui/src/components/OrganizationProfile/OrganizationStatementPage.tsx diff --git a/packages/clerk-js/src/ui/components/OrganizationProfile/ProfileForm.tsx b/packages/ui/src/components/OrganizationProfile/ProfileForm.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/OrganizationProfile/ProfileForm.tsx rename to packages/ui/src/components/OrganizationProfile/ProfileForm.tsx diff --git a/packages/clerk-js/src/ui/components/OrganizationProfile/RemoveDomainForm.tsx b/packages/ui/src/components/OrganizationProfile/RemoveDomainForm.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/OrganizationProfile/RemoveDomainForm.tsx rename to packages/ui/src/components/OrganizationProfile/RemoveDomainForm.tsx diff --git a/packages/clerk-js/src/ui/components/OrganizationProfile/RemoveDomainScreen.tsx b/packages/ui/src/components/OrganizationProfile/RemoveDomainScreen.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/OrganizationProfile/RemoveDomainScreen.tsx rename to packages/ui/src/components/OrganizationProfile/RemoveDomainScreen.tsx diff --git a/packages/clerk-js/src/ui/components/OrganizationProfile/RequestToJoinList.tsx b/packages/ui/src/components/OrganizationProfile/RequestToJoinList.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/OrganizationProfile/RequestToJoinList.tsx rename to packages/ui/src/components/OrganizationProfile/RequestToJoinList.tsx diff --git a/packages/clerk-js/src/ui/components/OrganizationProfile/VerifiedDomainForm.tsx b/packages/ui/src/components/OrganizationProfile/VerifiedDomainForm.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/OrganizationProfile/VerifiedDomainForm.tsx rename to packages/ui/src/components/OrganizationProfile/VerifiedDomainForm.tsx diff --git a/packages/clerk-js/src/ui/components/OrganizationProfile/VerifiedDomainScreen.tsx b/packages/ui/src/components/OrganizationProfile/VerifiedDomainScreen.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/OrganizationProfile/VerifiedDomainScreen.tsx rename to packages/ui/src/components/OrganizationProfile/VerifiedDomainScreen.tsx diff --git a/packages/clerk-js/src/ui/components/OrganizationProfile/VerifyDomainForm.tsx b/packages/ui/src/components/OrganizationProfile/VerifyDomainForm.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/OrganizationProfile/VerifyDomainForm.tsx rename to packages/ui/src/components/OrganizationProfile/VerifyDomainForm.tsx diff --git a/packages/clerk-js/src/ui/components/OrganizationProfile/VerifyDomainScreen.tsx b/packages/ui/src/components/OrganizationProfile/VerifyDomainScreen.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/OrganizationProfile/VerifyDomainScreen.tsx rename to packages/ui/src/components/OrganizationProfile/VerifyDomainScreen.tsx diff --git a/packages/clerk-js/src/ui/components/OrganizationProfile/__tests__/InviteMembersPage.test.tsx b/packages/ui/src/components/OrganizationProfile/__tests__/InviteMembersPage.test.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/OrganizationProfile/__tests__/InviteMembersPage.test.tsx rename to packages/ui/src/components/OrganizationProfile/__tests__/InviteMembersPage.test.tsx diff --git a/packages/clerk-js/src/ui/components/OrganizationProfile/__tests__/LeaveOrganizationPage.test.tsx b/packages/ui/src/components/OrganizationProfile/__tests__/LeaveOrganizationPage.test.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/OrganizationProfile/__tests__/LeaveOrganizationPage.test.tsx rename to packages/ui/src/components/OrganizationProfile/__tests__/LeaveOrganizationPage.test.tsx diff --git a/packages/clerk-js/src/ui/components/OrganizationProfile/__tests__/OrganizationGeneralPage.test.tsx b/packages/ui/src/components/OrganizationProfile/__tests__/OrganizationGeneralPage.test.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/OrganizationProfile/__tests__/OrganizationGeneralPage.test.tsx rename to packages/ui/src/components/OrganizationProfile/__tests__/OrganizationGeneralPage.test.tsx diff --git a/packages/clerk-js/src/ui/components/OrganizationProfile/__tests__/OrganizationMembers.test.tsx b/packages/ui/src/components/OrganizationProfile/__tests__/OrganizationMembers.test.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/OrganizationProfile/__tests__/OrganizationMembers.test.tsx rename to packages/ui/src/components/OrganizationProfile/__tests__/OrganizationMembers.test.tsx diff --git a/packages/clerk-js/src/ui/components/OrganizationProfile/__tests__/OrganizationProfile.test.tsx b/packages/ui/src/components/OrganizationProfile/__tests__/OrganizationProfile.test.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/OrganizationProfile/__tests__/OrganizationProfile.test.tsx rename to packages/ui/src/components/OrganizationProfile/__tests__/OrganizationProfile.test.tsx diff --git a/packages/clerk-js/src/ui/components/OrganizationProfile/__tests__/ProfileSettingsPage.test.tsx b/packages/ui/src/components/OrganizationProfile/__tests__/ProfileSettingsPage.test.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/OrganizationProfile/__tests__/ProfileSettingsPage.test.tsx rename to packages/ui/src/components/OrganizationProfile/__tests__/ProfileSettingsPage.test.tsx diff --git a/packages/clerk-js/src/ui/components/OrganizationProfile/__tests__/utils.ts b/packages/ui/src/components/OrganizationProfile/__tests__/utils.ts similarity index 100% rename from packages/clerk-js/src/ui/components/OrganizationProfile/__tests__/utils.ts rename to packages/ui/src/components/OrganizationProfile/__tests__/utils.ts diff --git a/packages/clerk-js/src/ui/components/OrganizationProfile/index.tsx b/packages/ui/src/components/OrganizationProfile/index.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/OrganizationProfile/index.tsx rename to packages/ui/src/components/OrganizationProfile/index.tsx diff --git a/packages/clerk-js/src/ui/components/OrganizationSwitcher/OrganizationSwitcherPopover.tsx b/packages/ui/src/components/OrganizationSwitcher/OrganizationSwitcherPopover.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/OrganizationSwitcher/OrganizationSwitcherPopover.tsx rename to packages/ui/src/components/OrganizationSwitcher/OrganizationSwitcherPopover.tsx diff --git a/packages/clerk-js/src/ui/components/OrganizationSwitcher/OrganizationSwitcherTrigger.tsx b/packages/ui/src/components/OrganizationSwitcher/OrganizationSwitcherTrigger.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/OrganizationSwitcher/OrganizationSwitcherTrigger.tsx rename to packages/ui/src/components/OrganizationSwitcher/OrganizationSwitcherTrigger.tsx diff --git a/packages/clerk-js/src/ui/components/OrganizationSwitcher/OtherOrganizationActions.tsx b/packages/ui/src/components/OrganizationSwitcher/OtherOrganizationActions.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/OrganizationSwitcher/OtherOrganizationActions.tsx rename to packages/ui/src/components/OrganizationSwitcher/OtherOrganizationActions.tsx diff --git a/packages/clerk-js/src/ui/components/OrganizationSwitcher/UserInvitationSuggestionList.tsx b/packages/ui/src/components/OrganizationSwitcher/UserInvitationSuggestionList.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/OrganizationSwitcher/UserInvitationSuggestionList.tsx rename to packages/ui/src/components/OrganizationSwitcher/UserInvitationSuggestionList.tsx diff --git a/packages/clerk-js/src/ui/components/OrganizationSwitcher/UserMembershipList.tsx b/packages/ui/src/components/OrganizationSwitcher/UserMembershipList.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/OrganizationSwitcher/UserMembershipList.tsx rename to packages/ui/src/components/OrganizationSwitcher/UserMembershipList.tsx diff --git a/packages/clerk-js/src/ui/components/OrganizationSwitcher/__tests__/OrganizationSwitcher.test.tsx b/packages/ui/src/components/OrganizationSwitcher/__tests__/OrganizationSwitcher.test.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/OrganizationSwitcher/__tests__/OrganizationSwitcher.test.tsx rename to packages/ui/src/components/OrganizationSwitcher/__tests__/OrganizationSwitcher.test.tsx diff --git a/packages/clerk-js/src/ui/components/OrganizationSwitcher/__tests__/test-utils.ts b/packages/ui/src/components/OrganizationSwitcher/__tests__/test-utils.ts similarity index 100% rename from packages/clerk-js/src/ui/components/OrganizationSwitcher/__tests__/test-utils.ts rename to packages/ui/src/components/OrganizationSwitcher/__tests__/test-utils.ts diff --git a/packages/clerk-js/src/ui/components/OrganizationSwitcher/__tests__/utils.test.ts b/packages/ui/src/components/OrganizationSwitcher/__tests__/utils.test.ts similarity index 100% rename from packages/clerk-js/src/ui/components/OrganizationSwitcher/__tests__/utils.test.ts rename to packages/ui/src/components/OrganizationSwitcher/__tests__/utils.test.ts diff --git a/packages/clerk-js/src/ui/components/OrganizationSwitcher/index.tsx b/packages/ui/src/components/OrganizationSwitcher/index.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/OrganizationSwitcher/index.tsx rename to packages/ui/src/components/OrganizationSwitcher/index.tsx diff --git a/packages/clerk-js/src/ui/components/OrganizationSwitcher/utils.ts b/packages/ui/src/components/OrganizationSwitcher/utils.ts similarity index 100% rename from packages/clerk-js/src/ui/components/OrganizationSwitcher/utils.ts rename to packages/ui/src/components/OrganizationSwitcher/utils.ts diff --git a/packages/clerk-js/src/ui/components/PaymentAttempts/PaymentAttemptPage.tsx b/packages/ui/src/components/PaymentAttempts/PaymentAttemptPage.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/PaymentAttempts/PaymentAttemptPage.tsx rename to packages/ui/src/components/PaymentAttempts/PaymentAttemptPage.tsx diff --git a/packages/clerk-js/src/ui/components/PaymentAttempts/PaymentAttemptsList.tsx b/packages/ui/src/components/PaymentAttempts/PaymentAttemptsList.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/PaymentAttempts/PaymentAttemptsList.tsx rename to packages/ui/src/components/PaymentAttempts/PaymentAttemptsList.tsx diff --git a/packages/clerk-js/src/ui/components/PaymentAttempts/index.ts b/packages/ui/src/components/PaymentAttempts/index.ts similarity index 100% rename from packages/clerk-js/src/ui/components/PaymentAttempts/index.ts rename to packages/ui/src/components/PaymentAttempts/index.ts diff --git a/packages/clerk-js/src/ui/components/PaymentMethods/AddPaymentMethod.tsx b/packages/ui/src/components/PaymentMethods/AddPaymentMethod.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/PaymentMethods/AddPaymentMethod.tsx rename to packages/ui/src/components/PaymentMethods/AddPaymentMethod.tsx diff --git a/packages/clerk-js/src/ui/components/PaymentMethods/PaymentElementSkeleton.tsx b/packages/ui/src/components/PaymentMethods/PaymentElementSkeleton.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/PaymentMethods/PaymentElementSkeleton.tsx rename to packages/ui/src/components/PaymentMethods/PaymentElementSkeleton.tsx diff --git a/packages/clerk-js/src/ui/components/PaymentMethods/PaymentMethodRow.tsx b/packages/ui/src/components/PaymentMethods/PaymentMethodRow.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/PaymentMethods/PaymentMethodRow.tsx rename to packages/ui/src/components/PaymentMethods/PaymentMethodRow.tsx diff --git a/packages/clerk-js/src/ui/components/PaymentMethods/PaymentMethods.tsx b/packages/ui/src/components/PaymentMethods/PaymentMethods.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/PaymentMethods/PaymentMethods.tsx rename to packages/ui/src/components/PaymentMethods/PaymentMethods.tsx diff --git a/packages/clerk-js/src/ui/components/PaymentMethods/TestPaymentMethod.tsx b/packages/ui/src/components/PaymentMethods/TestPaymentMethod.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/PaymentMethods/TestPaymentMethod.tsx rename to packages/ui/src/components/PaymentMethods/TestPaymentMethod.tsx diff --git a/packages/clerk-js/src/ui/components/PaymentMethods/index.ts b/packages/ui/src/components/PaymentMethods/index.ts similarity index 100% rename from packages/clerk-js/src/ui/components/PaymentMethods/index.ts rename to packages/ui/src/components/PaymentMethods/index.ts diff --git a/packages/clerk-js/src/ui/components/Plans/PlanDetails.tsx b/packages/ui/src/components/Plans/PlanDetails.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/Plans/PlanDetails.tsx rename to packages/ui/src/components/Plans/PlanDetails.tsx diff --git a/packages/clerk-js/src/ui/components/Plans/__tests__/PlanDetails.test.tsx b/packages/ui/src/components/Plans/__tests__/PlanDetails.test.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/Plans/__tests__/PlanDetails.test.tsx rename to packages/ui/src/components/Plans/__tests__/PlanDetails.test.tsx diff --git a/packages/clerk-js/src/ui/components/PricingTable/PricingTable.tsx b/packages/ui/src/components/PricingTable/PricingTable.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/PricingTable/PricingTable.tsx rename to packages/ui/src/components/PricingTable/PricingTable.tsx diff --git a/packages/clerk-js/src/ui/components/PricingTable/PricingTableDefault.tsx b/packages/ui/src/components/PricingTable/PricingTableDefault.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/PricingTable/PricingTableDefault.tsx rename to packages/ui/src/components/PricingTable/PricingTableDefault.tsx diff --git a/packages/clerk-js/src/ui/components/PricingTable/PricingTableMatrix.tsx b/packages/ui/src/components/PricingTable/PricingTableMatrix.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/PricingTable/PricingTableMatrix.tsx rename to packages/ui/src/components/PricingTable/PricingTableMatrix.tsx diff --git a/packages/clerk-js/src/ui/components/PricingTable/__tests__/PricingTable.test.tsx b/packages/ui/src/components/PricingTable/__tests__/PricingTable.test.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/PricingTable/__tests__/PricingTable.test.tsx rename to packages/ui/src/components/PricingTable/__tests__/PricingTable.test.tsx diff --git a/packages/clerk-js/src/ui/components/PricingTable/index.tsx b/packages/ui/src/components/PricingTable/index.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/PricingTable/index.tsx rename to packages/ui/src/components/PricingTable/index.tsx diff --git a/packages/clerk-js/src/ui/components/PricingTable/utils/pricing-footer-state.spec.ts b/packages/ui/src/components/PricingTable/utils/pricing-footer-state.spec.ts similarity index 100% rename from packages/clerk-js/src/ui/components/PricingTable/utils/pricing-footer-state.spec.ts rename to packages/ui/src/components/PricingTable/utils/pricing-footer-state.spec.ts diff --git a/packages/clerk-js/src/ui/components/PricingTable/utils/pricing-footer-state.ts b/packages/ui/src/components/PricingTable/utils/pricing-footer-state.ts similarity index 100% rename from packages/clerk-js/src/ui/components/PricingTable/utils/pricing-footer-state.ts rename to packages/ui/src/components/PricingTable/utils/pricing-footer-state.ts diff --git a/packages/clerk-js/src/ui/components/SessionTasks/index.tsx b/packages/ui/src/components/SessionTasks/index.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/SessionTasks/index.tsx rename to packages/ui/src/components/SessionTasks/index.tsx diff --git a/packages/clerk-js/src/ui/components/SessionTasks/tasks/TaskChooseOrganization/ChooseOrganizationScreen.tsx b/packages/ui/src/components/SessionTasks/tasks/TaskChooseOrganization/ChooseOrganizationScreen.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/SessionTasks/tasks/TaskChooseOrganization/ChooseOrganizationScreen.tsx rename to packages/ui/src/components/SessionTasks/tasks/TaskChooseOrganization/ChooseOrganizationScreen.tsx diff --git a/packages/clerk-js/src/ui/components/SessionTasks/tasks/TaskChooseOrganization/CreateOrganizationScreen.tsx b/packages/ui/src/components/SessionTasks/tasks/TaskChooseOrganization/CreateOrganizationScreen.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/SessionTasks/tasks/TaskChooseOrganization/CreateOrganizationScreen.tsx rename to packages/ui/src/components/SessionTasks/tasks/TaskChooseOrganization/CreateOrganizationScreen.tsx diff --git a/packages/clerk-js/src/ui/components/SessionTasks/tasks/TaskChooseOrganization/__tests__/TaskChooseOrganization.test.tsx b/packages/ui/src/components/SessionTasks/tasks/TaskChooseOrganization/__tests__/TaskChooseOrganization.test.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/SessionTasks/tasks/TaskChooseOrganization/__tests__/TaskChooseOrganization.test.tsx rename to packages/ui/src/components/SessionTasks/tasks/TaskChooseOrganization/__tests__/TaskChooseOrganization.test.tsx diff --git a/packages/clerk-js/src/ui/components/SessionTasks/tasks/TaskChooseOrganization/index.tsx b/packages/ui/src/components/SessionTasks/tasks/TaskChooseOrganization/index.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/SessionTasks/tasks/TaskChooseOrganization/index.tsx rename to packages/ui/src/components/SessionTasks/tasks/TaskChooseOrganization/index.tsx diff --git a/packages/clerk-js/src/ui/components/SessionTasks/tasks/withTaskGuard.ts b/packages/ui/src/components/SessionTasks/tasks/withTaskGuard.ts similarity index 93% rename from packages/clerk-js/src/ui/components/SessionTasks/tasks/withTaskGuard.ts rename to packages/ui/src/components/SessionTasks/tasks/withTaskGuard.ts index d5702f19760..ce460447b9d 100644 --- a/packages/clerk-js/src/ui/components/SessionTasks/tasks/withTaskGuard.ts +++ b/packages/ui/src/components/SessionTasks/tasks/withTaskGuard.ts @@ -1,6 +1,6 @@ +import { warnings } from '@clerk/shared/internal/clerk-js'; import type { ComponentType } from 'react'; -import { warnings } from '@/core/warnings'; import { withRedirect } from '@/ui/common'; import { useTaskChooseOrganizationContext } from '@/ui/contexts/components/SessionTasks'; import type { AvailableComponentProps } from '@/ui/types'; diff --git a/packages/clerk-js/src/ui/components/SignIn/AlternativeMethods.tsx b/packages/ui/src/components/SignIn/AlternativeMethods.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/SignIn/AlternativeMethods.tsx rename to packages/ui/src/components/SignIn/AlternativeMethods.tsx diff --git a/packages/clerk-js/src/ui/components/SignIn/HavingTrouble.tsx b/packages/ui/src/components/SignIn/HavingTrouble.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/SignIn/HavingTrouble.tsx rename to packages/ui/src/components/SignIn/HavingTrouble.tsx diff --git a/packages/clerk-js/src/ui/components/SignIn/ResetPassword.tsx b/packages/ui/src/components/SignIn/ResetPassword.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/SignIn/ResetPassword.tsx rename to packages/ui/src/components/SignIn/ResetPassword.tsx diff --git a/packages/clerk-js/src/ui/components/SignIn/ResetPasswordSuccess.tsx b/packages/ui/src/components/SignIn/ResetPasswordSuccess.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/SignIn/ResetPasswordSuccess.tsx rename to packages/ui/src/components/SignIn/ResetPasswordSuccess.tsx diff --git a/packages/clerk-js/src/ui/components/SignIn/SignInAccountSwitcher.tsx b/packages/ui/src/components/SignIn/SignInAccountSwitcher.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/SignIn/SignInAccountSwitcher.tsx rename to packages/ui/src/components/SignIn/SignInAccountSwitcher.tsx diff --git a/packages/clerk-js/src/ui/components/SignIn/SignInAlternativePhoneCodePhoneNumberCard.tsx b/packages/ui/src/components/SignIn/SignInAlternativePhoneCodePhoneNumberCard.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/SignIn/SignInAlternativePhoneCodePhoneNumberCard.tsx rename to packages/ui/src/components/SignIn/SignInAlternativePhoneCodePhoneNumberCard.tsx diff --git a/packages/clerk-js/src/ui/components/SignIn/SignInFactorOne.tsx b/packages/ui/src/components/SignIn/SignInFactorOne.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/SignIn/SignInFactorOne.tsx rename to packages/ui/src/components/SignIn/SignInFactorOne.tsx diff --git a/packages/clerk-js/src/ui/components/SignIn/SignInFactorOneAlternativeChannelCodeForm.tsx b/packages/ui/src/components/SignIn/SignInFactorOneAlternativeChannelCodeForm.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/SignIn/SignInFactorOneAlternativeChannelCodeForm.tsx rename to packages/ui/src/components/SignIn/SignInFactorOneAlternativeChannelCodeForm.tsx diff --git a/packages/clerk-js/src/ui/components/SignIn/SignInFactorOneAlternativePhoneCodeCard.tsx b/packages/ui/src/components/SignIn/SignInFactorOneAlternativePhoneCodeCard.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/SignIn/SignInFactorOneAlternativePhoneCodeCard.tsx rename to packages/ui/src/components/SignIn/SignInFactorOneAlternativePhoneCodeCard.tsx diff --git a/packages/clerk-js/src/ui/components/SignIn/SignInFactorOneCodeForm.tsx b/packages/ui/src/components/SignIn/SignInFactorOneCodeForm.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/SignIn/SignInFactorOneCodeForm.tsx rename to packages/ui/src/components/SignIn/SignInFactorOneCodeForm.tsx diff --git a/packages/clerk-js/src/ui/components/SignIn/SignInFactorOneEmailCodeCard.tsx b/packages/ui/src/components/SignIn/SignInFactorOneEmailCodeCard.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/SignIn/SignInFactorOneEmailCodeCard.tsx rename to packages/ui/src/components/SignIn/SignInFactorOneEmailCodeCard.tsx diff --git a/packages/clerk-js/src/ui/components/SignIn/SignInFactorOneEmailLinkCard.tsx b/packages/ui/src/components/SignIn/SignInFactorOneEmailLinkCard.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/SignIn/SignInFactorOneEmailLinkCard.tsx rename to packages/ui/src/components/SignIn/SignInFactorOneEmailLinkCard.tsx diff --git a/packages/clerk-js/src/ui/components/SignIn/SignInFactorOneEnterpriseConnections.tsx b/packages/ui/src/components/SignIn/SignInFactorOneEnterpriseConnections.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/SignIn/SignInFactorOneEnterpriseConnections.tsx rename to packages/ui/src/components/SignIn/SignInFactorOneEnterpriseConnections.tsx diff --git a/packages/clerk-js/src/ui/components/SignIn/SignInFactorOneForgotPasswordCard.tsx b/packages/ui/src/components/SignIn/SignInFactorOneForgotPasswordCard.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/SignIn/SignInFactorOneForgotPasswordCard.tsx rename to packages/ui/src/components/SignIn/SignInFactorOneForgotPasswordCard.tsx diff --git a/packages/clerk-js/src/ui/components/SignIn/SignInFactorOnePasskey.tsx b/packages/ui/src/components/SignIn/SignInFactorOnePasskey.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/SignIn/SignInFactorOnePasskey.tsx rename to packages/ui/src/components/SignIn/SignInFactorOnePasskey.tsx diff --git a/packages/clerk-js/src/ui/components/SignIn/SignInFactorOnePasswordCard.tsx b/packages/ui/src/components/SignIn/SignInFactorOnePasswordCard.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/SignIn/SignInFactorOnePasswordCard.tsx rename to packages/ui/src/components/SignIn/SignInFactorOnePasswordCard.tsx diff --git a/packages/clerk-js/src/ui/components/SignIn/SignInFactorOnePhoneCodeCard.tsx b/packages/ui/src/components/SignIn/SignInFactorOnePhoneCodeCard.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/SignIn/SignInFactorOnePhoneCodeCard.tsx rename to packages/ui/src/components/SignIn/SignInFactorOnePhoneCodeCard.tsx diff --git a/packages/clerk-js/src/ui/components/SignIn/SignInFactorTwo.tsx b/packages/ui/src/components/SignIn/SignInFactorTwo.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/SignIn/SignInFactorTwo.tsx rename to packages/ui/src/components/SignIn/SignInFactorTwo.tsx diff --git a/packages/clerk-js/src/ui/components/SignIn/SignInFactorTwoAlternativeMethods.tsx b/packages/ui/src/components/SignIn/SignInFactorTwoAlternativeMethods.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/SignIn/SignInFactorTwoAlternativeMethods.tsx rename to packages/ui/src/components/SignIn/SignInFactorTwoAlternativeMethods.tsx diff --git a/packages/clerk-js/src/ui/components/SignIn/SignInFactorTwoBackupCodeCard.tsx b/packages/ui/src/components/SignIn/SignInFactorTwoBackupCodeCard.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/SignIn/SignInFactorTwoBackupCodeCard.tsx rename to packages/ui/src/components/SignIn/SignInFactorTwoBackupCodeCard.tsx diff --git a/packages/clerk-js/src/ui/components/SignIn/SignInFactorTwoCodeForm.tsx b/packages/ui/src/components/SignIn/SignInFactorTwoCodeForm.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/SignIn/SignInFactorTwoCodeForm.tsx rename to packages/ui/src/components/SignIn/SignInFactorTwoCodeForm.tsx diff --git a/packages/clerk-js/src/ui/components/SignIn/SignInFactorTwoPhoneCodeCard.tsx b/packages/ui/src/components/SignIn/SignInFactorTwoPhoneCodeCard.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/SignIn/SignInFactorTwoPhoneCodeCard.tsx rename to packages/ui/src/components/SignIn/SignInFactorTwoPhoneCodeCard.tsx diff --git a/packages/clerk-js/src/ui/components/SignIn/SignInFactorTwoTOTPCard.tsx b/packages/ui/src/components/SignIn/SignInFactorTwoTOTPCard.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/SignIn/SignInFactorTwoTOTPCard.tsx rename to packages/ui/src/components/SignIn/SignInFactorTwoTOTPCard.tsx diff --git a/packages/clerk-js/src/ui/components/SignIn/SignInSSOCallback.tsx b/packages/ui/src/components/SignIn/SignInSSOCallback.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/SignIn/SignInSSOCallback.tsx rename to packages/ui/src/components/SignIn/SignInSSOCallback.tsx diff --git a/packages/clerk-js/src/ui/components/SignIn/SignInSocialButtons.tsx b/packages/ui/src/components/SignIn/SignInSocialButtons.tsx similarity index 98% rename from packages/clerk-js/src/ui/components/SignIn/SignInSocialButtons.tsx rename to packages/ui/src/components/SignIn/SignInSocialButtons.tsx index ad745d83eba..52e7c5a39bf 100644 --- a/packages/clerk-js/src/ui/components/SignIn/SignInSocialButtons.tsx +++ b/packages/ui/src/components/SignIn/SignInSocialButtons.tsx @@ -33,7 +33,7 @@ export const SignInSocialButtons = React.memo((props: SignInSocialButtonsProps) return ( { if (shouldUsePopup) { diff --git a/packages/clerk-js/src/ui/components/SignIn/SignInStart.tsx b/packages/ui/src/components/SignIn/SignInStart.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/SignIn/SignInStart.tsx rename to packages/ui/src/components/SignIn/SignInStart.tsx diff --git a/packages/clerk-js/src/ui/components/SignIn/__tests__/ResetPassword.test.tsx b/packages/ui/src/components/SignIn/__tests__/ResetPassword.test.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/SignIn/__tests__/ResetPassword.test.tsx rename to packages/ui/src/components/SignIn/__tests__/ResetPassword.test.tsx diff --git a/packages/clerk-js/src/ui/components/SignIn/__tests__/ResetPasswordSuccess.test.tsx b/packages/ui/src/components/SignIn/__tests__/ResetPasswordSuccess.test.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/SignIn/__tests__/ResetPasswordSuccess.test.tsx rename to packages/ui/src/components/SignIn/__tests__/ResetPasswordSuccess.test.tsx diff --git a/packages/clerk-js/src/ui/components/SignIn/__tests__/SignInAccountSwitcher.test.tsx b/packages/ui/src/components/SignIn/__tests__/SignInAccountSwitcher.test.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/SignIn/__tests__/SignInAccountSwitcher.test.tsx rename to packages/ui/src/components/SignIn/__tests__/SignInAccountSwitcher.test.tsx diff --git a/packages/clerk-js/src/ui/components/SignIn/__tests__/SignInFactorOne.test.tsx b/packages/ui/src/components/SignIn/__tests__/SignInFactorOne.test.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/SignIn/__tests__/SignInFactorOne.test.tsx rename to packages/ui/src/components/SignIn/__tests__/SignInFactorOne.test.tsx diff --git a/packages/clerk-js/src/ui/components/SignIn/__tests__/SignInFactorOneCodeForm.test.tsx b/packages/ui/src/components/SignIn/__tests__/SignInFactorOneCodeForm.test.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/SignIn/__tests__/SignInFactorOneCodeForm.test.tsx rename to packages/ui/src/components/SignIn/__tests__/SignInFactorOneCodeForm.test.tsx diff --git a/packages/clerk-js/src/ui/components/SignIn/__tests__/SignInFactorTwo.test.tsx b/packages/ui/src/components/SignIn/__tests__/SignInFactorTwo.test.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/SignIn/__tests__/SignInFactorTwo.test.tsx rename to packages/ui/src/components/SignIn/__tests__/SignInFactorTwo.test.tsx diff --git a/packages/clerk-js/src/ui/components/SignIn/__tests__/SignInStart.test.tsx b/packages/ui/src/components/SignIn/__tests__/SignInStart.test.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/SignIn/__tests__/SignInStart.test.tsx rename to packages/ui/src/components/SignIn/__tests__/SignInStart.test.tsx diff --git a/packages/clerk-js/src/ui/components/SignIn/__tests__/handleCombinedFlowTransfer.test.ts b/packages/ui/src/components/SignIn/__tests__/handleCombinedFlowTransfer.test.ts similarity index 100% rename from packages/clerk-js/src/ui/components/SignIn/__tests__/handleCombinedFlowTransfer.test.ts rename to packages/ui/src/components/SignIn/__tests__/handleCombinedFlowTransfer.test.ts diff --git a/packages/clerk-js/src/ui/components/SignIn/__tests__/utils.test.ts b/packages/ui/src/components/SignIn/__tests__/utils.test.ts similarity index 100% rename from packages/clerk-js/src/ui/components/SignIn/__tests__/utils.test.ts rename to packages/ui/src/components/SignIn/__tests__/utils.test.ts diff --git a/packages/clerk-js/src/ui/components/SignIn/handleCombinedFlowTransfer.ts b/packages/ui/src/components/SignIn/handleCombinedFlowTransfer.ts similarity index 100% rename from packages/clerk-js/src/ui/components/SignIn/handleCombinedFlowTransfer.ts rename to packages/ui/src/components/SignIn/handleCombinedFlowTransfer.ts diff --git a/packages/clerk-js/src/ui/components/SignIn/index.tsx b/packages/ui/src/components/SignIn/index.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/SignIn/index.tsx rename to packages/ui/src/components/SignIn/index.tsx diff --git a/packages/clerk-js/src/ui/components/SignIn/lazy-sign-up.ts b/packages/ui/src/components/SignIn/lazy-sign-up.ts similarity index 100% rename from packages/clerk-js/src/ui/components/SignIn/lazy-sign-up.ts rename to packages/ui/src/components/SignIn/lazy-sign-up.ts diff --git a/packages/clerk-js/src/ui/components/SignIn/shared.ts b/packages/ui/src/components/SignIn/shared.ts similarity index 100% rename from packages/clerk-js/src/ui/components/SignIn/shared.ts rename to packages/ui/src/components/SignIn/shared.ts diff --git a/packages/clerk-js/src/ui/components/SignIn/useResetPasswordFactor.tsx b/packages/ui/src/components/SignIn/useResetPasswordFactor.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/SignIn/useResetPasswordFactor.tsx rename to packages/ui/src/components/SignIn/useResetPasswordFactor.tsx diff --git a/packages/clerk-js/src/ui/components/SignIn/utils.ts b/packages/ui/src/components/SignIn/utils.ts similarity index 100% rename from packages/clerk-js/src/ui/components/SignIn/utils.ts rename to packages/ui/src/components/SignIn/utils.ts diff --git a/packages/clerk-js/src/ui/components/SignIn/withHavingTrouble.tsx b/packages/ui/src/components/SignIn/withHavingTrouble.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/SignIn/withHavingTrouble.tsx rename to packages/ui/src/components/SignIn/withHavingTrouble.tsx diff --git a/packages/clerk-js/src/ui/components/SignUp/SignUpContinue.tsx b/packages/ui/src/components/SignUp/SignUpContinue.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/SignUp/SignUpContinue.tsx rename to packages/ui/src/components/SignUp/SignUpContinue.tsx diff --git a/packages/clerk-js/src/ui/components/SignUp/SignUpEmailCodeCard.tsx b/packages/ui/src/components/SignUp/SignUpEmailCodeCard.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/SignUp/SignUpEmailCodeCard.tsx rename to packages/ui/src/components/SignUp/SignUpEmailCodeCard.tsx diff --git a/packages/clerk-js/src/ui/components/SignUp/SignUpEmailLinkCard.tsx b/packages/ui/src/components/SignUp/SignUpEmailLinkCard.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/SignUp/SignUpEmailLinkCard.tsx rename to packages/ui/src/components/SignUp/SignUpEmailLinkCard.tsx diff --git a/packages/clerk-js/src/ui/components/SignUp/SignUpEnterpriseConnections.tsx b/packages/ui/src/components/SignUp/SignUpEnterpriseConnections.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/SignUp/SignUpEnterpriseConnections.tsx rename to packages/ui/src/components/SignUp/SignUpEnterpriseConnections.tsx diff --git a/packages/clerk-js/src/ui/components/SignUp/SignUpForm.tsx b/packages/ui/src/components/SignUp/SignUpForm.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/SignUp/SignUpForm.tsx rename to packages/ui/src/components/SignUp/SignUpForm.tsx diff --git a/packages/clerk-js/src/ui/components/SignUp/SignUpPhoneCodeCard.tsx b/packages/ui/src/components/SignUp/SignUpPhoneCodeCard.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/SignUp/SignUpPhoneCodeCard.tsx rename to packages/ui/src/components/SignUp/SignUpPhoneCodeCard.tsx diff --git a/packages/clerk-js/src/ui/components/SignUp/SignUpRestrictedAccess.tsx b/packages/ui/src/components/SignUp/SignUpRestrictedAccess.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/SignUp/SignUpRestrictedAccess.tsx rename to packages/ui/src/components/SignUp/SignUpRestrictedAccess.tsx diff --git a/packages/clerk-js/src/ui/components/SignUp/SignUpSSOCallback.tsx b/packages/ui/src/components/SignUp/SignUpSSOCallback.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/SignUp/SignUpSSOCallback.tsx rename to packages/ui/src/components/SignUp/SignUpSSOCallback.tsx diff --git a/packages/clerk-js/src/ui/components/SignUp/SignUpSocialButtons.tsx b/packages/ui/src/components/SignUp/SignUpSocialButtons.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/SignUp/SignUpSocialButtons.tsx rename to packages/ui/src/components/SignUp/SignUpSocialButtons.tsx diff --git a/packages/clerk-js/src/ui/components/SignUp/SignUpStart.tsx b/packages/ui/src/components/SignUp/SignUpStart.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/SignUp/SignUpStart.tsx rename to packages/ui/src/components/SignUp/SignUpStart.tsx diff --git a/packages/clerk-js/src/ui/components/SignUp/SignUpStartAlternativePhoneCodePhoneNumberCard.tsx b/packages/ui/src/components/SignUp/SignUpStartAlternativePhoneCodePhoneNumberCard.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/SignUp/SignUpStartAlternativePhoneCodePhoneNumberCard.tsx rename to packages/ui/src/components/SignUp/SignUpStartAlternativePhoneCodePhoneNumberCard.tsx diff --git a/packages/clerk-js/src/ui/components/SignUp/SignUpVerificationCodeForm.tsx b/packages/ui/src/components/SignUp/SignUpVerificationCodeForm.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/SignUp/SignUpVerificationCodeForm.tsx rename to packages/ui/src/components/SignUp/SignUpVerificationCodeForm.tsx diff --git a/packages/clerk-js/src/ui/components/SignUp/SignUpVerifyEmail.tsx b/packages/ui/src/components/SignUp/SignUpVerifyEmail.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/SignUp/SignUpVerifyEmail.tsx rename to packages/ui/src/components/SignUp/SignUpVerifyEmail.tsx diff --git a/packages/clerk-js/src/ui/components/SignUp/SignUpVerifyPhone.tsx b/packages/ui/src/components/SignUp/SignUpVerifyPhone.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/SignUp/SignUpVerifyPhone.tsx rename to packages/ui/src/components/SignUp/SignUpVerifyPhone.tsx diff --git a/packages/clerk-js/src/ui/components/SignUp/__tests__/SignUpContinue.test.tsx b/packages/ui/src/components/SignUp/__tests__/SignUpContinue.test.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/SignUp/__tests__/SignUpContinue.test.tsx rename to packages/ui/src/components/SignUp/__tests__/SignUpContinue.test.tsx diff --git a/packages/clerk-js/src/ui/components/SignUp/__tests__/SignUpEmailLinkFlowComplete.test.tsx b/packages/ui/src/components/SignUp/__tests__/SignUpEmailLinkFlowComplete.test.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/SignUp/__tests__/SignUpEmailLinkFlowComplete.test.tsx rename to packages/ui/src/components/SignUp/__tests__/SignUpEmailLinkFlowComplete.test.tsx diff --git a/packages/clerk-js/src/ui/components/SignUp/__tests__/SignUpStart.test.tsx b/packages/ui/src/components/SignUp/__tests__/SignUpStart.test.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/SignUp/__tests__/SignUpStart.test.tsx rename to packages/ui/src/components/SignUp/__tests__/SignUpStart.test.tsx diff --git a/packages/clerk-js/src/ui/components/SignUp/__tests__/SignUpVerifyEmail.test.tsx b/packages/ui/src/components/SignUp/__tests__/SignUpVerifyEmail.test.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/SignUp/__tests__/SignUpVerifyEmail.test.tsx rename to packages/ui/src/components/SignUp/__tests__/SignUpVerifyEmail.test.tsx diff --git a/packages/clerk-js/src/ui/components/SignUp/__tests__/SignUpVerifyPhone.test.tsx b/packages/ui/src/components/SignUp/__tests__/SignUpVerifyPhone.test.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/SignUp/__tests__/SignUpVerifyPhone.test.tsx rename to packages/ui/src/components/SignUp/__tests__/SignUpVerifyPhone.test.tsx diff --git a/packages/clerk-js/src/ui/components/SignUp/__tests__/signUpFormHelpers.test.ts b/packages/ui/src/components/SignUp/__tests__/signUpFormHelpers.test.ts similarity index 100% rename from packages/clerk-js/src/ui/components/SignUp/__tests__/signUpFormHelpers.test.ts rename to packages/ui/src/components/SignUp/__tests__/signUpFormHelpers.test.ts diff --git a/packages/clerk-js/src/ui/components/SignUp/index.tsx b/packages/ui/src/components/SignUp/index.tsx similarity index 97% rename from packages/clerk-js/src/ui/components/SignUp/index.tsx rename to packages/ui/src/components/SignUp/index.tsx index 3ba8a39b6be..49dd03f051e 100644 --- a/packages/clerk-js/src/ui/components/SignUp/index.tsx +++ b/packages/ui/src/components/SignUp/index.tsx @@ -4,10 +4,10 @@ import React from 'react'; import { usePreloadTasks } from '@/ui/hooks/usePreloadTasks'; -import { SessionTasks as LazySessionTasks } from '../../../ui/lazyModules/components'; import { SignUpEmailLinkFlowComplete } from '../../common/EmailLinkCompleteFlowCard'; import { SignUpContext, useSignUpContext, withCoreSessionSwitchGuard } from '../../contexts'; import { Flow } from '../../customizables'; +import { SessionTasks as LazySessionTasks } from '../../lazyModules/components'; import { Route, Switch, VIRTUAL_ROUTER_BASE_PATH } from '../../router'; import { SignUpContinue } from './SignUpContinue'; import { SignUpEnterpriseConnections } from './SignUpEnterpriseConnections'; diff --git a/packages/clerk-js/src/ui/components/SignUp/signUpFormHelpers.ts b/packages/ui/src/components/SignUp/signUpFormHelpers.ts similarity index 100% rename from packages/clerk-js/src/ui/components/SignUp/signUpFormHelpers.ts rename to packages/ui/src/components/SignUp/signUpFormHelpers.ts diff --git a/packages/clerk-js/src/ui/components/SignUp/util.ts b/packages/ui/src/components/SignUp/util.ts similarity index 100% rename from packages/clerk-js/src/ui/components/SignUp/util.ts rename to packages/ui/src/components/SignUp/util.ts diff --git a/packages/clerk-js/src/ui/components/Statements/Statement.tsx b/packages/ui/src/components/Statements/Statement.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/Statements/Statement.tsx rename to packages/ui/src/components/Statements/Statement.tsx diff --git a/packages/clerk-js/src/ui/components/Statements/StatementPage.tsx b/packages/ui/src/components/Statements/StatementPage.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/Statements/StatementPage.tsx rename to packages/ui/src/components/Statements/StatementPage.tsx diff --git a/packages/clerk-js/src/ui/components/Statements/StatementsList.tsx b/packages/ui/src/components/Statements/StatementsList.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/Statements/StatementsList.tsx rename to packages/ui/src/components/Statements/StatementsList.tsx diff --git a/packages/clerk-js/src/ui/components/Statements/index.ts b/packages/ui/src/components/Statements/index.ts similarity index 100% rename from packages/clerk-js/src/ui/components/Statements/index.ts rename to packages/ui/src/components/Statements/index.ts diff --git a/packages/clerk-js/src/ui/components/SubscriptionDetails/__tests__/SubscriptionDetails.test.tsx b/packages/ui/src/components/SubscriptionDetails/__tests__/SubscriptionDetails.test.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/SubscriptionDetails/__tests__/SubscriptionDetails.test.tsx rename to packages/ui/src/components/SubscriptionDetails/__tests__/SubscriptionDetails.test.tsx diff --git a/packages/clerk-js/src/ui/components/SubscriptionDetails/index.tsx b/packages/ui/src/components/SubscriptionDetails/index.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/SubscriptionDetails/index.tsx rename to packages/ui/src/components/SubscriptionDetails/index.tsx diff --git a/packages/clerk-js/src/ui/components/Subscriptions/SubscriptionsList.tsx b/packages/ui/src/components/Subscriptions/SubscriptionsList.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/Subscriptions/SubscriptionsList.tsx rename to packages/ui/src/components/Subscriptions/SubscriptionsList.tsx diff --git a/packages/clerk-js/src/ui/components/Subscriptions/__tests__/SubscriptionsList.test.tsx b/packages/ui/src/components/Subscriptions/__tests__/SubscriptionsList.test.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/Subscriptions/__tests__/SubscriptionsList.test.tsx rename to packages/ui/src/components/Subscriptions/__tests__/SubscriptionsList.test.tsx diff --git a/packages/clerk-js/src/ui/components/Subscriptions/badge.tsx b/packages/ui/src/components/Subscriptions/badge.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/Subscriptions/badge.tsx rename to packages/ui/src/components/Subscriptions/badge.tsx diff --git a/packages/clerk-js/src/ui/components/Subscriptions/index.tsx b/packages/ui/src/components/Subscriptions/index.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/Subscriptions/index.tsx rename to packages/ui/src/components/Subscriptions/index.tsx diff --git a/packages/clerk-js/src/ui/components/UserAvatar/index.tsx b/packages/ui/src/components/UserAvatar/index.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/UserAvatar/index.tsx rename to packages/ui/src/components/UserAvatar/index.tsx diff --git a/packages/clerk-js/src/ui/components/UserButton/SessionActions.tsx b/packages/ui/src/components/UserButton/SessionActions.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/UserButton/SessionActions.tsx rename to packages/ui/src/components/UserButton/SessionActions.tsx diff --git a/packages/clerk-js/src/ui/components/UserButton/UserButtonPopover.tsx b/packages/ui/src/components/UserButton/UserButtonPopover.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/UserButton/UserButtonPopover.tsx rename to packages/ui/src/components/UserButton/UserButtonPopover.tsx diff --git a/packages/clerk-js/src/ui/components/UserButton/UserButtonTopLevelIdentifier.tsx b/packages/ui/src/components/UserButton/UserButtonTopLevelIdentifier.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/UserButton/UserButtonTopLevelIdentifier.tsx rename to packages/ui/src/components/UserButton/UserButtonTopLevelIdentifier.tsx diff --git a/packages/clerk-js/src/ui/components/UserButton/UserButtonTrigger.tsx b/packages/ui/src/components/UserButton/UserButtonTrigger.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/UserButton/UserButtonTrigger.tsx rename to packages/ui/src/components/UserButton/UserButtonTrigger.tsx diff --git a/packages/clerk-js/src/ui/components/UserButton/__tests__/UserButton.test.tsx b/packages/ui/src/components/UserButton/__tests__/UserButton.test.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/UserButton/__tests__/UserButton.test.tsx rename to packages/ui/src/components/UserButton/__tests__/UserButton.test.tsx diff --git a/packages/clerk-js/src/ui/components/UserButton/index.tsx b/packages/ui/src/components/UserButton/index.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/UserButton/index.tsx rename to packages/ui/src/components/UserButton/index.tsx diff --git a/packages/clerk-js/src/ui/components/UserButton/useMultisessionActions.tsx b/packages/ui/src/components/UserButton/useMultisessionActions.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/UserButton/useMultisessionActions.tsx rename to packages/ui/src/components/UserButton/useMultisessionActions.tsx diff --git a/packages/clerk-js/src/ui/components/UserProfile/AccountPage.tsx b/packages/ui/src/components/UserProfile/AccountPage.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/UserProfile/AccountPage.tsx rename to packages/ui/src/components/UserProfile/AccountPage.tsx diff --git a/packages/clerk-js/src/ui/components/UserProfile/ActiveDevicesSection.tsx b/packages/ui/src/components/UserProfile/ActiveDevicesSection.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/UserProfile/ActiveDevicesSection.tsx rename to packages/ui/src/components/UserProfile/ActiveDevicesSection.tsx diff --git a/packages/clerk-js/src/ui/components/UserProfile/AddAuthenticatorApp.tsx b/packages/ui/src/components/UserProfile/AddAuthenticatorApp.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/UserProfile/AddAuthenticatorApp.tsx rename to packages/ui/src/components/UserProfile/AddAuthenticatorApp.tsx diff --git a/packages/clerk-js/src/ui/components/UserProfile/ApiKeysPage.tsx b/packages/ui/src/components/UserProfile/ApiKeysPage.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/UserProfile/ApiKeysPage.tsx rename to packages/ui/src/components/UserProfile/ApiKeysPage.tsx diff --git a/packages/clerk-js/src/ui/components/UserProfile/BillingPage.tsx b/packages/ui/src/components/UserProfile/BillingPage.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/UserProfile/BillingPage.tsx rename to packages/ui/src/components/UserProfile/BillingPage.tsx diff --git a/packages/clerk-js/src/ui/components/UserProfile/ConnectedAccountsMenu.tsx b/packages/ui/src/components/UserProfile/ConnectedAccountsMenu.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/UserProfile/ConnectedAccountsMenu.tsx rename to packages/ui/src/components/UserProfile/ConnectedAccountsMenu.tsx diff --git a/packages/clerk-js/src/ui/components/UserProfile/ConnectedAccountsSection.tsx b/packages/ui/src/components/UserProfile/ConnectedAccountsSection.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/UserProfile/ConnectedAccountsSection.tsx rename to packages/ui/src/components/UserProfile/ConnectedAccountsSection.tsx diff --git a/packages/clerk-js/src/ui/components/UserProfile/DeleteSection.tsx b/packages/ui/src/components/UserProfile/DeleteSection.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/UserProfile/DeleteSection.tsx rename to packages/ui/src/components/UserProfile/DeleteSection.tsx diff --git a/packages/clerk-js/src/ui/components/UserProfile/DeleteUserForm.tsx b/packages/ui/src/components/UserProfile/DeleteUserForm.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/UserProfile/DeleteUserForm.tsx rename to packages/ui/src/components/UserProfile/DeleteUserForm.tsx diff --git a/packages/clerk-js/src/ui/components/UserProfile/EmailForm.tsx b/packages/ui/src/components/UserProfile/EmailForm.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/UserProfile/EmailForm.tsx rename to packages/ui/src/components/UserProfile/EmailForm.tsx diff --git a/packages/clerk-js/src/ui/components/UserProfile/EmailsSection.tsx b/packages/ui/src/components/UserProfile/EmailsSection.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/UserProfile/EmailsSection.tsx rename to packages/ui/src/components/UserProfile/EmailsSection.tsx diff --git a/packages/clerk-js/src/ui/components/UserProfile/EnterpriseAccountsSection.tsx b/packages/ui/src/components/UserProfile/EnterpriseAccountsSection.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/UserProfile/EnterpriseAccountsSection.tsx rename to packages/ui/src/components/UserProfile/EnterpriseAccountsSection.tsx diff --git a/packages/clerk-js/src/ui/components/UserProfile/LinkButtonWithDescription.tsx b/packages/ui/src/components/UserProfile/LinkButtonWithDescription.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/UserProfile/LinkButtonWithDescription.tsx rename to packages/ui/src/components/UserProfile/LinkButtonWithDescription.tsx diff --git a/packages/clerk-js/src/ui/components/UserProfile/MfaBackupCodeCreateForm.tsx b/packages/ui/src/components/UserProfile/MfaBackupCodeCreateForm.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/UserProfile/MfaBackupCodeCreateForm.tsx rename to packages/ui/src/components/UserProfile/MfaBackupCodeCreateForm.tsx diff --git a/packages/clerk-js/src/ui/components/UserProfile/MfaBackupCodeList.tsx b/packages/ui/src/components/UserProfile/MfaBackupCodeList.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/UserProfile/MfaBackupCodeList.tsx rename to packages/ui/src/components/UserProfile/MfaBackupCodeList.tsx diff --git a/packages/clerk-js/src/ui/components/UserProfile/MfaBackupCodeScreen.tsx b/packages/ui/src/components/UserProfile/MfaBackupCodeScreen.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/UserProfile/MfaBackupCodeScreen.tsx rename to packages/ui/src/components/UserProfile/MfaBackupCodeScreen.tsx diff --git a/packages/clerk-js/src/ui/components/UserProfile/MfaBackupCodeTile.tsx b/packages/ui/src/components/UserProfile/MfaBackupCodeTile.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/UserProfile/MfaBackupCodeTile.tsx rename to packages/ui/src/components/UserProfile/MfaBackupCodeTile.tsx diff --git a/packages/clerk-js/src/ui/components/UserProfile/MfaForm.tsx b/packages/ui/src/components/UserProfile/MfaForm.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/UserProfile/MfaForm.tsx rename to packages/ui/src/components/UserProfile/MfaForm.tsx diff --git a/packages/clerk-js/src/ui/components/UserProfile/MfaPhoneCodeScreen.tsx b/packages/ui/src/components/UserProfile/MfaPhoneCodeScreen.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/UserProfile/MfaPhoneCodeScreen.tsx rename to packages/ui/src/components/UserProfile/MfaPhoneCodeScreen.tsx diff --git a/packages/clerk-js/src/ui/components/UserProfile/MfaScreens.tsx b/packages/ui/src/components/UserProfile/MfaScreens.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/UserProfile/MfaScreens.tsx rename to packages/ui/src/components/UserProfile/MfaScreens.tsx diff --git a/packages/clerk-js/src/ui/components/UserProfile/MfaSection.tsx b/packages/ui/src/components/UserProfile/MfaSection.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/UserProfile/MfaSection.tsx rename to packages/ui/src/components/UserProfile/MfaSection.tsx diff --git a/packages/clerk-js/src/ui/components/UserProfile/MfaTOTPScreen.tsx b/packages/ui/src/components/UserProfile/MfaTOTPScreen.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/UserProfile/MfaTOTPScreen.tsx rename to packages/ui/src/components/UserProfile/MfaTOTPScreen.tsx diff --git a/packages/clerk-js/src/ui/components/UserProfile/PasskeySection.tsx b/packages/ui/src/components/UserProfile/PasskeySection.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/UserProfile/PasskeySection.tsx rename to packages/ui/src/components/UserProfile/PasskeySection.tsx diff --git a/packages/clerk-js/src/ui/components/UserProfile/PasswordForm.tsx b/packages/ui/src/components/UserProfile/PasswordForm.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/UserProfile/PasswordForm.tsx rename to packages/ui/src/components/UserProfile/PasswordForm.tsx diff --git a/packages/clerk-js/src/ui/components/UserProfile/PasswordSection.tsx b/packages/ui/src/components/UserProfile/PasswordSection.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/UserProfile/PasswordSection.tsx rename to packages/ui/src/components/UserProfile/PasswordSection.tsx diff --git a/packages/clerk-js/src/ui/components/UserProfile/PhoneForm.tsx b/packages/ui/src/components/UserProfile/PhoneForm.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/UserProfile/PhoneForm.tsx rename to packages/ui/src/components/UserProfile/PhoneForm.tsx diff --git a/packages/clerk-js/src/ui/components/UserProfile/PhoneSection.tsx b/packages/ui/src/components/UserProfile/PhoneSection.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/UserProfile/PhoneSection.tsx rename to packages/ui/src/components/UserProfile/PhoneSection.tsx diff --git a/packages/clerk-js/src/ui/components/UserProfile/PlansPage.tsx b/packages/ui/src/components/UserProfile/PlansPage.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/UserProfile/PlansPage.tsx rename to packages/ui/src/components/UserProfile/PlansPage.tsx diff --git a/packages/clerk-js/src/ui/components/UserProfile/ProfileForm.tsx b/packages/ui/src/components/UserProfile/ProfileForm.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/UserProfile/ProfileForm.tsx rename to packages/ui/src/components/UserProfile/ProfileForm.tsx diff --git a/packages/clerk-js/src/ui/components/UserProfile/RemoveResourceForm.tsx b/packages/ui/src/components/UserProfile/RemoveResourceForm.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/UserProfile/RemoveResourceForm.tsx rename to packages/ui/src/components/UserProfile/RemoveResourceForm.tsx diff --git a/packages/clerk-js/src/ui/components/UserProfile/SecurityPage.tsx b/packages/ui/src/components/UserProfile/SecurityPage.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/UserProfile/SecurityPage.tsx rename to packages/ui/src/components/UserProfile/SecurityPage.tsx diff --git a/packages/clerk-js/src/ui/components/UserProfile/UserProfileAvatarUploader.tsx b/packages/ui/src/components/UserProfile/UserProfileAvatarUploader.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/UserProfile/UserProfileAvatarUploader.tsx rename to packages/ui/src/components/UserProfile/UserProfileAvatarUploader.tsx diff --git a/packages/clerk-js/src/ui/components/UserProfile/UserProfileNavbar.tsx b/packages/ui/src/components/UserProfile/UserProfileNavbar.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/UserProfile/UserProfileNavbar.tsx rename to packages/ui/src/components/UserProfile/UserProfileNavbar.tsx diff --git a/packages/clerk-js/src/ui/components/UserProfile/UserProfileRoutes.tsx b/packages/ui/src/components/UserProfile/UserProfileRoutes.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/UserProfile/UserProfileRoutes.tsx rename to packages/ui/src/components/UserProfile/UserProfileRoutes.tsx diff --git a/packages/clerk-js/src/ui/components/UserProfile/UserProfileSection.tsx b/packages/ui/src/components/UserProfile/UserProfileSection.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/UserProfile/UserProfileSection.tsx rename to packages/ui/src/components/UserProfile/UserProfileSection.tsx diff --git a/packages/clerk-js/src/ui/components/UserProfile/UsernameForm.tsx b/packages/ui/src/components/UserProfile/UsernameForm.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/UserProfile/UsernameForm.tsx rename to packages/ui/src/components/UserProfile/UsernameForm.tsx diff --git a/packages/clerk-js/src/ui/components/UserProfile/UsernameSection.tsx b/packages/ui/src/components/UserProfile/UsernameSection.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/UserProfile/UsernameSection.tsx rename to packages/ui/src/components/UserProfile/UsernameSection.tsx diff --git a/packages/clerk-js/src/ui/components/UserProfile/VerifyTOTP.tsx b/packages/ui/src/components/UserProfile/VerifyTOTP.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/UserProfile/VerifyTOTP.tsx rename to packages/ui/src/components/UserProfile/VerifyTOTP.tsx diff --git a/packages/clerk-js/src/ui/components/UserProfile/VerifyWithCode.tsx b/packages/ui/src/components/UserProfile/VerifyWithCode.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/UserProfile/VerifyWithCode.tsx rename to packages/ui/src/components/UserProfile/VerifyWithCode.tsx diff --git a/packages/clerk-js/src/ui/components/UserProfile/VerifyWithEnterpriseConnection.tsx b/packages/ui/src/components/UserProfile/VerifyWithEnterpriseConnection.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/UserProfile/VerifyWithEnterpriseConnection.tsx rename to packages/ui/src/components/UserProfile/VerifyWithEnterpriseConnection.tsx diff --git a/packages/clerk-js/src/ui/components/UserProfile/VerifyWithLink.tsx b/packages/ui/src/components/UserProfile/VerifyWithLink.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/UserProfile/VerifyWithLink.tsx rename to packages/ui/src/components/UserProfile/VerifyWithLink.tsx diff --git a/packages/clerk-js/src/ui/components/UserProfile/Web3Form.tsx b/packages/ui/src/components/UserProfile/Web3Form.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/UserProfile/Web3Form.tsx rename to packages/ui/src/components/UserProfile/Web3Form.tsx diff --git a/packages/clerk-js/src/ui/components/UserProfile/Web3Section.tsx b/packages/ui/src/components/UserProfile/Web3Section.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/UserProfile/Web3Section.tsx rename to packages/ui/src/components/UserProfile/Web3Section.tsx diff --git a/packages/clerk-js/src/ui/components/UserProfile/__tests__/AccountPage.test.tsx b/packages/ui/src/components/UserProfile/__tests__/AccountPage.test.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/UserProfile/__tests__/AccountPage.test.tsx rename to packages/ui/src/components/UserProfile/__tests__/AccountPage.test.tsx diff --git a/packages/clerk-js/src/ui/components/UserProfile/__tests__/ConnectedAccountsSection.test.tsx b/packages/ui/src/components/UserProfile/__tests__/ConnectedAccountsSection.test.tsx similarity index 97% rename from packages/clerk-js/src/ui/components/UserProfile/__tests__/ConnectedAccountsSection.test.tsx rename to packages/ui/src/components/UserProfile/__tests__/ConnectedAccountsSection.test.tsx index 4ad555d8874..d200066132d 100644 --- a/packages/clerk-js/src/ui/components/UserProfile/__tests__/ConnectedAccountsSection.test.tsx +++ b/packages/ui/src/components/UserProfile/__tests__/ConnectedAccountsSection.test.tsx @@ -151,7 +151,7 @@ describe('ConnectedAccountsSection ', () => { // Still displays a remove button const menuButton = item.parentElement?.parentElement?.parentElement?.parentElement?.children?.[1]; await act(async () => { - await userEvent.click(menuButton!); + await userEvent.click(menuButton); }); getByRole('menuitem', { name: /remove/i }); @@ -185,7 +185,7 @@ describe('ConnectedAccountsSection ', () => { // Still displays a remove button const menuButton = item.parentElement?.parentElement?.parentElement?.parentElement?.children?.[1]; await act(async () => { - await userEvent.click(menuButton!); + await userEvent.click(menuButton); }); getByRole('menuitem', { name: /remove/i }); @@ -207,7 +207,7 @@ describe('ConnectedAccountsSection ', () => { // Still displays a remove button const menuButton = item.parentElement?.parentElement?.parentElement?.parentElement?.children?.[1]; await act(async () => { - await userEvent.click(menuButton!); + await userEvent.click(menuButton); }); getByRole('menuitem', { name: /remove/i }); @@ -227,7 +227,7 @@ describe('ConnectedAccountsSection ', () => { const item = getByText(/github/i); const menuButton = item.parentElement?.parentElement?.parentElement?.parentElement?.children?.[1]; await act(async () => { - await userEvent.click(menuButton!); + await userEvent.click(menuButton); }); getByRole('menuitem', { name: /remove/i }); await userEvent.click(getByRole('menuitem', { name: /remove/i })); @@ -247,7 +247,7 @@ describe('ConnectedAccountsSection ', () => { const item = getByText(/github/i); const menuButton = item.parentElement?.parentElement?.parentElement?.parentElement?.children?.[1]; await act(async () => { - await userEvent.click(menuButton!); + await userEvent.click(menuButton); }); getByRole('menuitem', { name: /remove/i }); await userEvent.click(getByRole('menuitem', { name: /remove/i })); @@ -264,7 +264,7 @@ describe('ConnectedAccountsSection ', () => { const item = getByText(/github/i); const menuButton = item.parentElement?.parentElement?.parentElement?.parentElement?.children?.[1]; await act(async () => { - await userEvent.click(menuButton!); + await userEvent.click(menuButton); }); getByRole('menuitem', { name: /remove/i }); await userEvent.click(getByRole('menuitem', { name: /remove/i })); @@ -285,7 +285,7 @@ describe('ConnectedAccountsSection ', () => { const item = getByText(/google/i); const menuButton = item.parentElement?.parentElement?.parentElement?.parentElement?.children?.[1]; await act(async () => { - await userEvent.click(menuButton!); + await userEvent.click(menuButton); }); getByRole('menuitem', { name: /remove/i }); await userEvent.click(getByRole('menuitem', { name: /remove/i })); diff --git a/packages/clerk-js/src/ui/components/UserProfile/__tests__/EmailsSection.test.tsx b/packages/ui/src/components/UserProfile/__tests__/EmailsSection.test.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/UserProfile/__tests__/EmailsSection.test.tsx rename to packages/ui/src/components/UserProfile/__tests__/EmailsSection.test.tsx diff --git a/packages/clerk-js/src/ui/components/UserProfile/__tests__/EnterpriseAccountsSection.test.tsx b/packages/ui/src/components/UserProfile/__tests__/EnterpriseAccountsSection.test.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/UserProfile/__tests__/EnterpriseAccountsSection.test.tsx rename to packages/ui/src/components/UserProfile/__tests__/EnterpriseAccountsSection.test.tsx diff --git a/packages/clerk-js/src/ui/components/UserProfile/__tests__/MfaPage.test.tsx b/packages/ui/src/components/UserProfile/__tests__/MfaPage.test.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/UserProfile/__tests__/MfaPage.test.tsx rename to packages/ui/src/components/UserProfile/__tests__/MfaPage.test.tsx diff --git a/packages/clerk-js/src/ui/components/UserProfile/__tests__/PasskeysSection.test.tsx b/packages/ui/src/components/UserProfile/__tests__/PasskeysSection.test.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/UserProfile/__tests__/PasskeysSection.test.tsx rename to packages/ui/src/components/UserProfile/__tests__/PasskeysSection.test.tsx diff --git a/packages/clerk-js/src/ui/components/UserProfile/__tests__/PasswordSection.test.tsx b/packages/ui/src/components/UserProfile/__tests__/PasswordSection.test.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/UserProfile/__tests__/PasswordSection.test.tsx rename to packages/ui/src/components/UserProfile/__tests__/PasswordSection.test.tsx diff --git a/packages/clerk-js/src/ui/components/UserProfile/__tests__/PhoneSection.test.tsx b/packages/ui/src/components/UserProfile/__tests__/PhoneSection.test.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/UserProfile/__tests__/PhoneSection.test.tsx rename to packages/ui/src/components/UserProfile/__tests__/PhoneSection.test.tsx diff --git a/packages/clerk-js/src/ui/components/UserProfile/__tests__/SecurityPage.test.tsx b/packages/ui/src/components/UserProfile/__tests__/SecurityPage.test.tsx similarity index 99% rename from packages/clerk-js/src/ui/components/UserProfile/__tests__/SecurityPage.test.tsx rename to packages/ui/src/components/UserProfile/__tests__/SecurityPage.test.tsx index 47f8004c652..d059b444ba3 100644 --- a/packages/clerk-js/src/ui/components/UserProfile/__tests__/SecurityPage.test.tsx +++ b/packages/ui/src/components/UserProfile/__tests__/SecurityPage.test.tsx @@ -359,7 +359,7 @@ describe('SecurityPage', () => { const elem = d.parentElement?.parentElement?.parentElement?.parentElement; expect(elem).toBeDefined(); - const { getByText } = within(elem!); + const { getByText } = within(elem); getByText(/107.0.0.0/i); getByText(/Athens/i); getByText(/Greece/i); diff --git a/packages/clerk-js/src/ui/components/UserProfile/__tests__/UserProfile.test.tsx b/packages/ui/src/components/UserProfile/__tests__/UserProfile.test.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/UserProfile/__tests__/UserProfile.test.tsx rename to packages/ui/src/components/UserProfile/__tests__/UserProfile.test.tsx diff --git a/packages/clerk-js/src/ui/components/UserProfile/__tests__/UserProfileSection.test.tsx b/packages/ui/src/components/UserProfile/__tests__/UserProfileSection.test.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/UserProfile/__tests__/UserProfileSection.test.tsx rename to packages/ui/src/components/UserProfile/__tests__/UserProfileSection.test.tsx diff --git a/packages/clerk-js/src/ui/components/UserProfile/__tests__/UsernameSection.test.tsx b/packages/ui/src/components/UserProfile/__tests__/UsernameSection.test.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/UserProfile/__tests__/UsernameSection.test.tsx rename to packages/ui/src/components/UserProfile/__tests__/UsernameSection.test.tsx diff --git a/packages/clerk-js/src/ui/components/UserProfile/__tests__/utils.test.ts b/packages/ui/src/components/UserProfile/__tests__/utils.test.ts similarity index 100% rename from packages/clerk-js/src/ui/components/UserProfile/__tests__/utils.test.ts rename to packages/ui/src/components/UserProfile/__tests__/utils.test.ts diff --git a/packages/clerk-js/src/ui/components/UserProfile/index.tsx b/packages/ui/src/components/UserProfile/index.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/UserProfile/index.tsx rename to packages/ui/src/components/UserProfile/index.tsx diff --git a/packages/clerk-js/src/ui/components/UserProfile/utils.ts b/packages/ui/src/components/UserProfile/utils.ts similarity index 100% rename from packages/clerk-js/src/ui/components/UserProfile/utils.ts rename to packages/ui/src/components/UserProfile/utils.ts diff --git a/packages/clerk-js/src/ui/components/UserVerification/AlternativeMethods.tsx b/packages/ui/src/components/UserVerification/AlternativeMethods.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/UserVerification/AlternativeMethods.tsx rename to packages/ui/src/components/UserVerification/AlternativeMethods.tsx diff --git a/packages/clerk-js/src/ui/components/UserVerification/HavingTrouble.tsx b/packages/ui/src/components/UserVerification/HavingTrouble.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/UserVerification/HavingTrouble.tsx rename to packages/ui/src/components/UserVerification/HavingTrouble.tsx diff --git a/packages/clerk-js/src/ui/components/UserVerification/UVFactorOneCodeForm.tsx b/packages/ui/src/components/UserVerification/UVFactorOneCodeForm.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/UserVerification/UVFactorOneCodeForm.tsx rename to packages/ui/src/components/UserVerification/UVFactorOneCodeForm.tsx diff --git a/packages/clerk-js/src/ui/components/UserVerification/UVFactorOneEmailCodeCard.tsx b/packages/ui/src/components/UserVerification/UVFactorOneEmailCodeCard.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/UserVerification/UVFactorOneEmailCodeCard.tsx rename to packages/ui/src/components/UserVerification/UVFactorOneEmailCodeCard.tsx diff --git a/packages/clerk-js/src/ui/components/UserVerification/UVFactorOnePasskeysCard.tsx b/packages/ui/src/components/UserVerification/UVFactorOnePasskeysCard.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/UserVerification/UVFactorOnePasskeysCard.tsx rename to packages/ui/src/components/UserVerification/UVFactorOnePasskeysCard.tsx diff --git a/packages/clerk-js/src/ui/components/UserVerification/UVFactorOnePhoneCodeCard.tsx b/packages/ui/src/components/UserVerification/UVFactorOnePhoneCodeCard.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/UserVerification/UVFactorOnePhoneCodeCard.tsx rename to packages/ui/src/components/UserVerification/UVFactorOnePhoneCodeCard.tsx diff --git a/packages/clerk-js/src/ui/components/UserVerification/UVFactorTwoAlternativeMethods.tsx b/packages/ui/src/components/UserVerification/UVFactorTwoAlternativeMethods.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/UserVerification/UVFactorTwoAlternativeMethods.tsx rename to packages/ui/src/components/UserVerification/UVFactorTwoAlternativeMethods.tsx diff --git a/packages/clerk-js/src/ui/components/UserVerification/UVFactorTwoBackupCodeCard.tsx b/packages/ui/src/components/UserVerification/UVFactorTwoBackupCodeCard.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/UserVerification/UVFactorTwoBackupCodeCard.tsx rename to packages/ui/src/components/UserVerification/UVFactorTwoBackupCodeCard.tsx diff --git a/packages/clerk-js/src/ui/components/UserVerification/UVFactorTwoCodeForm.tsx b/packages/ui/src/components/UserVerification/UVFactorTwoCodeForm.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/UserVerification/UVFactorTwoCodeForm.tsx rename to packages/ui/src/components/UserVerification/UVFactorTwoCodeForm.tsx diff --git a/packages/clerk-js/src/ui/components/UserVerification/UVFactorTwoPhoneCodeCard.tsx b/packages/ui/src/components/UserVerification/UVFactorTwoPhoneCodeCard.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/UserVerification/UVFactorTwoPhoneCodeCard.tsx rename to packages/ui/src/components/UserVerification/UVFactorTwoPhoneCodeCard.tsx diff --git a/packages/clerk-js/src/ui/components/UserVerification/UserVerificationFactorOne.tsx b/packages/ui/src/components/UserVerification/UserVerificationFactorOne.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/UserVerification/UserVerificationFactorOne.tsx rename to packages/ui/src/components/UserVerification/UserVerificationFactorOne.tsx diff --git a/packages/clerk-js/src/ui/components/UserVerification/UserVerificationFactorOnePassword.tsx b/packages/ui/src/components/UserVerification/UserVerificationFactorOnePassword.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/UserVerification/UserVerificationFactorOnePassword.tsx rename to packages/ui/src/components/UserVerification/UserVerificationFactorOnePassword.tsx diff --git a/packages/clerk-js/src/ui/components/UserVerification/UserVerificationFactorTwo.tsx b/packages/ui/src/components/UserVerification/UserVerificationFactorTwo.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/UserVerification/UserVerificationFactorTwo.tsx rename to packages/ui/src/components/UserVerification/UserVerificationFactorTwo.tsx diff --git a/packages/clerk-js/src/ui/components/UserVerification/UserVerificationFactorTwoTOTP.tsx b/packages/ui/src/components/UserVerification/UserVerificationFactorTwoTOTP.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/UserVerification/UserVerificationFactorTwoTOTP.tsx rename to packages/ui/src/components/UserVerification/UserVerificationFactorTwoTOTP.tsx diff --git a/packages/clerk-js/src/ui/components/UserVerification/__tests__/UVFactorOne.test.tsx b/packages/ui/src/components/UserVerification/__tests__/UVFactorOne.test.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/UserVerification/__tests__/UVFactorOne.test.tsx rename to packages/ui/src/components/UserVerification/__tests__/UVFactorOne.test.tsx diff --git a/packages/clerk-js/src/ui/components/UserVerification/__tests__/UVFactorTwo.test.tsx b/packages/ui/src/components/UserVerification/__tests__/UVFactorTwo.test.tsx similarity index 85% rename from packages/clerk-js/src/ui/components/UserVerification/__tests__/UVFactorTwo.test.tsx rename to packages/ui/src/components/UserVerification/__tests__/UVFactorTwo.test.tsx index e56b1c0ab45..569073c8c85 100644 --- a/packages/clerk-js/src/ui/components/UserVerification/__tests__/UVFactorTwo.test.tsx +++ b/packages/ui/src/components/UserVerification/__tests__/UVFactorTwo.test.tsx @@ -21,12 +21,12 @@ describe('UserVerificationFactorTwo', () => { const { wrapper, fixtures } = await createFixtures(f => { f.withUser({ username: 'clerkuser' }); }); - vi.spyOn(fixtures.session!, 'startVerification').mockResolvedValue({ + vi.spyOn(fixtures.session, 'startVerification').mockResolvedValue({ status: 'needs_second_factor', supportedSecondFactors: [{ strategy: 'phone_code' }], } as any); - vi.spyOn(fixtures.session!, 'prepareSecondFactorVerification').mockResolvedValue({ + vi.spyOn(fixtures.session, 'prepareSecondFactorVerification').mockResolvedValue({ status: 'needs_second_factor', supportedSecondFactors: [{ strategy: 'phone_code' }], } as any); @@ -42,12 +42,12 @@ describe('UserVerificationFactorTwo', () => { const { wrapper, fixtures } = await createFixtures(f => { f.withUser({ username: 'clerkuser' }); }); - vi.spyOn(fixtures.session!, 'startVerification').mockResolvedValue({ + vi.spyOn(fixtures.session, 'startVerification').mockResolvedValue({ status: 'needs_second_factor', supportedSecondFactors: [{ strategy: 'totp' }], } as any); - vi.spyOn(fixtures.session!, 'prepareSecondFactorVerification').mockResolvedValue({ + vi.spyOn(fixtures.session, 'prepareSecondFactorVerification').mockResolvedValue({ status: 'needs_second_factor', supportedSecondFactors: [{ strategy: 'totp' }], } as any); @@ -62,12 +62,12 @@ describe('UserVerificationFactorTwo', () => { const { wrapper, fixtures } = await createFixtures(f => { f.withUser({ username: 'clerkuser' }); }); - vi.spyOn(fixtures.session!, 'startVerification').mockResolvedValue({ + vi.spyOn(fixtures.session, 'startVerification').mockResolvedValue({ status: 'needs_second_factor', supportedSecondFactors: [{ strategy: 'backup_code' }], } as any); - vi.spyOn(fixtures.session!, 'prepareSecondFactorVerification').mockResolvedValue({ + vi.spyOn(fixtures.session, 'prepareSecondFactorVerification').mockResolvedValue({ status: 'needs_second_factor', supportedSecondFactors: [{ strategy: 'backup_code' }], } as any); @@ -83,7 +83,7 @@ describe('UserVerificationFactorTwo', () => { const { wrapper, fixtures } = await createFixtures(f => { f.withUser({ username: 'clerkuser' }); }); - vi.spyOn(fixtures.session!, 'startVerification').mockResolvedValue({ + vi.spyOn(fixtures.session, 'startVerification').mockResolvedValue({ status: 'needs_first_factor', } as any); render(, { wrapper }); @@ -97,17 +97,17 @@ describe('UserVerificationFactorTwo', () => { const { wrapper, fixtures } = await createFixtures(f => { f.withUser({ username: 'clerkuser' }); }); - vi.spyOn(fixtures.session!, 'startVerification').mockResolvedValue({ + vi.spyOn(fixtures.session, 'startVerification').mockResolvedValue({ status: 'needs_second_factor', supportedSecondFactors: [{ strategy: 'phone_code' }], } as any); - vi.spyOn(fixtures.session!, 'prepareSecondFactorVerification').mockResolvedValue({ + vi.spyOn(fixtures.session, 'prepareSecondFactorVerification').mockResolvedValue({ status: 'needs_second_factor', supportedSecondFactors: [{ strategy: 'phone_code' }], } as any); - vi.spyOn(fixtures.session!, 'attemptSecondFactorVerification').mockResolvedValue({ + vi.spyOn(fixtures.session, 'attemptSecondFactorVerification').mockResolvedValue({ status: 'complete', supportedSecondFactors: [], session: { @@ -131,7 +131,7 @@ describe('UserVerificationFactorTwo', () => { const { wrapper, fixtures } = await createFixtures(f => { f.withUser({ username: 'clerkuser' }); }); - vi.spyOn(fixtures.session!, 'startVerification').mockResolvedValue({ + vi.spyOn(fixtures.session, 'startVerification').mockResolvedValue({ status: 'needs_second_factor', supportedSecondFactors: [ { @@ -146,7 +146,7 @@ describe('UserVerificationFactorTwo', () => { }, ], } as any); - vi.spyOn(fixtures.session!, 'prepareSecondFactorVerification').mockResolvedValue({} as any); + vi.spyOn(fixtures.session, 'prepareSecondFactorVerification').mockResolvedValue({} as any); const { userEvent, findByText, getByText, findByRole } = render(, { wrapper, @@ -165,7 +165,7 @@ describe('UserVerificationFactorTwo', () => { const { wrapper, fixtures } = await createFixtures(f => { f.withUser({ username: 'clerkuser' }); }); - vi.spyOn(fixtures.session!, 'startVerification').mockResolvedValue({ + vi.spyOn(fixtures.session, 'startVerification').mockResolvedValue({ status: 'needs_second_factor', supportedSecondFactors: [ { @@ -180,7 +180,7 @@ describe('UserVerificationFactorTwo', () => { }, ], } as any); - vi.spyOn(fixtures.session!, 'prepareSecondFactorVerification').mockResolvedValue({} as any); + vi.spyOn(fixtures.session, 'prepareSecondFactorVerification').mockResolvedValue({} as any); const { userEvent, findByText, getByText, container } = render(, { wrapper }); diff --git a/packages/clerk-js/src/ui/components/UserVerification/index.tsx b/packages/ui/src/components/UserVerification/index.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/UserVerification/index.tsx rename to packages/ui/src/components/UserVerification/index.tsx diff --git a/packages/clerk-js/src/ui/components/UserVerification/use-after-verification.ts b/packages/ui/src/components/UserVerification/use-after-verification.ts similarity index 100% rename from packages/clerk-js/src/ui/components/UserVerification/use-after-verification.ts rename to packages/ui/src/components/UserVerification/use-after-verification.ts diff --git a/packages/clerk-js/src/ui/components/UserVerification/useReverificationAlternativeStrategies.ts b/packages/ui/src/components/UserVerification/useReverificationAlternativeStrategies.ts similarity index 100% rename from packages/clerk-js/src/ui/components/UserVerification/useReverificationAlternativeStrategies.ts rename to packages/ui/src/components/UserVerification/useReverificationAlternativeStrategies.ts diff --git a/packages/clerk-js/src/ui/components/UserVerification/useUserVerificationSession.tsx b/packages/ui/src/components/UserVerification/useUserVerificationSession.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/UserVerification/useUserVerificationSession.tsx rename to packages/ui/src/components/UserVerification/useUserVerificationSession.tsx diff --git a/packages/clerk-js/src/ui/components/UserVerification/utils.ts b/packages/ui/src/components/UserVerification/utils.ts similarity index 100% rename from packages/clerk-js/src/ui/components/UserVerification/utils.ts rename to packages/ui/src/components/UserVerification/utils.ts diff --git a/packages/clerk-js/src/ui/components/UserVerification/withHavingTrouble.tsx b/packages/ui/src/components/UserVerification/withHavingTrouble.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/UserVerification/withHavingTrouble.tsx rename to packages/ui/src/components/UserVerification/withHavingTrouble.tsx diff --git a/packages/clerk-js/src/ui/components/Waitlist/WaitlistForm.tsx b/packages/ui/src/components/Waitlist/WaitlistForm.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/Waitlist/WaitlistForm.tsx rename to packages/ui/src/components/Waitlist/WaitlistForm.tsx diff --git a/packages/clerk-js/src/ui/components/Waitlist/__tests__/Waitlist.test.tsx b/packages/ui/src/components/Waitlist/__tests__/Waitlist.test.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/Waitlist/__tests__/Waitlist.test.tsx rename to packages/ui/src/components/Waitlist/__tests__/Waitlist.test.tsx diff --git a/packages/clerk-js/src/ui/components/Waitlist/index.tsx b/packages/ui/src/components/Waitlist/index.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/Waitlist/index.tsx rename to packages/ui/src/components/Waitlist/index.tsx diff --git a/packages/clerk-js/src/ui/components/Waitlist/waitlistFormHelpers.ts b/packages/ui/src/components/Waitlist/waitlistFormHelpers.ts similarity index 100% rename from packages/clerk-js/src/ui/components/Waitlist/waitlistFormHelpers.ts rename to packages/ui/src/components/Waitlist/waitlistFormHelpers.ts diff --git a/packages/clerk-js/src/ui/components/prefetch-organization-list.tsx b/packages/ui/src/components/prefetch-organization-list.tsx similarity index 100% rename from packages/clerk-js/src/ui/components/prefetch-organization-list.tsx rename to packages/ui/src/components/prefetch-organization-list.tsx diff --git a/packages/clerk-js/src/ui/constants.ts b/packages/ui/src/constants.ts similarity index 100% rename from packages/clerk-js/src/ui/constants.ts rename to packages/ui/src/constants.ts diff --git a/packages/clerk-js/src/ui/contexts/AcceptedUserInvitations.tsx b/packages/ui/src/contexts/AcceptedUserInvitations.tsx similarity index 100% rename from packages/clerk-js/src/ui/contexts/AcceptedUserInvitations.tsx rename to packages/ui/src/contexts/AcceptedUserInvitations.tsx diff --git a/packages/clerk-js/src/ui/contexts/ClerkUIComponentsContext.tsx b/packages/ui/src/contexts/ClerkUIComponentsContext.tsx similarity index 100% rename from packages/clerk-js/src/ui/contexts/ClerkUIComponentsContext.tsx rename to packages/ui/src/contexts/ClerkUIComponentsContext.tsx diff --git a/packages/clerk-js/src/ui/contexts/CoreClerkContextWrapper.tsx b/packages/ui/src/contexts/CoreClerkContextWrapper.tsx similarity index 100% rename from packages/clerk-js/src/ui/contexts/CoreClerkContextWrapper.tsx rename to packages/ui/src/contexts/CoreClerkContextWrapper.tsx diff --git a/packages/clerk-js/src/ui/contexts/CoreClientContext.tsx b/packages/ui/src/contexts/CoreClientContext.tsx similarity index 100% rename from packages/clerk-js/src/ui/contexts/CoreClientContext.tsx rename to packages/ui/src/contexts/CoreClientContext.tsx diff --git a/packages/clerk-js/src/ui/contexts/CoreSessionContext.tsx b/packages/ui/src/contexts/CoreSessionContext.tsx similarity index 100% rename from packages/clerk-js/src/ui/contexts/CoreSessionContext.tsx rename to packages/ui/src/contexts/CoreSessionContext.tsx diff --git a/packages/clerk-js/src/ui/contexts/CoreUserContext.tsx b/packages/ui/src/contexts/CoreUserContext.tsx similarity index 100% rename from packages/clerk-js/src/ui/contexts/CoreUserContext.tsx rename to packages/ui/src/contexts/CoreUserContext.tsx diff --git a/packages/clerk-js/src/ui/contexts/EnvironmentContext.tsx b/packages/ui/src/contexts/EnvironmentContext.tsx similarity index 100% rename from packages/clerk-js/src/ui/contexts/EnvironmentContext.tsx rename to packages/ui/src/contexts/EnvironmentContext.tsx diff --git a/packages/clerk-js/src/ui/contexts/OptionsContext.tsx b/packages/ui/src/contexts/OptionsContext.tsx similarity index 100% rename from packages/clerk-js/src/ui/contexts/OptionsContext.tsx rename to packages/ui/src/contexts/OptionsContext.tsx diff --git a/packages/clerk-js/src/ui/contexts/components/ApiKeys.ts b/packages/ui/src/contexts/components/ApiKeys.ts similarity index 100% rename from packages/clerk-js/src/ui/contexts/components/ApiKeys.ts rename to packages/ui/src/contexts/components/ApiKeys.ts diff --git a/packages/clerk-js/src/ui/contexts/components/Checkout.ts b/packages/ui/src/contexts/components/Checkout.ts similarity index 100% rename from packages/clerk-js/src/ui/contexts/components/Checkout.ts rename to packages/ui/src/contexts/components/Checkout.ts diff --git a/packages/clerk-js/src/ui/contexts/components/CreateOrganization.ts b/packages/ui/src/contexts/components/CreateOrganization.ts similarity index 100% rename from packages/clerk-js/src/ui/contexts/components/CreateOrganization.ts rename to packages/ui/src/contexts/components/CreateOrganization.ts diff --git a/packages/clerk-js/src/ui/contexts/components/GoogleOneTap.ts b/packages/ui/src/contexts/components/GoogleOneTap.ts similarity index 100% rename from packages/clerk-js/src/ui/contexts/components/GoogleOneTap.ts rename to packages/ui/src/contexts/components/GoogleOneTap.ts diff --git a/packages/clerk-js/src/ui/contexts/components/OAuthConsent.ts b/packages/ui/src/contexts/components/OAuthConsent.ts similarity index 100% rename from packages/clerk-js/src/ui/contexts/components/OAuthConsent.ts rename to packages/ui/src/contexts/components/OAuthConsent.ts diff --git a/packages/clerk-js/src/ui/contexts/components/OrganizationList.ts b/packages/ui/src/contexts/components/OrganizationList.ts similarity index 100% rename from packages/clerk-js/src/ui/contexts/components/OrganizationList.ts rename to packages/ui/src/contexts/components/OrganizationList.ts diff --git a/packages/clerk-js/src/ui/contexts/components/OrganizationProfile.ts b/packages/ui/src/contexts/components/OrganizationProfile.ts similarity index 100% rename from packages/clerk-js/src/ui/contexts/components/OrganizationProfile.ts rename to packages/ui/src/contexts/components/OrganizationProfile.ts diff --git a/packages/clerk-js/src/ui/contexts/components/OrganizationSwitcher.ts b/packages/ui/src/contexts/components/OrganizationSwitcher.ts similarity index 100% rename from packages/clerk-js/src/ui/contexts/components/OrganizationSwitcher.ts rename to packages/ui/src/contexts/components/OrganizationSwitcher.ts diff --git a/packages/clerk-js/src/ui/contexts/components/Plans.tsx b/packages/ui/src/contexts/components/Plans.tsx similarity index 100% rename from packages/clerk-js/src/ui/contexts/components/Plans.tsx rename to packages/ui/src/contexts/components/Plans.tsx diff --git a/packages/clerk-js/src/ui/contexts/components/PricingTable.ts b/packages/ui/src/contexts/components/PricingTable.ts similarity index 100% rename from packages/clerk-js/src/ui/contexts/components/PricingTable.ts rename to packages/ui/src/contexts/components/PricingTable.ts diff --git a/packages/clerk-js/src/ui/contexts/components/SessionTasks.ts b/packages/ui/src/contexts/components/SessionTasks.ts similarity index 100% rename from packages/clerk-js/src/ui/contexts/components/SessionTasks.ts rename to packages/ui/src/contexts/components/SessionTasks.ts diff --git a/packages/clerk-js/src/ui/contexts/components/SignIn.ts b/packages/ui/src/contexts/components/SignIn.ts similarity index 100% rename from packages/clerk-js/src/ui/contexts/components/SignIn.ts rename to packages/ui/src/contexts/components/SignIn.ts diff --git a/packages/clerk-js/src/ui/contexts/components/SignOut.ts b/packages/ui/src/contexts/components/SignOut.ts similarity index 100% rename from packages/clerk-js/src/ui/contexts/components/SignOut.ts rename to packages/ui/src/contexts/components/SignOut.ts diff --git a/packages/clerk-js/src/ui/contexts/components/SignUp.ts b/packages/ui/src/contexts/components/SignUp.ts similarity index 100% rename from packages/clerk-js/src/ui/contexts/components/SignUp.ts rename to packages/ui/src/contexts/components/SignUp.ts diff --git a/packages/clerk-js/src/ui/contexts/components/SubscriberType.ts b/packages/ui/src/contexts/components/SubscriberType.ts similarity index 100% rename from packages/clerk-js/src/ui/contexts/components/SubscriberType.ts rename to packages/ui/src/contexts/components/SubscriberType.ts diff --git a/packages/clerk-js/src/ui/contexts/components/SubscriptionDetails.ts b/packages/ui/src/contexts/components/SubscriptionDetails.ts similarity index 100% rename from packages/clerk-js/src/ui/contexts/components/SubscriptionDetails.ts rename to packages/ui/src/contexts/components/SubscriptionDetails.ts diff --git a/packages/clerk-js/src/ui/contexts/components/UserAvatar.ts b/packages/ui/src/contexts/components/UserAvatar.ts similarity index 100% rename from packages/clerk-js/src/ui/contexts/components/UserAvatar.ts rename to packages/ui/src/contexts/components/UserAvatar.ts diff --git a/packages/clerk-js/src/ui/contexts/components/UserButton.ts b/packages/ui/src/contexts/components/UserButton.ts similarity index 100% rename from packages/clerk-js/src/ui/contexts/components/UserButton.ts rename to packages/ui/src/contexts/components/UserButton.ts diff --git a/packages/clerk-js/src/ui/contexts/components/UserProfile.ts b/packages/ui/src/contexts/components/UserProfile.ts similarity index 100% rename from packages/clerk-js/src/ui/contexts/components/UserProfile.ts rename to packages/ui/src/contexts/components/UserProfile.ts diff --git a/packages/clerk-js/src/ui/contexts/components/UserVerification.ts b/packages/ui/src/contexts/components/UserVerification.ts similarity index 100% rename from packages/clerk-js/src/ui/contexts/components/UserVerification.ts rename to packages/ui/src/contexts/components/UserVerification.ts diff --git a/packages/clerk-js/src/ui/contexts/components/Waitlist.ts b/packages/ui/src/contexts/components/Waitlist.ts similarity index 100% rename from packages/clerk-js/src/ui/contexts/components/Waitlist.ts rename to packages/ui/src/contexts/components/Waitlist.ts diff --git a/packages/clerk-js/src/ui/contexts/components/index.ts b/packages/ui/src/contexts/components/index.ts similarity index 100% rename from packages/clerk-js/src/ui/contexts/components/index.ts rename to packages/ui/src/contexts/components/index.ts diff --git a/packages/clerk-js/src/ui/contexts/index.ts b/packages/ui/src/contexts/index.ts similarity index 100% rename from packages/clerk-js/src/ui/contexts/index.ts rename to packages/ui/src/contexts/index.ts diff --git a/packages/clerk-js/src/ui/contexts/utils.ts b/packages/ui/src/contexts/utils.ts similarity index 94% rename from packages/clerk-js/src/ui/contexts/utils.ts rename to packages/ui/src/contexts/utils.ts index ea944e46928..64293b56c21 100644 --- a/packages/clerk-js/src/ui/contexts/utils.ts +++ b/packages/ui/src/contexts/utils.ts @@ -1,7 +1,7 @@ +import { clerkCoreErrorContextProviderNotFound, clerkCoreErrorNoClerkSingleton } from '@clerk/shared/internal/clerk-js'; import type { Clerk } from '@clerk/shared/types'; import { snakeToCamel } from '@clerk/shared/underscore'; -import { clerkCoreErrorContextProviderNotFound, clerkCoreErrorNoClerkSingleton } from '../../core/errors'; import { createDynamicParamParser } from '../../utils'; export function assertClerkSingletonExists(clerk: Clerk | undefined): asserts clerk is Clerk { diff --git a/packages/clerk-js/src/ui/customizables/AppearanceContext.tsx b/packages/ui/src/customizables/AppearanceContext.tsx similarity index 100% rename from packages/clerk-js/src/ui/customizables/AppearanceContext.tsx rename to packages/ui/src/customizables/AppearanceContext.tsx diff --git a/packages/clerk-js/src/ui/customizables/Flow.tsx b/packages/ui/src/customizables/Flow.tsx similarity index 100% rename from packages/clerk-js/src/ui/customizables/Flow.tsx rename to packages/ui/src/customizables/Flow.tsx diff --git a/packages/clerk-js/src/ui/customizables/__tests__/FlowRoot.spec.tsx b/packages/ui/src/customizables/__tests__/FlowRoot.spec.tsx similarity index 100% rename from packages/clerk-js/src/ui/customizables/__tests__/FlowRoot.spec.tsx rename to packages/ui/src/customizables/__tests__/FlowRoot.spec.tsx diff --git a/packages/clerk-js/src/ui/customizables/__tests__/elementDescriptors.test.tsx b/packages/ui/src/customizables/__tests__/elementDescriptors.test.tsx similarity index 100% rename from packages/clerk-js/src/ui/customizables/__tests__/elementDescriptors.test.tsx rename to packages/ui/src/customizables/__tests__/elementDescriptors.test.tsx diff --git a/packages/clerk-js/src/ui/customizables/__tests__/makeCustomizable.test.tsx b/packages/ui/src/customizables/__tests__/makeCustomizable.test.tsx similarity index 100% rename from packages/clerk-js/src/ui/customizables/__tests__/makeCustomizable.test.tsx rename to packages/ui/src/customizables/__tests__/makeCustomizable.test.tsx diff --git a/packages/clerk-js/src/ui/customizables/__tests__/parseAppearance.test.tsx b/packages/ui/src/customizables/__tests__/parseAppearance.test.tsx similarity index 100% rename from packages/clerk-js/src/ui/customizables/__tests__/parseAppearance.test.tsx rename to packages/ui/src/customizables/__tests__/parseAppearance.test.tsx diff --git a/packages/clerk-js/src/ui/customizables/__tests__/parseVariables.test.ts b/packages/ui/src/customizables/__tests__/parseVariables.test.ts similarity index 100% rename from packages/clerk-js/src/ui/customizables/__tests__/parseVariables.test.ts rename to packages/ui/src/customizables/__tests__/parseVariables.test.ts diff --git a/packages/clerk-js/src/ui/customizables/__tests__/test-utils.ts b/packages/ui/src/customizables/__tests__/test-utils.ts similarity index 100% rename from packages/clerk-js/src/ui/customizables/__tests__/test-utils.ts rename to packages/ui/src/customizables/__tests__/test-utils.ts diff --git a/packages/clerk-js/src/ui/customizables/classGeneration.ts b/packages/ui/src/customizables/classGeneration.ts similarity index 100% rename from packages/clerk-js/src/ui/customizables/classGeneration.ts rename to packages/ui/src/customizables/classGeneration.ts diff --git a/packages/clerk-js/src/ui/customizables/elementDescriptors.ts b/packages/ui/src/customizables/elementDescriptors.ts similarity index 100% rename from packages/clerk-js/src/ui/customizables/elementDescriptors.ts rename to packages/ui/src/customizables/elementDescriptors.ts diff --git a/packages/clerk-js/src/ui/customizables/index.ts b/packages/ui/src/customizables/index.ts similarity index 100% rename from packages/clerk-js/src/ui/customizables/index.ts rename to packages/ui/src/customizables/index.ts diff --git a/packages/clerk-js/src/ui/customizables/makeCustomizable.tsx b/packages/ui/src/customizables/makeCustomizable.tsx similarity index 100% rename from packages/clerk-js/src/ui/customizables/makeCustomizable.tsx rename to packages/ui/src/customizables/makeCustomizable.tsx diff --git a/packages/clerk-js/src/ui/customizables/makeResponsive.tsx b/packages/ui/src/customizables/makeResponsive.tsx similarity index 100% rename from packages/clerk-js/src/ui/customizables/makeResponsive.tsx rename to packages/ui/src/customizables/makeResponsive.tsx diff --git a/packages/clerk-js/src/ui/customizables/parseAppearance.ts b/packages/ui/src/customizables/parseAppearance.ts similarity index 100% rename from packages/clerk-js/src/ui/customizables/parseAppearance.ts rename to packages/ui/src/customizables/parseAppearance.ts diff --git a/packages/clerk-js/src/ui/customizables/parseVariables.ts b/packages/ui/src/customizables/parseVariables.ts similarity index 100% rename from packages/clerk-js/src/ui/customizables/parseVariables.ts rename to packages/ui/src/customizables/parseVariables.ts diff --git a/packages/clerk-js/src/ui/customizables/sanitizeDomProps.tsx b/packages/ui/src/customizables/sanitizeDomProps.tsx similarity index 100% rename from packages/clerk-js/src/ui/customizables/sanitizeDomProps.tsx rename to packages/ui/src/customizables/sanitizeDomProps.tsx diff --git a/packages/clerk-js/src/ui/elements/Action/ActionCard.tsx b/packages/ui/src/elements/Action/ActionCard.tsx similarity index 100% rename from packages/clerk-js/src/ui/elements/Action/ActionCard.tsx rename to packages/ui/src/elements/Action/ActionCard.tsx diff --git a/packages/clerk-js/src/ui/elements/Action/ActionClosed.tsx b/packages/ui/src/elements/Action/ActionClosed.tsx similarity index 100% rename from packages/clerk-js/src/ui/elements/Action/ActionClosed.tsx rename to packages/ui/src/elements/Action/ActionClosed.tsx diff --git a/packages/clerk-js/src/ui/elements/Action/ActionOpen.tsx b/packages/ui/src/elements/Action/ActionOpen.tsx similarity index 100% rename from packages/clerk-js/src/ui/elements/Action/ActionOpen.tsx rename to packages/ui/src/elements/Action/ActionOpen.tsx diff --git a/packages/clerk-js/src/ui/elements/Action/ActionRoot.tsx b/packages/ui/src/elements/Action/ActionRoot.tsx similarity index 100% rename from packages/clerk-js/src/ui/elements/Action/ActionRoot.tsx rename to packages/ui/src/elements/Action/ActionRoot.tsx diff --git a/packages/clerk-js/src/ui/elements/Action/ActionTrigger.tsx b/packages/ui/src/elements/Action/ActionTrigger.tsx similarity index 100% rename from packages/clerk-js/src/ui/elements/Action/ActionTrigger.tsx rename to packages/ui/src/elements/Action/ActionTrigger.tsx diff --git a/packages/clerk-js/src/ui/elements/Action/index.tsx b/packages/ui/src/elements/Action/index.tsx similarity index 100% rename from packages/clerk-js/src/ui/elements/Action/index.tsx rename to packages/ui/src/elements/Action/index.tsx diff --git a/packages/clerk-js/src/ui/elements/Actions.tsx b/packages/ui/src/elements/Actions.tsx similarity index 100% rename from packages/clerk-js/src/ui/elements/Actions.tsx rename to packages/ui/src/elements/Actions.tsx diff --git a/packages/clerk-js/src/ui/elements/Alert.tsx b/packages/ui/src/elements/Alert.tsx similarity index 100% rename from packages/clerk-js/src/ui/elements/Alert.tsx rename to packages/ui/src/elements/Alert.tsx diff --git a/packages/clerk-js/src/ui/elements/Animated.tsx b/packages/ui/src/elements/Animated.tsx similarity index 100% rename from packages/clerk-js/src/ui/elements/Animated.tsx rename to packages/ui/src/elements/Animated.tsx diff --git a/packages/clerk-js/src/ui/elements/ApplicationLogo.tsx b/packages/ui/src/elements/ApplicationLogo.tsx similarity index 100% rename from packages/clerk-js/src/ui/elements/ApplicationLogo.tsx rename to packages/ui/src/elements/ApplicationLogo.tsx diff --git a/packages/clerk-js/src/ui/elements/ArrowBlockButton.tsx b/packages/ui/src/elements/ArrowBlockButton.tsx similarity index 100% rename from packages/clerk-js/src/ui/elements/ArrowBlockButton.tsx rename to packages/ui/src/elements/ArrowBlockButton.tsx diff --git a/packages/clerk-js/src/ui/elements/Avatar.tsx b/packages/ui/src/elements/Avatar.tsx similarity index 100% rename from packages/clerk-js/src/ui/elements/Avatar.tsx rename to packages/ui/src/elements/Avatar.tsx diff --git a/packages/clerk-js/src/ui/elements/AvatarUploader.tsx b/packages/ui/src/elements/AvatarUploader.tsx similarity index 100% rename from packages/clerk-js/src/ui/elements/AvatarUploader.tsx rename to packages/ui/src/elements/AvatarUploader.tsx diff --git a/packages/clerk-js/src/ui/elements/BackLink.tsx b/packages/ui/src/elements/BackLink.tsx similarity index 100% rename from packages/clerk-js/src/ui/elements/BackLink.tsx rename to packages/ui/src/elements/BackLink.tsx diff --git a/packages/clerk-js/src/ui/elements/Badge.tsx b/packages/ui/src/elements/Badge.tsx similarity index 100% rename from packages/clerk-js/src/ui/elements/Badge.tsx rename to packages/ui/src/elements/Badge.tsx diff --git a/packages/clerk-js/src/ui/elements/CaptchaElement.tsx b/packages/ui/src/elements/CaptchaElement.tsx similarity index 100% rename from packages/clerk-js/src/ui/elements/CaptchaElement.tsx rename to packages/ui/src/elements/CaptchaElement.tsx diff --git a/packages/clerk-js/src/ui/elements/Card/CardAction.tsx b/packages/ui/src/elements/Card/CardAction.tsx similarity index 100% rename from packages/clerk-js/src/ui/elements/Card/CardAction.tsx rename to packages/ui/src/elements/Card/CardAction.tsx diff --git a/packages/clerk-js/src/ui/elements/Card/CardAlert.tsx b/packages/ui/src/elements/Card/CardAlert.tsx similarity index 100% rename from packages/clerk-js/src/ui/elements/Card/CardAlert.tsx rename to packages/ui/src/elements/Card/CardAlert.tsx diff --git a/packages/clerk-js/src/ui/elements/Card/CardClerkAndPagesTag.tsx b/packages/ui/src/elements/Card/CardClerkAndPagesTag.tsx similarity index 100% rename from packages/clerk-js/src/ui/elements/Card/CardClerkAndPagesTag.tsx rename to packages/ui/src/elements/Card/CardClerkAndPagesTag.tsx diff --git a/packages/clerk-js/src/ui/elements/Card/CardContent.tsx b/packages/ui/src/elements/Card/CardContent.tsx similarity index 100% rename from packages/clerk-js/src/ui/elements/Card/CardContent.tsx rename to packages/ui/src/elements/Card/CardContent.tsx diff --git a/packages/clerk-js/src/ui/elements/Card/CardFooter.tsx b/packages/ui/src/elements/Card/CardFooter.tsx similarity index 100% rename from packages/clerk-js/src/ui/elements/Card/CardFooter.tsx rename to packages/ui/src/elements/Card/CardFooter.tsx diff --git a/packages/clerk-js/src/ui/elements/Card/CardRoot.tsx b/packages/ui/src/elements/Card/CardRoot.tsx similarity index 100% rename from packages/clerk-js/src/ui/elements/Card/CardRoot.tsx rename to packages/ui/src/elements/Card/CardRoot.tsx diff --git a/packages/clerk-js/src/ui/elements/Card/index.ts b/packages/ui/src/elements/Card/index.ts similarity index 100% rename from packages/clerk-js/src/ui/elements/Card/index.ts rename to packages/ui/src/elements/Card/index.ts diff --git a/packages/clerk-js/src/ui/elements/ClipboardInput.tsx b/packages/ui/src/elements/ClipboardInput.tsx similarity index 100% rename from packages/clerk-js/src/ui/elements/ClipboardInput.tsx rename to packages/ui/src/elements/ClipboardInput.tsx diff --git a/packages/clerk-js/src/ui/elements/CodeControl.tsx b/packages/ui/src/elements/CodeControl.tsx similarity index 100% rename from packages/clerk-js/src/ui/elements/CodeControl.tsx rename to packages/ui/src/elements/CodeControl.tsx diff --git a/packages/clerk-js/src/ui/elements/DataTable.tsx b/packages/ui/src/elements/DataTable.tsx similarity index 100% rename from packages/clerk-js/src/ui/elements/DataTable.tsx rename to packages/ui/src/elements/DataTable.tsx diff --git a/packages/clerk-js/src/ui/elements/DevModeNotice.tsx b/packages/ui/src/elements/DevModeNotice.tsx similarity index 100% rename from packages/clerk-js/src/ui/elements/DevModeNotice.tsx rename to packages/ui/src/elements/DevModeNotice.tsx diff --git a/packages/clerk-js/src/ui/elements/Divider.tsx b/packages/ui/src/elements/Divider.tsx similarity index 100% rename from packages/clerk-js/src/ui/elements/Divider.tsx rename to packages/ui/src/elements/Divider.tsx diff --git a/packages/clerk-js/src/ui/elements/Drawer.tsx b/packages/ui/src/elements/Drawer.tsx similarity index 99% rename from packages/clerk-js/src/ui/elements/Drawer.tsx rename to packages/ui/src/elements/Drawer.tsx index 6cd3df06c25..fdacf3b852b 100644 --- a/packages/clerk-js/src/ui/elements/Drawer.tsx +++ b/packages/ui/src/elements/Drawer.tsx @@ -13,9 +13,9 @@ import { } from '@floating-ui/react'; import * as React from 'react'; -import { transitionDurationValues, transitionTiming } from '../../ui/foundations/transitions'; import type { LocalizationKey } from '../customizables'; import { Box, descriptors, Flex, Heading, Icon, Span, useAppearance } from '../customizables'; +import { transitionDurationValues, transitionTiming } from '../foundations/transitions'; import { useDirection, usePrefersReducedMotion, useScrollLock } from '../hooks'; import { Close as CloseIcon } from '../icons'; import type { ThemableCssProp } from '../styledSystem'; diff --git a/packages/clerk-js/src/ui/elements/ErrorCard.tsx b/packages/ui/src/elements/ErrorCard.tsx similarity index 100% rename from packages/clerk-js/src/ui/elements/ErrorCard.tsx rename to packages/ui/src/elements/ErrorCard.tsx diff --git a/packages/clerk-js/src/ui/elements/FieldControl.tsx b/packages/ui/src/elements/FieldControl.tsx similarity index 100% rename from packages/clerk-js/src/ui/elements/FieldControl.tsx rename to packages/ui/src/elements/FieldControl.tsx diff --git a/packages/clerk-js/src/ui/elements/Form.tsx b/packages/ui/src/elements/Form.tsx similarity index 100% rename from packages/clerk-js/src/ui/elements/Form.tsx rename to packages/ui/src/elements/Form.tsx diff --git a/packages/clerk-js/src/ui/elements/FormButtons.tsx b/packages/ui/src/elements/FormButtons.tsx similarity index 100% rename from packages/clerk-js/src/ui/elements/FormButtons.tsx rename to packages/ui/src/elements/FormButtons.tsx diff --git a/packages/clerk-js/src/ui/elements/FormContainer.tsx b/packages/ui/src/elements/FormContainer.tsx similarity index 100% rename from packages/clerk-js/src/ui/elements/FormContainer.tsx rename to packages/ui/src/elements/FormContainer.tsx diff --git a/packages/clerk-js/src/ui/elements/FormControl.tsx b/packages/ui/src/elements/FormControl.tsx similarity index 100% rename from packages/clerk-js/src/ui/elements/FormControl.tsx rename to packages/ui/src/elements/FormControl.tsx diff --git a/packages/clerk-js/src/ui/elements/FormattedPhoneNumber.tsx b/packages/ui/src/elements/FormattedPhoneNumber.tsx similarity index 100% rename from packages/clerk-js/src/ui/elements/FormattedPhoneNumber.tsx rename to packages/ui/src/elements/FormattedPhoneNumber.tsx diff --git a/packages/clerk-js/src/ui/elements/FullHeightLoader.tsx b/packages/ui/src/elements/FullHeightLoader.tsx similarity index 100% rename from packages/clerk-js/src/ui/elements/FullHeightLoader.tsx rename to packages/ui/src/elements/FullHeightLoader.tsx diff --git a/packages/clerk-js/src/ui/elements/Gauge.tsx b/packages/ui/src/elements/Gauge.tsx similarity index 100% rename from packages/clerk-js/src/ui/elements/Gauge.tsx rename to packages/ui/src/elements/Gauge.tsx diff --git a/packages/clerk-js/src/ui/elements/Header.tsx b/packages/ui/src/elements/Header.tsx similarity index 100% rename from packages/clerk-js/src/ui/elements/Header.tsx rename to packages/ui/src/elements/Header.tsx diff --git a/packages/clerk-js/src/ui/elements/IconButton.tsx b/packages/ui/src/elements/IconButton.tsx similarity index 100% rename from packages/clerk-js/src/ui/elements/IconButton.tsx rename to packages/ui/src/elements/IconButton.tsx diff --git a/packages/clerk-js/src/ui/elements/IconCircle.tsx b/packages/ui/src/elements/IconCircle.tsx similarity index 100% rename from packages/clerk-js/src/ui/elements/IconCircle.tsx rename to packages/ui/src/elements/IconCircle.tsx diff --git a/packages/clerk-js/src/ui/elements/IdentityPreview.tsx b/packages/ui/src/elements/IdentityPreview.tsx similarity index 100% rename from packages/clerk-js/src/ui/elements/IdentityPreview.tsx rename to packages/ui/src/elements/IdentityPreview.tsx diff --git a/packages/clerk-js/src/ui/elements/InformationBox.tsx b/packages/ui/src/elements/InformationBox.tsx similarity index 100% rename from packages/clerk-js/src/ui/elements/InformationBox.tsx rename to packages/ui/src/elements/InformationBox.tsx diff --git a/packages/clerk-js/src/ui/elements/InputGroup.tsx b/packages/ui/src/elements/InputGroup.tsx similarity index 100% rename from packages/clerk-js/src/ui/elements/InputGroup.tsx rename to packages/ui/src/elements/InputGroup.tsx diff --git a/packages/clerk-js/src/ui/elements/InputWithIcon.tsx b/packages/ui/src/elements/InputWithIcon.tsx similarity index 100% rename from packages/clerk-js/src/ui/elements/InputWithIcon.tsx rename to packages/ui/src/elements/InputWithIcon.tsx diff --git a/packages/clerk-js/src/ui/elements/InvisibleRootBox.tsx b/packages/ui/src/elements/InvisibleRootBox.tsx similarity index 100% rename from packages/clerk-js/src/ui/elements/InvisibleRootBox.tsx rename to packages/ui/src/elements/InvisibleRootBox.tsx diff --git a/packages/clerk-js/src/ui/elements/LegalConsentCheckbox.tsx b/packages/ui/src/elements/LegalConsentCheckbox.tsx similarity index 100% rename from packages/clerk-js/src/ui/elements/LegalConsentCheckbox.tsx rename to packages/ui/src/elements/LegalConsentCheckbox.tsx diff --git a/packages/clerk-js/src/ui/elements/LineItems.tsx b/packages/ui/src/elements/LineItems.tsx similarity index 100% rename from packages/clerk-js/src/ui/elements/LineItems.tsx rename to packages/ui/src/elements/LineItems.tsx diff --git a/packages/clerk-js/src/ui/elements/LinkRenderer.tsx b/packages/ui/src/elements/LinkRenderer.tsx similarity index 100% rename from packages/clerk-js/src/ui/elements/LinkRenderer.tsx rename to packages/ui/src/elements/LinkRenderer.tsx diff --git a/packages/clerk-js/src/ui/elements/LoadingCard.tsx b/packages/ui/src/elements/LoadingCard.tsx similarity index 100% rename from packages/clerk-js/src/ui/elements/LoadingCard.tsx rename to packages/ui/src/elements/LoadingCard.tsx diff --git a/packages/clerk-js/src/ui/elements/Menu.tsx b/packages/ui/src/elements/Menu.tsx similarity index 100% rename from packages/clerk-js/src/ui/elements/Menu.tsx rename to packages/ui/src/elements/Menu.tsx diff --git a/packages/clerk-js/src/ui/elements/Modal.tsx b/packages/ui/src/elements/Modal.tsx similarity index 100% rename from packages/clerk-js/src/ui/elements/Modal.tsx rename to packages/ui/src/elements/Modal.tsx diff --git a/packages/clerk-js/src/ui/elements/Navbar.tsx b/packages/ui/src/elements/Navbar.tsx similarity index 100% rename from packages/clerk-js/src/ui/elements/Navbar.tsx rename to packages/ui/src/elements/Navbar.tsx diff --git a/packages/clerk-js/src/ui/elements/OrganizationAvatar.tsx b/packages/ui/src/elements/OrganizationAvatar.tsx similarity index 100% rename from packages/clerk-js/src/ui/elements/OrganizationAvatar.tsx rename to packages/ui/src/elements/OrganizationAvatar.tsx diff --git a/packages/clerk-js/src/ui/elements/OrganizationPreview.tsx b/packages/ui/src/elements/OrganizationPreview.tsx similarity index 100% rename from packages/clerk-js/src/ui/elements/OrganizationPreview.tsx rename to packages/ui/src/elements/OrganizationPreview.tsx diff --git a/packages/clerk-js/src/ui/elements/Pagination.tsx b/packages/ui/src/elements/Pagination.tsx similarity index 100% rename from packages/clerk-js/src/ui/elements/Pagination.tsx rename to packages/ui/src/elements/Pagination.tsx diff --git a/packages/clerk-js/src/ui/elements/PasswordInput.tsx b/packages/ui/src/elements/PasswordInput.tsx similarity index 98% rename from packages/clerk-js/src/ui/elements/PasswordInput.tsx rename to packages/ui/src/elements/PasswordInput.tsx index ec85dc5b6e1..0b96e5c7f0f 100644 --- a/packages/clerk-js/src/ui/elements/PasswordInput.tsx +++ b/packages/ui/src/elements/PasswordInput.tsx @@ -1,8 +1,8 @@ +import { DEBOUNCE_MS } from '@clerk/shared/internal/clerk-js'; import type { ClerkAPIError } from '@clerk/shared/types'; import type { ChangeEvent } from 'react'; import React, { forwardRef, useRef, useState } from 'react'; -import { DEBOUNCE_MS } from '../../core/constants'; import { useEnvironment } from '../contexts'; import { descriptors, Flex, Input, localizationKeys, useLocalizations } from '../customizables'; import { usePassword } from '../hooks/usePassword'; diff --git a/packages/clerk-js/src/ui/elements/PersonalWorkspacePreview.tsx b/packages/ui/src/elements/PersonalWorkspacePreview.tsx similarity index 100% rename from packages/clerk-js/src/ui/elements/PersonalWorkspacePreview.tsx rename to packages/ui/src/elements/PersonalWorkspacePreview.tsx diff --git a/packages/clerk-js/src/ui/elements/PhoneInput/__tests__/useFormattedPhoneNumber.test.ts b/packages/ui/src/elements/PhoneInput/__tests__/useFormattedPhoneNumber.test.ts similarity index 100% rename from packages/clerk-js/src/ui/elements/PhoneInput/__tests__/useFormattedPhoneNumber.test.ts rename to packages/ui/src/elements/PhoneInput/__tests__/useFormattedPhoneNumber.test.ts diff --git a/packages/clerk-js/src/ui/elements/PhoneInput/countryCodeData.ts b/packages/ui/src/elements/PhoneInput/countryCodeData.ts similarity index 100% rename from packages/clerk-js/src/ui/elements/PhoneInput/countryCodeData.ts rename to packages/ui/src/elements/PhoneInput/countryCodeData.ts diff --git a/packages/clerk-js/src/ui/elements/PhoneInput/index.tsx b/packages/ui/src/elements/PhoneInput/index.tsx similarity index 100% rename from packages/clerk-js/src/ui/elements/PhoneInput/index.tsx rename to packages/ui/src/elements/PhoneInput/index.tsx diff --git a/packages/clerk-js/src/ui/elements/PhoneInput/useFormattedPhoneNumber.ts b/packages/ui/src/elements/PhoneInput/useFormattedPhoneNumber.ts similarity index 100% rename from packages/clerk-js/src/ui/elements/PhoneInput/useFormattedPhoneNumber.ts rename to packages/ui/src/elements/PhoneInput/useFormattedPhoneNumber.ts diff --git a/packages/clerk-js/src/ui/elements/Popover.tsx b/packages/ui/src/elements/Popover.tsx similarity index 100% rename from packages/clerk-js/src/ui/elements/Popover.tsx rename to packages/ui/src/elements/Popover.tsx diff --git a/packages/clerk-js/src/ui/elements/PopoverCard.tsx b/packages/ui/src/elements/PopoverCard.tsx similarity index 100% rename from packages/clerk-js/src/ui/elements/PopoverCard.tsx rename to packages/ui/src/elements/PopoverCard.tsx diff --git a/packages/clerk-js/src/ui/elements/Portal.tsx b/packages/ui/src/elements/Portal.tsx similarity index 100% rename from packages/clerk-js/src/ui/elements/Portal.tsx rename to packages/ui/src/elements/Portal.tsx diff --git a/packages/clerk-js/src/ui/elements/PreviewButton.tsx b/packages/ui/src/elements/PreviewButton.tsx similarity index 100% rename from packages/clerk-js/src/ui/elements/PreviewButton.tsx rename to packages/ui/src/elements/PreviewButton.tsx diff --git a/packages/clerk-js/src/ui/elements/ProfileCard/ProfileCardContent.tsx b/packages/ui/src/elements/ProfileCard/ProfileCardContent.tsx similarity index 100% rename from packages/clerk-js/src/ui/elements/ProfileCard/ProfileCardContent.tsx rename to packages/ui/src/elements/ProfileCard/ProfileCardContent.tsx diff --git a/packages/clerk-js/src/ui/elements/ProfileCard/ProfileCardRoot.tsx b/packages/ui/src/elements/ProfileCard/ProfileCardRoot.tsx similarity index 100% rename from packages/clerk-js/src/ui/elements/ProfileCard/ProfileCardRoot.tsx rename to packages/ui/src/elements/ProfileCard/ProfileCardRoot.tsx diff --git a/packages/clerk-js/src/ui/elements/ProfileCard/index.ts b/packages/ui/src/elements/ProfileCard/index.ts similarity index 100% rename from packages/clerk-js/src/ui/elements/ProfileCard/index.ts rename to packages/ui/src/elements/ProfileCard/index.ts diff --git a/packages/clerk-js/src/ui/elements/RadioGroup.tsx b/packages/ui/src/elements/RadioGroup.tsx similarity index 100% rename from packages/clerk-js/src/ui/elements/RadioGroup.tsx rename to packages/ui/src/elements/RadioGroup.tsx diff --git a/packages/clerk-js/src/ui/elements/ReversibleContainer.tsx b/packages/ui/src/elements/ReversibleContainer.tsx similarity index 100% rename from packages/clerk-js/src/ui/elements/ReversibleContainer.tsx rename to packages/ui/src/elements/ReversibleContainer.tsx diff --git a/packages/clerk-js/src/ui/elements/RootBox.tsx b/packages/ui/src/elements/RootBox.tsx similarity index 100% rename from packages/clerk-js/src/ui/elements/RootBox.tsx rename to packages/ui/src/elements/RootBox.tsx diff --git a/packages/clerk-js/src/ui/elements/RouterLink.tsx b/packages/ui/src/elements/RouterLink.tsx similarity index 100% rename from packages/clerk-js/src/ui/elements/RouterLink.tsx rename to packages/ui/src/elements/RouterLink.tsx diff --git a/packages/clerk-js/src/ui/elements/Section.tsx b/packages/ui/src/elements/Section.tsx similarity index 100% rename from packages/clerk-js/src/ui/elements/Section.tsx rename to packages/ui/src/elements/Section.tsx diff --git a/packages/clerk-js/src/ui/elements/SegmentedControl.tsx b/packages/ui/src/elements/SegmentedControl.tsx similarity index 100% rename from packages/clerk-js/src/ui/elements/SegmentedControl.tsx rename to packages/ui/src/elements/SegmentedControl.tsx diff --git a/packages/clerk-js/src/ui/elements/Select.tsx b/packages/ui/src/elements/Select.tsx similarity index 100% rename from packages/clerk-js/src/ui/elements/Select.tsx rename to packages/ui/src/elements/Select.tsx diff --git a/packages/clerk-js/src/ui/elements/SocialButtons.tsx b/packages/ui/src/elements/SocialButtons.tsx similarity index 100% rename from packages/clerk-js/src/ui/elements/SocialButtons.tsx rename to packages/ui/src/elements/SocialButtons.tsx diff --git a/packages/clerk-js/src/ui/elements/SuccessPage.tsx b/packages/ui/src/elements/SuccessPage.tsx similarity index 100% rename from packages/clerk-js/src/ui/elements/SuccessPage.tsx rename to packages/ui/src/elements/SuccessPage.tsx diff --git a/packages/clerk-js/src/ui/elements/Switch.tsx b/packages/ui/src/elements/Switch.tsx similarity index 100% rename from packages/clerk-js/src/ui/elements/Switch.tsx rename to packages/ui/src/elements/Switch.tsx diff --git a/packages/clerk-js/src/ui/elements/Tabs.tsx b/packages/ui/src/elements/Tabs.tsx similarity index 100% rename from packages/clerk-js/src/ui/elements/Tabs.tsx rename to packages/ui/src/elements/Tabs.tsx diff --git a/packages/clerk-js/src/ui/elements/TagInput.tsx b/packages/ui/src/elements/TagInput.tsx similarity index 100% rename from packages/clerk-js/src/ui/elements/TagInput.tsx rename to packages/ui/src/elements/TagInput.tsx diff --git a/packages/clerk-js/src/ui/elements/ThreeDotsMenu.tsx b/packages/ui/src/elements/ThreeDotsMenu.tsx similarity index 100% rename from packages/clerk-js/src/ui/elements/ThreeDotsMenu.tsx rename to packages/ui/src/elements/ThreeDotsMenu.tsx diff --git a/packages/clerk-js/src/ui/elements/TimerButton.tsx b/packages/ui/src/elements/TimerButton.tsx similarity index 100% rename from packages/clerk-js/src/ui/elements/TimerButton.tsx rename to packages/ui/src/elements/TimerButton.tsx diff --git a/packages/clerk-js/src/ui/elements/Tooltip.tsx b/packages/ui/src/elements/Tooltip.tsx similarity index 100% rename from packages/clerk-js/src/ui/elements/Tooltip.tsx rename to packages/ui/src/elements/Tooltip.tsx diff --git a/packages/clerk-js/src/ui/elements/UserAvatar.tsx b/packages/ui/src/elements/UserAvatar.tsx similarity index 100% rename from packages/clerk-js/src/ui/elements/UserAvatar.tsx rename to packages/ui/src/elements/UserAvatar.tsx diff --git a/packages/clerk-js/src/ui/elements/UserPreview.tsx b/packages/ui/src/elements/UserPreview.tsx similarity index 100% rename from packages/clerk-js/src/ui/elements/UserPreview.tsx rename to packages/ui/src/elements/UserPreview.tsx diff --git a/packages/clerk-js/src/ui/elements/VerificationCodeCard.tsx b/packages/ui/src/elements/VerificationCodeCard.tsx similarity index 100% rename from packages/clerk-js/src/ui/elements/VerificationCodeCard.tsx rename to packages/ui/src/elements/VerificationCodeCard.tsx diff --git a/packages/clerk-js/src/ui/elements/VerificationLinkCard.tsx b/packages/ui/src/elements/VerificationLinkCard.tsx similarity index 100% rename from packages/clerk-js/src/ui/elements/VerificationLinkCard.tsx rename to packages/ui/src/elements/VerificationLinkCard.tsx diff --git a/packages/clerk-js/src/ui/elements/__mocks__/@formkit/auto-animate/react/index.ts b/packages/ui/src/elements/__mocks__/@formkit/auto-animate/react/index.ts similarity index 100% rename from packages/clerk-js/src/ui/elements/__mocks__/@formkit/auto-animate/react/index.ts rename to packages/ui/src/elements/__mocks__/@formkit/auto-animate/react/index.ts diff --git a/packages/clerk-js/src/ui/elements/__tests__/CodeControl.test.tsx b/packages/ui/src/elements/__tests__/CodeControl.test.tsx similarity index 100% rename from packages/clerk-js/src/ui/elements/__tests__/CodeControl.test.tsx rename to packages/ui/src/elements/__tests__/CodeControl.test.tsx diff --git a/packages/clerk-js/src/ui/elements/__tests__/LinkRenderer.test.tsx b/packages/ui/src/elements/__tests__/LinkRenderer.test.tsx similarity index 100% rename from packages/clerk-js/src/ui/elements/__tests__/LinkRenderer.test.tsx rename to packages/ui/src/elements/__tests__/LinkRenderer.test.tsx diff --git a/packages/clerk-js/src/ui/elements/__tests__/PlainInput.test.tsx b/packages/ui/src/elements/__tests__/PlainInput.test.tsx similarity index 100% rename from packages/clerk-js/src/ui/elements/__tests__/PlainInput.test.tsx rename to packages/ui/src/elements/__tests__/PlainInput.test.tsx diff --git a/packages/clerk-js/src/ui/elements/__tests__/RadioGroup.test.tsx b/packages/ui/src/elements/__tests__/RadioGroup.test.tsx similarity index 100% rename from packages/clerk-js/src/ui/elements/__tests__/RadioGroup.test.tsx rename to packages/ui/src/elements/__tests__/RadioGroup.test.tsx diff --git a/packages/clerk-js/src/ui/elements/__tests__/TimerButton.test.tsx b/packages/ui/src/elements/__tests__/TimerButton.test.tsx similarity index 100% rename from packages/clerk-js/src/ui/elements/__tests__/TimerButton.test.tsx rename to packages/ui/src/elements/__tests__/TimerButton.test.tsx diff --git a/packages/clerk-js/src/ui/elements/contexts/index.tsx b/packages/ui/src/elements/contexts/index.tsx similarity index 100% rename from packages/clerk-js/src/ui/elements/contexts/index.tsx rename to packages/ui/src/elements/contexts/index.tsx diff --git a/packages/clerk-js/src/ui/elements/utils.ts b/packages/ui/src/elements/utils.ts similarity index 100% rename from packages/clerk-js/src/ui/elements/utils.ts rename to packages/ui/src/elements/utils.ts diff --git a/packages/clerk-js/src/ui/elements/withAvatarShimmer.tsx b/packages/ui/src/elements/withAvatarShimmer.tsx similarity index 100% rename from packages/clerk-js/src/ui/elements/withAvatarShimmer.tsx rename to packages/ui/src/elements/withAvatarShimmer.tsx diff --git a/packages/clerk-js/src/ui/foundations/__tests__/createInternalTheme.test.ts b/packages/ui/src/foundations/__tests__/createInternalTheme.test.ts similarity index 100% rename from packages/clerk-js/src/ui/foundations/__tests__/createInternalTheme.test.ts rename to packages/ui/src/foundations/__tests__/createInternalTheme.test.ts diff --git a/packages/clerk-js/src/ui/foundations/borders.ts b/packages/ui/src/foundations/borders.ts similarity index 100% rename from packages/clerk-js/src/ui/foundations/borders.ts rename to packages/ui/src/foundations/borders.ts diff --git a/packages/clerk-js/src/ui/foundations/colors.ts b/packages/ui/src/foundations/colors.ts similarity index 100% rename from packages/clerk-js/src/ui/foundations/colors.ts rename to packages/ui/src/foundations/colors.ts diff --git a/packages/clerk-js/src/ui/foundations/createInternalTheme.ts b/packages/ui/src/foundations/createInternalTheme.ts similarity index 100% rename from packages/clerk-js/src/ui/foundations/createInternalTheme.ts rename to packages/ui/src/foundations/createInternalTheme.ts diff --git a/packages/clerk-js/src/ui/foundations/defaultFoundations.ts b/packages/ui/src/foundations/defaultFoundations.ts similarity index 100% rename from packages/clerk-js/src/ui/foundations/defaultFoundations.ts rename to packages/ui/src/foundations/defaultFoundations.ts diff --git a/packages/clerk-js/src/ui/foundations/index.ts b/packages/ui/src/foundations/index.ts similarity index 100% rename from packages/clerk-js/src/ui/foundations/index.ts rename to packages/ui/src/foundations/index.ts diff --git a/packages/clerk-js/src/ui/foundations/opacity.ts b/packages/ui/src/foundations/opacity.ts similarity index 100% rename from packages/clerk-js/src/ui/foundations/opacity.ts rename to packages/ui/src/foundations/opacity.ts diff --git a/packages/clerk-js/src/ui/foundations/shadows.ts b/packages/ui/src/foundations/shadows.ts similarity index 100% rename from packages/clerk-js/src/ui/foundations/shadows.ts rename to packages/ui/src/foundations/shadows.ts diff --git a/packages/clerk-js/src/ui/foundations/sizes.ts b/packages/ui/src/foundations/sizes.ts similarity index 100% rename from packages/clerk-js/src/ui/foundations/sizes.ts rename to packages/ui/src/foundations/sizes.ts diff --git a/packages/clerk-js/src/ui/foundations/transitions.ts b/packages/ui/src/foundations/transitions.ts similarity index 100% rename from packages/clerk-js/src/ui/foundations/transitions.ts rename to packages/ui/src/foundations/transitions.ts diff --git a/packages/clerk-js/src/ui/foundations/typography.ts b/packages/ui/src/foundations/typography.ts similarity index 100% rename from packages/clerk-js/src/ui/foundations/typography.ts rename to packages/ui/src/foundations/typography.ts diff --git a/packages/clerk-js/src/ui/foundations/zIndices.ts b/packages/ui/src/foundations/zIndices.ts similarity index 100% rename from packages/clerk-js/src/ui/foundations/zIndices.ts rename to packages/ui/src/foundations/zIndices.ts diff --git a/packages/clerk-js/src/ui/hooks/__tests__/useCoreOrganization.test.tsx b/packages/ui/src/hooks/__tests__/useCoreOrganization.test.tsx similarity index 100% rename from packages/clerk-js/src/ui/hooks/__tests__/useCoreOrganization.test.tsx rename to packages/ui/src/hooks/__tests__/useCoreOrganization.test.tsx diff --git a/packages/clerk-js/src/ui/hooks/__tests__/useCoreOrganizationList.test.tsx b/packages/ui/src/hooks/__tests__/useCoreOrganizationList.test.tsx similarity index 100% rename from packages/clerk-js/src/ui/hooks/__tests__/useCoreOrganizationList.test.tsx rename to packages/ui/src/hooks/__tests__/useCoreOrganizationList.test.tsx diff --git a/packages/clerk-js/src/ui/hooks/__tests__/useDevMode.test.tsx b/packages/ui/src/hooks/__tests__/useDevMode.test.tsx similarity index 100% rename from packages/clerk-js/src/ui/hooks/__tests__/useDevMode.test.tsx rename to packages/ui/src/hooks/__tests__/useDevMode.test.tsx diff --git a/packages/clerk-js/src/ui/hooks/__tests__/useDirection.test.ts b/packages/ui/src/hooks/__tests__/useDirection.test.ts similarity index 100% rename from packages/clerk-js/src/ui/hooks/__tests__/useDirection.test.ts rename to packages/ui/src/hooks/__tests__/useDirection.test.ts diff --git a/packages/clerk-js/src/ui/hooks/__tests__/useEnabledThirdPartyProviders.test.tsx b/packages/ui/src/hooks/__tests__/useEnabledThirdPartyProviders.test.tsx similarity index 100% rename from packages/clerk-js/src/ui/hooks/__tests__/useEnabledThirdPartyProviders.test.tsx rename to packages/ui/src/hooks/__tests__/useEnabledThirdPartyProviders.test.tsx diff --git a/packages/clerk-js/src/ui/hooks/__tests__/usePasswordComplexity.test.tsx b/packages/ui/src/hooks/__tests__/usePasswordComplexity.test.tsx similarity index 100% rename from packages/clerk-js/src/ui/hooks/__tests__/usePasswordComplexity.test.tsx rename to packages/ui/src/hooks/__tests__/usePasswordComplexity.test.tsx diff --git a/packages/clerk-js/src/ui/hooks/__tests__/useSupportEmail.test.tsx b/packages/ui/src/hooks/__tests__/useSupportEmail.test.tsx similarity index 100% rename from packages/clerk-js/src/ui/hooks/__tests__/useSupportEmail.test.tsx rename to packages/ui/src/hooks/__tests__/useSupportEmail.test.tsx diff --git a/packages/clerk-js/src/ui/hooks/index.ts b/packages/ui/src/hooks/index.ts similarity index 100% rename from packages/clerk-js/src/ui/hooks/index.ts rename to packages/ui/src/hooks/index.ts diff --git a/packages/clerk-js/src/ui/hooks/useAlternativeStrategies.ts b/packages/ui/src/hooks/useAlternativeStrategies.ts similarity index 100% rename from packages/clerk-js/src/ui/hooks/useAlternativeStrategies.ts rename to packages/ui/src/hooks/useAlternativeStrategies.ts diff --git a/packages/clerk-js/src/ui/hooks/useClerkModalStateParams.tsx b/packages/ui/src/hooks/useClerkModalStateParams.tsx similarity index 91% rename from packages/clerk-js/src/ui/hooks/useClerkModalStateParams.tsx rename to packages/ui/src/hooks/useClerkModalStateParams.tsx index 282559ea50f..6c30c6b6385 100644 --- a/packages/clerk-js/src/ui/hooks/useClerkModalStateParams.tsx +++ b/packages/ui/src/hooks/useClerkModalStateParams.tsx @@ -1,6 +1,6 @@ +import { CLERK_MODAL_STATE } from '@clerk/shared/internal/clerk-js'; import React from 'react'; -import { CLERK_MODAL_STATE } from '../../core/constants'; import { readStateParam, removeClerkQueryParam } from '../../utils'; export const useClerkModalStateParams = () => { diff --git a/packages/clerk-js/src/ui/hooks/useClipboard.ts b/packages/ui/src/hooks/useClipboard.ts similarity index 100% rename from packages/clerk-js/src/ui/hooks/useClipboard.ts rename to packages/ui/src/hooks/useClipboard.ts diff --git a/packages/clerk-js/src/ui/hooks/useDebounce.ts b/packages/ui/src/hooks/useDebounce.ts similarity index 100% rename from packages/clerk-js/src/ui/hooks/useDebounce.ts rename to packages/ui/src/hooks/useDebounce.ts diff --git a/packages/clerk-js/src/ui/hooks/useDevMode.tsx b/packages/ui/src/hooks/useDevMode.tsx similarity index 100% rename from packages/clerk-js/src/ui/hooks/useDevMode.tsx rename to packages/ui/src/hooks/useDevMode.tsx diff --git a/packages/clerk-js/src/ui/hooks/useDirection.ts b/packages/ui/src/hooks/useDirection.ts similarity index 100% rename from packages/clerk-js/src/ui/hooks/useDirection.ts rename to packages/ui/src/hooks/useDirection.ts diff --git a/packages/clerk-js/src/ui/hooks/useEmailLink.ts b/packages/ui/src/hooks/useEmailLink.ts similarity index 100% rename from packages/clerk-js/src/ui/hooks/useEmailLink.ts rename to packages/ui/src/hooks/useEmailLink.ts diff --git a/packages/clerk-js/src/ui/hooks/useEnabledThirdPartyProviders.tsx b/packages/ui/src/hooks/useEnabledThirdPartyProviders.tsx similarity index 100% rename from packages/clerk-js/src/ui/hooks/useEnabledThirdPartyProviders.tsx rename to packages/ui/src/hooks/useEnabledThirdPartyProviders.tsx diff --git a/packages/clerk-js/src/ui/hooks/useEnterpriseSSOLink.ts b/packages/ui/src/hooks/useEnterpriseSSOLink.ts similarity index 100% rename from packages/clerk-js/src/ui/hooks/useEnterpriseSSOLink.ts rename to packages/ui/src/hooks/useEnterpriseSSOLink.ts diff --git a/packages/clerk-js/src/ui/hooks/useFetch.ts b/packages/ui/src/hooks/useFetch.ts similarity index 100% rename from packages/clerk-js/src/ui/hooks/useFetch.ts rename to packages/ui/src/hooks/useFetch.ts diff --git a/packages/clerk-js/src/ui/hooks/useFetchRoles.ts b/packages/ui/src/hooks/useFetchRoles.ts similarity index 100% rename from packages/clerk-js/src/ui/hooks/useFetchRoles.ts rename to packages/ui/src/hooks/useFetchRoles.ts diff --git a/packages/clerk-js/src/ui/hooks/useInView.ts b/packages/ui/src/hooks/useInView.ts similarity index 100% rename from packages/clerk-js/src/ui/hooks/useInView.ts rename to packages/ui/src/hooks/useInView.ts diff --git a/packages/clerk-js/src/ui/hooks/useLoadingStatus.ts b/packages/ui/src/hooks/useLoadingStatus.ts similarity index 100% rename from packages/clerk-js/src/ui/hooks/useLoadingStatus.ts rename to packages/ui/src/hooks/useLoadingStatus.ts diff --git a/packages/clerk-js/src/ui/hooks/useMultipleSessions.ts b/packages/ui/src/hooks/useMultipleSessions.ts similarity index 100% rename from packages/clerk-js/src/ui/hooks/useMultipleSessions.ts rename to packages/ui/src/hooks/useMultipleSessions.ts diff --git a/packages/clerk-js/src/ui/hooks/useNavigateToFlowStart.ts b/packages/ui/src/hooks/useNavigateToFlowStart.ts similarity index 100% rename from packages/clerk-js/src/ui/hooks/useNavigateToFlowStart.ts rename to packages/ui/src/hooks/useNavigateToFlowStart.ts diff --git a/packages/clerk-js/src/ui/hooks/useOrganizationListInView.ts b/packages/ui/src/hooks/useOrganizationListInView.ts similarity index 100% rename from packages/clerk-js/src/ui/hooks/useOrganizationListInView.ts rename to packages/ui/src/hooks/useOrganizationListInView.ts diff --git a/packages/clerk-js/src/ui/hooks/usePassword.ts b/packages/ui/src/hooks/usePassword.ts similarity index 100% rename from packages/clerk-js/src/ui/hooks/usePassword.ts rename to packages/ui/src/hooks/usePassword.ts diff --git a/packages/clerk-js/src/ui/hooks/usePasswordComplexity.ts b/packages/ui/src/hooks/usePasswordComplexity.ts similarity index 100% rename from packages/clerk-js/src/ui/hooks/usePasswordComplexity.ts rename to packages/ui/src/hooks/usePasswordComplexity.ts diff --git a/packages/clerk-js/src/ui/hooks/usePopover.ts b/packages/ui/src/hooks/usePopover.ts similarity index 100% rename from packages/clerk-js/src/ui/hooks/usePopover.ts rename to packages/ui/src/hooks/usePopover.ts diff --git a/packages/clerk-js/src/ui/hooks/usePrefersReducedMotion.ts b/packages/ui/src/hooks/usePrefersReducedMotion.ts similarity index 100% rename from packages/clerk-js/src/ui/hooks/usePrefersReducedMotion.ts rename to packages/ui/src/hooks/usePrefersReducedMotion.ts diff --git a/packages/clerk-js/src/ui/hooks/usePreloadTasks.ts b/packages/ui/src/hooks/usePreloadTasks.ts similarity index 100% rename from packages/clerk-js/src/ui/hooks/usePreloadTasks.ts rename to packages/ui/src/hooks/usePreloadTasks.ts diff --git a/packages/clerk-js/src/ui/hooks/useSafeState.ts b/packages/ui/src/hooks/useSafeState.ts similarity index 100% rename from packages/clerk-js/src/ui/hooks/useSafeState.ts rename to packages/ui/src/hooks/useSafeState.ts diff --git a/packages/clerk-js/src/ui/hooks/useScrollLock.ts b/packages/ui/src/hooks/useScrollLock.ts similarity index 100% rename from packages/clerk-js/src/ui/hooks/useScrollLock.ts rename to packages/ui/src/hooks/useScrollLock.ts diff --git a/packages/clerk-js/src/ui/hooks/useSearchInput.ts b/packages/ui/src/hooks/useSearchInput.ts similarity index 100% rename from packages/clerk-js/src/ui/hooks/useSearchInput.ts rename to packages/ui/src/hooks/useSearchInput.ts diff --git a/packages/clerk-js/src/ui/hooks/useSetSessionWithTimeout.ts b/packages/ui/src/hooks/useSetSessionWithTimeout.ts similarity index 100% rename from packages/clerk-js/src/ui/hooks/useSetSessionWithTimeout.ts rename to packages/ui/src/hooks/useSetSessionWithTimeout.ts diff --git a/packages/clerk-js/src/ui/hooks/useSupportEmail.ts b/packages/ui/src/hooks/useSupportEmail.ts similarity index 100% rename from packages/clerk-js/src/ui/hooks/useSupportEmail.ts rename to packages/ui/src/hooks/useSupportEmail.ts diff --git a/packages/clerk-js/src/ui/hooks/useTabState.ts b/packages/ui/src/hooks/useTabState.ts similarity index 100% rename from packages/clerk-js/src/ui/hooks/useTabState.ts rename to packages/ui/src/hooks/useTabState.ts diff --git a/packages/clerk-js/src/ui/hooks/useWindowEventListener.ts b/packages/ui/src/hooks/useWindowEventListener.ts similarity index 100% rename from packages/clerk-js/src/ui/hooks/useWindowEventListener.ts rename to packages/ui/src/hooks/useWindowEventListener.ts diff --git a/packages/clerk-js/src/ui/icons/add.svg b/packages/ui/src/icons/add.svg similarity index 100% rename from packages/clerk-js/src/ui/icons/add.svg rename to packages/ui/src/icons/add.svg diff --git a/packages/clerk-js/src/ui/icons/apple-pay.svg b/packages/ui/src/icons/apple-pay.svg similarity index 100% rename from packages/clerk-js/src/ui/icons/apple-pay.svg rename to packages/ui/src/icons/apple-pay.svg diff --git a/packages/clerk-js/src/ui/icons/arrow-left.svg b/packages/ui/src/icons/arrow-left.svg similarity index 100% rename from packages/clerk-js/src/ui/icons/arrow-left.svg rename to packages/ui/src/icons/arrow-left.svg diff --git a/packages/clerk-js/src/ui/icons/arrow-right-button.svg b/packages/ui/src/icons/arrow-right-button.svg similarity index 100% rename from packages/clerk-js/src/ui/icons/arrow-right-button.svg rename to packages/ui/src/icons/arrow-right-button.svg diff --git a/packages/clerk-js/src/ui/icons/arrow-right.svg b/packages/ui/src/icons/arrow-right.svg similarity index 100% rename from packages/clerk-js/src/ui/icons/arrow-right.svg rename to packages/ui/src/icons/arrow-right.svg diff --git a/packages/clerk-js/src/ui/icons/arrows-up-down.svg b/packages/ui/src/icons/arrows-up-down.svg similarity index 100% rename from packages/clerk-js/src/ui/icons/arrows-up-down.svg rename to packages/ui/src/icons/arrows-up-down.svg diff --git a/packages/clerk-js/src/ui/icons/auth-app.svg b/packages/ui/src/icons/auth-app.svg similarity index 100% rename from packages/clerk-js/src/ui/icons/auth-app.svg rename to packages/ui/src/icons/auth-app.svg diff --git a/packages/clerk-js/src/ui/icons/billing.svg b/packages/ui/src/icons/billing.svg similarity index 100% rename from packages/clerk-js/src/ui/icons/billing.svg rename to packages/ui/src/icons/billing.svg diff --git a/packages/clerk-js/src/ui/icons/block.svg b/packages/ui/src/icons/block.svg similarity index 100% rename from packages/clerk-js/src/ui/icons/block.svg rename to packages/ui/src/icons/block.svg diff --git a/packages/clerk-js/src/ui/icons/caret-left.svg b/packages/ui/src/icons/caret-left.svg similarity index 100% rename from packages/clerk-js/src/ui/icons/caret-left.svg rename to packages/ui/src/icons/caret-left.svg diff --git a/packages/clerk-js/src/ui/icons/caret-right.svg b/packages/ui/src/icons/caret-right.svg similarity index 100% rename from packages/clerk-js/src/ui/icons/caret-right.svg rename to packages/ui/src/icons/caret-right.svg diff --git a/packages/clerk-js/src/ui/icons/caret.svg b/packages/ui/src/icons/caret.svg similarity index 100% rename from packages/clerk-js/src/ui/icons/caret.svg rename to packages/ui/src/icons/caret.svg diff --git a/packages/clerk-js/src/ui/icons/chat-alt.svg b/packages/ui/src/icons/chat-alt.svg similarity index 100% rename from packages/clerk-js/src/ui/icons/chat-alt.svg rename to packages/ui/src/icons/chat-alt.svg diff --git a/packages/clerk-js/src/ui/icons/check-circle.svg b/packages/ui/src/icons/check-circle.svg similarity index 100% rename from packages/clerk-js/src/ui/icons/check-circle.svg rename to packages/ui/src/icons/check-circle.svg diff --git a/packages/clerk-js/src/ui/icons/check.svg b/packages/ui/src/icons/check.svg similarity index 100% rename from packages/clerk-js/src/ui/icons/check.svg rename to packages/ui/src/icons/check.svg diff --git a/packages/clerk-js/src/ui/icons/checkmark-filled.svg b/packages/ui/src/icons/checkmark-filled.svg similarity index 100% rename from packages/clerk-js/src/ui/icons/checkmark-filled.svg rename to packages/ui/src/icons/checkmark-filled.svg diff --git a/packages/clerk-js/src/ui/icons/chevron-down.svg b/packages/ui/src/icons/chevron-down.svg similarity index 100% rename from packages/clerk-js/src/ui/icons/chevron-down.svg rename to packages/ui/src/icons/chevron-down.svg diff --git a/packages/clerk-js/src/ui/icons/chevron-up-down.svg b/packages/ui/src/icons/chevron-up-down.svg similarity index 100% rename from packages/clerk-js/src/ui/icons/chevron-up-down.svg rename to packages/ui/src/icons/chevron-up-down.svg diff --git a/packages/clerk-js/src/ui/icons/clipboard-outline.svg b/packages/ui/src/icons/clipboard-outline.svg similarity index 100% rename from packages/clerk-js/src/ui/icons/clipboard-outline.svg rename to packages/ui/src/icons/clipboard-outline.svg diff --git a/packages/clerk-js/src/ui/icons/clipboard.svg b/packages/ui/src/icons/clipboard.svg similarity index 100% rename from packages/clerk-js/src/ui/icons/clipboard.svg rename to packages/ui/src/icons/clipboard.svg diff --git a/packages/clerk-js/src/ui/icons/close.svg b/packages/ui/src/icons/close.svg similarity index 100% rename from packages/clerk-js/src/ui/icons/close.svg rename to packages/ui/src/icons/close.svg diff --git a/packages/clerk-js/src/ui/icons/code.svg b/packages/ui/src/icons/code.svg similarity index 100% rename from packages/clerk-js/src/ui/icons/code.svg rename to packages/ui/src/icons/code.svg diff --git a/packages/clerk-js/src/ui/icons/cog-filled.svg b/packages/ui/src/icons/cog-filled.svg similarity index 100% rename from packages/clerk-js/src/ui/icons/cog-filled.svg rename to packages/ui/src/icons/cog-filled.svg diff --git a/packages/clerk-js/src/ui/icons/cog.svg b/packages/ui/src/icons/cog.svg similarity index 100% rename from packages/clerk-js/src/ui/icons/cog.svg rename to packages/ui/src/icons/cog.svg diff --git a/packages/clerk-js/src/ui/icons/copy.svg b/packages/ui/src/icons/copy.svg similarity index 100% rename from packages/clerk-js/src/ui/icons/copy.svg rename to packages/ui/src/icons/copy.svg diff --git a/packages/clerk-js/src/ui/icons/credit-card.svg b/packages/ui/src/icons/credit-card.svg similarity index 100% rename from packages/clerk-js/src/ui/icons/credit-card.svg rename to packages/ui/src/icons/credit-card.svg diff --git a/packages/clerk-js/src/ui/icons/device-laptop.svg b/packages/ui/src/icons/device-laptop.svg similarity index 100% rename from packages/clerk-js/src/ui/icons/device-laptop.svg rename to packages/ui/src/icons/device-laptop.svg diff --git a/packages/clerk-js/src/ui/icons/device-mobile.svg b/packages/ui/src/icons/device-mobile.svg similarity index 100% rename from packages/clerk-js/src/ui/icons/device-mobile.svg rename to packages/ui/src/icons/device-mobile.svg diff --git a/packages/clerk-js/src/ui/icons/dot-circle-horizontal.svg b/packages/ui/src/icons/dot-circle-horizontal.svg similarity index 100% rename from packages/clerk-js/src/ui/icons/dot-circle-horizontal.svg rename to packages/ui/src/icons/dot-circle-horizontal.svg diff --git a/packages/clerk-js/src/ui/icons/download.svg b/packages/ui/src/icons/download.svg similarity index 100% rename from packages/clerk-js/src/ui/icons/download.svg rename to packages/ui/src/icons/download.svg diff --git a/packages/clerk-js/src/ui/icons/email.svg b/packages/ui/src/icons/email.svg similarity index 100% rename from packages/clerk-js/src/ui/icons/email.svg rename to packages/ui/src/icons/email.svg diff --git a/packages/clerk-js/src/ui/icons/exclamation-circle.svg b/packages/ui/src/icons/exclamation-circle.svg similarity index 100% rename from packages/clerk-js/src/ui/icons/exclamation-circle.svg rename to packages/ui/src/icons/exclamation-circle.svg diff --git a/packages/clerk-js/src/ui/icons/exclamation-triangle.svg b/packages/ui/src/icons/exclamation-triangle.svg similarity index 100% rename from packages/clerk-js/src/ui/icons/exclamation-triangle.svg rename to packages/ui/src/icons/exclamation-triangle.svg diff --git a/packages/clerk-js/src/ui/icons/eye-slash.svg b/packages/ui/src/icons/eye-slash.svg similarity index 100% rename from packages/clerk-js/src/ui/icons/eye-slash.svg rename to packages/ui/src/icons/eye-slash.svg diff --git a/packages/clerk-js/src/ui/icons/eye.svg b/packages/ui/src/icons/eye.svg similarity index 100% rename from packages/clerk-js/src/ui/icons/eye.svg rename to packages/ui/src/icons/eye.svg diff --git a/packages/clerk-js/src/ui/icons/fingerprint.svg b/packages/ui/src/icons/fingerprint.svg similarity index 100% rename from packages/clerk-js/src/ui/icons/fingerprint.svg rename to packages/ui/src/icons/fingerprint.svg diff --git a/packages/clerk-js/src/ui/icons/folder.svg b/packages/ui/src/icons/folder.svg similarity index 100% rename from packages/clerk-js/src/ui/icons/folder.svg rename to packages/ui/src/icons/folder.svg diff --git a/packages/clerk-js/src/ui/icons/generic-pay.svg b/packages/ui/src/icons/generic-pay.svg similarity index 100% rename from packages/clerk-js/src/ui/icons/generic-pay.svg rename to packages/ui/src/icons/generic-pay.svg diff --git a/packages/clerk-js/src/ui/icons/index.ts b/packages/ui/src/icons/index.ts similarity index 100% rename from packages/clerk-js/src/ui/icons/index.ts rename to packages/ui/src/icons/index.ts diff --git a/packages/clerk-js/src/ui/icons/information-circle.svg b/packages/ui/src/icons/information-circle.svg similarity index 100% rename from packages/clerk-js/src/ui/icons/information-circle.svg rename to packages/ui/src/icons/information-circle.svg diff --git a/packages/clerk-js/src/ui/icons/link.svg b/packages/ui/src/icons/link.svg similarity index 100% rename from packages/clerk-js/src/ui/icons/link.svg rename to packages/ui/src/icons/link.svg diff --git a/packages/clerk-js/src/ui/icons/lock-closed.svg b/packages/ui/src/icons/lock-closed.svg similarity index 100% rename from packages/clerk-js/src/ui/icons/lock-closed.svg rename to packages/ui/src/icons/lock-closed.svg diff --git a/packages/clerk-js/src/ui/icons/lock-dotted-circle.svg b/packages/ui/src/icons/lock-dotted-circle.svg similarity index 100% rename from packages/clerk-js/src/ui/icons/lock-dotted-circle.svg rename to packages/ui/src/icons/lock-dotted-circle.svg diff --git a/packages/clerk-js/src/ui/icons/logo-mark-new.svg b/packages/ui/src/icons/logo-mark-new.svg similarity index 100% rename from packages/clerk-js/src/ui/icons/logo-mark-new.svg rename to packages/ui/src/icons/logo-mark-new.svg diff --git a/packages/clerk-js/src/ui/icons/logo-mark.svg b/packages/ui/src/icons/logo-mark.svg similarity index 100% rename from packages/clerk-js/src/ui/icons/logo-mark.svg rename to packages/ui/src/icons/logo-mark.svg diff --git a/packages/clerk-js/src/ui/icons/magnifying-glass.svg b/packages/ui/src/icons/magnifying-glass.svg similarity index 100% rename from packages/clerk-js/src/ui/icons/magnifying-glass.svg rename to packages/ui/src/icons/magnifying-glass.svg diff --git a/packages/clerk-js/src/ui/icons/menu.svg b/packages/ui/src/icons/menu.svg similarity index 100% rename from packages/clerk-js/src/ui/icons/menu.svg rename to packages/ui/src/icons/menu.svg diff --git a/packages/clerk-js/src/ui/icons/minus.svg b/packages/ui/src/icons/minus.svg similarity index 100% rename from packages/clerk-js/src/ui/icons/minus.svg rename to packages/ui/src/icons/minus.svg diff --git a/packages/clerk-js/src/ui/icons/mobile-small.svg b/packages/ui/src/icons/mobile-small.svg similarity index 100% rename from packages/clerk-js/src/ui/icons/mobile-small.svg rename to packages/ui/src/icons/mobile-small.svg diff --git a/packages/clerk-js/src/ui/icons/mobile.svg b/packages/ui/src/icons/mobile.svg similarity index 100% rename from packages/clerk-js/src/ui/icons/mobile.svg rename to packages/ui/src/icons/mobile.svg diff --git a/packages/clerk-js/src/ui/icons/organization.svg b/packages/ui/src/icons/organization.svg similarity index 100% rename from packages/clerk-js/src/ui/icons/organization.svg rename to packages/ui/src/icons/organization.svg diff --git a/packages/clerk-js/src/ui/icons/pencil-edit.svg b/packages/ui/src/icons/pencil-edit.svg similarity index 100% rename from packages/clerk-js/src/ui/icons/pencil-edit.svg rename to packages/ui/src/icons/pencil-edit.svg diff --git a/packages/clerk-js/src/ui/icons/pencil.svg b/packages/ui/src/icons/pencil.svg similarity index 100% rename from packages/clerk-js/src/ui/icons/pencil.svg rename to packages/ui/src/icons/pencil.svg diff --git a/packages/clerk-js/src/ui/icons/plans.svg b/packages/ui/src/icons/plans.svg similarity index 100% rename from packages/clerk-js/src/ui/icons/plans.svg rename to packages/ui/src/icons/plans.svg diff --git a/packages/clerk-js/src/ui/icons/plus.svg b/packages/ui/src/icons/plus.svg similarity index 100% rename from packages/clerk-js/src/ui/icons/plus.svg rename to packages/ui/src/icons/plus.svg diff --git a/packages/clerk-js/src/ui/icons/print.svg b/packages/ui/src/icons/print.svg similarity index 100% rename from packages/clerk-js/src/ui/icons/print.svg rename to packages/ui/src/icons/print.svg diff --git a/packages/clerk-js/src/ui/icons/question-mark.svg b/packages/ui/src/icons/question-mark.svg similarity index 100% rename from packages/clerk-js/src/ui/icons/question-mark.svg rename to packages/ui/src/icons/question-mark.svg diff --git a/packages/clerk-js/src/ui/icons/request-auth.svg b/packages/ui/src/icons/request-auth.svg similarity index 100% rename from packages/clerk-js/src/ui/icons/request-auth.svg rename to packages/ui/src/icons/request-auth.svg diff --git a/packages/clerk-js/src/ui/icons/rotate-left-right.svg b/packages/ui/src/icons/rotate-left-right.svg similarity index 100% rename from packages/clerk-js/src/ui/icons/rotate-left-right.svg rename to packages/ui/src/icons/rotate-left-right.svg diff --git a/packages/clerk-js/src/ui/icons/selector.svg b/packages/ui/src/icons/selector.svg similarity index 100% rename from packages/clerk-js/src/ui/icons/selector.svg rename to packages/ui/src/icons/selector.svg diff --git a/packages/clerk-js/src/ui/icons/signout-double.svg b/packages/ui/src/icons/signout-double.svg similarity index 100% rename from packages/clerk-js/src/ui/icons/signout-double.svg rename to packages/ui/src/icons/signout-double.svg diff --git a/packages/clerk-js/src/ui/icons/signout.svg b/packages/ui/src/icons/signout.svg similarity index 100% rename from packages/clerk-js/src/ui/icons/signout.svg rename to packages/ui/src/icons/signout.svg diff --git a/packages/clerk-js/src/ui/icons/spinner-jumbo.svg b/packages/ui/src/icons/spinner-jumbo.svg similarity index 100% rename from packages/clerk-js/src/ui/icons/spinner-jumbo.svg rename to packages/ui/src/icons/spinner-jumbo.svg diff --git a/packages/clerk-js/src/ui/icons/switch-arrow-right.svg b/packages/ui/src/icons/switch-arrow-right.svg similarity index 100% rename from packages/clerk-js/src/ui/icons/switch-arrow-right.svg rename to packages/ui/src/icons/switch-arrow-right.svg diff --git a/packages/clerk-js/src/ui/icons/switch-arrows.svg b/packages/ui/src/icons/switch-arrows.svg similarity index 100% rename from packages/clerk-js/src/ui/icons/switch-arrows.svg rename to packages/ui/src/icons/switch-arrows.svg diff --git a/packages/clerk-js/src/ui/icons/threeDots.svg b/packages/ui/src/icons/threeDots.svg similarity index 100% rename from packages/clerk-js/src/ui/icons/threeDots.svg rename to packages/ui/src/icons/threeDots.svg diff --git a/packages/clerk-js/src/ui/icons/tick-shield.svg b/packages/ui/src/icons/tick-shield.svg similarity index 100% rename from packages/clerk-js/src/ui/icons/tick-shield.svg rename to packages/ui/src/icons/tick-shield.svg diff --git a/packages/clerk-js/src/ui/icons/times.svg b/packages/ui/src/icons/times.svg similarity index 100% rename from packages/clerk-js/src/ui/icons/times.svg rename to packages/ui/src/icons/times.svg diff --git a/packages/clerk-js/src/ui/icons/trash.svg b/packages/ui/src/icons/trash.svg similarity index 100% rename from packages/clerk-js/src/ui/icons/trash.svg rename to packages/ui/src/icons/trash.svg diff --git a/packages/clerk-js/src/ui/icons/upload.svg b/packages/ui/src/icons/upload.svg similarity index 100% rename from packages/clerk-js/src/ui/icons/upload.svg rename to packages/ui/src/icons/upload.svg diff --git a/packages/clerk-js/src/ui/icons/user.svg b/packages/ui/src/icons/user.svg similarity index 100% rename from packages/clerk-js/src/ui/icons/user.svg rename to packages/ui/src/icons/user.svg diff --git a/packages/clerk-js/src/ui/icons/userAdd.svg b/packages/ui/src/icons/userAdd.svg similarity index 100% rename from packages/clerk-js/src/ui/icons/userAdd.svg rename to packages/ui/src/icons/userAdd.svg diff --git a/packages/clerk-js/src/ui/icons/users.svg b/packages/ui/src/icons/users.svg similarity index 100% rename from packages/clerk-js/src/ui/icons/users.svg rename to packages/ui/src/icons/users.svg diff --git a/packages/ui/src/index.ts b/packages/ui/src/index.ts new file mode 100644 index 00000000000..83cc4b5757c --- /dev/null +++ b/packages/ui/src/index.ts @@ -0,0 +1 @@ +export const uiVersion = {} as any; diff --git a/packages/ui/src/internal.ts b/packages/ui/src/internal.ts new file mode 100644 index 00000000000..f7b660df234 --- /dev/null +++ b/packages/ui/src/internal.ts @@ -0,0 +1 @@ +export { type ComponentControls, type MountComponentRenderer, mountComponentRenderer } from './Components'; diff --git a/packages/clerk-js/src/ui/lazyModules/MountedCheckoutDrawer.tsx b/packages/ui/src/lazyModules/MountedCheckoutDrawer.tsx similarity index 100% rename from packages/clerk-js/src/ui/lazyModules/MountedCheckoutDrawer.tsx rename to packages/ui/src/lazyModules/MountedCheckoutDrawer.tsx diff --git a/packages/clerk-js/src/ui/lazyModules/MountedPlanDetailDrawer.tsx b/packages/ui/src/lazyModules/MountedPlanDetailDrawer.tsx similarity index 100% rename from packages/clerk-js/src/ui/lazyModules/MountedPlanDetailDrawer.tsx rename to packages/ui/src/lazyModules/MountedPlanDetailDrawer.tsx diff --git a/packages/clerk-js/src/ui/lazyModules/MountedSubscriptionDetailDrawer.tsx b/packages/ui/src/lazyModules/MountedSubscriptionDetailDrawer.tsx similarity index 100% rename from packages/clerk-js/src/ui/lazyModules/MountedSubscriptionDetailDrawer.tsx rename to packages/ui/src/lazyModules/MountedSubscriptionDetailDrawer.tsx diff --git a/packages/clerk-js/src/ui/lazyModules/common.ts b/packages/ui/src/lazyModules/common.ts similarity index 100% rename from packages/clerk-js/src/ui/lazyModules/common.ts rename to packages/ui/src/lazyModules/common.ts diff --git a/packages/clerk-js/src/ui/lazyModules/components.ts b/packages/ui/src/lazyModules/components.ts similarity index 100% rename from packages/clerk-js/src/ui/lazyModules/components.ts rename to packages/ui/src/lazyModules/components.ts diff --git a/packages/clerk-js/src/ui/lazyModules/drawers.tsx b/packages/ui/src/lazyModules/drawers.tsx similarity index 100% rename from packages/clerk-js/src/ui/lazyModules/drawers.tsx rename to packages/ui/src/lazyModules/drawers.tsx diff --git a/packages/clerk-js/src/ui/lazyModules/providers.tsx b/packages/ui/src/lazyModules/providers.tsx similarity index 100% rename from packages/clerk-js/src/ui/lazyModules/providers.tsx rename to packages/ui/src/lazyModules/providers.tsx diff --git a/packages/clerk-js/src/ui/localization/__tests__/applyTokensToString.test.ts b/packages/ui/src/localization/__tests__/applyTokensToString.test.ts similarity index 100% rename from packages/clerk-js/src/ui/localization/__tests__/applyTokensToString.test.ts rename to packages/ui/src/localization/__tests__/applyTokensToString.test.ts diff --git a/packages/clerk-js/src/ui/localization/__tests__/makeLocalizable.test.tsx b/packages/ui/src/localization/__tests__/makeLocalizable.test.tsx similarity index 100% rename from packages/clerk-js/src/ui/localization/__tests__/makeLocalizable.test.tsx rename to packages/ui/src/localization/__tests__/makeLocalizable.test.tsx diff --git a/packages/clerk-js/src/ui/localization/__tests__/parseLocalization.test.tsx b/packages/ui/src/localization/__tests__/parseLocalization.test.tsx similarity index 100% rename from packages/clerk-js/src/ui/localization/__tests__/parseLocalization.test.tsx rename to packages/ui/src/localization/__tests__/parseLocalization.test.tsx diff --git a/packages/clerk-js/src/ui/localization/applyTokensToString.ts b/packages/ui/src/localization/applyTokensToString.ts similarity index 100% rename from packages/clerk-js/src/ui/localization/applyTokensToString.ts rename to packages/ui/src/localization/applyTokensToString.ts diff --git a/packages/ui/src/localization/defaultEnglishResource.ts b/packages/ui/src/localization/defaultEnglishResource.ts new file mode 100644 index 00000000000..5d8fb393220 --- /dev/null +++ b/packages/ui/src/localization/defaultEnglishResource.ts @@ -0,0 +1,3 @@ +import { enUS } from '@clerk/localizations'; + +export const defaultResource = enUS; diff --git a/packages/clerk-js/src/ui/localization/index.ts b/packages/ui/src/localization/index.ts similarity index 100% rename from packages/clerk-js/src/ui/localization/index.ts rename to packages/ui/src/localization/index.ts diff --git a/packages/clerk-js/src/ui/localization/localizationKeys.ts b/packages/ui/src/localization/localizationKeys.ts similarity index 100% rename from packages/clerk-js/src/ui/localization/localizationKeys.ts rename to packages/ui/src/localization/localizationKeys.ts diff --git a/packages/clerk-js/src/ui/localization/localizationModifiers.ts b/packages/ui/src/localization/localizationModifiers.ts similarity index 100% rename from packages/clerk-js/src/ui/localization/localizationModifiers.ts rename to packages/ui/src/localization/localizationModifiers.ts diff --git a/packages/clerk-js/src/ui/localization/makeLocalizable.tsx b/packages/ui/src/localization/makeLocalizable.tsx similarity index 100% rename from packages/clerk-js/src/ui/localization/makeLocalizable.tsx rename to packages/ui/src/localization/makeLocalizable.tsx diff --git a/packages/clerk-js/src/ui/localization/parseLocalization.ts b/packages/ui/src/localization/parseLocalization.ts similarity index 100% rename from packages/clerk-js/src/ui/localization/parseLocalization.ts rename to packages/ui/src/localization/parseLocalization.ts diff --git a/packages/clerk-js/src/ui/portal/index.tsx b/packages/ui/src/portal/index.tsx similarity index 92% rename from packages/clerk-js/src/ui/portal/index.tsx rename to packages/ui/src/portal/index.tsx index cf64c1155ba..7105b571771 100644 --- a/packages/clerk-js/src/ui/portal/index.tsx +++ b/packages/ui/src/portal/index.tsx @@ -1,13 +1,12 @@ +import { clerkErrorPathRouterMissingPath, PRESERVED_QUERYSTRING_PARAMS } from '@clerk/shared/internal/clerk-js'; import type { RoutingOptions } from '@clerk/shared/types'; import React, { Suspense } from 'react'; import ReactDOM from 'react-dom'; -import { PRESERVED_QUERYSTRING_PARAMS } from '../../core/constants'; -import { clerkErrorPathRouterMissingPath } from '../../core/errors'; -import { normalizeRoutingOptions } from '../../utils/normalizeRoutingOptions'; import { ComponentContextProvider } from '../contexts'; import { HashRouter, PathRouter, VirtualRouter } from '../router'; import type { AvailableComponentCtx, AvailableComponentName } from '../types'; +import { normalizeRoutingOptions } from '../utils/normalizeRoutingOptions'; type PortalProps> = { node: HTMLDivElement; diff --git a/packages/clerk-js/src/ui/primitives/Alert.tsx b/packages/ui/src/primitives/Alert.tsx similarity index 100% rename from packages/clerk-js/src/ui/primitives/Alert.tsx rename to packages/ui/src/primitives/Alert.tsx diff --git a/packages/clerk-js/src/ui/primitives/AlertIcon.tsx b/packages/ui/src/primitives/AlertIcon.tsx similarity index 100% rename from packages/clerk-js/src/ui/primitives/AlertIcon.tsx rename to packages/ui/src/primitives/AlertIcon.tsx diff --git a/packages/clerk-js/src/ui/primitives/Badge.tsx b/packages/ui/src/primitives/Badge.tsx similarity index 100% rename from packages/clerk-js/src/ui/primitives/Badge.tsx rename to packages/ui/src/primitives/Badge.tsx diff --git a/packages/clerk-js/src/ui/primitives/Box.tsx b/packages/ui/src/primitives/Box.tsx similarity index 100% rename from packages/clerk-js/src/ui/primitives/Box.tsx rename to packages/ui/src/primitives/Box.tsx diff --git a/packages/clerk-js/src/ui/primitives/Button.tsx b/packages/ui/src/primitives/Button.tsx similarity index 100% rename from packages/clerk-js/src/ui/primitives/Button.tsx rename to packages/ui/src/primitives/Button.tsx diff --git a/packages/clerk-js/src/ui/primitives/Dd.tsx b/packages/ui/src/primitives/Dd.tsx similarity index 100% rename from packages/clerk-js/src/ui/primitives/Dd.tsx rename to packages/ui/src/primitives/Dd.tsx diff --git a/packages/clerk-js/src/ui/primitives/Dl.tsx b/packages/ui/src/primitives/Dl.tsx similarity index 100% rename from packages/clerk-js/src/ui/primitives/Dl.tsx rename to packages/ui/src/primitives/Dl.tsx diff --git a/packages/clerk-js/src/ui/primitives/Dt.tsx b/packages/ui/src/primitives/Dt.tsx similarity index 100% rename from packages/clerk-js/src/ui/primitives/Dt.tsx rename to packages/ui/src/primitives/Dt.tsx diff --git a/packages/clerk-js/src/ui/primitives/Flex.tsx b/packages/ui/src/primitives/Flex.tsx similarity index 100% rename from packages/clerk-js/src/ui/primitives/Flex.tsx rename to packages/ui/src/primitives/Flex.tsx diff --git a/packages/clerk-js/src/ui/primitives/Form.tsx b/packages/ui/src/primitives/Form.tsx similarity index 100% rename from packages/clerk-js/src/ui/primitives/Form.tsx rename to packages/ui/src/primitives/Form.tsx diff --git a/packages/clerk-js/src/ui/primitives/FormErrorText.tsx b/packages/ui/src/primitives/FormErrorText.tsx similarity index 100% rename from packages/clerk-js/src/ui/primitives/FormErrorText.tsx rename to packages/ui/src/primitives/FormErrorText.tsx diff --git a/packages/clerk-js/src/ui/primitives/FormInfoText.tsx b/packages/ui/src/primitives/FormInfoText.tsx similarity index 100% rename from packages/clerk-js/src/ui/primitives/FormInfoText.tsx rename to packages/ui/src/primitives/FormInfoText.tsx diff --git a/packages/clerk-js/src/ui/primitives/FormLabel.tsx b/packages/ui/src/primitives/FormLabel.tsx similarity index 100% rename from packages/clerk-js/src/ui/primitives/FormLabel.tsx rename to packages/ui/src/primitives/FormLabel.tsx diff --git a/packages/clerk-js/src/ui/primitives/FormSuccessText.tsx b/packages/ui/src/primitives/FormSuccessText.tsx similarity index 100% rename from packages/clerk-js/src/ui/primitives/FormSuccessText.tsx rename to packages/ui/src/primitives/FormSuccessText.tsx diff --git a/packages/clerk-js/src/ui/primitives/FormWarningText.tsx b/packages/ui/src/primitives/FormWarningText.tsx similarity index 100% rename from packages/clerk-js/src/ui/primitives/FormWarningText.tsx rename to packages/ui/src/primitives/FormWarningText.tsx diff --git a/packages/clerk-js/src/ui/primitives/Grid.tsx b/packages/ui/src/primitives/Grid.tsx similarity index 100% rename from packages/clerk-js/src/ui/primitives/Grid.tsx rename to packages/ui/src/primitives/Grid.tsx diff --git a/packages/clerk-js/src/ui/primitives/Heading.tsx b/packages/ui/src/primitives/Heading.tsx similarity index 100% rename from packages/clerk-js/src/ui/primitives/Heading.tsx rename to packages/ui/src/primitives/Heading.tsx diff --git a/packages/clerk-js/src/ui/primitives/Hr.tsx b/packages/ui/src/primitives/Hr.tsx similarity index 100% rename from packages/clerk-js/src/ui/primitives/Hr.tsx rename to packages/ui/src/primitives/Hr.tsx diff --git a/packages/clerk-js/src/ui/primitives/Icon.tsx b/packages/ui/src/primitives/Icon.tsx similarity index 100% rename from packages/clerk-js/src/ui/primitives/Icon.tsx rename to packages/ui/src/primitives/Icon.tsx diff --git a/packages/clerk-js/src/ui/primitives/Image.tsx b/packages/ui/src/primitives/Image.tsx similarity index 100% rename from packages/clerk-js/src/ui/primitives/Image.tsx rename to packages/ui/src/primitives/Image.tsx diff --git a/packages/clerk-js/src/ui/primitives/Input.tsx b/packages/ui/src/primitives/Input.tsx similarity index 100% rename from packages/clerk-js/src/ui/primitives/Input.tsx rename to packages/ui/src/primitives/Input.tsx diff --git a/packages/clerk-js/src/ui/primitives/Link.tsx b/packages/ui/src/primitives/Link.tsx similarity index 100% rename from packages/clerk-js/src/ui/primitives/Link.tsx rename to packages/ui/src/primitives/Link.tsx diff --git a/packages/clerk-js/src/ui/primitives/NotificationBadge.tsx b/packages/ui/src/primitives/NotificationBadge.tsx similarity index 100% rename from packages/clerk-js/src/ui/primitives/NotificationBadge.tsx rename to packages/ui/src/primitives/NotificationBadge.tsx diff --git a/packages/clerk-js/src/ui/primitives/Span.tsx b/packages/ui/src/primitives/Span.tsx similarity index 100% rename from packages/clerk-js/src/ui/primitives/Span.tsx rename to packages/ui/src/primitives/Span.tsx diff --git a/packages/clerk-js/src/ui/primitives/Spinner.tsx b/packages/ui/src/primitives/Spinner.tsx similarity index 100% rename from packages/clerk-js/src/ui/primitives/Spinner.tsx rename to packages/ui/src/primitives/Spinner.tsx diff --git a/packages/clerk-js/src/ui/primitives/Table.tsx b/packages/ui/src/primitives/Table.tsx similarity index 100% rename from packages/clerk-js/src/ui/primitives/Table.tsx rename to packages/ui/src/primitives/Table.tsx diff --git a/packages/clerk-js/src/ui/primitives/Tbody.tsx b/packages/ui/src/primitives/Tbody.tsx similarity index 100% rename from packages/clerk-js/src/ui/primitives/Tbody.tsx rename to packages/ui/src/primitives/Tbody.tsx diff --git a/packages/clerk-js/src/ui/primitives/Td.tsx b/packages/ui/src/primitives/Td.tsx similarity index 100% rename from packages/clerk-js/src/ui/primitives/Td.tsx rename to packages/ui/src/primitives/Td.tsx diff --git a/packages/clerk-js/src/ui/primitives/Text.tsx b/packages/ui/src/primitives/Text.tsx similarity index 100% rename from packages/clerk-js/src/ui/primitives/Text.tsx rename to packages/ui/src/primitives/Text.tsx diff --git a/packages/clerk-js/src/ui/primitives/Th.tsx b/packages/ui/src/primitives/Th.tsx similarity index 100% rename from packages/clerk-js/src/ui/primitives/Th.tsx rename to packages/ui/src/primitives/Th.tsx diff --git a/packages/clerk-js/src/ui/primitives/Thead.tsx b/packages/ui/src/primitives/Thead.tsx similarity index 100% rename from packages/clerk-js/src/ui/primitives/Thead.tsx rename to packages/ui/src/primitives/Thead.tsx diff --git a/packages/clerk-js/src/ui/primitives/Tr.tsx b/packages/ui/src/primitives/Tr.tsx similarity index 100% rename from packages/clerk-js/src/ui/primitives/Tr.tsx rename to packages/ui/src/primitives/Tr.tsx diff --git a/packages/clerk-js/src/ui/primitives/applyDataStateProps.ts b/packages/ui/src/primitives/applyDataStateProps.ts similarity index 100% rename from packages/clerk-js/src/ui/primitives/applyDataStateProps.ts rename to packages/ui/src/primitives/applyDataStateProps.ts diff --git a/packages/clerk-js/src/ui/primitives/gapPropertyCompat.ts b/packages/ui/src/primitives/gapPropertyCompat.ts similarity index 100% rename from packages/clerk-js/src/ui/primitives/gapPropertyCompat.ts rename to packages/ui/src/primitives/gapPropertyCompat.ts diff --git a/packages/clerk-js/src/ui/primitives/hooks/useFormField.tsx b/packages/ui/src/primitives/hooks/useFormField.tsx similarity index 100% rename from packages/clerk-js/src/ui/primitives/hooks/useFormField.tsx rename to packages/ui/src/primitives/hooks/useFormField.tsx diff --git a/packages/clerk-js/src/ui/primitives/hooks/useInput.ts b/packages/ui/src/primitives/hooks/useInput.ts similarity index 100% rename from packages/clerk-js/src/ui/primitives/hooks/useInput.ts rename to packages/ui/src/primitives/hooks/useInput.ts diff --git a/packages/clerk-js/src/ui/primitives/index.ts b/packages/ui/src/primitives/index.ts similarity index 100% rename from packages/clerk-js/src/ui/primitives/index.ts rename to packages/ui/src/primitives/index.ts diff --git a/packages/clerk-js/src/ui/router/BaseRouter.tsx b/packages/ui/src/router/BaseRouter.tsx similarity index 100% rename from packages/clerk-js/src/ui/router/BaseRouter.tsx rename to packages/ui/src/router/BaseRouter.tsx diff --git a/packages/clerk-js/src/ui/router/HashRouter.tsx b/packages/ui/src/router/HashRouter.tsx similarity index 100% rename from packages/clerk-js/src/ui/router/HashRouter.tsx rename to packages/ui/src/router/HashRouter.tsx diff --git a/packages/clerk-js/src/ui/router/PathRouter.tsx b/packages/ui/src/router/PathRouter.tsx similarity index 100% rename from packages/clerk-js/src/ui/router/PathRouter.tsx rename to packages/ui/src/router/PathRouter.tsx diff --git a/packages/clerk-js/src/ui/router/Route.tsx b/packages/ui/src/router/Route.tsx similarity index 100% rename from packages/clerk-js/src/ui/router/Route.tsx rename to packages/ui/src/router/Route.tsx diff --git a/packages/clerk-js/src/ui/router/RouteContext.tsx b/packages/ui/src/router/RouteContext.tsx similarity index 100% rename from packages/clerk-js/src/ui/router/RouteContext.tsx rename to packages/ui/src/router/RouteContext.tsx diff --git a/packages/clerk-js/src/ui/router/Switch.tsx b/packages/ui/src/router/Switch.tsx similarity index 100% rename from packages/clerk-js/src/ui/router/Switch.tsx rename to packages/ui/src/router/Switch.tsx diff --git a/packages/clerk-js/src/ui/router/VirtualRouter.tsx b/packages/ui/src/router/VirtualRouter.tsx similarity index 100% rename from packages/clerk-js/src/ui/router/VirtualRouter.tsx rename to packages/ui/src/router/VirtualRouter.tsx diff --git a/packages/clerk-js/src/ui/router/__mocks__/RouteContext.tsx b/packages/ui/src/router/__mocks__/RouteContext.tsx similarity index 100% rename from packages/clerk-js/src/ui/router/__mocks__/RouteContext.tsx rename to packages/ui/src/router/__mocks__/RouteContext.tsx diff --git a/packages/clerk-js/src/ui/router/__tests__/HashRouter.test.tsx b/packages/ui/src/router/__tests__/HashRouter.test.tsx similarity index 100% rename from packages/clerk-js/src/ui/router/__tests__/HashRouter.test.tsx rename to packages/ui/src/router/__tests__/HashRouter.test.tsx diff --git a/packages/clerk-js/src/ui/router/__tests__/PathRouter.test.tsx b/packages/ui/src/router/__tests__/PathRouter.test.tsx similarity index 100% rename from packages/clerk-js/src/ui/router/__tests__/PathRouter.test.tsx rename to packages/ui/src/router/__tests__/PathRouter.test.tsx diff --git a/packages/clerk-js/src/ui/router/__tests__/Switch.test.tsx b/packages/ui/src/router/__tests__/Switch.test.tsx similarity index 100% rename from packages/clerk-js/src/ui/router/__tests__/Switch.test.tsx rename to packages/ui/src/router/__tests__/Switch.test.tsx diff --git a/packages/clerk-js/src/ui/router/__tests__/VirtualRouter.test.tsx b/packages/ui/src/router/__tests__/VirtualRouter.test.tsx similarity index 100% rename from packages/clerk-js/src/ui/router/__tests__/VirtualRouter.test.tsx rename to packages/ui/src/router/__tests__/VirtualRouter.test.tsx diff --git a/packages/clerk-js/src/ui/router/index.tsx b/packages/ui/src/router/index.tsx similarity index 100% rename from packages/clerk-js/src/ui/router/index.tsx rename to packages/ui/src/router/index.tsx diff --git a/packages/clerk-js/src/ui/router/newPaths.ts b/packages/ui/src/router/newPaths.ts similarity index 100% rename from packages/clerk-js/src/ui/router/newPaths.ts rename to packages/ui/src/router/newPaths.ts diff --git a/packages/clerk-js/src/ui/router/pathToRegexp.ts b/packages/ui/src/router/pathToRegexp.ts similarity index 100% rename from packages/clerk-js/src/ui/router/pathToRegexp.ts rename to packages/ui/src/router/pathToRegexp.ts diff --git a/packages/clerk-js/src/ui/styledSystem/InternalThemeProvider.tsx b/packages/ui/src/styledSystem/InternalThemeProvider.tsx similarity index 100% rename from packages/clerk-js/src/ui/styledSystem/InternalThemeProvider.tsx rename to packages/ui/src/styledSystem/InternalThemeProvider.tsx diff --git a/packages/clerk-js/src/ui/styledSystem/StyleCacheProvider.tsx b/packages/ui/src/styledSystem/StyleCacheProvider.tsx similarity index 100% rename from packages/clerk-js/src/ui/styledSystem/StyleCacheProvider.tsx rename to packages/ui/src/styledSystem/StyleCacheProvider.tsx diff --git a/packages/clerk-js/src/ui/styledSystem/__tests__/createVariants.test.ts b/packages/ui/src/styledSystem/__tests__/createVariants.test.ts similarity index 100% rename from packages/clerk-js/src/ui/styledSystem/__tests__/createVariants.test.ts rename to packages/ui/src/styledSystem/__tests__/createVariants.test.ts diff --git a/packages/clerk-js/src/ui/styledSystem/animations.ts b/packages/ui/src/styledSystem/animations.ts similarity index 100% rename from packages/clerk-js/src/ui/styledSystem/animations.ts rename to packages/ui/src/styledSystem/animations.ts diff --git a/packages/clerk-js/src/ui/styledSystem/breakpoints.tsx b/packages/ui/src/styledSystem/breakpoints.tsx similarity index 100% rename from packages/clerk-js/src/ui/styledSystem/breakpoints.tsx rename to packages/ui/src/styledSystem/breakpoints.tsx diff --git a/packages/clerk-js/src/ui/styledSystem/common.ts b/packages/ui/src/styledSystem/common.ts similarity index 100% rename from packages/clerk-js/src/ui/styledSystem/common.ts rename to packages/ui/src/styledSystem/common.ts diff --git a/packages/clerk-js/src/ui/styledSystem/createCssVariables.ts b/packages/ui/src/styledSystem/createCssVariables.ts similarity index 100% rename from packages/clerk-js/src/ui/styledSystem/createCssVariables.ts rename to packages/ui/src/styledSystem/createCssVariables.ts diff --git a/packages/clerk-js/src/ui/styledSystem/createVariants.ts b/packages/ui/src/styledSystem/createVariants.ts similarity index 100% rename from packages/clerk-js/src/ui/styledSystem/createVariants.ts rename to packages/ui/src/styledSystem/createVariants.ts diff --git a/packages/clerk-js/src/ui/styledSystem/index.ts b/packages/ui/src/styledSystem/index.ts similarity index 100% rename from packages/clerk-js/src/ui/styledSystem/index.ts rename to packages/ui/src/styledSystem/index.ts diff --git a/packages/clerk-js/src/ui/styledSystem/types.ts b/packages/ui/src/styledSystem/types.ts similarity index 100% rename from packages/clerk-js/src/ui/styledSystem/types.ts rename to packages/ui/src/styledSystem/types.ts diff --git a/packages/clerk-js/src/ui/types.ts b/packages/ui/src/types.ts similarity index 100% rename from packages/clerk-js/src/ui/types.ts rename to packages/ui/src/types.ts diff --git a/packages/clerk-js/src/ui/utils/ExternalElementMounter.tsx b/packages/ui/src/utils/ExternalElementMounter.tsx similarity index 100% rename from packages/clerk-js/src/ui/utils/ExternalElementMounter.tsx rename to packages/ui/src/utils/ExternalElementMounter.tsx diff --git a/packages/clerk-js/src/ui/utils/__tests__/createCustomMenuItems.test.ts b/packages/ui/src/utils/__tests__/createCustomMenuItems.test.ts similarity index 100% rename from packages/clerk-js/src/ui/utils/__tests__/createCustomMenuItems.test.ts rename to packages/ui/src/utils/__tests__/createCustomMenuItems.test.ts diff --git a/packages/clerk-js/src/ui/utils/__tests__/createCustomPages.test.ts b/packages/ui/src/utils/__tests__/createCustomPages.test.ts similarity index 100% rename from packages/clerk-js/src/ui/utils/__tests__/createCustomPages.test.ts rename to packages/ui/src/utils/__tests__/createCustomPages.test.ts diff --git a/packages/clerk-js/src/ui/utils/__tests__/cssSupports.test.ts b/packages/ui/src/utils/__tests__/cssSupports.test.ts similarity index 100% rename from packages/clerk-js/src/ui/utils/__tests__/cssSupports.test.ts rename to packages/ui/src/utils/__tests__/cssSupports.test.ts diff --git a/packages/clerk-js/src/ui/utils/__tests__/cssVariables.test.ts b/packages/ui/src/utils/__tests__/cssVariables.test.ts similarity index 100% rename from packages/clerk-js/src/ui/utils/__tests__/cssVariables.test.ts rename to packages/ui/src/utils/__tests__/cssVariables.test.ts diff --git a/packages/clerk-js/src/utils/__tests__/appearance.test.ts b/packages/ui/src/utils/__tests__/extractCssLayerNameFromAppearance.ts similarity index 87% rename from packages/clerk-js/src/utils/__tests__/appearance.test.ts rename to packages/ui/src/utils/__tests__/extractCssLayerNameFromAppearance.ts index a79e1f9ab36..bf77a612f38 100644 --- a/packages/clerk-js/src/utils/__tests__/appearance.test.ts +++ b/packages/ui/src/utils/__tests__/extractCssLayerNameFromAppearance.ts @@ -1,9 +1,9 @@ import type { Appearance, BaseTheme } from '@clerk/shared/types'; import { describe, expect, it } from 'vitest'; -import { processCssLayerNameExtraction } from '../appearance'; +import { extractCssLayerNameFromAppearance } from '../extractCssLayerNameFromAppearance'; -describe('processCssLayerNameExtraction', () => { +describe('extractCssLayerNameFromAppearance', () => { it('extracts cssLayerName from single baseTheme and moves it to appearance level', () => { const appearance: Appearance = { baseTheme: { @@ -12,12 +12,13 @@ describe('processCssLayerNameExtraction', () => { }, }; - const result = processCssLayerNameExtraction(appearance); + const result = extractCssLayerNameFromAppearance(appearance); expect(result?.cssLayerName).toBe('theme-layer'); expect(result?.baseTheme).toBeDefined(); if (result?.baseTheme && !Array.isArray(result.baseTheme)) { expect((result.baseTheme as BaseTheme & { cssLayerName?: string }).cssLayerName).toBeUndefined(); + // @ts-expect-error __type is a hidden prop expect(result.baseTheme.__type).toBe('prebuilt_appearance'); } }); @@ -31,7 +32,7 @@ describe('processCssLayerNameExtraction', () => { }, }; - const result = processCssLayerNameExtraction(appearance); + const result = extractCssLayerNameFromAppearance(appearance); expect(result?.cssLayerName).toBe('appearance-layer'); if (result?.baseTheme && !Array.isArray(result.baseTheme)) { @@ -56,7 +57,7 @@ describe('processCssLayerNameExtraction', () => { ], }; - const result = processCssLayerNameExtraction(appearance); + const result = extractCssLayerNameFromAppearance(appearance); expect(result?.cssLayerName).toBe('first-layer'); expect(result?.baseTheme).toBeDefined(); @@ -86,7 +87,7 @@ describe('processCssLayerNameExtraction', () => { ], }; - const result = processCssLayerNameExtraction(appearance); + const result = extractCssLayerNameFromAppearance(appearance); expect(result?.cssLayerName).toBe('appearance-layer'); if (result?.baseTheme && Array.isArray(result.baseTheme)) { @@ -103,10 +104,11 @@ describe('processCssLayerNameExtraction', () => { }, }; - const result = processCssLayerNameExtraction(appearance); + const result = extractCssLayerNameFromAppearance(appearance); expect(result?.cssLayerName).toBeUndefined(); if (result?.baseTheme && !Array.isArray(result.baseTheme)) { + // @ts-expect-error __type is a hidden prop expect(result.baseTheme.__type).toBe('prebuilt_appearance'); expect((result.baseTheme as BaseTheme & { cssLayerName?: string }).cssLayerName).toBeUndefined(); } @@ -124,7 +126,7 @@ describe('processCssLayerNameExtraction', () => { ], }; - const result = processCssLayerNameExtraction(appearance); + const result = extractCssLayerNameFromAppearance(appearance); expect(result?.cssLayerName).toBeUndefined(); if (result?.baseTheme && Array.isArray(result.baseTheme)) { @@ -141,14 +143,14 @@ describe('processCssLayerNameExtraction', () => { cssLayerName: 'standalone-layer', }; - const result = processCssLayerNameExtraction(appearance); + const result = extractCssLayerNameFromAppearance(appearance); expect(result?.cssLayerName).toBe('standalone-layer'); expect(result?.baseTheme).toBeUndefined(); }); it('handles undefined appearance', () => { - const result = processCssLayerNameExtraction(undefined); + const result = extractCssLayerNameFromAppearance(undefined); expect(result).toBeUndefined(); }); @@ -162,7 +164,7 @@ describe('processCssLayerNameExtraction', () => { }, }; - const result = processCssLayerNameExtraction(appearance); + const result = extractCssLayerNameFromAppearance(appearance); expect(result?.cssLayerName).toBe('theme-layer'); expect(result?.variables?.colorPrimary).toBe('blue'); @@ -176,7 +178,7 @@ describe('processCssLayerNameExtraction', () => { baseTheme: [], }; - const result = processCssLayerNameExtraction(appearance); + const result = extractCssLayerNameFromAppearance(appearance); expect(result?.cssLayerName).toBeUndefined(); expect(result?.baseTheme).toEqual([]); @@ -201,7 +203,7 @@ describe('processCssLayerNameExtraction', () => { ], }; - const result = processCssLayerNameExtraction(appearance); + const result = extractCssLayerNameFromAppearance(appearance); expect(result?.cssLayerName).toBe('second-theme-layer'); expect(Array.isArray(result?.baseTheme)).toBe(true); @@ -229,7 +231,7 @@ describe('processCssLayerNameExtraction', () => { ], }; - const result = processCssLayerNameExtraction(appearance); + const result = extractCssLayerNameFromAppearance(appearance); expect(result?.cssLayerName).toBe('appearance-level-layer'); expect(Array.isArray(result?.baseTheme)).toBe(true); @@ -250,7 +252,7 @@ describe('processCssLayerNameExtraction', () => { }, }; - const result = processCssLayerNameExtraction(appearance); + const result = extractCssLayerNameFromAppearance(appearance); expect(result?.cssLayerName).toBeUndefined(); expect(result?.baseTheme).toEqual({ diff --git a/packages/clerk-js/src/ui/utils/__tests__/factorSorting.test.ts b/packages/ui/src/utils/__tests__/factorSorting.test.ts similarity index 100% rename from packages/clerk-js/src/ui/utils/__tests__/factorSorting.test.ts rename to packages/ui/src/utils/__tests__/factorSorting.test.ts diff --git a/packages/clerk-js/src/ui/utils/__tests__/formatSafeIdentifier.test.ts b/packages/ui/src/utils/__tests__/formatSafeIdentifier.test.ts similarity index 100% rename from packages/clerk-js/src/ui/utils/__tests__/formatSafeIdentifier.test.ts rename to packages/ui/src/utils/__tests__/formatSafeIdentifier.test.ts diff --git a/packages/clerk-js/src/ui/utils/__tests__/intl.test.ts b/packages/ui/src/utils/__tests__/intl.test.ts similarity index 100% rename from packages/clerk-js/src/ui/utils/__tests__/intl.test.ts rename to packages/ui/src/utils/__tests__/intl.test.ts diff --git a/packages/clerk-js/src/ui/utils/__tests__/originPrefersPopup.test.ts b/packages/ui/src/utils/__tests__/originPrefersPopup.test.ts similarity index 100% rename from packages/clerk-js/src/ui/utils/__tests__/originPrefersPopup.test.ts rename to packages/ui/src/utils/__tests__/originPrefersPopup.test.ts diff --git a/packages/clerk-js/src/ui/utils/__tests__/passwordUtils.test.tsx b/packages/ui/src/utils/__tests__/passwordUtils.test.tsx similarity index 100% rename from packages/clerk-js/src/ui/utils/__tests__/passwordUtils.test.tsx rename to packages/ui/src/utils/__tests__/passwordUtils.test.tsx diff --git a/packages/clerk-js/src/ui/utils/__tests__/phoneUtils.test.ts b/packages/ui/src/utils/__tests__/phoneUtils.test.ts similarity index 100% rename from packages/clerk-js/src/ui/utils/__tests__/phoneUtils.test.ts rename to packages/ui/src/utils/__tests__/phoneUtils.test.ts diff --git a/packages/clerk-js/src/ui/utils/__tests__/truncateTextWithEndVisible.test.ts b/packages/ui/src/utils/__tests__/truncateTextWithEndVisible.test.ts similarity index 100% rename from packages/clerk-js/src/ui/utils/__tests__/truncateTextWithEndVisible.test.ts rename to packages/ui/src/utils/__tests__/truncateTextWithEndVisible.test.ts diff --git a/packages/ui/src/utils/buildVirtualRouterUrl.ts b/packages/ui/src/utils/buildVirtualRouterUrl.ts new file mode 100644 index 00000000000..102d1a7eb4a --- /dev/null +++ b/packages/ui/src/utils/buildVirtualRouterUrl.ts @@ -0,0 +1,7 @@ +export const buildVirtualRouterUrl = ({ base, path }: { base: string; path: string | undefined }) => { + if (!path) { + return base; + } + + return base + path; +}; diff --git a/packages/clerk-js/src/ui/utils/colors/README.md b/packages/ui/src/utils/colors/README.md similarity index 100% rename from packages/clerk-js/src/ui/utils/colors/README.md rename to packages/ui/src/utils/colors/README.md diff --git a/packages/clerk-js/src/ui/utils/colors/__tests__/constants.test.ts b/packages/ui/src/utils/colors/__tests__/constants.test.ts similarity index 100% rename from packages/clerk-js/src/ui/utils/colors/__tests__/constants.test.ts rename to packages/ui/src/utils/colors/__tests__/constants.test.ts diff --git a/packages/clerk-js/src/ui/utils/colors/__tests__/index.test.ts b/packages/ui/src/utils/colors/__tests__/index.test.ts similarity index 100% rename from packages/clerk-js/src/ui/utils/colors/__tests__/index.test.ts rename to packages/ui/src/utils/colors/__tests__/index.test.ts diff --git a/packages/clerk-js/src/ui/utils/colors/__tests__/legacy.test.ts b/packages/ui/src/utils/colors/__tests__/legacy.test.ts similarity index 100% rename from packages/clerk-js/src/ui/utils/colors/__tests__/legacy.test.ts rename to packages/ui/src/utils/colors/__tests__/legacy.test.ts diff --git a/packages/clerk-js/src/ui/utils/colors/__tests__/modern.test.ts b/packages/ui/src/utils/colors/__tests__/modern.test.ts similarity index 100% rename from packages/clerk-js/src/ui/utils/colors/__tests__/modern.test.ts rename to packages/ui/src/utils/colors/__tests__/modern.test.ts diff --git a/packages/clerk-js/src/ui/utils/colors/__tests__/scales.test.ts b/packages/ui/src/utils/colors/__tests__/scales.test.ts similarity index 100% rename from packages/clerk-js/src/ui/utils/colors/__tests__/scales.test.ts rename to packages/ui/src/utils/colors/__tests__/scales.test.ts diff --git a/packages/clerk-js/src/ui/utils/colors/__tests__/utils.test.ts b/packages/ui/src/utils/colors/__tests__/utils.test.ts similarity index 100% rename from packages/clerk-js/src/ui/utils/colors/__tests__/utils.test.ts rename to packages/ui/src/utils/colors/__tests__/utils.test.ts diff --git a/packages/clerk-js/src/ui/utils/colors/constants.ts b/packages/ui/src/utils/colors/constants.ts similarity index 100% rename from packages/clerk-js/src/ui/utils/colors/constants.ts rename to packages/ui/src/utils/colors/constants.ts diff --git a/packages/clerk-js/src/ui/utils/colors/index.ts b/packages/ui/src/utils/colors/index.ts similarity index 100% rename from packages/clerk-js/src/ui/utils/colors/index.ts rename to packages/ui/src/utils/colors/index.ts diff --git a/packages/clerk-js/src/ui/utils/colors/legacy.ts b/packages/ui/src/utils/colors/legacy.ts similarity index 100% rename from packages/clerk-js/src/ui/utils/colors/legacy.ts rename to packages/ui/src/utils/colors/legacy.ts diff --git a/packages/clerk-js/src/ui/utils/colors/modern.ts b/packages/ui/src/utils/colors/modern.ts similarity index 100% rename from packages/clerk-js/src/ui/utils/colors/modern.ts rename to packages/ui/src/utils/colors/modern.ts diff --git a/packages/clerk-js/src/ui/utils/colors/scales.ts b/packages/ui/src/utils/colors/scales.ts similarity index 100% rename from packages/clerk-js/src/ui/utils/colors/scales.ts rename to packages/ui/src/utils/colors/scales.ts diff --git a/packages/clerk-js/src/ui/utils/colors/utils.ts b/packages/ui/src/utils/colors/utils.ts similarity index 100% rename from packages/clerk-js/src/ui/utils/colors/utils.ts rename to packages/ui/src/utils/colors/utils.ts diff --git a/packages/clerk-js/src/ui/utils/containsAllOf.ts b/packages/ui/src/utils/containsAllOf.ts similarity index 100% rename from packages/clerk-js/src/ui/utils/containsAllOf.ts rename to packages/ui/src/utils/containsAllOf.ts diff --git a/packages/clerk-js/src/ui/utils/createCustomMenuItems.tsx b/packages/ui/src/utils/createCustomMenuItems.tsx similarity index 100% rename from packages/clerk-js/src/ui/utils/createCustomMenuItems.tsx rename to packages/ui/src/utils/createCustomMenuItems.tsx diff --git a/packages/clerk-js/src/ui/utils/createCustomPages.tsx b/packages/ui/src/utils/createCustomPages.tsx similarity index 99% rename from packages/clerk-js/src/ui/utils/createCustomPages.tsx rename to packages/ui/src/utils/createCustomPages.tsx index edb3c58f558..5d3e5e36b14 100644 --- a/packages/clerk-js/src/ui/utils/createCustomPages.tsx +++ b/packages/ui/src/utils/createCustomPages.tsx @@ -248,7 +248,7 @@ const sanitizeCustomPageURL = (url: string): string => { if (isValidUrl(url)) { throw new Error('Clerk: Absolute URLs are not supported for custom pages'); } - return (url as string).charAt(0) === '/' && (url as string).length > 1 ? (url as string).substring(1) : url; + return url.charAt(0) === '/' && url.length > 1 ? url.substring(1) : url; }; const assertExternalLinkAsRoot = (routes: NavbarRoute[]) => { diff --git a/packages/clerk-js/src/ui/utils/createInfiniteAccessProxy.ts b/packages/ui/src/utils/createInfiniteAccessProxy.ts similarity index 100% rename from packages/clerk-js/src/ui/utils/createInfiniteAccessProxy.ts rename to packages/ui/src/utils/createInfiniteAccessProxy.ts diff --git a/packages/clerk-js/src/ui/utils/createSlug.ts b/packages/ui/src/utils/createSlug.ts similarity index 100% rename from packages/clerk-js/src/ui/utils/createSlug.ts rename to packages/ui/src/utils/createSlug.ts diff --git a/packages/clerk-js/src/ui/utils/cssSupports.ts b/packages/ui/src/utils/cssSupports.ts similarity index 100% rename from packages/clerk-js/src/ui/utils/cssSupports.ts rename to packages/ui/src/utils/cssSupports.ts diff --git a/packages/clerk-js/src/ui/utils/cssVariables.ts b/packages/ui/src/utils/cssVariables.ts similarity index 100% rename from packages/clerk-js/src/ui/utils/cssVariables.ts rename to packages/ui/src/utils/cssVariables.ts diff --git a/packages/clerk-js/src/utils/disambiguateRedirectOptions.ts b/packages/ui/src/utils/disambiguateRedirectOptions.ts similarity index 100% rename from packages/clerk-js/src/utils/disambiguateRedirectOptions.ts rename to packages/ui/src/utils/disambiguateRedirectOptions.ts diff --git a/packages/clerk-js/src/ui/utils/errorHandler.ts b/packages/ui/src/utils/errorHandler.ts similarity index 100% rename from packages/clerk-js/src/ui/utils/errorHandler.ts rename to packages/ui/src/utils/errorHandler.ts diff --git a/packages/clerk-js/src/utils/appearance.ts b/packages/ui/src/utils/extractCssLayerNameFromAppearance.ts similarity index 96% rename from packages/clerk-js/src/utils/appearance.ts rename to packages/ui/src/utils/extractCssLayerNameFromAppearance.ts index 38f3461128e..69a0cd84c51 100644 --- a/packages/clerk-js/src/utils/appearance.ts +++ b/packages/ui/src/utils/extractCssLayerNameFromAppearance.ts @@ -4,7 +4,7 @@ import type { Appearance, BaseTheme } from '@clerk/shared/types'; * Extracts cssLayerName from theme/baseTheme and moves it to appearance level. * Handles both the new 'theme' property and deprecated 'baseTheme' property. */ -export function processCssLayerNameExtraction(appearance: Appearance | undefined): Appearance | undefined { +export function extractCssLayerNameFromAppearance(appearance: Appearance | undefined): Appearance | undefined { if (!appearance || typeof appearance !== 'object') { return appearance; } diff --git a/packages/clerk-js/src/ui/utils/factorSorting.ts b/packages/ui/src/utils/factorSorting.ts similarity index 100% rename from packages/clerk-js/src/ui/utils/factorSorting.ts rename to packages/ui/src/utils/factorSorting.ts diff --git a/packages/clerk-js/src/ui/utils/formatDate.ts b/packages/ui/src/utils/formatDate.ts similarity index 100% rename from packages/clerk-js/src/ui/utils/formatDate.ts rename to packages/ui/src/utils/formatDate.ts diff --git a/packages/clerk-js/src/ui/utils/formatSafeIdentifier.ts b/packages/ui/src/utils/formatSafeIdentifier.ts similarity index 100% rename from packages/clerk-js/src/ui/utils/formatSafeIdentifier.ts rename to packages/ui/src/utils/formatSafeIdentifier.ts diff --git a/packages/clerk-js/src/ui/utils/fromEntries.ts b/packages/ui/src/utils/fromEntries.ts similarity index 100% rename from packages/clerk-js/src/ui/utils/fromEntries.ts rename to packages/ui/src/utils/fromEntries.ts diff --git a/packages/clerk-js/src/ui/utils/getClosestProfileScrollBox.ts b/packages/ui/src/utils/getClosestProfileScrollBox.ts similarity index 100% rename from packages/clerk-js/src/ui/utils/getClosestProfileScrollBox.ts rename to packages/ui/src/utils/getClosestProfileScrollBox.ts diff --git a/packages/clerk-js/src/ui/utils/getRelativeToNowDateKey.ts b/packages/ui/src/utils/getRelativeToNowDateKey.ts similarity index 100% rename from packages/clerk-js/src/ui/utils/getRelativeToNowDateKey.ts rename to packages/ui/src/utils/getRelativeToNowDateKey.ts diff --git a/packages/clerk-js/src/ui/utils/getValidReactChildren.ts b/packages/ui/src/utils/getValidReactChildren.ts similarity index 100% rename from packages/clerk-js/src/ui/utils/getValidReactChildren.ts rename to packages/ui/src/utils/getValidReactChildren.ts diff --git a/packages/clerk-js/src/ui/utils/intl.ts b/packages/ui/src/utils/intl.ts similarity index 100% rename from packages/clerk-js/src/ui/utils/intl.ts rename to packages/ui/src/utils/intl.ts diff --git a/packages/clerk-js/src/ui/utils/isMobileDevice.ts b/packages/ui/src/utils/isMobileDevice.ts similarity index 100% rename from packages/clerk-js/src/ui/utils/isMobileDevice.ts rename to packages/ui/src/utils/isMobileDevice.ts diff --git a/packages/clerk-js/src/ui/utils/mergeRefs.ts b/packages/ui/src/utils/mergeRefs.ts similarity index 100% rename from packages/clerk-js/src/ui/utils/mergeRefs.ts rename to packages/ui/src/utils/mergeRefs.ts diff --git a/packages/clerk-js/src/utils/normalizeRoutingOptions.ts b/packages/ui/src/utils/normalizeRoutingOptions.ts similarity index 100% rename from packages/clerk-js/src/utils/normalizeRoutingOptions.ts rename to packages/ui/src/utils/normalizeRoutingOptions.ts diff --git a/packages/clerk-js/src/ui/utils/originPrefersPopup.ts b/packages/ui/src/utils/originPrefersPopup.ts similarity index 100% rename from packages/clerk-js/src/ui/utils/originPrefersPopup.ts rename to packages/ui/src/utils/originPrefersPopup.ts diff --git a/packages/clerk-js/src/ui/utils/passwordUtils.ts b/packages/ui/src/utils/passwordUtils.ts similarity index 100% rename from packages/clerk-js/src/ui/utils/passwordUtils.ts rename to packages/ui/src/utils/passwordUtils.ts diff --git a/packages/clerk-js/src/ui/utils/phoneUtils.ts b/packages/ui/src/utils/phoneUtils.ts similarity index 100% rename from packages/clerk-js/src/ui/utils/phoneUtils.ts rename to packages/ui/src/utils/phoneUtils.ts diff --git a/packages/clerk-js/src/ui/utils/range.ts b/packages/ui/src/utils/range.ts similarity index 100% rename from packages/clerk-js/src/ui/utils/range.ts rename to packages/ui/src/utils/range.ts diff --git a/packages/clerk-js/src/ui/utils/readObjectPath.ts b/packages/ui/src/utils/readObjectPath.ts similarity index 100% rename from packages/clerk-js/src/ui/utils/readObjectPath.ts rename to packages/ui/src/utils/readObjectPath.ts diff --git a/packages/clerk-js/src/ui/utils/removeUndefinedProps.ts b/packages/ui/src/utils/removeUndefinedProps.ts similarity index 100% rename from packages/clerk-js/src/ui/utils/removeUndefinedProps.ts rename to packages/ui/src/utils/removeUndefinedProps.ts diff --git a/packages/clerk-js/src/ui/utils/roleLocalizationKey.ts b/packages/ui/src/utils/roleLocalizationKey.ts similarity index 100% rename from packages/clerk-js/src/ui/utils/roleLocalizationKey.ts rename to packages/ui/src/utils/roleLocalizationKey.ts diff --git a/packages/clerk-js/src/ui/utils/runtimeEnvironment.ts b/packages/ui/src/utils/runtimeEnvironment.ts similarity index 100% rename from packages/clerk-js/src/ui/utils/runtimeEnvironment.ts rename to packages/ui/src/utils/runtimeEnvironment.ts diff --git a/packages/clerk-js/src/ui/utils/sanitizeCustomLinkURL.ts b/packages/ui/src/utils/sanitizeCustomLinkURL.ts similarity index 79% rename from packages/clerk-js/src/ui/utils/sanitizeCustomLinkURL.ts rename to packages/ui/src/utils/sanitizeCustomLinkURL.ts index 0e796bda554..ed582657a6b 100644 --- a/packages/clerk-js/src/ui/utils/sanitizeCustomLinkURL.ts +++ b/packages/ui/src/utils/sanitizeCustomLinkURL.ts @@ -7,5 +7,5 @@ export const sanitizeCustomLinkURL = (url: string): string => { if (isValidUrl(url)) { return url; } - return (url as string).charAt(0) === '/' ? url : `/${url}`; + return url.charAt(0) === '/' ? url : `/${url}`; }; diff --git a/packages/clerk-js/src/ui/utils/sleep.ts b/packages/ui/src/utils/sleep.ts similarity index 100% rename from packages/clerk-js/src/ui/utils/sleep.ts rename to packages/ui/src/utils/sleep.ts diff --git a/packages/clerk-js/src/ui/utils/timeAgo.ts b/packages/ui/src/utils/timeAgo.ts similarity index 100% rename from packages/clerk-js/src/ui/utils/timeAgo.ts rename to packages/ui/src/utils/timeAgo.ts diff --git a/packages/clerk-js/src/ui/utils/truncateTextWithEndVisible.ts b/packages/ui/src/utils/truncateTextWithEndVisible.ts similarity index 100% rename from packages/clerk-js/src/ui/utils/truncateTextWithEndVisible.ts rename to packages/ui/src/utils/truncateTextWithEndVisible.ts diff --git a/packages/clerk-js/src/ui/utils/useFormControl.ts b/packages/ui/src/utils/useFormControl.ts similarity index 100% rename from packages/clerk-js/src/ui/utils/useFormControl.ts rename to packages/ui/src/utils/useFormControl.ts diff --git a/packages/clerk-js/src/ui/utils/usernameUtils.ts b/packages/ui/src/utils/usernameUtils.ts similarity index 100% rename from packages/clerk-js/src/ui/utils/usernameUtils.ts rename to packages/ui/src/utils/usernameUtils.ts diff --git a/packages/clerk-js/src/ui/utils/web3CallbackErrorHandler.ts b/packages/ui/src/utils/web3CallbackErrorHandler.ts similarity index 100% rename from packages/clerk-js/src/ui/utils/web3CallbackErrorHandler.ts rename to packages/ui/src/utils/web3CallbackErrorHandler.ts diff --git a/packages/ui/tsconfig.json b/packages/ui/tsconfig.json new file mode 100644 index 00000000000..2930cbcc9e9 --- /dev/null +++ b/packages/ui/tsconfig.json @@ -0,0 +1,35 @@ +{ + "compilerOptions": { + "rootDir": "src", + "verbatimModuleSyntax": true, + "types": ["node"], + "target": "es2022", + "strict": true, + "skipLibCheck": true, + "resolveJsonModule": true, + "preserveWatchOutput": true, + "outDir": "dist", + "noUnusedLocals": true, + "moduleResolution": "bundler", + "moduleDetection": "force", + "module": "preserve", + "lib": ["ES2023", "DOM", "WebWorker"], + "jsx": "react", + "isolatedModules": true, + "forceConsistentCasingInFileNames": true, + "esModuleInterop": true, + "emitDeclarationOnly": true, + "declaration": true, + "declarationMap": true, + "allowJs": true, + "paths": { + "@/*": ["./src/*"], + // Adding this to avoid changes in the ui files + // in order to make git merges easier + // TODO: @nikos remove after v6 release + "@/ui*": ["./src/*"] + } + }, + "exclude": ["node_modules"], + "include": ["src", "global.d.ts"] +} diff --git a/packages/ui/tsdown.config.mts b/packages/ui/tsdown.config.mts new file mode 100644 index 00000000000..58ac5634685 --- /dev/null +++ b/packages/ui/tsdown.config.mts @@ -0,0 +1,24 @@ +import type { Options } from 'tsdown'; +import { defineConfig } from 'tsdown'; + +import pkgjson from './package.json' with { type: 'json' }; + +export default defineConfig(({ watch }) => { + return { + dts: true, + sourcemap: true, + clean: true, + target: 'es2022', + platform: 'neutral', + unbundle: false, + // external: ['react', 'react-dom'], + format: ['cjs', 'esm'], + minify: false, + define: { + PACKAGE_NAME: `"${pkgjson.name}"`, + PACKAGE_VERSION: `"${pkgjson.version}"`, + __DEV__: `${watch}`, + }, + entry: ['./src/index.ts', './src/internal.ts'], + } satisfies Options; +}); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 04d44b4d694..5221546b3b0 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -266,7 +266,7 @@ importers: version: 1.2.2 ts-jest: specifier: 29.2.5 - version: 29.2.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.28.5))(jest@29.7.0(@types/node@22.18.12)(babel-plugin-macros@3.1.0))(typescript@5.8.3) + version: 29.2.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.11)(jest@29.7.0(@types/node@22.18.12)(babel-plugin-macros@3.1.0))(typescript@5.8.3) tsdown: specifier: catalog:repo version: 0.15.7(publint@0.3.15)(typescript@5.8.3) @@ -427,24 +427,12 @@ importers: '@clerk/shared': specifier: workspace:^ version: link:../shared + '@clerk/ui': + specifier: workspace:^ + version: link:../ui '@coinbase/wallet-sdk': specifier: 4.3.0 version: 4.3.0 - '@emotion/cache': - specifier: 11.11.0 - version: 11.11.0 - '@emotion/react': - specifier: 11.11.1 - version: 11.11.1(@types/react@18.3.26)(react@18.3.1) - '@floating-ui/react': - specifier: 0.27.12 - version: 0.27.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@floating-ui/react-dom': - specifier: ^2.1.3 - version: 2.1.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@formkit/auto-animate': - specifier: ^0.8.2 - version: 0.8.4 '@stripe/stripe-js': specifier: 5.6.0 version: 5.6.0 @@ -463,9 +451,6 @@ importers: browser-tabs-lock: specifier: 1.3.0 version: 1.3.0 - copy-to-clipboard: - specifier: 3.3.3 - version: 3.3.3 core-js: specifier: 3.41.0 version: 3.41.0 @@ -475,12 +460,6 @@ importers: dequal: specifier: 2.0.3 version: 2.0.3 - input-otp: - specifier: 1.4.2 - version: 1.4.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - qrcode.react: - specifier: 4.2.0 - version: 4.2.0(react@18.3.1) react: specifier: 18.3.1 version: 18.3.1 @@ -499,10 +478,10 @@ importers: version: link:../testing '@rsdoctor/rspack-plugin': specifier: ^0.4.13 - version: 0.4.13(@rspack/core@1.5.8(@swc/helpers@0.5.17))(webpack@5.102.1) + version: 0.4.13(@rspack/core@1.5.8(@swc/helpers@0.5.17))(webpack@5.102.1(esbuild@0.25.11)) '@rspack/cli': specifier: ^1.4.11 - version: 1.5.8(@rspack/core@1.5.8(@swc/helpers@0.5.17))(@types/express@4.17.25)(webpack@5.102.1) + version: 1.5.8(@rspack/core@1.5.8(@swc/helpers@0.5.17))(@types/express@4.17.25)(webpack@5.102.1(esbuild@0.25.11)) '@rspack/core': specifier: ^1.4.11 version: 1.5.8(@swc/helpers@0.5.17) @@ -909,7 +888,7 @@ importers: version: 1.132.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@tanstack/react-start': specifier: 1.132.0 - version: 1.132.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(vite@7.1.12(@types/node@22.18.12)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(webpack@5.102.1) + version: 1.132.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(vite@7.1.12(@types/node@22.18.12)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(webpack@5.102.1(esbuild@0.25.11)) esbuild-plugin-file-path-extensions: specifier: ^2.1.4 version: 2.1.4 @@ -946,6 +925,61 @@ importers: specifier: catalog:repo version: 8.5.0(jiti@2.6.1)(postcss@8.5.6)(tsx@4.20.6)(typescript@5.8.3)(yaml@2.8.1) + packages/ui: + dependencies: + '@clerk/shared': + specifier: workspace:^ + version: link:../shared + '@emotion/cache': + specifier: 11.11.0 + version: 11.11.0 + '@emotion/react': + specifier: 11.11.1 + version: 11.11.1(@types/react@18.3.26)(react@18.3.1) + '@floating-ui/react': + specifier: 0.27.12 + version: 0.27.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@formkit/auto-animate': + specifier: ^0.8.2 + version: 0.8.4 + copy-to-clipboard: + specifier: 3.3.3 + version: 3.3.3 + csstype: + specifier: 3.1.3 + version: 3.1.3 + dequal: + specifier: 2.0.3 + version: 2.0.3 + input-otp: + specifier: 1.4.2 + version: 1.4.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + qrcode.react: + specifier: 4.2.0 + version: 4.2.0(react@18.3.1) + react: + specifier: 18.3.1 + version: 18.3.1 + react-dom: + specifier: 18.3.1 + version: 18.3.1(react@18.3.1) + swr: + specifier: 2.3.4 + version: 2.3.4(react@18.3.1) + devDependencies: + '@stripe/react-stripe-js': + specifier: 3.1.1 + version: 3.1.1(@stripe/stripe-js@5.6.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@stripe/stripe-js': + specifier: 5.6.0 + version: 5.6.0 + cross-fetch: + specifier: ^4.1.0 + version: 4.1.0 + rolldown: + specifier: catalog:repo + version: 1.0.0-beta.43 + packages/upgrade: dependencies: '@inkjs/ui': @@ -19030,12 +19064,12 @@ snapshots: '@rsdoctor/client@0.4.13': {} - '@rsdoctor/core@0.4.13(@rspack/core@1.5.8(@swc/helpers@0.5.17))(webpack@5.102.1)': + '@rsdoctor/core@0.4.13(@rspack/core@1.5.8(@swc/helpers@0.5.17))(webpack@5.102.1(esbuild@0.25.11))': dependencies: - '@rsdoctor/graph': 0.4.13(@rspack/core@1.5.8(@swc/helpers@0.5.17))(webpack@5.102.1) - '@rsdoctor/sdk': 0.4.13(@rspack/core@1.5.8(@swc/helpers@0.5.17))(webpack@5.102.1) - '@rsdoctor/types': 0.4.13(@rspack/core@1.5.8(@swc/helpers@0.5.17))(webpack@5.102.1) - '@rsdoctor/utils': 0.4.13(@rspack/core@1.5.8(@swc/helpers@0.5.17))(webpack@5.102.1) + '@rsdoctor/graph': 0.4.13(@rspack/core@1.5.8(@swc/helpers@0.5.17))(webpack@5.102.1(esbuild@0.25.11)) + '@rsdoctor/sdk': 0.4.13(@rspack/core@1.5.8(@swc/helpers@0.5.17))(webpack@5.102.1(esbuild@0.25.11)) + '@rsdoctor/types': 0.4.13(@rspack/core@1.5.8(@swc/helpers@0.5.17))(webpack@5.102.1(esbuild@0.25.11)) + '@rsdoctor/utils': 0.4.13(@rspack/core@1.5.8(@swc/helpers@0.5.17))(webpack@5.102.1(esbuild@0.25.11)) axios: 1.13.0 enhanced-resolve: 5.12.0 filesize: 10.1.6 @@ -19053,10 +19087,10 @@ snapshots: - utf-8-validate - webpack - '@rsdoctor/graph@0.4.13(@rspack/core@1.5.8(@swc/helpers@0.5.17))(webpack@5.102.1)': + '@rsdoctor/graph@0.4.13(@rspack/core@1.5.8(@swc/helpers@0.5.17))(webpack@5.102.1(esbuild@0.25.11))': dependencies: - '@rsdoctor/types': 0.4.13(@rspack/core@1.5.8(@swc/helpers@0.5.17))(webpack@5.102.1) - '@rsdoctor/utils': 0.4.13(@rspack/core@1.5.8(@swc/helpers@0.5.17))(webpack@5.102.1) + '@rsdoctor/types': 0.4.13(@rspack/core@1.5.8(@swc/helpers@0.5.17))(webpack@5.102.1(esbuild@0.25.11)) + '@rsdoctor/utils': 0.4.13(@rspack/core@1.5.8(@swc/helpers@0.5.17))(webpack@5.102.1(esbuild@0.25.11)) lodash.unionby: 4.8.0 socket.io: 4.8.1 source-map: 0.7.6 @@ -19067,13 +19101,13 @@ snapshots: - utf-8-validate - webpack - '@rsdoctor/rspack-plugin@0.4.13(@rspack/core@1.5.8(@swc/helpers@0.5.17))(webpack@5.102.1)': + '@rsdoctor/rspack-plugin@0.4.13(@rspack/core@1.5.8(@swc/helpers@0.5.17))(webpack@5.102.1(esbuild@0.25.11))': dependencies: - '@rsdoctor/core': 0.4.13(@rspack/core@1.5.8(@swc/helpers@0.5.17))(webpack@5.102.1) - '@rsdoctor/graph': 0.4.13(@rspack/core@1.5.8(@swc/helpers@0.5.17))(webpack@5.102.1) - '@rsdoctor/sdk': 0.4.13(@rspack/core@1.5.8(@swc/helpers@0.5.17))(webpack@5.102.1) - '@rsdoctor/types': 0.4.13(@rspack/core@1.5.8(@swc/helpers@0.5.17))(webpack@5.102.1) - '@rsdoctor/utils': 0.4.13(@rspack/core@1.5.8(@swc/helpers@0.5.17))(webpack@5.102.1) + '@rsdoctor/core': 0.4.13(@rspack/core@1.5.8(@swc/helpers@0.5.17))(webpack@5.102.1(esbuild@0.25.11)) + '@rsdoctor/graph': 0.4.13(@rspack/core@1.5.8(@swc/helpers@0.5.17))(webpack@5.102.1(esbuild@0.25.11)) + '@rsdoctor/sdk': 0.4.13(@rspack/core@1.5.8(@swc/helpers@0.5.17))(webpack@5.102.1(esbuild@0.25.11)) + '@rsdoctor/types': 0.4.13(@rspack/core@1.5.8(@swc/helpers@0.5.17))(webpack@5.102.1(esbuild@0.25.11)) + '@rsdoctor/utils': 0.4.13(@rspack/core@1.5.8(@swc/helpers@0.5.17))(webpack@5.102.1(esbuild@0.25.11)) '@rspack/core': 1.5.8(@swc/helpers@0.5.17) lodash: 4.17.21 transitivePeerDependencies: @@ -19083,12 +19117,12 @@ snapshots: - utf-8-validate - webpack - '@rsdoctor/sdk@0.4.13(@rspack/core@1.5.8(@swc/helpers@0.5.17))(webpack@5.102.1)': + '@rsdoctor/sdk@0.4.13(@rspack/core@1.5.8(@swc/helpers@0.5.17))(webpack@5.102.1(esbuild@0.25.11))': dependencies: '@rsdoctor/client': 0.4.13 - '@rsdoctor/graph': 0.4.13(@rspack/core@1.5.8(@swc/helpers@0.5.17))(webpack@5.102.1) - '@rsdoctor/types': 0.4.13(@rspack/core@1.5.8(@swc/helpers@0.5.17))(webpack@5.102.1) - '@rsdoctor/utils': 0.4.13(@rspack/core@1.5.8(@swc/helpers@0.5.17))(webpack@5.102.1) + '@rsdoctor/graph': 0.4.13(@rspack/core@1.5.8(@swc/helpers@0.5.17))(webpack@5.102.1(esbuild@0.25.11)) + '@rsdoctor/types': 0.4.13(@rspack/core@1.5.8(@swc/helpers@0.5.17))(webpack@5.102.1(esbuild@0.25.11)) + '@rsdoctor/utils': 0.4.13(@rspack/core@1.5.8(@swc/helpers@0.5.17))(webpack@5.102.1(esbuild@0.25.11)) '@types/fs-extra': 11.0.4 body-parser: 1.20.3 cors: 2.8.5 @@ -19108,20 +19142,20 @@ snapshots: - utf-8-validate - webpack - '@rsdoctor/types@0.4.13(@rspack/core@1.5.8(@swc/helpers@0.5.17))(webpack@5.102.1)': + '@rsdoctor/types@0.4.13(@rspack/core@1.5.8(@swc/helpers@0.5.17))(webpack@5.102.1(esbuild@0.25.11))': dependencies: '@types/connect': 3.4.38 '@types/estree': 1.0.5 '@types/tapable': 2.2.7 source-map: 0.7.6 - webpack: 5.102.1 + webpack: 5.102.1(esbuild@0.25.11) optionalDependencies: '@rspack/core': 1.5.8(@swc/helpers@0.5.17) - '@rsdoctor/utils@0.4.13(@rspack/core@1.5.8(@swc/helpers@0.5.17))(webpack@5.102.1)': + '@rsdoctor/utils@0.4.13(@rspack/core@1.5.8(@swc/helpers@0.5.17))(webpack@5.102.1(esbuild@0.25.11))': dependencies: '@babel/code-frame': 7.25.7 - '@rsdoctor/types': 0.4.13(@rspack/core@1.5.8(@swc/helpers@0.5.17))(webpack@5.102.1) + '@rsdoctor/types': 0.4.13(@rspack/core@1.5.8(@swc/helpers@0.5.17))(webpack@5.102.1(esbuild@0.25.11)) '@types/estree': 1.0.5 acorn: 8.15.0 acorn-import-assertions: 1.9.0(acorn@8.15.0) @@ -19187,11 +19221,11 @@ snapshots: '@rspack/binding-win32-ia32-msvc': 1.5.8 '@rspack/binding-win32-x64-msvc': 1.5.8 - '@rspack/cli@1.5.8(@rspack/core@1.5.8(@swc/helpers@0.5.17))(@types/express@4.17.25)(webpack@5.102.1)': + '@rspack/cli@1.5.8(@rspack/core@1.5.8(@swc/helpers@0.5.17))(@types/express@4.17.25)(webpack@5.102.1(esbuild@0.25.11))': dependencies: '@discoveryjs/json-ext': 0.5.7 '@rspack/core': 1.5.8(@swc/helpers@0.5.17) - '@rspack/dev-server': 1.1.4(@rspack/core@1.5.8(@swc/helpers@0.5.17))(@types/express@4.17.25)(webpack@5.102.1) + '@rspack/dev-server': 1.1.4(@rspack/core@1.5.8(@swc/helpers@0.5.17))(@types/express@4.17.25)(webpack@5.102.1(esbuild@0.25.11)) colorette: 2.0.20 exit-hook: 4.0.0 pirates: 4.0.7 @@ -19214,13 +19248,13 @@ snapshots: optionalDependencies: '@swc/helpers': 0.5.17 - '@rspack/dev-server@1.1.4(@rspack/core@1.5.8(@swc/helpers@0.5.17))(@types/express@4.17.25)(webpack@5.102.1)': + '@rspack/dev-server@1.1.4(@rspack/core@1.5.8(@swc/helpers@0.5.17))(@types/express@4.17.25)(webpack@5.102.1(esbuild@0.25.11))': dependencies: '@rspack/core': 1.5.8(@swc/helpers@0.5.17) chokidar: 3.6.0 http-proxy-middleware: 2.0.9(@types/express@4.17.25) p-retry: 6.2.1 - webpack-dev-server: 5.2.2(webpack@5.102.1) + webpack-dev-server: 5.2.2(webpack@5.102.1(esbuild@0.25.11)) ws: 8.18.3 transitivePeerDependencies: - '@types/express' @@ -19490,14 +19524,14 @@ snapshots: transitivePeerDependencies: - crossws - '@tanstack/react-start@1.132.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(vite@7.1.12(@types/node@22.18.12)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(webpack@5.102.1)': + '@tanstack/react-start@1.132.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(vite@7.1.12(@types/node@22.18.12)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(webpack@5.102.1(esbuild@0.25.11))': dependencies: '@tanstack/react-router': 1.132.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@tanstack/react-start-client': 1.132.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@tanstack/react-start-server': 1.132.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@tanstack/router-utils': 1.133.19 '@tanstack/start-client-core': 1.132.0 - '@tanstack/start-plugin-core': 1.132.0(@tanstack/react-router@1.132.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.1.12(@types/node@22.18.12)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(webpack@5.102.1) + '@tanstack/start-plugin-core': 1.132.0(@tanstack/react-router@1.132.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.1.12(@types/node@22.18.12)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(webpack@5.102.1(esbuild@0.25.11)) pathe: 2.0.3 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -19539,7 +19573,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@tanstack/router-plugin@1.132.0(@tanstack/react-router@1.132.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.1.12(@types/node@22.18.12)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(webpack@5.102.1)': + '@tanstack/router-plugin@1.132.0(@tanstack/react-router@1.132.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.1.12(@types/node@22.18.12)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(webpack@5.102.1(esbuild@0.25.11))': dependencies: '@babel/core': 7.28.5 '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.5) @@ -19558,7 +19592,7 @@ snapshots: optionalDependencies: '@tanstack/react-router': 1.132.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) vite: 7.1.12(@types/node@22.18.12)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) - webpack: 5.102.1 + webpack: 5.102.1(esbuild@0.25.11) transitivePeerDependencies: - supports-color @@ -19613,14 +19647,14 @@ snapshots: tiny-invariant: 1.3.3 tiny-warning: 1.0.3 - '@tanstack/start-plugin-core@1.132.0(@tanstack/react-router@1.132.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.1.12(@types/node@22.18.12)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(webpack@5.102.1)': + '@tanstack/start-plugin-core@1.132.0(@tanstack/react-router@1.132.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.1.12(@types/node@22.18.12)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(webpack@5.102.1(esbuild@0.25.11))': dependencies: '@babel/code-frame': 7.26.2 '@babel/core': 7.28.5 '@babel/types': 7.28.5 '@tanstack/router-core': 1.132.0 '@tanstack/router-generator': 1.132.0 - '@tanstack/router-plugin': 1.132.0(@tanstack/react-router@1.132.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.1.12(@types/node@22.18.12)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(webpack@5.102.1) + '@tanstack/router-plugin': 1.132.0(@tanstack/react-router@1.132.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.1.12(@types/node@22.18.12)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(webpack@5.102.1(esbuild@0.25.11)) '@tanstack/router-utils': 1.132.0 '@tanstack/server-functions-plugin': 1.132.0(vite@7.1.12(@types/node@22.18.12)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) '@tanstack/start-server-core': 1.132.0 @@ -30321,14 +30355,16 @@ snapshots: ansi-escapes: 5.0.0 supports-hyperlinks: 2.3.0 - terser-webpack-plugin@5.3.14(webpack@5.102.1): + terser-webpack-plugin@5.3.14(esbuild@0.25.11)(webpack@5.102.1(esbuild@0.25.11)): dependencies: '@jridgewell/trace-mapping': 0.3.31 jest-worker: 27.5.1 schema-utils: 4.3.3 serialize-javascript: 6.0.2 terser: 5.44.0 - webpack: 5.102.1 + webpack: 5.102.1(esbuild@0.25.11) + optionalDependencies: + esbuild: 0.25.11 terser@5.44.0: dependencies: @@ -30493,7 +30529,7 @@ snapshots: ts-interface-checker@0.1.13: {} - ts-jest@29.2.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.28.5))(jest@29.7.0(@types/node@22.18.12)(babel-plugin-macros@3.1.0))(typescript@5.8.3): + ts-jest@29.2.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.11)(jest@29.7.0(@types/node@22.18.12)(babel-plugin-macros@3.1.0))(typescript@5.8.3): dependencies: bs-logger: 0.2.6 ejs: 3.1.10 @@ -30511,6 +30547,7 @@ snapshots: '@jest/transform': 29.7.0 '@jest/types': 29.6.3 babel-jest: 29.7.0(@babel/core@7.28.5) + esbuild: 0.25.11 tsconfck@3.1.6(typescript@5.8.3): optionalDependencies: @@ -31519,7 +31556,7 @@ snapshots: - bufferutil - utf-8-validate - webpack-dev-middleware@7.4.5(webpack@5.102.1): + webpack-dev-middleware@7.4.5(webpack@5.102.1(esbuild@0.25.11)): dependencies: colorette: 2.0.20 memfs: 4.49.0 @@ -31528,9 +31565,9 @@ snapshots: range-parser: 1.2.1 schema-utils: 4.3.3 optionalDependencies: - webpack: 5.102.1 + webpack: 5.102.1(esbuild@0.25.11) - webpack-dev-server@5.2.2(webpack@5.102.1): + webpack-dev-server@5.2.2(webpack@5.102.1(esbuild@0.25.11)): dependencies: '@types/bonjour': 3.5.13 '@types/connect-history-api-fallback': 1.5.4 @@ -31558,10 +31595,10 @@ snapshots: serve-index: 1.9.1 sockjs: 0.3.24 spdy: 4.0.2 - webpack-dev-middleware: 7.4.5(webpack@5.102.1) + webpack-dev-middleware: 7.4.5(webpack@5.102.1(esbuild@0.25.11)) ws: 8.18.3 optionalDependencies: - webpack: 5.102.1 + webpack: 5.102.1(esbuild@0.25.11) transitivePeerDependencies: - bufferutil - debug @@ -31578,7 +31615,7 @@ snapshots: webpack-virtual-modules@0.6.2: {} - webpack@5.102.1: + webpack@5.102.1(esbuild@0.25.11): dependencies: '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.8 @@ -31602,7 +31639,7 @@ snapshots: neo-async: 2.6.2 schema-utils: 4.3.3 tapable: 2.3.0 - terser-webpack-plugin: 5.3.14(webpack@5.102.1) + terser-webpack-plugin: 5.3.14(esbuild@0.25.11)(webpack@5.102.1(esbuild@0.25.11)) watchpack: 2.4.4 webpack-sources: 3.3.3 transitivePeerDependencies: diff --git a/scripts/common.mjs b/scripts/common.mjs index 2b89ee55462..f0ef15c903e 100644 --- a/scripts/common.mjs +++ b/scripts/common.mjs @@ -1,4 +1,26 @@ +import { readFile } from 'fs/promises'; +import { $ } from 'zx'; + export const constants = { ChangesetConfigFile: '.changeset/config.json', ElementsPackageJson: 'packages/elements/package.json', }; + +export async function getPackageNames() { + const packageJsonFiles = await $`find packages -mindepth 2 -maxdepth 2 -name package.json`.quiet(); + const packageNames = []; + + for (const file of packageJsonFiles.stdout.trim().split('\n').filter(Boolean)) { + try { + const packageJsonContent = await readFile(file, 'utf-8'); + const packageJson = JSON.parse(packageJsonContent); + if (packageJson.name) { + packageNames.push(packageJson.name); + } + } catch { + // package.json doesn't exist or is invalid, skip + } + } + + return packageNames.sort(); +} diff --git a/scripts/snapshot.mjs b/scripts/snapshot.mjs index 08c5a4db87e..fc61227a69d 100755 --- a/scripts/snapshot.mjs +++ b/scripts/snapshot.mjs @@ -2,23 +2,13 @@ import { $, argv, echo } from 'zx'; -import { constants } from './common.mjs'; +import { constants, getPackageNames } from './common.mjs'; + +const packageNames = await getPackageNames(); +const packageEntries = packageNames.map(name => `'${name}': patch`).join('\n'); const snapshot = `--- -'@clerk/chrome-extension': patch -'@clerk/localizations': patch -'@clerk/clerk-js': patch -'@clerk/backend': patch -'@clerk/fastify': patch -'@clerk/agent-toolkit': patch -'@clerk/nextjs': patch -'@clerk/shared': patch -'@clerk/themes': patch -'@clerk/react': patch -'@clerk/expo': patch -'@clerk/express': patch -'@clerk/testing': patch -'@clerk/elements': patch +${packageEntries} --- Snapshot release From f1e618e503f228a296775de2b39a5f67a3ca508d Mon Sep 17 00:00:00 2001 From: Nikos Douvlis Date: Sun, 2 Nov 2025 14:49:28 +0200 Subject: [PATCH 02/31] disable JSDoc description requirement and add internal JSDoc rules for TypeScript files --- eslint.config.mjs | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/eslint.config.mjs b/eslint.config.mjs index a311e9e2ca6..b02f0199207 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -442,7 +442,7 @@ export default tseslint.config([ { definedTags: ['inline', 'unionReturnHeadings', 'displayFunctionSignature', 'paramExtension'], typed: false }, ], 'jsdoc/require-hyphen-before-param-description': 'warn', - 'jsdoc/require-description': 'warn', + 'jsdoc/require-description': 'off', 'jsdoc/require-description-complete-sentence': 'warn', 'jsdoc/require-param': ['warn', { ignoreWhenAllParamsMissing: true }], 'jsdoc/require-param-description': 'warn', @@ -455,6 +455,16 @@ export default tseslint.config([ ], }, }, + { + name: 'repo/jsdoc-internal', + files: ['packages/shared/src/**/internal/**/*.{ts,tsx}'], + plugins: { + jsdoc: pluginJsDoc, + }, + rules: { + 'jsdoc/require-jsdoc': 'off', + }, + }, ...pluginYml.configs['flat/recommended'], { name: 'eslint-prettier', From 8706f56db567cddad2b1b9463e5f9f86cb6d5a04 Mon Sep 17 00:00:00 2001 From: Nikos Douvlis Date: Sun, 2 Nov 2025 14:49:57 +0200 Subject: [PATCH 03/31] Remove dependency on @clerk/localizations from clerk-js --- packages/clerk-js/package.json | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/clerk-js/package.json b/packages/clerk-js/package.json index 2a136e1f231..db11444e2f4 100644 --- a/packages/clerk-js/package.json +++ b/packages/clerk-js/package.json @@ -61,7 +61,6 @@ "browserslist": "last 2 years", "dependencies": { "@base-org/account": "2.0.1", - "@clerk/localizations": "workspace:^", "@clerk/shared": "workspace:^", "@clerk/ui": "workspace:^", "@coinbase/wallet-sdk": "4.3.0", From 96f059e677ffbed2d8a32ae254eda389f8db01c7 Mon Sep 17 00:00:00 2001 From: Nikos Douvlis Date: Sun, 2 Nov 2025 15:07:12 +0200 Subject: [PATCH 04/31] move common utils from clerk-js to shared/internal --- packages/clerk-js/src/core/clerk.ts | 6 +- packages/clerk-js/src/core/constants.ts | 2 +- packages/clerk-js/src/core/fapiClient.ts | 8 +- .../clerk-js/src/core/resources/SignIn.ts | 5 +- .../clerk-js/src/core/resources/SignUp.ts | 5 +- packages/clerk-js/src/core/resources/User.ts | 2 +- .../clerk-js/src/utils/completeSignUpFlow.ts | 3 +- packages/clerk-js/src/utils/index.ts | 15 ++- packages/clerk-js/src/utils/instance.ts | 2 +- packages/clerk-js/src/utils/jwt.ts | 3 +- packages/clerk-js/src/utils/redirectUrls.ts | 2 +- .../clerk-js}/__tests__/encoders.test.ts | 0 .../internal/clerk-js}/__tests__/path.test.ts | 0 .../clerk-js/__tests__/queryParams.test.ts} | 4 +- .../__tests__/queryStateParams.test.ts | 0 .../clerk-js}/__tests__/querystring.test.ts | 0 .../internal/clerk-js}/__tests__/url.test.ts | 0 .../internal/clerk-js/dynamicParamParser.ts | 14 --- .../src/internal/clerk-js}/encoders.ts | 0 .../shared/src/internal/clerk-js/index.ts | 0 .../clerk-js}/passwords/complexity.ts | 0 .../internal/clerk-js}/passwords/password.ts | 16 ++- .../internal/clerk-js}/passwords/strength.ts | 2 +- .../src/internal/clerk-js}/path.ts | 0 .../src/internal/clerk-js/queryParams.ts} | 9 +- .../internal/clerk-js}/queryStateParams.ts | 5 +- .../src/internal/clerk-js}/querystring.ts | 0 .../src/internal/clerk-js}/sessionTasks.ts | 3 +- .../src/internal/clerk-js}/url.ts | 18 ++-- .../src/internal/clerk-js}/user.ts | 4 +- packages/shared/src/utils/index.ts | 1 + .../src/utils/runIfFunctionOrReturn.ts} | 3 + packages/shared/tsdown.config.mts | 1 + packages/ui/package.json | 4 + packages/ui/src/Components.tsx | 2 +- .../ui/src/common/EmailLinkStatusCard.tsx | 2 +- .../ui/src/common/NotificationCountBadge.tsx | 3 +- packages/ui/src/common/redirects.ts | 3 +- packages/ui/src/common/withRedirect.tsx | 5 +- .../components/GoogleOneTap/one-tap-start.tsx | 2 +- .../src/components/ImpersonationFab/index.tsx | 2 +- .../use-revalidate-environment.ts | 2 +- .../OrganizationList/UserMembershipList.tsx | 2 +- .../OrganizationProfile/BillingWidget.tsx | 3 +- .../InviteMembersScreen.tsx | 4 +- .../OrganizationProfile/MembersSearch.tsx | 8 +- .../OrganizationProfile/MembershipWidget.tsx | 2 +- .../OrganizationSwitcherPopover.tsx | 2 +- .../ui/src/components/SessionTasks/index.tsx | 2 +- .../SessionTasks/tasks/withTaskGuard.ts | 2 +- .../src/components/SignIn/ResetPassword.tsx | 2 +- ...nInFactorOneAlternativeChannelCodeForm.tsx | 2 +- .../SignIn/SignInFactorOneCodeForm.tsx | 2 +- .../SignIn/SignInFactorOnePasswordCard.tsx | 2 +- .../SignIn/SignInFactorTwoBackupCodeCard.tsx | 2 +- .../SignIn/SignInFactorTwoCodeForm.tsx | 2 +- .../ui/src/components/SignIn/SignInStart.tsx | 6 +- .../SignIn/handleCombinedFlowTransfer.ts | 2 +- packages/ui/src/components/SignIn/shared.ts | 2 +- .../SignUp/SignUpRestrictedAccess.tsx | 2 +- .../ui/src/components/SignUp/SignUpStart.tsx | 6 +- .../SignUp/SignUpVerificationCodeForm.tsx | 2 +- packages/ui/src/components/SignUp/util.ts | 2 +- .../components/Statements/StatementsList.tsx | 2 +- .../components/UserButton/SessionActions.tsx | 4 +- .../UserButtonTopLevelIdentifier.tsx | 2 +- .../UserButton/useMultisessionActions.tsx | 4 +- .../UserProfile/ConnectedAccountsMenu.tsx | 2 +- .../UserProfile/ConnectedAccountsSection.tsx | 2 +- .../UserProfile/MfaBackupCodeList.tsx | 2 +- .../components/UserProfile/PasswordForm.tsx | 3 +- .../VerifyWithEnterpriseConnection.tsx | 4 +- .../use-after-verification.ts | 2 +- .../ui/src/contexts/components/Checkout.ts | 2 +- .../src/contexts/components/GoogleOneTap.ts | 2 +- packages/ui/src/contexts/components/SignIn.ts | 6 +- packages/ui/src/contexts/components/SignUp.ts | 6 +- .../ui/src/contexts/components/Waitlist.ts | 2 +- packages/ui/src/contexts/utils.ts | 7 +- .../ui/src/customizables/makeResponsive.tsx | 3 +- packages/ui/src/elements/Animated.tsx | 2 +- .../ui/src/elements/LegalConsentCheckbox.tsx | 3 +- packages/ui/src/elements/PasswordInput.tsx | 2 +- packages/ui/src/elements/UserAvatar.tsx | 2 +- packages/ui/src/elements/UserPreview.tsx | 2 +- .../ui/src/hooks/useClerkModalStateParams.tsx | 6 +- packages/ui/src/hooks/usePassword.ts | 9 +- .../ui/src/hooks/usePasswordComplexity.ts | 9 +- .../ui/src/localization/makeLocalizable.tsx | 2 +- packages/ui/src/portal/index.tsx | 3 +- packages/ui/src/primitives/Link.tsx | 2 +- .../ui/src/primitives/NotificationBadge.tsx | 2 +- packages/ui/src/router/BaseRouter.tsx | 3 +- packages/ui/src/router/HashRouter.tsx | 2 +- packages/ui/src/router/PathRouter.tsx | 2 +- packages/ui/src/router/Route.tsx | 2 +- .../src/router/__tests__/HashRouter.test.tsx | 2 +- .../src/router/__tests__/PathRouter.test.tsx | 2 +- .../__tests__/dynamicParamParser.test.ts | 0 packages/ui/src/utils/captcha/constants.ts | 1 + .../src/utils/dynamicParamParser.ts | 0 .../ui/src/utils/normalizeRoutingOptions.ts | 3 +- .../ui/src/utils/sanitizeCustomLinkURL.ts | 2 +- packages/ui/src/utils/zxcvbn.ts | 25 +++++ packages/ui/tsconfig.json | 4 +- pnpm-lock.yaml | 101 +++++++++--------- 106 files changed, 255 insertions(+), 210 deletions(-) rename packages/{clerk-js/src/utils => shared/src/internal/clerk-js}/__tests__/encoders.test.ts (100%) rename packages/{clerk-js/src/utils => shared/src/internal/clerk-js}/__tests__/path.test.ts (100%) rename packages/{clerk-js/src/utils/__tests__/getClerkQueryParam.test.ts => shared/src/internal/clerk-js/__tests__/queryParams.test.ts} (98%) rename packages/{clerk-js/src/utils => shared/src/internal/clerk-js}/__tests__/queryStateParams.test.ts (100%) rename packages/{clerk-js/src/utils => shared/src/internal/clerk-js}/__tests__/querystring.test.ts (100%) rename packages/{clerk-js/src/utils => shared/src/internal/clerk-js}/__tests__/url.test.ts (100%) delete mode 100644 packages/shared/src/internal/clerk-js/dynamicParamParser.ts rename packages/{clerk-js/src/utils => shared/src/internal/clerk-js}/encoders.ts (100%) delete mode 100644 packages/shared/src/internal/clerk-js/index.ts rename packages/{clerk-js/src/utils => shared/src/internal/clerk-js}/passwords/complexity.ts (100%) rename packages/{clerk-js/src/utils => shared/src/internal/clerk-js}/passwords/password.ts (84%) rename packages/{clerk-js/src/utils => shared/src/internal/clerk-js}/passwords/strength.ts (93%) rename packages/{clerk-js/src/utils => shared/src/internal/clerk-js}/path.ts (100%) rename packages/{clerk-js/src/utils/getClerkQueryParam.ts => shared/src/internal/clerk-js/queryParams.ts} (96%) rename packages/{clerk-js/src/utils => shared/src/internal/clerk-js}/queryStateParams.ts (81%) rename packages/{clerk-js/src/utils => shared/src/internal/clerk-js}/querystring.ts (100%) rename packages/{clerk-js/src/core => shared/src/internal/clerk-js}/sessionTasks.ts (95%) rename packages/{clerk-js/src/utils => shared/src/internal/clerk-js}/url.ts (97%) rename packages/{clerk-js/src/utils => shared/src/internal/clerk-js}/user.ts (100%) rename packages/{clerk-js/src/utils/props.ts => shared/src/utils/runIfFunctionOrReturn.ts} (91%) rename packages/{clerk-js => ui}/src/utils/__tests__/dynamicParamParser.test.ts (100%) create mode 100644 packages/ui/src/utils/captcha/constants.ts rename packages/{clerk-js => ui}/src/utils/dynamicParamParser.ts (100%) create mode 100644 packages/ui/src/utils/zxcvbn.ts diff --git a/packages/clerk-js/src/core/clerk.ts b/packages/clerk-js/src/core/clerk.ts index fb2c8b9a431..0ca180df037 100644 --- a/packages/clerk-js/src/core/clerk.ts +++ b/packages/clerk-js/src/core/clerk.ts @@ -159,7 +159,11 @@ import { APIKeys } from './modules/apiKeys'; import { Billing } from './modules/billing'; import { createCheckoutInstance } from './modules/checkout/instance'; import { BaseResource, Client, Environment, Organization, Waitlist } from './resources/internal'; -import { getTaskEndpoint, navigateIfTaskExists, warnMissingPendingTaskHandlers } from './sessionTasks'; +import { + getTaskEndpoint, + navigateIfTaskExists, + warnMissingPendingTaskHandlers, +} from '@clerk/shared/internal/clerk-js/sessionTasks'; import { State } from './state'; type SetActiveHook = (intent?: 'sign-out') => void | Promise; diff --git a/packages/clerk-js/src/core/constants.ts b/packages/clerk-js/src/core/constants.ts index 685357c9521..43ee8e244f7 100644 --- a/packages/clerk-js/src/core/constants.ts +++ b/packages/clerk-js/src/core/constants.ts @@ -3,4 +3,4 @@ * The constants have been moved to @clerk/shared/internal/clerk-js/constants * to make them available across all Clerk packages. */ -export * from '@clerk/shared/internal/clerk-js'; +export * from '@clerk/shared/internal/clerk-js/constants'; diff --git a/packages/clerk-js/src/core/fapiClient.ts b/packages/clerk-js/src/core/fapiClient.ts index 7d03e620c27..486573406e2 100644 --- a/packages/clerk-js/src/core/fapiClient.ts +++ b/packages/clerk-js/src/core/fapiClient.ts @@ -1,16 +1,12 @@ import { isBrowserOnline } from '@clerk/shared/browser'; +import { stringifyQueryParams } from '@clerk/shared/internal/clerk-js/querystring'; import { retry } from '@clerk/shared/retry'; import type { ClerkAPIErrorJSON, ClientJSON, InstanceType } from '@clerk/shared/types'; import { camelToSnake } from '@clerk/shared/underscore'; import { debugLogger } from '@/utils/debug'; -import { - buildEmailAddress as buildEmailAddressUtil, - buildURL as buildUrlUtil, - filterUndefinedValues, - stringifyQueryParams, -} from '../utils'; +import { buildEmailAddress as buildEmailAddressUtil, buildURL as buildUrlUtil, filterUndefinedValues } from '../utils'; import { SUPPORTED_FAPI_VERSION } from './constants'; import { clerkNetworkError } from './errors'; diff --git a/packages/clerk-js/src/core/resources/SignIn.ts b/packages/clerk-js/src/core/resources/SignIn.ts index 5f9e53b58c2..bcc69c05355 100644 --- a/packages/clerk-js/src/core/resources/SignIn.ts +++ b/packages/clerk-js/src/core/resources/SignIn.ts @@ -1,5 +1,6 @@ import { inBrowser } from '@clerk/shared/browser'; import { ClerkWebAuthnError } from '@clerk/shared/error'; +import { createValidatePassword } from '@clerk/shared/internal/clerk-js/passwords/password'; import { Poller } from '@clerk/shared/poller'; import type { AttemptFirstFactorParams, @@ -82,8 +83,8 @@ import { serializePublicKeyCredentialAssertion, webAuthnGetCredential as webAuthnGetCredentialOnWindow, } from '../../utils/passkeys'; -import { createValidatePassword } from '../../utils/passwords/password'; import { runAsyncResourceTask } from '../../utils/runAsyncResourceTask'; +import { loadZxcvbn } from '../../utils/zxcvbn'; import { clerkInvalidFAPIResponse, clerkInvalidStrategy, @@ -513,7 +514,7 @@ export class SignIn extends BaseResource implements SignInResource { validatePassword: ReturnType = (password, cb) => { if (SignIn.clerk.__unstable__environment?.userSettings.passwordSettings) { - return createValidatePassword({ + return createValidatePassword(loadZxcvbn, { ...SignIn.clerk.__unstable__environment?.userSettings.passwordSettings, validatePassword: true, })(password, cb); diff --git a/packages/clerk-js/src/core/resources/SignUp.ts b/packages/clerk-js/src/core/resources/SignUp.ts index 9b01c5d406b..a5413a9859b 100644 --- a/packages/clerk-js/src/core/resources/SignUp.ts +++ b/packages/clerk-js/src/core/resources/SignUp.ts @@ -1,4 +1,5 @@ import { ClerkRuntimeError, isCaptchaError, isClerkAPIResponseError } from '@clerk/shared/error'; +import { createValidatePassword } from '@clerk/shared/internal/clerk-js/passwords/password'; import { Poller } from '@clerk/shared/poller'; import type { AttemptEmailAddressVerificationParams, @@ -57,9 +58,9 @@ import { } from '../../utils'; import { _authenticateWithPopup } from '../../utils/authenticateWithPopup'; import { CaptchaChallenge } from '../../utils/captcha/CaptchaChallenge'; -import { createValidatePassword } from '../../utils/passwords/password'; import { normalizeUnsafeMetadata } from '../../utils/resourceParams'; import { runAsyncResourceTask } from '../../utils/runAsyncResourceTask'; +import { loadZxcvbn } from '../../utils/zxcvbn'; import { clerkInvalidFAPIResponse, clerkMissingOptionError, @@ -463,7 +464,7 @@ export class SignUp extends BaseResource implements SignUpResource { validatePassword: ReturnType = (password, cb) => { if (SignUp.clerk.__unstable__environment?.userSettings.passwordSettings) { - return createValidatePassword({ + return createValidatePassword(loadZxcvbn, { ...SignUp.clerk.__unstable__environment?.userSettings.passwordSettings, validatePassword: true, })(password, cb); diff --git a/packages/clerk-js/src/core/resources/User.ts b/packages/clerk-js/src/core/resources/User.ts index 8f61851b1c5..3de4b518943 100644 --- a/packages/clerk-js/src/core/resources/User.ts +++ b/packages/clerk-js/src/core/resources/User.ts @@ -1,3 +1,4 @@ +import { getFullName } from '@clerk/shared/internal/clerk-js/user'; import type { BackupCodeJSON, BackupCodeResource, @@ -34,7 +35,6 @@ import type { import { unixEpochToDate } from '../../utils/date'; import { normalizeUnsafeMetadata } from '../../utils/resourceParams'; -import { getFullName } from '../../utils/user'; import { eventBus, events } from '../events'; import { addPaymentMethod, getPaymentMethods, initializePaymentMethod } from '../modules/billing'; import { BackupCode } from './BackupCode'; diff --git a/packages/clerk-js/src/utils/completeSignUpFlow.ts b/packages/clerk-js/src/utils/completeSignUpFlow.ts index 686a5f9775e..8e4a94ebdd1 100644 --- a/packages/clerk-js/src/utils/completeSignUpFlow.ts +++ b/packages/clerk-js/src/utils/completeSignUpFlow.ts @@ -1,7 +1,6 @@ +import { forwardClerkQueryParams } from '@clerk/shared/internal/clerk-js/queryParams'; import type { SignUpResource } from '@clerk/shared/types'; -import { forwardClerkQueryParams } from './getClerkQueryParam'; - type CompleteSignUpFlowProps = { signUp: SignUpResource; verifyEmailPath?: string; diff --git a/packages/clerk-js/src/utils/index.ts b/packages/clerk-js/src/utils/index.ts index 0673c6b42df..349c7d787eb 100644 --- a/packages/clerk-js/src/utils/index.ts +++ b/packages/clerk-js/src/utils/index.ts @@ -1,14 +1,12 @@ -export * from './appearance'; export * from './beforeUnloadTracker'; export * from './billing'; export * from './completeSignUpFlow'; -export * from './dynamicParamParser'; export * from './email'; -export * from './encoders'; +export * from '@clerk/shared/internal/clerk-js/encoders'; export * from './errors'; export * from './errorThrower'; export * from './filterUndefinedValues'; -export * from './getClerkQueryParam'; +export * from '@clerk/shared/internal/clerk-js/queryParams'; export * from './hex'; export * from './ignoreEventValue'; export * from './image'; @@ -17,12 +15,11 @@ export * from './jwt'; export * from './locale'; export * from './organization'; export * from './pageLifecycle'; -export * from './path'; -export * from './props'; -export * from './queryStateParams'; -export * from './querystring'; +export * from '@clerk/shared/internal/clerk-js/path'; +export * from '@clerk/shared/internal/clerk-js/queryStateParams'; +export * from '@clerk/shared/internal/clerk-js/querystring'; export * from './runtime'; export * from './tokenId'; -export * from './url'; +export * from '@clerk/shared/internal/clerk-js/url'; export * from './web3'; export * from './windowNavigate'; diff --git a/packages/clerk-js/src/utils/instance.ts b/packages/clerk-js/src/utils/instance.ts index 404a81608ec..97b869e7675 100644 --- a/packages/clerk-js/src/utils/instance.ts +++ b/packages/clerk-js/src/utils/instance.ts @@ -1,4 +1,4 @@ -import { isDevOrStagingUrl } from './url'; +import { isDevOrStagingUrl } from '@clerk/shared/internal/clerk-js/url'; const FRONTEND_API_DEV_OR_STG_REGEX = /^clerk\.([\w|-]+\.){2,4}(dev|com)$/i; diff --git a/packages/clerk-js/src/utils/jwt.ts b/packages/clerk-js/src/utils/jwt.ts index 9bac22a6274..e921ddb8912 100644 --- a/packages/clerk-js/src/utils/jwt.ts +++ b/packages/clerk-js/src/utils/jwt.ts @@ -1,7 +1,6 @@ +import { urlDecodeB64 } from '@clerk/shared/internal/clerk-js/encoders'; import type { JWT, JwtPayload } from '@clerk/shared/types'; -import { urlDecodeB64 } from './encoders'; - export function decode(token: string): JWT { const parts = (token || '').split('.'); const [header, payload, signature] = parts; diff --git a/packages/clerk-js/src/utils/redirectUrls.ts b/packages/clerk-js/src/utils/redirectUrls.ts index fd7d34a5d9a..b6a94dcef9c 100644 --- a/packages/clerk-js/src/utils/redirectUrls.ts +++ b/packages/clerk-js/src/utils/redirectUrls.ts @@ -1,9 +1,9 @@ +import { isAllowedRedirect, relativeToAbsoluteUrl } from '@clerk/shared/internal/clerk-js/url'; import { applyFunctionToObj, filterProps, removeUndefined } from '@clerk/shared/object'; import type { ClerkOptions, RedirectOptions } from '@clerk/shared/types'; import { camelToSnake } from '@clerk/shared/underscore'; import { assertNoLegacyProp, warnForNewPropShadowingLegacyProp } from './assertNoLegacyProp'; -import { isAllowedRedirect, relativeToAbsoluteUrl } from './url'; type ComponentMode = 'modal' | 'mounted'; diff --git a/packages/clerk-js/src/utils/__tests__/encoders.test.ts b/packages/shared/src/internal/clerk-js/__tests__/encoders.test.ts similarity index 100% rename from packages/clerk-js/src/utils/__tests__/encoders.test.ts rename to packages/shared/src/internal/clerk-js/__tests__/encoders.test.ts diff --git a/packages/clerk-js/src/utils/__tests__/path.test.ts b/packages/shared/src/internal/clerk-js/__tests__/path.test.ts similarity index 100% rename from packages/clerk-js/src/utils/__tests__/path.test.ts rename to packages/shared/src/internal/clerk-js/__tests__/path.test.ts diff --git a/packages/clerk-js/src/utils/__tests__/getClerkQueryParam.test.ts b/packages/shared/src/internal/clerk-js/__tests__/queryParams.test.ts similarity index 98% rename from packages/clerk-js/src/utils/__tests__/getClerkQueryParam.test.ts rename to packages/shared/src/internal/clerk-js/__tests__/queryParams.test.ts index 110539f2893..0f5a437e18e 100644 --- a/packages/clerk-js/src/utils/__tests__/getClerkQueryParam.test.ts +++ b/packages/shared/src/internal/clerk-js/__tests__/queryParams.test.ts @@ -1,7 +1,7 @@ import { beforeEach, describe, expect, it, vi } from 'vitest'; -import { CLERK_SYNCED } from '../../core/constants'; -import { forwardClerkQueryParams, getClerkQueryParam, removeClerkQueryParam } from '../getClerkQueryParam'; +import { CLERK_SYNCED } from '../constants'; +import { forwardClerkQueryParams, getClerkQueryParam, removeClerkQueryParam } from '../queryParams'; describe('getClerkQueryParam', () => { beforeEach(() => { diff --git a/packages/clerk-js/src/utils/__tests__/queryStateParams.test.ts b/packages/shared/src/internal/clerk-js/__tests__/queryStateParams.test.ts similarity index 100% rename from packages/clerk-js/src/utils/__tests__/queryStateParams.test.ts rename to packages/shared/src/internal/clerk-js/__tests__/queryStateParams.test.ts diff --git a/packages/clerk-js/src/utils/__tests__/querystring.test.ts b/packages/shared/src/internal/clerk-js/__tests__/querystring.test.ts similarity index 100% rename from packages/clerk-js/src/utils/__tests__/querystring.test.ts rename to packages/shared/src/internal/clerk-js/__tests__/querystring.test.ts diff --git a/packages/clerk-js/src/utils/__tests__/url.test.ts b/packages/shared/src/internal/clerk-js/__tests__/url.test.ts similarity index 100% rename from packages/clerk-js/src/utils/__tests__/url.test.ts rename to packages/shared/src/internal/clerk-js/__tests__/url.test.ts diff --git a/packages/shared/src/internal/clerk-js/dynamicParamParser.ts b/packages/shared/src/internal/clerk-js/dynamicParamParser.ts deleted file mode 100644 index 9f254312d9e..00000000000 --- a/packages/shared/src/internal/clerk-js/dynamicParamParser.ts +++ /dev/null @@ -1,14 +0,0 @@ -export const createDynamicParamParser = - ({ regex }: { regex: RegExp }) => - >({ urlWithParam, entity }: { urlWithParam: string; entity: T }) => { - const match = regex.exec(urlWithParam); - - if (match) { - const key = match[1]; - if (key in entity) { - const value = entity[key] as string; - return urlWithParam.replace(match[0], value); - } - } - return urlWithParam; - }; diff --git a/packages/clerk-js/src/utils/encoders.ts b/packages/shared/src/internal/clerk-js/encoders.ts similarity index 100% rename from packages/clerk-js/src/utils/encoders.ts rename to packages/shared/src/internal/clerk-js/encoders.ts diff --git a/packages/shared/src/internal/clerk-js/index.ts b/packages/shared/src/internal/clerk-js/index.ts deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/packages/clerk-js/src/utils/passwords/complexity.ts b/packages/shared/src/internal/clerk-js/passwords/complexity.ts similarity index 100% rename from packages/clerk-js/src/utils/passwords/complexity.ts rename to packages/shared/src/internal/clerk-js/passwords/complexity.ts diff --git a/packages/clerk-js/src/utils/passwords/password.ts b/packages/shared/src/internal/clerk-js/passwords/password.ts similarity index 84% rename from packages/clerk-js/src/utils/passwords/password.ts rename to packages/shared/src/internal/clerk-js/passwords/password.ts index 7e725291460..9a53d8fc959 100644 --- a/packages/clerk-js/src/utils/passwords/password.ts +++ b/packages/shared/src/internal/clerk-js/passwords/password.ts @@ -1,10 +1,16 @@ -import type { PasswordSettingsData, PasswordValidation, ValidatePasswordCallbacks } from '@clerk/shared/types'; +import type { + PasswordSettingsData, + PasswordValidation, + ValidatePasswordCallbacks, + ZxcvbnResult, +} from '@clerk/shared/types'; import { noop } from '@clerk/shared/utils'; -import { loadZxcvbn } from '../zxcvbn'; import { createValidateComplexity } from './complexity'; import { createValidatePasswordStrength } from './strength'; +type zxcvbnFN = (password: string, userInputs?: (string | number)[]) => ZxcvbnResult; + export type UsePasswordConfig = PasswordSettingsData & { validatePassword: boolean; }; @@ -17,7 +23,11 @@ export type UsePasswordCbs = { onValidationComplexity?: (b: boolean) => void; }; -export const createValidatePassword = (config: UsePasswordConfig, callbacks?: ValidatePasswordCallbacks) => { +export const createValidatePassword = ( + loadZxcvbn: () => Promise, + config: UsePasswordConfig, + callbacks?: ValidatePasswordCallbacks, +) => { const { onValidation = noop, onValidationComplexity = noop } = callbacks || {}; const { show_zxcvbn, validatePassword: validatePasswordProp } = config; const getComplexity = createValidateComplexity(config); diff --git a/packages/clerk-js/src/utils/passwords/strength.ts b/packages/shared/src/internal/clerk-js/passwords/strength.ts similarity index 93% rename from packages/clerk-js/src/utils/passwords/strength.ts rename to packages/shared/src/internal/clerk-js/passwords/strength.ts index 0009b1cf9ac..9ff599981cd 100644 --- a/packages/clerk-js/src/utils/passwords/strength.ts +++ b/packages/shared/src/internal/clerk-js/passwords/strength.ts @@ -1,6 +1,6 @@ import type { PasswordSettingsData, ZxcvbnResult } from '@clerk/shared/types'; -import type { zxcvbnFN } from '../zxcvbn'; +type zxcvbnFN = (password: string, userInputs?: (string | number)[]) => ZxcvbnResult; type PasswordStrength = | { diff --git a/packages/clerk-js/src/utils/path.ts b/packages/shared/src/internal/clerk-js/path.ts similarity index 100% rename from packages/clerk-js/src/utils/path.ts rename to packages/shared/src/internal/clerk-js/path.ts diff --git a/packages/clerk-js/src/utils/getClerkQueryParam.ts b/packages/shared/src/internal/clerk-js/queryParams.ts similarity index 96% rename from packages/clerk-js/src/utils/getClerkQueryParam.ts rename to packages/shared/src/internal/clerk-js/queryParams.ts index 69a44b6df12..045de91564e 100644 --- a/packages/clerk-js/src/utils/getClerkQueryParam.ts +++ b/packages/shared/src/internal/clerk-js/queryParams.ts @@ -1,8 +1,7 @@ import type { EmailLinkErrorCodeStatus } from '@clerk/shared/error'; +import { CLERK_SATELLITE_URL, CLERK_SUFFIXED_COOKIES, CLERK_SYNCED } from '@clerk/shared/internal/clerk-js/constants'; import { CLERK_NETLIFY_CACHE_BUST_PARAM } from '@clerk/shared/netlifyCacheHandler'; -import { CLERK_SATELLITE_URL, CLERK_SUFFIXED_COOKIES, CLERK_SYNCED } from '../core/constants'; - const _ClerkQueryParams = [ '__clerk_status', '__clerk_created_session', @@ -34,11 +33,17 @@ type ClerkQueryParamsToValuesMap = { __clerk_status: TicketStatus | VerifyTokenStatus; } & Record<(typeof _ClerkQueryParams)[number], string>; +/** + * + */ export function getClerkQueryParam(param: T): ClerkQueryParamsToValuesMap[T] | null { const val = new URL(window.location.href).searchParams.get(param); return val ? (val as ClerkQueryParamsToValuesMap[T]) : null; } +/** + * + */ export function removeClerkQueryParam(param: T) { const url = new URL(window.location.href); if (url.searchParams.has(param)) { diff --git a/packages/clerk-js/src/utils/queryStateParams.ts b/packages/shared/src/internal/clerk-js/queryStateParams.ts similarity index 81% rename from packages/clerk-js/src/utils/queryStateParams.ts rename to packages/shared/src/internal/clerk-js/queryStateParams.ts index 79b802b04e9..cfc16329fd1 100644 --- a/packages/clerk-js/src/utils/queryStateParams.ts +++ b/packages/shared/src/internal/clerk-js/queryStateParams.ts @@ -1,5 +1,6 @@ -import { CLERK_MODAL_STATE } from '../core/constants'; -import { encodeB64, getClerkQueryParam } from '../utils'; +import { CLERK_MODAL_STATE } from '@clerk/shared/internal/clerk-js/constants'; +import { encodeB64 } from '@clerk/shared/internal/clerk-js/encoders'; +import { getClerkQueryParam } from '@clerk/shared/internal/clerk-js/queryParams'; export const readStateParam = () => { const urlClerkState = getClerkQueryParam(CLERK_MODAL_STATE) ?? ''; diff --git a/packages/clerk-js/src/utils/querystring.ts b/packages/shared/src/internal/clerk-js/querystring.ts similarity index 100% rename from packages/clerk-js/src/utils/querystring.ts rename to packages/shared/src/internal/clerk-js/querystring.ts diff --git a/packages/clerk-js/src/core/sessionTasks.ts b/packages/shared/src/internal/clerk-js/sessionTasks.ts similarity index 95% rename from packages/clerk-js/src/core/sessionTasks.ts rename to packages/shared/src/internal/clerk-js/sessionTasks.ts index 7713ee53eb3..5d8af0513c5 100644 --- a/packages/clerk-js/src/core/sessionTasks.ts +++ b/packages/shared/src/internal/clerk-js/sessionTasks.ts @@ -1,7 +1,8 @@ import { logger } from '@clerk/shared/logger'; import type { ClerkOptions, SessionResource, SessionTask, SetActiveParams } from '@clerk/shared/types'; -import { buildURL, forwardClerkQueryParams } from '../utils'; +import { buildURL } from './url'; +import { forwardClerkQueryParams } from './queryParams'; /** * @internal diff --git a/packages/clerk-js/src/utils/url.ts b/packages/shared/src/internal/clerk-js/url.ts similarity index 97% rename from packages/clerk-js/src/utils/url.ts rename to packages/shared/src/internal/clerk-js/url.ts index 4cd2e465cbd..57c306133ed 100644 --- a/packages/clerk-js/src/utils/url.ts +++ b/packages/shared/src/internal/clerk-js/url.ts @@ -72,9 +72,9 @@ interface BuildURLOptions { * References: * https://developer.mozilla.org/en-US/docs/Web/API/URL * - * @param {BuildURLParams} params - * @param {BuildURLOptions} options - * @returns {URL | string} Returns the URL href + * @param params + * @param options + * @returns Returns the URL href */ export function buildURL( params: BuildURLParams, @@ -170,8 +170,8 @@ export function toURL(url: string | URL): URL { * References: * https://developer.mozilla.org/en-US/docs/Web/API/URL * - * @param {URL | string} url - * @returns {string} Returns the URL href without the origin + * @param url + * @returns Returns the URL href without the origin */ export function stripOrigin(url: URL | string): string { // In non-browser environments `window.location.origin` might not be available @@ -190,7 +190,8 @@ export function stripOrigin(url: URL | string): string { * * Strips the trailing slashes from a string * - * @returns {string} Returns the string without trailing slashes + * @returns Returns the string without trailing slashes + * * @param path */ export const trimTrailingSlash = (path: string): string => { @@ -202,7 +203,8 @@ export const trimTrailingSlash = (path: string): string => { * * Strips the leading slashes from a string * - * @returns {string} Returns the string without leading slashes + * @returns Returns the string without leading slashes + * * @param path */ export const trimLeadingSlash = (path: string): string => { @@ -226,7 +228,7 @@ export function getSearchParameterFromHash({ return dummyUrlForHash.searchParams.get(paramName); } -export function isValidUrl(val: unknown): val is string { +export function isValidUrl(val: unknown) { if (!val) { return false; } diff --git a/packages/clerk-js/src/utils/user.ts b/packages/shared/src/internal/clerk-js/user.ts similarity index 100% rename from packages/clerk-js/src/utils/user.ts rename to packages/shared/src/internal/clerk-js/user.ts index 75a57ec274a..edb1d08ecde 100644 --- a/packages/clerk-js/src/utils/user.ts +++ b/packages/shared/src/internal/clerk-js/user.ts @@ -1,3 +1,5 @@ +import type { UserResource } from '@clerk/shared/types'; + type NameHelperParams = { firstName?: string | null; lastName?: string | null; @@ -10,8 +12,6 @@ export const getFullName = ({ firstName, lastName, name }: NameHelperParams) => export const getInitials = ({ firstName, lastName, name }: NameHelperParams) => [(firstName || '')[0], (lastName || '')[0]].join('').trim() || (name || '')[0]; -import type { UserResource } from '@clerk/shared/types'; - export const getIdentifier = (user: Partial): string => { if (user.username) { return user.username; diff --git a/packages/shared/src/utils/index.ts b/packages/shared/src/utils/index.ts index 0d2d3bdbf12..4c1e6ec6bef 100644 --- a/packages/shared/src/utils/index.ts +++ b/packages/shared/src/utils/index.ts @@ -5,4 +5,5 @@ export { logErrorInDevMode } from './logErrorInDevMode'; export { noop } from './noop'; export * from './runtimeEnvironment'; export { handleValueOrFn } from './handleValueOrFn'; +export { runIfFunctionOrReturn } from './runIfFunctionOrReturn'; export { fastDeepMergeAndReplace, fastDeepMergeAndKeep } from './fastDeepMerge'; diff --git a/packages/clerk-js/src/utils/props.ts b/packages/shared/src/utils/runIfFunctionOrReturn.ts similarity index 91% rename from packages/clerk-js/src/utils/props.ts rename to packages/shared/src/utils/runIfFunctionOrReturn.ts index 8bc180f3e81..64205afdb50 100644 --- a/packages/clerk-js/src/utils/props.ts +++ b/packages/shared/src/utils/runIfFunctionOrReturn.ts @@ -1,3 +1,6 @@ +/** + * + */ export function runIfFunctionOrReturn(o: unknown) { if (typeof o === 'function') { return o(); diff --git a/packages/shared/tsdown.config.mts b/packages/shared/tsdown.config.mts index 1a5167baf9e..e98bf78cf6e 100644 --- a/packages/shared/tsdown.config.mts +++ b/packages/shared/tsdown.config.mts @@ -42,6 +42,7 @@ export default defineConfig(({ watch }) => { './src/types/index.ts', './src/dom/*.ts', './src/internal/clerk-js/*.ts', + './src/internal/clerk-js/**/*.ts', '!./src/**/*.{test,spec}.{ts,tsx}', ], outDir: './dist/runtime', diff --git a/packages/ui/package.json b/packages/ui/package.json index 116f4f0a3a0..627e9154910 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -36,16 +36,20 @@ "lint": "eslint src", "lint:attw": "attw --pack . --profile node16", "lint:publint": "publint", + "showerrors": "tsc", "test": "vitest", "test:ci": "vitest --maxWorkers=70%", "test:coverage": "vitest --collectCoverage && open coverage/lcov-report/index.html" }, "dependencies": { + "@clerk/localizations": "workspace:^", "@clerk/shared": "workspace:^", "@emotion/cache": "11.11.0", "@emotion/react": "11.11.1", "@floating-ui/react": "0.27.12", "@formkit/auto-animate": "^0.8.2", + "@zxcvbn-ts/core": "3.0.4", + "@zxcvbn-ts/language-common": "3.0.4", "copy-to-clipboard": "3.3.3", "csstype": "3.1.3", "dequal": "2.0.3", diff --git a/packages/ui/src/Components.tsx b/packages/ui/src/Components.tsx index f79af700660..c4ec3777a10 100644 --- a/packages/ui/src/Components.tsx +++ b/packages/ui/src/Components.tsx @@ -1,4 +1,4 @@ -import { clerkUIErrorDOMElementNotFound } from '@clerk/shared/internal/clerk-js'; +import { clerkUIErrorDOMElementNotFound } from '@clerk/shared/internal/clerk-js/errors'; import type { __internal_CheckoutProps, __internal_PlanDetailsProps, diff --git a/packages/ui/src/common/EmailLinkStatusCard.tsx b/packages/ui/src/common/EmailLinkStatusCard.tsx index df58f1b4b6d..dabd2128d3c 100644 --- a/packages/ui/src/common/EmailLinkStatusCard.tsx +++ b/packages/ui/src/common/EmailLinkStatusCard.tsx @@ -1,6 +1,6 @@ +import type { VerifyTokenStatus } from '@clerk/shared/internal/clerk-js/queryParams'; import React from 'react'; -import type { VerifyTokenStatus } from '../../utils/getClerkQueryParam'; import type { LocalizationKey } from '../customizables'; import { Col, descriptors, Flex, Flow, Icon, localizationKeys, Spinner, Text } from '../customizables'; import { Card } from '../elements/Card'; diff --git a/packages/ui/src/common/NotificationCountBadge.tsx b/packages/ui/src/common/NotificationCountBadge.tsx index 4efddafca1c..97d27ac6757 100644 --- a/packages/ui/src/common/NotificationCountBadge.tsx +++ b/packages/ui/src/common/NotificationCountBadge.tsx @@ -1,4 +1,5 @@ -import { formatToCompactNumber } from '../../ui/utils/intl'; +import { formatToCompactNumber } from '@/utils/intl'; + import { Flex, localizationKeys, NotificationBadge, useLocalizations } from '../customizables'; import { usePrefersReducedMotion } from '../hooks'; import type { PropsOfComponent, ThemableCssProp } from '../styledSystem'; diff --git a/packages/ui/src/common/redirects.ts b/packages/ui/src/common/redirects.ts index aff7a444fce..fa682434c74 100644 --- a/packages/ui/src/common/redirects.ts +++ b/packages/ui/src/common/redirects.ts @@ -1,4 +1,5 @@ -import { buildURL } from '../../utils/url'; +import { buildURL } from '@clerk/shared/internal/clerk-js/url'; + import type { SignInContextType, SignUpContextType, UserProfileContextType } from './../contexts'; export const SSO_CALLBACK_PATH_ROUTE = '/sso-callback'; diff --git a/packages/ui/src/common/withRedirect.tsx b/packages/ui/src/common/withRedirect.tsx index 044e1847637..95758ac1bda 100644 --- a/packages/ui/src/common/withRedirect.tsx +++ b/packages/ui/src/common/withRedirect.tsx @@ -1,5 +1,6 @@ -import type { ComponentGuard } from '@clerk/shared/internal/clerk-js'; -import { isSignedInAndSingleSessionModeEnabled, warnings } from '@clerk/shared/internal/clerk-js'; +import type { ComponentGuard } from '@clerk/shared/internal/clerk-js/componentGuards'; +import { isSignedInAndSingleSessionModeEnabled } from '@clerk/shared/internal/clerk-js/componentGuards'; +import { warnings } from '@clerk/shared/internal/clerk-js/warnings'; import { isDevelopmentFromPublishableKey } from '@clerk/shared/keys'; import { useClerk } from '@clerk/shared/react'; import type { Clerk, ClerkOptions, EnvironmentResource } from '@clerk/shared/types'; diff --git a/packages/ui/src/components/GoogleOneTap/one-tap-start.tsx b/packages/ui/src/components/GoogleOneTap/one-tap-start.tsx index ce4f5a97c2b..608efba3b0d 100644 --- a/packages/ui/src/components/GoogleOneTap/one-tap-start.tsx +++ b/packages/ui/src/components/GoogleOneTap/one-tap-start.tsx @@ -1,9 +1,9 @@ +import { clerkUnsupportedEnvironmentWarning } from '@clerk/shared/internal/clerk-js/errors'; import { useClerk, useUser } from '@clerk/shared/react'; import { useEffect, useRef } from 'react'; import { withCardStateProvider } from '@/ui/elements/contexts'; -import { clerkUnsupportedEnvironmentWarning } from '../../../core/errors'; import type { GISCredentialResponse } from '../../../utils/one-tap'; import { loadGIS } from '../../../utils/one-tap'; import { useEnvironment, useGoogleOneTapContext } from '../../contexts'; diff --git a/packages/ui/src/components/ImpersonationFab/index.tsx b/packages/ui/src/components/ImpersonationFab/index.tsx index a7a13fb3022..33f2f6512bb 100644 --- a/packages/ui/src/components/ImpersonationFab/index.tsx +++ b/packages/ui/src/components/ImpersonationFab/index.tsx @@ -1,3 +1,4 @@ +import { getFullName, getIdentifier } from '@clerk/shared/internal/clerk-js/user'; import { useClerk, useSession, useUser } from '@clerk/shared/react'; import type { SignedInSessionResource } from '@clerk/shared/types'; import type { PointerEventHandler } from 'react'; @@ -21,7 +22,6 @@ import { useMultipleSessions } from '../../hooks/useMultipleSessions'; import { Eye } from '../../icons'; import type { PropsOfComponent } from '../../styledSystem'; import { InternalThemeProvider, mqu } from '../../styledSystem'; -import { getFullName, getIdentifier } from '../../utils/user'; type EyeCircleProps = PropsOfComponent & { width: string; diff --git a/packages/ui/src/components/KeylessPrompt/use-revalidate-environment.ts b/packages/ui/src/components/KeylessPrompt/use-revalidate-environment.ts index 32959532121..c42edf6afef 100644 --- a/packages/ui/src/components/KeylessPrompt/use-revalidate-environment.ts +++ b/packages/ui/src/components/KeylessPrompt/use-revalidate-environment.ts @@ -1,7 +1,7 @@ import { useClerk } from '@clerk/shared/react'; import { useEffect, useReducer, useRef } from 'react'; -import type { Clerk } from '../../../core/clerk'; +import type { Clerk } from '@clerk/shared/types'; import { useEnvironment } from '../../contexts'; const THROTTLE_DURATION_MS = 10 * 1000; diff --git a/packages/ui/src/components/OrganizationList/UserMembershipList.tsx b/packages/ui/src/components/OrganizationList/UserMembershipList.tsx index 58d204c43fe..c8461f87d10 100644 --- a/packages/ui/src/components/OrganizationList/UserMembershipList.tsx +++ b/packages/ui/src/components/OrganizationList/UserMembershipList.tsx @@ -1,7 +1,7 @@ import { useOrganizationList, useUser } from '@clerk/shared/react'; import type { OrganizationResource } from '@clerk/shared/types'; -import { isClerkAPIResponseError } from '@/index.headless'; +import { isClerkAPIResponseError } from '@clerk/shared/error'; import { sharedMainIdentifierSx } from '@/ui/common/organizations/OrganizationPreview'; import { localizationKeys, useLocalizations } from '@/ui/customizables'; import { useCardState, withCardStateProvider } from '@/ui/elements/contexts'; diff --git a/packages/ui/src/components/OrganizationProfile/BillingWidget.tsx b/packages/ui/src/components/OrganizationProfile/BillingWidget.tsx index 5f6c3cf4430..19bada06287 100644 --- a/packages/ui/src/components/OrganizationProfile/BillingWidget.tsx +++ b/packages/ui/src/components/OrganizationProfile/BillingWidget.tsx @@ -1,4 +1,5 @@ -import { runIfFunctionOrReturn } from '../../../utils'; +import { runIfFunctionOrReturn } from '@clerk/shared/utils'; + import { AlertIcon, Flex, Link, Text } from '../../customizables'; import { useRouter } from '../../router'; diff --git a/packages/ui/src/components/OrganizationProfile/InviteMembersScreen.tsx b/packages/ui/src/components/OrganizationProfile/InviteMembersScreen.tsx index 0559717b47b..4f21a5aae91 100644 --- a/packages/ui/src/components/OrganizationProfile/InviteMembersScreen.tsx +++ b/packages/ui/src/components/OrganizationProfile/InviteMembersScreen.tsx @@ -1,11 +1,11 @@ import { useOrganization } from '@clerk/shared/react'; +import { runIfFunctionOrReturn } from '@clerk/shared/utils'; import { useCardState, withCardStateProvider } from '@/ui/elements/contexts'; import { FormContainer } from '@/ui/elements/FormContainer'; import { IconCircle } from '@/ui/elements/IconCircle'; import { SuccessPage } from '@/ui/elements/SuccessPage'; -import { runIfFunctionOrReturn } from '../../../utils'; import { useWizard, Wizard } from '../../common'; import { useOrganizationProfileContext } from '../../contexts'; import { descriptors, Flex, localizationKeys, Text } from '../../customizables'; @@ -26,7 +26,7 @@ export const InviteMembersScreen = withCardStateProvider((props: InviteMembersSc const card = useCardState(); const wizard = useWizard({ onNextStep: () => card.setError(undefined) }); const { organization } = useOrganization(); - //@ts-expect-error + // @ts-expect-error - __unstable_manageBillingUrl and __unstable_manageBillingMembersLimit are unstable props const { __unstable_manageBillingUrl, __unstable_manageBillingMembersLimit } = useOrganizationProfileContext(); if (!organization) { diff --git a/packages/ui/src/components/OrganizationProfile/MembersSearch.tsx b/packages/ui/src/components/OrganizationProfile/MembersSearch.tsx index 845c521e693..0b78d9c6b33 100644 --- a/packages/ui/src/components/OrganizationProfile/MembersSearch.tsx +++ b/packages/ui/src/components/OrganizationProfile/MembersSearch.tsx @@ -2,13 +2,13 @@ import type { useOrganization } from '@clerk/shared/react'; import type { GetMembersParams } from '@clerk/shared/types'; import { useEffect, useRef } from 'react'; +import { descriptors, Flex, Icon, localizationKeys, useLocalizations } from '@/customizables'; +import { MagnifyingGlass } from '@/icons'; +import { Spinner } from '@/primitives'; +import { mqu } from '@/styledSystem'; import { Animated } from '@/ui/elements/Animated'; import { InputWithIcon } from '@/ui/elements/InputWithIcon'; -import { descriptors, Flex, Icon, localizationKeys, useLocalizations } from '../../../ui/customizables'; -import { MagnifyingGlass } from '../../../ui/icons'; -import { Spinner } from '../../../ui/primitives'; -import { mqu } from '../../../ui/styledSystem'; import { ACTIVE_MEMBERS_PAGE_SIZE } from './OrganizationMembers'; type MembersSearchProps = { diff --git a/packages/ui/src/components/OrganizationProfile/MembershipWidget.tsx b/packages/ui/src/components/OrganizationProfile/MembershipWidget.tsx index 82978d49d74..7e108358476 100644 --- a/packages/ui/src/components/OrganizationProfile/MembershipWidget.tsx +++ b/packages/ui/src/components/OrganizationProfile/MembershipWidget.tsx @@ -1,8 +1,8 @@ import { useOrganization } from '@clerk/shared/react'; +import { runIfFunctionOrReturn } from '@clerk/shared/utils'; import { Gauge } from '@/ui/elements/Gauge'; -import { runIfFunctionOrReturn } from '../../../utils'; import { useOrganizationProfileContext } from '../../contexts'; import { Flex, Icon, Link, Text } from '../../customizables'; import { ArrowRightIcon } from '../../icons'; diff --git a/packages/ui/src/components/OrganizationSwitcher/OrganizationSwitcherPopover.tsx b/packages/ui/src/components/OrganizationSwitcher/OrganizationSwitcherPopover.tsx index 567e03c42bf..c72e8c8340f 100644 --- a/packages/ui/src/components/OrganizationSwitcher/OrganizationSwitcherPopover.tsx +++ b/packages/ui/src/components/OrganizationSwitcher/OrganizationSwitcherPopover.tsx @@ -1,5 +1,6 @@ import { useClerk, useOrganization, useOrganizationList, useUser } from '@clerk/shared/react'; import type { OrganizationResource } from '@clerk/shared/types'; +import { runIfFunctionOrReturn } from '@clerk/shared/utils'; import React from 'react'; import { Actions, SmallAction } from '@/ui/elements/Actions'; @@ -8,7 +9,6 @@ import { OrganizationPreview } from '@/ui/elements/OrganizationPreview'; import { PersonalWorkspacePreview } from '@/ui/elements/PersonalWorkspacePreview'; import { PopoverCard } from '@/ui/elements/PopoverCard'; -import { runIfFunctionOrReturn } from '../../../utils'; import { NotificationCountBadge, withProtect } from '../../common'; import { useEnvironment, useOrganizationSwitcherContext } from '../../contexts'; import { descriptors, Flex, localizationKeys } from '../../customizables'; diff --git a/packages/ui/src/components/SessionTasks/index.tsx b/packages/ui/src/components/SessionTasks/index.tsx index a5c8ca20ebb..b5300052d4b 100644 --- a/packages/ui/src/components/SessionTasks/index.tsx +++ b/packages/ui/src/components/SessionTasks/index.tsx @@ -1,3 +1,4 @@ +import { INTERNAL_SESSION_TASK_ROUTE_BY_KEY } from '@clerk/shared/internal/clerk-js/sessionTasks'; import { useClerk } from '@clerk/shared/react'; import { eventComponentMounted } from '@clerk/shared/telemetry'; import type { SessionResource } from '@clerk/shared/types'; @@ -8,7 +9,6 @@ import { Card } from '@/ui/elements/Card'; import { withCardStateProvider } from '@/ui/elements/contexts'; import { LoadingCardContainer } from '@/ui/elements/LoadingCard'; -import { INTERNAL_SESSION_TASK_ROUTE_BY_KEY } from '../../../core/sessionTasks'; import { SessionTasksContext, TaskChooseOrganizationContext, diff --git a/packages/ui/src/components/SessionTasks/tasks/withTaskGuard.ts b/packages/ui/src/components/SessionTasks/tasks/withTaskGuard.ts index ce460447b9d..e8489db6f8e 100644 --- a/packages/ui/src/components/SessionTasks/tasks/withTaskGuard.ts +++ b/packages/ui/src/components/SessionTasks/tasks/withTaskGuard.ts @@ -1,4 +1,4 @@ -import { warnings } from '@clerk/shared/internal/clerk-js'; +import { warnings } from '@clerk/shared/internal/clerk-js/warnings'; import type { ComponentType } from 'react'; import { withRedirect } from '@/ui/common'; diff --git a/packages/ui/src/components/SignIn/ResetPassword.tsx b/packages/ui/src/components/SignIn/ResetPassword.tsx index 9295788c55a..d86fba601d6 100644 --- a/packages/ui/src/components/SignIn/ResetPassword.tsx +++ b/packages/ui/src/components/SignIn/ResetPassword.tsx @@ -1,3 +1,4 @@ +import { clerkInvalidFAPIResponse } from '@clerk/shared/internal/clerk-js/errors'; import React from 'react'; import { Card } from '@/ui/elements/Card'; @@ -8,7 +9,6 @@ import { handleError } from '@/ui/utils/errorHandler'; import { createPasswordError } from '@/ui/utils/passwordUtils'; import { useFormControl } from '@/ui/utils/useFormControl'; -import { clerkInvalidFAPIResponse } from '../../../core/errors'; import { useCoreSignIn, useEnvironment } from '../../contexts'; import { Col, descriptors, localizationKeys, useLocalizations } from '../../customizables'; import { useConfirmPassword } from '../../hooks'; diff --git a/packages/ui/src/components/SignIn/SignInFactorOneAlternativeChannelCodeForm.tsx b/packages/ui/src/components/SignIn/SignInFactorOneAlternativeChannelCodeForm.tsx index c0a1aaaab02..eaf0b15af0e 100644 --- a/packages/ui/src/components/SignIn/SignInFactorOneAlternativeChannelCodeForm.tsx +++ b/packages/ui/src/components/SignIn/SignInFactorOneAlternativeChannelCodeForm.tsx @@ -1,4 +1,5 @@ import { isUserLockedError } from '@clerk/shared/error'; +import { clerkInvalidFAPIResponse } from '@clerk/shared/internal/clerk-js/errors'; import { useClerk } from '@clerk/shared/react'; import type { PhoneCodeFactor, SignInFactor } from '@clerk/shared/types'; @@ -7,7 +8,6 @@ import type { VerificationCodeCardProps } from '@/ui/elements/VerificationCodeCa import { VerificationCodeCard } from '@/ui/elements/VerificationCodeCard'; import { handleError } from '@/ui/utils/errorHandler'; -import { clerkInvalidFAPIResponse } from '../../../core/errors'; import { useCoreSignIn, useSignInContext } from '../../contexts'; import { useSupportEmail } from '../../hooks/useSupportEmail'; import { type LocalizationKey, localizationKeys } from '../../localization'; diff --git a/packages/ui/src/components/SignIn/SignInFactorOneCodeForm.tsx b/packages/ui/src/components/SignIn/SignInFactorOneCodeForm.tsx index 350b618862a..0a21dddf09f 100644 --- a/packages/ui/src/components/SignIn/SignInFactorOneCodeForm.tsx +++ b/packages/ui/src/components/SignIn/SignInFactorOneCodeForm.tsx @@ -1,4 +1,5 @@ import { isUserLockedError } from '@clerk/shared/error'; +import { clerkInvalidFAPIResponse } from '@clerk/shared/internal/clerk-js/errors'; import { useClerk } from '@clerk/shared/react'; import type { EmailCodeFactor, PhoneCodeFactor, ResetPasswordCodeFactor } from '@clerk/shared/types'; import { useMemo } from 'react'; @@ -8,7 +9,6 @@ import type { VerificationCodeCardProps } from '@/ui/elements/VerificationCodeCa import { VerificationCodeCard } from '@/ui/elements/VerificationCodeCard'; import { handleError } from '@/ui/utils/errorHandler'; -import { clerkInvalidFAPIResponse } from '../../../core/errors'; import { useCoreSignIn, useSignInContext } from '../../contexts'; import { useFetch } from '../../hooks'; import { useSupportEmail } from '../../hooks/useSupportEmail'; diff --git a/packages/ui/src/components/SignIn/SignInFactorOnePasswordCard.tsx b/packages/ui/src/components/SignIn/SignInFactorOnePasswordCard.tsx index f7e05371cee..34884e417fb 100644 --- a/packages/ui/src/components/SignIn/SignInFactorOnePasswordCard.tsx +++ b/packages/ui/src/components/SignIn/SignInFactorOnePasswordCard.tsx @@ -1,4 +1,5 @@ import { isPasswordPwnedError, isUserLockedError } from '@clerk/shared/error'; +import { clerkInvalidFAPIResponse } from '@clerk/shared/internal/clerk-js/errors'; import { useClerk } from '@clerk/shared/react'; import React from 'react'; @@ -10,7 +11,6 @@ import { IdentityPreview } from '@/ui/elements/IdentityPreview'; import { handleError } from '@/ui/utils/errorHandler'; import { useFormControl } from '@/ui/utils/useFormControl'; -import { clerkInvalidFAPIResponse } from '../../../core/errors'; import { useCoreSignIn, useSignInContext } from '../../contexts'; import { descriptors, Flex, Flow, localizationKeys } from '../../customizables'; import { useSupportEmail } from '../../hooks/useSupportEmail'; diff --git a/packages/ui/src/components/SignIn/SignInFactorTwoBackupCodeCard.tsx b/packages/ui/src/components/SignIn/SignInFactorTwoBackupCodeCard.tsx index c98810d163a..ed86694d2c0 100644 --- a/packages/ui/src/components/SignIn/SignInFactorTwoBackupCodeCard.tsx +++ b/packages/ui/src/components/SignIn/SignInFactorTwoBackupCodeCard.tsx @@ -1,4 +1,5 @@ import { isUserLockedError } from '@clerk/shared/error'; +import { clerkInvalidFAPIResponse } from '@clerk/shared/internal/clerk-js/errors'; import { useClerk } from '@clerk/shared/react'; import type { SignInResource } from '@clerk/shared/types'; import React from 'react'; @@ -10,7 +11,6 @@ import { Header } from '@/ui/elements/Header'; import { handleError } from '@/ui/utils/errorHandler'; import { useFormControl } from '@/ui/utils/useFormControl'; -import { clerkInvalidFAPIResponse } from '../../../core/errors'; import { useCoreSignIn, useSignInContext } from '../../contexts'; import { Col, descriptors, localizationKeys } from '../../customizables'; import { useSupportEmail } from '../../hooks/useSupportEmail'; diff --git a/packages/ui/src/components/SignIn/SignInFactorTwoCodeForm.tsx b/packages/ui/src/components/SignIn/SignInFactorTwoCodeForm.tsx index 314c63cc583..b1b470c1093 100644 --- a/packages/ui/src/components/SignIn/SignInFactorTwoCodeForm.tsx +++ b/packages/ui/src/components/SignIn/SignInFactorTwoCodeForm.tsx @@ -1,4 +1,5 @@ import { isUserLockedError } from '@clerk/shared/error'; +import { clerkInvalidFAPIResponse } from '@clerk/shared/internal/clerk-js/errors'; import { useClerk } from '@clerk/shared/react'; import type { PhoneCodeFactor, SignInResource, TOTPFactor } from '@clerk/shared/types'; import React from 'react'; @@ -8,7 +9,6 @@ import type { VerificationCodeCardProps } from '@/ui/elements/VerificationCodeCa import { VerificationCodeCard } from '@/ui/elements/VerificationCodeCard'; import { handleError } from '@/ui/utils/errorHandler'; -import { clerkInvalidFAPIResponse } from '../../../core/errors'; import { useCoreSignIn, useSignInContext } from '../../contexts'; import { localizationKeys, Text } from '../../customizables'; import { useSupportEmail } from '../../hooks/useSupportEmail'; diff --git a/packages/ui/src/components/SignIn/SignInStart.tsx b/packages/ui/src/components/SignIn/SignInStart.tsx index c12bd76fce9..a40a75d4244 100644 --- a/packages/ui/src/components/SignIn/SignInStart.tsx +++ b/packages/ui/src/components/SignIn/SignInStart.tsx @@ -1,4 +1,7 @@ import { getAlternativePhoneCodeProviderData } from '@clerk/shared/alternativePhoneCode'; +import { ERROR_CODES, SIGN_UP_MODES } from '@clerk/shared/internal/clerk-js/constants'; +import { clerkInvalidFAPIResponse } from '@clerk/shared/internal/clerk-js/errors'; +import { getClerkQueryParam, removeClerkQueryParam } from '@clerk/shared/internal/clerk-js/queryParams'; import { useClerk } from '@clerk/shared/react'; import type { ClerkAPIError, @@ -21,9 +24,6 @@ import { isMobileDevice } from '@/ui/utils/isMobileDevice'; import type { FormControlState } from '@/ui/utils/useFormControl'; import { buildRequest, useFormControl } from '@/ui/utils/useFormControl'; -import { ERROR_CODES, SIGN_UP_MODES } from '../../../core/constants'; -import { clerkInvalidFAPIResponse } from '../../../core/errors'; -import { getClerkQueryParam, removeClerkQueryParam } from '../../../utils'; import type { SignInStartIdentifier } from '../../common'; import { buildSSOCallbackURL, diff --git a/packages/ui/src/components/SignIn/handleCombinedFlowTransfer.ts b/packages/ui/src/components/SignIn/handleCombinedFlowTransfer.ts index 4528af4d064..7cf3c7280c6 100644 --- a/packages/ui/src/components/SignIn/handleCombinedFlowTransfer.ts +++ b/packages/ui/src/components/SignIn/handleCombinedFlowTransfer.ts @@ -1,3 +1,4 @@ +import { SIGN_UP_MODES } from '@clerk/shared/internal/clerk-js/constants'; import type { LoadedClerk, PhoneCodeChannel, @@ -7,7 +8,6 @@ import type { SignUpResource, } from '@clerk/shared/types'; -import { SIGN_UP_MODES } from '../../../core/constants'; import type { RouteContextValue } from '../../router/RouteContext'; import { lazyCompleteSignUpFlow } from './lazy-sign-up'; diff --git a/packages/ui/src/components/SignIn/shared.ts b/packages/ui/src/components/SignIn/shared.ts index e4939eec64d..e3e5588cfcf 100644 --- a/packages/ui/src/components/SignIn/shared.ts +++ b/packages/ui/src/components/SignIn/shared.ts @@ -1,4 +1,5 @@ import { isClerkRuntimeError, isUserLockedError } from '@clerk/shared/error'; +import { clerkInvalidFAPIResponse } from '@clerk/shared/internal/clerk-js/errors'; import { useClerk } from '@clerk/shared/react'; import type { EnterpriseSSOFactor, SignInFirstFactor } from '@clerk/shared/types'; import { useCallback, useEffect } from 'react'; @@ -6,7 +7,6 @@ import { useCallback, useEffect } from 'react'; import { useCardState } from '@/ui/elements/contexts'; import { handleError } from '@/ui/utils/errorHandler'; -import { clerkInvalidFAPIResponse } from '../../../core/errors'; import { __internal_WebAuthnAbortService } from '../../../utils/passkeys'; import { useCoreSignIn, useSignInContext } from '../../contexts'; import { useSupportEmail } from '../../hooks/useSupportEmail'; diff --git a/packages/ui/src/components/SignUp/SignUpRestrictedAccess.tsx b/packages/ui/src/components/SignUp/SignUpRestrictedAccess.tsx index 10bac2a9125..c05a0b3d45f 100644 --- a/packages/ui/src/components/SignUp/SignUpRestrictedAccess.tsx +++ b/packages/ui/src/components/SignUp/SignUpRestrictedAccess.tsx @@ -1,9 +1,9 @@ +import { SIGN_UP_MODES } from '@clerk/shared/internal/clerk-js/constants'; import { useClerk } from '@clerk/shared/react'; import { Card } from '@/ui/elements/Card'; import { Header } from '@/ui/elements/Header'; -import { SIGN_UP_MODES } from '../../../core/constants'; import { useEnvironment, useSignUpContext } from '../../contexts'; import { Button, Flex, Icon, localizationKeys } from '../../customizables'; import { useCardState } from '../../elements/contexts'; diff --git a/packages/ui/src/components/SignUp/SignUpStart.tsx b/packages/ui/src/components/SignUp/SignUpStart.tsx index 20f4a4711cd..fc4b7b8e0d7 100644 --- a/packages/ui/src/components/SignUp/SignUpStart.tsx +++ b/packages/ui/src/components/SignUp/SignUpStart.tsx @@ -1,9 +1,11 @@ import { getAlternativePhoneCodeProviderData } from '@clerk/shared/alternativePhoneCode'; +import { ERROR_CODES, SIGN_UP_MODES } from '@clerk/shared/internal/clerk-js/constants'; +import { getClerkQueryParam, removeClerkQueryParam } from '@clerk/shared/internal/clerk-js/queryParams'; import { useClerk } from '@clerk/shared/react'; import type { PhoneCodeChannel, PhoneCodeChannelData, SignUpResource } from '@clerk/shared/types'; import React from 'react'; -import { isClerkAPIResponseError } from '@/index.headless'; +import { isClerkAPIResponseError } from '@clerk/shared/error'; import { Card } from '@/ui/elements/Card'; import { useCardState, withCardStateProvider } from '@/ui/elements/contexts'; import { Header } from '@/ui/elements/Header'; @@ -15,8 +17,6 @@ import type { FormControlState } from '@/ui/utils/useFormControl'; import { buildRequest, useFormControl } from '@/ui/utils/useFormControl'; import { createUsernameError } from '@/ui/utils/usernameUtils'; -import { ERROR_CODES, SIGN_UP_MODES } from '../../../core/constants'; -import { getClerkQueryParam, removeClerkQueryParam } from '../../../utils/getClerkQueryParam'; import { withRedirectToAfterSignUp, withRedirectToSignUpTask } from '../../common'; import { SignInContext, useCoreSignUp, useEnvironment, useSignUpContext } from '../../contexts'; import { descriptors, Flex, Flow, localizationKeys, useAppearance, useLocalizations } from '../../customizables'; diff --git a/packages/ui/src/components/SignUp/SignUpVerificationCodeForm.tsx b/packages/ui/src/components/SignUp/SignUpVerificationCodeForm.tsx index 2f2d2780476..4ca48081849 100644 --- a/packages/ui/src/components/SignUp/SignUpVerificationCodeForm.tsx +++ b/packages/ui/src/components/SignUp/SignUpVerificationCodeForm.tsx @@ -1,3 +1,4 @@ +import { forwardClerkQueryParams } from '@clerk/shared/internal/clerk-js/queryParams'; import { useClerk } from '@clerk/shared/react'; import type { SignUpResource } from '@clerk/shared/types'; import React from 'react'; @@ -5,7 +6,6 @@ import React from 'react'; import type { VerificationCodeCardProps } from '@/ui/elements/VerificationCodeCard'; import { VerificationCodeCard } from '@/ui/elements/VerificationCodeCard'; -import { forwardClerkQueryParams } from '../../../utils/getClerkQueryParam'; import { SignInContext, useSignUpContext } from '../../contexts'; import type { LocalizationKey } from '../../customizables'; import { useRouter } from '../../router'; diff --git a/packages/ui/src/components/SignUp/util.ts b/packages/ui/src/components/SignUp/util.ts index 343a9bcaccc..40b6ba358e7 100644 --- a/packages/ui/src/components/SignUp/util.ts +++ b/packages/ui/src/components/SignUp/util.ts @@ -1 +1 @@ -export * from '../../../utils/completeSignUpFlow'; +export { completeSignUpFlow } from '../../../utils'; diff --git a/packages/ui/src/components/Statements/StatementsList.tsx b/packages/ui/src/components/Statements/StatementsList.tsx index 5b3c852176a..6b6b757c83b 100644 --- a/packages/ui/src/components/Statements/StatementsList.tsx +++ b/packages/ui/src/components/Statements/StatementsList.tsx @@ -1,9 +1,9 @@ import type { BillingStatementResource } from '@clerk/shared/types'; +import { useStatements, useSubscriberTypeLocalizationRoot } from '@/contexts'; import { DataTable, DataTableRow } from '@/ui/elements/DataTable'; import { formatDate } from '@/ui/utils/formatDate'; -import { useStatements, useSubscriberTypeLocalizationRoot } from '../../../ui/contexts'; import { localizationKeys, Td, Text } from '../../customizables'; import { useRouter } from '../../router'; import { truncateWithEndVisible } from '../../utils/truncateTextWithEndVisible'; diff --git a/packages/ui/src/components/UserButton/SessionActions.tsx b/packages/ui/src/components/UserButton/SessionActions.tsx index 7b09f4f38eb..cd2ec7e9d9d 100644 --- a/packages/ui/src/components/UserButton/SessionActions.tsx +++ b/packages/ui/src/components/UserButton/SessionActions.tsx @@ -1,11 +1,11 @@ import type { SignedInSessionResource } from '@clerk/shared/types'; +import type { ElementDescriptor, ElementId } from '@/customizables/elementDescriptors'; +import { useRouter } from '@/router'; import { Action, Actions, SmallAction, SmallActions } from '@/ui/elements/Actions'; import { PreviewButton } from '@/ui/elements/PreviewButton'; import { UserPreview } from '@/ui/elements/UserPreview'; -import type { ElementDescriptor, ElementId } from '../../../ui/customizables/elementDescriptors'; -import { useRouter } from '../../../ui/router'; import { USER_BUTTON_ITEM_ID } from '../../constants'; import { useUserButtonContext } from '../../contexts'; import type { LocalizationKey } from '../../customizables'; diff --git a/packages/ui/src/components/UserButton/UserButtonTopLevelIdentifier.tsx b/packages/ui/src/components/UserButton/UserButtonTopLevelIdentifier.tsx index a48c5ad40ee..1800efb4a69 100644 --- a/packages/ui/src/components/UserButton/UserButtonTopLevelIdentifier.tsx +++ b/packages/ui/src/components/UserButton/UserButtonTopLevelIdentifier.tsx @@ -1,6 +1,6 @@ +import { getFullName, getIdentifier } from '@clerk/shared/internal/clerk-js/user'; import { useUser } from '@clerk/shared/react'; -import { getFullName, getIdentifier } from '../../../utils/user'; import { descriptors, Text } from '../../customizables'; type UserButtonTopLevelIdentifierProps = { diff --git a/packages/ui/src/components/UserButton/useMultisessionActions.tsx b/packages/ui/src/components/UserButton/useMultisessionActions.tsx index cb6e110363c..c2e7ecc8056 100644 --- a/packages/ui/src/components/UserButton/useMultisessionActions.tsx +++ b/packages/ui/src/components/UserButton/useMultisessionActions.tsx @@ -1,12 +1,12 @@ import { useClerk } from '@clerk/shared/react'; import type { SignedInSessionResource, UserButtonProps, UserResource } from '@clerk/shared/types'; -import { navigateIfTaskExists } from '@/core/sessionTasks'; +import { navigateIfTaskExists } from '@clerk/shared/internal/clerk-js/sessionTasks'; import { useEnvironment } from '@/ui/contexts'; import { useCardState } from '@/ui/elements/contexts'; import { sleep } from '@/ui/utils/sleep'; -import { windowNavigate } from '../../../utils/windowNavigate'; +import { windowNavigate } from '../../../utils'; import { useMultipleSessions } from '../../hooks/useMultipleSessions'; import { useRouter } from '../../router'; diff --git a/packages/ui/src/components/UserProfile/ConnectedAccountsMenu.tsx b/packages/ui/src/components/UserProfile/ConnectedAccountsMenu.tsx index c5f1fa8c65e..c821739d1ef 100644 --- a/packages/ui/src/components/UserProfile/ConnectedAccountsMenu.tsx +++ b/packages/ui/src/components/UserProfile/ConnectedAccountsMenu.tsx @@ -1,3 +1,4 @@ +import { appendModalState } from '@clerk/shared/internal/clerk-js/queryStateParams'; import { useReverification, useUser } from '@clerk/shared/react'; import type { OAuthProvider, OAuthStrategy } from '@clerk/shared/types'; @@ -6,7 +7,6 @@ import { ProfileSection } from '@/ui/elements/Section'; import { handleError } from '@/ui/utils/errorHandler'; import { sleep } from '@/ui/utils/sleep'; -import { appendModalState } from '../../../utils'; import { ProviderInitialIcon } from '../../common'; import { useUserProfileContext } from '../../contexts'; import { descriptors, Image, localizationKeys } from '../../customizables'; diff --git a/packages/ui/src/components/UserProfile/ConnectedAccountsSection.tsx b/packages/ui/src/components/UserProfile/ConnectedAccountsSection.tsx index b26c7e2787d..f6da19c683b 100644 --- a/packages/ui/src/components/UserProfile/ConnectedAccountsSection.tsx +++ b/packages/ui/src/components/UserProfile/ConnectedAccountsSection.tsx @@ -1,3 +1,4 @@ +import { appendModalState } from '@clerk/shared/internal/clerk-js/queryStateParams'; import { useReverification, useUser } from '@clerk/shared/react'; import type { ExternalAccountResource, OAuthProvider, OAuthScope, OAuthStrategy } from '@clerk/shared/types'; import { Fragment, useState } from 'react'; @@ -8,7 +9,6 @@ import { ProfileSection } from '@/ui/elements/Section'; import { ThreeDotsMenu } from '@/ui/elements/ThreeDotsMenu'; import { handleError } from '@/ui/utils/errorHandler'; -import { appendModalState } from '../../../utils'; import { ProviderInitialIcon } from '../../common'; import { useUserProfileContext } from '../../contexts'; import { Box, Button, descriptors, Flex, Image, localizationKeys, Text } from '../../customizables'; diff --git a/packages/ui/src/components/UserProfile/MfaBackupCodeList.tsx b/packages/ui/src/components/UserProfile/MfaBackupCodeList.tsx index c94fb66c146..898ee2bade5 100644 --- a/packages/ui/src/components/UserProfile/MfaBackupCodeList.tsx +++ b/packages/ui/src/components/UserProfile/MfaBackupCodeList.tsx @@ -1,6 +1,6 @@ +import { getIdentifier } from '@clerk/shared/internal/clerk-js/user'; import { useUser } from '@clerk/shared/react'; -import { getIdentifier } from '../../../utils/user'; import { PrintableComponent, usePrintable } from '../../common'; import { useEnvironment } from '../../contexts'; import type { LocalizationKey } from '../../customizables'; diff --git a/packages/ui/src/components/UserProfile/PasswordForm.tsx b/packages/ui/src/components/UserProfile/PasswordForm.tsx index b788afb405f..115c391f310 100644 --- a/packages/ui/src/components/UserProfile/PasswordForm.tsx +++ b/packages/ui/src/components/UserProfile/PasswordForm.tsx @@ -35,6 +35,7 @@ const generateSuccessPageText = (userHasPassword: boolean, sessionSignOut: boole type PasswordFormProps = FormProps; export const PasswordForm = withCardStateProvider((props: PasswordFormProps) => { + const { t, locale } = useLocalizations(); const { onSuccess, onReset } = props; const { user } = useUser(); const updatePasswordWithReverification = useReverification( @@ -95,8 +96,6 @@ export const PasswordForm = withCardStateProvider((props: PasswordFormProps) => confirmPasswordField: confirmField, }); - const { t, locale } = useLocalizations(); - const canSubmit = (currentPasswordRequired ? currentPasswordField.value && isPasswordMatch : isPasswordMatch) && passwordField.value && diff --git a/packages/ui/src/components/UserProfile/VerifyWithEnterpriseConnection.tsx b/packages/ui/src/components/UserProfile/VerifyWithEnterpriseConnection.tsx index cd5223f4a68..a85d0388b01 100644 --- a/packages/ui/src/components/UserProfile/VerifyWithEnterpriseConnection.tsx +++ b/packages/ui/src/components/UserProfile/VerifyWithEnterpriseConnection.tsx @@ -1,12 +1,12 @@ +import { appendModalState } from '@clerk/shared/internal/clerk-js/queryStateParams'; import type { EmailAddressResource } from '@clerk/shared/types'; import React from 'react'; +import { useRouter } from '@/router'; import { useCardState } from '@/ui/elements/contexts'; import { FormButtonContainer } from '@/ui/elements/FormButtons'; import { handleError } from '@/ui/utils/errorHandler'; -import { useRouter } from '../../../ui/router'; -import { appendModalState } from '../../../utils'; import { useUserProfileContext } from '../../contexts'; import { Button, descriptors, Flex, localizationKeys } from '../../customizables'; import { useEnterpriseSSOLink } from '../../hooks'; diff --git a/packages/ui/src/components/UserVerification/use-after-verification.ts b/packages/ui/src/components/UserVerification/use-after-verification.ts index 27b4fb3e875..0507452dd28 100644 --- a/packages/ui/src/components/UserVerification/use-after-verification.ts +++ b/packages/ui/src/components/UserVerification/use-after-verification.ts @@ -1,8 +1,8 @@ +import { clerkInvalidFAPIResponse } from '@clerk/shared/internal/clerk-js/errors'; import { useClerk } from '@clerk/shared/react'; import type { SessionVerificationResource } from '@clerk/shared/types'; import { useCallback } from 'react'; -import { clerkInvalidFAPIResponse } from '../../../core/errors'; import { useUserVerification } from '../../contexts'; import { useSupportEmail } from '../../hooks/useSupportEmail'; import { useRouter } from '../../router'; diff --git a/packages/ui/src/contexts/components/Checkout.ts b/packages/ui/src/contexts/components/Checkout.ts index 394fd243507..e9173d4d1b8 100644 --- a/packages/ui/src/contexts/components/Checkout.ts +++ b/packages/ui/src/contexts/components/Checkout.ts @@ -1,7 +1,7 @@ +import { isAllowedRedirect } from '@clerk/shared/internal/clerk-js/url'; import { useClerk } from '@clerk/shared/react'; import { createContext, useContext, useMemo } from 'react'; -import { isAllowedRedirect } from '../../../utils'; import type { CheckoutCtx } from '../../types'; import { useOptions } from '../OptionsContext'; diff --git a/packages/ui/src/contexts/components/GoogleOneTap.ts b/packages/ui/src/contexts/components/GoogleOneTap.ts index 6f46e2c4760..c87bb7a06f3 100644 --- a/packages/ui/src/contexts/components/GoogleOneTap.ts +++ b/packages/ui/src/contexts/components/GoogleOneTap.ts @@ -1,7 +1,7 @@ +import { buildURL } from '@clerk/shared/internal/clerk-js/url'; import type { HandleOAuthCallbackParams } from '@clerk/shared/types'; import { createContext, useCallback, useContext } from 'react'; -import { buildURL } from '../../../utils'; import { RedirectUrls } from '../../../utils/redirectUrls'; import { useEnvironment, useOptions } from '../../contexts'; import { useRouter } from '../../router'; diff --git a/packages/ui/src/contexts/components/SignIn.ts b/packages/ui/src/contexts/components/SignIn.ts index ef07c2f095f..c98cb0cc955 100644 --- a/packages/ui/src/contexts/components/SignIn.ts +++ b/packages/ui/src/contexts/components/SignIn.ts @@ -1,12 +1,12 @@ +import { SIGN_IN_INITIAL_VALUE_KEYS } from '@clerk/shared/internal/clerk-js/constants'; +import { buildURL } from '@clerk/shared/internal/clerk-js/url'; import { useClerk } from '@clerk/shared/react'; import type { SessionResource } from '@clerk/shared/types'; import { isAbsoluteUrl } from '@clerk/shared/url'; import { createContext, useContext, useMemo } from 'react'; -import { getTaskEndpoint } from '@/core/sessionTasks'; +import { getTaskEndpoint } from '@clerk/shared/internal/clerk-js/sessionTasks'; -import { SIGN_IN_INITIAL_VALUE_KEYS } from '../../../core/constants'; -import { buildURL } from '../../../utils'; import { RedirectUrls } from '../../../utils/redirectUrls'; import { buildRedirectUrl, MAGIC_LINK_VERIFY_PATH_ROUTE, SSO_CALLBACK_PATH_ROUTE } from '../../common/redirects'; import { useEnvironment, useOptions } from '../../contexts'; diff --git a/packages/ui/src/contexts/components/SignUp.ts b/packages/ui/src/contexts/components/SignUp.ts index 783b610918b..5dd9f4bf0eb 100644 --- a/packages/ui/src/contexts/components/SignUp.ts +++ b/packages/ui/src/contexts/components/SignUp.ts @@ -1,12 +1,12 @@ +import { SIGN_UP_INITIAL_VALUE_KEYS } from '@clerk/shared/internal/clerk-js/constants'; +import { buildURL } from '@clerk/shared/internal/clerk-js/url'; import { useClerk } from '@clerk/shared/react'; import type { SessionResource } from '@clerk/shared/types'; import { isAbsoluteUrl } from '@clerk/shared/url'; import { createContext, useContext, useMemo } from 'react'; -import { getTaskEndpoint, INTERNAL_SESSION_TASK_ROUTE_BY_KEY } from '@/core/sessionTasks'; +import { getTaskEndpoint, INTERNAL_SESSION_TASK_ROUTE_BY_KEY } from '@clerk/shared/internal/clerk-js/sessionTasks'; -import { SIGN_UP_INITIAL_VALUE_KEYS } from '../../../core/constants'; -import { buildURL } from '../../../utils'; import { RedirectUrls } from '../../../utils/redirectUrls'; import { buildRedirectUrl, MAGIC_LINK_VERIFY_PATH_ROUTE, SSO_CALLBACK_PATH_ROUTE } from '../../common/redirects'; import { useEnvironment, useOptions } from '../../contexts'; diff --git a/packages/ui/src/contexts/components/Waitlist.ts b/packages/ui/src/contexts/components/Waitlist.ts index 767a37ee12d..eda29b2db08 100644 --- a/packages/ui/src/contexts/components/Waitlist.ts +++ b/packages/ui/src/contexts/components/Waitlist.ts @@ -1,6 +1,6 @@ +import { buildURL } from '@clerk/shared/internal/clerk-js/url'; import { createContext, useContext, useMemo } from 'react'; -import { buildURL } from '../../../utils'; import { useEnvironment, useOptions } from '../../contexts'; import { useRouter } from '../../router'; import type { WaitlistCtx } from '../../types'; diff --git a/packages/ui/src/contexts/utils.ts b/packages/ui/src/contexts/utils.ts index 64293b56c21..423f5151701 100644 --- a/packages/ui/src/contexts/utils.ts +++ b/packages/ui/src/contexts/utils.ts @@ -1,8 +1,11 @@ -import { clerkCoreErrorContextProviderNotFound, clerkCoreErrorNoClerkSingleton } from '@clerk/shared/internal/clerk-js'; +import { + clerkCoreErrorContextProviderNotFound, + clerkCoreErrorNoClerkSingleton, +} from '@clerk/shared/internal/clerk-js/errors'; import type { Clerk } from '@clerk/shared/types'; import { snakeToCamel } from '@clerk/shared/underscore'; -import { createDynamicParamParser } from '../../utils'; +import { createDynamicParamParser } from '../utils/dynamicParamParser'; export function assertClerkSingletonExists(clerk: Clerk | undefined): asserts clerk is Clerk { if (!clerk) { diff --git a/packages/ui/src/customizables/makeResponsive.tsx b/packages/ui/src/customizables/makeResponsive.tsx index 128a4a59c2b..103216988b3 100644 --- a/packages/ui/src/customizables/makeResponsive.tsx +++ b/packages/ui/src/customizables/makeResponsive.tsx @@ -1,7 +1,6 @@ +import { isDataUri, isValidUrl } from '@clerk/shared/internal/clerk-js/url'; import React from 'react'; -import { isDataUri, isValidUrl } from '../../utils'; - type Responsive> = T & { size?: number; xDescriptors?: number[]; diff --git a/packages/ui/src/elements/Animated.tsx b/packages/ui/src/elements/Animated.tsx index e1f8e0f477c..6a7598cfa46 100644 --- a/packages/ui/src/elements/Animated.tsx +++ b/packages/ui/src/elements/Animated.tsx @@ -1,7 +1,7 @@ import { useAutoAnimate } from '@formkit/auto-animate/react'; import { cloneElement, type PropsWithChildren } from 'react'; -import { useAppearance } from '../../ui/customizables'; +import { useAppearance } from '@/customizables'; type AnimatedProps = PropsWithChildren<{ asChild?: boolean }>; diff --git a/packages/ui/src/elements/LegalConsentCheckbox.tsx b/packages/ui/src/elements/LegalConsentCheckbox.tsx index f4ae0de0597..e9ae27b16d4 100644 --- a/packages/ui/src/elements/LegalConsentCheckbox.tsx +++ b/packages/ui/src/elements/LegalConsentCheckbox.tsx @@ -1,4 +1,5 @@ -import { useEnvironment } from '../../ui/contexts'; +import { useEnvironment } from '@/contexts'; + import type { LocalizationKey } from '../customizables'; import { descriptors, diff --git a/packages/ui/src/elements/PasswordInput.tsx b/packages/ui/src/elements/PasswordInput.tsx index 0b96e5c7f0f..a0da4cd8f84 100644 --- a/packages/ui/src/elements/PasswordInput.tsx +++ b/packages/ui/src/elements/PasswordInput.tsx @@ -1,4 +1,4 @@ -import { DEBOUNCE_MS } from '@clerk/shared/internal/clerk-js'; +import { DEBOUNCE_MS } from '@clerk/shared/internal/clerk-js/constants'; import type { ClerkAPIError } from '@clerk/shared/types'; import type { ChangeEvent } from 'react'; import React, { forwardRef, useRef, useState } from 'react'; diff --git a/packages/ui/src/elements/UserAvatar.tsx b/packages/ui/src/elements/UserAvatar.tsx index 58137b16683..5f406ec4ae4 100644 --- a/packages/ui/src/elements/UserAvatar.tsx +++ b/packages/ui/src/elements/UserAvatar.tsx @@ -1,6 +1,6 @@ +import { getFullName, getInitials } from '@clerk/shared/internal/clerk-js/user'; import type { UserResource } from '@clerk/shared/types'; -import { getFullName, getInitials } from '../../utils/user'; import type { PropsOfComponent } from '../styledSystem'; import { Avatar } from './Avatar'; diff --git a/packages/ui/src/elements/UserPreview.tsx b/packages/ui/src/elements/UserPreview.tsx index 94cb280d73f..a1c67ac9bc8 100644 --- a/packages/ui/src/elements/UserPreview.tsx +++ b/packages/ui/src/elements/UserPreview.tsx @@ -1,7 +1,7 @@ +import { getFullName, getIdentifier } from '@clerk/shared/internal/clerk-js/user'; import type { ExternalAccountResource, SamlAccountResource, UserPreviewId, UserResource } from '@clerk/shared/types'; import React from 'react'; -import { getFullName, getIdentifier } from '../../utils/user'; import type { LocalizationKey } from '../customizables'; import { descriptors, Flex, Text, useLocalizations } from '../customizables'; import type { InternalTheme, PropsOfComponent, ThemableCssProp } from '../styledSystem'; diff --git a/packages/ui/src/hooks/useClerkModalStateParams.tsx b/packages/ui/src/hooks/useClerkModalStateParams.tsx index 6c30c6b6385..9a1a3eec21f 100644 --- a/packages/ui/src/hooks/useClerkModalStateParams.tsx +++ b/packages/ui/src/hooks/useClerkModalStateParams.tsx @@ -1,8 +1,8 @@ -import { CLERK_MODAL_STATE } from '@clerk/shared/internal/clerk-js'; +import { CLERK_MODAL_STATE } from '@clerk/shared/internal/clerk-js/constants'; +import { removeClerkQueryParam } from '@clerk/shared/internal/clerk-js/queryParams'; +import { readStateParam } from '@clerk/shared/internal/clerk-js/queryStateParams'; import React from 'react'; -import { readStateParam, removeClerkQueryParam } from '../../utils'; - export const useClerkModalStateParams = () => { const [state, setState] = React.useState({ startPath: '', path: '', componentName: '', socialProvider: '' }); const decodedRedirectParams = readStateParam(); diff --git a/packages/ui/src/hooks/usePassword.ts b/packages/ui/src/hooks/usePassword.ts index aee9553081d..17029308599 100644 --- a/packages/ui/src/hooks/usePassword.ts +++ b/packages/ui/src/hooks/usePassword.ts @@ -1,11 +1,12 @@ +import type { UsePasswordCbs, UsePasswordConfig } from '@clerk/shared/internal/clerk-js/passwords/password'; +import { createValidatePassword } from '@clerk/shared/internal/clerk-js/passwords/password'; import type { PasswordValidation } from '@clerk/shared/types'; import { noop } from '@clerk/shared/utils'; import { useCallback, useMemo } from 'react'; -import type { UsePasswordCbs, UsePasswordConfig } from '../../utils/passwords/password'; -import { createValidatePassword } from '../../utils/passwords/password'; import { localizationKeys, useLocalizations } from '../localization'; import type { FormControlState } from '../utils/useFormControl'; +import { loadZxcvbn } from '../utils/zxcvbn'; import { generateErrorTextUtil } from './usePasswordComplexity'; export const usePassword = (config: UsePasswordConfig, callbacks?: UsePasswordCbs) => { @@ -63,11 +64,11 @@ export const usePassword = (config: UsePasswordConfig, callbacks?: UsePasswordCb ); const validatePassword = useMemo(() => { - return createValidatePassword(config, { + return createValidatePassword(loadZxcvbn, config, { onValidation: onValidate, onValidationComplexity, }); - }, [onValidate]); + }, [onValidate, config]); return { validatePassword, diff --git a/packages/ui/src/hooks/usePasswordComplexity.ts b/packages/ui/src/hooks/usePasswordComplexity.ts index 1a676e56321..c97a298a1a0 100644 --- a/packages/ui/src/hooks/usePasswordComplexity.ts +++ b/packages/ui/src/hooks/usePasswordComplexity.ts @@ -1,7 +1,10 @@ +import type { + ComplexityErrors, + UsePasswordComplexityConfig, +} from '@clerk/shared/internal/clerk-js/passwords/complexity'; +import { validate } from '@clerk/shared/internal/clerk-js/passwords/complexity'; import { useCallback, useEffect, useMemo, useState } from 'react'; -import type { ComplexityErrors, UsePasswordComplexityConfig } from '../../utils/passwords/complexity'; -import { validate } from '../../utils/passwords/complexity'; import type { LocalizationKey } from '../localization'; import { localizationKeys, useLocalizations } from '../localization'; import { addFullStop, createListFormat } from '../utils/passwordUtils'; @@ -77,7 +80,7 @@ export const usePasswordComplexity = (config: UsePasswordComplexityConfig) => { return generateErrorTextUtil({ config, t, - locale, + locale: locale || 'en', failedValidations, }); }, diff --git a/packages/ui/src/localization/makeLocalizable.tsx b/packages/ui/src/localization/makeLocalizable.tsx index d3dd4506905..f259e490e8f 100644 --- a/packages/ui/src/localization/makeLocalizable.tsx +++ b/packages/ui/src/localization/makeLocalizable.tsx @@ -103,7 +103,7 @@ export const useLocalizations = () => { ); }; - return { t, translateError, locale: localization?.locale || defaultResource?.locale }; + return { t, translateError, locale: localization?.locale || (defaultResource.locale as string) }; }; const localizationKeyAttribute = (localizationKey: LocalizationKey) => { diff --git a/packages/ui/src/portal/index.tsx b/packages/ui/src/portal/index.tsx index 7105b571771..ab0958c08ce 100644 --- a/packages/ui/src/portal/index.tsx +++ b/packages/ui/src/portal/index.tsx @@ -1,4 +1,5 @@ -import { clerkErrorPathRouterMissingPath, PRESERVED_QUERYSTRING_PARAMS } from '@clerk/shared/internal/clerk-js'; +import { PRESERVED_QUERYSTRING_PARAMS } from '@clerk/shared/internal/clerk-js/constants'; +import { clerkErrorPathRouterMissingPath } from '@clerk/shared/internal/clerk-js/errors'; import type { RoutingOptions } from '@clerk/shared/types'; import React, { Suspense } from 'react'; import ReactDOM from 'react-dom'; diff --git a/packages/ui/src/primitives/Link.tsx b/packages/ui/src/primitives/Link.tsx index c724e659779..0709cb54e2b 100644 --- a/packages/ui/src/primitives/Link.tsx +++ b/packages/ui/src/primitives/Link.tsx @@ -1,6 +1,6 @@ +import { sanitizeHref } from '@clerk/shared/internal/clerk-js/url'; import React from 'react'; -import { sanitizeHref } from '../../utils/url'; import type { PrimitiveProps, StyleVariants } from '../styledSystem'; import { common, createVariants } from '../styledSystem'; import { applyDataStateProps } from './applyDataStateProps'; diff --git a/packages/ui/src/primitives/NotificationBadge.tsx b/packages/ui/src/primitives/NotificationBadge.tsx index 0a26006424a..f0ff913f8bc 100644 --- a/packages/ui/src/primitives/NotificationBadge.tsx +++ b/packages/ui/src/primitives/NotificationBadge.tsx @@ -38,7 +38,7 @@ const { applyVariants, filterProps } = createVariants(theme => ({ }, })); -// @ts-ignore +// @ts-ignore noop export type NotificationBadgeProps = PropsOfComponent & StyleVariants; export const NotificationBadge = (props: NotificationBadgeProps) => { diff --git a/packages/ui/src/router/BaseRouter.tsx b/packages/ui/src/router/BaseRouter.tsx index 734fc138937..a83e384cb34 100644 --- a/packages/ui/src/router/BaseRouter.tsx +++ b/packages/ui/src/router/BaseRouter.tsx @@ -1,8 +1,9 @@ +import { getQueryParams, stringifyQueryParams } from '@clerk/shared/internal/clerk-js/querystring'; +import { trimTrailingSlash } from '@clerk/shared/internal/clerk-js/url'; import { useClerk } from '@clerk/shared/react'; import type { NavigateOptions } from '@clerk/shared/types'; import React from 'react'; -import { getQueryParams, stringifyQueryParams, trimTrailingSlash } from '../../utils'; import { useWindowEventListener } from '../hooks'; import { newPaths } from './newPaths'; import { match } from './pathToRegexp'; diff --git a/packages/ui/src/router/HashRouter.tsx b/packages/ui/src/router/HashRouter.tsx index 0e44a73f39e..7cb7e4decfb 100644 --- a/packages/ui/src/router/HashRouter.tsx +++ b/packages/ui/src/router/HashRouter.tsx @@ -1,6 +1,6 @@ +import { hasUrlInFragment, stripOrigin } from '@clerk/shared/internal/clerk-js/url'; import React from 'react'; -import { hasUrlInFragment, stripOrigin } from '../../utils'; import { BaseRouter } from './BaseRouter'; export const hashRouterBase = 'CLERK-ROUTER/HASH'; diff --git a/packages/ui/src/router/PathRouter.tsx b/packages/ui/src/router/PathRouter.tsx index c34f5a404b0..e5662a22e7d 100644 --- a/packages/ui/src/router/PathRouter.tsx +++ b/packages/ui/src/router/PathRouter.tsx @@ -1,8 +1,8 @@ +import { hasUrlInFragment, mergeFragmentIntoUrl, stripOrigin } from '@clerk/shared/internal/clerk-js/url'; import { useClerk } from '@clerk/shared/react'; import type { NavigateOptions } from '@clerk/shared/types'; import React from 'react'; -import { hasUrlInFragment, mergeFragmentIntoUrl, stripOrigin } from '../../utils'; import { BaseRouter } from './BaseRouter'; interface PathRouterProps { diff --git a/packages/ui/src/router/Route.tsx b/packages/ui/src/router/Route.tsx index c2d7ea16f2f..d331ad0ecf2 100644 --- a/packages/ui/src/router/Route.tsx +++ b/packages/ui/src/router/Route.tsx @@ -1,8 +1,8 @@ +import { pathFromFullPath, trimTrailingSlash } from '@clerk/shared/internal/clerk-js/url'; import { useClerk } from '@clerk/shared/react'; import type { LoadedClerk } from '@clerk/shared/types'; import React from 'react'; -import { pathFromFullPath, trimTrailingSlash } from '../../utils'; import { useNavigateToFlowStart } from '../hooks'; import { newPaths } from './newPaths'; import { match } from './pathToRegexp'; diff --git a/packages/ui/src/router/__tests__/HashRouter.test.tsx b/packages/ui/src/router/__tests__/HashRouter.test.tsx index 4fab74225c7..edbbae543f0 100644 --- a/packages/ui/src/router/__tests__/HashRouter.test.tsx +++ b/packages/ui/src/router/__tests__/HashRouter.test.tsx @@ -3,7 +3,7 @@ import userEvent from '@testing-library/user-event'; import React from 'react'; import { afterAll, beforeAll, beforeEach, describe, expect, it, vi } from 'vitest'; -import type { Clerk } from '../../../core/clerk'; +import type { Clerk } from '@clerk/shared/types'; import { HashRouter, Route, useRouter } from '..'; const mockNavigate = vi.fn(); diff --git a/packages/ui/src/router/__tests__/PathRouter.test.tsx b/packages/ui/src/router/__tests__/PathRouter.test.tsx index 90ab5eae5d6..bcaa066f449 100644 --- a/packages/ui/src/router/__tests__/PathRouter.test.tsx +++ b/packages/ui/src/router/__tests__/PathRouter.test.tsx @@ -3,7 +3,7 @@ import userEvent from '@testing-library/user-event'; import React from 'react'; import { afterAll, beforeAll, beforeEach, describe, expect, it, vi } from 'vitest'; -import type { Clerk } from '../../../core/clerk'; +import type { Clerk } from '@clerk/shared/types'; import { PathRouter, Route, useRouter } from '..'; const mockNavigate = vi.fn(); diff --git a/packages/clerk-js/src/utils/__tests__/dynamicParamParser.test.ts b/packages/ui/src/utils/__tests__/dynamicParamParser.test.ts similarity index 100% rename from packages/clerk-js/src/utils/__tests__/dynamicParamParser.test.ts rename to packages/ui/src/utils/__tests__/dynamicParamParser.test.ts diff --git a/packages/ui/src/utils/captcha/constants.ts b/packages/ui/src/utils/captcha/constants.ts new file mode 100644 index 00000000000..cca89be0467 --- /dev/null +++ b/packages/ui/src/utils/captcha/constants.ts @@ -0,0 +1 @@ +export const CAPTCHA_ELEMENT_ID = 'clerk-captcha'; diff --git a/packages/clerk-js/src/utils/dynamicParamParser.ts b/packages/ui/src/utils/dynamicParamParser.ts similarity index 100% rename from packages/clerk-js/src/utils/dynamicParamParser.ts rename to packages/ui/src/utils/dynamicParamParser.ts diff --git a/packages/ui/src/utils/normalizeRoutingOptions.ts b/packages/ui/src/utils/normalizeRoutingOptions.ts index 9d18688b989..43bb1a2fe46 100644 --- a/packages/ui/src/utils/normalizeRoutingOptions.ts +++ b/packages/ui/src/utils/normalizeRoutingOptions.ts @@ -1,7 +1,6 @@ +import { clerkInvalidRoutingStrategy } from '@clerk/shared/internal/clerk-js/errors'; import type { RoutingOptions, RoutingStrategy } from '@clerk/shared/types'; -import { clerkInvalidRoutingStrategy } from '../core/errors'; - export const normalizeRoutingOptions = ({ routing, path, diff --git a/packages/ui/src/utils/sanitizeCustomLinkURL.ts b/packages/ui/src/utils/sanitizeCustomLinkURL.ts index ed582657a6b..04455a11f1d 100644 --- a/packages/ui/src/utils/sanitizeCustomLinkURL.ts +++ b/packages/ui/src/utils/sanitizeCustomLinkURL.ts @@ -1,4 +1,4 @@ -import { isValidUrl } from '../../utils'; +import { isValidUrl } from '@clerk/shared/internal/clerk-js/url'; export const sanitizeCustomLinkURL = (url: string): string => { if (!url) { diff --git a/packages/ui/src/utils/zxcvbn.ts b/packages/ui/src/utils/zxcvbn.ts new file mode 100644 index 00000000000..9a5f38fc288 --- /dev/null +++ b/packages/ui/src/utils/zxcvbn.ts @@ -0,0 +1,25 @@ +/** + * This file is duplicated from @clerk/clerk-js/src/utils/zxcvbn.ts + * to allow each package (@clerk/clerk-js and @clerk/ui) to inject + * its own zxcvbn dependency. This avoids cross-package dependencies + * and allows for better tree-shaking and bundle optimization. + */ +import type { ZxcvbnResult } from '@clerk/shared/types'; + +export type zxcvbnFN = (password: string, userInputs?: (string | number)[]) => ZxcvbnResult; + +export const loadZxcvbn = () => { + return Promise.all([import('@zxcvbn-ts/core'), import('@zxcvbn-ts/language-common')]).then( + ([coreModule, languageCommonModule]) => { + const { zxcvbnOptions, zxcvbn } = coreModule; + const { dictionary, adjacencyGraphs } = languageCommonModule; + zxcvbnOptions.setOptions({ + dictionary: { + ...dictionary, + }, + graphs: adjacencyGraphs, + }); + return zxcvbn; + }, + ); +}; diff --git a/packages/ui/tsconfig.json b/packages/ui/tsconfig.json index 2930cbcc9e9..a5284bece2c 100644 --- a/packages/ui/tsconfig.json +++ b/packages/ui/tsconfig.json @@ -14,7 +14,7 @@ "moduleDetection": "force", "module": "preserve", "lib": ["ES2023", "DOM", "WebWorker"], - "jsx": "react", + "jsx": "react-jsx", "isolatedModules": true, "forceConsistentCasingInFileNames": true, "esModuleInterop": true, @@ -30,6 +30,6 @@ "@/ui*": ["./src/*"] } }, - "exclude": ["node_modules"], + "exclude": ["node_modules", "**/*.test.ts", "**/*.test.tsx", "**/*.spec.ts", "**/*.spec.tsx"], "include": ["src", "global.d.ts"] } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5221546b3b0..3d569604f12 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -266,7 +266,7 @@ importers: version: 1.2.2 ts-jest: specifier: 29.2.5 - version: 29.2.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.11)(jest@29.7.0(@types/node@22.18.12)(babel-plugin-macros@3.1.0))(typescript@5.8.3) + version: 29.2.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.28.5))(jest@29.7.0(@types/node@22.18.12)(babel-plugin-macros@3.1.0))(typescript@5.8.3) tsdown: specifier: catalog:repo version: 0.15.7(publint@0.3.15)(typescript@5.8.3) @@ -421,9 +421,6 @@ importers: '@base-org/account': specifier: 2.0.1 version: 2.0.1(@types/react@18.3.26)(react@18.3.1)(typescript@5.8.3)(use-sync-external-store@1.6.0(react@18.3.1))(zod@3.25.76) - '@clerk/localizations': - specifier: workspace:^ - version: link:../localizations '@clerk/shared': specifier: workspace:^ version: link:../shared @@ -478,10 +475,10 @@ importers: version: link:../testing '@rsdoctor/rspack-plugin': specifier: ^0.4.13 - version: 0.4.13(@rspack/core@1.5.8(@swc/helpers@0.5.17))(webpack@5.102.1(esbuild@0.25.11)) + version: 0.4.13(@rspack/core@1.5.8(@swc/helpers@0.5.17))(webpack@5.102.1) '@rspack/cli': specifier: ^1.4.11 - version: 1.5.8(@rspack/core@1.5.8(@swc/helpers@0.5.17))(@types/express@4.17.25)(webpack@5.102.1(esbuild@0.25.11)) + version: 1.5.8(@rspack/core@1.5.8(@swc/helpers@0.5.17))(@types/express@4.17.25)(webpack@5.102.1) '@rspack/core': specifier: ^1.4.11 version: 1.5.8(@swc/helpers@0.5.17) @@ -888,7 +885,7 @@ importers: version: 1.132.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@tanstack/react-start': specifier: 1.132.0 - version: 1.132.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(vite@7.1.12(@types/node@22.18.12)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(webpack@5.102.1(esbuild@0.25.11)) + version: 1.132.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(vite@7.1.12(@types/node@22.18.12)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(webpack@5.102.1) esbuild-plugin-file-path-extensions: specifier: ^2.1.4 version: 2.1.4 @@ -927,6 +924,9 @@ importers: packages/ui: dependencies: + '@clerk/localizations': + specifier: workspace:^ + version: link:../localizations '@clerk/shared': specifier: workspace:^ version: link:../shared @@ -19064,12 +19064,12 @@ snapshots: '@rsdoctor/client@0.4.13': {} - '@rsdoctor/core@0.4.13(@rspack/core@1.5.8(@swc/helpers@0.5.17))(webpack@5.102.1(esbuild@0.25.11))': + '@rsdoctor/core@0.4.13(@rspack/core@1.5.8(@swc/helpers@0.5.17))(webpack@5.102.1)': dependencies: - '@rsdoctor/graph': 0.4.13(@rspack/core@1.5.8(@swc/helpers@0.5.17))(webpack@5.102.1(esbuild@0.25.11)) - '@rsdoctor/sdk': 0.4.13(@rspack/core@1.5.8(@swc/helpers@0.5.17))(webpack@5.102.1(esbuild@0.25.11)) - '@rsdoctor/types': 0.4.13(@rspack/core@1.5.8(@swc/helpers@0.5.17))(webpack@5.102.1(esbuild@0.25.11)) - '@rsdoctor/utils': 0.4.13(@rspack/core@1.5.8(@swc/helpers@0.5.17))(webpack@5.102.1(esbuild@0.25.11)) + '@rsdoctor/graph': 0.4.13(@rspack/core@1.5.8(@swc/helpers@0.5.17))(webpack@5.102.1) + '@rsdoctor/sdk': 0.4.13(@rspack/core@1.5.8(@swc/helpers@0.5.17))(webpack@5.102.1) + '@rsdoctor/types': 0.4.13(@rspack/core@1.5.8(@swc/helpers@0.5.17))(webpack@5.102.1) + '@rsdoctor/utils': 0.4.13(@rspack/core@1.5.8(@swc/helpers@0.5.17))(webpack@5.102.1) axios: 1.13.0 enhanced-resolve: 5.12.0 filesize: 10.1.6 @@ -19087,10 +19087,10 @@ snapshots: - utf-8-validate - webpack - '@rsdoctor/graph@0.4.13(@rspack/core@1.5.8(@swc/helpers@0.5.17))(webpack@5.102.1(esbuild@0.25.11))': + '@rsdoctor/graph@0.4.13(@rspack/core@1.5.8(@swc/helpers@0.5.17))(webpack@5.102.1)': dependencies: - '@rsdoctor/types': 0.4.13(@rspack/core@1.5.8(@swc/helpers@0.5.17))(webpack@5.102.1(esbuild@0.25.11)) - '@rsdoctor/utils': 0.4.13(@rspack/core@1.5.8(@swc/helpers@0.5.17))(webpack@5.102.1(esbuild@0.25.11)) + '@rsdoctor/types': 0.4.13(@rspack/core@1.5.8(@swc/helpers@0.5.17))(webpack@5.102.1) + '@rsdoctor/utils': 0.4.13(@rspack/core@1.5.8(@swc/helpers@0.5.17))(webpack@5.102.1) lodash.unionby: 4.8.0 socket.io: 4.8.1 source-map: 0.7.6 @@ -19101,13 +19101,13 @@ snapshots: - utf-8-validate - webpack - '@rsdoctor/rspack-plugin@0.4.13(@rspack/core@1.5.8(@swc/helpers@0.5.17))(webpack@5.102.1(esbuild@0.25.11))': + '@rsdoctor/rspack-plugin@0.4.13(@rspack/core@1.5.8(@swc/helpers@0.5.17))(webpack@5.102.1)': dependencies: - '@rsdoctor/core': 0.4.13(@rspack/core@1.5.8(@swc/helpers@0.5.17))(webpack@5.102.1(esbuild@0.25.11)) - '@rsdoctor/graph': 0.4.13(@rspack/core@1.5.8(@swc/helpers@0.5.17))(webpack@5.102.1(esbuild@0.25.11)) - '@rsdoctor/sdk': 0.4.13(@rspack/core@1.5.8(@swc/helpers@0.5.17))(webpack@5.102.1(esbuild@0.25.11)) - '@rsdoctor/types': 0.4.13(@rspack/core@1.5.8(@swc/helpers@0.5.17))(webpack@5.102.1(esbuild@0.25.11)) - '@rsdoctor/utils': 0.4.13(@rspack/core@1.5.8(@swc/helpers@0.5.17))(webpack@5.102.1(esbuild@0.25.11)) + '@rsdoctor/core': 0.4.13(@rspack/core@1.5.8(@swc/helpers@0.5.17))(webpack@5.102.1) + '@rsdoctor/graph': 0.4.13(@rspack/core@1.5.8(@swc/helpers@0.5.17))(webpack@5.102.1) + '@rsdoctor/sdk': 0.4.13(@rspack/core@1.5.8(@swc/helpers@0.5.17))(webpack@5.102.1) + '@rsdoctor/types': 0.4.13(@rspack/core@1.5.8(@swc/helpers@0.5.17))(webpack@5.102.1) + '@rsdoctor/utils': 0.4.13(@rspack/core@1.5.8(@swc/helpers@0.5.17))(webpack@5.102.1) '@rspack/core': 1.5.8(@swc/helpers@0.5.17) lodash: 4.17.21 transitivePeerDependencies: @@ -19117,12 +19117,12 @@ snapshots: - utf-8-validate - webpack - '@rsdoctor/sdk@0.4.13(@rspack/core@1.5.8(@swc/helpers@0.5.17))(webpack@5.102.1(esbuild@0.25.11))': + '@rsdoctor/sdk@0.4.13(@rspack/core@1.5.8(@swc/helpers@0.5.17))(webpack@5.102.1)': dependencies: '@rsdoctor/client': 0.4.13 - '@rsdoctor/graph': 0.4.13(@rspack/core@1.5.8(@swc/helpers@0.5.17))(webpack@5.102.1(esbuild@0.25.11)) - '@rsdoctor/types': 0.4.13(@rspack/core@1.5.8(@swc/helpers@0.5.17))(webpack@5.102.1(esbuild@0.25.11)) - '@rsdoctor/utils': 0.4.13(@rspack/core@1.5.8(@swc/helpers@0.5.17))(webpack@5.102.1(esbuild@0.25.11)) + '@rsdoctor/graph': 0.4.13(@rspack/core@1.5.8(@swc/helpers@0.5.17))(webpack@5.102.1) + '@rsdoctor/types': 0.4.13(@rspack/core@1.5.8(@swc/helpers@0.5.17))(webpack@5.102.1) + '@rsdoctor/utils': 0.4.13(@rspack/core@1.5.8(@swc/helpers@0.5.17))(webpack@5.102.1) '@types/fs-extra': 11.0.4 body-parser: 1.20.3 cors: 2.8.5 @@ -19142,20 +19142,20 @@ snapshots: - utf-8-validate - webpack - '@rsdoctor/types@0.4.13(@rspack/core@1.5.8(@swc/helpers@0.5.17))(webpack@5.102.1(esbuild@0.25.11))': + '@rsdoctor/types@0.4.13(@rspack/core@1.5.8(@swc/helpers@0.5.17))(webpack@5.102.1)': dependencies: '@types/connect': 3.4.38 '@types/estree': 1.0.5 '@types/tapable': 2.2.7 source-map: 0.7.6 - webpack: 5.102.1(esbuild@0.25.11) + webpack: 5.102.1 optionalDependencies: '@rspack/core': 1.5.8(@swc/helpers@0.5.17) - '@rsdoctor/utils@0.4.13(@rspack/core@1.5.8(@swc/helpers@0.5.17))(webpack@5.102.1(esbuild@0.25.11))': + '@rsdoctor/utils@0.4.13(@rspack/core@1.5.8(@swc/helpers@0.5.17))(webpack@5.102.1)': dependencies: '@babel/code-frame': 7.25.7 - '@rsdoctor/types': 0.4.13(@rspack/core@1.5.8(@swc/helpers@0.5.17))(webpack@5.102.1(esbuild@0.25.11)) + '@rsdoctor/types': 0.4.13(@rspack/core@1.5.8(@swc/helpers@0.5.17))(webpack@5.102.1) '@types/estree': 1.0.5 acorn: 8.15.0 acorn-import-assertions: 1.9.0(acorn@8.15.0) @@ -19221,11 +19221,11 @@ snapshots: '@rspack/binding-win32-ia32-msvc': 1.5.8 '@rspack/binding-win32-x64-msvc': 1.5.8 - '@rspack/cli@1.5.8(@rspack/core@1.5.8(@swc/helpers@0.5.17))(@types/express@4.17.25)(webpack@5.102.1(esbuild@0.25.11))': + '@rspack/cli@1.5.8(@rspack/core@1.5.8(@swc/helpers@0.5.17))(@types/express@4.17.25)(webpack@5.102.1)': dependencies: '@discoveryjs/json-ext': 0.5.7 '@rspack/core': 1.5.8(@swc/helpers@0.5.17) - '@rspack/dev-server': 1.1.4(@rspack/core@1.5.8(@swc/helpers@0.5.17))(@types/express@4.17.25)(webpack@5.102.1(esbuild@0.25.11)) + '@rspack/dev-server': 1.1.4(@rspack/core@1.5.8(@swc/helpers@0.5.17))(@types/express@4.17.25)(webpack@5.102.1) colorette: 2.0.20 exit-hook: 4.0.0 pirates: 4.0.7 @@ -19248,13 +19248,13 @@ snapshots: optionalDependencies: '@swc/helpers': 0.5.17 - '@rspack/dev-server@1.1.4(@rspack/core@1.5.8(@swc/helpers@0.5.17))(@types/express@4.17.25)(webpack@5.102.1(esbuild@0.25.11))': + '@rspack/dev-server@1.1.4(@rspack/core@1.5.8(@swc/helpers@0.5.17))(@types/express@4.17.25)(webpack@5.102.1)': dependencies: '@rspack/core': 1.5.8(@swc/helpers@0.5.17) chokidar: 3.6.0 http-proxy-middleware: 2.0.9(@types/express@4.17.25) p-retry: 6.2.1 - webpack-dev-server: 5.2.2(webpack@5.102.1(esbuild@0.25.11)) + webpack-dev-server: 5.2.2(webpack@5.102.1) ws: 8.18.3 transitivePeerDependencies: - '@types/express' @@ -19524,14 +19524,14 @@ snapshots: transitivePeerDependencies: - crossws - '@tanstack/react-start@1.132.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(vite@7.1.12(@types/node@22.18.12)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(webpack@5.102.1(esbuild@0.25.11))': + '@tanstack/react-start@1.132.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(vite@7.1.12(@types/node@22.18.12)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(webpack@5.102.1)': dependencies: '@tanstack/react-router': 1.132.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@tanstack/react-start-client': 1.132.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@tanstack/react-start-server': 1.132.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@tanstack/router-utils': 1.133.19 '@tanstack/start-client-core': 1.132.0 - '@tanstack/start-plugin-core': 1.132.0(@tanstack/react-router@1.132.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.1.12(@types/node@22.18.12)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(webpack@5.102.1(esbuild@0.25.11)) + '@tanstack/start-plugin-core': 1.132.0(@tanstack/react-router@1.132.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.1.12(@types/node@22.18.12)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(webpack@5.102.1) pathe: 2.0.3 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -19573,7 +19573,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@tanstack/router-plugin@1.132.0(@tanstack/react-router@1.132.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.1.12(@types/node@22.18.12)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(webpack@5.102.1(esbuild@0.25.11))': + '@tanstack/router-plugin@1.132.0(@tanstack/react-router@1.132.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.1.12(@types/node@22.18.12)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(webpack@5.102.1)': dependencies: '@babel/core': 7.28.5 '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.5) @@ -19592,7 +19592,7 @@ snapshots: optionalDependencies: '@tanstack/react-router': 1.132.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) vite: 7.1.12(@types/node@22.18.12)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) - webpack: 5.102.1(esbuild@0.25.11) + webpack: 5.102.1 transitivePeerDependencies: - supports-color @@ -19647,14 +19647,14 @@ snapshots: tiny-invariant: 1.3.3 tiny-warning: 1.0.3 - '@tanstack/start-plugin-core@1.132.0(@tanstack/react-router@1.132.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.1.12(@types/node@22.18.12)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(webpack@5.102.1(esbuild@0.25.11))': + '@tanstack/start-plugin-core@1.132.0(@tanstack/react-router@1.132.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.1.12(@types/node@22.18.12)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(webpack@5.102.1)': dependencies: '@babel/code-frame': 7.26.2 '@babel/core': 7.28.5 '@babel/types': 7.28.5 '@tanstack/router-core': 1.132.0 '@tanstack/router-generator': 1.132.0 - '@tanstack/router-plugin': 1.132.0(@tanstack/react-router@1.132.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.1.12(@types/node@22.18.12)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(webpack@5.102.1(esbuild@0.25.11)) + '@tanstack/router-plugin': 1.132.0(@tanstack/react-router@1.132.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.1.12(@types/node@22.18.12)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(webpack@5.102.1) '@tanstack/router-utils': 1.132.0 '@tanstack/server-functions-plugin': 1.132.0(vite@7.1.12(@types/node@22.18.12)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) '@tanstack/start-server-core': 1.132.0 @@ -30355,16 +30355,14 @@ snapshots: ansi-escapes: 5.0.0 supports-hyperlinks: 2.3.0 - terser-webpack-plugin@5.3.14(esbuild@0.25.11)(webpack@5.102.1(esbuild@0.25.11)): + terser-webpack-plugin@5.3.14(webpack@5.102.1): dependencies: '@jridgewell/trace-mapping': 0.3.31 jest-worker: 27.5.1 schema-utils: 4.3.3 serialize-javascript: 6.0.2 terser: 5.44.0 - webpack: 5.102.1(esbuild@0.25.11) - optionalDependencies: - esbuild: 0.25.11 + webpack: 5.102.1 terser@5.44.0: dependencies: @@ -30529,7 +30527,7 @@ snapshots: ts-interface-checker@0.1.13: {} - ts-jest@29.2.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.11)(jest@29.7.0(@types/node@22.18.12)(babel-plugin-macros@3.1.0))(typescript@5.8.3): + ts-jest@29.2.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.28.5))(jest@29.7.0(@types/node@22.18.12)(babel-plugin-macros@3.1.0))(typescript@5.8.3): dependencies: bs-logger: 0.2.6 ejs: 3.1.10 @@ -30547,7 +30545,6 @@ snapshots: '@jest/transform': 29.7.0 '@jest/types': 29.6.3 babel-jest: 29.7.0(@babel/core@7.28.5) - esbuild: 0.25.11 tsconfck@3.1.6(typescript@5.8.3): optionalDependencies: @@ -31556,7 +31553,7 @@ snapshots: - bufferutil - utf-8-validate - webpack-dev-middleware@7.4.5(webpack@5.102.1(esbuild@0.25.11)): + webpack-dev-middleware@7.4.5(webpack@5.102.1): dependencies: colorette: 2.0.20 memfs: 4.49.0 @@ -31565,9 +31562,9 @@ snapshots: range-parser: 1.2.1 schema-utils: 4.3.3 optionalDependencies: - webpack: 5.102.1(esbuild@0.25.11) + webpack: 5.102.1 - webpack-dev-server@5.2.2(webpack@5.102.1(esbuild@0.25.11)): + webpack-dev-server@5.2.2(webpack@5.102.1): dependencies: '@types/bonjour': 3.5.13 '@types/connect-history-api-fallback': 1.5.4 @@ -31595,10 +31592,10 @@ snapshots: serve-index: 1.9.1 sockjs: 0.3.24 spdy: 4.0.2 - webpack-dev-middleware: 7.4.5(webpack@5.102.1(esbuild@0.25.11)) + webpack-dev-middleware: 7.4.5(webpack@5.102.1) ws: 8.18.3 optionalDependencies: - webpack: 5.102.1(esbuild@0.25.11) + webpack: 5.102.1 transitivePeerDependencies: - bufferutil - debug @@ -31615,7 +31612,7 @@ snapshots: webpack-virtual-modules@0.6.2: {} - webpack@5.102.1(esbuild@0.25.11): + webpack@5.102.1: dependencies: '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.8 @@ -31639,7 +31636,7 @@ snapshots: neo-async: 2.6.2 schema-utils: 4.3.3 tapable: 2.3.0 - terser-webpack-plugin: 5.3.14(esbuild@0.25.11)(webpack@5.102.1(esbuild@0.25.11)) + terser-webpack-plugin: 5.3.14(webpack@5.102.1) watchpack: 2.4.4 webpack-sources: 3.3.3 transitivePeerDependencies: From 37e0b974f7518aa54e5a628281d4d9274f264a93 Mon Sep 17 00:00:00 2001 From: Nikos Douvlis Date: Sun, 2 Nov 2025 15:19:45 +0200 Subject: [PATCH 05/31] move windowNavigate to shared/internal --- packages/clerk-js/src/core/clerk.ts | 12 ++++++------ packages/clerk-js/src/core/resources/SignIn.ts | 2 +- packages/clerk-js/src/core/resources/SignUp.ts | 2 +- packages/clerk-js/src/utils/beforeUnloadTracker.ts | 2 +- packages/clerk-js/src/utils/index.ts | 2 +- .../src/internal/clerk-js}/windowNavigate.ts | 0 .../components/UserButton/useMultisessionActions.tsx | 4 ++-- 7 files changed, 12 insertions(+), 12 deletions(-) rename packages/{clerk-js/src/utils => shared/src/internal/clerk-js}/windowNavigate.ts (100%) diff --git a/packages/clerk-js/src/core/clerk.ts b/packages/clerk-js/src/core/clerk.ts index 0ca180df037..a64981e72b1 100644 --- a/packages/clerk-js/src/core/clerk.ts +++ b/packages/clerk-js/src/core/clerk.ts @@ -19,7 +19,13 @@ import { noUserExists, } from '@clerk/shared/internal/clerk-js/componentGuards'; import { ERROR_CODES } from '@clerk/shared/internal/clerk-js/constants'; +import { + getTaskEndpoint, + navigateIfTaskExists, + warnMissingPendingTaskHandlers, +} from '@clerk/shared/internal/clerk-js/sessionTasks'; import { warnings } from '@clerk/shared/internal/clerk-js/warnings'; +import { windowNavigate } from '@clerk/shared/internal/clerk-js/windowNavigate'; import { parsePublishableKey } from '@clerk/shared/keys'; import { logger } from '@clerk/shared/logger'; import { CLERK_NETLIFY_CACHE_BUST_PARAM } from '@clerk/shared/netlifyCacheHandler'; @@ -133,7 +139,6 @@ import { removeClerkQueryParam, requiresUserInput, stripOrigin, - windowNavigate, } from '../utils'; import { assertNoLegacyProp } from '../utils/assertNoLegacyProp'; import { CLERK_ENVIRONMENT_STORAGE_ENTRY, SafeLocalStorage } from '../utils/localStorage'; @@ -159,11 +164,6 @@ import { APIKeys } from './modules/apiKeys'; import { Billing } from './modules/billing'; import { createCheckoutInstance } from './modules/checkout/instance'; import { BaseResource, Client, Environment, Organization, Waitlist } from './resources/internal'; -import { - getTaskEndpoint, - navigateIfTaskExists, - warnMissingPendingTaskHandlers, -} from '@clerk/shared/internal/clerk-js/sessionTasks'; import { State } from './state'; type SetActiveHook = (intent?: 'sign-out') => void | Promise; diff --git a/packages/clerk-js/src/core/resources/SignIn.ts b/packages/clerk-js/src/core/resources/SignIn.ts index bcc69c05355..8dd3627544a 100644 --- a/packages/clerk-js/src/core/resources/SignIn.ts +++ b/packages/clerk-js/src/core/resources/SignIn.ts @@ -1,6 +1,7 @@ import { inBrowser } from '@clerk/shared/browser'; import { ClerkWebAuthnError } from '@clerk/shared/error'; import { createValidatePassword } from '@clerk/shared/internal/clerk-js/passwords/password'; +import { windowNavigate } from '@clerk/shared/internal/clerk-js/windowNavigate'; import { Poller } from '@clerk/shared/poller'; import type { AttemptFirstFactorParams, @@ -75,7 +76,6 @@ import { getCoinbaseWalletIdentifier, getMetamaskIdentifier, getOKXWalletIdentifier, - windowNavigate, } from '../../utils'; import { _authenticateWithPopup } from '../../utils/authenticateWithPopup'; import { diff --git a/packages/clerk-js/src/core/resources/SignUp.ts b/packages/clerk-js/src/core/resources/SignUp.ts index a5413a9859b..74437e4982b 100644 --- a/packages/clerk-js/src/core/resources/SignUp.ts +++ b/packages/clerk-js/src/core/resources/SignUp.ts @@ -1,5 +1,6 @@ import { ClerkRuntimeError, isCaptchaError, isClerkAPIResponseError } from '@clerk/shared/error'; import { createValidatePassword } from '@clerk/shared/internal/clerk-js/passwords/password'; +import { windowNavigate } from '@clerk/shared/internal/clerk-js/windowNavigate'; import { Poller } from '@clerk/shared/poller'; import type { AttemptEmailAddressVerificationParams, @@ -54,7 +55,6 @@ import { getCoinbaseWalletIdentifier, getMetamaskIdentifier, getOKXWalletIdentifier, - windowNavigate, } from '../../utils'; import { _authenticateWithPopup } from '../../utils/authenticateWithPopup'; import { CaptchaChallenge } from '../../utils/captcha/CaptchaChallenge'; diff --git a/packages/clerk-js/src/utils/beforeUnloadTracker.ts b/packages/clerk-js/src/utils/beforeUnloadTracker.ts index 59094c63bed..a9ce63b70f1 100644 --- a/packages/clerk-js/src/utils/beforeUnloadTracker.ts +++ b/packages/clerk-js/src/utils/beforeUnloadTracker.ts @@ -1,4 +1,4 @@ -import { CLERK_BEFORE_UNLOAD_EVENT } from './windowNavigate'; +import { CLERK_BEFORE_UNLOAD_EVENT } from '@clerk/shared/internal/clerk-js/windowNavigate'; /** * Tracks beforeUnload events. diff --git a/packages/clerk-js/src/utils/index.ts b/packages/clerk-js/src/utils/index.ts index 349c7d787eb..5ccf0eb286b 100644 --- a/packages/clerk-js/src/utils/index.ts +++ b/packages/clerk-js/src/utils/index.ts @@ -22,4 +22,4 @@ export * from './runtime'; export * from './tokenId'; export * from '@clerk/shared/internal/clerk-js/url'; export * from './web3'; -export * from './windowNavigate'; +export * from '@clerk/shared/internal/clerk-js/windowNavigate'; diff --git a/packages/clerk-js/src/utils/windowNavigate.ts b/packages/shared/src/internal/clerk-js/windowNavigate.ts similarity index 100% rename from packages/clerk-js/src/utils/windowNavigate.ts rename to packages/shared/src/internal/clerk-js/windowNavigate.ts diff --git a/packages/ui/src/components/UserButton/useMultisessionActions.tsx b/packages/ui/src/components/UserButton/useMultisessionActions.tsx index c2e7ecc8056..709fd29ecce 100644 --- a/packages/ui/src/components/UserButton/useMultisessionActions.tsx +++ b/packages/ui/src/components/UserButton/useMultisessionActions.tsx @@ -1,12 +1,12 @@ +import { navigateIfTaskExists } from '@clerk/shared/internal/clerk-js/sessionTasks'; +import { windowNavigate } from '@clerk/shared/internal/clerk-js/windowNavigate'; import { useClerk } from '@clerk/shared/react'; import type { SignedInSessionResource, UserButtonProps, UserResource } from '@clerk/shared/types'; -import { navigateIfTaskExists } from '@clerk/shared/internal/clerk-js/sessionTasks'; import { useEnvironment } from '@/ui/contexts'; import { useCardState } from '@/ui/elements/contexts'; import { sleep } from '@/ui/utils/sleep'; -import { windowNavigate } from '../../../utils'; import { useMultipleSessions } from '../../hooks/useMultipleSessions'; import { useRouter } from '../../router'; From 650241548ba5d4fc4aa30eb5fbb53c84933545fd Mon Sep 17 00:00:00 2001 From: Nikos Douvlis Date: Sun, 2 Nov 2025 19:00:07 +0200 Subject: [PATCH 06/31] move completeSignUpFlow to shared/internal --- packages/clerk-js/src/utils/index.ts | 2 +- .../src/internal/clerk-js}/__tests__/completeSignUpFlow.test.ts | 0 .../src/internal/clerk-js}/completeSignUpFlow.ts | 0 packages/ui/src/common/EmailLinkVerify.tsx | 2 +- packages/ui/src/components/SignUp/util.ts | 2 +- 5 files changed, 3 insertions(+), 3 deletions(-) rename packages/{clerk-js/src/utils => shared/src/internal/clerk-js}/__tests__/completeSignUpFlow.test.ts (100%) rename packages/{clerk-js/src/utils => shared/src/internal/clerk-js}/completeSignUpFlow.ts (100%) diff --git a/packages/clerk-js/src/utils/index.ts b/packages/clerk-js/src/utils/index.ts index 5ccf0eb286b..2b67f91ea33 100644 --- a/packages/clerk-js/src/utils/index.ts +++ b/packages/clerk-js/src/utils/index.ts @@ -1,6 +1,6 @@ export * from './beforeUnloadTracker'; export * from './billing'; -export * from './completeSignUpFlow'; +export * from '@clerk/shared/internal/clerk-js/completeSignUpFlow'; export * from './email'; export * from '@clerk/shared/internal/clerk-js/encoders'; export * from './errors'; diff --git a/packages/clerk-js/src/utils/__tests__/completeSignUpFlow.test.ts b/packages/shared/src/internal/clerk-js/__tests__/completeSignUpFlow.test.ts similarity index 100% rename from packages/clerk-js/src/utils/__tests__/completeSignUpFlow.test.ts rename to packages/shared/src/internal/clerk-js/__tests__/completeSignUpFlow.test.ts diff --git a/packages/clerk-js/src/utils/completeSignUpFlow.ts b/packages/shared/src/internal/clerk-js/completeSignUpFlow.ts similarity index 100% rename from packages/clerk-js/src/utils/completeSignUpFlow.ts rename to packages/shared/src/internal/clerk-js/completeSignUpFlow.ts diff --git a/packages/ui/src/common/EmailLinkVerify.tsx b/packages/ui/src/common/EmailLinkVerify.tsx index 7d6a81f40a9..d188c43940e 100644 --- a/packages/ui/src/common/EmailLinkVerify.tsx +++ b/packages/ui/src/common/EmailLinkVerify.tsx @@ -1,8 +1,8 @@ import { EmailLinkErrorCodeStatus, isEmailLinkError } from '@clerk/shared/error'; +import { completeSignUpFlow } from '@clerk/shared/internal/clerk-js/completeSignUpFlow'; import { useClerk } from '@clerk/shared/react'; import React from 'react'; -import { completeSignUpFlow } from '../../utils'; import { useCoreSignUp } from '../contexts'; import type { LocalizationKey } from '../localization'; import { useRouter } from '../router'; diff --git a/packages/ui/src/components/SignUp/util.ts b/packages/ui/src/components/SignUp/util.ts index 40b6ba358e7..354278861dd 100644 --- a/packages/ui/src/components/SignUp/util.ts +++ b/packages/ui/src/components/SignUp/util.ts @@ -1 +1 @@ -export { completeSignUpFlow } from '../../../utils'; +export { completeSignUpFlow } from '@clerk/shared/internal/clerk-js/completeSignUpFlow'; From ecfdec095c3b2c22fa59f78fec22829378d9d1d9 Mon Sep 17 00:00:00 2001 From: Nikos Douvlis Date: Sun, 2 Nov 2025 19:28:53 +0200 Subject: [PATCH 07/31] move inCrossOriginIframe utility to shared/internal --- .../src/core/auth/cookies/__tests__/clientUat.test.ts | 4 ++-- .../src/core/auth/cookies/__tests__/session.test.ts | 4 ++-- packages/clerk-js/src/core/auth/cookies/clientUat.ts | 2 +- packages/clerk-js/src/core/auth/cookies/devBrowser.ts | 2 +- packages/clerk-js/src/core/auth/cookies/session.ts | 2 +- packages/clerk-js/src/utils/index.ts | 2 +- .../utils => shared/src/internal/clerk-js}/runtime.ts | 0 .../ui/src/utils/__tests__/originPrefersPopup.test.ts | 4 ++-- packages/ui/src/utils/createCustomPages.tsx | 9 ++++----- packages/ui/src/utils/originPrefersPopup.ts | 2 +- 10 files changed, 15 insertions(+), 16 deletions(-) rename packages/{clerk-js/src/utils => shared/src/internal/clerk-js}/runtime.ts (100%) diff --git a/packages/clerk-js/src/core/auth/cookies/__tests__/clientUat.test.ts b/packages/clerk-js/src/core/auth/cookies/__tests__/clientUat.test.ts index 889cca10513..1f48f4e4ee0 100644 --- a/packages/clerk-js/src/core/auth/cookies/__tests__/clientUat.test.ts +++ b/packages/clerk-js/src/core/auth/cookies/__tests__/clientUat.test.ts @@ -1,15 +1,15 @@ import { createCookieHandler } from '@clerk/shared/cookie'; import { addYears } from '@clerk/shared/date'; +import { inCrossOriginIframe } from '@clerk/shared/internal/clerk-js/runtime'; import { beforeEach, describe, expect, it, vi } from 'vitest'; -import { inCrossOriginIframe } from '../../../../utils'; import { getCookieDomain } from '../../getCookieDomain'; import { getSecureAttribute } from '../../getSecureAttribute'; import { createClientUatCookie } from '../clientUat'; vi.mock('@clerk/shared/cookie'); vi.mock('@clerk/shared/date'); -vi.mock('../../../../utils'); +vi.mock('@clerk/shared/internal/clerk-js/runtime'); vi.mock('../../getCookieDomain'); vi.mock('../../getSecureAttribute'); diff --git a/packages/clerk-js/src/core/auth/cookies/__tests__/session.test.ts b/packages/clerk-js/src/core/auth/cookies/__tests__/session.test.ts index 6248d78b9eb..d51bf732de9 100644 --- a/packages/clerk-js/src/core/auth/cookies/__tests__/session.test.ts +++ b/packages/clerk-js/src/core/auth/cookies/__tests__/session.test.ts @@ -1,14 +1,14 @@ import { createCookieHandler } from '@clerk/shared/cookie'; import { addYears } from '@clerk/shared/date'; +import { inCrossOriginIframe } from '@clerk/shared/internal/clerk-js/runtime'; import { beforeEach, describe, expect, it, vi } from 'vitest'; -import { inCrossOriginIframe } from '../../../../utils'; import { getSecureAttribute } from '../../getSecureAttribute'; import { createSessionCookie } from '../session'; vi.mock('@clerk/shared/cookie'); vi.mock('@clerk/shared/date'); -vi.mock('../../../../utils'); +vi.mock('@clerk/shared/internal/clerk-js/runtime'); vi.mock('../../getSecureAttribute'); describe('createSessionCookie', () => { diff --git a/packages/clerk-js/src/core/auth/cookies/clientUat.ts b/packages/clerk-js/src/core/auth/cookies/clientUat.ts index a6d11bdd5a7..20a620938b8 100644 --- a/packages/clerk-js/src/core/auth/cookies/clientUat.ts +++ b/packages/clerk-js/src/core/auth/cookies/clientUat.ts @@ -1,9 +1,9 @@ import { createCookieHandler } from '@clerk/shared/cookie'; import { addYears } from '@clerk/shared/date'; +import { inCrossOriginIframe } from '@clerk/shared/internal/clerk-js/runtime'; import { getSuffixedCookieName } from '@clerk/shared/keys'; import type { ClientResource } from '@clerk/shared/types'; -import { inCrossOriginIframe } from '../../../utils'; import { getCookieDomain } from '../getCookieDomain'; import { getSecureAttribute } from '../getSecureAttribute'; diff --git a/packages/clerk-js/src/core/auth/cookies/devBrowser.ts b/packages/clerk-js/src/core/auth/cookies/devBrowser.ts index 8d1e3475788..ab3f66eb6d4 100644 --- a/packages/clerk-js/src/core/auth/cookies/devBrowser.ts +++ b/packages/clerk-js/src/core/auth/cookies/devBrowser.ts @@ -1,9 +1,9 @@ import { createCookieHandler } from '@clerk/shared/cookie'; import { addYears } from '@clerk/shared/date'; import { DEV_BROWSER_JWT_KEY } from '@clerk/shared/devBrowser'; +import { inCrossOriginIframe } from '@clerk/shared/internal/clerk-js/runtime'; import { getSuffixedCookieName } from '@clerk/shared/keys'; -import { inCrossOriginIframe } from '../../../utils'; import { getSecureAttribute } from '../getSecureAttribute'; export type DevBrowserCookieHandler = { diff --git a/packages/clerk-js/src/core/auth/cookies/session.ts b/packages/clerk-js/src/core/auth/cookies/session.ts index 4651cda52ec..e4362a2522d 100644 --- a/packages/clerk-js/src/core/auth/cookies/session.ts +++ b/packages/clerk-js/src/core/auth/cookies/session.ts @@ -1,8 +1,8 @@ import { createCookieHandler } from '@clerk/shared/cookie'; import { addYears } from '@clerk/shared/date'; +import { inCrossOriginIframe } from '@clerk/shared/internal/clerk-js/runtime'; import { getSuffixedCookieName } from '@clerk/shared/keys'; -import { inCrossOriginIframe } from '../../../utils'; import { getSecureAttribute } from '../getSecureAttribute'; const SESSION_COOKIE_NAME = '__session'; diff --git a/packages/clerk-js/src/utils/index.ts b/packages/clerk-js/src/utils/index.ts index 2b67f91ea33..91d04c549e6 100644 --- a/packages/clerk-js/src/utils/index.ts +++ b/packages/clerk-js/src/utils/index.ts @@ -18,7 +18,7 @@ export * from './pageLifecycle'; export * from '@clerk/shared/internal/clerk-js/path'; export * from '@clerk/shared/internal/clerk-js/queryStateParams'; export * from '@clerk/shared/internal/clerk-js/querystring'; -export * from './runtime'; +export * from '@clerk/shared/internal/clerk-js/runtime'; export * from './tokenId'; export * from '@clerk/shared/internal/clerk-js/url'; export * from './web3'; diff --git a/packages/clerk-js/src/utils/runtime.ts b/packages/shared/src/internal/clerk-js/runtime.ts similarity index 100% rename from packages/clerk-js/src/utils/runtime.ts rename to packages/shared/src/internal/clerk-js/runtime.ts diff --git a/packages/ui/src/utils/__tests__/originPrefersPopup.test.ts b/packages/ui/src/utils/__tests__/originPrefersPopup.test.ts index fccf944cb3c..c80f250a245 100644 --- a/packages/ui/src/utils/__tests__/originPrefersPopup.test.ts +++ b/packages/ui/src/utils/__tests__/originPrefersPopup.test.ts @@ -3,12 +3,12 @@ import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'; import { originPrefersPopup } from '../originPrefersPopup'; // Mock the inIframe function -vi.mock('@/utils', () => ({ +vi.mock('@clerk/shared/internal/clerk-js/runtime', () => ({ inIframe: vi.fn(), })); // Import the mocked function -import { inIframe } from '@/utils'; +import { inIframe } from '@clerk/shared/internal/clerk-js/runtime'; const mockInIframe = vi.mocked(inIframe); describe('originPrefersPopup', () => { diff --git a/packages/ui/src/utils/createCustomPages.tsx b/packages/ui/src/utils/createCustomPages.tsx index 5d3e5e36b14..0d9ca551a7a 100644 --- a/packages/ui/src/utils/createCustomPages.tsx +++ b/packages/ui/src/utils/createCustomPages.tsx @@ -1,12 +1,12 @@ -import type { CustomPage, EnvironmentResource, LoadedClerk } from '@clerk/shared/types'; - import { canViewOrManageAPIKeys, disabledAPIKeysFeature, disabledOrganizationBillingFeature, disabledUserBillingFeature, - isValidUrl, -} from '../../utils'; +} from '@clerk/shared/internal/clerk-js/componentGuards'; +import { isValidUrl } from '@clerk/shared/internal/clerk-js/url'; +import type { CustomPage, EnvironmentResource, LoadedClerk } from '@clerk/shared/types'; + import { ORGANIZATION_PROFILE_NAVBAR_ROUTE_ID, USER_PROFILE_NAVBAR_ROUTE_ID } from '../constants'; import type { NavbarRoute } from '../elements/Navbar'; import { Code, CreditCard, Organization, TickShield, User, Users } from '../icons'; @@ -14,7 +14,6 @@ import { localizationKeys } from '../localization'; import { ExternalElementMounter } from './ExternalElementMounter'; import { isDevelopmentSDK } from './runtimeEnvironment'; import { sanitizeCustomLinkURL } from './sanitizeCustomLinkURL'; - export type CustomPageContent = { url: string; mount: (el: HTMLDivElement) => void; diff --git a/packages/ui/src/utils/originPrefersPopup.ts b/packages/ui/src/utils/originPrefersPopup.ts index 41239354688..26c107cfd9f 100644 --- a/packages/ui/src/utils/originPrefersPopup.ts +++ b/packages/ui/src/utils/originPrefersPopup.ts @@ -1,4 +1,4 @@ -import { inIframe } from '@/utils'; +import { inIframe } from '@clerk/shared/internal/clerk-js/runtime'; const POPUP_PREFERRED_ORIGINS = [ '.lovable.app', From bd74fe2c79eb86e4fed667e6e6c51d17bb3b1eba Mon Sep 17 00:00:00 2001 From: Nikos Douvlis Date: Sun, 2 Nov 2025 19:36:35 +0200 Subject: [PATCH 08/31] move CAPTCHA_ELEMENT_ID and CAPTCHA_INVISIBLE_CLASSNAME to shared/internal --- packages/clerk-js/src/utils/captcha/constants.ts | 2 -- packages/clerk-js/src/utils/captcha/turnstile.ts | 2 +- packages/shared/src/internal/clerk-js/constants.ts | 3 +++ packages/ui/src/elements/CaptchaElement.tsx | 2 +- 4 files changed, 5 insertions(+), 4 deletions(-) delete mode 100644 packages/clerk-js/src/utils/captcha/constants.ts diff --git a/packages/clerk-js/src/utils/captcha/constants.ts b/packages/clerk-js/src/utils/captcha/constants.ts deleted file mode 100644 index 7ad0a0e05c0..00000000000 --- a/packages/clerk-js/src/utils/captcha/constants.ts +++ /dev/null @@ -1,2 +0,0 @@ -export const CAPTCHA_ELEMENT_ID = 'clerk-captcha'; -export const CAPTCHA_INVISIBLE_CLASSNAME = 'clerk-invisible-captcha'; diff --git a/packages/clerk-js/src/utils/captcha/turnstile.ts b/packages/clerk-js/src/utils/captcha/turnstile.ts index 1a21f57d1dc..71150d992f4 100644 --- a/packages/clerk-js/src/utils/captcha/turnstile.ts +++ b/packages/clerk-js/src/utils/captcha/turnstile.ts @@ -1,8 +1,8 @@ import { waitForElement } from '@clerk/shared/dom'; +import { CAPTCHA_ELEMENT_ID, CAPTCHA_INVISIBLE_CLASSNAME } from '@clerk/shared/internal/clerk-js/constants'; import { loadScript } from '@clerk/shared/loadScript'; import type { CaptchaAppearanceOptions, CaptchaWidgetType } from '@clerk/shared/types'; -import { CAPTCHA_ELEMENT_ID, CAPTCHA_INVISIBLE_CLASSNAME } from './constants'; import type { CaptchaOptions } from './types'; // We use the explicit render mode to be able to control when the widget is rendered. diff --git a/packages/shared/src/internal/clerk-js/constants.ts b/packages/shared/src/internal/clerk-js/constants.ts index 7c4f5254150..b54ca5255a8 100644 --- a/packages/shared/src/internal/clerk-js/constants.ts +++ b/packages/shared/src/internal/clerk-js/constants.ts @@ -55,3 +55,6 @@ export const SIGN_UP_MODES = { // This is the currently supported version of the Frontend API export const SUPPORTED_FAPI_VERSION = '2025-04-10'; + +export const CAPTCHA_ELEMENT_ID = 'clerk-captcha'; +export const CAPTCHA_INVISIBLE_CLASSNAME = 'clerk-invisible-captcha'; diff --git a/packages/ui/src/elements/CaptchaElement.tsx b/packages/ui/src/elements/CaptchaElement.tsx index 7d52a7f6d6f..86e2e93853b 100644 --- a/packages/ui/src/elements/CaptchaElement.tsx +++ b/packages/ui/src/elements/CaptchaElement.tsx @@ -1,6 +1,6 @@ +import { CAPTCHA_ELEMENT_ID } from '@clerk/shared/internal/clerk-js/constants'; import { useEffect, useRef } from 'react'; -import { CAPTCHA_ELEMENT_ID } from '../../utils/captcha/constants'; import { Box, useAppearance, useLocalizations } from '../customizables'; /** From 0927f8ae5c9c134c16b058c107e22de6fb92c843 Mon Sep 17 00:00:00 2001 From: Nikos Douvlis Date: Sun, 2 Nov 2025 19:56:44 +0200 Subject: [PATCH 09/31] move RedirectUrls to shared/internal --- packages/clerk-js/src/core/clerk.ts | 4 ++-- .../src/internal/clerk-js}/__tests__/redirectUrls.test.ts | 0 .../src/internal/clerk-js}/assertNoLegacyProp.ts | 2 +- .../utils => shared/src/internal/clerk-js}/redirectUrls.ts | 0 packages/ui/src/contexts/components/GoogleOneTap.ts | 2 +- packages/ui/src/contexts/components/SignIn.ts | 5 ++--- packages/ui/src/contexts/components/SignUp.ts | 5 ++--- 7 files changed, 8 insertions(+), 10 deletions(-) rename packages/{clerk-js/src/utils => shared/src/internal/clerk-js}/__tests__/redirectUrls.test.ts (100%) rename packages/{clerk-js/src/utils => shared/src/internal/clerk-js}/assertNoLegacyProp.ts (96%) rename packages/{clerk-js/src/utils => shared/src/internal/clerk-js}/redirectUrls.ts (100%) diff --git a/packages/clerk-js/src/core/clerk.ts b/packages/clerk-js/src/core/clerk.ts index a64981e72b1..da1b2578cb6 100644 --- a/packages/clerk-js/src/core/clerk.ts +++ b/packages/clerk-js/src/core/clerk.ts @@ -9,6 +9,7 @@ import { isClerkAPIResponseError, isClerkRuntimeError, } from '@clerk/shared/error'; +import { assertNoLegacyProp } from '@clerk/shared/internal/clerk-js/assertNoLegacyProp'; import { canViewOrManageAPIKeys, disabledAllBillingFeatures, @@ -19,6 +20,7 @@ import { noUserExists, } from '@clerk/shared/internal/clerk-js/componentGuards'; import { ERROR_CODES } from '@clerk/shared/internal/clerk-js/constants'; +import { RedirectUrls } from '@clerk/shared/internal/clerk-js/redirectUrls'; import { getTaskEndpoint, navigateIfTaskExists, @@ -140,10 +142,8 @@ import { requiresUserInput, stripOrigin, } from '../utils'; -import { assertNoLegacyProp } from '../utils/assertNoLegacyProp'; import { CLERK_ENVIRONMENT_STORAGE_ENTRY, SafeLocalStorage } from '../utils/localStorage'; import { memoizeListenerCallback } from '../utils/memoizeStateListenerCallback'; -import { RedirectUrls } from '../utils/redirectUrls'; import { AuthCookieService } from './auth/AuthCookieService'; import { CaptchaHeartbeat } from './auth/CaptchaHeartbeat'; import { diff --git a/packages/clerk-js/src/utils/__tests__/redirectUrls.test.ts b/packages/shared/src/internal/clerk-js/__tests__/redirectUrls.test.ts similarity index 100% rename from packages/clerk-js/src/utils/__tests__/redirectUrls.test.ts rename to packages/shared/src/internal/clerk-js/__tests__/redirectUrls.test.ts diff --git a/packages/clerk-js/src/utils/assertNoLegacyProp.ts b/packages/shared/src/internal/clerk-js/assertNoLegacyProp.ts similarity index 96% rename from packages/clerk-js/src/utils/assertNoLegacyProp.ts rename to packages/shared/src/internal/clerk-js/assertNoLegacyProp.ts index a574b8d9e2f..89f6a5a58d3 100644 --- a/packages/clerk-js/src/utils/assertNoLegacyProp.ts +++ b/packages/shared/src/internal/clerk-js/assertNoLegacyProp.ts @@ -1,4 +1,4 @@ -import { logger } from '@clerk/shared/logger'; +import { logger } from '../../logger'; export function assertNoLegacyProp(props: Record) { const legacyProps = ['redirectUrl', 'afterSignInUrl', 'afterSignUpUrl', 'after_sign_in_url', 'after_sign_up_url']; diff --git a/packages/clerk-js/src/utils/redirectUrls.ts b/packages/shared/src/internal/clerk-js/redirectUrls.ts similarity index 100% rename from packages/clerk-js/src/utils/redirectUrls.ts rename to packages/shared/src/internal/clerk-js/redirectUrls.ts diff --git a/packages/ui/src/contexts/components/GoogleOneTap.ts b/packages/ui/src/contexts/components/GoogleOneTap.ts index c87bb7a06f3..457b1e00d45 100644 --- a/packages/ui/src/contexts/components/GoogleOneTap.ts +++ b/packages/ui/src/contexts/components/GoogleOneTap.ts @@ -1,8 +1,8 @@ +import { RedirectUrls } from '@clerk/shared/internal/clerk-js/redirectUrls'; import { buildURL } from '@clerk/shared/internal/clerk-js/url'; import type { HandleOAuthCallbackParams } from '@clerk/shared/types'; import { createContext, useCallback, useContext } from 'react'; -import { RedirectUrls } from '../../../utils/redirectUrls'; import { useEnvironment, useOptions } from '../../contexts'; import { useRouter } from '../../router'; import type { GoogleOneTapCtx } from '../../types'; diff --git a/packages/ui/src/contexts/components/SignIn.ts b/packages/ui/src/contexts/components/SignIn.ts index c98cb0cc955..161a8704c1d 100644 --- a/packages/ui/src/contexts/components/SignIn.ts +++ b/packages/ui/src/contexts/components/SignIn.ts @@ -1,13 +1,12 @@ import { SIGN_IN_INITIAL_VALUE_KEYS } from '@clerk/shared/internal/clerk-js/constants'; +import { RedirectUrls } from '@clerk/shared/internal/clerk-js/redirectUrls'; +import { getTaskEndpoint } from '@clerk/shared/internal/clerk-js/sessionTasks'; import { buildURL } from '@clerk/shared/internal/clerk-js/url'; import { useClerk } from '@clerk/shared/react'; import type { SessionResource } from '@clerk/shared/types'; import { isAbsoluteUrl } from '@clerk/shared/url'; import { createContext, useContext, useMemo } from 'react'; -import { getTaskEndpoint } from '@clerk/shared/internal/clerk-js/sessionTasks'; - -import { RedirectUrls } from '../../../utils/redirectUrls'; import { buildRedirectUrl, MAGIC_LINK_VERIFY_PATH_ROUTE, SSO_CALLBACK_PATH_ROUTE } from '../../common/redirects'; import { useEnvironment, useOptions } from '../../contexts'; import type { ParsedQueryString } from '../../router'; diff --git a/packages/ui/src/contexts/components/SignUp.ts b/packages/ui/src/contexts/components/SignUp.ts index 5dd9f4bf0eb..3c8107bf9c1 100644 --- a/packages/ui/src/contexts/components/SignUp.ts +++ b/packages/ui/src/contexts/components/SignUp.ts @@ -1,13 +1,12 @@ import { SIGN_UP_INITIAL_VALUE_KEYS } from '@clerk/shared/internal/clerk-js/constants'; +import { RedirectUrls } from '@clerk/shared/internal/clerk-js/redirectUrls'; +import { getTaskEndpoint, INTERNAL_SESSION_TASK_ROUTE_BY_KEY } from '@clerk/shared/internal/clerk-js/sessionTasks'; import { buildURL } from '@clerk/shared/internal/clerk-js/url'; import { useClerk } from '@clerk/shared/react'; import type { SessionResource } from '@clerk/shared/types'; import { isAbsoluteUrl } from '@clerk/shared/url'; import { createContext, useContext, useMemo } from 'react'; -import { getTaskEndpoint, INTERNAL_SESSION_TASK_ROUTE_BY_KEY } from '@clerk/shared/internal/clerk-js/sessionTasks'; - -import { RedirectUrls } from '../../../utils/redirectUrls'; import { buildRedirectUrl, MAGIC_LINK_VERIFY_PATH_ROUTE, SSO_CALLBACK_PATH_ROUTE } from '../../common/redirects'; import { useEnvironment, useOptions } from '../../contexts'; import type { ParsedQueryString } from '../../router'; From 7e3627285f553d12ba56c3beaf6f0851243251ca Mon Sep 17 00:00:00 2001 From: Nikos Douvlis Date: Sun, 2 Nov 2025 20:12:31 +0200 Subject: [PATCH 10/31] move isOrganizationId to shared/internal --- packages/clerk-js/src/utils/index.ts | 2 +- .../src/internal/clerk-js}/__tests__/organization.test.ts | 0 .../src/utils => shared/src/internal/clerk-js}/organization.ts | 0 packages/ui/src/components/ApiKeys/ApiKeys.tsx | 2 +- 4 files changed, 2 insertions(+), 2 deletions(-) rename packages/{clerk-js/src/utils => shared/src/internal/clerk-js}/__tests__/organization.test.ts (100%) rename packages/{clerk-js/src/utils => shared/src/internal/clerk-js}/organization.ts (100%) diff --git a/packages/clerk-js/src/utils/index.ts b/packages/clerk-js/src/utils/index.ts index 91d04c549e6..41973a9e834 100644 --- a/packages/clerk-js/src/utils/index.ts +++ b/packages/clerk-js/src/utils/index.ts @@ -13,7 +13,7 @@ export * from './image'; export * from './instance'; export * from './jwt'; export * from './locale'; -export * from './organization'; +export * from '@clerk/shared/internal/clerk-js/organization'; export * from './pageLifecycle'; export * from '@clerk/shared/internal/clerk-js/path'; export * from '@clerk/shared/internal/clerk-js/queryStateParams'; diff --git a/packages/clerk-js/src/utils/__tests__/organization.test.ts b/packages/shared/src/internal/clerk-js/__tests__/organization.test.ts similarity index 100% rename from packages/clerk-js/src/utils/__tests__/organization.test.ts rename to packages/shared/src/internal/clerk-js/__tests__/organization.test.ts diff --git a/packages/clerk-js/src/utils/organization.ts b/packages/shared/src/internal/clerk-js/organization.ts similarity index 100% rename from packages/clerk-js/src/utils/organization.ts rename to packages/shared/src/internal/clerk-js/organization.ts diff --git a/packages/ui/src/components/ApiKeys/ApiKeys.tsx b/packages/ui/src/components/ApiKeys/ApiKeys.tsx index e555672c241..8ede5ba9cbb 100644 --- a/packages/ui/src/components/ApiKeys/ApiKeys.tsx +++ b/packages/ui/src/components/ApiKeys/ApiKeys.tsx @@ -1,4 +1,5 @@ import { isClerkAPIResponseError } from '@clerk/shared/error'; +import { isOrganizationId } from '@clerk/shared/internal/clerk-js/organization'; import { useClerk, useOrganization, useUser } from '@clerk/shared/react'; import type { CreateAPIKeyParams } from '@clerk/shared/types'; import { lazy, useState } from 'react'; @@ -23,7 +24,6 @@ import { InputWithIcon } from '@/ui/elements/InputWithIcon'; import { Pagination } from '@/ui/elements/Pagination'; import { MagnifyingGlass } from '@/ui/icons'; import { mqu } from '@/ui/styledSystem'; -import { isOrganizationId } from '@/utils'; import { ApiKeysTable } from './ApiKeysTable'; import type { OnCreateParams } from './CreateApiKeyForm'; From f3eb0a6ee5f5b60a39190ce92c6551230b3ec413 Mon Sep 17 00:00:00 2001 From: Nikos Douvlis Date: Sun, 2 Nov 2025 20:17:36 +0200 Subject: [PATCH 11/31] move email utils to clerk/shared/internal --- packages/clerk-js/src/core/fapiClient.ts | 3 ++- packages/clerk-js/src/utils/index.ts | 2 +- .../src/internal/clerk-js}/__tests__/email.test.ts | 0 .../src/utils => shared/src/internal/clerk-js}/email.ts | 0 packages/ui/src/hooks/useSupportEmail.ts | 2 +- 5 files changed, 4 insertions(+), 3 deletions(-) rename packages/{clerk-js/src/utils => shared/src/internal/clerk-js}/__tests__/email.test.ts (100%) rename packages/{clerk-js/src/utils => shared/src/internal/clerk-js}/email.ts (100%) diff --git a/packages/clerk-js/src/core/fapiClient.ts b/packages/clerk-js/src/core/fapiClient.ts index 486573406e2..94060f9ebf6 100644 --- a/packages/clerk-js/src/core/fapiClient.ts +++ b/packages/clerk-js/src/core/fapiClient.ts @@ -1,4 +1,5 @@ import { isBrowserOnline } from '@clerk/shared/browser'; +import { buildEmailAddress as buildEmailAddressUtil } from '@clerk/shared/internal/clerk-js/email'; import { stringifyQueryParams } from '@clerk/shared/internal/clerk-js/querystring'; import { retry } from '@clerk/shared/retry'; import type { ClerkAPIErrorJSON, ClientJSON, InstanceType } from '@clerk/shared/types'; @@ -6,7 +7,7 @@ import { camelToSnake } from '@clerk/shared/underscore'; import { debugLogger } from '@/utils/debug'; -import { buildEmailAddress as buildEmailAddressUtil, buildURL as buildUrlUtil, filterUndefinedValues } from '../utils'; +import { buildURL as buildUrlUtil, filterUndefinedValues } from '../utils'; import { SUPPORTED_FAPI_VERSION } from './constants'; import { clerkNetworkError } from './errors'; diff --git a/packages/clerk-js/src/utils/index.ts b/packages/clerk-js/src/utils/index.ts index 41973a9e834..d9bd7d2139d 100644 --- a/packages/clerk-js/src/utils/index.ts +++ b/packages/clerk-js/src/utils/index.ts @@ -1,7 +1,7 @@ export * from './beforeUnloadTracker'; export * from './billing'; export * from '@clerk/shared/internal/clerk-js/completeSignUpFlow'; -export * from './email'; +export * from '@clerk/shared/internal/clerk-js/email'; export * from '@clerk/shared/internal/clerk-js/encoders'; export * from './errors'; export * from './errorThrower'; diff --git a/packages/clerk-js/src/utils/__tests__/email.test.ts b/packages/shared/src/internal/clerk-js/__tests__/email.test.ts similarity index 100% rename from packages/clerk-js/src/utils/__tests__/email.test.ts rename to packages/shared/src/internal/clerk-js/__tests__/email.test.ts diff --git a/packages/clerk-js/src/utils/email.ts b/packages/shared/src/internal/clerk-js/email.ts similarity index 100% rename from packages/clerk-js/src/utils/email.ts rename to packages/shared/src/internal/clerk-js/email.ts diff --git a/packages/ui/src/hooks/useSupportEmail.ts b/packages/ui/src/hooks/useSupportEmail.ts index 1b4fb27676f..4ecfa7d745d 100644 --- a/packages/ui/src/hooks/useSupportEmail.ts +++ b/packages/ui/src/hooks/useSupportEmail.ts @@ -1,7 +1,7 @@ +import { buildEmailAddress } from '@clerk/shared/internal/clerk-js/email'; import { useClerk } from '@clerk/shared/react'; import React from 'react'; -import { buildEmailAddress } from '../../utils'; import { useEnvironment, useOptions } from '../contexts'; export function useSupportEmail(): string { From 820fe4a45a5625f856195050941113677c4a7435 Mon Sep 17 00:00:00 2001 From: Nikos Douvlis Date: Sun, 2 Nov 2025 20:23:59 +0200 Subject: [PATCH 12/31] update error handling to specify 'any' type in catch blocks --- packages/ui/src/common/EmailLinkVerify.tsx | 2 +- packages/ui/src/common/RemoveResourceForm.tsx | 2 +- .../CreateOrganization/CreateOrganizationForm.tsx | 2 +- .../ui/src/components/GoogleOneTap/one-tap-start.tsx | 2 +- .../components/OrganizationList/UserMembershipList.tsx | 4 ++-- .../OrganizationProfile/ActionConfirmationPage.tsx | 2 +- .../OrganizationProfile/VerifiedDomainForm.tsx | 2 +- .../src/components/PaymentMethods/AddPaymentMethod.tsx | 2 +- .../src/components/PaymentMethods/PaymentMethods.tsx | 2 +- .../ChooseOrganizationScreen.tsx | 2 +- .../CreateOrganizationScreen.tsx | 2 +- packages/ui/src/components/SignIn/ResetPassword.tsx | 2 +- packages/ui/src/components/SignIn/SignInStart.tsx | 2 +- packages/ui/src/components/SignIn/shared.ts | 2 +- .../UserProfile/ConnectedAccountsSection.tsx | 2 +- .../ui/src/components/UserProfile/DeleteUserForm.tsx | 2 +- .../src/components/UserProfile/MfaPhoneCodeScreen.tsx | 4 ++-- .../ui/src/components/UserProfile/PasskeySection.tsx | 2 +- .../ui/src/components/UserProfile/PasswordForm.tsx | 2 +- .../ui/src/components/UserProfile/UsernameForm.tsx | 2 +- packages/ui/src/components/UserProfile/Web3Form.tsx | 2 +- packages/ui/src/customizables/makeResponsive.tsx | 4 ++++ packages/ui/src/localization/applyTokensToString.ts | 2 +- packages/ui/src/localization/localizationModifiers.ts | 10 +++++----- 24 files changed, 33 insertions(+), 29 deletions(-) diff --git a/packages/ui/src/common/EmailLinkVerify.tsx b/packages/ui/src/common/EmailLinkVerify.tsx index d188c43940e..1b00cfd3232 100644 --- a/packages/ui/src/common/EmailLinkVerify.tsx +++ b/packages/ui/src/common/EmailLinkVerify.tsx @@ -40,7 +40,7 @@ export const EmailLinkVerify = (props: EmailLinkVerifyProps) => { continuePath, navigate, }); - } catch (err) { + } catch (err: any) { if ( isEmailLinkError(err) && (err.code === EmailLinkErrorCodeStatus.Expired || err.code === EmailLinkErrorCodeStatus.ClientMismatch) diff --git a/packages/ui/src/common/RemoveResourceForm.tsx b/packages/ui/src/common/RemoveResourceForm.tsx index 31e87a2c567..bf33940ffbd 100644 --- a/packages/ui/src/common/RemoveResourceForm.tsx +++ b/packages/ui/src/common/RemoveResourceForm.tsx @@ -25,7 +25,7 @@ export const RemoveResourceForm = withCardStateProvider((props: RemoveFormProps) const handleSubmit = async () => { try { await deleteWithReverification().then(onSuccess); - } catch (e) { + } catch (e: any) { handleError(e, [], card.setError); } }; diff --git a/packages/ui/src/components/CreateOrganization/CreateOrganizationForm.tsx b/packages/ui/src/components/CreateOrganization/CreateOrganizationForm.tsx index 2be4066ea4d..3e82e63cb6c 100644 --- a/packages/ui/src/components/CreateOrganization/CreateOrganizationForm.tsx +++ b/packages/ui/src/components/CreateOrganization/CreateOrganizationForm.tsx @@ -104,7 +104,7 @@ export const CreateOrganizationForm = withCardStateProvider((props: CreateOrgani } wizard.nextStep(); - } catch (err) { + } catch (err: any) { handleError(err, [nameField, slugField], card.setError); } }; diff --git a/packages/ui/src/components/GoogleOneTap/one-tap-start.tsx b/packages/ui/src/components/GoogleOneTap/one-tap-start.tsx index 608efba3b0d..da30806efd2 100644 --- a/packages/ui/src/components/GoogleOneTap/one-tap-start.tsx +++ b/packages/ui/src/components/GoogleOneTap/one-tap-start.tsx @@ -26,7 +26,7 @@ function OneTapStartInternal(): JSX.Element | null { token: response.credential, }); await clerk.handleGoogleOneTapCallback(res, ctx.generateCallbackUrls(window.location.href), navigate); - } catch (e) { + } catch (e: any) { console.error(e); } } diff --git a/packages/ui/src/components/OrganizationList/UserMembershipList.tsx b/packages/ui/src/components/OrganizationList/UserMembershipList.tsx index c8461f87d10..48e9029515c 100644 --- a/packages/ui/src/components/OrganizationList/UserMembershipList.tsx +++ b/packages/ui/src/components/OrganizationList/UserMembershipList.tsx @@ -1,7 +1,7 @@ +import { isClerkAPIResponseError } from '@clerk/shared/error'; import { useOrganizationList, useUser } from '@clerk/shared/react'; import type { OrganizationResource } from '@clerk/shared/types'; -import { isClerkAPIResponseError } from '@clerk/shared/error'; import { sharedMainIdentifierSx } from '@/ui/common/organizations/OrganizationPreview'; import { localizationKeys, useLocalizations } from '@/ui/customizables'; import { useCardState, withCardStateProvider } from '@/ui/elements/contexts'; @@ -31,7 +31,7 @@ export const MembershipPreview = (props: { organization: OrganizationResource }) }); await navigateAfterSelectOrganization(organization); - } catch (err) { + } catch (err: any) { if (!isClerkAPIResponseError(err)) { handleError(err, [], card.setError); return; diff --git a/packages/ui/src/components/OrganizationProfile/ActionConfirmationPage.tsx b/packages/ui/src/components/OrganizationProfile/ActionConfirmationPage.tsx index 19c3dc136d7..803acc859d0 100644 --- a/packages/ui/src/components/OrganizationProfile/ActionConfirmationPage.tsx +++ b/packages/ui/src/components/OrganizationProfile/ActionConfirmationPage.tsx @@ -142,7 +142,7 @@ const ActionConfirmationPage = withCardStateProvider((props: ActionConfirmationP } try { await onConfirmation().then(() => wizard.nextStep()); - } catch (e) { + } catch (e: any) { handleError(e, [], card.setError); } }; diff --git a/packages/ui/src/components/OrganizationProfile/VerifiedDomainForm.tsx b/packages/ui/src/components/OrganizationProfile/VerifiedDomainForm.tsx index 89c3d76bc78..4f369ebbde7 100644 --- a/packages/ui/src/components/OrganizationProfile/VerifiedDomainForm.tsx +++ b/packages/ui/src/components/OrganizationProfile/VerifiedDomainForm.tsx @@ -154,7 +154,7 @@ export const VerifiedDomainForm = withCardStateProvider((props: VerifiedDomainFo await domains.revalidate(); onSuccess(); - } catch (e) { + } catch (e: any) { handleError(e, [enrollmentMode], card.setError); } }; diff --git a/packages/ui/src/components/PaymentMethods/AddPaymentMethod.tsx b/packages/ui/src/components/PaymentMethods/AddPaymentMethod.tsx index adf8d411432..a0ef7a64b28 100644 --- a/packages/ui/src/components/PaymentMethods/AddPaymentMethod.tsx +++ b/packages/ui/src/components/PaymentMethods/AddPaymentMethod.tsx @@ -210,7 +210,7 @@ const AddPaymentMethodForm = ({ children }: PropsWithChildren) => { } try { await onSuccess(data); - } catch (error) { + } catch (error: any) { void handleError(error, [], card.setError); } finally { card.setIdle(); diff --git a/packages/ui/src/components/PaymentMethods/PaymentMethods.tsx b/packages/ui/src/components/PaymentMethods/PaymentMethods.tsx index 7b53795ce9d..11aaba0205a 100644 --- a/packages/ui/src/components/PaymentMethods/PaymentMethods.tsx +++ b/packages/ui/src/components/PaymentMethods/PaymentMethods.tsx @@ -74,7 +74,7 @@ const RemoveScreen = ({ await paymentMethod .remove({ orgId: subscriberType === 'organization' ? organization?.id : undefined }) .then(revalidate) - .catch((error: Error) => { + .catch((error: any) => { handleError(error, [], card.setError); }); }; diff --git a/packages/ui/src/components/SessionTasks/tasks/TaskChooseOrganization/ChooseOrganizationScreen.tsx b/packages/ui/src/components/SessionTasks/tasks/TaskChooseOrganization/ChooseOrganizationScreen.tsx index 94340b62856..cad5326c570 100644 --- a/packages/ui/src/components/SessionTasks/tasks/TaskChooseOrganization/ChooseOrganizationScreen.tsx +++ b/packages/ui/src/components/SessionTasks/tasks/TaskChooseOrganization/ChooseOrganizationScreen.tsx @@ -126,7 +126,7 @@ const MembershipPreview = (props: { organization: OrganizationResource }) => { await navigate(redirectUrlComplete); }, }); - } catch (err) { + } catch (err: any) { if (!isClerkAPIResponseError(err)) { handleError(err, [], card.setError); return; diff --git a/packages/ui/src/components/SessionTasks/tasks/TaskChooseOrganization/CreateOrganizationScreen.tsx b/packages/ui/src/components/SessionTasks/tasks/TaskChooseOrganization/CreateOrganizationScreen.tsx index 130f057a75c..75f7ab38878 100644 --- a/packages/ui/src/components/SessionTasks/tasks/TaskChooseOrganization/CreateOrganizationScreen.tsx +++ b/packages/ui/src/components/SessionTasks/tasks/TaskChooseOrganization/CreateOrganizationScreen.tsx @@ -65,7 +65,7 @@ export const CreateOrganizationScreen = (props: CreateOrganizationScreenProps) = await navigate(redirectUrlComplete); }, }); - } catch (err) { + } catch (err: any) { handleError(err, [nameField, slugField], card.setError); } }; diff --git a/packages/ui/src/components/SignIn/ResetPassword.tsx b/packages/ui/src/components/SignIn/ResetPassword.tsx index d86fba601d6..b6baa2f118f 100644 --- a/packages/ui/src/components/SignIn/ResetPassword.tsx +++ b/packages/ui/src/components/SignIn/ResetPassword.tsx @@ -92,7 +92,7 @@ const ResetPasswordInternal = () => { default: return console.error(clerkInvalidFAPIResponse(status, supportEmail)); } - } catch (e) { + } catch (e: any) { return handleError(e, [passwordField, confirmField], card.setError); } }; diff --git a/packages/ui/src/components/SignIn/SignInStart.tsx b/packages/ui/src/components/SignIn/SignInStart.tsx index a40a75d4244..6ed47e1035a 100644 --- a/packages/ui/src/components/SignIn/SignInStart.tsx +++ b/packages/ui/src/components/SignIn/SignInStart.tsx @@ -403,7 +403,7 @@ function SignInStartInternal(): JSX.Element { return; } } - } catch (e) { + } catch (e: any) { return attemptToRecoverFromSignInError(e); } }; diff --git a/packages/ui/src/components/SignIn/shared.ts b/packages/ui/src/components/SignIn/shared.ts index e3e5588cfcf..0bf4352f26c 100644 --- a/packages/ui/src/components/SignIn/shared.ts +++ b/packages/ui/src/components/SignIn/shared.ts @@ -41,7 +41,7 @@ function useHandleAuthenticateWithPasskey(onSecondFactor: () => Promise default: return console.error(clerkInvalidFAPIResponse(res.status, supportEmail)); } - } catch (err) { + } catch (err: any) { const { flow } = args[0] || {}; if (isClerkRuntimeError(err)) { diff --git a/packages/ui/src/components/UserProfile/ConnectedAccountsSection.tsx b/packages/ui/src/components/UserProfile/ConnectedAccountsSection.tsx index f6da19c683b..eaa0e746ba4 100644 --- a/packages/ui/src/components/UserProfile/ConnectedAccountsSection.tsx +++ b/packages/ui/src/components/UserProfile/ConnectedAccountsSection.tsx @@ -148,7 +148,7 @@ const ConnectedAccount = ({ account }: { account: ExternalAccountResource }) => // eslint-disable-next-line @typescript-eslint/no-non-null-assertion await navigate(response.verification!.externalVerificationRedirectURL?.href || ''); } - } catch (err) { + } catch (err: any) { handleError(err, [], card.setError); } }; diff --git a/packages/ui/src/components/UserProfile/DeleteUserForm.tsx b/packages/ui/src/components/UserProfile/DeleteUserForm.tsx index a45259975d7..68b90d01681 100644 --- a/packages/ui/src/components/UserProfile/DeleteUserForm.tsx +++ b/packages/ui/src/components/UserProfile/DeleteUserForm.tsx @@ -47,7 +47,7 @@ export const DeleteUserForm = withCardStateProvider((props: DeleteUserFormProps) session: null, redirectUrl, }); - } catch (e) { + } catch (e: any) { handleError(e, [], card.setError); } }; diff --git a/packages/ui/src/components/UserProfile/MfaPhoneCodeScreen.tsx b/packages/ui/src/components/UserProfile/MfaPhoneCodeScreen.tsx index adeb6c4b607..52b4ea80701 100644 --- a/packages/ui/src/components/UserProfile/MfaPhoneCodeScreen.tsx +++ b/packages/ui/src/components/UserProfile/MfaPhoneCodeScreen.tsx @@ -102,7 +102,7 @@ const EnableMFAButtonForPhone = ( await setReservedForSecondFactor(); resourceRef.current = phone; onSuccess(); - } catch (err) { + } catch (err: any) { handleError(err, [], card.setError); } finally { card.setIdle(); @@ -141,7 +141,7 @@ export const MFAVerifyPhone = (props: MFAVerifyPhoneProps) => { await setReservedForSecondFactor(); resourceRef.current = phone; onSuccess(); - } catch (err) { + } catch (err: any) { handleError(err, [], card.setError); } finally { card.setIdle(); diff --git a/packages/ui/src/components/UserProfile/PasskeySection.tsx b/packages/ui/src/components/UserProfile/PasskeySection.tsx index 90d49f34563..c3b09682e6f 100644 --- a/packages/ui/src/components/UserProfile/PasskeySection.tsx +++ b/packages/ui/src/components/UserProfile/PasskeySection.tsx @@ -210,7 +210,7 @@ const AddPasskeyButton = ({ onClick }: { onClick?: () => void }) => { } try { await createPasskey(); - } catch (e) { + } catch (e: any) { handleError(e, [], card.setError); } }; diff --git a/packages/ui/src/components/UserProfile/PasswordForm.tsx b/packages/ui/src/components/UserProfile/PasswordForm.tsx index 115c391f310..5008325b90f 100644 --- a/packages/ui/src/components/UserProfile/PasswordForm.tsx +++ b/packages/ui/src/components/UserProfile/PasswordForm.tsx @@ -124,7 +124,7 @@ export const PasswordForm = withCardStateProvider((props: PasswordFormProps) => await updatePasswordWithReverification(user, [opts]); onSuccess(); - } catch (e) { + } catch (e: any) { handleError(e, [currentPasswordField, passwordField, confirmField], card.setError); } }; diff --git a/packages/ui/src/components/UserProfile/UsernameForm.tsx b/packages/ui/src/components/UserProfile/UsernameForm.tsx index b4a4bfcb1fc..afb15505565 100644 --- a/packages/ui/src/components/UserProfile/UsernameForm.tsx +++ b/packages/ui/src/components/UserProfile/UsernameForm.tsx @@ -44,7 +44,7 @@ export const UsernameForm = withCardStateProvider((props: UsernameFormProps) => try { await updateUsername(usernameField.value); onSuccess(); - } catch (e) { + } catch (e: any) { handleError(e, [usernameField], card.setError); } }; diff --git a/packages/ui/src/components/UserProfile/Web3Form.tsx b/packages/ui/src/components/UserProfile/Web3Form.tsx index 8ebea04501d..c972b30758e 100644 --- a/packages/ui/src/components/UserProfile/Web3Form.tsx +++ b/packages/ui/src/components/UserProfile/Web3Form.tsx @@ -41,7 +41,7 @@ export const AddWeb3WalletActionMenu = withCardStateProvider(({ onClick }: { onC const signature = await generateWeb3Signature({ identifier, nonce: message, provider }); await web3Wallet?.attemptVerification({ signature }); card.setIdle(); - } catch (err) { + } catch (err: any) { card.setIdle(); const fieldError = getFieldError(err); if (fieldError) { diff --git a/packages/ui/src/customizables/makeResponsive.tsx b/packages/ui/src/customizables/makeResponsive.tsx index 103216988b3..fede7879af0 100644 --- a/packages/ui/src/customizables/makeResponsive.tsx +++ b/packages/ui/src/customizables/makeResponsive.tsx @@ -58,6 +58,10 @@ const generateSrc = ({ src, width }: { src?: string; width: number }) => { return src; } + if (typeof src !== 'string') { + return src; + } + const newSrc = new URL(src); if (width) { newSrc.searchParams.append('width', width?.toString()); diff --git a/packages/ui/src/localization/applyTokensToString.ts b/packages/ui/src/localization/applyTokensToString.ts index d11b817d4f2..031a79d3865 100644 --- a/packages/ui/src/localization/applyTokensToString.ts +++ b/packages/ui/src/localization/applyTokensToString.ts @@ -73,7 +73,7 @@ const applyTokenExpressions = (s: string, expressions: TokenExpression[], tokens const value = modifiers.reduce((acc, mod) => { try { return MODIFIERS[mod.modifierName](acc, ...mod.params); - } catch (e) { + } catch (e: any) { console.warn(e); return ''; } diff --git a/packages/ui/src/localization/localizationModifiers.ts b/packages/ui/src/localization/localizationModifiers.ts index 4c2575d92a0..8913087040b 100644 --- a/packages/ui/src/localization/localizationModifiers.ts +++ b/packages/ui/src/localization/localizationModifiers.ts @@ -4,7 +4,7 @@ import { titleize } from '@clerk/shared/underscore'; const timeString = (val: Date | string | number, locale?: string) => { try { return new Intl.DateTimeFormat(locale || 'en-US', { timeStyle: 'short' }).format(normalizeDate(val)); - } catch (e) { + } catch (e: any) { console.warn(e); return ''; } @@ -13,7 +13,7 @@ const timeString = (val: Date | string | number, locale?: string) => { const weekday = (val: Date | string | number, locale?: string, weekday?: 'long' | 'short' | 'narrow' | undefined) => { try { return new Intl.DateTimeFormat(locale || 'en-US', { weekday: weekday || 'long' }).format(normalizeDate(val)); - } catch (e) { + } catch (e: any) { console.warn(e); return ''; } @@ -31,7 +31,7 @@ const shortDate = (val: Date | string | number, locale?: string) => { day: 'numeric', ...(date.getFullYear() !== new Date().getFullYear() ? { year: 'numeric' } : {}), }).format(normalizeDate(val)); - } catch (e) { + } catch (e: any) { console.warn(e); return ''; } @@ -47,7 +47,7 @@ const longDate = (val: Date | string | number, locale?: string) => { day: 'numeric', year: 'numeric', }).format(normalizeDate(val)); - } catch (e) { + } catch (e: any) { console.warn(e); return ''; } @@ -56,7 +56,7 @@ const longDate = (val: Date | string | number, locale?: string) => { const numeric = (val: Date | number | string, locale?: string) => { try { return new Intl.DateTimeFormat(locale || 'en-US').format(normalizeDate(val)); - } catch (e) { + } catch (e: any) { console.warn(e); return ''; } From 91bb98244684d57acd9e1a725956cc0c21c98efc Mon Sep 17 00:00:00 2001 From: Nikos Douvlis Date: Sun, 2 Nov 2025 20:24:10 +0200 Subject: [PATCH 13/31] add global type declarations for SVG modules and build constants --- packages/ui/src/global.d.ts | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 packages/ui/src/global.d.ts diff --git a/packages/ui/src/global.d.ts b/packages/ui/src/global.d.ts new file mode 100644 index 00000000000..325f174161d --- /dev/null +++ b/packages/ui/src/global.d.ts @@ -0,0 +1,13 @@ +declare module '*.svg' { + const value: React.FC>; + export default value; +} + +declare const __PKG_NAME__: string; +declare const __PKG_VERSION__: string; +declare const __DEV__: boolean; + +/** + * Build time feature flags. + */ +declare const __BUILD_DISABLE_RHC__: string; From bc594cde5fa613ba0aa71107c6ddff8bd2786150 Mon Sep 17 00:00:00 2001 From: Nikos Douvlis Date: Sun, 2 Nov 2025 21:03:27 +0200 Subject: [PATCH 14/31] add Emotion integration with custom theme support --- packages/ui/src/emotion.d.ts | 9 +++++++++ packages/ui/src/primitives/Button.tsx | 4 ++-- packages/ui/tsconfig.json | 1 + 3 files changed, 12 insertions(+), 2 deletions(-) create mode 100644 packages/ui/src/emotion.d.ts diff --git a/packages/ui/src/emotion.d.ts b/packages/ui/src/emotion.d.ts new file mode 100644 index 00000000000..3a67ab677ac --- /dev/null +++ b/packages/ui/src/emotion.d.ts @@ -0,0 +1,9 @@ +// eslint-disable-next-line no-restricted-imports +import '@emotion/react'; + +import type { InternalTheme } from './foundations'; + +declare module '@emotion/react' { + // eslint-disable-next-line @typescript-eslint/no-empty-object-type + export interface Theme extends InternalTheme {} +} diff --git a/packages/ui/src/primitives/Button.tsx b/packages/ui/src/primitives/Button.tsx index 4db84359740..97e7e8a8923 100644 --- a/packages/ui/src/primitives/Button.tsx +++ b/packages/ui/src/primitives/Button.tsx @@ -219,9 +219,9 @@ const Button = React.forwardRef((props, ref) => type={undefined} onClick={onClick} disabled={isDisabled} - css={applyVariants(parsedProps) as any} data-variant={props.variant || 'solid'} data-color={props.colorScheme || 'primary'} + css={applyVariants(parsedProps)} ref={ref} > {isLoading && ( @@ -268,7 +268,7 @@ const SimpleButton = React.forwardRef((props, re // the default styles of our components type={undefined} onClick={onClick} - css={applyVariants(parsedProps) as any} + css={applyVariants(parsedProps)} disabled={isDisabled} data-variant={props.variant || 'solid'} data-color={props.colorScheme || 'primary'} diff --git a/packages/ui/tsconfig.json b/packages/ui/tsconfig.json index a5284bece2c..f722feb7262 100644 --- a/packages/ui/tsconfig.json +++ b/packages/ui/tsconfig.json @@ -15,6 +15,7 @@ "module": "preserve", "lib": ["ES2023", "DOM", "WebWorker"], "jsx": "react-jsx", + "jsxImportSource": "@emotion/react", "isolatedModules": true, "forceConsistentCasingInFileNames": true, "esModuleInterop": true, From 0fe0faeea810c588ee64f1ce52ef4cd4eaa21ae9 Mon Sep 17 00:00:00 2001 From: Nikos Douvlis Date: Sun, 2 Nov 2025 21:10:20 +0200 Subject: [PATCH 15/31] move one-tap to shared/internal --- packages/ui/src/components/GoogleOneTap/one-tap-start.tsx | 4 ++-- packages/{clerk-js => ui}/src/utils/one-tap.ts | 3 +-- 2 files changed, 3 insertions(+), 4 deletions(-) rename packages/{clerk-js => ui}/src/utils/one-tap.ts (92%) diff --git a/packages/ui/src/components/GoogleOneTap/one-tap-start.tsx b/packages/ui/src/components/GoogleOneTap/one-tap-start.tsx index da30806efd2..6f058d40192 100644 --- a/packages/ui/src/components/GoogleOneTap/one-tap-start.tsx +++ b/packages/ui/src/components/GoogleOneTap/one-tap-start.tsx @@ -4,11 +4,11 @@ import { useEffect, useRef } from 'react'; import { withCardStateProvider } from '@/ui/elements/contexts'; -import type { GISCredentialResponse } from '../../../utils/one-tap'; -import { loadGIS } from '../../../utils/one-tap'; import { useEnvironment, useGoogleOneTapContext } from '../../contexts'; import { useFetch } from '../../hooks'; import { useRouter } from '../../router'; +import type { GISCredentialResponse } from '../../utils/one-tap'; +import { loadGIS } from '../../utils/one-tap'; function OneTapStartInternal(): JSX.Element | null { const clerk = useClerk(); diff --git a/packages/clerk-js/src/utils/one-tap.ts b/packages/ui/src/utils/one-tap.ts similarity index 92% rename from packages/clerk-js/src/utils/one-tap.ts rename to packages/ui/src/utils/one-tap.ts index 4b56a2b083a..cd37c7656f0 100644 --- a/packages/clerk-js/src/utils/one-tap.ts +++ b/packages/ui/src/utils/one-tap.ts @@ -1,7 +1,6 @@ +import { clerkFailedToLoadThirdPartyScript } from '@clerk/shared/internal/clerk-js/errors'; import { loadScript } from '@clerk/shared/loadScript'; -import { clerkFailedToLoadThirdPartyScript } from '../core/errors'; - interface GISCredentialResponse { credential: string; } From 202345b1e6156c59d356581828bd751ef9ff5df8 Mon Sep 17 00:00:00 2001 From: Nikos Douvlis Date: Sun, 2 Nov 2025 21:13:56 +0200 Subject: [PATCH 16/31] move img-utils to shared/internal --- packages/clerk-js/src/utils/index.ts | 1 - .../src/components/KeylessPrompt/use-revalidate-environment.ts | 3 ++- packages/ui/src/components/OrganizationProfile/ProfileForm.tsx | 2 +- packages/ui/src/components/UserProfile/ProfileForm.tsx | 2 +- packages/{clerk-js => ui}/src/utils/image.ts | 0 5 files changed, 4 insertions(+), 4 deletions(-) rename packages/{clerk-js => ui}/src/utils/image.ts (100%) diff --git a/packages/clerk-js/src/utils/index.ts b/packages/clerk-js/src/utils/index.ts index d9bd7d2139d..322f59a3509 100644 --- a/packages/clerk-js/src/utils/index.ts +++ b/packages/clerk-js/src/utils/index.ts @@ -9,7 +9,6 @@ export * from './filterUndefinedValues'; export * from '@clerk/shared/internal/clerk-js/queryParams'; export * from './hex'; export * from './ignoreEventValue'; -export * from './image'; export * from './instance'; export * from './jwt'; export * from './locale'; diff --git a/packages/ui/src/components/KeylessPrompt/use-revalidate-environment.ts b/packages/ui/src/components/KeylessPrompt/use-revalidate-environment.ts index c42edf6afef..cb1dad5a34e 100644 --- a/packages/ui/src/components/KeylessPrompt/use-revalidate-environment.ts +++ b/packages/ui/src/components/KeylessPrompt/use-revalidate-environment.ts @@ -1,7 +1,7 @@ import { useClerk } from '@clerk/shared/react'; +import type { Clerk } from '@clerk/shared/types'; import { useEffect, useReducer, useRef } from 'react'; -import type { Clerk } from '@clerk/shared/types'; import { useEnvironment } from '../../contexts'; const THROTTLE_DURATION_MS = 10 * 1000; @@ -21,6 +21,7 @@ function useRevalidateEnvironment() { 'focus', async () => { + // @ts-expect-error `__unstable__environment` is not typed const environment = (clerk as Clerk).__unstable__environment; if (!environment) { diff --git a/packages/ui/src/components/OrganizationProfile/ProfileForm.tsx b/packages/ui/src/components/OrganizationProfile/ProfileForm.tsx index 12e924b2561..6c620ffd7a9 100644 --- a/packages/ui/src/components/OrganizationProfile/ProfileForm.tsx +++ b/packages/ui/src/components/OrganizationProfile/ProfileForm.tsx @@ -11,8 +11,8 @@ import { FormContainer } from '@/ui/elements/FormContainer'; import { handleError } from '@/ui/utils/errorHandler'; import { useFormControl } from '@/ui/utils/useFormControl'; -import { isDefaultImage } from '../../../utils'; import { localizationKeys } from '../../customizables'; +import { isDefaultImage } from '../../utils/image'; import { OrganizationProfileAvatarUploader } from './OrganizationProfileAvatarUploader'; type ProfileFormProps = FormProps; diff --git a/packages/ui/src/components/UserProfile/ProfileForm.tsx b/packages/ui/src/components/UserProfile/ProfileForm.tsx index 245a8f94d20..629489cb806 100644 --- a/packages/ui/src/components/UserProfile/ProfileForm.tsx +++ b/packages/ui/src/components/UserProfile/ProfileForm.tsx @@ -10,9 +10,9 @@ import { InformationBox } from '@/ui/elements/InformationBox'; import { handleError } from '@/ui/utils/errorHandler'; import { useFormControl } from '@/ui/utils/useFormControl'; -import { isDefaultImage } from '../../../utils'; import { useEnvironment } from '../../contexts'; import { localizationKeys } from '../../customizables'; +import { isDefaultImage } from '../../utils/image'; import { UserProfileAvatarUploader } from './UserProfileAvatarUploader'; type ProfileFormProps = FormProps; diff --git a/packages/clerk-js/src/utils/image.ts b/packages/ui/src/utils/image.ts similarity index 100% rename from packages/clerk-js/src/utils/image.ts rename to packages/ui/src/utils/image.ts From 1bc8b092a435b8c7b381d256506e88dbe4b36cd9 Mon Sep 17 00:00:00 2001 From: Nikos Douvlis Date: Sun, 2 Nov 2025 21:15:22 +0200 Subject: [PATCH 17/31] refactor passkey utilities to shared/internal --- packages/clerk-js/src/core/resources/Passkey.ts | 2 +- packages/clerk-js/src/core/resources/Session.ts | 2 +- packages/clerk-js/src/core/resources/SignIn.ts | 2 +- packages/clerk-js/src/core/resources/Verification.ts | 2 +- .../src/internal/clerk-js}/__tests__/passkeys.test.ts | 0 .../src/utils => shared/src/internal/clerk-js}/passkeys.ts | 0 packages/ui/src/components/SignIn/shared.ts | 2 +- 7 files changed, 5 insertions(+), 5 deletions(-) rename packages/{clerk-js/src/utils => shared/src/internal/clerk-js}/__tests__/passkeys.test.ts (100%) rename packages/{clerk-js/src/utils => shared/src/internal/clerk-js}/passkeys.ts (100%) diff --git a/packages/clerk-js/src/core/resources/Passkey.ts b/packages/clerk-js/src/core/resources/Passkey.ts index ea415f635c5..b073e1f4b4c 100644 --- a/packages/clerk-js/src/core/resources/Passkey.ts +++ b/packages/clerk-js/src/core/resources/Passkey.ts @@ -18,7 +18,7 @@ import { unixEpochToDate } from '../../utils/date'; import { serializePublicKeyCredential, webAuthnCreateCredential as webAuthnCreateCredentialOnWindow, -} from '../../utils/passkeys'; +} from '@clerk/shared/internal/clerk-js/passkeys'; import { clerkMissingWebAuthnPublicKeyOptions } from '../errors'; import { BaseResource, DeletedObject, PasskeyVerification } from './internal'; diff --git a/packages/clerk-js/src/core/resources/Session.ts b/packages/clerk-js/src/core/resources/Session.ts index b774b12730f..c6e78e1887b 100644 --- a/packages/clerk-js/src/core/resources/Session.ts +++ b/packages/clerk-js/src/core/resources/Session.ts @@ -32,7 +32,7 @@ import { convertJSONToPublicKeyRequestOptions, serializePublicKeyCredentialAssertion, webAuthnGetCredential as webAuthnGetCredentialOnWindow, -} from '@/utils/passkeys'; +} from '@clerk/shared/internal/clerk-js/passkeys'; import { TokenId } from '@/utils/tokenId'; import { clerkInvalidStrategy, clerkMissingWebAuthnPublicKeyOptions } from '../errors'; diff --git a/packages/clerk-js/src/core/resources/SignIn.ts b/packages/clerk-js/src/core/resources/SignIn.ts index 8dd3627544a..9b8cb2560cf 100644 --- a/packages/clerk-js/src/core/resources/SignIn.ts +++ b/packages/clerk-js/src/core/resources/SignIn.ts @@ -82,7 +82,7 @@ import { convertJSONToPublicKeyRequestOptions, serializePublicKeyCredentialAssertion, webAuthnGetCredential as webAuthnGetCredentialOnWindow, -} from '../../utils/passkeys'; +} from '@clerk/shared/internal/clerk-js/passkeys'; import { runAsyncResourceTask } from '../../utils/runAsyncResourceTask'; import { loadZxcvbn } from '../../utils/zxcvbn'; import { diff --git a/packages/clerk-js/src/core/resources/Verification.ts b/packages/clerk-js/src/core/resources/Verification.ts index d9f739d2565..8adde912f1d 100644 --- a/packages/clerk-js/src/core/resources/Verification.ts +++ b/packages/clerk-js/src/core/resources/Verification.ts @@ -17,7 +17,7 @@ import type { } from '@clerk/shared/types'; import { unixEpochToDate } from '../../utils/date'; -import { convertJSONToPublicKeyCreateOptions } from '../../utils/passkeys'; +import { convertJSONToPublicKeyCreateOptions } from '@clerk/shared/internal/clerk-js/passkeys'; import { BaseResource } from './internal'; export class Verification extends BaseResource implements VerificationResource { diff --git a/packages/clerk-js/src/utils/__tests__/passkeys.test.ts b/packages/shared/src/internal/clerk-js/__tests__/passkeys.test.ts similarity index 100% rename from packages/clerk-js/src/utils/__tests__/passkeys.test.ts rename to packages/shared/src/internal/clerk-js/__tests__/passkeys.test.ts diff --git a/packages/clerk-js/src/utils/passkeys.ts b/packages/shared/src/internal/clerk-js/passkeys.ts similarity index 100% rename from packages/clerk-js/src/utils/passkeys.ts rename to packages/shared/src/internal/clerk-js/passkeys.ts diff --git a/packages/ui/src/components/SignIn/shared.ts b/packages/ui/src/components/SignIn/shared.ts index 0bf4352f26c..737e416dcf4 100644 --- a/packages/ui/src/components/SignIn/shared.ts +++ b/packages/ui/src/components/SignIn/shared.ts @@ -7,7 +7,7 @@ import { useCallback, useEffect } from 'react'; import { useCardState } from '@/ui/elements/contexts'; import { handleError } from '@/ui/utils/errorHandler'; -import { __internal_WebAuthnAbortService } from '../../../utils/passkeys'; +import { __internal_WebAuthnAbortService } from '@clerk/shared/internal/clerk-js/passkeys'; import { useCoreSignIn, useSignInContext } from '../../contexts'; import { useSupportEmail } from '../../hooks/useSupportEmail'; From 3811e4b471348cdeb450f70f2b03653e55054612 Mon Sep 17 00:00:00 2001 From: Nikos Douvlis Date: Sun, 2 Nov 2025 21:19:52 +0200 Subject: [PATCH 18/31] add global type declaration for Clerk interface on Window object --- packages/ui/src/components/SignIn/shared.ts | 2 +- packages/ui/src/global.d.ts | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/packages/ui/src/components/SignIn/shared.ts b/packages/ui/src/components/SignIn/shared.ts index 737e416dcf4..656b844bbc7 100644 --- a/packages/ui/src/components/SignIn/shared.ts +++ b/packages/ui/src/components/SignIn/shared.ts @@ -1,5 +1,6 @@ import { isClerkRuntimeError, isUserLockedError } from '@clerk/shared/error'; import { clerkInvalidFAPIResponse } from '@clerk/shared/internal/clerk-js/errors'; +import { __internal_WebAuthnAbortService } from '@clerk/shared/internal/clerk-js/passkeys'; import { useClerk } from '@clerk/shared/react'; import type { EnterpriseSSOFactor, SignInFirstFactor } from '@clerk/shared/types'; import { useCallback, useEffect } from 'react'; @@ -7,7 +8,6 @@ import { useCallback, useEffect } from 'react'; import { useCardState } from '@/ui/elements/contexts'; import { handleError } from '@/ui/utils/errorHandler'; -import { __internal_WebAuthnAbortService } from '@clerk/shared/internal/clerk-js/passkeys'; import { useCoreSignIn, useSignInContext } from '../../contexts'; import { useSupportEmail } from '../../hooks/useSupportEmail'; diff --git a/packages/ui/src/global.d.ts b/packages/ui/src/global.d.ts index 325f174161d..144adfcadf1 100644 --- a/packages/ui/src/global.d.ts +++ b/packages/ui/src/global.d.ts @@ -1,3 +1,4 @@ +import type { Clerk } from '@clerk/shared/types'; declare module '*.svg' { const value: React.FC>; export default value; @@ -11,3 +12,9 @@ declare const __DEV__: boolean; * Build time feature flags. */ declare const __BUILD_DISABLE_RHC__: string; + +declare global { + interface Window { + Clerk?: Clerk & { __internal_last_error?: any }; + } +} From 60072b588605eb7afb309fdf8b9f79e64b114925 Mon Sep 17 00:00:00 2001 From: Nikos Douvlis Date: Sun, 2 Nov 2025 21:21:42 +0200 Subject: [PATCH 19/31] move web3 utils into shared/internal --- .../clerk-js/src/core/resources/SignIn.ts | 33 +++++++++---------- .../clerk-js/src/core/resources/SignUp.ts | 23 +++++++------ packages/clerk-js/src/utils/index.ts | 3 +- .../src/internal/clerk-js}/hex.ts | 0 .../clerk-js}/injectedWeb3Providers.ts | 0 .../src/internal/clerk-js}/web3.ts | 3 +- .../src/components/UserProfile/Web3Form.tsx | 2 +- 7 files changed, 30 insertions(+), 34 deletions(-) rename packages/{clerk-js/src/utils => shared/src/internal/clerk-js}/hex.ts (100%) rename packages/{clerk-js/src/utils => shared/src/internal/clerk-js}/injectedWeb3Providers.ts (100%) rename packages/{clerk-js/src/utils => shared/src/internal/clerk-js}/web3.ts (97%) diff --git a/packages/clerk-js/src/core/resources/SignIn.ts b/packages/clerk-js/src/core/resources/SignIn.ts index 9b8cb2560cf..3f0feb4d764 100644 --- a/packages/clerk-js/src/core/resources/SignIn.ts +++ b/packages/clerk-js/src/core/resources/SignIn.ts @@ -1,6 +1,21 @@ import { inBrowser } from '@clerk/shared/browser'; import { ClerkWebAuthnError } from '@clerk/shared/error'; +import { + convertJSONToPublicKeyRequestOptions, + serializePublicKeyCredentialAssertion, + webAuthnGetCredential as webAuthnGetCredentialOnWindow, +} from '@clerk/shared/internal/clerk-js/passkeys'; import { createValidatePassword } from '@clerk/shared/internal/clerk-js/passwords/password'; +import { + generateSignatureWithBase, + generateSignatureWithCoinbaseWallet, + generateSignatureWithMetamask, + generateSignatureWithOKXWallet, + getBaseIdentifier, + getCoinbaseWalletIdentifier, + getMetamaskIdentifier, + getOKXWalletIdentifier, +} from '@clerk/shared/internal/clerk-js/web3'; import { windowNavigate } from '@clerk/shared/internal/clerk-js/windowNavigate'; import { Poller } from '@clerk/shared/poller'; import type { @@ -65,24 +80,8 @@ import { import { debugLogger } from '@/utils/debug'; -import { - generateSignatureWithBase, - generateSignatureWithCoinbaseWallet, - generateSignatureWithMetamask, - generateSignatureWithOKXWallet, - getBaseIdentifier, - getBrowserLocale, - getClerkQueryParam, - getCoinbaseWalletIdentifier, - getMetamaskIdentifier, - getOKXWalletIdentifier, -} from '../../utils'; +import { getBrowserLocale, getClerkQueryParam } from '../../utils'; import { _authenticateWithPopup } from '../../utils/authenticateWithPopup'; -import { - convertJSONToPublicKeyRequestOptions, - serializePublicKeyCredentialAssertion, - webAuthnGetCredential as webAuthnGetCredentialOnWindow, -} from '@clerk/shared/internal/clerk-js/passkeys'; import { runAsyncResourceTask } from '../../utils/runAsyncResourceTask'; import { loadZxcvbn } from '../../utils/zxcvbn'; import { diff --git a/packages/clerk-js/src/core/resources/SignUp.ts b/packages/clerk-js/src/core/resources/SignUp.ts index 74437e4982b..01fd0ea0203 100644 --- a/packages/clerk-js/src/core/resources/SignUp.ts +++ b/packages/clerk-js/src/core/resources/SignUp.ts @@ -1,5 +1,15 @@ import { ClerkRuntimeError, isCaptchaError, isClerkAPIResponseError } from '@clerk/shared/error'; import { createValidatePassword } from '@clerk/shared/internal/clerk-js/passwords/password'; +import { + generateSignatureWithBase, + generateSignatureWithCoinbaseWallet, + generateSignatureWithMetamask, + generateSignatureWithOKXWallet, + getBaseIdentifier, + getCoinbaseWalletIdentifier, + getMetamaskIdentifier, + getOKXWalletIdentifier, +} from '@clerk/shared/internal/clerk-js/web3'; import { windowNavigate } from '@clerk/shared/internal/clerk-js/windowNavigate'; import { Poller } from '@clerk/shared/poller'; import type { @@ -44,18 +54,7 @@ import type { import { debugLogger } from '@/utils/debug'; -import { - generateSignatureWithBase, - generateSignatureWithCoinbaseWallet, - generateSignatureWithMetamask, - generateSignatureWithOKXWallet, - getBaseIdentifier, - getBrowserLocale, - getClerkQueryParam, - getCoinbaseWalletIdentifier, - getMetamaskIdentifier, - getOKXWalletIdentifier, -} from '../../utils'; +import { getBrowserLocale, getClerkQueryParam } from '../../utils'; import { _authenticateWithPopup } from '../../utils/authenticateWithPopup'; import { CaptchaChallenge } from '../../utils/captcha/CaptchaChallenge'; import { normalizeUnsafeMetadata } from '../../utils/resourceParams'; diff --git a/packages/clerk-js/src/utils/index.ts b/packages/clerk-js/src/utils/index.ts index 322f59a3509..032c505c1d6 100644 --- a/packages/clerk-js/src/utils/index.ts +++ b/packages/clerk-js/src/utils/index.ts @@ -7,7 +7,6 @@ export * from './errors'; export * from './errorThrower'; export * from './filterUndefinedValues'; export * from '@clerk/shared/internal/clerk-js/queryParams'; -export * from './hex'; export * from './ignoreEventValue'; export * from './instance'; export * from './jwt'; @@ -20,5 +19,5 @@ export * from '@clerk/shared/internal/clerk-js/querystring'; export * from '@clerk/shared/internal/clerk-js/runtime'; export * from './tokenId'; export * from '@clerk/shared/internal/clerk-js/url'; -export * from './web3'; +export * from '@clerk/shared/internal/clerk-js/web3'; export * from '@clerk/shared/internal/clerk-js/windowNavigate'; diff --git a/packages/clerk-js/src/utils/hex.ts b/packages/shared/src/internal/clerk-js/hex.ts similarity index 100% rename from packages/clerk-js/src/utils/hex.ts rename to packages/shared/src/internal/clerk-js/hex.ts diff --git a/packages/clerk-js/src/utils/injectedWeb3Providers.ts b/packages/shared/src/internal/clerk-js/injectedWeb3Providers.ts similarity index 100% rename from packages/clerk-js/src/utils/injectedWeb3Providers.ts rename to packages/shared/src/internal/clerk-js/injectedWeb3Providers.ts diff --git a/packages/clerk-js/src/utils/web3.ts b/packages/shared/src/internal/clerk-js/web3.ts similarity index 97% rename from packages/clerk-js/src/utils/web3.ts rename to packages/shared/src/internal/clerk-js/web3.ts index fc494876f78..0a6c165f857 100644 --- a/packages/clerk-js/src/utils/web3.ts +++ b/packages/shared/src/internal/clerk-js/web3.ts @@ -1,7 +1,6 @@ +import { clerkUnsupportedEnvironmentWarning } from '@clerk/shared/internal/clerk-js/errors'; import type { Web3Provider } from '@clerk/shared/types'; -import { clerkUnsupportedEnvironmentWarning } from '@/core/errors'; - import { toHex } from './hex'; import { getInjectedWeb3Providers } from './injectedWeb3Providers'; diff --git a/packages/ui/src/components/UserProfile/Web3Form.tsx b/packages/ui/src/components/UserProfile/Web3Form.tsx index c972b30758e..c6ad7a0de62 100644 --- a/packages/ui/src/components/UserProfile/Web3Form.tsx +++ b/packages/ui/src/components/UserProfile/Web3Form.tsx @@ -1,3 +1,4 @@ +import { generateWeb3Signature, getWeb3Identifier } from '@clerk/shared/internal/clerk-js/web3'; import { useReverification, useUser } from '@clerk/shared/react'; import type { Web3Provider, Web3Strategy } from '@clerk/shared/types'; @@ -5,7 +6,6 @@ import { useCardState, withCardStateProvider } from '@/ui/elements/contexts'; import { ProfileSection } from '@/ui/elements/Section'; import { getFieldError, handleError } from '@/ui/utils/errorHandler'; -import { generateWeb3Signature, getWeb3Identifier } from '../../../utils/web3'; import { descriptors, Image, localizationKeys, Text } from '../../customizables'; import { useEnabledThirdPartyProviders } from '../../hooks'; From cb29f2dd317a5f5db45333ed41a7a1178a02de93 Mon Sep 17 00:00:00 2001 From: Nikos Douvlis Date: Sun, 2 Nov 2025 21:24:41 +0200 Subject: [PATCH 20/31] update TypeScript configuration and enhance global type declarations for build constants Cause: global.d.ts contains an import, so TypeScript treats it as a module. In a module, top-level declare const creates a module-level declaration, not a global one. --- packages/ui/src/elements/Select.tsx | 1 - packages/ui/src/global.d.ts | 17 +++++++++-------- packages/ui/tsconfig.json | 2 +- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/packages/ui/src/elements/Select.tsx b/packages/ui/src/elements/Select.tsx index 77a76187bca..8851645f873 100644 --- a/packages/ui/src/elements/Select.tsx +++ b/packages/ui/src/elements/Select.tsx @@ -430,7 +430,6 @@ export const SelectButton = ( elementDescriptor={descriptors.selectButtonIcon} elementId={descriptors.selectButtonIcon.setId(elementId)} size='md' - /* @ts-expect-error FIXME: icon prop typing */ icon={icon || ChevronDown} sx={iconSx} /> diff --git a/packages/ui/src/global.d.ts b/packages/ui/src/global.d.ts index 144adfcadf1..9f23abc0ff4 100644 --- a/packages/ui/src/global.d.ts +++ b/packages/ui/src/global.d.ts @@ -4,16 +4,17 @@ declare module '*.svg' { export default value; } -declare const __PKG_NAME__: string; -declare const __PKG_VERSION__: string; -declare const __DEV__: boolean; +declare global { + declare const __PKG_NAME__: string; + declare const __PKG_VERSION__: string; + declare const __DEV__: boolean; -/** - * Build time feature flags. - */ -declare const __BUILD_DISABLE_RHC__: string; + /** + * Build time feature flags. + */ + declare const __BUILD_DISABLE_RHC__: string; -declare global { + var __BUILD_DISABLE_RHC__: string; interface Window { Clerk?: Clerk & { __internal_last_error?: any }; } diff --git a/packages/ui/tsconfig.json b/packages/ui/tsconfig.json index f722feb7262..037d5fbf069 100644 --- a/packages/ui/tsconfig.json +++ b/packages/ui/tsconfig.json @@ -32,5 +32,5 @@ } }, "exclude": ["node_modules", "**/*.test.ts", "**/*.test.tsx", "**/*.spec.ts", "**/*.spec.tsx"], - "include": ["src", "global.d.ts"] + "include": ["src", "src/global.d.ts"] } From 6e99d6006417907c05d8b0738ca2d41e1254068d Mon Sep 17 00:00:00 2001 From: Nikos Douvlis Date: Mon, 3 Nov 2025 12:07:28 +0200 Subject: [PATCH 21/31] remove yalc patch file and integrate YAML parsing for catalog dependency resolution in copy.js --- patches/yalc@1.0.0-pre.53.patch | 69 --------------------------------- 1 file changed, 69 deletions(-) delete mode 100644 patches/yalc@1.0.0-pre.53.patch diff --git a/patches/yalc@1.0.0-pre.53.patch b/patches/yalc@1.0.0-pre.53.patch deleted file mode 100644 index 63221b43a9e..00000000000 --- a/patches/yalc@1.0.0-pre.53.patch +++ /dev/null @@ -1,69 +0,0 @@ -diff --git a/package.json b/package.json -index 930c1ca9954777dd1492a9e2373029d4644804cc..01e709cffb2a100bc6b0089edf91527d35b1b7fd 100644 ---- a/package.json -+++ b/package.json -@@ -37,6 +37,7 @@ - "ignore": "^5.0.4", - "ini": "^2.0.0", - "npm-packlist": "^2.1.5", -+ "yaml": "2.6.1", - "yargs": "^16.1.1" - }, - "devDependencies": { -diff --git a/src/copy.js b/src/copy.js -index 3a6dca7b7a6ffde2527e7866f923c56f7d7061b8..19ac807a17779219800a0230b0620a5dfd4c641d 100644 ---- a/src/copy.js -+++ b/src/copy.js -@@ -56,6 +56,7 @@ var fs_extra_1 = __importDefault(require("fs-extra")); - var ignore_1 = __importDefault(require("ignore")); - var npm_packlist_1 = __importDefault(require("npm-packlist")); - var path_1 = require("path"); -+var yaml_1 = require("yaml"); - var _1 = require("."); - var _2 = require("."); - var shortSignatureLength = 8; -@@ -120,6 +121,19 @@ var resolveWorkspaceDepVersion = function (version, pkgName, workingDir) { - return '*'; - } - }; -+var resolveCatalogDepVersion = function (subCatalog, pkgName, workingDir) { -+ var _a; -+ var workspaceFilePath = path_1.join(workingDir, '../../pnpm-workspace.yaml'); -+ var workspaceContent = fs_extra_1.default.readFileSync(workspaceFilePath, 'utf8'); -+ var workspaceYaml = yaml_1.parse(workspaceContent); -+ if (!workspaceYaml) { -+ console.warn('Could not find pnpm-workspace.yaml in the working directory.'); -+ } -+ var packages = subCatalog && subCatalog.length > 0 -+ ? ((_a = workspaceYaml === null || workspaceYaml === void 0 ? void 0 : workspaceYaml.catalogs) === null || _a === void 0 ? void 0 : _a[subCatalog]) || [] -+ : (workspaceYaml === null || workspaceYaml === void 0 ? void 0 : workspaceYaml.catalog) || []; -+ return packages[pkgName] || '*'; -+}; - var resolveWorkspaces = function (pkg, workingDir) { - var resolveDeps = function (deps) { - return deps -@@ -130,6 +144,12 @@ var resolveWorkspaces = function (pkg, workingDir) { - console.log("Resolving workspace package " + depPkgName + " version ==> " + resolved); - return resolved; - } -+ if (val.startsWith('catalog:')) { -+ var subCatalog = val.split(':')[1]; -+ var resolved = resolveCatalogDepVersion(subCatalog, depPkgName, workingDir); -+ console.log("Resolving catalog package " + depPkgName + " version ==> " + resolved); -+ return resolved; -+ } - return val; - }) - : deps; -@@ -160,9 +180,9 @@ exports.copyPackageToStore = function (options) { return __awaiter(void 0, void - case 2: - npmList = _c.sent(); - filesToCopy = npmList.filter(function (f) { return !ignoreRule.ignores(f); }); -- if (options.files) { -+ if (options.content) { - console.info('Files included in published content:'); -- filesToCopy.forEach(function (f) { -+ filesToCopy.sort().forEach(function (f) { - console.log("- " + f); - }); - console.info("Total " + filesToCopy.length + " files."); From 6f55b1b5044b750fc958fce2ad237a7ebbd01285 Mon Sep 17 00:00:00 2001 From: Nikos Douvlis Date: Mon, 3 Nov 2025 12:07:48 +0200 Subject: [PATCH 22/31] fix createTheme build --- packages/themes/src/createTheme.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/themes/src/createTheme.ts b/packages/themes/src/createTheme.ts index e5bccc19df7..48c1e95ccec 100644 --- a/packages/themes/src/createTheme.ts +++ b/packages/themes/src/createTheme.ts @@ -2,7 +2,7 @@ // theming into its own package import type { BaseTheme, DeepPartial, Elements, Theme } from '@clerk/shared/types'; -import type { InternalTheme } from '../../clerk-js/src/ui/foundations'; +import type { InternalTheme } from '../../ui/src/foundations'; interface CreateClerkThemeParams extends DeepPartial, Pick { /** From 63a2d136dd4ec7831615bd7d02c45d5426b50712 Mon Sep 17 00:00:00 2001 From: Nikos Douvlis Date: Mon, 3 Nov 2025 12:08:39 +0200 Subject: [PATCH 23/31] add clerkUiUrl to nextjs --- packages/nextjs/src/server/constants.ts | 1 + packages/nextjs/src/utils/mergeNextClerkPropsWithEnv.ts | 1 + 2 files changed, 2 insertions(+) diff --git a/packages/nextjs/src/server/constants.ts b/packages/nextjs/src/server/constants.ts index 73c4371486f..4165b2ae4d1 100644 --- a/packages/nextjs/src/server/constants.ts +++ b/packages/nextjs/src/server/constants.ts @@ -3,6 +3,7 @@ import { isTruthy } from '@clerk/shared/underscore'; export const CLERK_JS_VERSION = process.env.NEXT_PUBLIC_CLERK_JS_VERSION || ''; export const CLERK_JS_URL = process.env.NEXT_PUBLIC_CLERK_JS_URL || ''; +export const CLERK_UI_URL = process.env.NEXT_PUBLIC_CLERK_UI_URL || ''; export const API_VERSION = process.env.CLERK_API_VERSION || 'v1'; export const SECRET_KEY = process.env.CLERK_SECRET_KEY || ''; export const MACHINE_SECRET_KEY = process.env.CLERK_MACHINE_SECRET_KEY || ''; diff --git a/packages/nextjs/src/utils/mergeNextClerkPropsWithEnv.ts b/packages/nextjs/src/utils/mergeNextClerkPropsWithEnv.ts index fe8a7937aa3..0f9bfb8c974 100644 --- a/packages/nextjs/src/utils/mergeNextClerkPropsWithEnv.ts +++ b/packages/nextjs/src/utils/mergeNextClerkPropsWithEnv.ts @@ -9,6 +9,7 @@ export const mergeNextClerkPropsWithEnv = (props: Omit Date: Mon, 3 Nov 2025 12:10:38 +0200 Subject: [PATCH 24/31] fix self-referencing imports in shared --- .../shared/src/internal/clerk-js/completeSignUpFlow.ts | 3 ++- packages/shared/src/internal/clerk-js/passkeys.ts | 7 +++++-- .../shared/src/internal/clerk-js/passwords/password.ts | 2 +- packages/shared/src/internal/clerk-js/queryParams.ts | 6 +++--- .../shared/src/internal/clerk-js/queryStateParams.ts | 6 +++--- packages/shared/src/internal/clerk-js/redirectUrls.ts | 9 ++++----- packages/shared/src/internal/clerk-js/sessionTasks.ts | 4 ++-- packages/shared/src/internal/clerk-js/url.ts | 10 +++++----- packages/shared/src/internal/clerk-js/web3.ts | 2 +- 9 files changed, 26 insertions(+), 23 deletions(-) diff --git a/packages/shared/src/internal/clerk-js/completeSignUpFlow.ts b/packages/shared/src/internal/clerk-js/completeSignUpFlow.ts index 8e4a94ebdd1..89a48dde533 100644 --- a/packages/shared/src/internal/clerk-js/completeSignUpFlow.ts +++ b/packages/shared/src/internal/clerk-js/completeSignUpFlow.ts @@ -1,6 +1,7 @@ -import { forwardClerkQueryParams } from '@clerk/shared/internal/clerk-js/queryParams'; import type { SignUpResource } from '@clerk/shared/types'; +import { forwardClerkQueryParams } from './queryParams'; + type CompleteSignUpFlowProps = { signUp: SignUpResource; verifyEmailPath?: string; diff --git a/packages/shared/src/internal/clerk-js/passkeys.ts b/packages/shared/src/internal/clerk-js/passkeys.ts index 8697cdedab8..bbc95650dc3 100644 --- a/packages/shared/src/internal/clerk-js/passkeys.ts +++ b/packages/shared/src/internal/clerk-js/passkeys.ts @@ -1,5 +1,3 @@ -import type { ClerkRuntimeError } from '@clerk/shared/error'; -import { ClerkWebAuthnError } from '@clerk/shared/error'; import type { CredentialReturn, PublicKeyCredentialCreationOptionsJSON, @@ -10,6 +8,9 @@ import type { PublicKeyCredentialWithAuthenticatorAttestationResponse, } from '@clerk/shared/types'; +import type { ClerkRuntimeError } from '../../error'; +import { ClerkWebAuthnError } from '../../error'; + type WebAuthnCreateCredentialReturn = CredentialReturn; type WebAuthnGetCredentialReturn = CredentialReturn; @@ -125,6 +126,7 @@ function handlePublicKeyError(error: Error): ClerkWebAuthnError | ClerkRuntimeEr /** * Map webauthn errors from `navigator.credentials.create()` to Clerk-js errors + * * @param error */ function handlePublicKeyCreateError(error: Error): ClerkWebAuthnError | ClerkRuntimeError | Error { @@ -140,6 +142,7 @@ function handlePublicKeyCreateError(error: Error): ClerkWebAuthnError | ClerkRun /** * Map webauthn errors from `navigator.credentials.get()` to Clerk-js errors + * * @param error */ function handlePublicKeyGetError(error: Error): ClerkWebAuthnError | ClerkRuntimeError | Error { diff --git a/packages/shared/src/internal/clerk-js/passwords/password.ts b/packages/shared/src/internal/clerk-js/passwords/password.ts index 9a53d8fc959..7e8e9e45b99 100644 --- a/packages/shared/src/internal/clerk-js/passwords/password.ts +++ b/packages/shared/src/internal/clerk-js/passwords/password.ts @@ -4,8 +4,8 @@ import type { ValidatePasswordCallbacks, ZxcvbnResult, } from '@clerk/shared/types'; -import { noop } from '@clerk/shared/utils'; +import { noop } from '../../../utils'; import { createValidateComplexity } from './complexity'; import { createValidatePasswordStrength } from './strength'; diff --git a/packages/shared/src/internal/clerk-js/queryParams.ts b/packages/shared/src/internal/clerk-js/queryParams.ts index 045de91564e..8bea94a7c9b 100644 --- a/packages/shared/src/internal/clerk-js/queryParams.ts +++ b/packages/shared/src/internal/clerk-js/queryParams.ts @@ -1,6 +1,6 @@ -import type { EmailLinkErrorCodeStatus } from '@clerk/shared/error'; -import { CLERK_SATELLITE_URL, CLERK_SUFFIXED_COOKIES, CLERK_SYNCED } from '@clerk/shared/internal/clerk-js/constants'; -import { CLERK_NETLIFY_CACHE_BUST_PARAM } from '@clerk/shared/netlifyCacheHandler'; +import type { EmailLinkErrorCodeStatus } from '../../error'; +import { CLERK_NETLIFY_CACHE_BUST_PARAM } from '../../netlifyCacheHandler'; +import { CLERK_SATELLITE_URL, CLERK_SUFFIXED_COOKIES, CLERK_SYNCED } from './constants'; const _ClerkQueryParams = [ '__clerk_status', diff --git a/packages/shared/src/internal/clerk-js/queryStateParams.ts b/packages/shared/src/internal/clerk-js/queryStateParams.ts index cfc16329fd1..6aa496e9c95 100644 --- a/packages/shared/src/internal/clerk-js/queryStateParams.ts +++ b/packages/shared/src/internal/clerk-js/queryStateParams.ts @@ -1,6 +1,6 @@ -import { CLERK_MODAL_STATE } from '@clerk/shared/internal/clerk-js/constants'; -import { encodeB64 } from '@clerk/shared/internal/clerk-js/encoders'; -import { getClerkQueryParam } from '@clerk/shared/internal/clerk-js/queryParams'; +import { CLERK_MODAL_STATE } from './constants'; +import { encodeB64 } from './encoders'; +import { getClerkQueryParam } from './queryParams'; export const readStateParam = () => { const urlClerkState = getClerkQueryParam(CLERK_MODAL_STATE) ?? ''; diff --git a/packages/shared/src/internal/clerk-js/redirectUrls.ts b/packages/shared/src/internal/clerk-js/redirectUrls.ts index b6a94dcef9c..055e6984ec1 100644 --- a/packages/shared/src/internal/clerk-js/redirectUrls.ts +++ b/packages/shared/src/internal/clerk-js/redirectUrls.ts @@ -1,9 +1,8 @@ -import { isAllowedRedirect, relativeToAbsoluteUrl } from '@clerk/shared/internal/clerk-js/url'; -import { applyFunctionToObj, filterProps, removeUndefined } from '@clerk/shared/object'; -import type { ClerkOptions, RedirectOptions } from '@clerk/shared/types'; -import { camelToSnake } from '@clerk/shared/underscore'; - +import { applyFunctionToObj, filterProps, removeUndefined } from '../../object'; +import type { ClerkOptions, RedirectOptions } from '../../types'; +import { camelToSnake } from '../../underscore'; import { assertNoLegacyProp, warnForNewPropShadowingLegacyProp } from './assertNoLegacyProp'; +import { isAllowedRedirect, relativeToAbsoluteUrl } from './url'; type ComponentMode = 'modal' | 'mounted'; diff --git a/packages/shared/src/internal/clerk-js/sessionTasks.ts b/packages/shared/src/internal/clerk-js/sessionTasks.ts index 5d8af0513c5..9190465e92e 100644 --- a/packages/shared/src/internal/clerk-js/sessionTasks.ts +++ b/packages/shared/src/internal/clerk-js/sessionTasks.ts @@ -1,8 +1,8 @@ -import { logger } from '@clerk/shared/logger'; import type { ClerkOptions, SessionResource, SessionTask, SetActiveParams } from '@clerk/shared/types'; -import { buildURL } from './url'; +import { logger } from '../../logger'; import { forwardClerkQueryParams } from './queryParams'; +import { buildURL } from './url'; /** * @internal diff --git a/packages/shared/src/internal/clerk-js/url.ts b/packages/shared/src/internal/clerk-js/url.ts index 57c306133ed..96ae3b279f3 100644 --- a/packages/shared/src/internal/clerk-js/url.ts +++ b/packages/shared/src/internal/clerk-js/url.ts @@ -1,10 +1,10 @@ -import { globs } from '@clerk/shared/globs'; -import { createDevOrStagingUrlCache } from '@clerk/shared/keys'; -import { logger } from '@clerk/shared/logger'; import type { SignUpResource } from '@clerk/shared/types'; -import { camelToSnake } from '@clerk/shared/underscore'; -import { isCurrentDevAccountPortalOrigin, isLegacyDevAccountPortalOrigin } from '@clerk/shared/url'; +import { globs } from '../../globs'; +import { createDevOrStagingUrlCache } from '../../keys'; +import { logger } from '../../logger'; +import { camelToSnake } from '../../underscore'; +import { isCurrentDevAccountPortalOrigin, isLegacyDevAccountPortalOrigin } from '../../url'; import { joinPaths } from './path'; import { getQueryParams } from './querystring'; diff --git a/packages/shared/src/internal/clerk-js/web3.ts b/packages/shared/src/internal/clerk-js/web3.ts index 0a6c165f857..28450bff8e4 100644 --- a/packages/shared/src/internal/clerk-js/web3.ts +++ b/packages/shared/src/internal/clerk-js/web3.ts @@ -1,6 +1,6 @@ -import { clerkUnsupportedEnvironmentWarning } from '@clerk/shared/internal/clerk-js/errors'; import type { Web3Provider } from '@clerk/shared/types'; +import { clerkUnsupportedEnvironmentWarning } from './errors'; import { toHex } from './hex'; import { getInjectedWeb3Providers } from './injectedWeb3Providers'; From 1fc7fc5065d676fd942f163d31e5cb4ce50e78a3 Mon Sep 17 00:00:00 2001 From: Nikos Douvlis Date: Mon, 3 Nov 2025 15:42:45 +0200 Subject: [PATCH 25/31] wip --- eslint.config.mjs | 2 +- packages/clerk-js/package.json | 6 +- packages/clerk-js/rspack.config.js | 127 +------ packages/clerk-js/src/core/clerk.ts | 27 +- packages/clerk-js/src/global.d.ts | 10 + packages/clerk-js/src/index.browser.ts | 11 +- packages/clerk-js/src/index.legacy.browser.ts | 7 +- packages/clerk-js/src/index.ts | 3 - packages/react/src/isomorphicClerk.ts | 32 +- packages/shared/global.d.ts | 1 + .../src/__tests__/loadClerkJsScript.spec.ts | 60 ++++ packages/shared/src/loadClerkJsScript.ts | 268 ++++++++------- packages/shared/src/loadScript.ts | 9 +- packages/shared/tsdown.config.mts | 3 +- packages/ui/bundlewatch-fix.mjs | 26 ++ packages/ui/bundlewatch.config.json | 17 + packages/ui/package.json | 54 +-- packages/ui/rspack.config.js | 320 ++++++++++++++++++ packages/ui/src/Components1.tsx | 41 +++ .../ui/src/components/SignUp/SignUpStart.tsx | 2 +- packages/ui/src/global.d.ts | 23 +- packages/ui/src/index.browser.ts | 37 ++ .../src/router/__tests__/HashRouter.test.tsx | 2 +- .../src/router/__tests__/PathRouter.test.tsx | 2 +- .../ui/src/utils/setWebpackChunkPublicPath.ts | 44 +++ packages/ui/tsconfig.declarations.json | 20 ++ packages/ui/tsconfig.json | 1 - packages/ui/tsdown.config.mts | 24 -- pnpm-lock.yaml | 36 +- scripts/rspack-common.js | 130 +++++++ 30 files changed, 998 insertions(+), 347 deletions(-) create mode 100644 packages/ui/bundlewatch-fix.mjs create mode 100644 packages/ui/bundlewatch.config.json create mode 100644 packages/ui/rspack.config.js create mode 100644 packages/ui/src/Components1.tsx create mode 100644 packages/ui/src/index.browser.ts create mode 100644 packages/ui/src/utils/setWebpackChunkPublicPath.ts create mode 100644 packages/ui/tsconfig.declarations.json delete mode 100644 packages/ui/tsdown.config.mts create mode 100644 scripts/rspack-common.js diff --git a/eslint.config.mjs b/eslint.config.mjs index b02f0199207..c935b457ae7 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -457,7 +457,7 @@ export default tseslint.config([ }, { name: 'repo/jsdoc-internal', - files: ['packages/shared/src/**/internal/**/*.{ts,tsx}'], + files: ['packages/shared/src/**/internal/**/*.{ts,tsx}', 'packages/shared/src/**/*.{ts,tsx}'], plugins: { jsdoc: pluginJsDoc, }, diff --git a/packages/clerk-js/package.json b/packages/clerk-js/package.json index db11444e2f4..78a4381c420 100644 --- a/packages/clerk-js/package.json +++ b/packages/clerk-js/package.json @@ -32,7 +32,6 @@ ], "scripts": { "build": "pnpm build:bundle && pnpm build:declarations", - "postbuild": "node ../../scripts/search-for-rhc.mjs file dist/clerk.no-rhc.mjs", "build:analyze": "rspack build --config rspack.config.js --env production --env variant=\"clerk.browser\" --env analysis --analyze", "build:bundle": "pnpm clean && rspack build --config rspack.config.js --env production", "build:declarations": "tsc -p tsconfig.declarations.json", @@ -52,6 +51,7 @@ "lint": "eslint src", "lint:attw": "attw --pack . --profile node16 --ignore-rules named-exports", "lint:publint": "publint || true", + "postbuild:disabled": "node ../../scripts/search-for-rhc.mjs file dist/clerk.no-rhc.mjs", "test": "vitest --watch=false", "test:sandbox:integration": "playwright test", "test:sandbox:integration:ui": "playwright test --ui", @@ -91,10 +91,6 @@ "minimatch": "^10.0.3", "webpack-merge": "^5.10.0" }, - "peerDependencies": { - "react": "catalog:peer-react", - "react-dom": "catalog:peer-react" - }, "engines": { "node": ">=18.17.0" }, diff --git a/packages/clerk-js/rspack.config.js b/packages/clerk-js/rspack.config.js index 76c48d467cc..b5a11797505 100644 --- a/packages/clerk-js/rspack.config.js +++ b/packages/clerk-js/rspack.config.js @@ -5,6 +5,7 @@ const path = require('path'); const { merge } = require('webpack-merge'); const ReactRefreshPlugin = require('@rspack/plugin-react-refresh'); const { RsdoctorRspackPlugin } = require('@rsdoctor/rspack-plugin'); +const { svgLoader, typescriptLoaderProd, typescriptLoaderDev } = require('../../scripts/rspack-common'); const isProduction = mode => mode === 'production'; const isDevelopment = mode => !isProduction(mode); @@ -117,20 +118,6 @@ const common = ({ mode, variant, disableRHC = false }) => { chunks: 'all', enforce: true, }, - /** - * Sign up is shared between the SignUp component and the SignIn component. - */ - signUp: { - minChunks: 1, - name: 'signup', - test: module => !!(module.resource && module.resource.includes('/ui/components/SignUp')), - }, - common: { - minChunks: 1, - name: 'ui-common', - priority: -20, - test: module => !!(module.resource && !module.resource.includes('/ui/components')), - }, defaultVendors: { minChunks: 1, test: /[\\/]node_modules[\\/]/, @@ -152,116 +139,6 @@ const common = ({ mode, variant, disableRHC = false }) => { }; }; -/** @type { () => (import('@rspack/core').RuleSetRule) } */ -const svgLoader = () => { - return { - test: /\.svg$/, - resolve: { - fullySpecified: false, - }, - use: { - loader: '@svgr/webpack', - options: { - svgo: true, - svgoConfig: { - floatPrecision: 3, - transformPrecision: 1, - plugins: ['preset-default', 'removeDimensions', 'removeStyleElement'], - }, - }, - }, - }; -}; - -/** @type { (opts?: { targets?: string, useCoreJs?: boolean }) => (import('@rspack/core').RuleSetRule[]) } */ -const typescriptLoaderProd = ( - { targets = packageJSON.browserslist, useCoreJs = false } = { targets: packageJSON.browserslist, useCoreJs: false }, -) => { - return [ - { - test: /\.(jsx?|tsx?)$/, - exclude: /node_modules/, - use: { - loader: 'builtin:swc-loader', - options: { - env: { - targets, - ...(useCoreJs - ? { - mode: 'usage', - coreJs: require('core-js/package.json').version, - } - : {}), - }, - jsc: { - parser: { - syntax: 'typescript', - tsx: true, - }, - externalHelpers: true, - transform: { - react: { - runtime: 'automatic', - importSource: '@emotion/react', - development: false, - refresh: false, - }, - }, - }, - }, - }, - }, - { - test: /\.m?js$/, - exclude: /node_modules[\\/]core-js/, - use: { - loader: 'builtin:swc-loader', - options: { - env: { - targets, - ...(useCoreJs - ? { - mode: 'usage', - coreJs: '3.41.0', - } - : {}), - }, - isModule: 'unknown', - }, - }, - }, - ]; -}; - -/** @type { () => (import('@rspack/core').RuleSetRule[]) } */ -const typescriptLoaderDev = () => { - return [ - { - test: /\.(jsx?|tsx?)$/, - exclude: /node_modules/, - loader: 'builtin:swc-loader', - options: { - jsc: { - target: 'esnext', - parser: { - syntax: 'typescript', - tsx: true, - }, - externalHelpers: true, - transform: { - react: { - runtime: 'automatic', - importSource: '@emotion/react', - development: true, - refresh: true, - }, - }, - }, - }, - }, - ]; -}; - /** * Used for production builds that have dynamicly loaded chunks. * @type { (opts?: { targets?: string, useCoreJs?: boolean }) => (import('@rspack/core').Configuration) } @@ -613,7 +490,7 @@ const devConfig = ({ mode, env }) => { cache: true, experiments: { cache: { - type: 'persistent', + type: 'memory', }, }, }; diff --git a/packages/clerk-js/src/core/clerk.ts b/packages/clerk-js/src/core/clerk.ts index da1b2578cb6..9decd77d93d 100644 --- a/packages/clerk-js/src/core/clerk.ts +++ b/packages/clerk-js/src/core/clerk.ts @@ -19,7 +19,12 @@ import { noOrganizationExists, noUserExists, } from '@clerk/shared/internal/clerk-js/componentGuards'; -import { ERROR_CODES } from '@clerk/shared/internal/clerk-js/constants'; +import { + CLERK_SATELLITE_URL, + CLERK_SUFFIXED_COOKIES, + CLERK_SYNCED, + ERROR_CODES, +} from '@clerk/shared/internal/clerk-js/constants'; import { RedirectUrls } from '@clerk/shared/internal/clerk-js/redirectUrls'; import { getTaskEndpoint, @@ -113,7 +118,25 @@ import type { } from '@clerk/shared/types'; import { addClerkPrefix, isAbsoluteUrl, stripScheme } from '@clerk/shared/url'; import { allSettled, handleValueOrFn, noop } from '@clerk/shared/utils'; -import type { MountComponentRenderer } from '@clerk/ui/internal'; + +// TODO: Replace with proper type from @clerk/ui +type MountComponentRenderer = ( + clerk: any, + environment: any, + options: any, +) => { + ensureMounted: (options?: { preloadHint?: string }) => Promise<{ + mountImpersonationFab: () => void; + updateProps: (props: any) => void; + openModal: (name: string, props: any) => void; + closeModal: (name: string) => void; + openDrawer: (name: string, props: any) => void; + closeDrawer: (name: string) => void; + mountComponent: (config: any) => void; + unmountComponent: (config: any) => void; + prefetch: (name: string) => void; + }>; +}; import { debugLogger, initDebugLogger } from '@/utils/debug'; diff --git a/packages/clerk-js/src/global.d.ts b/packages/clerk-js/src/global.d.ts index 50a17aae822..cf6fc523c1b 100644 --- a/packages/clerk-js/src/global.d.ts +++ b/packages/clerk-js/src/global.d.ts @@ -17,4 +17,14 @@ declare const __BUILD_VARIANT_CHIPS__: boolean; interface Window { __unstable__onBeforeSetActive: (intent?: 'sign-out') => Promise | void; __unstable__onAfterSetActive: () => Promise | void; + + /** + * TODO @nikos: implment type + * UI components loaded from @clerk/ui browser bundle. + * This is injected by the @clerk/ui package and consumed by clerk-js. + */ + __unstable_ClerkUi?: { + mountComponentRenderer: any; + version: string; + }; } diff --git a/packages/clerk-js/src/index.browser.ts b/packages/clerk-js/src/index.browser.ts index 82bd326c1a6..9e33caaf982 100644 --- a/packages/clerk-js/src/index.browser.ts +++ b/packages/clerk-js/src/index.browser.ts @@ -1,13 +1,14 @@ // It's crucial this is the first import, // otherwise chunk loading will not work -// eslint-disable-next-line + import './utils/setWebpackChunkPublicPath'; import { Clerk } from './core/clerk'; -import { mountComponentRenderer } from './ui/Components'; - -Clerk.mountComponentRenderer = mountComponentRenderer; +// Load UI components from window (injected by @clerk/ui browser bundle) +if (window.__unstable_ClerkUi) { + Clerk.mountComponentRenderer = window.__unstable_ClerkUi.mountComponentRenderer; +} const publishableKey = document.querySelector('script[data-clerk-publishable-key]')?.getAttribute('data-clerk-publishable-key') || @@ -26,7 +27,7 @@ const domain = if (!window.Clerk) { window.Clerk = new Clerk(publishableKey, { proxyUrl, - // @ts-expect-error + // @ts-expect-error - domain is not typed domain, }); } diff --git a/packages/clerk-js/src/index.legacy.browser.ts b/packages/clerk-js/src/index.legacy.browser.ts index 7d0d031c6cc..9ce87913580 100644 --- a/packages/clerk-js/src/index.legacy.browser.ts +++ b/packages/clerk-js/src/index.legacy.browser.ts @@ -7,9 +7,10 @@ import 'regenerator-runtime/runtime'; import { Clerk } from './core/clerk'; -import { mountComponentRenderer } from './ui/Components'; - -Clerk.mountComponentRenderer = mountComponentRenderer; +// Load UI components from window (injected by @clerk/ui browser bundle) +if (window.__unstable_ClerkUi) { + Clerk.mountComponentRenderer = window.__unstable_ClerkUi.mountComponentRenderer; +} const publishableKey = document.querySelector('script[data-clerk-publishable-key]')?.getAttribute('data-clerk-publishable-key') || diff --git a/packages/clerk-js/src/index.ts b/packages/clerk-js/src/index.ts index 2f9acf96b6e..f7ad89e436d 100644 --- a/packages/clerk-js/src/index.ts +++ b/packages/clerk-js/src/index.ts @@ -1,7 +1,6 @@ import 'regenerator-runtime/runtime'; import { Clerk } from './core/clerk'; -import { mountComponentRenderer } from './ui/Components'; export { ClerkAPIResponseError, @@ -19,8 +18,6 @@ export { } from '@clerk/shared/error'; export { Clerk }; -Clerk.mountComponentRenderer = mountComponentRenderer; - if (module.hot) { module.hot.accept(); } diff --git a/packages/react/src/isomorphicClerk.ts b/packages/react/src/isomorphicClerk.ts index e70cb43df35..500cfcfefcb 100644 --- a/packages/react/src/isomorphicClerk.ts +++ b/packages/react/src/isomorphicClerk.ts @@ -1,6 +1,6 @@ import { inBrowser } from '@clerk/shared/browser'; import { clerkEvents, createClerkEventBus } from '@clerk/shared/clerkEventBus'; -import { loadClerkJsScript } from '@clerk/shared/loadClerkJsScript'; +import { loadClerkJsScript, loadClerkUiScript } from '@clerk/shared/loadClerkJsScript'; import type { __internal_CheckoutProps, __internal_OAuthConsentProps, @@ -81,6 +81,10 @@ const SDK_METADATA = { export interface Global { Clerk?: HeadlessBrowserClerk | BrowserClerk; + __unstable_ClerkUi?: { + mountComponentRenderer: any; + version: string; + }; } declare const global: Global; @@ -429,6 +433,8 @@ export class IsomorphicClerk implements IsomorphicLoadedClerk { } async loadClerkJS(): Promise { + console.log('local clerk react'); + if (this.mode !== 'browser' || this.loaded) { return; } @@ -475,20 +481,26 @@ export class IsomorphicClerk implements IsomorphicLoadedClerk { global.Clerk = c; } else if (!__BUILD_DISABLE_RHC__) { // Hot-load latest ClerkJS from Clerk CDN - if (!global.Clerk) { - await loadClerkJsScript({ - ...this.options, - publishableKey: this.#publishableKey, - proxyUrl: this.proxyUrl, - domain: this.domain, - nonce: this.options.nonce, - }); - } + const scriptLoadingOptions = { + ...this.options, + publishableKey: this.#publishableKey, + proxyUrl: this.proxyUrl, + domain: this.domain, + nonce: this.options.nonce, + }; + + await Promise.all([ + global.Clerk ? Promise.resolve() : loadClerkJsScript(scriptLoadingOptions), + global.__unstable_ClerkUi ? Promise.resolve() : loadClerkUiScript(scriptLoadingOptions), + ]); if (!global.Clerk) { + // TODO @nikos: somehow throw if clerk ui failed to load but it was not headless throw new Error('Failed to download latest ClerkJS. Contact support@clerk.com.'); } + console.log('all loaded'); + this.beforeLoad(global.Clerk); await global.Clerk.load(this.options); } diff --git a/packages/shared/global.d.ts b/packages/shared/global.d.ts index 5776b61ae17..5f8f225c39d 100644 --- a/packages/shared/global.d.ts +++ b/packages/shared/global.d.ts @@ -2,6 +2,7 @@ declare const PACKAGE_NAME: string; declare const PACKAGE_VERSION: string; declare const JS_PACKAGE_VERSION: string; declare const __DEV__: boolean; +declare const __BUILD_DISABLE_RHC__: boolean; interface ImportMetaEnv { readonly [key: string]: string; diff --git a/packages/shared/src/__tests__/loadClerkJsScript.spec.ts b/packages/shared/src/__tests__/loadClerkJsScript.spec.ts index 58e3d728ec4..af593ce79a1 100644 --- a/packages/shared/src/__tests__/loadClerkJsScript.spec.ts +++ b/packages/shared/src/__tests__/loadClerkJsScript.spec.ts @@ -4,6 +4,7 @@ import { afterEach, beforeEach, describe, expect, test, vi } from 'vitest'; import { ClerkRuntimeError } from '../error'; import { buildClerkJsScriptAttributes, + buildScriptHost, clerkJsScriptUrl, loadClerkJsScript, setClerkJsLoadingErrorPackageName, @@ -186,6 +187,65 @@ describe('clerkJsScriptUrl()', () => { }); }); +describe('buildScriptHost()', () => { + const mockDevPublishableKey = 'pk_test_Zm9vLWJhci0xMy5jbGVyay5hY2NvdW50cy5kZXYk'; + const mockProdPublishableKey = 'pk_live_ZXhhbXBsZS5jbGVyay5hY2NvdW50cy5kZXYk'; + const mockProxyUrl = 'https://proxy.clerk.com'; + const mockDomain = 'custom.com'; + + test('returns frontendApi from publishableKey when no proxyUrl or domain', () => { + const result = buildScriptHost({ publishableKey: mockDevPublishableKey }); + expect(result).toBe('foo-bar-13.clerk.accounts.dev'); + }); + + test('returns proxyUrl host when proxyUrl is provided and valid', () => { + const result = buildScriptHost({ publishableKey: mockDevPublishableKey, proxyUrl: mockProxyUrl }); + expect(result).toBe('proxy.clerk.com'); + }); + + test('returns domain with clerk prefix when domain is provided for production key', () => { + const result = buildScriptHost({ publishableKey: mockProdPublishableKey, domain: mockDomain }); + expect(result).toBe('clerk.custom.com'); + }); + + test('returns frontendApi when domain is provided for development key', () => { + const result = buildScriptHost({ publishableKey: mockDevPublishableKey, domain: mockDomain }); + expect(result).toBe('foo-bar-13.clerk.accounts.dev'); + }); + + test('prioritizes proxyUrl over domain', () => { + const result = buildScriptHost({ + publishableKey: mockProdPublishableKey, + proxyUrl: mockProxyUrl, + domain: mockDomain, + }); + expect(result).toBe('proxy.clerk.com'); + }); + + test('handles relative proxyUrl', () => { + // Mock window.location for relative URL conversion + const originalLocation = global.window.location; + Object.defineProperty(global.window, 'location', { + get() { + return { + origin: 'https://example.com', + }; + }, + configurable: true, + }); + + const result = buildScriptHost({ publishableKey: mockDevPublishableKey, proxyUrl: '/__clerk' }); + // Relative URLs are converted to absolute, then protocol is stripped + expect(result).toBe('example.com/__clerk'); + + // Restore original location + Object.defineProperty(global.window, 'location', { + value: originalLocation, + writable: true, + }); + }); +}); + describe('buildClerkJsScriptAttributes()', () => { const mockPublishableKey = 'pk_test_Zm9vLWJhci0xMy5jbGVyay5hY2NvdW50cy5kZXYk'; const mockProxyUrl = 'https://proxy.clerk.com'; diff --git a/packages/shared/src/loadClerkJsScript.ts b/packages/shared/src/loadClerkJsScript.ts index d9bd96b8ba2..b7b821e3a3c 100644 --- a/packages/shared/src/loadClerkJsScript.ts +++ b/packages/shared/src/loadClerkJsScript.ts @@ -6,28 +6,11 @@ import type { ClerkOptions, SDKMetadata, Without } from './types'; import { addClerkPrefix } from './url'; import { versionSelector } from './versionSelector'; -const ERROR_CODE = 'failed_to_load_clerk_js'; -const ERROR_CODE_TIMEOUT = 'failed_to_load_clerk_js_timeout'; -const FAILED_TO_LOAD_ERROR = 'Failed to load Clerk'; - const { isDevOrStagingUrl } = createDevOrStagingUrlCache(); const errorThrower = buildErrorThrower({ packageName: '@clerk/shared' }); -/** - * Sets the package name for error messages during ClerkJS script loading. - * - * @param packageName - The name of the package to use in error messages (e.g., '@clerk/react'). - * @example - * ```typescript - * setClerkJsLoadingErrorPackageName('@clerk/react'); - * ``` - */ -export function setClerkJsLoadingErrorPackageName(packageName: string) { - errorThrower.setPackageName({ packageName }); -} - -type LoadClerkJsScriptOptions = Without & { +export type LoadClerkJsScriptOptions = Without & { publishableKey: string; clerkJSUrl?: string; clerkJSVariant?: 'headless' | ''; @@ -44,78 +27,32 @@ type LoadClerkJsScriptOptions = Without & { scriptLoadTimeout?: number; }; +export type LoadClerkUiScriptOptions = Without & { + publishableKey: string; + clerkUiUrl?: string; + proxyUrl?: string; + domain?: string; + nonce?: string; + scriptLoadTimeout?: number; +}; + /** * Validates that window.Clerk exists and is properly initialized. * This ensures we don't have false positives where the script loads but Clerk is malformed. * * @returns `true` if window.Clerk exists and has the expected structure with a load method. */ -function isClerkProperlyLoaded(): boolean { - if (typeof window === 'undefined' || !(window as any).Clerk) { +function isClerkGlobalProperlyLoaded(prop: 'Clerk' | '__unstable_ClerkUi'): boolean { + if (typeof window === 'undefined' || !(window as any)[prop]) { return false; } // Basic validation that window.Clerk has the expected structure - const clerk = (window as any).Clerk; - return typeof clerk === 'object' && typeof clerk.load === 'function'; -} - -/** - * Waits for Clerk to be properly loaded with a timeout mechanism. - * Uses polling to check if Clerk becomes available within the specified timeout. - * - * @param timeoutMs - Maximum time to wait in milliseconds. - * @returns Promise that resolves with null if Clerk loads successfully, or rejects with an error if timeout is reached. - */ -function waitForClerkWithTimeout(timeoutMs: number): Promise { - return new Promise((resolve, reject) => { - let resolved = false; - - const cleanup = (timeoutId: ReturnType, pollInterval: ReturnType) => { - clearTimeout(timeoutId); - clearInterval(pollInterval); - }; - - const checkAndResolve = () => { - if (resolved) { - return; - } - - if (isClerkProperlyLoaded()) { - resolved = true; - cleanup(timeoutId, pollInterval); - resolve(null); - } - }; - - const handleTimeout = () => { - if (resolved) { - return; - } - - resolved = true; - cleanup(timeoutId, pollInterval); - - if (!isClerkProperlyLoaded()) { - reject(new ClerkRuntimeError(FAILED_TO_LOAD_ERROR, { code: ERROR_CODE_TIMEOUT })); - } else { - resolve(null); - } - }; - - const timeoutId = setTimeout(handleTimeout, timeoutMs); - - checkAndResolve(); - - const pollInterval = setInterval(() => { - if (resolved) { - clearInterval(pollInterval); - return; - } - checkAndResolve(); - }, 100); - }); + const val = (window as any)[prop]; + return typeof val === 'object' && (val.load ? typeof val.load === 'function' : true); } +const isClerkProperlyLoaded = () => isClerkGlobalProperlyLoaded('Clerk'); +const isClerkUiProperlyLoaded = () => isClerkGlobalProperlyLoaded('__unstable_ClerkUi'); /** * Hotloads the Clerk JS script with robust failure detection. @@ -138,8 +75,13 @@ function waitForClerkWithTimeout(timeoutMs: number): Promise => { +export const loadClerkJsScript = async (opts?: LoadClerkJsScriptOptions): Promise => { const timeout = opts?.scriptLoadTimeout ?? 15000; + const rejectWith = (error?: Error) => + new ClerkRuntimeError('Failed to load Clerk JS' + (error?.message ? `, ${error.message}` : ''), { + code: 'failed_to_load_clerk_js', + cause: error, + }); if (isClerkProperlyLoaded()) { return null; @@ -148,7 +90,7 @@ const loadClerkJsScript = async (opts?: LoadClerkJsScriptOptions): Promise('script[data-clerk-js-script]'); if (existingScript) { - return waitForClerkWithTimeout(timeout); + return waitForPredicateWithTimeout(timeout, isClerkProperlyLoaded, rejectWith()); } if (!opts?.publishableKey) { @@ -156,7 +98,7 @@ const loadClerkJsScript = async (opts?: LoadClerkJsScriptOptions): Promise { - throw new ClerkRuntimeError(FAILED_TO_LOAD_ERROR + (error.message ? `, ${error.message}` : ''), { - code: ERROR_CODE, + throw rejectWith(error); + }); + + return loadPromise; +}; + +export const loadClerkUiScript = async (opts?: LoadClerkUiScriptOptions): Promise => { + console.log('here?'); + + const timeout = opts?.scriptLoadTimeout ?? 15000; + const rejectWith = (error?: Error) => + new ClerkRuntimeError('Failed to load Clerk UI' + (error?.message ? `, ${error.message}` : ''), { + code: 'failed_to_load_clerk_ui', cause: error, }); + + if (isClerkUiProperlyLoaded()) { + return null; + } + + const existingScript = document.querySelector('script[data-clerk-ui-script]'); + + if (existingScript) { + return waitForPredicateWithTimeout(timeout, isClerkUiProperlyLoaded, rejectWith()); + } + + if (!opts?.publishableKey) { + errorThrower.throwMissingPublishableKeyError(); + return null; + } + + const loadPromise = waitForPredicateWithTimeout(timeout, isClerkUiProperlyLoaded, rejectWith()); + loadScript(clerkUiScriptUrl(opts), { + async: true, + crossOrigin: 'anonymous', + nonce: opts.nonce, + }).catch(error => { + console.log('nikos 2', error); + throw rejectWith(error); }); return loadPromise; }; -/** - * Generates a Clerk JS script URL based on the provided options. - * - * @param opts - The options to use when building the Clerk JS script URL. - * @returns The complete URL to the Clerk JS script. - * - * @example - * ```typescript - * const url = clerkJsScriptUrl({ publishableKey: 'pk_test_...' }); - * // Returns: "https://example.clerk.accounts.dev/npm/@clerk/clerk-js@5/dist/clerk.browser.js" - * ``` - */ -const clerkJsScriptUrl = (opts: LoadClerkJsScriptOptions) => { +export const clerkJsScriptUrl = (opts: LoadClerkJsScriptOptions) => { const { clerkJSUrl, clerkJSVariant, clerkJSVersion, proxyUrl, domain, publishableKey } = opts; if (clerkJSUrl) { return clerkJSUrl; } - let scriptHost = ''; - if (!!proxyUrl && isValidProxyUrl(proxyUrl)) { - scriptHost = proxyUrlToAbsoluteURL(proxyUrl).replace(/http(s)?:\/\//, ''); - } else if (domain && !isDevOrStagingUrl(parsePublishableKey(publishableKey)?.frontendApi || '')) { - scriptHost = addClerkPrefix(domain); - } else { - scriptHost = parsePublishableKey(publishableKey)?.frontendApi || ''; - } - + const scriptHost = buildScriptHost({ publishableKey, proxyUrl, domain }); const variant = clerkJSVariant ? `${clerkJSVariant.replace(/\.+$/, '')}.` : ''; const version = versionSelector(clerkJSVersion); return `https://${scriptHost}/npm/@clerk/clerk-js@${version}/dist/clerk.${variant}browser.js`; }; -/** - * Builds an object of Clerk JS script attributes based on the provided options. - * - * @param options - The options containing the values for script attributes. - * @returns An object containing data attributes to be applied to the script element. - */ -const buildClerkJsScriptAttributes = (options: LoadClerkJsScriptOptions) => { +export const clerkUiScriptUrl = (opts: LoadClerkUiScriptOptions) => { + const { clerkUiUrl, proxyUrl, domain, publishableKey } = opts; + + if (clerkUiUrl) { + console.log('got clerk ui url', clerkUiUrl); + + return clerkUiUrl; + } + + const scriptHost = buildScriptHost({ publishableKey, proxyUrl, domain }); + // TODO @nikos add version selector + return `https://${scriptHost}/npm/@clerk/ui@latest/dist/ui.browser.js`; +}; + +export const buildClerkJsScriptAttributes = (options: LoadClerkJsScriptOptions) => { const obj: Record = {}; if (options.publishableKey) { @@ -234,12 +199,6 @@ const buildClerkJsScriptAttributes = (options: LoadClerkJsScriptOptions) => { return obj; }; -/** - * Returns a function that applies Clerk JS script attributes to a script element. - * - * @param options - The options containing the values for script attributes. - * @returns A function that accepts a script element and applies the attributes to it. - */ const applyClerkJsScriptAttributes = (options: LoadClerkJsScriptOptions) => (script: HTMLScriptElement) => { const attributes = buildClerkJsScriptAttributes(options); for (const attribute in attributes) { @@ -247,5 +206,72 @@ const applyClerkJsScriptAttributes = (options: LoadClerkJsScriptOptions) => (scr } }; -export { buildClerkJsScriptAttributes, clerkJsScriptUrl, loadClerkJsScript }; -export type { LoadClerkJsScriptOptions }; +export const buildScriptHost = (opts: { publishableKey: string; proxyUrl?: string; domain?: string }) => { + const { proxyUrl, domain, publishableKey } = opts; + + if (!!proxyUrl && isValidProxyUrl(proxyUrl)) { + return proxyUrlToAbsoluteURL(proxyUrl).replace(/http(s)?:\/\//, ''); + } else if (domain && !isDevOrStagingUrl(parsePublishableKey(publishableKey)?.frontendApi || '')) { + return addClerkPrefix(domain); + } else { + return parsePublishableKey(publishableKey)?.frontendApi || ''; + } +}; + +function waitForPredicateWithTimeout( + timeoutMs: number, + predicate: () => boolean, + rejectWith: Error, +): Promise { + return new Promise((resolve, reject) => { + let resolved = false; + + const cleanup = (timeoutId: ReturnType, pollInterval: ReturnType) => { + clearTimeout(timeoutId); + clearInterval(pollInterval); + }; + + const checkAndResolve = () => { + if (resolved) { + return; + } + + if (predicate()) { + resolved = true; + cleanup(timeoutId, pollInterval); + resolve(null); + } + }; + + const handleTimeout = () => { + if (resolved) { + return; + } + + resolved = true; + cleanup(timeoutId, pollInterval); + + if (!predicate()) { + reject(rejectWith); + } else { + resolve(null); + } + }; + + const timeoutId = setTimeout(handleTimeout, timeoutMs); + + checkAndResolve(); + + const pollInterval = setInterval(() => { + if (resolved) { + clearInterval(pollInterval); + return; + } + checkAndResolve(); + }, 100); + }); +} + +export function setClerkJsLoadingErrorPackageName(packageName: string) { + errorThrower.setPackageName({ packageName }); +} diff --git a/packages/shared/src/loadScript.ts b/packages/shared/src/loadScript.ts index fe8124d3997..c9fc4a4536d 100644 --- a/packages/shared/src/loadScript.ts +++ b/packages/shared/src/loadScript.ts @@ -36,6 +36,8 @@ export async function loadScript(src = '', opts: LoadScriptOptions): Promise { + console.log('this loaded ', src); + script.remove(); resolve(script); }); @@ -52,5 +54,10 @@ export async function loadScript(src = '', opts: LoadScriptOptions): Promise iterations <= 5 }); + return retry(load, { + shouldRetry: (_, iterations) => { + console.log('nikos 3', _, iterations); + return iterations <= 5; + }, + }); } diff --git a/packages/shared/tsdown.config.mts b/packages/shared/tsdown.config.mts index e98bf78cf6e..1c366aa311a 100644 --- a/packages/shared/tsdown.config.mts +++ b/packages/shared/tsdown.config.mts @@ -8,7 +8,7 @@ export default defineConfig(({ watch }) => { const common = { dts: true, sourcemap: true, - clean: true, + clean: false, target: 'es2022', platform: 'neutral', external: ['react', 'react-dom'], @@ -19,6 +19,7 @@ export default defineConfig(({ watch }) => { PACKAGE_VERSION: `"${sharedPackage.version}"`, JS_PACKAGE_VERSION: `"${clerkJsPackage.version}"`, __DEV__: `${watch}`, + __BUILD_DISABLE_RHC__: JSON.stringify(false), }, } satisfies Options; diff --git a/packages/ui/bundlewatch-fix.mjs b/packages/ui/bundlewatch-fix.mjs new file mode 100644 index 00000000000..ab20dbc3eb6 --- /dev/null +++ b/packages/ui/bundlewatch-fix.mjs @@ -0,0 +1,26 @@ +import { writeFile } from 'node:fs/promises'; +import bundlewatch from 'bundlewatch'; +import { minimatch } from 'minimatch'; +import { format } from 'prettier'; +import { $ } from 'zx'; +import bundlewatchConfig from './bundlewatch.config.json' with { type: 'json' }; + +const { fullResults } = await bundlewatch.default(bundlewatchConfig); +const failedFiles = fullResults.filter(result => result.status === 'fail'); + +for (const file of failedFiles) { + const matchingFileIndex = bundlewatchConfig.files.findIndex(f => { + return minimatch(file.filePath, f.path); + }); + if (matchingFileIndex !== -1) { + // update maxSize to the file size plus 1KB, rounded up to the nearest KB + bundlewatchConfig.files[matchingFileIndex].maxSize = `${Math.ceil((file.size + 1024) / 1024)}KB`; + } +} + +const formattedConfig = await format(JSON.stringify(bundlewatchConfig), { parser: 'json' }); +await writeFile('./bundlewatch.config.json', formattedConfig); +// print the git diff of the bundlewatch.config.json file +const diff = await $`git -c color.ui=always --no-pager diff bundlewatch.config.json`.then(res => res.stdout); +console.log(diff); +console.log('Bundlewatch config updated!'); diff --git a/packages/ui/bundlewatch.config.json b/packages/ui/bundlewatch.config.json new file mode 100644 index 00000000000..e952bb2b7cc --- /dev/null +++ b/packages/ui/bundlewatch.config.json @@ -0,0 +1,17 @@ +{ + "files": [ + { "path": "./dist/browser/ui.browser.js", "maxSize": "10KB" }, + { "path": "./dist/browser/framework.js", "maxSize": "150KB" }, + { "path": "./dist/browser/emotion-vendor.js", "maxSize": "80KB" }, + { "path": "./dist/browser/floating-ui-vendor*.js", "maxSize": "30KB" }, + { "path": "./dist/browser/vendors*.js", "maxSize": "40KB" }, + { "path": "./dist/browser/zxcvbn-ts-core*.js", "maxSize": "45KB" }, + { "path": "./dist/browser/zxcvbn-common*.js", "maxSize": "30KB" }, + { "path": "./dist/browser/signup*.js", "maxSize": "10KB" }, + { "path": "./dist/browser/signin*.js", "maxSize": "20KB" }, + { "path": "./dist/browser/user-profile*.js", "maxSize": "15KB" }, + { "path": "./dist/browser/organization-profile*.js", "maxSize": "10KB" }, + { "path": "./dist/browser/user-button*.js", "maxSize": "5KB" }, + { "path": "./dist/browser/organization-switcher*.js", "maxSize": "5KB" } + ] +} diff --git a/packages/ui/package.json b/packages/ui/package.json index 627e9154910..a93ad8687ec 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -10,27 +10,35 @@ "license": "MIT", "author": "Clerk", "sideEffects": false, - "type": "module", "exports": { - "./*": { - "import": { - "types": "./dist/*.d.mts", - "default": "./dist/*.mjs" - }, - "require": { - "types": "./dist/*.d.ts", - "default": "./dist/*.js" - } + ".": { + "types": "./dist/types/index.d.ts", + "import": "./dist/ui.mjs", + "require": "./dist/ui.js", + "default": "./dist/ui.mjs" + }, + "./internal": { + "types": "./dist/types/internal.d.ts", + "import": "./dist/ui.mjs", + "require": "./dist/ui.js", + "default": "./dist/ui.mjs" }, "./package.json": "./package.json" }, + "types": "dist/types/index.d.ts", "files": [ "dist" ], "scripts": { - "build": "tsdown", + "build": "pnpm build:bundle && pnpm build:declarations", + "build:analyze": "rspack build --config rspack.config.js --env production --analyze", + "build:bundle": "rspack build --config rspack.config.js --env production", + "build:declarations": "tsc -p tsconfig.declarations.json", + "bundlewatch": "FORCE_COLOR=1 bundlewatch --config bundlewatch.config.json", + "bundlewatch:fix": "node bundlewatch-fix.mjs", "clean": "rimraf ./dist", - "dev": "tsdown --watch src", + "dev": "rspack serve --config rspack.config.js", + "dev:origin": "rspack serve --config rspack.config.js --env devOrigin=http://localhost:${PORT:-4001}", "format": "node ../../scripts/format-package.mjs", "format:check": "node ../../scripts/format-package.mjs --check", "lint": "eslint src", @@ -55,25 +63,21 @@ "dequal": "2.0.3", "input-otp": "1.4.2", "qrcode.react": "4.2.0", + "react": "catalog:peer-react", + "react-dom": "catalog:peer-react", "swr": "2.3.4" }, "devDependencies": { + "@rspack/cli": "^1.4.11", + "@rspack/core": "^1.4.11", + "@rspack/plugin-react-refresh": "^1.5.0", "@stripe/react-stripe-js": "3.1.1", "@stripe/stripe-js": "5.6.0", + "@svgr/webpack": "^6.5.1", + "@types/webpack-env": "^1.18.8", + "bundlewatch": "^0.4.1", "cross-fetch": "^4.1.0", - "rolldown": "catalog:repo" - }, - "peerDependencies": { - "react": "catalog:peer-react", - "react-dom": "catalog:peer-react" - }, - "peerDependenciesMeta": { - "react": { - "optional": true - }, - "react-dom": { - "optional": true - } + "webpack-merge": "^5.10.0" }, "engines": { "node": ">=20.9.0" diff --git a/packages/ui/rspack.config.js b/packages/ui/rspack.config.js new file mode 100644 index 00000000000..a554fcf0e59 --- /dev/null +++ b/packages/ui/rspack.config.js @@ -0,0 +1,320 @@ +// @ts-check +const rspack = require('@rspack/core'); +const packageJSON = require('./package.json'); +const path = require('path'); +const { merge } = require('webpack-merge'); +const ReactRefreshPlugin = require('@rspack/plugin-react-refresh'); +const { svgLoader, typescriptLoaderProd, typescriptLoaderDev } = require('../../scripts/rspack-common'); + +const isProduction = mode => mode === 'production'; +const isDevelopment = mode => !isProduction(mode); + +const variants = { + uiBrowser: 'ui.browser', + ui: 'ui', +}; + +const variantToSourceFile = { + [variants.uiBrowser]: './src/index.browser.ts', + [variants.ui]: './src/index.ts', +}; + +/** + * Common configuration for all builds + * @param {object} config + * @param {'development'|'production'} config.mode + * @param {string} config.variant + * @returns {import('@rspack/core').Configuration} + */ +const common = ({ mode, variant }) => { + return { + mode, + resolve: { + alias: { + '@/ui': path.resolve(__dirname, './src'), + '@': path.resolve(__dirname, './src'), + }, + extensions: ['.ts', '.tsx', '.mjs', '.js', '.jsx'], + }, + plugins: [ + new rspack.DefinePlugin({ + __DEV__: isDevelopment(mode), + PACKAGE_VERSION: JSON.stringify(packageJSON.version), + __PKG_VERSION__: JSON.stringify(packageJSON.version), + PACKAGE_NAME: JSON.stringify(packageJSON.name), + }), + new rspack.EnvironmentPlugin({ + NODE_ENV: mode, + }), + ].filter(Boolean), + output: { + chunkFilename: `[name]_ui_[fullhash:6]_${packageJSON.version}.js`, + }, + optimization: { + splitChunks: { + cacheGroups: { + // Component-specific chunks + signUp: { + test: /[\\/]src[\\/]components[\\/]SignUp[\\/]/, + name: 'signup', + chunks: 'all', + priority: 10, + }, + signIn: { + test: /[\\/]src[\\/]components[\\/]SignIn[\\/]/, + name: 'signin', + chunks: 'all', + priority: 10, + }, + userProfile: { + test: /[\\/]src[\\/]components[\\/]UserProfile[\\/]/, + name: 'user-profile', + chunks: 'all', + priority: 10, + }, + organizationProfile: { + test: /[\\/]src[\\/]components[\\/]OrganizationProfile[\\/]/, + name: 'organization-profile', + chunks: 'all', + priority: 10, + }, + userButton: { + test: /[\\/]src[\\/]components[\\/]UserButton[\\/]/, + name: 'user-button', + chunks: 'all', + priority: 10, + }, + organizationSwitcher: { + test: /[\\/]src[\\/]components[\\/]OrganizationSwitcher[\\/]/, + name: 'organization-switcher', + chunks: 'all', + priority: 10, + }, + // Vendor chunks + zxcvbnTSCoreVendor: { + test: /[\\/]node_modules[\\/](@zxcvbn-ts\/core|fastest-levenshtein)[\\/]/, + name: 'zxcvbn-ts-core', + chunks: 'all', + }, + zxcvbnTSCommonVendor: { + test: /[\\/]node_modules[\\/](@zxcvbn-ts)[\\/](language-common)[\\/]/, + name: 'zxcvbn-common', + chunks: 'all', + }, + emotionVendor: { + test: /[\\/]node_modules[\\/](@emotion)[\\/]/, + name: 'emotion-vendor', + chunks: 'all', + priority: 20, + }, + floatingUIVendor: { + test: /[\\/]node_modules[\\/](@floating-ui)[\\/]/, + name: 'floating-ui-vendor', + chunks: 'all', + }, + stripeVendor: { + test: /[\\/]node_modules[\\/](@stripe)[\\/]/, + name: 'stripe-vendor', + chunks: 'all', + }, + defaultVendors: { + minChunks: 1, + test: /[\\/]node_modules[\\/]/, + name: 'vendors', + priority: -10, + }, + react: { + chunks: 'all', + test: /[\\/]node_modules[\\/](react|react-dom|scheduler)[\\/]/, + name: 'framework', + priority: 40, + enforce: true, + }, + }, + }, + }, + // Disable Rspack's warnings since we use bundlewatch + ignoreWarnings: [/entrypoint size limit/, /asset size limit/, /Rspack performance recommendations/], + }; +}; + +/** + * Helper to create entry configuration for a variant + * @param {string} variant + * @returns {import('@rspack/core').Configuration} + */ +const entryForVariant = variant => { + return { entry: { [variant]: variantToSourceFile[variant] } }; +}; + +/** + * Common production configuration for chunked browser builds + * @returns {import('@rspack/core').Configuration} + */ +const commonForProdBrowser = () => { + return { + devtool: false, + output: { + path: path.resolve(__dirname, 'dist/browser'), + filename: '[name].js', + libraryTarget: 'umd', + globalObject: 'globalThis', + }, + module: { + rules: [svgLoader(), ...typescriptLoaderProd({ targets: 'last 2 years' })], + }, + optimization: { + minimize: true, + minimizer: [ + new rspack.SwcJsMinimizerRspackPlugin({ + minimizerOptions: { + compress: { + unused: true, + dead_code: true, + passes: 2, + }, + mangle: { + safari10: true, + }, + }, + }), + ], + }, + }; +}; + +/** + * Common production configuration for bundled module builds (no chunks) + * @returns {import('@rspack/core').Configuration} + */ +const commonForProdBundled = () => { + return { + devtool: false, + output: { + path: path.resolve(__dirname, 'dist'), + publicPath: '', + }, + module: { + rules: [svgLoader(), ...typescriptLoaderProd({ targets: 'last 2 years' })], + }, + optimization: { + minimize: true, + minimizer: [ + new rspack.SwcJsMinimizerRspackPlugin({ + minimizerOptions: { + compress: { + unused: true, + dead_code: true, + passes: 2, + }, + mangle: { + safari10: true, + }, + }, + }), + ], + }, + }; +}; + +/** + * Production configuration - builds multiple variants + * @param {'development'|'production'} mode + * @returns {(import('@rspack/core').Configuration)[]} + */ +const prodConfig = mode => { + // Browser bundle with chunks (UMD) + const uiBrowser = merge( + entryForVariant(variants.uiBrowser), + common({ mode, variant: variants.uiBrowser }), + commonForProdBrowser(), + ); + + // ESM module bundle (no chunks) + const uiEsm = merge(entryForVariant(variants.ui), common({ mode, variant: variants.ui }), commonForProdBundled(), { + experiments: { + outputModule: true, + }, + output: { + filename: '[name].mjs', + libraryTarget: 'module', + }, + plugins: [ + // Bundle everything into a single file for ESM + new rspack.optimize.LimitChunkCountPlugin({ + maxChunks: 1, + }), + ], + optimization: { + splitChunks: false, + }, + }); + + // CJS module bundle (no chunks) + const uiCjs = merge(entryForVariant(variants.ui), common({ mode, variant: variants.ui }), commonForProdBundled(), { + output: { + filename: '[name].js', + libraryTarget: 'commonjs', + }, + plugins: [ + // Bundle everything into a single file for CJS + new rspack.optimize.LimitChunkCountPlugin({ + maxChunks: 1, + }), + ], + optimization: { + splitChunks: false, + }, + }); + + return [uiBrowser, uiEsm, uiCjs]; +}; + +/** + * Development configuration - only builds browser bundle with dev server + * @param {'development'|'production'} mode + * @param {object} env + * @returns {import('@rspack/core').Configuration} + */ +const devConfig = (mode, env) => { + const devUrl = new URL(env.devOrigin || 'https://ui.lclclerk.com'); + const port = Number(new URL(env.devOrigin ?? 'http://localhost:4001').port || 4001); + + return merge(entryForVariant(variants.uiBrowser), common({ mode, variant: variants.uiBrowser }), { + module: { + rules: [svgLoader(), ...typescriptLoaderDev()], + }, + plugins: [new ReactRefreshPlugin({ overlay: { sockHost: devUrl.host } })], + // devtool: 'eval-cheap-source-map', + devtool: false, + output: { + publicPath: `${devUrl.origin}/npm`, + crossOriginLoading: 'anonymous', + filename: `[name].js`, + libraryTarget: 'umd', + }, + optimization: { + minimize: false, + }, + devServer: { + allowedHosts: ['all'], + headers: { 'Access-Control-Allow-Origin': '*' }, + host: '0.0.0.0', + port, + hot: true, + liveReload: false, + client: { webSocketURL: `auto://${devUrl.host}/ws` }, + }, + cache: false, + experiments: { + cache: { + type: 'memory', + }, + }, + }); +}; + +module.exports = env => { + const mode = env.production ? 'production' : 'development'; + return isProduction(mode) ? prodConfig(mode) : devConfig(mode, env); +}; diff --git a/packages/ui/src/Components1.tsx b/packages/ui/src/Components1.tsx new file mode 100644 index 00000000000..199264c08ec --- /dev/null +++ b/packages/ui/src/Components1.tsx @@ -0,0 +1,41 @@ +import { clerkUIErrorDOMElementNotFound } from '@clerk/shared/internal/clerk-js/errors'; +import { createDeferredPromise } from '@clerk/shared/utils/index'; + +import { buildVirtualRouterUrl } from './utils/buildVirtualRouterUrl'; +import { disambiguateRedirectOptions } from './utils/disambiguateRedirectOptions'; +import { extractCssLayerNameFromAppearance } from './utils/extractCssLayerNameFromAppearance'; + +// NOTE: Using `./hooks` instead of `./hooks/useClerkModalStateParams` will increase the bundle size + +console.log('clerkUIErrorDOMElementNotFound', clerkUIErrorDOMElementNotFound); +console.log('createDeferredPromise', createDeferredPromise); +console.log('buildVirtualRouterUrl', buildVirtualRouterUrl); +console.log('disambiguateRedirectOptions', disambiguateRedirectOptions); +console.log('extractCssLayerNameFromAppearance', extractCssLayerNameFromAppearance); +// console.log('React', React); +// console.log('Suspense', Suspense); +// console.log('useClerkModalStateParams', useClerkModalStateParams); +// console.log('BlankCaptchaModal', BlankCaptchaModal); +// console.log('CreateOrganizationModal', CreateOrganizationModal); +// console.log('ImpersonationFab', ImpersonationFab); +// console.log('KeylessPrompt', KeylessPrompt); +// console.log('OrganizationProfileModal', OrganizationProfileModal); +// console.log('preloadComponent', preloadComponent); +// console.log('SignInModal', SignInModal); +// console.log('SignUpModal', SignUpModal); +// console.log('UserProfileModal', UserProfileModal); +// console.log('UserVerificationModal', UserVerificationModal); +// console.log('WaitlistModal', WaitlistModal); +// console.log('MountedCheckoutDrawer', MountedCheckoutDrawer); +// console.log('MountedPlanDetailDrawer', MountedPlanDetailDrawer); +// console.log('MountedSubscriptionDetailDrawer', MountedSubscriptionDetailDrawer); +// console.log('LazyComponentRenderer', LazyComponentRenderer); +// console.log('LazyImpersonationFabProvider', LazyImpersonationFabProvider); +// console.log('LazyModalRenderer', LazyModalRenderer); +// console.log('LazyOneTapRenderer', LazyOneTapRenderer); +// console.log('LazyProviders', LazyProviders); +// console.log('OrganizationSwitcherPrefetch', OrganizationSwitcherPrefetch); + +export const mountComponentRenderer = () => { + console.log('nikos Components1'); +}; diff --git a/packages/ui/src/components/SignUp/SignUpStart.tsx b/packages/ui/src/components/SignUp/SignUpStart.tsx index fc4b7b8e0d7..cc9bb58db00 100644 --- a/packages/ui/src/components/SignUp/SignUpStart.tsx +++ b/packages/ui/src/components/SignUp/SignUpStart.tsx @@ -1,11 +1,11 @@ import { getAlternativePhoneCodeProviderData } from '@clerk/shared/alternativePhoneCode'; +import { isClerkAPIResponseError } from '@clerk/shared/error'; import { ERROR_CODES, SIGN_UP_MODES } from '@clerk/shared/internal/clerk-js/constants'; import { getClerkQueryParam, removeClerkQueryParam } from '@clerk/shared/internal/clerk-js/queryParams'; import { useClerk } from '@clerk/shared/react'; import type { PhoneCodeChannel, PhoneCodeChannelData, SignUpResource } from '@clerk/shared/types'; import React from 'react'; -import { isClerkAPIResponseError } from '@clerk/shared/error'; import { Card } from '@/ui/elements/Card'; import { useCardState, withCardStateProvider } from '@/ui/elements/contexts'; import { Header } from '@/ui/elements/Header'; diff --git a/packages/ui/src/global.d.ts b/packages/ui/src/global.d.ts index 9f23abc0ff4..beb3101eebe 100644 --- a/packages/ui/src/global.d.ts +++ b/packages/ui/src/global.d.ts @@ -1,21 +1,28 @@ import type { Clerk } from '@clerk/shared/types'; + +import type { MountComponentRenderer } from './Components'; declare module '*.svg' { const value: React.FC>; export default value; } declare global { - declare const __PKG_NAME__: string; - declare const __PKG_VERSION__: string; + // New rspack build constants declare const __DEV__: boolean; - - /** - * Build time feature flags. - */ + declare const PACKAGE_NAME: string; + declare const PACKAGE_VERSION: string; + declare const __PKG_VERSION__: string; declare const __BUILD_DISABLE_RHC__: string; - - var __BUILD_DISABLE_RHC__: string; interface Window { Clerk?: Clerk & { __internal_last_error?: any }; + + /** + * Unstable API for accessing UI components separately from clerk-js. + * This is injected by the @clerk/ui browser bundle. + */ + __unstable_ClerkUi?: { + mountComponentRenderer: MountComponentRenderer; + version: string; + }; } } diff --git a/packages/ui/src/index.browser.ts b/packages/ui/src/index.browser.ts new file mode 100644 index 00000000000..41bae854b4e --- /dev/null +++ b/packages/ui/src/index.browser.ts @@ -0,0 +1,37 @@ +import './utils/setWebpackChunkPublicPath'; + +console.log('is it gonna run now?'); + +window.__unstable_ClerkUi = { + hello: true, +}; + +// TODO: @nikos move this to shared utils +// It's crucial this is the first import, +// otherwise chunk loading will not work +// import './utils/setWebpackChunkPublicPath'; + +// /** +// * Browser bundle entry point for @clerk/ui +// * +// * This file is built with rspack and exposes the UI components +// * to the global window object for consumption by clerk-js and other packages. +// */ +import { mountComponentRenderer } from './Components1'; +console.log('nikos mountComponentRenderer', mountComponentRenderer); + +// // Expose to window for external consumption +// console.log('nikos will inect'); + +// if (!window.__unstable_ClerkUi) { +// window.__unstable_ClerkUi = { +// mountComponentRenderer, +// version: PACKAGE_VERSION, +// }; +// console.log('nikos clerkui injected ', window.__unstable_ClerkUi); +// } + +// // Hot module replacement for development +// if (module.hot) { +// module.hot.accept(); +// } diff --git a/packages/ui/src/router/__tests__/HashRouter.test.tsx b/packages/ui/src/router/__tests__/HashRouter.test.tsx index edbbae543f0..ab6ee1c17a8 100644 --- a/packages/ui/src/router/__tests__/HashRouter.test.tsx +++ b/packages/ui/src/router/__tests__/HashRouter.test.tsx @@ -1,9 +1,9 @@ +import type { Clerk } from '@clerk/shared/types'; import { render, screen } from '@testing-library/react'; import userEvent from '@testing-library/user-event'; import React from 'react'; import { afterAll, beforeAll, beforeEach, describe, expect, it, vi } from 'vitest'; -import type { Clerk } from '@clerk/shared/types'; import { HashRouter, Route, useRouter } from '..'; const mockNavigate = vi.fn(); diff --git a/packages/ui/src/router/__tests__/PathRouter.test.tsx b/packages/ui/src/router/__tests__/PathRouter.test.tsx index bcaa066f449..5803c23d325 100644 --- a/packages/ui/src/router/__tests__/PathRouter.test.tsx +++ b/packages/ui/src/router/__tests__/PathRouter.test.tsx @@ -1,9 +1,9 @@ +import type { Clerk } from '@clerk/shared/types'; import { render, screen, waitFor } from '@testing-library/react'; import userEvent from '@testing-library/user-event'; import React from 'react'; import { afterAll, beforeAll, beforeEach, describe, expect, it, vi } from 'vitest'; -import type { Clerk } from '@clerk/shared/types'; import { PathRouter, Route, useRouter } from '..'; const mockNavigate = vi.fn(); diff --git a/packages/ui/src/utils/setWebpackChunkPublicPath.ts b/packages/ui/src/utils/setWebpackChunkPublicPath.ts new file mode 100644 index 00000000000..886daf54594 --- /dev/null +++ b/packages/ui/src/utils/setWebpackChunkPublicPath.ts @@ -0,0 +1,44 @@ +/** + * A combination of settings a fixed __PKG_VERSION__ during build time + * and the runtime __webpack_public_path__ config option (https://webpack.js.org/guides/public-path/). + * We explicitly set the public path in order to account for all chunk caching scenarios. + * A specific version of clerk.browser.js file should always try to load its corresponding chunk versions, + * otherwise we risk hitting caching issues. + * + * Scenario: + * 1. We release clerk-js@1.0.0 containing: clerk.browser.js, chunkA-1.0.0.js, chunkB-1.0.0.js + * 2. A user opens an app using Clerk + * 3. The browser downloads and caches `/npm/@clerk/clerk-js@latest/dist/clerk.browser.js` + * 4. chunkA is needed so the browser downloads and caches `/npm/@clerk/clerk-js@latest/dist/chunkA-1.0.0.js` + * 5. Meanwhile, we release clerk-js@1.2.0 containing: clerk.browser.js, chunkA-1.2.0.js, chunkB-1.2.0.js + * On our CDN, @clerk/clerk-js@latest now points to the new version + * 6. A user opens the app again + * 7. The browser loads `/npm/@clerk/clerk-js@latest/dist/clerk.browser.js` FROM CACHE (v1.0.0 file) + * 8. chunkA is needed so the browser loads `/npm/@clerk/clerk-js@latest/dist/chunkA-1.0.0.js` FROM CACHE (v1.0.0 file) + * 9. chunkB is needed for the first time. The cached v1.0.0 clerk.browser.js will try to load (request) + * `/npm/@clerk/clerk-js@latest/dist/chunkA-1.0.0.js` but because clerk-js@latest now resolves to v1.2.0, + * the v1.0.0 file will not be found and the app will crash + * + * Solution: + * A given clerk.browser.js file will only load its corresponding chunks using a fixed version. Example: + * - clerk.browser.js loads from https://pk.accounts.dev/npm/@clerk/clerk-js@canary/dist/clerk.browser.js + * - all other chunks need to be loaded from https://pk.accounts.dev/npm/@clerk/clerk-js@__PKG_VERSION__/dist/ + */ +if (!__DEV__) { + const CLERKJS_NPM_PATH_REGEX = /(^.*\/@clerk\/clerk-js@)(.+?)(\/dist.*)/; + const setWebpackChunkPublicPath = () => { + try { + // @ts-expect-error + const scriptUrl = new URL(document.currentScript.src); + let hrefWithoutFilename = new URL(scriptUrl.href.split('/').slice(0, -1).join('/')).href; + hrefWithoutFilename += hrefWithoutFilename.endsWith('/') ? '' : '/'; + __webpack_public_path__ = hrefWithoutFilename.replace(CLERKJS_NPM_PATH_REGEX, `$1${__PKG_VERSION__}$3`); + } catch { + // + } + }; + setWebpackChunkPublicPath(); +} + +// Make this file a module to ESM TS happy +export {}; diff --git a/packages/ui/tsconfig.declarations.json b/packages/ui/tsconfig.declarations.json new file mode 100644 index 00000000000..441fd4802fa --- /dev/null +++ b/packages/ui/tsconfig.declarations.json @@ -0,0 +1,20 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "declaration": true, + "declarationMap": true, + "emitDeclarationOnly": true, + "outDir": "./dist/types", + "noEmit": false + }, + "include": ["src"], + "exclude": [ + "node_modules", + "**/*.test.ts", + "**/*.test.tsx", + "**/*.spec.ts", + "**/*.spec.tsx", + "src/**/__tests__", + "src/**/__mocks__" + ] +} diff --git a/packages/ui/tsconfig.json b/packages/ui/tsconfig.json index 037d5fbf069..0c0c7babb68 100644 --- a/packages/ui/tsconfig.json +++ b/packages/ui/tsconfig.json @@ -2,7 +2,6 @@ "compilerOptions": { "rootDir": "src", "verbatimModuleSyntax": true, - "types": ["node"], "target": "es2022", "strict": true, "skipLibCheck": true, diff --git a/packages/ui/tsdown.config.mts b/packages/ui/tsdown.config.mts deleted file mode 100644 index 58ac5634685..00000000000 --- a/packages/ui/tsdown.config.mts +++ /dev/null @@ -1,24 +0,0 @@ -import type { Options } from 'tsdown'; -import { defineConfig } from 'tsdown'; - -import pkgjson from './package.json' with { type: 'json' }; - -export default defineConfig(({ watch }) => { - return { - dts: true, - sourcemap: true, - clean: true, - target: 'es2022', - platform: 'neutral', - unbundle: false, - // external: ['react', 'react-dom'], - format: ['cjs', 'esm'], - minify: false, - define: { - PACKAGE_NAME: `"${pkgjson.name}"`, - PACKAGE_VERSION: `"${pkgjson.version}"`, - __DEV__: `${watch}`, - }, - entry: ['./src/index.ts', './src/internal.ts'], - } satisfies Options; -}); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 3d569604f12..96cff0d7c78 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -457,12 +457,6 @@ importers: dequal: specifier: 2.0.3 version: 2.0.3 - react: - specifier: 18.3.1 - version: 18.3.1 - react-dom: - specifier: 18.3.1 - version: 18.3.1(react@18.3.1) regenerator-runtime: specifier: 0.14.1 version: 0.14.1 @@ -942,6 +936,12 @@ importers: '@formkit/auto-animate': specifier: ^0.8.2 version: 0.8.4 + '@zxcvbn-ts/core': + specifier: 3.0.4 + version: 3.0.4 + '@zxcvbn-ts/language-common': + specifier: 3.0.4 + version: 3.0.4 copy-to-clipboard: specifier: 3.3.3 version: 3.3.3 @@ -967,18 +967,36 @@ importers: specifier: 2.3.4 version: 2.3.4(react@18.3.1) devDependencies: + '@rspack/cli': + specifier: ^1.4.11 + version: 1.5.8(@rspack/core@1.5.8(@swc/helpers@0.5.17))(@types/express@4.17.25)(webpack@5.102.1) + '@rspack/core': + specifier: ^1.4.11 + version: 1.5.8(@swc/helpers@0.5.17) + '@rspack/plugin-react-refresh': + specifier: ^1.5.0 + version: 1.5.2(react-refresh@0.17.0) '@stripe/react-stripe-js': specifier: 3.1.1 version: 3.1.1(@stripe/stripe-js@5.6.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@stripe/stripe-js': specifier: 5.6.0 version: 5.6.0 + '@svgr/webpack': + specifier: ^6.5.1 + version: 6.5.1 + '@types/webpack-env': + specifier: ^1.18.8 + version: 1.18.8 + bundlewatch: + specifier: ^0.4.1 + version: 0.4.1 cross-fetch: specifier: ^4.1.0 version: 4.1.0 - rolldown: - specifier: catalog:repo - version: 1.0.0-beta.43 + webpack-merge: + specifier: ^5.10.0 + version: 5.10.0 packages/upgrade: dependencies: diff --git a/scripts/rspack-common.js b/scripts/rspack-common.js new file mode 100644 index 00000000000..807382491cf --- /dev/null +++ b/scripts/rspack-common.js @@ -0,0 +1,130 @@ +// @ts-check +/** + * Common rspack configuration utilities shared between packages + */ + +/** + * SVG loader configuration using SVGR + * @returns {import('@rspack/core').RuleSetRule} + */ +const svgLoader = () => { + return { + test: /\.svg$/, + resolve: { + fullySpecified: false, + }, + use: { + loader: '@svgr/webpack', + options: { + svgo: true, + svgoConfig: { + floatPrecision: 3, + transformPrecision: 1, + plugins: ['preset-default', 'removeDimensions', 'removeStyleElement'], + }, + }, + }, + }; +}; + +/** + * TypeScript loader for production builds + * @param {object} [options] + * @param {string} [options.targets] - Browserslist targets + * @param {boolean} [options.useCoreJs] - Whether to use core-js polyfills + * @returns {import('@rspack/core').RuleSetRule[]} + */ +const typescriptLoaderProd = ({ targets, useCoreJs = false } = {}) => { + return [ + { + test: /\.(jsx?|tsx?)$/, + exclude: /node_modules/, + use: { + loader: 'builtin:swc-loader', + options: { + env: { + ...(targets ? { targets } : {}), + ...(useCoreJs + ? { + mode: 'usage', + coreJs: require('core-js/package.json').version, + } + : {}), + }, + jsc: { + parser: { + syntax: 'typescript', + tsx: true, + }, + externalHelpers: true, + transform: { + react: { + runtime: 'automatic', + importSource: '@emotion/react', + development: false, + refresh: false, + }, + }, + }, + }, + }, + }, + ...(useCoreJs + ? [ + { + test: /\.m?js$/, + exclude: /node_modules[\\/]core-js/, + use: { + loader: 'builtin:swc-loader', + options: { + env: { + ...(targets ? { targets } : {}), + mode: 'usage', + coreJs: '3.41.0', + }, + isModule: 'unknown', + }, + }, + }, + ] + : []), + ]; +}; + +/** + * TypeScript loader for development builds + * @returns {import('@rspack/core').RuleSetRule[]} + */ +const typescriptLoaderDev = () => { + return [ + { + test: /\.(jsx?|tsx?)$/, + exclude: /node_modules/, + loader: 'builtin:swc-loader', + options: { + jsc: { + target: 'esnext', + parser: { + syntax: 'typescript', + tsx: true, + }, + externalHelpers: true, + transform: { + react: { + runtime: 'automatic', + importSource: '@emotion/react', + development: true, + refresh: true, + }, + }, + }, + }, + }, + ]; +}; + +module.exports = { + svgLoader, + typescriptLoaderProd, + typescriptLoaderDev, +}; From fc579c5cc63e05436e1e81a8dfd053ee055e12eb Mon Sep 17 00:00:00 2001 From: Nikos Douvlis Date: Tue, 4 Nov 2025 20:12:11 +0200 Subject: [PATCH 26/31] move all react deps to clerk/ui --- packages/clerk-js/package.json | 7 +- packages/ui/package.json | 6 +- pnpm-lock.yaml | 444 ++++++++++++++++----------------- 3 files changed, 214 insertions(+), 243 deletions(-) diff --git a/packages/clerk-js/package.json b/packages/clerk-js/package.json index 78a4381c420..e305d7a9aea 100644 --- a/packages/clerk-js/package.json +++ b/packages/clerk-js/package.json @@ -62,7 +62,6 @@ "dependencies": { "@base-org/account": "2.0.1", "@clerk/shared": "workspace:^", - "@clerk/ui": "workspace:^", "@coinbase/wallet-sdk": "4.3.0", "@stripe/stripe-js": "5.6.0", "@swc/helpers": "^0.5.17", @@ -79,10 +78,8 @@ "devDependencies": { "@clerk/testing": "workspace:^", "@rsdoctor/rspack-plugin": "^0.4.13", - "@rspack/cli": "^1.4.11", - "@rspack/core": "^1.4.11", - "@rspack/plugin-react-refresh": "^1.5.0", - "@svgr/webpack": "^6.5.1", + "@rspack/cli": "^1.6.0", + "@rspack/core": "^1.6.0", "@types/cloudflare-turnstile": "^0.2.2", "@types/node": "^22.18.12", "@types/webpack-env": "^1.18.8", diff --git a/packages/ui/package.json b/packages/ui/package.json index a93ad8687ec..11ffc36e265 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -68,9 +68,9 @@ "swr": "2.3.4" }, "devDependencies": { - "@rspack/cli": "^1.4.11", - "@rspack/core": "^1.4.11", - "@rspack/plugin-react-refresh": "^1.5.0", + "@rspack/cli": "^1.6.0", + "@rspack/core": "^1.6.0", + "@rspack/plugin-react-refresh": "^1.5.2", "@stripe/react-stripe-js": "3.1.1", "@stripe/stripe-js": "5.6.0", "@svgr/webpack": "^6.5.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 96cff0d7c78..a2dfe1e1bb7 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -424,9 +424,6 @@ importers: '@clerk/shared': specifier: workspace:^ version: link:../shared - '@clerk/ui': - specifier: workspace:^ - version: link:../ui '@coinbase/wallet-sdk': specifier: 4.3.0 version: 4.3.0 @@ -469,19 +466,13 @@ importers: version: link:../testing '@rsdoctor/rspack-plugin': specifier: ^0.4.13 - version: 0.4.13(@rspack/core@1.5.8(@swc/helpers@0.5.17))(webpack@5.102.1) + version: 0.4.13(@rspack/core@1.6.0(@swc/helpers@0.5.17))(webpack@5.102.1) '@rspack/cli': - specifier: ^1.4.11 - version: 1.5.8(@rspack/core@1.5.8(@swc/helpers@0.5.17))(@types/express@4.17.25)(webpack@5.102.1) + specifier: ^1.6.0 + version: 1.6.0(@rspack/core@1.6.0(@swc/helpers@0.5.17))(@types/express@4.17.25)(webpack@5.102.1) '@rspack/core': - specifier: ^1.4.11 - version: 1.5.8(@swc/helpers@0.5.17) - '@rspack/plugin-react-refresh': - specifier: ^1.5.0 - version: 1.5.2(react-refresh@0.17.0) - '@svgr/webpack': - specifier: ^6.5.1 - version: 6.5.1 + specifier: ^1.6.0 + version: 1.6.0(@swc/helpers@0.5.17) '@types/cloudflare-turnstile': specifier: ^0.2.2 version: 0.2.2 @@ -743,7 +734,7 @@ importers: devDependencies: nuxt: specifier: ^4.1.2 - version: 4.2.0(@parcel/watcher@2.5.1)(@types/node@22.18.12)(@vue/compiler-sfc@3.5.22)(db0@0.3.4)(eslint@9.31.0(jiti@2.6.1))(idb-keyval@6.2.1)(ioredis@5.8.2)(lightningcss@1.30.2)(magicast@0.3.5)(optionator@0.9.4)(rolldown@1.0.0-beta.45)(rollup@4.52.5)(terser@5.44.0)(tsx@4.20.6)(typescript@5.8.3)(vite@7.1.12(@types/node@22.18.12)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(vue-tsc@2.2.12(typescript@5.8.3))(yaml@2.8.1) + version: 4.2.0(@parcel/watcher@2.5.1)(@types/node@22.18.12)(@vue/compiler-sfc@3.5.22)(db0@0.3.4)(eslint@9.31.0(jiti@2.6.1))(idb-keyval@6.2.1)(ioredis@5.8.2)(lightningcss@1.30.2)(magicast@0.3.5)(optionator@0.9.4)(rolldown@1.0.0-beta.9-commit.d91dfb5)(rollup@4.52.5)(terser@5.44.0)(tsx@4.20.6)(typescript@5.8.3)(vite@7.1.12(@types/node@22.18.12)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(vue-tsc@2.2.12(typescript@5.8.3))(yaml@2.8.1) typescript: specifier: catalog:repo version: 5.8.3 @@ -968,13 +959,13 @@ importers: version: 2.3.4(react@18.3.1) devDependencies: '@rspack/cli': - specifier: ^1.4.11 - version: 1.5.8(@rspack/core@1.5.8(@swc/helpers@0.5.17))(@types/express@4.17.25)(webpack@5.102.1) + specifier: ^1.6.0 + version: 1.6.0(@rspack/core@1.6.0(@swc/helpers@0.5.17))(@types/express@4.17.25)(webpack@5.102.1) '@rspack/core': - specifier: ^1.4.11 - version: 1.5.8(@swc/helpers@0.5.17) + specifier: ^1.6.0 + version: 1.6.0(@swc/helpers@0.5.17) '@rspack/plugin-react-refresh': - specifier: ^1.5.0 + specifier: ^1.5.2 version: 1.5.2(react-refresh@0.17.0) '@stripe/react-stripe-js': specifier: 3.1.1 @@ -3120,23 +3111,23 @@ packages: resolution: {integrity: sha512-IYPe/FLpvF3IZrd/f5p5ffmWhMc3aEMuM2wGJASDqC2Ge7qatVCdbfPx3n/5xFeb19xN0j/911M2AaFuircsWA==} engines: {node: '>=18'} - '@module-federation/error-codes@0.18.0': - resolution: {integrity: sha512-Woonm8ehyVIUPXChmbu80Zj6uJkC0dD9SJUZ/wOPtO8iiz/m+dkrOugAuKgoiR6qH4F+yorWila954tBz4uKsQ==} + '@module-federation/error-codes@0.21.2': + resolution: {integrity: sha512-mGbPAAApgjmQUl4J7WAt20aV04a26TyS21GDEpOGXFEQG5FqmZnSJ6FqB8K19HgTKioBT1+fF/Ctl5bGGao/EA==} - '@module-federation/runtime-core@0.18.0': - resolution: {integrity: sha512-ZyYhrDyVAhUzriOsVfgL6vwd+5ebYm595Y13KeMf6TKDRoUHBMTLGQ8WM4TDj8JNsy7LigncK8C03fn97of0QQ==} + '@module-federation/runtime-core@0.21.2': + resolution: {integrity: sha512-LtDnccPxjR8Xqa3daRYr1cH/6vUzK3mQSzgvnfsUm1fXte5syX4ftWw3Eu55VdqNY3yREFRn77AXdu9PfPEZRw==} - '@module-federation/runtime-tools@0.18.0': - resolution: {integrity: sha512-fSga9o4t1UfXNV/Kh6qFvRyZpPp3EHSPRISNeyT8ZoTpzDNiYzhtw0BPUSSD8m6C6XQh2s/11rI4g80UY+d+hA==} + '@module-federation/runtime-tools@0.21.2': + resolution: {integrity: sha512-SgG9NWTYGNYcHSd5MepO3AXf6DNXriIo4sKKM4mu4RqfYhHyP+yNjnF/gvYJl52VD61g0nADmzLWzBqxOqk2tg==} - '@module-federation/runtime@0.18.0': - resolution: {integrity: sha512-+C4YtoSztM7nHwNyZl6dQKGUVJdsPrUdaf3HIKReg/GQbrt9uvOlUWo2NXMZ8vDAnf/QRrpSYAwXHmWDn9Obaw==} + '@module-federation/runtime@0.21.2': + resolution: {integrity: sha512-97jlOx4RAnAHMBTfgU5FBK6+V/pfT6GNX0YjSf8G+uJ3lFy74Y6kg/BevEkChTGw5waCLAkw/pw4LmntYcNN7g==} - '@module-federation/sdk@0.18.0': - resolution: {integrity: sha512-Lo/Feq73tO2unjmpRfyyoUkTVoejhItXOk/h5C+4cistnHbTV8XHrW/13fD5e1Iu60heVdAhhelJd6F898Ve9A==} + '@module-federation/sdk@0.21.2': + resolution: {integrity: sha512-t2vHSJ1a9zjg7LLJoEghcytNLzeFCqOat5TbXTav5dgU0xXw82Cf0EfLrxiJL6uUpgbtyvUdqqa2DVAvMPjiiA==} - '@module-federation/webpack-bundler-runtime@0.18.0': - resolution: {integrity: sha512-TEvErbF+YQ+6IFimhUYKK3a5wapD90d90sLsNpcu2kB3QGT7t4nIluE25duXuZDVUKLz86tEPrza/oaaCWTpvQ==} + '@module-federation/webpack-bundler-runtime@0.21.2': + resolution: {integrity: sha512-06R/NDY6Uh5RBIaBOFwYWzJCf1dIiQd/DFHToBVhejUT3ZFG7GzHEPIIsAGqMzne/JSmVsvjlXiJu7UthQ6rFA==} '@mswjs/interceptors@0.40.0': resolution: {integrity: sha512-EFd6cVbHsgLa6wa4RljGj6Wk75qoHxUSyc5asLyyPSyuhIcdS2Q3Phw6ImS1q+CkALthJRShiYfKANcQMuMqsQ==} @@ -3586,6 +3577,13 @@ packages: cpu: [x64] os: [win32] + '@oxc-project/runtime@0.71.0': + resolution: {integrity: sha512-QwoF5WUXIGFQ+hSxWEib4U/aeLoiDN9JlP18MnBgx9LLPRDfn1iICtcow7Jgey6HLH4XFceWXQD5WBJ39dyJcw==} + engines: {node: '>=6.9.0'} + + '@oxc-project/types@0.71.0': + resolution: {integrity: sha512-5CwQ4MI+P4MQbjLWXgNurA+igGwu/opNetIE13LBs9+V93R64MLvDKOOLZIXSzEfovU3Zef3q3GjPnMTgJTn2w==} + '@oxc-project/types@0.94.0': resolution: {integrity: sha512-+UgQT/4o59cZfH6Cp7G0hwmqEQ0wE+AdIwhikdwnhWI9Dp8CgSY081+Q3O67/wq3VJu8mgUEB93J9EHHn70fOw==} @@ -4001,21 +3999,14 @@ packages: cpu: [arm64] os: [android] - '@rolldown/binding-android-arm64@1.0.0-beta.45': - resolution: {integrity: sha512-bfgKYhFiXJALeA/riil908+2vlyWGdwa7Ju5S+JgWZYdR4jtiPOGdM6WLfso1dojCh+4ZWeiTwPeV9IKQEX+4g==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [arm64] - os: [android] - '@rolldown/binding-darwin-arm64@1.0.0-beta.43': resolution: {integrity: sha512-kuVWnZsE4vEjMF/10SbSUyzucIW2zmdsqFghYMqy+fsjXnRHg0luTU6qWF8IqJf4Cbpm9NEZRnjIEPpAbdiSNQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] - '@rolldown/binding-darwin-arm64@1.0.0-beta.45': - resolution: {integrity: sha512-xjCv4CRVsSnnIxTuyH1RDJl5OEQ1c9JYOwfDAHddjJDxCw46ZX9q80+xq7Eok7KC4bRSZudMJllkvOKv0T9SeA==} - engines: {node: ^20.19.0 || >=22.12.0} + '@rolldown/binding-darwin-arm64@1.0.0-beta.9-commit.d91dfb5': + resolution: {integrity: sha512-Mp0/gqiPdepHjjVm7e0yL1acWvI0rJVVFQEADSezvAjon9sjQ7CEg9JnXICD4B1YrPmN9qV/e7cQZCp87tTV4w==} cpu: [arm64] os: [darwin] @@ -4025,9 +4016,8 @@ packages: cpu: [x64] os: [darwin] - '@rolldown/binding-darwin-x64@1.0.0-beta.45': - resolution: {integrity: sha512-ddcO9TD3D/CLUa/l8GO8LHzBOaZqWg5ClMy3jICoxwCuoz47h9dtqPsIeTiB6yR501LQTeDsjA4lIFd7u3Ljfw==} - engines: {node: ^20.19.0 || >=22.12.0} + '@rolldown/binding-darwin-x64@1.0.0-beta.9-commit.d91dfb5': + resolution: {integrity: sha512-40re4rMNrsi57oavRzIOpRGmg3QRlW6Ea8Q3znaqgOuJuKVrrm2bIQInTfkZJG7a4/5YMX7T951d0+toGLTdCA==} cpu: [x64] os: [darwin] @@ -4037,9 +4027,8 @@ packages: cpu: [x64] os: [freebsd] - '@rolldown/binding-freebsd-x64@1.0.0-beta.45': - resolution: {integrity: sha512-MBTWdrzW9w+UMYDUvnEuh0pQvLENkl2Sis15fHTfHVW7ClbGuez+RWopZudIDEGkpZXdeI4CkRXk+vdIIebrmg==} - engines: {node: ^20.19.0 || >=22.12.0} + '@rolldown/binding-freebsd-x64@1.0.0-beta.9-commit.d91dfb5': + resolution: {integrity: sha512-8BDM939bbMariZupiHp3OmP5N+LXPT4mULA0hZjDaq970PCxv4krZOSMG+HkWUUwmuQROtV+/00xw39EO0P+8g==} cpu: [x64] os: [freebsd] @@ -4049,9 +4038,8 @@ packages: cpu: [arm] os: [linux] - '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.45': - resolution: {integrity: sha512-4YgoCFiki1HR6oSg+GxxfzfnVCesQxLF1LEnw9uXS/MpBmuog0EOO2rYfy69rWP4tFZL9IWp6KEfGZLrZ7aUog==} - engines: {node: ^20.19.0 || >=22.12.0} + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.9-commit.d91dfb5': + resolution: {integrity: sha512-sntsPaPgrECpBB/+2xrQzVUt0r493TMPI+4kWRMhvMsmrxOqH1Ep5lM0Wua/ZdbfZNwm1aVa5pcESQfNfM4Fhw==} cpu: [arm] os: [linux] @@ -4062,9 +4050,8 @@ packages: os: [linux] libc: [glibc] - '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.45': - resolution: {integrity: sha512-LE1gjAwQRrbCOorJJ7LFr10s5vqYf5a00V5Ea9wXcT2+56n5YosJkcp8eQ12FxRBv2YX8dsdQJb+ZTtYJwb6XQ==} - engines: {node: ^20.19.0 || >=22.12.0} + '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.9-commit.d91dfb5': + resolution: {integrity: sha512-5clBW/I+er9F2uM1OFjJFWX86y7Lcy0M+NqsN4s3o07W+8467Zk8oQa4B45vdaXoNUF/yqIAgKkA/OEdQDxZqA==} cpu: [arm64] os: [linux] libc: [glibc] @@ -4076,9 +4063,8 @@ packages: os: [linux] libc: [musl] - '@rolldown/binding-linux-arm64-musl@1.0.0-beta.45': - resolution: {integrity: sha512-tdy8ThO/fPp40B81v0YK3QC+KODOmzJzSUOO37DinQxzlTJ026gqUSOM8tzlVixRbQJltgVDCTYF8HNPRErQTA==} - engines: {node: ^20.19.0 || >=22.12.0} + '@rolldown/binding-linux-arm64-musl@1.0.0-beta.9-commit.d91dfb5': + resolution: {integrity: sha512-wv+rnAfQDk9p/CheX8/Kmqk2o1WaFa4xhWI9gOyDMk/ljvOX0u0ubeM8nI1Qfox7Tnh71eV5AjzSePXUhFOyOg==} cpu: [arm64] os: [linux] libc: [musl] @@ -4090,9 +4076,8 @@ packages: os: [linux] libc: [glibc] - '@rolldown/binding-linux-x64-gnu@1.0.0-beta.45': - resolution: {integrity: sha512-lS082ROBWdmOyVY/0YB3JmsiClaWoxvC+dA8/rbhyB9VLkvVEaihLEOr4CYmrMse151C4+S6hCw6oa1iewox7g==} - engines: {node: ^20.19.0 || >=22.12.0} + '@rolldown/binding-linux-x64-gnu@1.0.0-beta.9-commit.d91dfb5': + resolution: {integrity: sha512-gxD0/xhU4Py47IH3bKZbWtvB99tMkUPGPJFRfSc5UB9Osoje0l0j1PPbxpUtXIELurYCqwLBKXIMTQGifox1BQ==} cpu: [x64] os: [linux] libc: [glibc] @@ -4104,9 +4089,8 @@ packages: os: [linux] libc: [musl] - '@rolldown/binding-linux-x64-musl@1.0.0-beta.45': - resolution: {integrity: sha512-Hi73aYY0cBkr1/SvNQqH8Cd+rSV6S9RB5izCv0ySBcRnd/Wfn5plguUoGYwBnhHgFbh6cPw9m2dUVBR6BG1gxA==} - engines: {node: ^20.19.0 || >=22.12.0} + '@rolldown/binding-linux-x64-musl@1.0.0-beta.9-commit.d91dfb5': + resolution: {integrity: sha512-HotuVe3XUjDwqqEMbm3o3IRkP9gdm8raY/btd/6KE3JGLF/cv4+3ff1l6nOhAZI8wulWDPEXPtE7v+HQEaTXnA==} cpu: [x64] os: [linux] libc: [musl] @@ -4117,20 +4101,14 @@ packages: cpu: [arm64] os: [openharmony] - '@rolldown/binding-openharmony-arm64@1.0.0-beta.45': - resolution: {integrity: sha512-fljEqbO7RHHogNDxYtTzr+GNjlfOx21RUyGmF+NrkebZ8emYYiIqzPxsaMZuRx0rgZmVmliOzEp86/CQFDKhJQ==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [arm64] - os: [openharmony] - '@rolldown/binding-wasm32-wasi@1.0.0-beta.43': resolution: {integrity: sha512-3M+2DmorXvDuAIGYQ9Z93Oy1G9ETkejLwdXXb1uRTgKN9pMcu7N+KG2zDrJwqyxeeLIFE22AZGtSJm3PJbNu9Q==} engines: {node: '>=14.0.0'} cpu: [wasm32] - '@rolldown/binding-wasm32-wasi@1.0.0-beta.45': - resolution: {integrity: sha512-ZJDB7lkuZE9XUnWQSYrBObZxczut+8FZ5pdanm8nNS1DAo8zsrPuvGwn+U3fwU98WaiFsNrA4XHngesCGr8tEQ==} - engines: {node: '>=14.0.0'} + '@rolldown/binding-wasm32-wasi@1.0.0-beta.9-commit.d91dfb5': + resolution: {integrity: sha512-8Cx+ucbd8n2dIr21FqBh6rUvTVL0uTgEtKR7l+MUZ5BgY4dFh1e4mPVX8oqmoYwOxBiXrsD2JIOCz4AyKLKxWA==} + engines: {node: '>=14.21.3'} cpu: [wasm32] '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.43': @@ -4139,9 +4117,8 @@ packages: cpu: [arm64] os: [win32] - '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.45': - resolution: {integrity: sha512-zyzAjItHPUmxg6Z8SyRhLdXlJn3/D9KL5b9mObUrBHhWS/GwRH4665xCiFqeuktAhhWutqfc+rOV2LjK4VYQGQ==} - engines: {node: ^20.19.0 || >=22.12.0} + '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.9-commit.d91dfb5': + resolution: {integrity: sha512-Vhq5vikrVDxAa75fxsyqj0c0Y/uti/TwshXI71Xb8IeUQJOBnmLUsn5dgYf5ljpYYkNa0z9BPAvUDIDMmyDi+w==} cpu: [arm64] os: [win32] @@ -4151,9 +4128,8 @@ packages: cpu: [ia32] os: [win32] - '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.45': - resolution: {integrity: sha512-wODcGzlfxqS6D7BR0srkJk3drPwXYLu7jPHN27ce2c4PUnVVmJnp9mJzUQGT4LpmHmmVdMZ+P6hKvyTGBzc1CA==} - engines: {node: ^20.19.0 || >=22.12.0} + '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.9-commit.d91dfb5': + resolution: {integrity: sha512-lN7RIg9Iugn08zP2aZN9y/MIdG8iOOCE93M1UrFlrxMTqPf8X+fDzmR/OKhTSd1A2pYNipZHjyTcb5H8kyQSow==} cpu: [ia32] os: [win32] @@ -4163,9 +4139,8 @@ packages: cpu: [x64] os: [win32] - '@rolldown/binding-win32-x64-msvc@1.0.0-beta.45': - resolution: {integrity: sha512-wiU40G1nQo9rtfvF9jLbl79lUgjfaD/LTyUEw2Wg/gdF5OhjzpKMVugZQngO+RNdwYaNj+Fs+kWBWfp4VXPMHA==} - engines: {node: ^20.19.0 || >=22.12.0} + '@rolldown/binding-win32-x64-msvc@1.0.0-beta.9-commit.d91dfb5': + resolution: {integrity: sha512-7/7cLIn48Y+EpQ4CePvf8reFl63F15yPUlg4ZAhl+RXJIfydkdak1WD8Ir3AwAO+bJBXzrfNL+XQbxm0mcQZmw==} cpu: [x64] os: [win32] @@ -4181,6 +4156,9 @@ packages: '@rolldown/pluginutils@1.0.0-beta.45': resolution: {integrity: sha512-Le9ulGCrD8ggInzWw/k2J8QcbPz7eGIOWqfJ2L+1R0Opm7n6J37s2hiDWlh6LJN0Lk9L5sUzMvRHKW7UxBZsQA==} + '@rolldown/pluginutils@1.0.0-beta.9-commit.d91dfb5': + resolution: {integrity: sha512-8sExkWRK+zVybw3+2/kBkYBFeLnEUWz1fT7BLHplpzmtqkOfTbAQ9gkt4pzwGIIZmg4Qn5US5ACjUBenrhezwQ==} + '@rollup/plugin-alias@5.1.1': resolution: {integrity: sha512-PR9zDb+rOzkRb2VD+EuKB7UC41vU5DIwZ5qqCpk0KJudcWAyi8rvYOhS7+L5aZCspw1stTViLgN5v6FF1p5cgQ==} engines: {node: '>=14.0.0'} @@ -4403,70 +4381,70 @@ packages: '@rsdoctor/utils@0.4.13': resolution: {integrity: sha512-+Zj9gsJEWzZpr2mh+0KIGEfvAdiz756Gu2kP2a2yNilnWlwLqCPXzQWw0D8Z5ScNIq36PdKtojQbg6qzcv7wHg==} - '@rspack/binding-darwin-arm64@1.5.8': - resolution: {integrity: sha512-spJfpOSN3f7V90ic45/ET2NKB2ujAViCNmqb0iGurMNQtFRq+7Kd+jvVKKGXKBHBbsQrFhidSWbbqy2PBPGK8g==} + '@rspack/binding-darwin-arm64@1.6.0': + resolution: {integrity: sha512-IrigOWnGvQgugsTZgf3dB5uko+y+lkNLYg/8w0DiobxkWhpLO97RAeR1w0ofIPXYVu3UWVf7dgHj3PjTqjC9Tw==} cpu: [arm64] os: [darwin] - '@rspack/binding-darwin-x64@1.5.8': - resolution: {integrity: sha512-YFOzeL1IBknBcri8vjUp43dfUBylCeQnD+9O9p0wZmLAw7DtpN5JEOe2AkGo8kdTqJjYKI+cczJPKIw6lu1LWw==} + '@rspack/binding-darwin-x64@1.6.0': + resolution: {integrity: sha512-UYz+Y1XqbHGnkUOsaZRuwiuQaQaQ5rEPSboBPlIVDtblwmB71yxo3ET0nSoUhz8L/WXqQoARiraTCxUP6bvSIg==} cpu: [x64] os: [darwin] - '@rspack/binding-linux-arm64-gnu@1.5.8': - resolution: {integrity: sha512-UAWCsOnpkvy8eAVRo0uipbHXDhnoDq5zmqWTMhpga0/a3yzCp2e+fnjZb/qnFNYb5MeL0O1mwMOYgn1M3oHILQ==} + '@rspack/binding-linux-arm64-gnu@1.6.0': + resolution: {integrity: sha512-Jr7aaxrtwOnh7ge7tZP+Mjpo6uNltvQisL25WcjpP+8PnPT0C9jziKDJso7KxeOINXnQ2yRn2h65+HBNb7FQig==} cpu: [arm64] os: [linux] libc: [glibc] - '@rspack/binding-linux-arm64-musl@1.5.8': - resolution: {integrity: sha512-GnSvGT4GjokPSD45cTtE+g7LgghuxSP1MRmvd+Vp/I8pnxTVSTsebRod4TAqyiv+l11nuS8yqNveK9qiOkBLWw==} + '@rspack/binding-linux-arm64-musl@1.6.0': + resolution: {integrity: sha512-hl17reUhkjgkcLao6ZvNiSRQFGFykqUpIj1//v/XtVd/2XAZ0Kt7jv9UUeaR+2zY8piH+tgCkwgefmjmajMeFg==} cpu: [arm64] os: [linux] libc: [musl] - '@rspack/binding-linux-x64-gnu@1.5.8': - resolution: {integrity: sha512-XLxh5n/pzUfxsugz/8rVBv+Tx2nqEM+9rharK69kfooDsQNKyz7PANllBQ/v4svJ+W0BRHnDL4qXSGdteZeEjA==} + '@rspack/binding-linux-x64-gnu@1.6.0': + resolution: {integrity: sha512-xdlb+ToerFU/YggndCfIrZI/S/C80CP9ZFw6lhnEFSTJDAG88KptxstsoKUh8YzyPTD45CYaOjYNtUtiv0nScg==} cpu: [x64] os: [linux] libc: [glibc] - '@rspack/binding-linux-x64-musl@1.5.8': - resolution: {integrity: sha512-gE0+MZmwF+01p9/svpEESkzkLpBkVUG2o03YMpwXYC/maeRRhWvF8BJ7R3i/Ls/jFGSE87dKX5NbRLVzqksq/w==} + '@rspack/binding-linux-x64-musl@1.6.0': + resolution: {integrity: sha512-IkXEW/FBPPz4EJJTLNZvA+94aLaW2HgUMYu7zCIw5YMc9JJ/UXexY1zjX/A7yidsCiZCRy/ZrB+veFJ5FkZv7w==} cpu: [x64] os: [linux] libc: [musl] - '@rspack/binding-wasm32-wasi@1.5.8': - resolution: {integrity: sha512-cfg3niNHeJuxuml1Vy9VvaJrI/5TakzoaZvKX2g5S24wfzR50Eyy4JAsZ+L2voWQQp1yMJbmPYPmnTCTxdJQBQ==} + '@rspack/binding-wasm32-wasi@1.6.0': + resolution: {integrity: sha512-XGwX35XXnoTYVUGwDBsKNOkkk/yUsT/RF59u9BwT3QBM5eSXk767xVw/ZeiiyJf5YfI/52HDW2E4QZyvlYyv7g==} cpu: [wasm32] - '@rspack/binding-win32-arm64-msvc@1.5.8': - resolution: {integrity: sha512-7i3ZTHFXKfU/9Jm9XhpMkrdkxO7lfeYMNVEGkuU5dyBfRMQj69dRgPL7zJwc2plXiqu9LUOl+TwDNTjap7Q36g==} + '@rspack/binding-win32-arm64-msvc@1.6.0': + resolution: {integrity: sha512-HOA/U7YC6EB74CpIrT2GrvPgd+TLr0anNuOp/8omw9hH1jjsP5cjUMgWeAGmWyXWxwoS8rRJ0xhRA+UIe3cL3g==} cpu: [arm64] os: [win32] - '@rspack/binding-win32-ia32-msvc@1.5.8': - resolution: {integrity: sha512-7ZPPWO11J+soea1+mnfaPpQt7GIodBM7A86dx6PbXgVEoZmetcWPrCF2NBfXxQWOKJ9L3RYltC4z+ZyXRgMOrw==} + '@rspack/binding-win32-ia32-msvc@1.6.0': + resolution: {integrity: sha512-ThczdltBOFcq+IrTflCE+8q0GvKoISt6pTupkuGnI1/bCnqhCxPP6kx8Z06fdJUFMhvBtpZa0gDJvhh3JBZrKA==} cpu: [ia32] os: [win32] - '@rspack/binding-win32-x64-msvc@1.5.8': - resolution: {integrity: sha512-N/zXQgzIxME3YUzXT8qnyzxjqcnXudWOeDh8CAG9zqTCnCiy16SFfQ/cQgEoLlD9geQntV6jx2GbDDI5kpDGMQ==} + '@rspack/binding-win32-x64-msvc@1.6.0': + resolution: {integrity: sha512-Bhyvsh1m6kIpr1vqZlcdUDUTh0bheRe9SF+f6jw0kPDPbh8FfrRbshPKmRHpRZAUHt20NqgUKR2z2BaKb0IJvQ==} cpu: [x64] os: [win32] - '@rspack/binding@1.5.8': - resolution: {integrity: sha512-/91CzhRl9r5BIQCgGsS7jA6MDbw1I2BQpbfcUUdkdKl2P79K3Zo/Mw/TvKzS86catwLaUQEgkGRmYawOfPg7ow==} + '@rspack/binding@1.6.0': + resolution: {integrity: sha512-RqlCjvWg/LkJjHpsbI48ebo2SYpIBJsV1eh9SEMfXo1batAPvB5grhAbLX0MRUOtzuQOnZMCDGdr2v7l2L8Siw==} - '@rspack/cli@1.5.8': - resolution: {integrity: sha512-CVqxLGTHBLGDJxYRlVNCtbWix+bXLIHxT11225wAXSyn/5/kJYWxJNNy42vjUNNGSP1Va/aI5lse/pCZjn3xNA==} + '@rspack/cli@1.6.0': + resolution: {integrity: sha512-85CD5fGXgCmDObjR11eheQoHhAbJvGMemexqN2bvOFQzLRAymfkSfh2lIbKFfTTez5NiY4xqyTLnphmZClQ/7g==} hasBin: true peerDependencies: '@rspack/core': ^1.0.0-alpha || ^1.x - '@rspack/core@1.5.8': - resolution: {integrity: sha512-sUd2LfiDhqYVfvknuoz0+/c+wSpn693xotnG5g1CSWKZArbtwiYzBIVnNlcHGmuoBRsnj/TkSq8dTQ7gwfBroQ==} + '@rspack/core@1.6.0': + resolution: {integrity: sha512-u2GDSToEhmgIsy0QbOPA81i9tu87J2HgSsRA3HHZfWIR8Vt8KdlAriQnG8CatDnvFSY/UQEumVf5Z1HUAQwxCg==} engines: {node: '>=18.12.0'} peerDependencies: '@swc/helpers': '>=0.5.1' @@ -12515,9 +12493,8 @@ packages: engines: {node: ^20.19.0 || >=22.12.0} hasBin: true - rolldown@1.0.0-beta.45: - resolution: {integrity: sha512-iMmuD72XXLf26Tqrv1cryNYLX6NNPLhZ3AmNkSf8+xda0H+yijjGJ+wVT9UdBUHOpKzq9RjKtQKRCWoEKQQBZQ==} - engines: {node: ^20.19.0 || >=22.12.0} + rolldown@1.0.0-beta.9-commit.d91dfb5: + resolution: {integrity: sha512-FHkj6gGEiEgmAXQchglofvUUdwj2Oiw603Rs+zgFAnn9Cb7T7z3fiaEc0DbN3ja4wYkW6sF2rzMEtC1V4BGx/g==} hasBin: true rollup-plugin-visualizer@6.0.5: @@ -17826,30 +17803,30 @@ snapshots: transitivePeerDependencies: - supports-color - '@module-federation/error-codes@0.18.0': {} + '@module-federation/error-codes@0.21.2': {} - '@module-federation/runtime-core@0.18.0': + '@module-federation/runtime-core@0.21.2': dependencies: - '@module-federation/error-codes': 0.18.0 - '@module-federation/sdk': 0.18.0 + '@module-federation/error-codes': 0.21.2 + '@module-federation/sdk': 0.21.2 - '@module-federation/runtime-tools@0.18.0': + '@module-federation/runtime-tools@0.21.2': dependencies: - '@module-federation/runtime': 0.18.0 - '@module-federation/webpack-bundler-runtime': 0.18.0 + '@module-federation/runtime': 0.21.2 + '@module-federation/webpack-bundler-runtime': 0.21.2 - '@module-federation/runtime@0.18.0': + '@module-federation/runtime@0.21.2': dependencies: - '@module-federation/error-codes': 0.18.0 - '@module-federation/runtime-core': 0.18.0 - '@module-federation/sdk': 0.18.0 + '@module-federation/error-codes': 0.21.2 + '@module-federation/runtime-core': 0.21.2 + '@module-federation/sdk': 0.21.2 - '@module-federation/sdk@0.18.0': {} + '@module-federation/sdk@0.21.2': {} - '@module-federation/webpack-bundler-runtime@0.18.0': + '@module-federation/webpack-bundler-runtime@0.21.2': dependencies: - '@module-federation/runtime': 0.18.0 - '@module-federation/sdk': 0.18.0 + '@module-federation/runtime': 0.21.2 + '@module-federation/sdk': 0.21.2 '@mswjs/interceptors@0.40.0': dependencies: @@ -18085,7 +18062,7 @@ snapshots: transitivePeerDependencies: - magicast - '@nuxt/nitro-server@4.2.0(db0@0.3.4)(idb-keyval@6.2.1)(ioredis@5.8.2)(magicast@0.3.5)(nuxt@4.2.0(@parcel/watcher@2.5.1)(@types/node@22.18.12)(@vue/compiler-sfc@3.5.22)(db0@0.3.4)(eslint@9.31.0(jiti@2.6.1))(idb-keyval@6.2.1)(ioredis@5.8.2)(lightningcss@1.30.2)(magicast@0.3.5)(optionator@0.9.4)(rolldown@1.0.0-beta.45)(rollup@4.52.5)(terser@5.44.0)(tsx@4.20.6)(typescript@5.8.3)(vite@7.1.12(@types/node@22.18.12)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(vue-tsc@2.2.12(typescript@5.8.3))(yaml@2.8.1))(rolldown@1.0.0-beta.45)(typescript@5.8.3)': + '@nuxt/nitro-server@4.2.0(db0@0.3.4)(idb-keyval@6.2.1)(ioredis@5.8.2)(magicast@0.3.5)(nuxt@4.2.0(@parcel/watcher@2.5.1)(@types/node@22.18.12)(@vue/compiler-sfc@3.5.22)(db0@0.3.4)(eslint@9.31.0(jiti@2.6.1))(idb-keyval@6.2.1)(ioredis@5.8.2)(lightningcss@1.30.2)(magicast@0.3.5)(optionator@0.9.4)(rolldown@1.0.0-beta.9-commit.d91dfb5)(rollup@4.52.5)(terser@5.44.0)(tsx@4.20.6)(typescript@5.8.3)(vite@7.1.12(@types/node@22.18.12)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(vue-tsc@2.2.12(typescript@5.8.3))(yaml@2.8.1))(rolldown@1.0.0-beta.9-commit.d91dfb5)(typescript@5.8.3)': dependencies: '@nuxt/devalue': 2.0.2 '@nuxt/kit': 4.2.0(magicast@0.3.5) @@ -18102,8 +18079,8 @@ snapshots: impound: 1.0.0 klona: 2.0.6 mocked-exports: 0.1.1 - nitropack: 2.12.8(idb-keyval@6.2.1)(rolldown@1.0.0-beta.45) - nuxt: 4.2.0(@parcel/watcher@2.5.1)(@types/node@22.18.12)(@vue/compiler-sfc@3.5.22)(db0@0.3.4)(eslint@9.31.0(jiti@2.6.1))(idb-keyval@6.2.1)(ioredis@5.8.2)(lightningcss@1.30.2)(magicast@0.3.5)(optionator@0.9.4)(rolldown@1.0.0-beta.45)(rollup@4.52.5)(terser@5.44.0)(tsx@4.20.6)(typescript@5.8.3)(vite@7.1.12(@types/node@22.18.12)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(vue-tsc@2.2.12(typescript@5.8.3))(yaml@2.8.1) + nitropack: 2.12.8(idb-keyval@6.2.1)(rolldown@1.0.0-beta.9-commit.d91dfb5) + nuxt: 4.2.0(@parcel/watcher@2.5.1)(@types/node@22.18.12)(@vue/compiler-sfc@3.5.22)(db0@0.3.4)(eslint@9.31.0(jiti@2.6.1))(idb-keyval@6.2.1)(ioredis@5.8.2)(lightningcss@1.30.2)(magicast@0.3.5)(optionator@0.9.4)(rolldown@1.0.0-beta.9-commit.d91dfb5)(rollup@4.52.5)(terser@5.44.0)(tsx@4.20.6)(typescript@5.8.3)(vite@7.1.12(@types/node@22.18.12)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(vue-tsc@2.2.12(typescript@5.8.3))(yaml@2.8.1) pathe: 2.0.3 pkg-types: 2.3.0 radix3: 1.1.2 @@ -18174,7 +18151,7 @@ snapshots: transitivePeerDependencies: - magicast - '@nuxt/vite-builder@4.2.0(@types/node@22.18.12)(eslint@9.31.0(jiti@2.6.1))(lightningcss@1.30.2)(magicast@0.3.5)(nuxt@4.2.0(@parcel/watcher@2.5.1)(@types/node@22.18.12)(@vue/compiler-sfc@3.5.22)(db0@0.3.4)(eslint@9.31.0(jiti@2.6.1))(idb-keyval@6.2.1)(ioredis@5.8.2)(lightningcss@1.30.2)(magicast@0.3.5)(optionator@0.9.4)(rolldown@1.0.0-beta.45)(rollup@4.52.5)(terser@5.44.0)(tsx@4.20.6)(typescript@5.8.3)(vite@7.1.12(@types/node@22.18.12)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(vue-tsc@2.2.12(typescript@5.8.3))(yaml@2.8.1))(optionator@0.9.4)(rolldown@1.0.0-beta.45)(rollup@4.52.5)(terser@5.44.0)(tsx@4.20.6)(typescript@5.8.3)(vue-tsc@2.2.12(typescript@5.8.3))(vue@3.5.22(typescript@5.8.3))(yaml@2.8.1)': + '@nuxt/vite-builder@4.2.0(@types/node@22.18.12)(eslint@9.31.0(jiti@2.6.1))(lightningcss@1.30.2)(magicast@0.3.5)(nuxt@4.2.0(@parcel/watcher@2.5.1)(@types/node@22.18.12)(@vue/compiler-sfc@3.5.22)(db0@0.3.4)(eslint@9.31.0(jiti@2.6.1))(idb-keyval@6.2.1)(ioredis@5.8.2)(lightningcss@1.30.2)(magicast@0.3.5)(optionator@0.9.4)(rolldown@1.0.0-beta.9-commit.d91dfb5)(rollup@4.52.5)(terser@5.44.0)(tsx@4.20.6)(typescript@5.8.3)(vite@7.1.12(@types/node@22.18.12)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(vue-tsc@2.2.12(typescript@5.8.3))(yaml@2.8.1))(optionator@0.9.4)(rolldown@1.0.0-beta.9-commit.d91dfb5)(rollup@4.52.5)(terser@5.44.0)(tsx@4.20.6)(typescript@5.8.3)(vue-tsc@2.2.12(typescript@5.8.3))(vue@3.5.22(typescript@5.8.3))(yaml@2.8.1)': dependencies: '@nuxt/kit': 4.2.0(magicast@0.3.5) '@rollup/plugin-replace': 6.0.2(rollup@4.52.5) @@ -18194,11 +18171,11 @@ snapshots: magic-string: 0.30.21 mlly: 1.8.0 mocked-exports: 0.1.1 - nuxt: 4.2.0(@parcel/watcher@2.5.1)(@types/node@22.18.12)(@vue/compiler-sfc@3.5.22)(db0@0.3.4)(eslint@9.31.0(jiti@2.6.1))(idb-keyval@6.2.1)(ioredis@5.8.2)(lightningcss@1.30.2)(magicast@0.3.5)(optionator@0.9.4)(rolldown@1.0.0-beta.45)(rollup@4.52.5)(terser@5.44.0)(tsx@4.20.6)(typescript@5.8.3)(vite@7.1.12(@types/node@22.18.12)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(vue-tsc@2.2.12(typescript@5.8.3))(yaml@2.8.1) + nuxt: 4.2.0(@parcel/watcher@2.5.1)(@types/node@22.18.12)(@vue/compiler-sfc@3.5.22)(db0@0.3.4)(eslint@9.31.0(jiti@2.6.1))(idb-keyval@6.2.1)(ioredis@5.8.2)(lightningcss@1.30.2)(magicast@0.3.5)(optionator@0.9.4)(rolldown@1.0.0-beta.9-commit.d91dfb5)(rollup@4.52.5)(terser@5.44.0)(tsx@4.20.6)(typescript@5.8.3)(vite@7.1.12(@types/node@22.18.12)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(vue-tsc@2.2.12(typescript@5.8.3))(yaml@2.8.1) pathe: 2.0.3 pkg-types: 2.3.0 postcss: 8.5.6 - rollup-plugin-visualizer: 6.0.5(rolldown@1.0.0-beta.45)(rollup@4.52.5) + rollup-plugin-visualizer: 6.0.5(rolldown@1.0.0-beta.9-commit.d91dfb5)(rollup@4.52.5) seroval: 1.3.2 std-env: 3.10.0 ufo: 1.6.1 @@ -18209,7 +18186,7 @@ snapshots: vue: 3.5.22(typescript@5.8.3) vue-bundle-renderer: 2.2.0 optionalDependencies: - rolldown: 1.0.0-beta.45 + rolldown: 1.0.0-beta.9-commit.d91dfb5 transitivePeerDependencies: - '@biomejs/biome' - '@types/node' @@ -18424,6 +18401,10 @@ snapshots: '@oxc-parser/binding-win32-x64-msvc@0.95.0': optional: true + '@oxc-project/runtime@0.71.0': {} + + '@oxc-project/types@0.71.0': {} + '@oxc-project/types@0.94.0': {} '@oxc-project/types@0.95.0': {} @@ -18858,89 +18839,83 @@ snapshots: '@rolldown/binding-android-arm64@1.0.0-beta.43': optional: true - '@rolldown/binding-android-arm64@1.0.0-beta.45': - optional: true - '@rolldown/binding-darwin-arm64@1.0.0-beta.43': optional: true - '@rolldown/binding-darwin-arm64@1.0.0-beta.45': + '@rolldown/binding-darwin-arm64@1.0.0-beta.9-commit.d91dfb5': optional: true '@rolldown/binding-darwin-x64@1.0.0-beta.43': optional: true - '@rolldown/binding-darwin-x64@1.0.0-beta.45': + '@rolldown/binding-darwin-x64@1.0.0-beta.9-commit.d91dfb5': optional: true '@rolldown/binding-freebsd-x64@1.0.0-beta.43': optional: true - '@rolldown/binding-freebsd-x64@1.0.0-beta.45': + '@rolldown/binding-freebsd-x64@1.0.0-beta.9-commit.d91dfb5': optional: true '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.43': optional: true - '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.45': + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.9-commit.d91dfb5': optional: true '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.43': optional: true - '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.45': + '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.9-commit.d91dfb5': optional: true '@rolldown/binding-linux-arm64-musl@1.0.0-beta.43': optional: true - '@rolldown/binding-linux-arm64-musl@1.0.0-beta.45': + '@rolldown/binding-linux-arm64-musl@1.0.0-beta.9-commit.d91dfb5': optional: true '@rolldown/binding-linux-x64-gnu@1.0.0-beta.43': optional: true - '@rolldown/binding-linux-x64-gnu@1.0.0-beta.45': + '@rolldown/binding-linux-x64-gnu@1.0.0-beta.9-commit.d91dfb5': optional: true '@rolldown/binding-linux-x64-musl@1.0.0-beta.43': optional: true - '@rolldown/binding-linux-x64-musl@1.0.0-beta.45': + '@rolldown/binding-linux-x64-musl@1.0.0-beta.9-commit.d91dfb5': optional: true '@rolldown/binding-openharmony-arm64@1.0.0-beta.43': optional: true - '@rolldown/binding-openharmony-arm64@1.0.0-beta.45': - optional: true - '@rolldown/binding-wasm32-wasi@1.0.0-beta.43': dependencies: '@napi-rs/wasm-runtime': 1.0.7 optional: true - '@rolldown/binding-wasm32-wasi@1.0.0-beta.45': + '@rolldown/binding-wasm32-wasi@1.0.0-beta.9-commit.d91dfb5': dependencies: - '@napi-rs/wasm-runtime': 1.0.7 + '@napi-rs/wasm-runtime': 0.2.12 optional: true '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.43': optional: true - '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.45': + '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.9-commit.d91dfb5': optional: true '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.43': optional: true - '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.45': + '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.9-commit.d91dfb5': optional: true '@rolldown/binding-win32-x64-msvc@1.0.0-beta.43': optional: true - '@rolldown/binding-win32-x64-msvc@1.0.0-beta.45': + '@rolldown/binding-win32-x64-msvc@1.0.0-beta.9-commit.d91dfb5': optional: true '@rolldown/pluginutils@1.0.0-beta.27': {} @@ -18951,6 +18926,8 @@ snapshots: '@rolldown/pluginutils@1.0.0-beta.45': {} + '@rolldown/pluginutils@1.0.0-beta.9-commit.d91dfb5': {} + '@rollup/plugin-alias@5.1.1(rollup@4.52.5)': optionalDependencies: rollup: 4.52.5 @@ -19082,12 +19059,12 @@ snapshots: '@rsdoctor/client@0.4.13': {} - '@rsdoctor/core@0.4.13(@rspack/core@1.5.8(@swc/helpers@0.5.17))(webpack@5.102.1)': + '@rsdoctor/core@0.4.13(@rspack/core@1.6.0(@swc/helpers@0.5.17))(webpack@5.102.1)': dependencies: - '@rsdoctor/graph': 0.4.13(@rspack/core@1.5.8(@swc/helpers@0.5.17))(webpack@5.102.1) - '@rsdoctor/sdk': 0.4.13(@rspack/core@1.5.8(@swc/helpers@0.5.17))(webpack@5.102.1) - '@rsdoctor/types': 0.4.13(@rspack/core@1.5.8(@swc/helpers@0.5.17))(webpack@5.102.1) - '@rsdoctor/utils': 0.4.13(@rspack/core@1.5.8(@swc/helpers@0.5.17))(webpack@5.102.1) + '@rsdoctor/graph': 0.4.13(@rspack/core@1.6.0(@swc/helpers@0.5.17))(webpack@5.102.1) + '@rsdoctor/sdk': 0.4.13(@rspack/core@1.6.0(@swc/helpers@0.5.17))(webpack@5.102.1) + '@rsdoctor/types': 0.4.13(@rspack/core@1.6.0(@swc/helpers@0.5.17))(webpack@5.102.1) + '@rsdoctor/utils': 0.4.13(@rspack/core@1.6.0(@swc/helpers@0.5.17))(webpack@5.102.1) axios: 1.13.0 enhanced-resolve: 5.12.0 filesize: 10.1.6 @@ -19105,10 +19082,10 @@ snapshots: - utf-8-validate - webpack - '@rsdoctor/graph@0.4.13(@rspack/core@1.5.8(@swc/helpers@0.5.17))(webpack@5.102.1)': + '@rsdoctor/graph@0.4.13(@rspack/core@1.6.0(@swc/helpers@0.5.17))(webpack@5.102.1)': dependencies: - '@rsdoctor/types': 0.4.13(@rspack/core@1.5.8(@swc/helpers@0.5.17))(webpack@5.102.1) - '@rsdoctor/utils': 0.4.13(@rspack/core@1.5.8(@swc/helpers@0.5.17))(webpack@5.102.1) + '@rsdoctor/types': 0.4.13(@rspack/core@1.6.0(@swc/helpers@0.5.17))(webpack@5.102.1) + '@rsdoctor/utils': 0.4.13(@rspack/core@1.6.0(@swc/helpers@0.5.17))(webpack@5.102.1) lodash.unionby: 4.8.0 socket.io: 4.8.1 source-map: 0.7.6 @@ -19119,14 +19096,14 @@ snapshots: - utf-8-validate - webpack - '@rsdoctor/rspack-plugin@0.4.13(@rspack/core@1.5.8(@swc/helpers@0.5.17))(webpack@5.102.1)': + '@rsdoctor/rspack-plugin@0.4.13(@rspack/core@1.6.0(@swc/helpers@0.5.17))(webpack@5.102.1)': dependencies: - '@rsdoctor/core': 0.4.13(@rspack/core@1.5.8(@swc/helpers@0.5.17))(webpack@5.102.1) - '@rsdoctor/graph': 0.4.13(@rspack/core@1.5.8(@swc/helpers@0.5.17))(webpack@5.102.1) - '@rsdoctor/sdk': 0.4.13(@rspack/core@1.5.8(@swc/helpers@0.5.17))(webpack@5.102.1) - '@rsdoctor/types': 0.4.13(@rspack/core@1.5.8(@swc/helpers@0.5.17))(webpack@5.102.1) - '@rsdoctor/utils': 0.4.13(@rspack/core@1.5.8(@swc/helpers@0.5.17))(webpack@5.102.1) - '@rspack/core': 1.5.8(@swc/helpers@0.5.17) + '@rsdoctor/core': 0.4.13(@rspack/core@1.6.0(@swc/helpers@0.5.17))(webpack@5.102.1) + '@rsdoctor/graph': 0.4.13(@rspack/core@1.6.0(@swc/helpers@0.5.17))(webpack@5.102.1) + '@rsdoctor/sdk': 0.4.13(@rspack/core@1.6.0(@swc/helpers@0.5.17))(webpack@5.102.1) + '@rsdoctor/types': 0.4.13(@rspack/core@1.6.0(@swc/helpers@0.5.17))(webpack@5.102.1) + '@rsdoctor/utils': 0.4.13(@rspack/core@1.6.0(@swc/helpers@0.5.17))(webpack@5.102.1) + '@rspack/core': 1.6.0(@swc/helpers@0.5.17) lodash: 4.17.21 transitivePeerDependencies: - bufferutil @@ -19135,12 +19112,12 @@ snapshots: - utf-8-validate - webpack - '@rsdoctor/sdk@0.4.13(@rspack/core@1.5.8(@swc/helpers@0.5.17))(webpack@5.102.1)': + '@rsdoctor/sdk@0.4.13(@rspack/core@1.6.0(@swc/helpers@0.5.17))(webpack@5.102.1)': dependencies: '@rsdoctor/client': 0.4.13 - '@rsdoctor/graph': 0.4.13(@rspack/core@1.5.8(@swc/helpers@0.5.17))(webpack@5.102.1) - '@rsdoctor/types': 0.4.13(@rspack/core@1.5.8(@swc/helpers@0.5.17))(webpack@5.102.1) - '@rsdoctor/utils': 0.4.13(@rspack/core@1.5.8(@swc/helpers@0.5.17))(webpack@5.102.1) + '@rsdoctor/graph': 0.4.13(@rspack/core@1.6.0(@swc/helpers@0.5.17))(webpack@5.102.1) + '@rsdoctor/types': 0.4.13(@rspack/core@1.6.0(@swc/helpers@0.5.17))(webpack@5.102.1) + '@rsdoctor/utils': 0.4.13(@rspack/core@1.6.0(@swc/helpers@0.5.17))(webpack@5.102.1) '@types/fs-extra': 11.0.4 body-parser: 1.20.3 cors: 2.8.5 @@ -19160,7 +19137,7 @@ snapshots: - utf-8-validate - webpack - '@rsdoctor/types@0.4.13(@rspack/core@1.5.8(@swc/helpers@0.5.17))(webpack@5.102.1)': + '@rsdoctor/types@0.4.13(@rspack/core@1.6.0(@swc/helpers@0.5.17))(webpack@5.102.1)': dependencies: '@types/connect': 3.4.38 '@types/estree': 1.0.5 @@ -19168,12 +19145,12 @@ snapshots: source-map: 0.7.6 webpack: 5.102.1 optionalDependencies: - '@rspack/core': 1.5.8(@swc/helpers@0.5.17) + '@rspack/core': 1.6.0(@swc/helpers@0.5.17) - '@rsdoctor/utils@0.4.13(@rspack/core@1.5.8(@swc/helpers@0.5.17))(webpack@5.102.1)': + '@rsdoctor/utils@0.4.13(@rspack/core@1.6.0(@swc/helpers@0.5.17))(webpack@5.102.1)': dependencies: '@babel/code-frame': 7.25.7 - '@rsdoctor/types': 0.4.13(@rspack/core@1.5.8(@swc/helpers@0.5.17))(webpack@5.102.1) + '@rsdoctor/types': 0.4.13(@rspack/core@1.6.0(@swc/helpers@0.5.17))(webpack@5.102.1) '@types/estree': 1.0.5 acorn: 8.15.0 acorn-import-assertions: 1.9.0(acorn@8.15.0) @@ -19194,61 +19171,58 @@ snapshots: - supports-color - webpack - '@rspack/binding-darwin-arm64@1.5.8': + '@rspack/binding-darwin-arm64@1.6.0': optional: true - '@rspack/binding-darwin-x64@1.5.8': + '@rspack/binding-darwin-x64@1.6.0': optional: true - '@rspack/binding-linux-arm64-gnu@1.5.8': + '@rspack/binding-linux-arm64-gnu@1.6.0': optional: true - '@rspack/binding-linux-arm64-musl@1.5.8': + '@rspack/binding-linux-arm64-musl@1.6.0': optional: true - '@rspack/binding-linux-x64-gnu@1.5.8': + '@rspack/binding-linux-x64-gnu@1.6.0': optional: true - '@rspack/binding-linux-x64-musl@1.5.8': + '@rspack/binding-linux-x64-musl@1.6.0': optional: true - '@rspack/binding-wasm32-wasi@1.5.8': + '@rspack/binding-wasm32-wasi@1.6.0': dependencies: '@napi-rs/wasm-runtime': 1.0.7 optional: true - '@rspack/binding-win32-arm64-msvc@1.5.8': + '@rspack/binding-win32-arm64-msvc@1.6.0': optional: true - '@rspack/binding-win32-ia32-msvc@1.5.8': + '@rspack/binding-win32-ia32-msvc@1.6.0': optional: true - '@rspack/binding-win32-x64-msvc@1.5.8': + '@rspack/binding-win32-x64-msvc@1.6.0': optional: true - '@rspack/binding@1.5.8': + '@rspack/binding@1.6.0': optionalDependencies: - '@rspack/binding-darwin-arm64': 1.5.8 - '@rspack/binding-darwin-x64': 1.5.8 - '@rspack/binding-linux-arm64-gnu': 1.5.8 - '@rspack/binding-linux-arm64-musl': 1.5.8 - '@rspack/binding-linux-x64-gnu': 1.5.8 - '@rspack/binding-linux-x64-musl': 1.5.8 - '@rspack/binding-wasm32-wasi': 1.5.8 - '@rspack/binding-win32-arm64-msvc': 1.5.8 - '@rspack/binding-win32-ia32-msvc': 1.5.8 - '@rspack/binding-win32-x64-msvc': 1.5.8 - - '@rspack/cli@1.5.8(@rspack/core@1.5.8(@swc/helpers@0.5.17))(@types/express@4.17.25)(webpack@5.102.1)': + '@rspack/binding-darwin-arm64': 1.6.0 + '@rspack/binding-darwin-x64': 1.6.0 + '@rspack/binding-linux-arm64-gnu': 1.6.0 + '@rspack/binding-linux-arm64-musl': 1.6.0 + '@rspack/binding-linux-x64-gnu': 1.6.0 + '@rspack/binding-linux-x64-musl': 1.6.0 + '@rspack/binding-wasm32-wasi': 1.6.0 + '@rspack/binding-win32-arm64-msvc': 1.6.0 + '@rspack/binding-win32-ia32-msvc': 1.6.0 + '@rspack/binding-win32-x64-msvc': 1.6.0 + + '@rspack/cli@1.6.0(@rspack/core@1.6.0(@swc/helpers@0.5.17))(@types/express@4.17.25)(webpack@5.102.1)': dependencies: '@discoveryjs/json-ext': 0.5.7 - '@rspack/core': 1.5.8(@swc/helpers@0.5.17) - '@rspack/dev-server': 1.1.4(@rspack/core@1.5.8(@swc/helpers@0.5.17))(@types/express@4.17.25)(webpack@5.102.1) - colorette: 2.0.20 + '@rspack/core': 1.6.0(@swc/helpers@0.5.17) + '@rspack/dev-server': 1.1.4(@rspack/core@1.6.0(@swc/helpers@0.5.17))(@types/express@4.17.25)(webpack@5.102.1) exit-hook: 4.0.0 - pirates: 4.0.7 webpack-bundle-analyzer: 4.10.2 - yargs: 17.7.2 transitivePeerDependencies: - '@types/express' - bufferutil @@ -19258,17 +19232,17 @@ snapshots: - webpack - webpack-cli - '@rspack/core@1.5.8(@swc/helpers@0.5.17)': + '@rspack/core@1.6.0(@swc/helpers@0.5.17)': dependencies: - '@module-federation/runtime-tools': 0.18.0 - '@rspack/binding': 1.5.8 + '@module-federation/runtime-tools': 0.21.2 + '@rspack/binding': 1.6.0 '@rspack/lite-tapable': 1.0.1 optionalDependencies: '@swc/helpers': 0.5.17 - '@rspack/dev-server@1.1.4(@rspack/core@1.5.8(@swc/helpers@0.5.17))(@types/express@4.17.25)(webpack@5.102.1)': + '@rspack/dev-server@1.1.4(@rspack/core@1.6.0(@swc/helpers@0.5.17))(@types/express@4.17.25)(webpack@5.102.1)': dependencies: - '@rspack/core': 1.5.8(@swc/helpers@0.5.17) + '@rspack/core': 1.6.0(@swc/helpers@0.5.17) chokidar: 3.6.0 http-proxy-middleware: 2.0.9(@types/express@4.17.25) p-retry: 6.2.1 @@ -27497,7 +27471,7 @@ snapshots: nice-try@1.0.5: {} - nitropack@2.12.8(idb-keyval@6.2.1)(rolldown@1.0.0-beta.45): + nitropack@2.12.8(idb-keyval@6.2.1)(rolldown@1.0.0-beta.9-commit.d91dfb5): dependencies: '@cloudflare/kv-asset-handler': 0.4.0 '@rollup/plugin-alias': 5.1.1(rollup@4.52.5) @@ -27550,7 +27524,7 @@ snapshots: pretty-bytes: 7.1.0 radix3: 1.1.2 rollup: 4.52.5 - rollup-plugin-visualizer: 6.0.5(rolldown@1.0.0-beta.45)(rollup@4.52.5) + rollup-plugin-visualizer: 6.0.5(rolldown@1.0.0-beta.9-commit.d91dfb5)(rollup@4.52.5) scule: 1.3.0 semver: 7.7.3 serve-placeholder: 2.0.2 @@ -27743,16 +27717,16 @@ snapshots: nullthrows@1.1.1: {} - nuxt@4.2.0(@parcel/watcher@2.5.1)(@types/node@22.18.12)(@vue/compiler-sfc@3.5.22)(db0@0.3.4)(eslint@9.31.0(jiti@2.6.1))(idb-keyval@6.2.1)(ioredis@5.8.2)(lightningcss@1.30.2)(magicast@0.3.5)(optionator@0.9.4)(rolldown@1.0.0-beta.45)(rollup@4.52.5)(terser@5.44.0)(tsx@4.20.6)(typescript@5.8.3)(vite@7.1.12(@types/node@22.18.12)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(vue-tsc@2.2.12(typescript@5.8.3))(yaml@2.8.1): + nuxt@4.2.0(@parcel/watcher@2.5.1)(@types/node@22.18.12)(@vue/compiler-sfc@3.5.22)(db0@0.3.4)(eslint@9.31.0(jiti@2.6.1))(idb-keyval@6.2.1)(ioredis@5.8.2)(lightningcss@1.30.2)(magicast@0.3.5)(optionator@0.9.4)(rolldown@1.0.0-beta.9-commit.d91dfb5)(rollup@4.52.5)(terser@5.44.0)(tsx@4.20.6)(typescript@5.8.3)(vite@7.1.12(@types/node@22.18.12)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(vue-tsc@2.2.12(typescript@5.8.3))(yaml@2.8.1): dependencies: '@dxup/nuxt': 0.2.0(magicast@0.3.5) '@nuxt/cli': 3.29.3(magicast@0.3.5) '@nuxt/devtools': 2.7.0(vite@7.1.12(@types/node@22.18.12)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(vue@3.5.22(typescript@5.8.3)) '@nuxt/kit': 4.2.0(magicast@0.3.5) - '@nuxt/nitro-server': 4.2.0(db0@0.3.4)(idb-keyval@6.2.1)(ioredis@5.8.2)(magicast@0.3.5)(nuxt@4.2.0(@parcel/watcher@2.5.1)(@types/node@22.18.12)(@vue/compiler-sfc@3.5.22)(db0@0.3.4)(eslint@9.31.0(jiti@2.6.1))(idb-keyval@6.2.1)(ioredis@5.8.2)(lightningcss@1.30.2)(magicast@0.3.5)(optionator@0.9.4)(rolldown@1.0.0-beta.45)(rollup@4.52.5)(terser@5.44.0)(tsx@4.20.6)(typescript@5.8.3)(vite@7.1.12(@types/node@22.18.12)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(vue-tsc@2.2.12(typescript@5.8.3))(yaml@2.8.1))(rolldown@1.0.0-beta.45)(typescript@5.8.3) + '@nuxt/nitro-server': 4.2.0(db0@0.3.4)(idb-keyval@6.2.1)(ioredis@5.8.2)(magicast@0.3.5)(nuxt@4.2.0(@parcel/watcher@2.5.1)(@types/node@22.18.12)(@vue/compiler-sfc@3.5.22)(db0@0.3.4)(eslint@9.31.0(jiti@2.6.1))(idb-keyval@6.2.1)(ioredis@5.8.2)(lightningcss@1.30.2)(magicast@0.3.5)(optionator@0.9.4)(rolldown@1.0.0-beta.9-commit.d91dfb5)(rollup@4.52.5)(terser@5.44.0)(tsx@4.20.6)(typescript@5.8.3)(vite@7.1.12(@types/node@22.18.12)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(vue-tsc@2.2.12(typescript@5.8.3))(yaml@2.8.1))(rolldown@1.0.0-beta.9-commit.d91dfb5)(typescript@5.8.3) '@nuxt/schema': 4.2.0 '@nuxt/telemetry': 2.6.6(magicast@0.3.5) - '@nuxt/vite-builder': 4.2.0(@types/node@22.18.12)(eslint@9.31.0(jiti@2.6.1))(lightningcss@1.30.2)(magicast@0.3.5)(nuxt@4.2.0(@parcel/watcher@2.5.1)(@types/node@22.18.12)(@vue/compiler-sfc@3.5.22)(db0@0.3.4)(eslint@9.31.0(jiti@2.6.1))(idb-keyval@6.2.1)(ioredis@5.8.2)(lightningcss@1.30.2)(magicast@0.3.5)(optionator@0.9.4)(rolldown@1.0.0-beta.45)(rollup@4.52.5)(terser@5.44.0)(tsx@4.20.6)(typescript@5.8.3)(vite@7.1.12(@types/node@22.18.12)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(vue-tsc@2.2.12(typescript@5.8.3))(yaml@2.8.1))(optionator@0.9.4)(rolldown@1.0.0-beta.45)(rollup@4.52.5)(terser@5.44.0)(tsx@4.20.6)(typescript@5.8.3)(vue-tsc@2.2.12(typescript@5.8.3))(vue@3.5.22(typescript@5.8.3))(yaml@2.8.1) + '@nuxt/vite-builder': 4.2.0(@types/node@22.18.12)(eslint@9.31.0(jiti@2.6.1))(lightningcss@1.30.2)(magicast@0.3.5)(nuxt@4.2.0(@parcel/watcher@2.5.1)(@types/node@22.18.12)(@vue/compiler-sfc@3.5.22)(db0@0.3.4)(eslint@9.31.0(jiti@2.6.1))(idb-keyval@6.2.1)(ioredis@5.8.2)(lightningcss@1.30.2)(magicast@0.3.5)(optionator@0.9.4)(rolldown@1.0.0-beta.9-commit.d91dfb5)(rollup@4.52.5)(terser@5.44.0)(tsx@4.20.6)(typescript@5.8.3)(vite@7.1.12(@types/node@22.18.12)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(vue-tsc@2.2.12(typescript@5.8.3))(yaml@2.8.1))(optionator@0.9.4)(rolldown@1.0.0-beta.9-commit.d91dfb5)(rollup@4.52.5)(terser@5.44.0)(tsx@4.20.6)(typescript@5.8.3)(vue-tsc@2.2.12(typescript@5.8.3))(vue@3.5.22(typescript@5.8.3))(yaml@2.8.1) '@unhead/vue': 2.0.19(vue@3.5.22(typescript@5.8.3)) '@vue/shared': 3.5.22 c12: 3.3.1(magicast@0.3.5) @@ -29314,7 +29288,7 @@ snapshots: glob: 11.0.3 package-json-from-dist: 1.0.1 - rolldown-plugin-dts@0.16.12(rolldown@1.0.0-beta.45)(typescript@5.8.3): + rolldown-plugin-dts@0.16.12(rolldown@1.0.0-beta.9-commit.d91dfb5)(typescript@5.8.3): dependencies: '@babel/generator': 7.28.5 '@babel/parser': 7.28.5 @@ -29325,7 +29299,7 @@ snapshots: dts-resolver: 2.1.2 get-tsconfig: 4.13.0 magic-string: 0.30.21 - rolldown: 1.0.0-beta.45 + rolldown: 1.0.0-beta.9-commit.d91dfb5 optionalDependencies: typescript: 5.8.3 transitivePeerDependencies: @@ -29353,34 +29327,34 @@ snapshots: '@rolldown/binding-win32-ia32-msvc': 1.0.0-beta.43 '@rolldown/binding-win32-x64-msvc': 1.0.0-beta.43 - rolldown@1.0.0-beta.45: + rolldown@1.0.0-beta.9-commit.d91dfb5: dependencies: - '@oxc-project/types': 0.95.0 - '@rolldown/pluginutils': 1.0.0-beta.45 + '@oxc-project/runtime': 0.71.0 + '@oxc-project/types': 0.71.0 + '@rolldown/pluginutils': 1.0.0-beta.9-commit.d91dfb5 + ansis: 4.2.0 optionalDependencies: - '@rolldown/binding-android-arm64': 1.0.0-beta.45 - '@rolldown/binding-darwin-arm64': 1.0.0-beta.45 - '@rolldown/binding-darwin-x64': 1.0.0-beta.45 - '@rolldown/binding-freebsd-x64': 1.0.0-beta.45 - '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-beta.45 - '@rolldown/binding-linux-arm64-gnu': 1.0.0-beta.45 - '@rolldown/binding-linux-arm64-musl': 1.0.0-beta.45 - '@rolldown/binding-linux-x64-gnu': 1.0.0-beta.45 - '@rolldown/binding-linux-x64-musl': 1.0.0-beta.45 - '@rolldown/binding-openharmony-arm64': 1.0.0-beta.45 - '@rolldown/binding-wasm32-wasi': 1.0.0-beta.45 - '@rolldown/binding-win32-arm64-msvc': 1.0.0-beta.45 - '@rolldown/binding-win32-ia32-msvc': 1.0.0-beta.45 - '@rolldown/binding-win32-x64-msvc': 1.0.0-beta.45 - - rollup-plugin-visualizer@6.0.5(rolldown@1.0.0-beta.45)(rollup@4.52.5): + '@rolldown/binding-darwin-arm64': 1.0.0-beta.9-commit.d91dfb5 + '@rolldown/binding-darwin-x64': 1.0.0-beta.9-commit.d91dfb5 + '@rolldown/binding-freebsd-x64': 1.0.0-beta.9-commit.d91dfb5 + '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-beta.9-commit.d91dfb5 + '@rolldown/binding-linux-arm64-gnu': 1.0.0-beta.9-commit.d91dfb5 + '@rolldown/binding-linux-arm64-musl': 1.0.0-beta.9-commit.d91dfb5 + '@rolldown/binding-linux-x64-gnu': 1.0.0-beta.9-commit.d91dfb5 + '@rolldown/binding-linux-x64-musl': 1.0.0-beta.9-commit.d91dfb5 + '@rolldown/binding-wasm32-wasi': 1.0.0-beta.9-commit.d91dfb5 + '@rolldown/binding-win32-arm64-msvc': 1.0.0-beta.9-commit.d91dfb5 + '@rolldown/binding-win32-ia32-msvc': 1.0.0-beta.9-commit.d91dfb5 + '@rolldown/binding-win32-x64-msvc': 1.0.0-beta.9-commit.d91dfb5 + + rollup-plugin-visualizer@6.0.5(rolldown@1.0.0-beta.9-commit.d91dfb5)(rollup@4.52.5): dependencies: open: 8.4.2 picomatch: 4.0.3 source-map: 0.7.6 yargs: 17.7.2 optionalDependencies: - rolldown: 1.0.0-beta.45 + rolldown: 1.0.0-beta.9-commit.d91dfb5 rollup: 4.52.5 rollup@4.52.5: @@ -30584,8 +30558,8 @@ snapshots: diff: 8.0.2 empathic: 2.0.0 hookable: 5.5.3 - rolldown: 1.0.0-beta.45 - rolldown-plugin-dts: 0.16.12(rolldown@1.0.0-beta.45)(typescript@5.8.3) + rolldown: 1.0.0-beta.9-commit.d91dfb5 + rolldown-plugin-dts: 0.16.12(rolldown@1.0.0-beta.9-commit.d91dfb5)(typescript@5.8.3) semver: 7.7.3 tinyexec: 1.0.1 tinyglobby: 0.2.15 From cc2818f116fa396e1ea2dae890b16ac4e00a0c95 Mon Sep 17 00:00:00 2001 From: Nikos Douvlis Date: Tue, 4 Nov 2025 20:12:49 +0200 Subject: [PATCH 27/31] fix clerk/ui chunks --- packages/ui/rspack.config.js | 74 +++++++++++--------------------- packages/ui/src/index.browser.ts | 41 ++++++------------ scripts/rspack-common.js | 32 +++++++------- 3 files changed, 55 insertions(+), 92 deletions(-) diff --git a/packages/ui/rspack.config.js b/packages/ui/rspack.config.js index a554fcf0e59..65893d6b9d0 100644 --- a/packages/ui/rspack.config.js +++ b/packages/ui/rspack.config.js @@ -53,44 +53,6 @@ const common = ({ mode, variant }) => { optimization: { splitChunks: { cacheGroups: { - // Component-specific chunks - signUp: { - test: /[\\/]src[\\/]components[\\/]SignUp[\\/]/, - name: 'signup', - chunks: 'all', - priority: 10, - }, - signIn: { - test: /[\\/]src[\\/]components[\\/]SignIn[\\/]/, - name: 'signin', - chunks: 'all', - priority: 10, - }, - userProfile: { - test: /[\\/]src[\\/]components[\\/]UserProfile[\\/]/, - name: 'user-profile', - chunks: 'all', - priority: 10, - }, - organizationProfile: { - test: /[\\/]src[\\/]components[\\/]OrganizationProfile[\\/]/, - name: 'organization-profile', - chunks: 'all', - priority: 10, - }, - userButton: { - test: /[\\/]src[\\/]components[\\/]UserButton[\\/]/, - name: 'user-button', - chunks: 'all', - priority: 10, - }, - organizationSwitcher: { - test: /[\\/]src[\\/]components[\\/]OrganizationSwitcher[\\/]/, - name: 'organization-switcher', - chunks: 'all', - priority: 10, - }, - // Vendor chunks zxcvbnTSCoreVendor: { test: /[\\/]node_modules[\\/](@zxcvbn-ts\/core|fastest-levenshtein)[\\/]/, name: 'zxcvbn-ts-core', @@ -101,21 +63,35 @@ const common = ({ mode, variant }) => { name: 'zxcvbn-common', chunks: 'all', }, - emotionVendor: { - test: /[\\/]node_modules[\\/](@emotion)[\\/]/, - name: 'emotion-vendor', + baseAccountSDKVendor: { + test: /[\\/]node_modules[\\/](@base-org\/account|@noble\/curves|abitype|ox|preact|eventemitter3|viem|zustand)[\\/]/, + name: 'base-account-sdk', chunks: 'all', - priority: 20, }, - floatingUIVendor: { - test: /[\\/]node_modules[\\/](@floating-ui)[\\/]/, - name: 'floating-ui-vendor', + coinbaseWalletSDKVendor: { + test: /[\\/]node_modules[\\/](@coinbase\/wallet-sdk|preact|eventemitter3|@noble\/hashes)[\\/]/, + name: 'coinbase-wallet-sdk', chunks: 'all', }, stripeVendor: { - test: /[\\/]node_modules[\\/](@stripe)[\\/]/, - name: 'stripe-vendor', + test: /[\\/]node_modules[\\/](@stripe\/stripe-js)[\\/]/, + name: 'stripe-vendors', chunks: 'all', + enforce: true, + }, + /** + * Sign up is shared between the SignUp component and the SignIn component. + */ + signUp: { + minChunks: 1, + name: 'signup', + test: module => !!(module.resource && module.resource.includes('/ui/components/SignUp')), + }, + common: { + minChunks: 1, + name: 'ui-common', + priority: -20, + test: module => !!(module.resource && !module.resource.includes('/ui/components')), }, defaultVendors: { minChunks: 1, @@ -125,7 +101,7 @@ const common = ({ mode, variant }) => { }, react: { chunks: 'all', - test: /[\\/]node_modules[\\/](react|react-dom|scheduler)[\\/]/, + test: /[\\/]node_modules[\\/](react-dom|scheduler)[\\/]/, name: 'framework', priority: 40, enforce: true, @@ -288,7 +264,7 @@ const devConfig = (mode, env) => { // devtool: 'eval-cheap-source-map', devtool: false, output: { - publicPath: `${devUrl.origin}/npm`, + publicPath: `${devUrl.origin}/npm/`, crossOriginLoading: 'anonymous', filename: `[name].js`, libraryTarget: 'umd', diff --git a/packages/ui/src/index.browser.ts b/packages/ui/src/index.browser.ts index 41bae854b4e..50a9de41d04 100644 --- a/packages/ui/src/index.browser.ts +++ b/packages/ui/src/index.browser.ts @@ -1,35 +1,22 @@ -import './utils/setWebpackChunkPublicPath'; - -console.log('is it gonna run now?'); - -window.__unstable_ClerkUi = { - hello: true, -}; - // TODO: @nikos move this to shared utils // It's crucial this is the first import, // otherwise chunk loading will not work -// import './utils/setWebpackChunkPublicPath'; - -// /** -// * Browser bundle entry point for @clerk/ui -// * -// * This file is built with rspack and exposes the UI components -// * to the global window object for consumption by clerk-js and other packages. -// */ -import { mountComponentRenderer } from './Components1'; -console.log('nikos mountComponentRenderer', mountComponentRenderer); +import './utils/setWebpackChunkPublicPath'; -// // Expose to window for external consumption -// console.log('nikos will inect'); +/** + * Browser bundle entry point for @clerk/ui + * + * This file is built with rspack and exposes the UI components + * to the global window object for consumption by clerk-js and other packages. + */ +import { mountComponentRenderer } from './Components'; -// if (!window.__unstable_ClerkUi) { -// window.__unstable_ClerkUi = { -// mountComponentRenderer, -// version: PACKAGE_VERSION, -// }; -// console.log('nikos clerkui injected ', window.__unstable_ClerkUi); -// } +if (!window.__unstable_ClerkUi) { + window.__unstable_ClerkUi = { + mountComponentRenderer, + version: PACKAGE_VERSION, + }; +} // // Hot module replacement for development // if (module.hot) { diff --git a/scripts/rspack-common.js b/scripts/rspack-common.js index 807382491cf..8e232486ecb 100644 --- a/scripts/rspack-common.js +++ b/scripts/rspack-common.js @@ -69,25 +69,25 @@ const typescriptLoaderProd = ({ targets, useCoreJs = false } = {}) => { }, }, }, - ...(useCoreJs - ? [ - { - test: /\.m?js$/, - exclude: /node_modules[\\/]core-js/, - use: { - loader: 'builtin:swc-loader', - options: { - env: { - ...(targets ? { targets } : {}), + { + test: /\.m?js$/, + exclude: /node_modules[\\/]core-js/, + use: { + loader: 'builtin:swc-loader', + options: { + env: { + ...(targets ? { targets } : {}), + ...(useCoreJs + ? { mode: 'usage', coreJs: '3.41.0', - }, - isModule: 'unknown', - }, - }, + } + : {}), }, - ] - : []), + isModule: 'unknown', + }, + }, + }, ]; }; From 7b538328fcd6e9ce9b0c9140bca60e6c3d3edd0a Mon Sep 17 00:00:00 2001 From: Nikos Douvlis Date: Wed, 5 Nov 2025 07:34:59 +0200 Subject: [PATCH 28/31] replace ClerkJSScript with ClerkScripts to inject clerk/clerk-js and clerk/ui in nextjs apps --- .../src/app-router/client/ClerkProvider.tsx | 4 +- packages/nextjs/src/pages/ClerkProvider.tsx | 4 +- packages/nextjs/src/utils/clerk-js-script.tsx | 56 ------------- packages/nextjs/src/utils/clerk-script.tsx | 80 +++++++++++++++++++ packages/react/src/internal.ts | 2 + packages/react/src/types.ts | 4 + packages/shared/src/loadClerkJsScript.ts | 24 +++--- 7 files changed, 102 insertions(+), 72 deletions(-) delete mode 100644 packages/nextjs/src/utils/clerk-js-script.tsx create mode 100644 packages/nextjs/src/utils/clerk-script.tsx diff --git a/packages/nextjs/src/app-router/client/ClerkProvider.tsx b/packages/nextjs/src/app-router/client/ClerkProvider.tsx index 99251ca98dd..2d42b9320ce 100644 --- a/packages/nextjs/src/app-router/client/ClerkProvider.tsx +++ b/packages/nextjs/src/app-router/client/ClerkProvider.tsx @@ -10,7 +10,7 @@ import React, { useEffect, useTransition } from 'react'; import { useSafeLayoutEffect } from '../../client-boundary/hooks/useSafeLayoutEffect'; import { ClerkNextOptionsProvider, useClerkNextOptions } from '../../client-boundary/NextOptionsContext'; import type { NextClerkProviderProps } from '../../types'; -import { ClerkJSScript } from '../../utils/clerk-js-script'; +import { ClerkScripts } from '../../utils/clerk-script'; import { canUseKeyless } from '../../utils/feature-flags'; import { mergeNextClerkPropsWithEnv } from '../../utils/mergeNextClerkPropsWithEnv'; import { RouterTelemetry } from '../../utils/router-telemetry'; @@ -130,7 +130,7 @@ const NextClientClerkProvider = (props: NextClerkProviderProps) => { - + {children} diff --git a/packages/nextjs/src/pages/ClerkProvider.tsx b/packages/nextjs/src/pages/ClerkProvider.tsx index 58acfc72836..cedbda19ff9 100644 --- a/packages/nextjs/src/pages/ClerkProvider.tsx +++ b/packages/nextjs/src/pages/ClerkProvider.tsx @@ -7,7 +7,7 @@ import React from 'react'; import { useSafeLayoutEffect } from '../client-boundary/hooks/useSafeLayoutEffect'; import { ClerkNextOptionsProvider } from '../client-boundary/NextOptionsContext'; import type { NextClerkProviderProps } from '../types'; -import { ClerkJSScript } from '../utils/clerk-js-script'; +import { ClerkScripts } from '../utils/clerk-script'; import { invalidateNextRouterCache } from '../utils/invalidateNextRouterCache'; import { mergeNextClerkPropsWithEnv } from '../utils/mergeNextClerkPropsWithEnv'; import { removeBasePath } from '../utils/removeBasePath'; @@ -55,7 +55,7 @@ export function ClerkProvider({ children, ...props }: NextClerkProviderProps): J initialState={initialState} > - + {children} diff --git a/packages/nextjs/src/utils/clerk-js-script.tsx b/packages/nextjs/src/utils/clerk-js-script.tsx deleted file mode 100644 index f91bddb57de..00000000000 --- a/packages/nextjs/src/utils/clerk-js-script.tsx +++ /dev/null @@ -1,56 +0,0 @@ -import { useClerk } from '@clerk/react'; -import { buildClerkJsScriptAttributes, clerkJsScriptUrl } from '@clerk/react/internal'; -import NextScript from 'next/script'; -import React from 'react'; - -import { useClerkNextOptions } from '../client-boundary/NextOptionsContext'; - -type ClerkJSScriptProps = { - router: 'app' | 'pages'; -}; - -function ClerkJSScript(props: ClerkJSScriptProps) { - const { publishableKey, clerkJSUrl, clerkJSVersion, clerkJSVariant, nonce } = useClerkNextOptions(); - const { domain, proxyUrl } = useClerk(); - - /** - * If no publishable key, avoid appending an invalid script in the DOM. - */ - if (!publishableKey) { - return null; - } - - const options = { - domain, - proxyUrl, - publishableKey, - clerkJSUrl, - clerkJSVersion, - clerkJSVariant, - nonce, - }; - const scriptUrl = clerkJsScriptUrl(options); - - /** - * Notes: - * `next/script` in 13.x.x when used with App Router will fail to pass any of our `data-*` attributes, resulting in errors - * Nextjs App Router will automatically move inline scripts inside `` - * Using the `nextjs/script` for App Router with the `beforeInteractive` strategy will throw an error because our custom script will be mounted outside the `html` tag. - */ - const Script = props.router === 'app' ? 'script' : NextScript; - - return ( -