@clerk/ui 1.0.0-snapshot.v20251215212157 → 1.0.0-snapshot.v20251217162523
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{207_ui_3321de_1.0.0-snapshot.v20251215212157.js → 207_ui_d63654_1.0.0-snapshot.v20251217162523.js} +1 -1
- package/dist/{217_ui_3321de_1.0.0-snapshot.v20251215212157.js → 217_ui_d63654_1.0.0-snapshot.v20251217162523.js} +1 -1
- package/dist/{360_ui_3321de_1.0.0-snapshot.v20251215212157.js → 360_ui_d63654_1.0.0-snapshot.v20251217162523.js} +1 -1
- package/dist/{444_ui_3321de_1.0.0-snapshot.v20251215212157.js → 444_ui_d63654_1.0.0-snapshot.v20251217162523.js} +1 -1
- package/dist/{573_ui_3321de_1.0.0-snapshot.v20251215212157.js → 573_ui_d63654_1.0.0-snapshot.v20251217162523.js} +1 -1
- package/dist/{970_ui_3321de_1.0.0-snapshot.v20251215212157.js → 970_ui_d63654_1.0.0-snapshot.v20251217162523.js} +1 -1
- package/dist/ClerkUi.js +2 -2
- package/dist/Components.js +0 -7
- package/dist/Components.js.map +1 -1
- package/dist/{apiKeys_ui_3321de_1.0.0-snapshot.v20251215212157.js → apiKeys_ui_d63654_1.0.0-snapshot.v20251217162523.js} +1 -1
- package/dist/{checkout_ui_3321de_1.0.0-snapshot.v20251215212157.js → checkout_ui_d63654_1.0.0-snapshot.v20251217162523.js} +2 -2
- package/dist/common/EmailLinkVerify.js +1 -1
- package/dist/common/Gate.js +1 -1
- package/dist/common/RemoveResourceForm.js +1 -1
- package/dist/common/SSOCallback.js +1 -1
- package/dist/common/withRedirect.js +1 -1
- package/dist/components/APIKeys/APIKeys.js +1 -1
- package/dist/components/APIKeys/RevokeAPIKeyConfirmationModal.js +1 -1
- package/dist/components/Checkout/CheckoutComplete.js +1 -1
- package/dist/components/Checkout/CheckoutForm.js +1 -1
- package/dist/components/Checkout/CheckoutPage.js +1 -1
- package/dist/components/Checkout/parts.js +1 -1
- package/dist/components/CreateOrganization/CreateOrganizationForm.js +1 -1
- package/dist/components/CreateOrganization/CreateOrganizationPage.js +1 -1
- package/dist/components/ImpersonationFab/index.js +1 -1
- package/dist/components/OAuthConsent/OAuthConsent.js +1 -1
- package/dist/components/OrganizationList/UserInvitationList.js +1 -1
- package/dist/components/OrganizationList/UserMembershipList.js +1 -1
- package/dist/components/OrganizationList/UserSuggestionList.js +1 -1
- package/dist/components/OrganizationProfile/ActionConfirmationPage.js +1 -1
- package/dist/components/OrganizationProfile/ActiveMembersList.js +1 -1
- package/dist/components/OrganizationProfile/AddDomainForm.js +1 -1
- package/dist/components/OrganizationProfile/DomainList.js +1 -1
- package/dist/components/OrganizationProfile/InviteMembersForm.js +1 -1
- package/dist/components/OrganizationProfile/InviteMembersScreen.js +1 -1
- package/dist/components/OrganizationProfile/InvitedMembersList.js +1 -1
- package/dist/components/OrganizationProfile/OrganizationAPIKeysPage.js +1 -1
- package/dist/components/OrganizationProfile/OrganizationGeneralPage.js +1 -1
- package/dist/components/OrganizationProfile/OrganizationMembers.js +1 -1
- package/dist/components/OrganizationProfile/OrganizationProfileNavbar.js +1 -1
- package/dist/components/OrganizationProfile/ProfileForm.js +1 -1
- package/dist/components/OrganizationProfile/RemoveDomainForm.js +1 -1
- package/dist/components/OrganizationProfile/RequestToJoinList.js +1 -1
- package/dist/components/OrganizationProfile/VerifiedDomainForm.js +1 -1
- package/dist/components/OrganizationProfile/VerifyDomainForm.js +1 -1
- package/dist/components/OrganizationProfile/index.js +5 -4
- package/dist/components/OrganizationProfile/index.js.map +1 -1
- package/dist/components/OrganizationSwitcher/OrganizationSwitcherPopover.js +3 -6
- package/dist/components/OrganizationSwitcher/OrganizationSwitcherPopover.js.map +1 -1
- package/dist/components/OrganizationSwitcher/OrganizationSwitcherTrigger.js +1 -1
- package/dist/components/OrganizationSwitcher/UserInvitationSuggestionList.js +1 -1
- package/dist/components/OrganizationSwitcher/UserMembershipList.js +1 -1
- package/dist/components/PaymentMethods/AddPaymentMethod.js +1 -1
- package/dist/components/PaymentMethods/PaymentMethods.js +1 -1
- package/dist/components/PricingTable/PricingTable.js +2 -3
- package/dist/components/PricingTable/PricingTable.js.map +1 -1
- package/dist/components/PricingTable/PricingTableDefault.js +1 -1
- package/dist/components/SessionTasks/index.js +1 -1
- package/dist/components/SessionTasks/tasks/TaskChooseOrganization/ChooseOrganizationScreen.js +1 -1
- package/dist/components/SessionTasks/tasks/TaskChooseOrganization/CreateOrganizationScreen.js +1 -1
- package/dist/components/SessionTasks/tasks/TaskChooseOrganization/index.js +1 -1
- package/dist/components/SessionTasks/tasks/TaskResetPassword/index.js +1 -1
- package/dist/components/SignIn/SignInFactorOne.js +1 -1
- package/dist/components/SignIn/SignInFactorOneAlternativeChannelCodeForm.js +1 -1
- package/dist/components/SignIn/SignInFactorOneCodeForm.js +1 -1
- package/dist/components/SignIn/SignInFactorOneEmailLinkCard.js +1 -1
- package/dist/components/SignIn/SignInFactorOnePasswordCard.js +1 -1
- package/dist/components/SignIn/SignInFactorTwoAlternativeMethods.js +3 -1
- package/dist/components/SignIn/SignInFactorTwoAlternativeMethods.js.map +1 -1
- package/dist/components/SignIn/SignInFactorTwoBackupCodeCard.js +1 -1
- package/dist/components/SignIn/SignInFactorTwoCodeForm.js +1 -1
- package/dist/components/SignIn/SignInFactorTwoEmailLinkCard.js +1 -1
- package/dist/components/SignIn/SignInSocialButtons.js +1 -1
- package/dist/components/SignIn/SignInStart.js +1 -1
- package/dist/components/SignIn/index.js +3 -2
- package/dist/components/SignIn/index.js.map +1 -1
- package/dist/components/SignIn/shared.js +1 -1
- package/dist/components/SignUp/SignUpContinue.js +1 -1
- package/dist/components/SignUp/SignUpEmailLinkCard.js +1 -1
- package/dist/components/SignUp/SignUpRestrictedAccess.js +1 -1
- package/dist/components/SignUp/SignUpSocialButtons.js +1 -1
- package/dist/components/SignUp/SignUpStart.js +1 -1
- package/dist/components/SignUp/SignUpVerificationCodeForm.js +1 -1
- package/dist/components/SignUp/index.js +3 -2
- package/dist/components/SignUp/index.js.map +1 -1
- package/dist/components/SubscriptionDetails/index.js +1 -1
- package/dist/components/UserButton/UserButtonPopover.js +1 -1
- package/dist/components/UserButton/UserButtonTopLevelIdentifier.js +1 -1
- package/dist/components/UserButton/UserButtonTrigger.js +1 -1
- package/dist/components/UserButton/useMultisessionActions.js +2 -7
- package/dist/components/UserButton/useMultisessionActions.js.map +1 -1
- package/dist/components/UserProfile/APIKeysPage.js +1 -1
- package/dist/components/UserProfile/AccountPage.js +1 -1
- package/dist/components/UserProfile/ActiveDevicesSection.js +1 -1
- package/dist/components/UserProfile/AddAuthenticatorApp.js +1 -1
- package/dist/components/UserProfile/ConnectedAccountsMenu.js +1 -1
- package/dist/components/UserProfile/ConnectedAccountsSection.js +1 -1
- package/dist/components/UserProfile/DeleteUserForm.js +1 -1
- package/dist/components/UserProfile/EmailForm.js +1 -1
- package/dist/components/UserProfile/EmailsSection.js +1 -1
- package/dist/components/UserProfile/EnterpriseAccountsSection.js +1 -1
- package/dist/components/UserProfile/MfaBackupCodeCreateForm.js +1 -1
- package/dist/components/UserProfile/MfaBackupCodeList.js +1 -1
- package/dist/components/UserProfile/MfaForm.js +1 -1
- package/dist/components/UserProfile/MfaPhoneCodeScreen.js +1 -1
- package/dist/components/UserProfile/MfaSection.js +1 -1
- package/dist/components/UserProfile/PasskeySection.js +1 -1
- package/dist/components/UserProfile/PasswordForm.js +1 -1
- package/dist/components/UserProfile/PasswordSection.js +1 -1
- package/dist/components/UserProfile/PhoneForm.js +1 -1
- package/dist/components/UserProfile/PhoneSection.js +1 -1
- package/dist/components/UserProfile/ProfileForm.js +1 -1
- package/dist/components/UserProfile/RemoveResourceForm.js +1 -1
- package/dist/components/UserProfile/SecurityPage.js +1 -1
- package/dist/components/UserProfile/UserProfileSection.js +1 -1
- package/dist/components/UserProfile/UsernameForm.js +1 -1
- package/dist/components/UserProfile/UsernameSection.js +1 -1
- package/dist/components/UserProfile/VerifyTOTP.js +1 -1
- package/dist/components/UserProfile/Web3Form.js +1 -1
- package/dist/components/UserProfile/Web3Section.js +1 -1
- package/dist/components/UserProfile/index.js +3 -2
- package/dist/components/UserProfile/index.js.map +1 -1
- package/dist/components/UserVerification/UVFactorOneCodeForm.js +1 -1
- package/dist/components/UserVerification/UVFactorOnePasskeysCard.js +1 -1
- package/dist/components/UserVerification/UVFactorTwoBackupCodeCard.js +1 -1
- package/dist/components/UserVerification/UVFactorTwoCodeForm.js +1 -1
- package/dist/components/UserVerification/UVFactorTwoPhoneCodeCard.js +1 -1
- package/dist/components/UserVerification/UserVerificationFactorOnePassword.js +1 -1
- package/dist/components/UserVerification/UserVerificationFactorTwo.js +1 -1
- package/dist/components/UserVerification/UserVerificationFactorTwo.js.map +1 -1
- package/dist/components/UserVerification/index.js.map +1 -1
- package/dist/components/UserVerification/useUserVerificationSession.js +1 -1
- package/dist/components/Waitlist/WaitlistForm.js +1 -1
- package/dist/components/Waitlist/index.js +1 -1
- package/dist/components/devPrompts/EnableOrganizationsPrompt/index.js +1 -1
- package/dist/components/devPrompts/KeylessPrompt/index.js +1 -1
- package/dist/contexts/CoreClerkContextWrapper.js +1 -1
- package/dist/contexts/CoreSessionContext.js +1 -1
- package/dist/contexts/CoreUserContext.js +1 -1
- package/dist/{createorganization_ui_3321de_1.0.0-snapshot.v20251215212157.js → createorganization_ui_d63654_1.0.0-snapshot.v20251217162523.js} +1 -1
- package/dist/customizables/AppearanceContext.js +1 -1
- package/dist/customizables/parseAppearance.d.ts +2 -2
- package/dist/customizables/parseAppearance.d.ts.map +1 -1
- package/dist/customizables/parseAppearance.js.map +1 -1
- package/dist/elements/Action/ActionRoot.js +1 -1
- package/dist/elements/CodeControl.js +1 -1
- package/dist/elements/Drawer.js +2 -8
- package/dist/elements/Drawer.js.map +1 -1
- package/dist/elements/Form.js +1 -1
- package/dist/elements/Menu.js +2 -3
- package/dist/elements/Menu.js.map +1 -1
- package/dist/elements/Modal.js +2 -3
- package/dist/elements/Modal.js.map +1 -1
- package/dist/elements/Navbar.js +1 -1
- package/dist/elements/PhoneInput/index.js +1 -1
- package/dist/elements/Popover.js +1 -4
- package/dist/elements/Popover.js.map +1 -1
- package/dist/elements/Select.js +1 -1
- package/dist/elements/SocialButtons.js +1 -1
- package/dist/elements/Tabs.js +1 -1
- package/dist/elements/TimerButton.js +1 -1
- package/dist/elements/Tooltip.js +24 -29
- package/dist/elements/Tooltip.js.map +1 -1
- package/dist/elements/contexts/index.js +1 -1
- package/dist/{enableOrganizationsPrompt_ui_3321de_1.0.0-snapshot.v20251215212157.js → enableOrganizationsPrompt_ui_d63654_1.0.0-snapshot.v20251217162523.js} +1 -1
- package/dist/foundations/defaultFoundations.d.ts +153 -153
- package/dist/{impersonationfab_ui_3321de_1.0.0-snapshot.v20251215212157.js → impersonationfab_ui_d63654_1.0.0-snapshot.v20251217162523.js} +1 -1
- package/dist/index.js +1 -1
- package/dist/internal/index.d.ts +2 -1
- package/dist/internal/index.d.ts.map +1 -1
- package/dist/internal/index.js +1 -1
- package/dist/internal/index.js.map +1 -1
- package/dist/internal/routing.d.ts +13 -0
- package/dist/internal/routing.d.ts.map +1 -0
- package/dist/{keylessPrompt_ui_3321de_1.0.0-snapshot.v20251215212157.js → keylessPrompt_ui_d63654_1.0.0-snapshot.v20251217162523.js} +1 -1
- package/dist/lazyModules/MountedCheckoutDrawer.js +1 -1
- package/dist/lazyModules/MountedPlanDetailDrawer.js +1 -1
- package/dist/lazyModules/MountedSubscriptionDetailDrawer.js +1 -1
- package/dist/lazyModules/components.d.ts +21 -20
- package/dist/lazyModules/components.d.ts.map +1 -1
- package/dist/lazyModules/providers.js +17 -24
- package/dist/lazyModules/providers.js.map +1 -1
- package/dist/{oauthConsent_ui_3321de_1.0.0-snapshot.v20251215212157.js → oauthConsent_ui_d63654_1.0.0-snapshot.v20251217162523.js} +1 -1
- package/dist/{onetap_ui_3321de_1.0.0-snapshot.v20251215212157.js → onetap_ui_d63654_1.0.0-snapshot.v20251217162523.js} +1 -1
- package/dist/{op-api-keys-page_ui_3321de_1.0.0-snapshot.v20251215212157.js → op-api-keys-page_ui_d63654_1.0.0-snapshot.v20251217162523.js} +1 -1
- package/dist/{organizationlist_ui_3321de_1.0.0-snapshot.v20251215212157.js → organizationlist_ui_d63654_1.0.0-snapshot.v20251217162523.js} +1 -1
- package/dist/{organizationprofile_ui_3321de_1.0.0-snapshot.v20251215212157.js → organizationprofile_ui_d63654_1.0.0-snapshot.v20251217162523.js} +1 -1
- package/dist/organizationswitcher_ui_d63654_1.0.0-snapshot.v20251217162523.js +1 -0
- package/dist/{payment-attempt-page_ui_3321de_1.0.0-snapshot.v20251215212157.js → payment-attempt-page_ui_d63654_1.0.0-snapshot.v20251217162523.js} +1 -1
- package/dist/{planDetails_ui_3321de_1.0.0-snapshot.v20251215212157.js → planDetails_ui_d63654_1.0.0-snapshot.v20251217162523.js} +1 -1
- package/dist/{prefetchorganizationlist_ui_3321de_1.0.0-snapshot.v20251215212157.js → prefetchorganizationlist_ui_d63654_1.0.0-snapshot.v20251217162523.js} +1 -1
- package/dist/{pricingTable_ui_3321de_1.0.0-snapshot.v20251215212157.js → pricingTable_ui_d63654_1.0.0-snapshot.v20251217162523.js} +1 -1
- package/dist/primitives/hooks/useFormField.js +1 -1
- package/dist/{revoke-api-key-modal_ui_3321de_1.0.0-snapshot.v20251215212157.js → revoke-api-key-modal_ui_d63654_1.0.0-snapshot.v20251217162523.js} +1 -1
- package/dist/router/BaseRouter.js +1 -1
- package/dist/router/PathRouter.js +1 -1
- package/dist/router/Route.js +1 -1
- package/dist/router/VirtualRouter.js +1 -1
- package/dist/{sessionTasks_ui_3321de_1.0.0-snapshot.v20251215212157.js → sessionTasks_ui_d63654_1.0.0-snapshot.v20251217162523.js} +1 -1
- package/dist/signin_ui_d63654_1.0.0-snapshot.v20251217162523.js +1 -0
- package/dist/{signup_ui_3321de_1.0.0-snapshot.v20251215212157.js → signup_ui_d63654_1.0.0-snapshot.v20251217162523.js} +1 -1
- package/dist/{statement-page_ui_3321de_1.0.0-snapshot.v20251215212157.js → statement-page_ui_d63654_1.0.0-snapshot.v20251217162523.js} +1 -1
- package/dist/{subscriptionDetails_ui_3321de_1.0.0-snapshot.v20251215212157.js → subscriptionDetails_ui_d63654_1.0.0-snapshot.v20251217162523.js} +1 -1
- package/dist/{taskChooseOrganization_ui_3321de_1.0.0-snapshot.v20251215212157.js → taskChooseOrganization_ui_d63654_1.0.0-snapshot.v20251217162523.js} +1 -1
- package/dist/{taskResetPassword_ui_3321de_1.0.0-snapshot.v20251215212157.js → taskResetPassword_ui_d63654_1.0.0-snapshot.v20251217162523.js} +1 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/ui-common_ui_d63654_1.0.0-snapshot.v20251217162523.js +139 -0
- package/dist/ui.browser.js +3 -20
- package/dist/{up-api-keys-page_ui_3321de_1.0.0-snapshot.v20251215212157.js → up-api-keys-page_ui_d63654_1.0.0-snapshot.v20251217162523.js} +1 -1
- package/dist/{useravatar_ui_3321de_1.0.0-snapshot.v20251215212157.js → useravatar_ui_d63654_1.0.0-snapshot.v20251217162523.js} +1 -1
- package/dist/{userbutton_ui_3321de_1.0.0-snapshot.v20251215212157.js → userbutton_ui_d63654_1.0.0-snapshot.v20251217162523.js} +1 -1
- package/dist/{userprofile_ui_3321de_1.0.0-snapshot.v20251215212157.js → userprofile_ui_d63654_1.0.0-snapshot.v20251217162523.js} +2 -2
- package/dist/{userverification_ui_3321de_1.0.0-snapshot.v20251215212157.js → userverification_ui_d63654_1.0.0-snapshot.v20251217162523.js} +1 -1
- package/dist/vendors_ui_d63654_1.0.0-snapshot.v20251217162523.js +20 -0
- package/dist/{waitlist_ui_3321de_1.0.0-snapshot.v20251215212157.js → waitlist_ui_d63654_1.0.0-snapshot.v20251217162523.js} +1 -1
- package/package.json +6 -6
- package/dist/organizationswitcher_ui_3321de_1.0.0-snapshot.v20251215212157.js +0 -1
- package/dist/signin_ui_3321de_1.0.0-snapshot.v20251215212157.js +0 -1
- package/dist/ui-common_ui_3321de_1.0.0-snapshot.v20251215212157.js +0 -122
- package/dist/vendors_ui_3321de_1.0.0-snapshot.v20251215212157.js +0 -20
- /package/dist/{blankcaptcha_ui_3321de_1.0.0-snapshot.v20251215212157.js → blankcaptcha_ui_d63654_1.0.0-snapshot.v20251217162523.js} +0 -0
- /package/dist/{copy-api-key-modal_ui_3321de_1.0.0-snapshot.v20251215212157.js → copy-api-key-modal_ui_d63654_1.0.0-snapshot.v20251217162523.js} +0 -0
- /package/dist/{framework_ui_3321de_1.0.0-snapshot.v20251215212157.js → framework_ui_d63654_1.0.0-snapshot.v20251217162523.js} +0 -0
- /package/dist/{op-billing-page_ui_3321de_1.0.0-snapshot.v20251215212157.js → op-billing-page_ui_d63654_1.0.0-snapshot.v20251217162523.js} +0 -0
- /package/dist/{op-plans-page_ui_3321de_1.0.0-snapshot.v20251215212157.js → op-plans-page_ui_d63654_1.0.0-snapshot.v20251217162523.js} +0 -0
- /package/dist/{up-billing-page_ui_3321de_1.0.0-snapshot.v20251215212157.js → up-billing-page_ui_d63654_1.0.0-snapshot.v20251217162523.js} +0 -0
- /package/dist/{up-plans-page_ui_3321de_1.0.0-snapshot.v20251215212157.js → up-plans-page_ui_d63654_1.0.0-snapshot.v20251217162523.js} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Drawer.js","names":["React","FloatingOverlay","CloseIcon"],"sources":["../../src/elements/Drawer.tsx"],"sourcesContent":["import { usePortalRoot, useSafeLayoutEffect } from '@clerk/shared/react/index';\nimport type { UseDismissProps, UseFloatingOptions, UseRoleProps } from '@floating-ui/react';\nimport {\n FloatingFocusManager,\n FloatingPortal,\n useClick,\n useDismiss,\n useFloating,\n useInteractions,\n useMergeRefs,\n useRole,\n useTransitionStyles,\n} from '@floating-ui/react';\nimport * as React from 'react';\n\nimport type { LocalizationKey } from '../customizables';\nimport { Box, descriptors, Flex, Heading, Icon, Span, useAppearance } from '../customizables';\nimport { transitionDurationValues, transitionTiming } from '../foundations/transitions';\nimport { useDirection, usePrefersReducedMotion, useScrollLock } from '../hooks';\nimport { Close as CloseIcon } from '../icons';\nimport type { ThemableCssProp } from '../styledSystem';\nimport { common } from '../styledSystem';\nimport { colors } from '../utils/colors';\nimport { IconButton } from './IconButton';\n\ntype FloatingPortalProps = React.ComponentProps<typeof FloatingPortal>;\n\n/* -------------------------------------------------------------------------------------------------\n * Drawer Context\n * -----------------------------------------------------------------------------------------------*/\n\ninterface DrawerContext {\n isOpen: boolean;\n setIsOpen: (open: boolean) => void;\n strategy: UseFloatingOptions['strategy'];\n refs: ReturnType<typeof useFloating>['refs'];\n context: ReturnType<typeof useFloating>['context'];\n getFloatingProps: ReturnType<typeof useInteractions>['getFloatingProps'];\n portalProps: FloatingPortalProps;\n direction: ReturnType<typeof useDirection>;\n}\n\nconst DrawerContext = React.createContext<DrawerContext | null>(null);\n\nexport const useDrawerContext = () => {\n const context = React.useContext(DrawerContext);\n if (!context) {\n throw new Error('Drawer components must be wrapped in <Drawer.Root>');\n }\n return context;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Drawer.Root\n * -----------------------------------------------------------------------------------------------*/\n\ninterface RootProps {\n children: React.ReactNode;\n open: boolean;\n onOpenChange: (open: boolean) => void;\n /**\n * The strategy to use when positioning the floating element.\n * @default 'fixed'\n * @see https://floating-ui.com/docs/useFloating#strategy\n */\n strategy?: UseFloatingOptions['strategy'];\n /**\n * @see https://floating-ui.com/docs/useFloating\n */\n floatingProps?: Omit<UseFloatingOptions, 'open' | 'onOpenChange' | 'strategy' | 'transform'>;\n /**\n * @see https://floating-ui.com/docs/FloatingPortal\n */\n portalProps?: FloatingPortalProps;\n /**\n * @see https://floating-ui.com/docs/useDismiss\n */\n dismissProps?: UseDismissProps;\n}\n\nfunction Root({\n children,\n open,\n onOpenChange,\n strategy = 'fixed',\n floatingProps,\n portalProps,\n dismissProps,\n}: RootProps) {\n const direction = useDirection();\n const portalRoot = usePortalRoot();\n const effectivePortalRoot = portalProps?.root ?? portalRoot?.() ?? undefined;\n\n const { refs, context } = useFloating({\n open,\n onOpenChange,\n transform: false,\n strategy,\n placement: direction === 'ltr' ? 'right' : 'left',\n ...floatingProps,\n });\n\n const { getFloatingProps } = useInteractions([\n useClick(context),\n useDismiss(context, dismissProps),\n useRole(context),\n ]);\n\n return (\n <DrawerContext.Provider\n value={{\n isOpen: open,\n setIsOpen: onOpenChange,\n strategy,\n portalProps: { ...portalProps, root: effectivePortalRoot },\n refs,\n context,\n getFloatingProps,\n direction,\n }}\n >\n <FloatingPortal\n {...portalProps}\n root={effectivePortalRoot}\n >\n {children}\n </FloatingPortal>\n </DrawerContext.Provider>\n );\n}\n\n/* -------------------------------------------------------------------------------------------------\n * Drawer.Overlay\n * -----------------------------------------------------------------------------------------------*/\n\nexport const FloatingOverlay = React.forwardRef(function FloatingOverlay(\n props: React.ComponentPropsWithoutRef<typeof Box>,\n ref: React.ForwardedRef<HTMLDivElement>,\n) {\n const { strategy } = useDrawerContext();\n const { disableScrollLock, enableScrollLock } = useScrollLock();\n\n useSafeLayoutEffect(() => {\n if (strategy !== 'fixed') {\n return;\n }\n enableScrollLock();\n return () => {\n disableScrollLock();\n };\n }, [strategy, disableScrollLock, enableScrollLock]);\n\n return (\n <Box\n ref={ref}\n {...props}\n elementDescriptor={descriptors.drawerBackdrop}\n sx={[\n t => ({\n inset: 0,\n backgroundColor: colors.setAlpha(t.colors.$colorBackground, 0.28),\n }),\n props.sx,\n ]}\n />\n );\n});\n\nconst Overlay = React.forwardRef<HTMLDivElement>((_, ref) => {\n const { strategy, context } = useDrawerContext();\n\n const { isMounted, styles: transitionStyles } = useTransitionStyles(context, {\n initial: { opacity: 0 },\n open: { opacity: 1 },\n close: { opacity: 0 },\n common: {\n position: strategy,\n inset: 0,\n transitionProperty: 'opacity',\n transitionTimingFunction: transitionTiming.bezier,\n },\n duration: transitionDurationValues.drawer,\n });\n\n if (!isMounted) {\n return null;\n }\n\n return (\n <FloatingOverlay\n ref={ref}\n style={{\n ...transitionStyles,\n }}\n />\n );\n});\n\nOverlay.displayName = 'Drawer.Overlay';\n\n/* -------------------------------------------------------------------------------------------------\n * Drawer.Content\n * -----------------------------------------------------------------------------------------------*/\n\ninterface ContentProps {\n children: React.ReactNode;\n}\n\nconst Content = React.forwardRef<HTMLDivElement, ContentProps>(({ children }, ref) => {\n const prefersReducedMotion = usePrefersReducedMotion();\n const { animations: layoutAnimations } = useAppearance().parsedOptions;\n const isMotionSafe = !prefersReducedMotion && layoutAnimations === true;\n const { strategy, refs, context, getFloatingProps, direction } = useDrawerContext();\n const mergedRefs = useMergeRefs([ref, refs.setFloating]);\n\n const { isMounted, styles: transitionStyles } = useTransitionStyles(context, {\n initial: { transform: `translate3d(var(--transform-offset), 0, 0)` },\n open: { transform: 'translate3d(0, 0, 0)' },\n close: { transform: `translate3d(var(--transform-offset), 0, 0)` },\n common: {\n transitionProperty: 'transform',\n transitionTimingFunction: transitionTiming.bezier,\n },\n duration: isMotionSafe ? transitionDurationValues.drawer : 0,\n });\n\n if (!isMounted) {\n return null;\n }\n\n return (\n <FloatingFocusManager\n context={context}\n modal\n outsideElementsInert\n initialFocus={refs.floating}\n >\n <Box\n ref={mergedRefs}\n {...getFloatingProps()}\n sx={t => ({\n position: strategy,\n insetBlock: 0,\n insetInline: 0,\n pointerEvents: 'none',\n isolation: 'isolate',\n // When drawer is within the profile components, we need to ensure it is above the drawer\n // renders above the profile close button\n zIndex: strategy === 'absolute' ? t.zIndices.$modal : undefined,\n })}\n elementDescriptor={descriptors.drawerRoot}\n >\n <Flex\n elementDescriptor={descriptors.drawerContent}\n style={transitionStyles}\n direction='col'\n sx={t => ({\n // Apply the conditional right offset + the spread of the\n // box shadow to ensure it is fully offscreen before unmounting\n '--transform-offset':\n strategy === 'fixed'\n ? `calc((100% + ${t.space.$3} + ${t.space.$8x75}) * ${direction === 'rtl' ? -1 : 1})`\n : `calc((100% + ${t.space.$8x75}) * ${direction === 'rtl' ? -1 : 1})`,\n willChange: 'transform',\n position: strategy,\n insetBlock: strategy === 'fixed' ? t.space.$3 : 0,\n insetInlineEnd: strategy === 'fixed' ? t.space.$3 : 0,\n outline: 0,\n width: t.sizes.$100,\n maxWidth: strategy === 'fixed' ? `calc(100% - ${t.space.$6})` : '100%',\n backgroundColor: t.colors.$colorBackground,\n borderStartStartRadius: t.radii.$lg,\n borderEndStartRadius: t.radii.$lg,\n borderEndEndRadius: strategy === 'fixed' ? t.radii.$lg : 0,\n borderStartEndRadius: strategy === 'fixed' ? t.radii.$lg : 0,\n borderWidth: t.borderWidths.$normal,\n borderStyle: t.borderStyles.$solid,\n borderColor: t.colors.$borderAlpha150,\n overflow: 'hidden',\n pointerEvents: 'auto',\n })}\n >\n {children}\n </Flex>\n </Box>\n </FloatingFocusManager>\n );\n});\n\nContent.displayName = 'Drawer.Content';\n\n/* -------------------------------------------------------------------------------------------------\n * Drawer.Header\n * -----------------------------------------------------------------------------------------------*/\n\ninterface HeaderProps {\n title?: string | LocalizationKey;\n children?: React.ReactNode;\n sx?: ThemableCssProp;\n}\n\nconst Header = React.forwardRef<HTMLDivElement, HeaderProps>(({ title, children, sx }, ref) => {\n return (\n <Box\n ref={ref}\n elementDescriptor={descriptors.drawerHeader}\n as='header'\n sx={[\n t => ({\n display: 'flex',\n background: common.mergedColorsBackground(\n colors.setAlpha(t.colors.$colorBackground, 1),\n t.colors.$neutralAlpha50,\n ),\n borderBlockEndWidth: t.borderWidths.$normal,\n borderBlockEndStyle: t.borderStyles.$solid,\n borderBlockEndColor: t.colors.$borderAlpha150,\n borderStartStartRadius: t.radii.$lg,\n borderStartEndRadius: t.radii.$lg,\n paddingBlock: title ? t.space.$3 : undefined,\n paddingInline: title ? t.space.$4 : undefined,\n }),\n sx,\n ]}\n >\n {title ? (\n <>\n <Heading\n localizationKey={title}\n as='h2'\n elementDescriptor={descriptors.drawerTitle}\n textVariant='h2'\n sx={{\n alignSelf: 'center',\n }}\n />\n <Close />\n </>\n ) : (\n children\n )}\n </Box>\n );\n});\n\n/* -------------------------------------------------------------------------------------------------\n * Drawer.Body\n * -----------------------------------------------------------------------------------------------*/\n\ninterface BodyProps extends React.HTMLAttributes<HTMLDivElement> {\n children: React.ReactNode;\n sx?: ThemableCssProp;\n}\n\nconst Body = React.forwardRef<HTMLDivElement, BodyProps>(({ children, ...props }, ref) => {\n return (\n <Box\n ref={ref}\n elementDescriptor={descriptors.drawerBody}\n sx={[\n () => ({\n display: 'flex',\n flexDirection: 'column',\n flex: 1,\n overflowY: 'auto',\n overflowX: 'hidden',\n }),\n props.sx,\n ]}\n {...props}\n >\n {children}\n </Box>\n );\n});\n\n/* -------------------------------------------------------------------------------------------------\n * Drawer.Footer\n * -----------------------------------------------------------------------------------------------*/\n\ninterface FooterProps extends React.HTMLAttributes<HTMLDivElement> {\n children?: React.ReactNode;\n sx?: ThemableCssProp;\n}\n\nconst Footer = React.forwardRef<HTMLDivElement, FooterProps>(({ children, sx, ...props }, ref) => {\n return (\n <Box\n ref={ref}\n elementDescriptor={descriptors.drawerFooter}\n sx={[\n t => ({\n display: 'flex',\n flexDirection: 'column',\n background: common.mergedColorsBackground(\n colors.setAlpha(t.colors.$colorBackground, 1),\n t.colors.$neutralAlpha50,\n ),\n borderBlockStartWidth: t.borderWidths.$normal,\n borderBlockStartStyle: t.borderStyles.$solid,\n borderBlockStartColor: t.colors.$borderAlpha100,\n borderEndStartRadius: t.radii.$xl,\n borderEndEndRadius: t.radii.$xl,\n paddingBlock: t.space.$3,\n paddingInline: t.space.$4,\n }),\n sx,\n ]}\n {...props}\n >\n {children}\n </Box>\n );\n});\n\n/* -------------------------------------------------------------------------------------------------\n * Drawer.Close\n * -----------------------------------------------------------------------------------------------*/\n\nconst Close = React.forwardRef<HTMLButtonElement>((_, ref) => {\n const { setIsOpen } = useDrawerContext();\n return (\n <IconButton\n ref={ref}\n elementDescriptor={descriptors.drawerClose}\n variant='ghost'\n aria-label='Close drawer'\n onClick={() => setIsOpen(false)}\n icon={\n <Icon\n icon={CloseIcon}\n size='sm'\n />\n }\n sx={t => ({\n color: t.colors.$colorMutedForeground,\n padding: t.space.$3,\n marginInlineStart: 'auto',\n })}\n />\n );\n});\n\nClose.displayName = 'Drawer.Close';\n\n/* -------------------------------------------------------------------------------------------------\n * Drawer.Confirmation\n * -----------------------------------------------------------------------------------------------*/\n\ninterface ConfirmationProps {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n children: React.ReactNode;\n actionsSlot: React.ReactNode;\n /**\n * @see https://floating-ui.com/docs/userole\n */\n roleProps?: UseRoleProps;\n}\n\nconst Confirmation = React.forwardRef<HTMLDivElement, ConfirmationProps>(\n ({ open, onOpenChange, children, actionsSlot, roleProps }, ref) => {\n const prefersReducedMotion = usePrefersReducedMotion();\n const { animations: layoutAnimations } = useAppearance().parsedOptions;\n const isMotionSafe = !prefersReducedMotion && layoutAnimations === true;\n\n const { refs, context } = useFloating({\n open,\n onOpenChange,\n transform: false,\n strategy: 'absolute',\n });\n const { getFloatingProps } = useInteractions([\n useClick(context),\n useDismiss(context),\n useRole(context, { role: 'alertdialog', ...roleProps }),\n ]);\n\n const mergedRefs = useMergeRefs([ref, refs.setFloating]);\n\n const { styles: overlayTransitionStyles } = useTransitionStyles(context, {\n initial: { opacity: 0 },\n open: { opacity: 1 },\n close: { opacity: 0 },\n common: {\n transitionProperty: 'opacity',\n transitionTimingFunction: transitionTiming.bezier,\n },\n duration: transitionDurationValues.drawer,\n });\n\n const { isMounted, styles: modalTransitionStyles } = useTransitionStyles(context, {\n initial: { transform: 'translate3D(0, 100%, 0)' },\n open: { transform: 'translate3D(0, 0, 0)' },\n close: { transform: 'translate3D(0, 100%, 0)' },\n common: {\n transitionProperty: 'transform',\n transitionTimingFunction: transitionTiming.bezier,\n },\n duration: isMotionSafe ? transitionDurationValues.drawer : 0,\n });\n\n if (!isMounted) {\n return null;\n }\n\n return (\n <>\n <Span\n elementDescriptor={descriptors.drawerConfirmationBackdrop}\n style={overlayTransitionStyles}\n sx={t => ({\n position: 'absolute',\n inset: 0,\n backgroundImage: `linear-gradient(to bottom, ${colors.setAlpha(t.colors.$colorBackground, 0.28)}, ${t.colors.$colorBackground})`,\n })}\n />\n\n <FloatingFocusManager\n context={context}\n modal\n outsideElementsInert\n initialFocus={refs.floating}\n >\n <Box\n ref={mergedRefs}\n elementDescriptor={descriptors.drawerConfirmationRoot}\n style={modalTransitionStyles}\n {...getFloatingProps()}\n sx={t => ({\n display: 'flex',\n flexDirection: 'column',\n rowGap: t.space.$6,\n outline: 'none',\n willChange: 'transform',\n position: 'absolute',\n bottom: 0,\n left: 0,\n right: 0,\n background: common.mergedColorsBackground(\n colors.setAlpha(t.colors.$colorBackground, 1),\n t.colors.$neutralAlpha50,\n ),\n padding: t.space.$4,\n borderStartStartRadius: t.radii.$md,\n borderStartEndRadius: t.radii.$md,\n boxShadow: `0 0 0 1px ${t.colors.$borderAlpha100}`,\n })}\n >\n {children}\n\n <Flex\n elementDescriptor={descriptors.drawerConfirmationActions}\n gap={3}\n justify='end'\n >\n {actionsSlot}\n </Flex>\n </Box>\n </FloatingFocusManager>\n </>\n );\n },\n);\n\nConfirmation.displayName = 'Drawer.Confirmation';\n\nexport const Drawer = {\n Root,\n Overlay,\n Content,\n Header,\n Body,\n Footer,\n Confirmation,\n Close,\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Drawer.js","names":["React","FloatingOverlay","CloseIcon"],"sources":["../../src/elements/Drawer.tsx"],"sourcesContent":["import { useSafeLayoutEffect } from '@clerk/shared/react/index';\nimport type { UseDismissProps, UseFloatingOptions, UseRoleProps } from '@floating-ui/react';\nimport {\n FloatingFocusManager,\n FloatingPortal,\n useClick,\n useDismiss,\n useFloating,\n useInteractions,\n useMergeRefs,\n useRole,\n useTransitionStyles,\n} from '@floating-ui/react';\nimport * as React from 'react';\n\nimport type { LocalizationKey } from '../customizables';\nimport { Box, descriptors, Flex, Heading, Icon, Span, useAppearance } from '../customizables';\nimport { transitionDurationValues, transitionTiming } from '../foundations/transitions';\nimport { useDirection, usePrefersReducedMotion, useScrollLock } from '../hooks';\nimport { Close as CloseIcon } from '../icons';\nimport type { ThemableCssProp } from '../styledSystem';\nimport { common } from '../styledSystem';\nimport { colors } from '../utils/colors';\nimport { IconButton } from './IconButton';\n\ntype FloatingPortalProps = React.ComponentProps<typeof FloatingPortal>;\n\n/* -------------------------------------------------------------------------------------------------\n * Drawer Context\n * -----------------------------------------------------------------------------------------------*/\n\ninterface DrawerContext {\n isOpen: boolean;\n setIsOpen: (open: boolean) => void;\n strategy: UseFloatingOptions['strategy'];\n refs: ReturnType<typeof useFloating>['refs'];\n context: ReturnType<typeof useFloating>['context'];\n getFloatingProps: ReturnType<typeof useInteractions>['getFloatingProps'];\n portalProps: FloatingPortalProps;\n direction: ReturnType<typeof useDirection>;\n}\n\nconst DrawerContext = React.createContext<DrawerContext | null>(null);\n\nexport const useDrawerContext = () => {\n const context = React.useContext(DrawerContext);\n if (!context) {\n throw new Error('Drawer components must be wrapped in <Drawer.Root>');\n }\n return context;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Drawer.Root\n * -----------------------------------------------------------------------------------------------*/\n\ninterface RootProps {\n children: React.ReactNode;\n open: boolean;\n onOpenChange: (open: boolean) => void;\n /**\n * The strategy to use when positioning the floating element.\n * @default 'fixed'\n * @see https://floating-ui.com/docs/useFloating#strategy\n */\n strategy?: UseFloatingOptions['strategy'];\n /**\n * @see https://floating-ui.com/docs/useFloating\n */\n floatingProps?: Omit<UseFloatingOptions, 'open' | 'onOpenChange' | 'strategy' | 'transform'>;\n /**\n * @see https://floating-ui.com/docs/FloatingPortal\n */\n portalProps?: FloatingPortalProps;\n /**\n * @see https://floating-ui.com/docs/useDismiss\n */\n dismissProps?: UseDismissProps;\n}\n\nfunction Root({\n children,\n open,\n onOpenChange,\n strategy = 'fixed',\n floatingProps,\n portalProps,\n dismissProps,\n}: RootProps) {\n const direction = useDirection();\n\n const { refs, context } = useFloating({\n open,\n onOpenChange,\n transform: false,\n strategy,\n placement: direction === 'ltr' ? 'right' : 'left',\n ...floatingProps,\n });\n\n const { getFloatingProps } = useInteractions([\n useClick(context),\n useDismiss(context, dismissProps),\n useRole(context),\n ]);\n\n return (\n <DrawerContext.Provider\n value={{\n isOpen: open,\n setIsOpen: onOpenChange,\n strategy,\n portalProps: portalProps || {},\n refs,\n context,\n getFloatingProps,\n direction,\n }}\n >\n <FloatingPortal {...portalProps}>{children}</FloatingPortal>\n </DrawerContext.Provider>\n );\n}\n\n/* -------------------------------------------------------------------------------------------------\n * Drawer.Overlay\n * -----------------------------------------------------------------------------------------------*/\n\nexport const FloatingOverlay = React.forwardRef(function FloatingOverlay(\n props: React.ComponentPropsWithoutRef<typeof Box>,\n ref: React.ForwardedRef<HTMLDivElement>,\n) {\n const { strategy } = useDrawerContext();\n const { disableScrollLock, enableScrollLock } = useScrollLock();\n\n useSafeLayoutEffect(() => {\n if (strategy !== 'fixed') {\n return;\n }\n enableScrollLock();\n return () => {\n disableScrollLock();\n };\n }, [strategy, disableScrollLock, enableScrollLock]);\n\n return (\n <Box\n ref={ref}\n {...props}\n elementDescriptor={descriptors.drawerBackdrop}\n sx={[\n t => ({\n inset: 0,\n backgroundColor: colors.setAlpha(t.colors.$colorBackground, 0.28),\n }),\n props.sx,\n ]}\n />\n );\n});\n\nconst Overlay = React.forwardRef<HTMLDivElement>((_, ref) => {\n const { strategy, context } = useDrawerContext();\n\n const { isMounted, styles: transitionStyles } = useTransitionStyles(context, {\n initial: { opacity: 0 },\n open: { opacity: 1 },\n close: { opacity: 0 },\n common: {\n position: strategy,\n inset: 0,\n transitionProperty: 'opacity',\n transitionTimingFunction: transitionTiming.bezier,\n },\n duration: transitionDurationValues.drawer,\n });\n\n if (!isMounted) {\n return null;\n }\n\n return (\n <FloatingOverlay\n ref={ref}\n style={{\n ...transitionStyles,\n }}\n />\n );\n});\n\nOverlay.displayName = 'Drawer.Overlay';\n\n/* -------------------------------------------------------------------------------------------------\n * Drawer.Content\n * -----------------------------------------------------------------------------------------------*/\n\ninterface ContentProps {\n children: React.ReactNode;\n}\n\nconst Content = React.forwardRef<HTMLDivElement, ContentProps>(({ children }, ref) => {\n const prefersReducedMotion = usePrefersReducedMotion();\n const { animations: layoutAnimations } = useAppearance().parsedOptions;\n const isMotionSafe = !prefersReducedMotion && layoutAnimations === true;\n const { strategy, refs, context, getFloatingProps, direction } = useDrawerContext();\n const mergedRefs = useMergeRefs([ref, refs.setFloating]);\n\n const { isMounted, styles: transitionStyles } = useTransitionStyles(context, {\n initial: { transform: `translate3d(var(--transform-offset), 0, 0)` },\n open: { transform: 'translate3d(0, 0, 0)' },\n close: { transform: `translate3d(var(--transform-offset), 0, 0)` },\n common: {\n transitionProperty: 'transform',\n transitionTimingFunction: transitionTiming.bezier,\n },\n duration: isMotionSafe ? transitionDurationValues.drawer : 0,\n });\n\n if (!isMounted) {\n return null;\n }\n\n return (\n <FloatingFocusManager\n context={context}\n modal\n outsideElementsInert\n initialFocus={refs.floating}\n >\n <Box\n ref={mergedRefs}\n {...getFloatingProps()}\n sx={t => ({\n position: strategy,\n insetBlock: 0,\n insetInline: 0,\n pointerEvents: 'none',\n isolation: 'isolate',\n // When drawer is within the profile components, we need to ensure it is above the drawer\n // renders above the profile close button\n zIndex: strategy === 'absolute' ? t.zIndices.$modal : undefined,\n })}\n elementDescriptor={descriptors.drawerRoot}\n >\n <Flex\n elementDescriptor={descriptors.drawerContent}\n style={transitionStyles}\n direction='col'\n sx={t => ({\n // Apply the conditional right offset + the spread of the\n // box shadow to ensure it is fully offscreen before unmounting\n '--transform-offset':\n strategy === 'fixed'\n ? `calc((100% + ${t.space.$3} + ${t.space.$8x75}) * ${direction === 'rtl' ? -1 : 1})`\n : `calc((100% + ${t.space.$8x75}) * ${direction === 'rtl' ? -1 : 1})`,\n willChange: 'transform',\n position: strategy,\n insetBlock: strategy === 'fixed' ? t.space.$3 : 0,\n insetInlineEnd: strategy === 'fixed' ? t.space.$3 : 0,\n outline: 0,\n width: t.sizes.$100,\n maxWidth: strategy === 'fixed' ? `calc(100% - ${t.space.$6})` : '100%',\n backgroundColor: t.colors.$colorBackground,\n borderStartStartRadius: t.radii.$lg,\n borderEndStartRadius: t.radii.$lg,\n borderEndEndRadius: strategy === 'fixed' ? t.radii.$lg : 0,\n borderStartEndRadius: strategy === 'fixed' ? t.radii.$lg : 0,\n borderWidth: t.borderWidths.$normal,\n borderStyle: t.borderStyles.$solid,\n borderColor: t.colors.$borderAlpha150,\n overflow: 'hidden',\n pointerEvents: 'auto',\n })}\n >\n {children}\n </Flex>\n </Box>\n </FloatingFocusManager>\n );\n});\n\nContent.displayName = 'Drawer.Content';\n\n/* -------------------------------------------------------------------------------------------------\n * Drawer.Header\n * -----------------------------------------------------------------------------------------------*/\n\ninterface HeaderProps {\n title?: string | LocalizationKey;\n children?: React.ReactNode;\n sx?: ThemableCssProp;\n}\n\nconst Header = React.forwardRef<HTMLDivElement, HeaderProps>(({ title, children, sx }, ref) => {\n return (\n <Box\n ref={ref}\n elementDescriptor={descriptors.drawerHeader}\n as='header'\n sx={[\n t => ({\n display: 'flex',\n background: common.mergedColorsBackground(\n colors.setAlpha(t.colors.$colorBackground, 1),\n t.colors.$neutralAlpha50,\n ),\n borderBlockEndWidth: t.borderWidths.$normal,\n borderBlockEndStyle: t.borderStyles.$solid,\n borderBlockEndColor: t.colors.$borderAlpha150,\n borderStartStartRadius: t.radii.$lg,\n borderStartEndRadius: t.radii.$lg,\n paddingBlock: title ? t.space.$3 : undefined,\n paddingInline: title ? t.space.$4 : undefined,\n }),\n sx,\n ]}\n >\n {title ? (\n <>\n <Heading\n localizationKey={title}\n as='h2'\n elementDescriptor={descriptors.drawerTitle}\n textVariant='h2'\n sx={{\n alignSelf: 'center',\n }}\n />\n <Close />\n </>\n ) : (\n children\n )}\n </Box>\n );\n});\n\n/* -------------------------------------------------------------------------------------------------\n * Drawer.Body\n * -----------------------------------------------------------------------------------------------*/\n\ninterface BodyProps extends React.HTMLAttributes<HTMLDivElement> {\n children: React.ReactNode;\n sx?: ThemableCssProp;\n}\n\nconst Body = React.forwardRef<HTMLDivElement, BodyProps>(({ children, ...props }, ref) => {\n return (\n <Box\n ref={ref}\n elementDescriptor={descriptors.drawerBody}\n sx={[\n () => ({\n display: 'flex',\n flexDirection: 'column',\n flex: 1,\n overflowY: 'auto',\n overflowX: 'hidden',\n }),\n props.sx,\n ]}\n {...props}\n >\n {children}\n </Box>\n );\n});\n\n/* -------------------------------------------------------------------------------------------------\n * Drawer.Footer\n * -----------------------------------------------------------------------------------------------*/\n\ninterface FooterProps extends React.HTMLAttributes<HTMLDivElement> {\n children?: React.ReactNode;\n sx?: ThemableCssProp;\n}\n\nconst Footer = React.forwardRef<HTMLDivElement, FooterProps>(({ children, sx, ...props }, ref) => {\n return (\n <Box\n ref={ref}\n elementDescriptor={descriptors.drawerFooter}\n sx={[\n t => ({\n display: 'flex',\n flexDirection: 'column',\n background: common.mergedColorsBackground(\n colors.setAlpha(t.colors.$colorBackground, 1),\n t.colors.$neutralAlpha50,\n ),\n borderBlockStartWidth: t.borderWidths.$normal,\n borderBlockStartStyle: t.borderStyles.$solid,\n borderBlockStartColor: t.colors.$borderAlpha100,\n borderEndStartRadius: t.radii.$xl,\n borderEndEndRadius: t.radii.$xl,\n paddingBlock: t.space.$3,\n paddingInline: t.space.$4,\n }),\n sx,\n ]}\n {...props}\n >\n {children}\n </Box>\n );\n});\n\n/* -------------------------------------------------------------------------------------------------\n * Drawer.Close\n * -----------------------------------------------------------------------------------------------*/\n\nconst Close = React.forwardRef<HTMLButtonElement>((_, ref) => {\n const { setIsOpen } = useDrawerContext();\n return (\n <IconButton\n ref={ref}\n elementDescriptor={descriptors.drawerClose}\n variant='ghost'\n aria-label='Close drawer'\n onClick={() => setIsOpen(false)}\n icon={\n <Icon\n icon={CloseIcon}\n size='sm'\n />\n }\n sx={t => ({\n color: t.colors.$colorMutedForeground,\n padding: t.space.$3,\n marginInlineStart: 'auto',\n })}\n />\n );\n});\n\nClose.displayName = 'Drawer.Close';\n\n/* -------------------------------------------------------------------------------------------------\n * Drawer.Confirmation\n * -----------------------------------------------------------------------------------------------*/\n\ninterface ConfirmationProps {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n children: React.ReactNode;\n actionsSlot: React.ReactNode;\n /**\n * @see https://floating-ui.com/docs/userole\n */\n roleProps?: UseRoleProps;\n}\n\nconst Confirmation = React.forwardRef<HTMLDivElement, ConfirmationProps>(\n ({ open, onOpenChange, children, actionsSlot, roleProps }, ref) => {\n const prefersReducedMotion = usePrefersReducedMotion();\n const { animations: layoutAnimations } = useAppearance().parsedOptions;\n const isMotionSafe = !prefersReducedMotion && layoutAnimations === true;\n\n const { refs, context } = useFloating({\n open,\n onOpenChange,\n transform: false,\n strategy: 'absolute',\n });\n const { getFloatingProps } = useInteractions([\n useClick(context),\n useDismiss(context),\n useRole(context, { role: 'alertdialog', ...roleProps }),\n ]);\n\n const mergedRefs = useMergeRefs([ref, refs.setFloating]);\n\n const { styles: overlayTransitionStyles } = useTransitionStyles(context, {\n initial: { opacity: 0 },\n open: { opacity: 1 },\n close: { opacity: 0 },\n common: {\n transitionProperty: 'opacity',\n transitionTimingFunction: transitionTiming.bezier,\n },\n duration: transitionDurationValues.drawer,\n });\n\n const { isMounted, styles: modalTransitionStyles } = useTransitionStyles(context, {\n initial: { transform: 'translate3D(0, 100%, 0)' },\n open: { transform: 'translate3D(0, 0, 0)' },\n close: { transform: 'translate3D(0, 100%, 0)' },\n common: {\n transitionProperty: 'transform',\n transitionTimingFunction: transitionTiming.bezier,\n },\n duration: isMotionSafe ? transitionDurationValues.drawer : 0,\n });\n\n if (!isMounted) {\n return null;\n }\n\n return (\n <>\n <Span\n elementDescriptor={descriptors.drawerConfirmationBackdrop}\n style={overlayTransitionStyles}\n sx={t => ({\n position: 'absolute',\n inset: 0,\n backgroundImage: `linear-gradient(to bottom, ${colors.setAlpha(t.colors.$colorBackground, 0.28)}, ${t.colors.$colorBackground})`,\n })}\n />\n\n <FloatingFocusManager\n context={context}\n modal\n outsideElementsInert\n initialFocus={refs.floating}\n >\n <Box\n ref={mergedRefs}\n elementDescriptor={descriptors.drawerConfirmationRoot}\n style={modalTransitionStyles}\n {...getFloatingProps()}\n sx={t => ({\n display: 'flex',\n flexDirection: 'column',\n rowGap: t.space.$6,\n outline: 'none',\n willChange: 'transform',\n position: 'absolute',\n bottom: 0,\n left: 0,\n right: 0,\n background: common.mergedColorsBackground(\n colors.setAlpha(t.colors.$colorBackground, 1),\n t.colors.$neutralAlpha50,\n ),\n padding: t.space.$4,\n borderStartStartRadius: t.radii.$md,\n borderStartEndRadius: t.radii.$md,\n boxShadow: `0 0 0 1px ${t.colors.$borderAlpha100}`,\n })}\n >\n {children}\n\n <Flex\n elementDescriptor={descriptors.drawerConfirmationActions}\n gap={3}\n justify='end'\n >\n {actionsSlot}\n </Flex>\n </Box>\n </FloatingFocusManager>\n </>\n );\n },\n);\n\nConfirmation.displayName = 'Drawer.Confirmation';\n\nexport const Drawer = {\n Root,\n Overlay,\n Content,\n Header,\n Body,\n Footer,\n Confirmation,\n Close,\n};\n"],"mappings":"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"}
|
package/dist/elements/Form.js
CHANGED
|
@@ -6,8 +6,8 @@ import { Button, Col, Flex, Form } from "../customizables/index.js";
|
|
|
6
6
|
import { LastAuthenticationStrategyBadge } from "./Badge.js";
|
|
7
7
|
import { Field } from "./FieldControl.js";
|
|
8
8
|
import React, { forwardRef, useState } from "react";
|
|
9
|
-
import { createContextAndHook } from "@clerk/shared/react";
|
|
10
9
|
import { jsx, jsxs } from "@emotion/react/jsx-runtime";
|
|
10
|
+
import { createContextAndHook } from "@clerk/shared/react";
|
|
11
11
|
|
|
12
12
|
//#region src/elements/Form.tsx
|
|
13
13
|
const [FormState, useFormState] = createContextAndHook("FormState");
|
package/dist/elements/Menu.js
CHANGED
|
@@ -6,8 +6,8 @@ import { withFloatingTree } from "./contexts/index.js";
|
|
|
6
6
|
import { Col, SimpleButton } from "../customizables/index.js";
|
|
7
7
|
import { Popover } from "./Popover.js";
|
|
8
8
|
import React, { cloneElement, isValidElement, useLayoutEffect, useRef } from "react";
|
|
9
|
-
import { createContextAndHook } from "@clerk/shared/react";
|
|
10
9
|
import { jsx } from "@emotion/react/jsx-runtime";
|
|
10
|
+
import { createContextAndHook } from "@clerk/shared/react";
|
|
11
11
|
|
|
12
12
|
//#region src/elements/Menu.tsx
|
|
13
13
|
const [MenuStateCtx, useMenuState] = createContextAndHook("MenuState");
|
|
@@ -133,8 +133,7 @@ const MenuItem = (props) => {
|
|
|
133
133
|
sx: [(theme) => ({
|
|
134
134
|
justifyContent: "start",
|
|
135
135
|
borderRadius: theme.radii.$sm,
|
|
136
|
-
padding: `${theme.space.$1} ${theme.space.$3}
|
|
137
|
-
whiteSpace: "nowrap"
|
|
136
|
+
padding: `${theme.space.$1} ${theme.space.$3}`
|
|
138
137
|
}), sx],
|
|
139
138
|
...rest
|
|
140
139
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Menu.js","names":["sibling: Element | null"],"sources":["../../src/elements/Menu.tsx"],"sourcesContent":["import { createContextAndHook } from '@clerk/shared/react';\nimport type { MenuId } from '@clerk/shared/types';\nimport type { Placement } from '@floating-ui/react';\nimport type { PropsWithChildren } from 'react';\nimport React, { cloneElement, isValidElement, useLayoutEffect, useRef } from 'react';\n\nimport type { Button } from '../customizables';\nimport { Col, descriptors, SimpleButton } from '../customizables';\nimport type { UsePopoverReturn } from '../hooks';\nimport { usePopover } from '../hooks';\nimport type { PropsOfComponent } from '../styledSystem';\nimport { animations } from '../styledSystem';\nimport { colors } from '../utils/colors';\nimport { withFloatingTree } from './contexts';\nimport { Popover } from './Popover';\n\ntype MenuState = {\n popoverCtx: UsePopoverReturn;\n elementId?: MenuId;\n};\n\nexport const [MenuStateCtx, useMenuState] = createContextAndHook<MenuState>('MenuState');\n\ntype MenuProps = PropsWithChildren<Record<never, never>> & {\n elementId?: MenuId;\n popoverPlacement?: Placement;\n};\n\nexport const Menu = withFloatingTree((props: MenuProps) => {\n const { popoverPlacement = 'bottom-end', elementId, ...rest } = props;\n const popoverCtx = usePopover({\n placement: popoverPlacement,\n offset: 8,\n shoudFlip: true,\n });\n\n const value = React.useMemo(() => ({ value: { popoverCtx, elementId } }), [{ ...popoverCtx }, elementId]);\n\n return (\n <MenuStateCtx.Provider\n value={value}\n {...rest}\n />\n );\n});\n\ntype MenuTriggerProps = React.PropsWithChildren<{ arialLabel?: string | ((open: boolean) => string) }>;\n\nexport const MenuTrigger = (props: MenuTriggerProps) => {\n const { children, arialLabel } = props;\n const { popoverCtx, elementId } = useMenuState();\n const { reference, toggle, isOpen } = popoverCtx;\n\n const normalizedAriaLabel = typeof arialLabel === 'function' ? arialLabel(isOpen) : arialLabel;\n\n if (!isValidElement(children)) {\n return null;\n }\n\n return cloneElement(children, {\n // @ts-expect-error\n ref: reference,\n elementDescriptor: children.props.elementDescriptor || descriptors.menuButton,\n elementId: children.props.elementId || descriptors.menuButton.setId(elementId),\n 'aria-label': normalizedAriaLabel,\n 'aria-expanded': isOpen,\n onClick: (e: React.MouseEvent) => {\n children.props?.onClick?.(e);\n toggle();\n },\n });\n};\n\nconst findMenuItem = (el: Element, siblingType: 'prev' | 'next', options?: { countSelf?: boolean }) => {\n let tagName = options?.countSelf ? el.tagName : '';\n let sibling: Element | null = el;\n while (sibling && tagName.toUpperCase() !== 'BUTTON') {\n sibling = sibling[siblingType === 'prev' ? 'previousElementSibling' : 'nextElementSibling'];\n tagName = sibling?.tagName ?? '';\n }\n return sibling;\n};\n\ntype MenuListProps = PropsOfComponent<typeof Col> & {\n asPortal?: boolean;\n};\n\nexport const MenuList = (props: MenuListProps) => {\n const { sx, asPortal, ...rest } = props;\n const { popoverCtx, elementId } = useMenuState();\n const { floating, styles, isOpen, context, nodeId } = popoverCtx;\n const containerRef = useRef<HTMLDivElement | null>(null);\n\n useLayoutEffect(() => {\n const current = containerRef.current;\n floating(current);\n }, [isOpen]);\n\n const onKeyDown = (e: React.KeyboardEvent<HTMLDivElement>) => {\n const current = containerRef.current;\n if (!current) {\n return;\n }\n\n if (current !== document.activeElement) {\n return;\n }\n\n if (e.key === 'ArrowDown') {\n e.preventDefault();\n return (findMenuItem(current.children[0], 'next', { countSelf: true }) as HTMLElement)?.focus();\n }\n };\n\n return (\n <Popover\n context={context}\n nodeId={nodeId}\n isOpen={isOpen}\n portal={asPortal}\n >\n <Col\n elementDescriptor={descriptors.menuList}\n elementId={descriptors.menuList.setId(elementId)}\n ref={containerRef}\n role='menu'\n onKeyDown={onKeyDown}\n sx={[\n t => ({\n backgroundColor: colors.makeSolid(t.colors.$colorBackground),\n borderWidth: t.borderWidths.$normal,\n borderStyle: t.borderStyles.$solid,\n borderColor: t.colors.$borderAlpha150,\n outline: 'none',\n borderRadius: t.radii.$md,\n padding: t.space.$0x5,\n overflow: 'hidden',\n top: `calc(100% + ${t.space.$2})`,\n animation: `${animations.dropdownSlideInScaleAndFade} ${t.transitionDuration.$slower} ${t.transitionTiming.$slowBezier}`,\n transformOrigin: 'top center',\n zIndex: t.zIndices.$dropdown,\n gap: t.space.$0x5,\n }),\n sx,\n ]}\n style={styles}\n {...rest}\n />\n </Popover>\n );\n};\n\ntype MenuItemProps = PropsOfComponent<typeof Button> & {\n destructive?: boolean;\n closeAfterClick?: boolean;\n};\n\nexport const MenuItem = (props: MenuItemProps) => {\n const { sx, onClick, destructive, closeAfterClick = true, ...rest } = props;\n const { popoverCtx, elementId } = useMenuState();\n const { toggle } = popoverCtx;\n const buttonRef = useRef<HTMLButtonElement>(null);\n\n const onKeyDown = (e: React.KeyboardEvent<HTMLButtonElement>) => {\n const current = buttonRef.current;\n if (!current) {\n return;\n }\n\n const key = e.key;\n if (key !== 'ArrowUp' && key !== 'ArrowDown') {\n return;\n }\n\n e.preventDefault();\n const sibling = findMenuItem(current, key === 'ArrowUp' ? 'prev' : 'next');\n (sibling as HTMLElement)?.focus();\n };\n\n return (\n <SimpleButton\n ref={buttonRef}\n elementDescriptor={descriptors.menuItem}\n elementId={descriptors.menuItem.setId(elementId)}\n hoverAsFocus\n variant='ghost'\n colorScheme={destructive ? 'danger' : 'neutral'}\n role='menuitem'\n onKeyDown={onKeyDown}\n focusRing={false}\n onClick={e => {\n onClick?.(e);\n if (closeAfterClick) {\n toggle();\n }\n }}\n sx={[\n theme => ({\n justifyContent: 'start',\n borderRadius: theme.radii.$sm,\n padding: `${theme.space.$1} ${theme.space.$3}`,\n
|
|
1
|
+
{"version":3,"file":"Menu.js","names":["sibling: Element | null"],"sources":["../../src/elements/Menu.tsx"],"sourcesContent":["import { createContextAndHook } from '@clerk/shared/react';\nimport type { MenuId } from '@clerk/shared/types';\nimport type { Placement } from '@floating-ui/react';\nimport type { PropsWithChildren } from 'react';\nimport React, { cloneElement, isValidElement, useLayoutEffect, useRef } from 'react';\n\nimport type { Button } from '../customizables';\nimport { Col, descriptors, SimpleButton } from '../customizables';\nimport type { UsePopoverReturn } from '../hooks';\nimport { usePopover } from '../hooks';\nimport type { PropsOfComponent } from '../styledSystem';\nimport { animations } from '../styledSystem';\nimport { colors } from '../utils/colors';\nimport { withFloatingTree } from './contexts';\nimport { Popover } from './Popover';\n\ntype MenuState = {\n popoverCtx: UsePopoverReturn;\n elementId?: MenuId;\n};\n\nexport const [MenuStateCtx, useMenuState] = createContextAndHook<MenuState>('MenuState');\n\ntype MenuProps = PropsWithChildren<Record<never, never>> & {\n elementId?: MenuId;\n popoverPlacement?: Placement;\n};\n\nexport const Menu = withFloatingTree((props: MenuProps) => {\n const { popoverPlacement = 'bottom-end', elementId, ...rest } = props;\n const popoverCtx = usePopover({\n placement: popoverPlacement,\n offset: 8,\n shoudFlip: true,\n });\n\n const value = React.useMemo(() => ({ value: { popoverCtx, elementId } }), [{ ...popoverCtx }, elementId]);\n\n return (\n <MenuStateCtx.Provider\n value={value}\n {...rest}\n />\n );\n});\n\ntype MenuTriggerProps = React.PropsWithChildren<{ arialLabel?: string | ((open: boolean) => string) }>;\n\nexport const MenuTrigger = (props: MenuTriggerProps) => {\n const { children, arialLabel } = props;\n const { popoverCtx, elementId } = useMenuState();\n const { reference, toggle, isOpen } = popoverCtx;\n\n const normalizedAriaLabel = typeof arialLabel === 'function' ? arialLabel(isOpen) : arialLabel;\n\n if (!isValidElement(children)) {\n return null;\n }\n\n return cloneElement(children, {\n // @ts-expect-error\n ref: reference,\n elementDescriptor: children.props.elementDescriptor || descriptors.menuButton,\n elementId: children.props.elementId || descriptors.menuButton.setId(elementId),\n 'aria-label': normalizedAriaLabel,\n 'aria-expanded': isOpen,\n onClick: (e: React.MouseEvent) => {\n children.props?.onClick?.(e);\n toggle();\n },\n });\n};\n\nconst findMenuItem = (el: Element, siblingType: 'prev' | 'next', options?: { countSelf?: boolean }) => {\n let tagName = options?.countSelf ? el.tagName : '';\n let sibling: Element | null = el;\n while (sibling && tagName.toUpperCase() !== 'BUTTON') {\n sibling = sibling[siblingType === 'prev' ? 'previousElementSibling' : 'nextElementSibling'];\n tagName = sibling?.tagName ?? '';\n }\n return sibling;\n};\n\ntype MenuListProps = PropsOfComponent<typeof Col> & {\n asPortal?: boolean;\n};\n\nexport const MenuList = (props: MenuListProps) => {\n const { sx, asPortal, ...rest } = props;\n const { popoverCtx, elementId } = useMenuState();\n const { floating, styles, isOpen, context, nodeId } = popoverCtx;\n const containerRef = useRef<HTMLDivElement | null>(null);\n\n useLayoutEffect(() => {\n const current = containerRef.current;\n floating(current);\n }, [isOpen]);\n\n const onKeyDown = (e: React.KeyboardEvent<HTMLDivElement>) => {\n const current = containerRef.current;\n if (!current) {\n return;\n }\n\n if (current !== document.activeElement) {\n return;\n }\n\n if (e.key === 'ArrowDown') {\n e.preventDefault();\n return (findMenuItem(current.children[0], 'next', { countSelf: true }) as HTMLElement)?.focus();\n }\n };\n\n return (\n <Popover\n context={context}\n nodeId={nodeId}\n isOpen={isOpen}\n portal={asPortal}\n >\n <Col\n elementDescriptor={descriptors.menuList}\n elementId={descriptors.menuList.setId(elementId)}\n ref={containerRef}\n role='menu'\n onKeyDown={onKeyDown}\n sx={[\n t => ({\n backgroundColor: colors.makeSolid(t.colors.$colorBackground),\n borderWidth: t.borderWidths.$normal,\n borderStyle: t.borderStyles.$solid,\n borderColor: t.colors.$borderAlpha150,\n outline: 'none',\n borderRadius: t.radii.$md,\n padding: t.space.$0x5,\n overflow: 'hidden',\n top: `calc(100% + ${t.space.$2})`,\n animation: `${animations.dropdownSlideInScaleAndFade} ${t.transitionDuration.$slower} ${t.transitionTiming.$slowBezier}`,\n transformOrigin: 'top center',\n zIndex: t.zIndices.$dropdown,\n gap: t.space.$0x5,\n }),\n sx,\n ]}\n style={styles}\n {...rest}\n />\n </Popover>\n );\n};\n\ntype MenuItemProps = PropsOfComponent<typeof Button> & {\n destructive?: boolean;\n closeAfterClick?: boolean;\n};\n\nexport const MenuItem = (props: MenuItemProps) => {\n const { sx, onClick, destructive, closeAfterClick = true, ...rest } = props;\n const { popoverCtx, elementId } = useMenuState();\n const { toggle } = popoverCtx;\n const buttonRef = useRef<HTMLButtonElement>(null);\n\n const onKeyDown = (e: React.KeyboardEvent<HTMLButtonElement>) => {\n const current = buttonRef.current;\n if (!current) {\n return;\n }\n\n const key = e.key;\n if (key !== 'ArrowUp' && key !== 'ArrowDown') {\n return;\n }\n\n e.preventDefault();\n const sibling = findMenuItem(current, key === 'ArrowUp' ? 'prev' : 'next');\n (sibling as HTMLElement)?.focus();\n };\n\n return (\n <SimpleButton\n ref={buttonRef}\n elementDescriptor={descriptors.menuItem}\n elementId={descriptors.menuItem.setId(elementId)}\n hoverAsFocus\n variant='ghost'\n colorScheme={destructive ? 'danger' : 'neutral'}\n role='menuitem'\n onKeyDown={onKeyDown}\n focusRing={false}\n onClick={e => {\n onClick?.(e);\n if (closeAfterClick) {\n toggle();\n }\n }}\n sx={[\n theme => ({\n justifyContent: 'start',\n borderRadius: theme.radii.$sm,\n padding: `${theme.space.$1} ${theme.space.$3}`,\n }),\n sx,\n ]}\n {...rest}\n />\n );\n};\n"],"mappings":"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"}
|
package/dist/elements/Modal.js
CHANGED
|
@@ -7,15 +7,14 @@ import { withFloatingTree } from "./contexts/index.js";
|
|
|
7
7
|
import { Flex } from "../customizables/index.js";
|
|
8
8
|
import { Popover } from "./Popover.js";
|
|
9
9
|
import React, { useRef } from "react";
|
|
10
|
-
import { createContextAndHook, usePortalRoot, useSafeLayoutEffect } from "@clerk/shared/react";
|
|
11
10
|
import { jsx } from "@emotion/react/jsx-runtime";
|
|
11
|
+
import { createContextAndHook, useSafeLayoutEffect } from "@clerk/shared/react";
|
|
12
12
|
|
|
13
13
|
//#region src/elements/Modal.tsx
|
|
14
14
|
const [ModalContext, _, useUnsafeModalContext] = createContextAndHook("ModalContext");
|
|
15
15
|
const Modal = withFloatingTree((props) => {
|
|
16
16
|
const { disableScrollLock, enableScrollLock } = useScrollLock();
|
|
17
17
|
const { handleClose, handleOpen, contentSx, containerSx, canCloseModal, id, style, portalRoot, initialFocusRef } = props;
|
|
18
|
-
const portalRootFromContext = usePortalRoot();
|
|
19
18
|
const overlayRef = useRef(null);
|
|
20
19
|
const { floating, isOpen, context, nodeId, toggle } = usePopover({
|
|
21
20
|
defaultOpen: true,
|
|
@@ -39,7 +38,7 @@ const Modal = withFloatingTree((props) => {
|
|
|
39
38
|
context,
|
|
40
39
|
isOpen,
|
|
41
40
|
outsideElementsInert: true,
|
|
42
|
-
root: portalRoot
|
|
41
|
+
root: portalRoot,
|
|
43
42
|
initialFocus: initialFocusRef,
|
|
44
43
|
children: /* @__PURE__ */ jsx(ModalContext.Provider, {
|
|
45
44
|
value: modalCtx,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Modal.js","names":[],"sources":["../../src/elements/Modal.tsx"],"sourcesContent":["import { createContextAndHook,
|
|
1
|
+
{"version":3,"file":"Modal.js","names":[],"sources":["../../src/elements/Modal.tsx"],"sourcesContent":["import { createContextAndHook, useSafeLayoutEffect } from '@clerk/shared/react';\nimport React, { useRef } from 'react';\n\nimport { descriptors, Flex } from '../customizables';\nimport { usePopover } from '../hooks';\nimport { useScrollLock } from '../hooks/useScrollLock';\nimport type { ThemableCssProp } from '../styledSystem';\nimport { animations, mqu } from '../styledSystem';\nimport { withFloatingTree } from './contexts';\nimport { Popover } from './Popover';\n\nexport const [ModalContext, _, useUnsafeModalContext] = createContextAndHook<{ toggle?: () => void }>('ModalContext');\n\ntype ModalProps = React.PropsWithChildren<{\n id?: string;\n handleOpen?: () => void;\n handleClose?: () => void;\n contentSx?: ThemableCssProp;\n containerSx?: ThemableCssProp;\n canCloseModal?: boolean;\n style?: React.CSSProperties;\n portalRoot?: HTMLElement | React.MutableRefObject<HTMLElement | null>;\n initialFocusRef?: number | React.MutableRefObject<HTMLElement | null>;\n}>;\n\nexport const Modal = withFloatingTree((props: ModalProps) => {\n const { disableScrollLock, enableScrollLock } = useScrollLock();\n const { handleClose, handleOpen, contentSx, containerSx, canCloseModal, id, style, portalRoot, initialFocusRef } =\n props;\n const overlayRef = useRef<HTMLDivElement>(null);\n const { floating, isOpen, context, nodeId, toggle } = usePopover({\n defaultOpen: true,\n autoUpdate: false,\n outsidePress: e => e.target === overlayRef.current,\n canCloseModal,\n });\n\n React.useEffect(() => {\n if (!isOpen) {\n handleClose?.();\n } else {\n handleOpen?.();\n }\n }, [isOpen]);\n const modalCtx = React.useMemo(() => ({ value: canCloseModal === false ? {} : { toggle } }), [toggle, canCloseModal]);\n\n useSafeLayoutEffect(() => {\n enableScrollLock();\n\n return () => {\n disableScrollLock();\n };\n }, []);\n\n return (\n <Popover\n nodeId={nodeId}\n context={context}\n isOpen={isOpen}\n outsideElementsInert\n root={portalRoot}\n initialFocus={initialFocusRef}\n >\n <ModalContext.Provider value={modalCtx}>\n <Flex\n id={id}\n ref={overlayRef}\n elementDescriptor={descriptors.modalBackdrop}\n style={style}\n sx={[\n t => ({\n animation: `${animations.fadeIn} 150ms ${t.transitionTiming.$common}`,\n zIndex: t.zIndices.$modal,\n backgroundColor: t.colors.$colorModalBackdrop,\n alignItems: 'flex-start',\n justifyContent: 'center',\n overflow: 'auto',\n width: '100vw',\n height: ['100vh', '-webkit-fill-available'],\n position: 'fixed',\n left: 0,\n top: 0,\n }),\n containerSx,\n ]}\n >\n <Flex\n elementDescriptor={descriptors.modalContent}\n ref={floating}\n aria-modal='true'\n role='dialog'\n sx={[\n t => ({\n position: 'relative',\n outline: 0,\n animation: `${animations.modalSlideAndFade} 180ms ${t.transitionTiming.$easeOut}`,\n margin: `${t.space.$16} 0`,\n [mqu.sm]: {\n margin: `${t.space.$10} 0`,\n },\n }),\n contentSx,\n ]}\n >\n {props.children}\n </Flex>\n </Flex>\n </ModalContext.Provider>\n </Popover>\n );\n});\n"],"mappings":";;;;;;;;;;;;;AAWA,MAAa,CAAC,cAAc,GAAG,yBAAyB,qBAA8C,eAAe;AAcrH,MAAa,QAAQ,kBAAkB,UAAsB;CAC3D,MAAM,EAAE,mBAAmB,qBAAqB,eAAe;CAC/D,MAAM,EAAE,aAAa,YAAY,WAAW,aAAa,eAAe,IAAI,OAAO,YAAY,oBAC7F;CACF,MAAM,aAAa,OAAuB,KAAK;CAC/C,MAAM,EAAE,UAAU,QAAQ,SAAS,QAAQ,WAAW,WAAW;EAC/D,aAAa;EACb,YAAY;EACZ,eAAc,MAAK,EAAE,WAAW,WAAW;EAC3C;EACD,CAAC;AAEF,OAAM,gBAAgB;AACpB,MAAI,CAAC,OACH,gBAAe;MAEf,eAAc;IAEf,CAAC,OAAO,CAAC;CACZ,MAAM,WAAW,MAAM,eAAe,EAAE,OAAO,kBAAkB,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,cAAc,CAAC;AAErH,2BAA0B;AACxB,oBAAkB;AAElB,eAAa;AACX,sBAAmB;;IAEpB,EAAE,CAAC;AAEN,QACE,oBAAC;EACS;EACC;EACD;EACR;EACA,MAAM;EACN,cAAc;YAEd,oBAAC,aAAa;GAAS,OAAO;aAC5B,oBAAC;IACK;IACJ,KAAK;IACL,mBAAmB,YAAY;IACxB;IACP,IAAI,EACF,OAAM;KACJ,WAAW,GAAG,WAAW,OAAO,SAAS,EAAE,iBAAiB;KAC5D,QAAQ,EAAE,SAAS;KACnB,iBAAiB,EAAE,OAAO;KAC1B,YAAY;KACZ,gBAAgB;KAChB,UAAU;KACV,OAAO;KACP,QAAQ,CAAC,SAAS,yBAAyB;KAC3C,UAAU;KACV,MAAM;KACN,KAAK;KACN,GACD,YACD;cAED,oBAAC;KACC,mBAAmB,YAAY;KAC/B,KAAK;KACL,cAAW;KACX,MAAK;KACL,IAAI,EACF,OAAM;MACJ,UAAU;MACV,SAAS;MACT,WAAW,GAAG,WAAW,kBAAkB,SAAS,EAAE,iBAAiB;MACvE,QAAQ,GAAG,EAAE,MAAM,IAAI;OACtB,IAAI,KAAK,EACR,QAAQ,GAAG,EAAE,MAAM,IAAI,KACxB;MACF,GACD,UACD;eAEA,MAAM;MACF;KACF;IACe;GAChB;EAEZ"}
|
package/dist/elements/Navbar.js
CHANGED
|
@@ -14,8 +14,8 @@ import { DevModeOverlay } from "./DevModeNotice.js";
|
|
|
14
14
|
import { Popover } from "./Popover.js";
|
|
15
15
|
import { Card } from "./Card/index.js";
|
|
16
16
|
import React, { useCallback } from "react";
|
|
17
|
-
import { createContextAndHook } from "@clerk/shared/react";
|
|
18
17
|
import { Fragment as Fragment$1, jsx, jsxs } from "@emotion/react/jsx-runtime";
|
|
18
|
+
import { createContextAndHook } from "@clerk/shared/react";
|
|
19
19
|
|
|
20
20
|
//#region src/elements/Navbar.tsx
|
|
21
21
|
const [NavbarContext, useNavbarContext, useUnsafeNavbarContext] = createContextAndHook("NavbarContext");
|
|
@@ -8,8 +8,8 @@ import { Select, SelectButton, SelectOptionList } from "../Select.js";
|
|
|
8
8
|
import { IsoToCountryMap } from "./countryCodeData.js";
|
|
9
9
|
import { useFormattedPhoneNumber } from "./useFormattedPhoneNumber.js";
|
|
10
10
|
import React, { forwardRef, memo, useEffect, useMemo, useRef } from "react";
|
|
11
|
-
import { useClerk } from "@clerk/shared/react";
|
|
12
11
|
import { jsx, jsxs } from "@emotion/react/jsx-runtime";
|
|
12
|
+
import { useClerk } from "@clerk/shared/react";
|
|
13
13
|
|
|
14
14
|
//#region src/elements/PhoneInput/index.tsx
|
|
15
15
|
const createSelectOption = (country) => {
|
package/dist/elements/Popover.js
CHANGED
|
@@ -1,17 +1,14 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
-
import { usePortalRoot } from "@clerk/shared/react";
|
|
3
2
|
import { Fragment as Fragment$1, jsx } from "@emotion/react/jsx-runtime";
|
|
4
3
|
import { FloatingFocusManager, FloatingNode, FloatingPortal } from "@floating-ui/react";
|
|
5
4
|
|
|
6
5
|
//#region src/elements/Popover.tsx
|
|
7
6
|
const Popover = (props) => {
|
|
8
7
|
const { context, initialFocus, outsideElementsInert = false, order = ["reference", "content"], nodeId, isOpen, portal = true, root, children } = props;
|
|
9
|
-
const portalRoot = usePortalRoot();
|
|
10
|
-
const effectiveRoot = root ?? portalRoot?.() ?? void 0;
|
|
11
8
|
if (portal) return /* @__PURE__ */ jsx(FloatingNode, {
|
|
12
9
|
id: nodeId,
|
|
13
10
|
children: /* @__PURE__ */ jsx(FloatingPortal, {
|
|
14
|
-
root
|
|
11
|
+
root,
|
|
15
12
|
children: isOpen && /* @__PURE__ */ jsx(FloatingFocusManager, {
|
|
16
13
|
context,
|
|
17
14
|
initialFocus,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Popover.js","names":[],"sources":["../../src/elements/Popover.tsx"],"sourcesContent":["import
|
|
1
|
+
{"version":3,"file":"Popover.js","names":[],"sources":["../../src/elements/Popover.tsx"],"sourcesContent":["import type { FloatingContext, ReferenceType } from '@floating-ui/react';\nimport { FloatingFocusManager, FloatingNode, FloatingPortal } from '@floating-ui/react';\nimport type { PropsWithChildren } from 'react';\nimport React from 'react';\n\ntype PopoverProps = PropsWithChildren<{\n context: FloatingContext<ReferenceType>;\n nodeId?: string;\n isOpen?: boolean;\n initialFocus?: number | React.MutableRefObject<HTMLElement | null>;\n /**\n * Determines whether outside elements are inert when modal is enabled. This enables pointer modality without a backdrop.\n * @default false\n */\n outsideElementsInert?: boolean;\n order?: Array<'reference' | 'floating' | 'content'>;\n portal?: boolean;\n /**\n * The root element to render the portal into.\n * @default document.body\n */\n root?: HTMLElement | React.MutableRefObject<HTMLElement | null>;\n}>;\n\nexport const Popover = (props: PopoverProps) => {\n const {\n context,\n initialFocus,\n outsideElementsInert = false,\n order = ['reference', 'content'],\n nodeId,\n isOpen,\n portal = true,\n root,\n children,\n } = props;\n\n if (portal) {\n return (\n <FloatingNode id={nodeId}>\n <FloatingPortal root={root}>\n {isOpen && (\n <FloatingFocusManager\n context={context}\n initialFocus={initialFocus}\n outsideElementsInert={outsideElementsInert}\n order={order}\n >\n <>{children}</>\n </FloatingFocusManager>\n )}\n </FloatingPortal>\n </FloatingNode>\n );\n }\n\n return (\n <FloatingNode id={nodeId}>\n {isOpen && (\n <FloatingFocusManager\n context={context}\n initialFocus={initialFocus}\n order={order}\n >\n <>{children}</>\n </FloatingFocusManager>\n )}\n </FloatingNode>\n );\n};\n"],"mappings":";;;;;AAwBA,MAAa,WAAW,UAAwB;CAC9C,MAAM,EACJ,SACA,cACA,uBAAuB,OACvB,QAAQ,CAAC,aAAa,UAAU,EAChC,QACA,QACA,SAAS,MACT,MACA,aACE;AAEJ,KAAI,OACF,QACE,oBAAC;EAAa,IAAI;YAChB,oBAAC;GAAqB;aACnB,UACC,oBAAC;IACU;IACK;IACQ;IACf;cAEP,kCAAG,WAAY;KACM;IAEV;GACJ;AAInB,QACE,oBAAC;EAAa,IAAI;YACf,UACC,oBAAC;GACU;GACK;GACP;aAEP,kCAAG,WAAY;IACM;GAEZ"}
|
package/dist/elements/Select.js
CHANGED
|
@@ -9,8 +9,8 @@ import { withFloatingTree } from "./contexts/index.js";
|
|
|
9
9
|
import { Button, Flex, Icon, Input, Text } from "../customizables/index.js";
|
|
10
10
|
import { Popover } from "./Popover.js";
|
|
11
11
|
import React, { useState } from "react";
|
|
12
|
-
import { createContextAndHook } from "@clerk/shared/react";
|
|
13
12
|
import { Fragment as Fragment$1, jsx, jsxs } from "@emotion/react/jsx-runtime";
|
|
13
|
+
import { createContextAndHook } from "@clerk/shared/react";
|
|
14
14
|
|
|
15
15
|
//#region src/elements/Select.tsx
|
|
16
16
|
const [SelectStateCtx, useSelectState] = createContextAndHook("SelectState");
|
|
@@ -11,8 +11,8 @@ import { ProviderInitialIcon } from "../common/ProviderInitialIcon.js";
|
|
|
11
11
|
import { LastAuthenticationStrategyBadge } from "./Badge.js";
|
|
12
12
|
import { distributeStrategiesIntoRows } from "./utils.js";
|
|
13
13
|
import React, { forwardRef, isValidElement } from "react";
|
|
14
|
-
import { useClerk } from "@clerk/shared/react";
|
|
15
14
|
import { jsx, jsxs } from "@emotion/react/jsx-runtime";
|
|
15
|
+
import { useClerk } from "@clerk/shared/react";
|
|
16
16
|
import { getAlternativePhoneCodeProviderData } from "@clerk/shared/alternativePhoneCode";
|
|
17
17
|
|
|
18
18
|
//#region src/elements/SocialButtons.tsx
|
package/dist/elements/Tabs.js
CHANGED
|
@@ -3,8 +3,8 @@ import { descriptors } from "../customizables/elementDescriptors.js";
|
|
|
3
3
|
import { Button, Flex } from "../customizables/index.js";
|
|
4
4
|
import { getValidChildren } from "../utils/getValidReactChildren.js";
|
|
5
5
|
import React from "react";
|
|
6
|
-
import { createContextAndHook } from "@clerk/shared/react";
|
|
7
6
|
import { Fragment as Fragment$1, jsx, jsxs } from "@emotion/react/jsx-runtime";
|
|
7
|
+
import { createContextAndHook } from "@clerk/shared/react";
|
|
8
8
|
|
|
9
9
|
//#region src/elements/Tabs.tsx
|
|
10
10
|
const [TabsContext, useTabsContext] = createContextAndHook("TabsContext");
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { useLocalizations } from "../localization/makeLocalizable.js";
|
|
2
2
|
import { Button } from "../customizables/index.js";
|
|
3
3
|
import React, { useEffect } from "react";
|
|
4
|
-
import { useSafeLayoutEffect } from "@clerk/shared/react";
|
|
5
4
|
import { jsxs } from "@emotion/react/jsx-runtime";
|
|
5
|
+
import { useSafeLayoutEffect } from "@clerk/shared/react";
|
|
6
6
|
|
|
7
7
|
//#region src/elements/TimerButton.tsx
|
|
8
8
|
const TimerButton = (props) => {
|
package/dist/elements/Tooltip.js
CHANGED
|
@@ -3,7 +3,6 @@ import { descriptors } from "../customizables/elementDescriptors.js";
|
|
|
3
3
|
import { useAppearance } from "../customizables/AppearanceContext.js";
|
|
4
4
|
import { Box, Span, Text } from "../customizables/index.js";
|
|
5
5
|
import * as React$1 from "react";
|
|
6
|
-
import { usePortalRoot } from "@clerk/shared/react";
|
|
7
6
|
import { jsx } from "@emotion/react/jsx-runtime";
|
|
8
7
|
import { FloatingPortal, autoUpdate, flip, offset, shift, useDismiss, useFloating, useFocus, useHover, useInteractions, useMergeRefs, useRole, useTransitionStyles } from "@floating-ui/react";
|
|
9
8
|
|
|
@@ -122,38 +121,34 @@ const Trigger = React$1.forwardRef(function TooltipTrigger({ children, sx,...pro
|
|
|
122
121
|
const Content = React$1.forwardRef(function TooltipContent({ style, text, sx,...props }, propRef) {
|
|
123
122
|
const context = useTooltipContext();
|
|
124
123
|
const ref = useMergeRefs([context.refs.setFloating, propRef]);
|
|
125
|
-
const effectiveRoot = usePortalRoot()?.() ?? void 0;
|
|
126
124
|
if (!context.isMounted) return null;
|
|
127
|
-
return /* @__PURE__ */ jsx(FloatingPortal, {
|
|
128
|
-
|
|
125
|
+
return /* @__PURE__ */ jsx(FloatingPortal, { children: /* @__PURE__ */ jsx(Box, {
|
|
126
|
+
ref,
|
|
127
|
+
elementDescriptor: descriptors.tooltip,
|
|
128
|
+
style: {
|
|
129
|
+
...context.floatingStyles,
|
|
130
|
+
...style
|
|
131
|
+
},
|
|
132
|
+
...context.getFloatingProps(props),
|
|
129
133
|
children: /* @__PURE__ */ jsx(Box, {
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
color: t.colors.$white,
|
|
146
|
-
maxWidth: t.sizes.$60
|
|
147
|
-
}), sx],
|
|
148
|
-
children: /* @__PURE__ */ jsx(Text, {
|
|
149
|
-
elementDescriptor: descriptors.tooltipText,
|
|
150
|
-
localizationKey: text,
|
|
151
|
-
variant: "body",
|
|
152
|
-
colorScheme: "inherit"
|
|
153
|
-
})
|
|
134
|
+
elementDescriptor: descriptors.tooltipContent,
|
|
135
|
+
style: context.transitionStyles,
|
|
136
|
+
sx: [(t) => ({
|
|
137
|
+
paddingBlock: t.space.$1,
|
|
138
|
+
paddingInline: t.space.$1x5,
|
|
139
|
+
borderRadius: t.radii.$md,
|
|
140
|
+
backgroundColor: t.colors.$black,
|
|
141
|
+
color: t.colors.$white,
|
|
142
|
+
maxWidth: t.sizes.$60
|
|
143
|
+
}), sx],
|
|
144
|
+
children: /* @__PURE__ */ jsx(Text, {
|
|
145
|
+
elementDescriptor: descriptors.tooltipText,
|
|
146
|
+
localizationKey: text,
|
|
147
|
+
variant: "body",
|
|
148
|
+
colorScheme: "inherit"
|
|
154
149
|
})
|
|
155
150
|
})
|
|
156
|
-
});
|
|
151
|
+
}) });
|
|
157
152
|
});
|
|
158
153
|
const Tooltip = {
|
|
159
154
|
Root,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tooltip.js","names":["React"],"sources":["../../src/elements/Tooltip.tsx"],"sourcesContent":["import type { Placement, UseFloatingReturn, UseInteractionsReturn } from '@floating-ui/react';\nimport {\n autoUpdate,\n flip,\n FloatingPortal,\n offset,\n shift,\n useDismiss,\n useFloating,\n useFocus,\n useHover,\n useInteractions,\n useMergeRefs,\n useRole,\n useTransitionStyles,\n} from '@floating-ui/react';\nimport * as React from 'react';\n\nimport {
|
|
1
|
+
{"version":3,"file":"Tooltip.js","names":["React"],"sources":["../../src/elements/Tooltip.tsx"],"sourcesContent":["import type { Placement, UseFloatingReturn, UseInteractionsReturn } from '@floating-ui/react';\nimport {\n autoUpdate,\n flip,\n FloatingPortal,\n offset,\n shift,\n useDismiss,\n useFloating,\n useFocus,\n useHover,\n useInteractions,\n useMergeRefs,\n useRole,\n useTransitionStyles,\n} from '@floating-ui/react';\nimport * as React from 'react';\n\nimport { Box, descriptors, type LocalizationKey, Span, Text, useAppearance } from '../customizables';\nimport { usePrefersReducedMotion } from '../hooks';\nimport type { ThemableCssProp } from '../styledSystem';\n\ninterface TooltipOptions {\n initialOpen?: boolean;\n placement?: Placement;\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n}\n\ninterface UseTooltipReturn extends UseFloatingReturn, UseInteractionsReturn {\n open: boolean;\n setOpen: (open: boolean) => void;\n isMounted: boolean;\n transitionStyles: React.CSSProperties;\n}\n\nexport function useTooltip({\n initialOpen = false,\n placement = 'top',\n open: controlledOpen,\n onOpenChange: setControlledOpen,\n}: TooltipOptions = {}): UseTooltipReturn {\n const [uncontrolledOpen, setUncontrolledOpen] = React.useState(initialOpen);\n\n const open = controlledOpen ?? uncontrolledOpen;\n const setOpen = setControlledOpen ?? setUncontrolledOpen;\n\n const prefersReducedMotion = usePrefersReducedMotion();\n const { animations: layoutAnimations } = useAppearance().parsedOptions;\n const isMotionSafe = !prefersReducedMotion && layoutAnimations === true;\n\n const data = useFloating({\n placement,\n open,\n onOpenChange: setOpen,\n whileElementsMounted: autoUpdate,\n middleware: [\n offset(6),\n flip({\n crossAxis: placement.includes('-'),\n fallbackAxisSideDirection: 'start',\n padding: 6,\n }),\n shift({ padding: 6 }),\n ],\n });\n\n const context = data.context;\n\n const hover = useHover(context, {\n move: false,\n enabled: controlledOpen == null,\n });\n const focus = useFocus(context, {\n enabled: controlledOpen == null,\n });\n const dismiss = useDismiss(context);\n const role = useRole(context, { role: 'tooltip' });\n\n const { isMounted, styles: transitionStyles } = useTransitionStyles(context, {\n duration: isMotionSafe ? 200 : 0,\n initial: ({ side }) => {\n return {\n opacity: 0,\n transform: side === 'top' ? 'translateY(4px)' : 'translateY(-4px)',\n };\n },\n open: {\n opacity: 1,\n transform: 'translate(0)',\n },\n close: ({ side }) => ({\n opacity: 0,\n transform: side === 'top' ? 'translateY(4px)' : 'translateY(-4px)',\n }),\n });\n\n const interactions = useInteractions([hover, focus, dismiss, role]);\n\n return React.useMemo(\n () => ({\n open,\n setOpen,\n isMounted,\n ...interactions,\n ...data,\n transitionStyles,\n }),\n [open, setOpen, interactions, data, isMounted, transitionStyles],\n );\n}\n\ntype ContextType = UseTooltipReturn | null;\n\nconst TooltipContext = React.createContext<ContextType>(null);\n\nexport const useTooltipContext = (): UseTooltipReturn => {\n const context = React.useContext(TooltipContext);\n\n if (context == null) {\n throw new Error('Tooltip components must be wrapped in <Tooltip />');\n }\n\n return context;\n};\n\nfunction Root({ children, ...options }: { children: React.ReactNode } & TooltipOptions) {\n // This can accept any props as options, e.g. `placement`,\n // or other positioning options.\n const tooltip = useTooltip(options);\n return <TooltipContext.Provider value={tooltip}>{children}</TooltipContext.Provider>;\n}\n\ntype TriggerProps = React.HTMLProps<HTMLElement> & {\n sx?: ThemableCssProp;\n};\n\nconst Trigger = React.forwardRef<HTMLElement, TriggerProps>(function TooltipTrigger(\n { children, sx, ...props },\n propRef,\n) {\n const context = useTooltipContext();\n const childrenRef = (children as any).ref;\n const ref = useMergeRefs([context.refs.setReference, propRef, childrenRef]);\n\n if (!React.isValidElement(children)) {\n return null;\n }\n\n // If the child is disabled, wrap it in a span to handle focus events\n if (children.props.isDisabled || children.props.disabled) {\n return (\n <Span\n ref={ref}\n {...context.getReferenceProps({\n ...props,\n })}\n data-state={context.open ? 'open' : 'closed'}\n sx={[\n {\n width: 'fit-content',\n display: 'inline-block',\n cursor: 'not-allowed',\n outline: 'none',\n },\n sx,\n ]}\n tabIndex={0}\n >\n {children}\n </Span>\n );\n }\n\n return React.cloneElement(\n children,\n context.getReferenceProps({\n ref,\n ...props,\n ...children.props,\n 'data-state': context.open ? 'open' : 'closed',\n }),\n );\n});\n\nconst Content = React.forwardRef<\n HTMLDivElement,\n React.HTMLProps<HTMLDivElement> & {\n text: string | LocalizationKey;\n sx?: ThemableCssProp;\n }\n>(function TooltipContent({ style, text, sx, ...props }, propRef) {\n const context = useTooltipContext();\n const ref = useMergeRefs([context.refs.setFloating, propRef]);\n\n if (!context.isMounted) {\n return null;\n }\n\n return (\n <FloatingPortal>\n <Box\n ref={ref}\n elementDescriptor={descriptors.tooltip}\n style={{\n ...context.floatingStyles,\n ...style,\n }}\n {...context.getFloatingProps(props)}\n >\n <Box\n elementDescriptor={descriptors.tooltipContent}\n style={context.transitionStyles}\n sx={[\n t => ({\n paddingBlock: t.space.$1,\n paddingInline: t.space.$1x5,\n borderRadius: t.radii.$md,\n backgroundColor: t.colors.$black,\n color: t.colors.$white,\n maxWidth: t.sizes.$60,\n }),\n sx,\n ]}\n >\n <Text\n elementDescriptor={descriptors.tooltipText}\n localizationKey={text}\n variant='body'\n colorScheme='inherit'\n />\n </Box>\n </Box>\n </FloatingPortal>\n );\n});\n\nexport const Tooltip = {\n Root,\n Trigger,\n Content,\n};\n"],"mappings":"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"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { useRouter } from "../../router/RouteContext.js";
|
|
2
2
|
import { useLocalizations } from "../../localization/makeLocalizable.js";
|
|
3
3
|
import React from "react";
|
|
4
|
-
import { createContextAndHook } from "@clerk/shared/react";
|
|
5
4
|
import { jsx } from "@emotion/react/jsx-runtime";
|
|
5
|
+
import { createContextAndHook } from "@clerk/shared/react";
|
|
6
6
|
import { FloatingTree, useFloatingParentNodeId } from "@floating-ui/react";
|
|
7
7
|
|
|
8
8
|
//#region src/elements/contexts/index.tsx
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";(globalThis.webpackChunk_clerk_ui=globalThis.webpackChunk_clerk_ui||[]).push([["533"],{7334:function(e,i,n){n.r(i),n.d(i,{EnableOrganizationsPrompt:()=>f});var r=n(4518),t=n(
|
|
1
|
+
"use strict";(globalThis.webpackChunk_clerk_ui=globalThis.webpackChunk_clerk_ui||[]).push([["533"],{7334:function(e,i,n){n.r(i),n.d(i,{EnableOrganizationsPrompt:()=>f});var r=n(4518),t=n(1210),o=n(8802),a=n(5074),s=n(7697),l=n(6705),d=n(9406),c=n(1464),p=n(8272),h=n(1986),g=n(8307);let u=({caller:e,onSuccess:i,onClose:n})=>{let d=(0,t.ho)(),[c,u]=(0,a.useState)(!1),[f,b]=(0,a.useState)(!1),[x,v]=(0,a.useState)(!1),k=(0,a.useRef)(null),y=(0,s.O)(),z=!e.startsWith("use"),$=void 0!==y?.organizationSettings.forceOrganizationSelection;return(0,r.Y)(h.Z,{children:(0,r.Y)(l.Modal,{canCloseModal:!1,containerSx:()=>({alignItems:"center"}),initialFocusRef:k,children:(0,r.FD)(g.Uw,{sx:()=>({display:"flex",flexDirection:"column",width:"30rem",maxWidth:"calc(100vw - 2rem)"}),children:[(0,r.FD)(p.so,{direction:"col",sx:e=>({padding:`${e.sizes.$4} ${e.sizes.$6}`,paddingBottom:e.sizes.$4,gap:e.sizes.$2}),children:[(0,r.FD)(p.so,{as:"header",align:"center",sx:e=>({gap:e.sizes.$2}),children:[(0,r.Y)(Y,{isEnabled:f}),(0,r.Y)("h1",{css:[g.mk,(0,o.AH)`
|
|
2
2
|
color: white;
|
|
3
3
|
font-size: 0.875rem;
|
|
4
4
|
font-weight: 500;
|