@clerk/vue 2.4.22-snapshot.v20260730145336 → 2.4.22

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/index.js CHANGED
@@ -2276,7 +2276,7 @@ getContainer: {
2276
2276
  //#region src/plugin.ts
2277
2277
  const SDK_METADATA = {
2278
2278
  name: "@clerk/vue",
2279
- version: "2.4.22-snapshot.v20260730145336",
2279
+ version: "2.4.22",
2280
2280
  environment: process.env.NODE_ENV
2281
2281
  };
2282
2282
  /**
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../src/composables/usePortalRoot.ts","../src/composables/useUser.ts","../src/composables/useSession.ts","../src/composables/useSignIn.ts","../src/composables/useSignUp.ts","../src/composables/useSessionList.ts","../src/composables/useOrganization.ts","../src/utils/useClerkLoaded.ts","../src/utils/updateClerkOptions.ts","../src/components/controlComponents.ts","../src/components/ClerkHostRenderer.ts","../src/components/ui-components/SignIn.vue","../src/components/ui-components/SignUp.vue","../src/components/ui-components/GoogleOneTap.vue","../src/components/ui-components/Waitlist.vue","../src/components/ui-components/CreateOrganization.vue","../src/components/ui-components/OrganizationList.vue","../src/components/ui-components/PricingTable.vue","../src/components/ui-components/APIKeys.vue","../src/components/ui-components/OAuthConsent.vue","../src/components/ui-components/OrganizationProfile/OrganizationProfile.vue","../src/components/ui-components/OrganizationProfile/index.ts","../src/utils/componentValidation.ts","../src/utils/useCustomElementPortal.ts","../src/utils/useCustomPages.ts","../src/components/ui-components/UserProfile/UserProfile.vue","../src/components/ui-components/UserProfile/index.ts","../src/components/ui-components/OrganizationSwitcher/OrganizationSwitcher.vue","../src/components/ui-components/OrganizationSwitcher/index.ts","../src/components/ui-components/UserAvatar.vue","../src/utils/useCustomMenuItems.ts","../src/components/ui-components/UserButton/UserButton.vue","../src/components/ui-components/UserButton/index.ts","../src/components/SignInButton.vue","../src/components/SignUpButton.vue","../src/components/SignOutButton.vue","../src/components/SignInWithMetamaskButton.vue","../src/components/PortalProvider.ts","../src/plugin.ts","../src/index.ts"],"sourcesContent":["import { inject } from 'vue';\n\nimport { PortalInjectionKey } from '../keys';\n\n/**\n * Composable to get the current portal root container.\n * Returns the getContainer function from context if inside a PortalProvider,\n * otherwise returns a function that returns null (default behavior).\n */\nexport const usePortalRoot = (): (() => HTMLElement | null) => {\n const context = inject(PortalInjectionKey, null);\n\n if (context && context.getContainer) {\n return context.getContainer;\n }\n\n // Return a function that returns null when not inside a PortalProvider\n return () => null;\n};\n","import type { UseUserReturn } from '@clerk/shared/types';\nimport { computed } from 'vue';\n\nimport type { ToComputedRefs } from '../utils';\nimport { toComputedRefs } from '../utils';\nimport { useClerkContext } from './useClerkContext';\n\ntype UseUser = () => ToComputedRefs<UseUserReturn>;\n\n/**\n * Returns the current user's [`User`](https://clerk.com/docs/reference/objects/user) object along with loading states.\n *\n * @example\n * <script setup>\n * import { useUser } from '@clerk/vue'\n *\n * const { isLoaded, isSignedIn, user } = useUser()\n * </script>\n *\n * <template>\n * <div v-if=\"!isLoaded\">\n * <!-- Handle loading state -->\n * </div>\n *\n * <div v-else-if=\"isSignedIn\">\n * Hello {{ user.fullName }}!\n * </div>\n *\n * <div v-else>\n * Not signed in\n * </div>\n * </template>\n */\nexport const useUser: UseUser = () => {\n const { userCtx } = useClerkContext('useUser');\n\n const result = computed<UseUserReturn>(() => {\n if (userCtx.value === undefined) {\n return { isLoaded: false, isSignedIn: undefined, user: undefined };\n }\n\n if (userCtx.value === null) {\n return { isLoaded: true, isSignedIn: false, user: null };\n }\n\n return { isLoaded: true, isSignedIn: true, user: userCtx.value };\n });\n\n return toComputedRefs(result);\n};\n","import type { UseSessionReturn } from '@clerk/shared/types';\nimport { computed } from 'vue';\n\nimport type { ToComputedRefs } from '../utils';\nimport { toComputedRefs } from '../utils';\nimport { useClerkContext } from './useClerkContext';\n\ntype UseSession = () => ToComputedRefs<UseSessionReturn>;\n\n/**\n * Returns the current [`Session`](https://clerk.com/docs/reference/objects/session) object which provides\n * information about the active session and methods to manage it.\n *\n * @example\n * <script setup>\n * import { useSession } from '@clerk/vue'\n *\n * const { isLoaded, session, isSignedIn } = useSession()\n * </script>\n *\n * <template>\n * <div v-if=\"!isLoaded\">\n * <!-- Handle loading state -->\n * </div>\n *\n * <div v-else-if=\"!isSignedIn\">\n * <!-- Handle not signed in state -->\n * </div>\n *\n * <div v-else>\n * <p>This session has been active since {{ session.lastActiveAt.toLocaleString() }}</p>\n * </div>\n * </template>\n */\nexport const useSession: UseSession = () => {\n const { sessionCtx, clerk } = useClerkContext('useSession');\n\n const result = computed<UseSessionReturn>(() => {\n if (sessionCtx.value === undefined) {\n return { isLoaded: false, isSignedIn: undefined, session: undefined };\n }\n\n const isSignedOut = sessionCtx.value === null;\n if (isSignedOut) {\n return { isLoaded: true, isSignedIn: false, session: null };\n }\n\n return { isLoaded: true, isSignedIn: !!clerk.value?.isSignedIn, session: sessionCtx.value };\n });\n\n return toComputedRefs(result);\n};\n","import { eventMethodCalled } from '@clerk/shared/telemetry';\nimport type { UseSignInReturn } from '@clerk/shared/types';\nimport { computed, watch } from 'vue';\n\nimport type { ToComputedRefs } from '../utils';\nimport { toComputedRefs } from '../utils';\nimport { useClerkContext } from './useClerkContext';\n\ntype UseSignIn = () => ToComputedRefs<UseSignInReturn>;\n\n/**\n * Returns the current [`SignIn`](https://clerk.com/docs/reference/objects/sign-in) object which provides\n * methods and state for managing the sign-in flow.\n *\n * @example\n * <script setup>\n * import { useSignIn } from '@clerk/vue'\n *\n * const { isLoaded, signIn } = useSignIn()\n * </script>\n *\n * <template>\n * <div v-if=\"!isLoaded\">\n * <!-- Handle loading state -->\n * </div>\n *\n * <div v-else>\n * The current sign in attempt status is {{ signIn.status }}.\n * </div>\n * </template>\n */\nexport const useSignIn: UseSignIn = () => {\n const { clerk, clientCtx } = useClerkContext('useSignIn');\n\n watch(\n clerk,\n value => {\n if (value) {\n value.telemetry?.record(eventMethodCalled('useSignIn'));\n }\n },\n { once: true },\n );\n\n const result = computed<UseSignInReturn>(() => {\n if (!clerk.value || !clientCtx.value) {\n return { isLoaded: false, signIn: undefined, setActive: undefined };\n }\n\n return {\n isLoaded: true,\n signIn: clientCtx.value.signIn,\n setActive: clerk.value.setActive,\n };\n });\n\n return toComputedRefs(result);\n};\n","import { eventMethodCalled } from '@clerk/shared/telemetry';\nimport type { UseSignUpReturn } from '@clerk/shared/types';\nimport { computed, watch } from 'vue';\n\nimport type { ToComputedRefs } from '../utils';\nimport { toComputedRefs } from '../utils';\nimport { useClerkContext } from './useClerkContext';\n\ntype UseSignUp = () => ToComputedRefs<UseSignUpReturn>;\n\n/**\n * Returns the current [`SignUp`](https://clerk.com/docs/reference/objects/sign-up) object which provides\n * methods and state for managing the sign-up flow.\n *\n * @example\n * <script setup>\n * import { useSignUp } from '@clerk/vue'\n *\n * const { isLoaded, signUp } = useSignUp()\n * </script>\n *\n * <template>\n * <div v-if=\"!isLoaded\">\n * <!-- Handle loading state -->\n * </div>\n *\n * <div v-else>\n * The current sign-up attempt status is {{ signUp.status }}.\n * </div>\n * </template>\n */\nexport const useSignUp: UseSignUp = () => {\n const { clerk, clientCtx } = useClerkContext('useSignUp');\n\n watch(\n clerk,\n value => {\n if (value) {\n value.telemetry?.record(eventMethodCalled('useSignUp'));\n }\n },\n { once: true },\n );\n\n const result = computed<UseSignUpReturn>(() => {\n if (!clerk.value || !clientCtx.value) {\n return { isLoaded: false, signUp: undefined, setActive: undefined };\n }\n\n return {\n isLoaded: true,\n signUp: clientCtx.value.signUp,\n setActive: clerk.value.setActive,\n };\n });\n\n return toComputedRefs(result);\n};\n","import type { UseSessionListReturn } from '@clerk/shared/types';\nimport { computed } from 'vue';\n\nimport type { ToComputedRefs } from '../utils';\nimport { toComputedRefs } from '../utils';\nimport { useClerkContext } from './useClerkContext';\n\ntype UseSessionList = () => ToComputedRefs<UseSessionListReturn>;\n\n/**\n * Returns an array of [`Session`](https://clerk.com/docs/reference/objects/session) objects that have been\n * registered on the client device.\n *\n * @example\n * <script setup>\n * import { useSessionList } from '@clerk/vue'\n *\n * const { isLoaded, sessions } = useSessionList()\n * </script>\n *\n * <template>\n * <div v-if=\"!isLoaded\">\n * <!-- Handle loading state -->\n * </div>\n *\n * <div v-else>\n * <p>\n * Welcome back. You have been here\n * {{ sessions.length }} times before.\n * </p>\n * </div>\n * </template>\n */\nexport const useSessionList: UseSessionList = () => {\n const { clerk, clientCtx } = useClerkContext('useSessionList');\n\n const result = computed<UseSessionListReturn>(() => {\n if (!clientCtx.value) {\n return { isLoaded: false, sessions: undefined, setActive: undefined };\n }\n\n return {\n isLoaded: true,\n sessions: clientCtx.value.sessions,\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n setActive: clerk.value!.setActive,\n };\n });\n\n return toComputedRefs(result);\n};\n","import { getCurrentOrganizationMembership } from '@clerk/shared/organization';\nimport type { OrganizationMembershipResource, OrganizationResource } from '@clerk/shared/types';\nimport { computed, watch } from 'vue';\n\nimport type { ToComputedRefs } from '../utils';\nimport { toComputedRefs } from '../utils';\nimport { useClerkContext } from './useClerkContext';\nimport { useSession } from './useSession';\n\ntype UseOrganizationReturn =\n | {\n isLoaded: false;\n organization: undefined;\n membership: undefined;\n }\n | {\n isLoaded: true;\n organization: OrganizationResource;\n membership: undefined;\n }\n | {\n isLoaded: boolean;\n organization: OrganizationResource | null;\n membership: OrganizationMembershipResource | null | undefined;\n };\n\ntype UseOrganization = () => ToComputedRefs<UseOrganizationReturn>;\n\n/**\n * Returns the current [`Organization`](https://clerk.com/docs/reference/objects/organization) object\n * along with loading states and membership information.\n *\n * @example\n * <script setup>\n * import { useOrganization } from '@clerk/vue'\n *\n * const { isLoaded, organization, membership } = useOrganization()\n * </script>\n *\n * <template>\n * <div v-if=\"!isLoaded\">\n * <!-- Handle loading state -->\n * </div>\n *\n * <div v-else-if=\"organization\">\n * <h1>{{ organization.name }}</h1>\n * <p>Your role: {{ membership.role }}</p>\n * </div>\n *\n * <div v-else>\n * No active organization\n * </div>\n * </template>\n */\nexport const useOrganization: UseOrganization = () => {\n const { loaded, clerk, organizationCtx } = useClerkContext('useOrganization');\n const { session } = useSession();\n\n watch(\n loaded,\n value => {\n if (value) {\n // Optional chaining is important for `@clerk/vue` usage with older clerk-js versions that don't have the method\n clerk.value?.__internal_attemptToEnableEnvironmentSetting?.({\n for: 'organizations',\n caller: 'useOrganization',\n });\n }\n },\n {\n once: true,\n },\n );\n\n const result = computed<UseOrganizationReturn>(() => {\n if (organizationCtx.value === undefined) {\n return { isLoaded: false, organization: undefined, membership: undefined };\n }\n\n if (organizationCtx.value === null) {\n return { isLoaded: true, organization: null, membership: null };\n }\n\n /** In SSR context we include only the organization object when loadOrg is set to true. */\n if (!loaded.value) {\n return {\n isLoaded: true,\n organization: organizationCtx.value,\n membership: undefined,\n };\n }\n\n return {\n isLoaded: loaded.value,\n organization: organizationCtx.value,\n membership: getCurrentOrganizationMembership(\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n session.value!.user.organizationMemberships,\n organizationCtx.value.id,\n ),\n };\n });\n\n return toComputedRefs(result);\n};\n","import type { LoadedClerk } from '@clerk/shared/types';\nimport { watch } from 'vue';\n\nimport { useClerk } from '../composables';\n\n/**\n * Executes a callback when Clerk is loaded.\n *\n * @param callback - Function to execute once Clerk is loaded\n * @example\n * ```ts\n * useClerkLoaded((clerk) => {\n * clerk.redirectToSignUp(props);\n * });\n * ```\n */\nexport const useClerkLoaded = (callback: (clerk: LoadedClerk) => void) => {\n const clerk = useClerk();\n\n let unwatch: (() => void) | undefined;\n // eslint-disable-next-line prefer-const\n unwatch = watch(\n clerk,\n unwrappedClerk => {\n if (!unwrappedClerk?.loaded) {\n return;\n }\n\n callback(unwrappedClerk as LoadedClerk);\n unwatch?.();\n },\n { immediate: true },\n );\n};\n","import type { ClerkOptions } from '@clerk/shared/types';\nimport type { Appearance, Ui } from '@clerk/ui/internal';\n\ntype ClerkUpdateOptions<TUi extends Ui = Ui> = Pick<ClerkOptions, 'localization'> & {\n appearance?: Appearance<TUi>;\n};\n\n/**\n * Updates Clerk's options at runtime.\n *\n * @param options - The Clerk options to update\n *\n * @example\n * import { frFR } from '@clerk/localizations';\n * import { dark } from '@clerk/ui/themes';\n *\n * updateClerkOptions({\n * appearance: { theme: dark },\n * localization: frFR\n * });\n */\nexport function updateClerkOptions<TUi extends Ui = Ui>(options: ClerkUpdateOptions<TUi>) {\n if (!window.Clerk) {\n throw new Error('Missing Clerk instance');\n }\n\n const updateOptions = {\n options: {\n localization: options.localization,\n },\n appearance: options.appearance,\n } as unknown as { options: any; appearance?: any };\n\n // @ts-expect-error - `__internal_updateProps` is not exposed as public API from `@clerk/types`\n void window.Clerk.__internal_updateProps(updateOptions);\n}\n","import { deprecated } from '@clerk/shared/deprecated';\nimport type {\n HandleOAuthCallbackParams,\n PendingSessionOptions,\n RedirectOptions,\n ShowWhenCondition,\n} from '@clerk/shared/types';\nimport { defineComponent, type VNodeChild } from 'vue';\n\nimport { useAuth } from '../composables/useAuth';\nimport { useClerk } from '../composables/useClerk';\nimport { useClerkContext } from '../composables/useClerkContext';\nimport { useClerkLoaded } from '../utils/useClerkLoaded';\n\nexport const ClerkLoaded = defineComponent((_, { slots }) => {\n const clerk = useClerk();\n\n return () => (clerk.value?.loaded ? slots.default?.() : null);\n});\n\nexport const ClerkLoading = defineComponent((_, { slots }) => {\n const clerk = useClerk();\n\n return () => (!clerk.value?.loaded ? slots.default?.() : null);\n});\n\nexport const RedirectToSignIn = defineComponent((props: RedirectOptions) => {\n const { sessionCtx, clientCtx } = useClerkContext('RedirectToSignIn');\n\n useClerkLoaded(clerk => {\n const hasSignedInSessions = clientCtx.value?.signedInSessions && clientCtx.value.signedInSessions.length > 0;\n\n if (sessionCtx.value === null && hasSignedInSessions) {\n void clerk.redirectToAfterSignOut();\n } else {\n void clerk.redirectToSignIn(props);\n }\n });\n\n return () => null;\n});\n\nexport const RedirectToSignUp = defineComponent((props: RedirectOptions) => {\n useClerkLoaded(clerk => {\n void clerk.redirectToSignUp(props);\n });\n\n return () => null;\n});\n\nexport const RedirectToTasks = defineComponent((props: RedirectOptions) => {\n useClerkLoaded(clerk => {\n void clerk.redirectToTasks(props);\n });\n\n return () => null;\n});\n\n/**\n * @deprecated Use [`redirectToUserProfile()`](https://clerk.com/docs/reference/objects/clerk#redirect-to-user-profile) instead.\n */\nexport const RedirectToUserProfile = defineComponent(() => {\n useClerkLoaded(clerk => {\n deprecated('RedirectToUserProfile', 'Use the `redirectToUserProfile()` method instead.');\n void clerk.redirectToUserProfile();\n });\n\n return () => null;\n});\n\n/**\n * @deprecated Use [`redirectToOrganizationProfile()`](https://clerk.com/docs/reference/objects/clerk#redirect-to-organization-profile) instead.\n */\nexport const RedirectToOrganizationProfile = defineComponent(() => {\n useClerkLoaded(clerk => {\n deprecated('RedirectToOrganizationProfile', 'Use the `redirectToOrganizationProfile()` method instead.');\n void clerk.redirectToOrganizationProfile();\n });\n\n return () => null;\n});\n\n/**\n * @deprecated Use [`redirectToCreateOrganization()`](https://clerk.com/docs/reference/objects/clerk#redirect-to-create-organization) instead.\n */\nexport const RedirectToCreateOrganization = defineComponent(() => {\n useClerkLoaded(clerk => {\n deprecated('RedirectToCreateOrganization', 'Use the `redirectToCreateOrganization()` method instead.');\n void clerk.redirectToCreateOrganization();\n });\n\n return () => null;\n});\n\nexport const AuthenticateWithRedirectCallback = defineComponent((props: HandleOAuthCallbackParams) => {\n useClerkLoaded(clerk => {\n void clerk.handleRedirectCallback(props);\n });\n\n return () => null;\n});\n\n/**\n * Props for `<Show>` that control when content renders based on sign-in or authorization state.\n *\n * @public\n * @property fallback Optional content shown when the condition fails; can be provided via prop or `fallback` slot.\n * @property when Condition controlling visibility; supports `\"signed-in\"`, `\"signed-out\"`, authorization descriptors, or a predicate that receives the `has` helper.\n * @property treatPendingAsSignedOut Inherited from `PendingSessionOptions`; treat pending sessions as signed out while loading.\n * @example\n * ```vue\n * <Show :when=\"{ role: 'admin' }\" fallback=\"Access denied\">\n * <AdminPanel />\n * </Show>\n *\n * <Show :when=\"(has) => has({ permission: 'org:read' })\">\n * <template #fallback>Not authorized</template>\n * <ProtectedFeature />\n * </Show>\n * ```\n */\nexport type ShowProps = PendingSessionOptions & { fallback?: unknown; when: ShowWhenCondition };\n\nexport const Show = defineComponent((props: ShowProps, { slots }) => {\n const { isLoaded, has, userId } = useAuth({ treatPendingAsSignedOut: props.treatPendingAsSignedOut });\n\n return () => {\n /**\n * Avoid flickering children or fallback while clerk is loading sessionId or userId\n */\n if (!isLoaded.value) {\n return null;\n }\n\n const authorized = (slots.default?.() ?? null) as VNodeChild | null;\n const fallbackFromSlot = slots.fallback?.() ?? null;\n const fallbackFromProp = (props.fallback as VNodeChild | null | undefined) ?? null;\n const unauthorized = (fallbackFromSlot ?? fallbackFromProp ?? null) as VNodeChild | null;\n\n if (props.when === 'signed-out') {\n return userId.value ? unauthorized : authorized;\n }\n\n if (!userId.value) {\n return unauthorized;\n }\n\n if (props.when === 'signed-in') {\n return authorized;\n }\n\n const hasValue = has.value;\n\n if (!hasValue) {\n return unauthorized;\n }\n\n if (typeof props.when === 'function') {\n return props.when(hasValue) ? authorized : unauthorized;\n }\n\n return hasValue(props.when) ? authorized : unauthorized;\n };\n});\n","import type { PropType } from 'vue';\nimport { defineComponent, h, onUnmounted, ref, watch, watchEffect } from 'vue';\n\nimport { usePortalRoot } from '../composables/usePortalRoot';\nimport type { CustomPortalsRendererProps } from '../types';\nimport { ClerkLoaded } from './controlComponents';\n\ntype AnyObject = Record<string, any>;\n\nexport const CustomPortalsRenderer = defineComponent((props: CustomPortalsRendererProps) => {\n return () => [...(props?.customPagesPortals ?? []), ...(props?.customMenuItemsPortals ?? [])];\n});\n\n/**\n * Used to orchestrate mounting of Clerk components in a host Vue application.\n * Components are rendered into a specific DOM node using mount/unmount methods provided by the Clerk class.\n */\nexport const ClerkHostRenderer = defineComponent({\n props: {\n mount: {\n type: Function as PropType<(node: HTMLDivElement, props: AnyObject) => void>,\n required: false,\n },\n unmount: {\n type: Function as PropType<(node: HTMLDivElement) => void>,\n required: false,\n },\n open: {\n type: Function as PropType<(props: AnyObject) => void>,\n required: false,\n },\n close: {\n type: Function as PropType<() => void>,\n required: false,\n },\n updateProps: {\n type: Function as PropType<(props: { node: HTMLDivElement; props: AnyObject | undefined }) => void>,\n required: false,\n },\n props: {\n type: Object,\n required: false,\n default: () => ({}),\n },\n },\n setup(props) {\n const portalRef = ref<HTMLDivElement | null>(null);\n const getContainer = usePortalRoot();\n let isPortalMounted = false;\n\n watchEffect(() => {\n // Skip if portal element isn't ready or component is already mounted\n if (!portalRef.value || isPortalMounted) {\n return;\n }\n\n const propsWithContainer = {\n ...props.props,\n getContainer,\n };\n\n if (props.mount) {\n props.mount(portalRef.value, propsWithContainer);\n }\n if (props.open) {\n props.open(propsWithContainer);\n }\n isPortalMounted = true;\n });\n\n watch(\n () => props.props,\n newProps => {\n if (isPortalMounted && props.updateProps && portalRef.value) {\n const propsWithContainer = {\n ...newProps,\n getContainer,\n };\n props.updateProps({ node: portalRef.value, props: propsWithContainer });\n }\n },\n { deep: true },\n );\n\n onUnmounted(() => {\n if (isPortalMounted && portalRef.value) {\n if (props.unmount) {\n props.unmount(portalRef.value);\n }\n if (props.close) {\n props.close();\n }\n }\n });\n\n return () => h(ClerkLoaded, () => h('div', { ref: portalRef }));\n },\n});\n","<script setup lang=\"ts\">\nimport { ClerkHostRenderer } from '../ClerkHostRenderer';\nimport { useClerk } from '../../composables';\nimport type { SignInProps } from '@clerk/shared/types';\nimport { getCurrentInstance } from 'vue';\n\nconst clerk = useClerk();\n\ndefineProps<SignInProps>();\n\n// Hacking our way to get actual initial uncasted boolean props as vue-tsc\n// is having a hard time with SignInProps type and withDefaults()\nconst currentInstance = getCurrentInstance();\n\nconst hasInitialTransferable = 'transferable' in (currentInstance?.vnode.props ?? {});\nconst hasInitialWithSignUp = 'withSignUp' in (currentInstance?.vnode.props ?? {});\n</script>\n\n<template>\n <ClerkHostRenderer\n :mount=\"clerk?.mountSignIn\"\n :unmount=\"clerk?.unmountSignIn\"\n :props=\"{\n ...$props,\n transferable: hasInitialTransferable ? $props.transferable : undefined,\n withSignUp: hasInitialWithSignUp ? $props.withSignUp : undefined,\n }\"\n :update-props=\"(clerk as any)?.__internal_updateProps\"\n />\n</template>\n","<script setup lang=\"ts\">\nimport { ClerkHostRenderer } from '../ClerkHostRenderer';\nimport { useClerk } from '../../composables';\nimport type { SignUpProps } from '@clerk/shared/types';\n\nconst clerk = useClerk();\n\nconst props = defineProps<SignUpProps>();\n</script>\n\n<template>\n <ClerkHostRenderer\n :mount=\"clerk?.mountSignUp\"\n :unmount=\"clerk?.unmountSignUp\"\n :props=\"props\"\n :update-props=\"(clerk as any)?.__internal_updateProps\"\n />\n</template>\n","<script setup lang=\"ts\">\nimport { ClerkHostRenderer } from '../ClerkHostRenderer';\nimport { useClerk } from '../../composables';\nimport type { GoogleOneTapProps } from '@clerk/shared/types';\n\nconst clerk = useClerk();\n\nconst props = withDefaults(defineProps<GoogleOneTapProps>(), {\n cancelOnTapOutside: true,\n itpSupport: true,\n fedCmSupport: true,\n});\n</script>\n\n<template>\n <ClerkHostRenderer\n :open=\"clerk?.openGoogleOneTap\"\n :close=\"clerk?.closeGoogleOneTap\"\n :props=\"props\"\n />\n</template>\n","<script setup lang=\"ts\">\nimport { ClerkHostRenderer } from '../ClerkHostRenderer';\nimport type { WaitlistProps } from '@clerk/shared/types';\nimport { useClerk } from '../../composables';\n\nconst clerk = useClerk();\nconst props = defineProps<WaitlistProps>();\n</script>\n\n<template>\n <ClerkHostRenderer\n :mount=\"clerk?.mountWaitlist\"\n :unmount=\"clerk?.unmountWaitlist\"\n :update-props=\"(clerk as any)?.__internal_updateProps\"\n :props=\"props\"\n />\n</template>\n","<script setup lang=\"ts\">\nimport { ClerkHostRenderer } from '../ClerkHostRenderer';\nimport { useClerk } from '../../composables';\nimport type { CreateOrganizationProps } from '@clerk/shared/types';\n\nconst clerk = useClerk();\nconst props = defineProps<CreateOrganizationProps>();\n</script>\n\n<template>\n <ClerkHostRenderer\n :mount=\"clerk?.mountCreateOrganization\"\n :unmount=\"clerk?.unmountCreateOrganization\"\n :update-props=\"(clerk as any)?.__internal_updateProps\"\n :props=\"props\"\n />\n</template>\n","<script setup lang=\"ts\">\nimport { useClerk } from '../../composables';\nimport type { OrganizationListProps } from '@clerk/shared/types';\nimport { ClerkHostRenderer } from '../ClerkHostRenderer';\n\nconst clerk = useClerk();\nconst props = defineProps<OrganizationListProps>();\n</script>\n\n<template>\n <ClerkHostRenderer\n :mount=\"clerk?.mountOrganizationList\"\n :unmount=\"clerk?.unmountOrganizationList\"\n :update-props=\"(clerk as any)?.__internal_updateProps\"\n :props=\"props\"\n />\n</template>\n","<script setup lang=\"ts\">\nimport { ClerkHostRenderer } from '../ClerkHostRenderer';\nimport type { PricingTableProps } from '@clerk/shared/types';\nimport { useClerk } from '../../composables';\n\nconst clerk = useClerk();\nconst props = defineProps<PricingTableProps>();\n</script>\n\n<template>\n <ClerkHostRenderer\n :mount=\"clerk?.mountPricingTable\"\n :unmount=\"clerk?.unmountPricingTable\"\n :update-props=\"(clerk as any)?.__internal_updateProps\"\n :props=\"props\"\n />\n</template>\n","<script setup lang=\"ts\">\nimport { ClerkHostRenderer } from '../ClerkHostRenderer';\nimport type { APIKeysProps } from '@clerk/shared/types';\nimport { useClerk } from '../../composables';\n\nconst clerk = useClerk();\nconst props = defineProps<APIKeysProps>();\n</script>\n\n<template>\n <ClerkHostRenderer\n :mount=\"clerk?.mountAPIKeys\"\n :unmount=\"clerk?.unmountAPIKeys\"\n :update-props=\"(clerk as any)?.__internal_updateProps\"\n :props=\"props\"\n />\n</template>\n","<script setup lang=\"ts\">\nimport { ClerkHostRenderer } from '../ClerkHostRenderer';\nimport type { OAuthConsentProps } from '@clerk/shared/types';\nimport { useClerk } from '../../composables';\n\nconst clerk = useClerk();\nconst props = defineProps<OAuthConsentProps>();\n</script>\n\n<template>\n <ClerkHostRenderer\n :mount=\"clerk?.mountOAuthConsent\"\n :unmount=\"clerk?.unmountOAuthConsent\"\n :update-props=\"(clerk as any)?.__internal_updateProps\"\n :props=\"props\"\n />\n</template>\n","<script setup lang=\"ts\">\nimport { computed, provide } from 'vue';\nimport { useOrganizationProfileCustomPages } from '../../../utils/useCustomPages';\nimport { useClerk } from '../../../composables';\nimport type { OrganizationProfileProps } from '@clerk/shared/types';\nimport { OrganizationProfileInjectionKey } from '../../../keys';\nimport { ClerkHostRenderer, CustomPortalsRenderer } from '../../ClerkHostRenderer';\n\ntype Props = Omit<OrganizationProfileProps, 'customPages'>;\nconst props = defineProps<Props>();\n\nconst clerk = useClerk();\n\nconst { customPages, customPagesPortals, addCustomPage } = useOrganizationProfileCustomPages();\n\nconst finalProps = computed(() => ({\n ...props,\n customPages: customPages.value,\n}));\n\nprovide(OrganizationProfileInjectionKey, {\n addCustomPage,\n});\n</script>\n\n<template>\n <ClerkHostRenderer\n :mount=\"clerk?.mountOrganizationProfile\"\n :unmount=\"clerk?.unmountOrganizationProfile\"\n :props=\"finalProps\"\n :update-props=\"(clerk as any)?.__internal_updateProps\"\n />\n <CustomPortalsRenderer :custom-pages-portals=\"customPagesPortals\" />\n <slot />\n</template>\n","import { defineComponent, inject } from 'vue';\n\nimport { errorThrower } from '../../../errors/errorThrower';\nimport { organizationProfileLinkRenderedError, organizationProfilePageRenderedError } from '../../../errors/messages';\nimport { OrganizationProfileInjectionKey } from '../../../keys';\nimport type { OrganizationLinkProps, OrganizationProfilePageProps } from '../../../types';\nimport _OrganizationProfile from './OrganizationProfile.vue';\n\nexport const OrganizationProfilePage = defineComponent(\n (props: OrganizationProfilePageProps, { slots }) => {\n const ctx = inject(OrganizationProfileInjectionKey);\n if (!ctx) {\n return errorThrower.throw(organizationProfilePageRenderedError);\n }\n\n ctx.addCustomPage({\n props,\n slots,\n component: OrganizationProfilePage,\n });\n\n return () => null;\n },\n { name: 'OrganizationProfilePage' },\n);\n\nexport const OrganizationProfileLink = defineComponent(\n (props: OrganizationLinkProps, { slots }) => {\n const ctx = inject(OrganizationProfileInjectionKey);\n if (!ctx) {\n return errorThrower.throw(organizationProfileLinkRenderedError);\n }\n\n ctx.addCustomPage({\n props,\n slots,\n component: OrganizationProfileLink,\n });\n\n return () => null;\n },\n { name: 'OrganizationProfileLink' },\n);\n\nexport const OrganizationProfile = Object.assign(_OrganizationProfile, {\n Page: OrganizationProfilePage,\n Link: OrganizationProfileLink,\n});\n","import { type Component } from 'vue';\n\nexport const isThatComponent = (v: any, component: Component): v is Component => {\n return !!v && isRenderFunction(v) && v.name === component.name;\n};\n\nconst isRenderFunction = (v: any): v is Component => {\n return 'name' in v && 'setup' in v;\n};\n","import type { Slot } from 'vue';\nimport { computed, h, ref, Teleport } from 'vue';\n\ninterface RawPortal {\n id: string;\n el: HTMLDivElement;\n slot: Slot;\n}\n\nfunction generateElementIdentifier() {\n return Math.random().toString(36).substring(2, 7);\n}\n\nexport const useCustomElementPortal = () => {\n const rawPortals = ref<RawPortal[]>([]);\n const portals = computed(() => {\n return rawPortals.value.map(item => {\n return h(Teleport, { to: item.el }, item.slot());\n });\n });\n\n const mount = (el: HTMLDivElement, slot: Slot) => {\n const id = generateElementIdentifier();\n el.setAttribute('data-clerk-mount-id', id);\n rawPortals.value.push({\n id,\n el,\n slot,\n });\n };\n\n const unmount = (el: HTMLDivElement | undefined) => {\n const id = el?.getAttribute('data-clerk-mount-id');\n if (id) {\n const index = rawPortals.value.findIndex(portal => portal.id === id);\n if (index !== -1) {\n rawPortals.value.splice(index, 1);\n }\n }\n };\n\n return {\n portals,\n mount,\n unmount,\n };\n};\n","import type { CustomPage } from '@clerk/shared/types';\nimport { logErrorInDevMode } from '@clerk/shared/utils';\nimport type { Component } from 'vue';\nimport { ref } from 'vue';\n\nimport { OrganizationProfileLink, OrganizationProfilePage } from '../components/ui-components/OrganizationProfile';\nimport { UserProfileLink, UserProfilePage } from '../components/ui-components/UserProfile';\nimport { customLinkWrongProps, customPageWrongProps } from '../errors/messages';\nimport type { AddCustomPagesParams } from '../types';\nimport { isThatComponent } from './componentValidation';\nimport { useCustomElementPortal } from './useCustomElementPortal';\n\nexport const useUserProfileCustomPages = () => {\n const { customPages, customPagesPortals, addCustomPage } = useCustomPages({\n reorderItemsLabels: ['account', 'security', 'billing', 'apiKeys'],\n PageComponent: UserProfilePage,\n LinkComponent: UserProfileLink,\n componentName: 'UserProfile',\n });\n\n const addUserProfileCustomPage = (params: AddCustomPagesParams) => {\n return addCustomPage(params);\n };\n\n return {\n customPages,\n customPagesPortals,\n addCustomPage: addUserProfileCustomPage,\n };\n};\n\nexport const useOrganizationProfileCustomPages = () => {\n const { customPages, customPagesPortals, addCustomPage } = useCustomPages({\n reorderItemsLabels: ['general', 'members', 'billing', 'apiKeys'],\n PageComponent: OrganizationProfilePage,\n LinkComponent: OrganizationProfileLink,\n componentName: 'OrganizationProfile',\n });\n\n const addOrganizationProfileCustomPage = (params: AddCustomPagesParams) => {\n return addCustomPage(params);\n };\n\n return {\n customPages,\n customPagesPortals,\n addCustomPage: addOrganizationProfileCustomPage,\n };\n};\n\ntype UseCustomPagesParams = {\n LinkComponent: Component;\n PageComponent: Component;\n reorderItemsLabels: string[];\n componentName: string;\n};\n\nexport const useCustomPages = (customPagesParams: UseCustomPagesParams) => {\n const customPages = ref<CustomPage[]>([]);\n const { portals: customPagesPortals, mount, unmount } = useCustomElementPortal();\n const { PageComponent, LinkComponent, reorderItemsLabels, componentName } = customPagesParams;\n\n const addCustomPage = (params: AddCustomPagesParams) => {\n const { props, slots, component } = params;\n const { label, url } = props;\n\n if (isThatComponent(component, PageComponent)) {\n if (isReorderItem(props, slots, reorderItemsLabels)) {\n // This is a reordering item\n customPages.value.push({ label });\n } else if (isCustomPage(props, slots)) {\n // This is a custom page\n customPages.value.push({\n label,\n url,\n mountIcon(el) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n mount(el, slots.labelIcon!);\n },\n unmountIcon: unmount,\n mount(el) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n mount(el, slots.default!);\n },\n unmount,\n });\n } else {\n logErrorInDevMode(customPageWrongProps(componentName));\n return;\n }\n }\n\n if (isThatComponent(component, LinkComponent)) {\n if (isExternalLink(props, slots)) {\n // This is an external link\n customPages.value.push({\n label,\n url,\n mountIcon(el) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n mount(el, slots.labelIcon!);\n },\n unmountIcon: unmount,\n });\n } else {\n logErrorInDevMode(customLinkWrongProps(componentName));\n return;\n }\n }\n };\n\n return {\n customPages,\n customPagesPortals,\n addCustomPage,\n };\n};\n\nconst isReorderItem = (props: any, slots: AddCustomPagesParams['slots'], validItems: string[]): boolean => {\n const { label, url } = props;\n const { default: defaultSlot, labelIcon } = slots;\n return !defaultSlot && !url && !labelIcon && validItems.some(v => v === label);\n};\n\nconst isCustomPage = (props: any, slots: AddCustomPagesParams['slots']): boolean => {\n const { label, url } = props;\n const { default: defaultSlot, labelIcon } = slots;\n return !!defaultSlot && !!url && !!labelIcon && !!label;\n};\n\nconst isExternalLink = (props: any, slots: AddCustomPagesParams['slots']): boolean => {\n const { label, url } = props;\n const { default: defaultSlot, labelIcon } = slots;\n return !defaultSlot && !!url && !!labelIcon && !!label;\n};\n","<script setup lang=\"ts\">\nimport { useClerk } from '../../../composables';\nimport type { UserProfileProps } from '@clerk/shared/types';\nimport { ClerkHostRenderer, CustomPortalsRenderer } from '../../ClerkHostRenderer';\nimport { computed, provide } from 'vue';\nimport { UserProfileInjectionKey } from '../../../keys';\nimport { useUserProfileCustomPages } from '../../../utils/useCustomPages';\n\ntype Props = Omit<UserProfileProps, 'customPages'>;\nconst props = defineProps<Props>();\n\nconst clerk = useClerk();\nconst { customPages, customPagesPortals, addCustomPage } = useUserProfileCustomPages();\n\nconst finalProps = computed(() => ({\n ...props,\n customPages: customPages.value,\n}));\n\nprovide(UserProfileInjectionKey, {\n addCustomPage,\n});\n</script>\n\n<template>\n <ClerkHostRenderer\n :mount=\"clerk?.mountUserProfile\"\n :unmount=\"clerk?.unmountUserProfile\"\n :props=\"finalProps\"\n :update-props=\"(clerk as any)?.__internal_updateProps\"\n />\n <CustomPortalsRenderer :custom-pages-portals=\"customPagesPortals\" />\n <slot />\n</template>\n","import { defineComponent, inject } from 'vue';\n\nimport { errorThrower } from '../../../errors/errorThrower';\nimport { userProfileLinkRenderedError, userProfilePageRenderedError } from '../../../errors/messages';\nimport { UserProfileInjectionKey } from '../../../keys';\nimport type { UserProfileLinkProps, UserProfilePageProps } from '../../../types';\nimport _UserProfile from './UserProfile.vue';\n\nexport const UserProfilePage = defineComponent(\n (props: UserProfilePageProps, { slots }) => {\n const ctx = inject(UserProfileInjectionKey);\n if (!ctx) {\n return errorThrower.throw(userProfilePageRenderedError);\n }\n\n ctx.addCustomPage({\n props,\n slots,\n component: UserProfilePage,\n });\n\n return () => null;\n },\n { name: 'UserProfilePage' },\n);\n\nexport const UserProfileLink = defineComponent(\n (props: UserProfileLinkProps, { slots }) => {\n const ctx = inject(UserProfileInjectionKey);\n if (!ctx) {\n return errorThrower.throw(userProfileLinkRenderedError);\n }\n\n ctx.addCustomPage({\n props,\n slots,\n component: UserProfileLink,\n });\n\n return () => null;\n },\n { name: 'UserProfileLink' },\n);\n\nexport const UserProfile = Object.assign(_UserProfile, {\n Page: UserProfilePage,\n Link: UserProfileLink,\n});\n","<script setup lang=\"ts\">\nimport { useClerk } from '../../../composables';\nimport type { OrganizationSwitcherProps, OrganizationProfileProps } from '@clerk/shared/types';\nimport { ClerkHostRenderer, CustomPortalsRenderer } from '../../ClerkHostRenderer';\nimport { useOrganizationProfileCustomPages } from '../../../utils/useCustomPages';\nimport { computed, provide } from 'vue';\nimport { OrganizationProfileInjectionKey } from '../../../keys';\n\nconst clerk = useClerk();\n\ntype Props = Omit<OrganizationSwitcherProps, 'organizationProfileProps' | '__experimental_asStandalone'> & {\n organizationProfileProps?: Pick<OrganizationProfileProps, 'appearance'>;\n};\nconst props = defineProps<Props>();\n\nconst { customPages, customPagesPortals, addCustomPage } = useOrganizationProfileCustomPages();\n\nconst finalProps = computed<Props>(() => ({\n ...props,\n organizationProfileProps: {\n ...(props.organizationProfileProps || {}),\n customPages: customPages.value,\n },\n}));\n\nprovide(OrganizationProfileInjectionKey, {\n addCustomPage,\n});\n</script>\n\n<template>\n <ClerkHostRenderer\n :mount=\"clerk?.mountOrganizationSwitcher\"\n :unmount=\"clerk?.unmountOrganizationSwitcher\"\n :update-props=\"(clerk as any)?.__internal_updateProps\"\n :props=\"finalProps\"\n />\n <CustomPortalsRenderer :custom-pages-portals=\"customPagesPortals\" />\n <slot />\n</template>\n","import { OrganizationProfileLink, OrganizationProfilePage } from '../OrganizationProfile';\nimport _OrganizationSwitcher from './OrganizationSwitcher.vue';\n\nexport const OrganizationSwitcher = Object.assign(_OrganizationSwitcher, {\n OrganizationProfilePage,\n OrganizationProfileLink,\n});\n","<script setup lang=\"ts\">\nimport { ClerkHostRenderer } from '../ClerkHostRenderer';\nimport type { UserAvatarProps } from '@clerk/shared/types';\nimport { useClerk } from '../../composables';\n\nconst clerk = useClerk();\nconst props = defineProps<UserAvatarProps>();\n</script>\n\n<template>\n <ClerkHostRenderer\n :mount=\"clerk?.mountUserAvatar\"\n :unmount=\"clerk?.unmountUserAvatar\"\n :update-props=\"(clerk as any)?.__internal_updateProps\"\n :props=\"props\"\n />\n</template>\n","import type { CustomMenuItem } from '@clerk/shared/types';\nimport { logErrorInDevMode } from '@clerk/shared/utils';\nimport { ref } from 'vue';\n\nimport { MenuAction, MenuLink } from '../components/ui-components/UserButton';\nimport { userButtonMenuItemActionWrongProps, userButtonMenuItemLinkWrongProps } from '../errors/messages';\nimport type { AddCustomMenuItemParams, UserButtonActionProps, UserButtonLinkProps } from '../types';\nimport { isThatComponent } from './componentValidation';\nimport { useCustomElementPortal } from './useCustomElementPortal';\n\nexport const useUserButtonCustomMenuItems = () => {\n const customMenuItems = ref<CustomMenuItem[]>([]);\n const { portals: customMenuItemsPortals, mount, unmount } = useCustomElementPortal();\n const reorderItemsLabels = ['manageAccount', 'signOut'];\n\n function addCustomMenuItem(params: AddCustomMenuItemParams) {\n const { props, component, slots } = params;\n const { label, onClick, open, href } = props;\n\n if (isThatComponent(component, MenuAction)) {\n if (isReorderItem(props, slots, reorderItemsLabels)) {\n // This is a reordering item\n customMenuItems.value.push({ label });\n } else if (isCustomMenuItem(props, slots)) {\n const baseItem: CustomMenuItem = {\n label,\n mountIcon(el) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n mount(el, slots.labelIcon!);\n },\n unmountIcon: unmount,\n };\n\n if (onClick !== undefined) {\n customMenuItems.value.push({\n ...baseItem,\n onClick,\n open,\n });\n } else if (open !== undefined) {\n customMenuItems.value.push({\n ...baseItem,\n open: open.startsWith('/') ? open : `/${open}`,\n });\n } else {\n // Handle the case where neither onClick nor open is defined\n logErrorInDevMode('Custom menu item must have either onClick or open property');\n return;\n }\n } else {\n logErrorInDevMode(userButtonMenuItemActionWrongProps);\n return;\n }\n }\n\n if (isThatComponent(component, MenuLink)) {\n if (isExternalLink(props, slots)) {\n customMenuItems.value.push({\n label,\n href,\n mountIcon(el) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n mount(el, slots.labelIcon!);\n },\n unmountIcon: unmount,\n });\n } else {\n logErrorInDevMode(userButtonMenuItemLinkWrongProps);\n return;\n }\n }\n }\n\n return {\n customMenuItems,\n customMenuItemsPortals,\n addCustomMenuItem,\n };\n};\n\nconst isReorderItem = (props: any, slots: AddCustomMenuItemParams['slots'], validItems: string[]): boolean => {\n const { label, onClick } = props;\n const { labelIcon } = slots;\n return !onClick && !labelIcon && validItems.some(v => v === label);\n};\n\nconst isCustomMenuItem = (props: any, slots: AddCustomMenuItemParams['slots']): props is UserButtonActionProps => {\n const { label, onClick, open } = props;\n const { labelIcon } = slots;\n return !!labelIcon && !!label && (typeof onClick === 'function' || typeof open === 'string');\n};\n\nconst isExternalLink = (props: any, slots: AddCustomMenuItemParams['slots']): props is UserButtonLinkProps => {\n const { label, href } = props;\n const { labelIcon } = slots;\n return !!href && !!labelIcon && !!label;\n};\n","<script setup lang=\"ts\">\nimport { useClerk } from '../../../composables';\nimport type { UserButtonProps, UserProfileProps } from '@clerk/shared/types';\nimport { ClerkHostRenderer, CustomPortalsRenderer } from '../../ClerkHostRenderer';\nimport { computed, provide } from 'vue';\nimport { UserButtonInjectionKey, UserProfileInjectionKey } from '../../../keys';\nimport { useUserProfileCustomPages } from '../../../utils/useCustomPages';\nimport { useUserButtonCustomMenuItems } from '../../../utils/useCustomMenuItems';\n\ntype Props = Omit<UserButtonProps, 'userProfileProps' | 'customMenuItems'> & {\n userProfileProps?: Pick<UserProfileProps, 'additionalOAuthScopes' | 'appearance' | 'apiKeysProps'>;\n};\nconst props = defineProps<Props>();\n\nconst clerk = useClerk();\n\nconst { customMenuItems, customMenuItemsPortals, addCustomMenuItem } = useUserButtonCustomMenuItems();\nconst { customPages, customPagesPortals, addCustomPage } = useUserProfileCustomPages();\n\nconst finalProps = computed<Props>(() => ({\n ...props,\n userProfileProps: {\n ...(props.userProfileProps || {}),\n customPages: customPages.value,\n },\n customMenuItems: customMenuItems.value,\n}));\n\nprovide(UserButtonInjectionKey, {\n addCustomMenuItem,\n});\nprovide(UserProfileInjectionKey, {\n addCustomPage,\n});\n</script>\n\n<template>\n <ClerkHostRenderer\n :mount=\"clerk?.mountUserButton\"\n :unmount=\"clerk?.unmountUserButton\"\n :props=\"finalProps\"\n :update-props=\"(clerk as any)?.__internal_updateProps\"\n />\n <CustomPortalsRenderer\n :custom-pages-portals=\"customPagesPortals\"\n :custom-menu-items-portals=\"customMenuItemsPortals\"\n />\n <slot />\n</template>\n","import { defineComponent, inject, provide } from 'vue';\n\nimport { errorThrower } from '../../../errors/errorThrower';\nimport {\n userButtonMenuActionRenderedError,\n userButtonMenuItemsRenderedError,\n userButtonMenuLinkRenderedError,\n} from '../../../errors/messages';\nimport { UserButtonInjectionKey, UserButtonMenuItemsInjectionKey } from '../../../keys';\nimport type { UserButtonActionProps, UserButtonLinkProps } from '../../../types';\nimport { UserProfileLink, UserProfilePage } from '../UserProfile';\nimport _UserButton from './UserButton.vue';\n\nconst MenuItems = defineComponent((_, { slots }) => {\n const ctx = inject(UserButtonInjectionKey);\n\n if (!ctx) {\n return errorThrower.throw(userButtonMenuItemsRenderedError);\n }\n\n provide(UserButtonMenuItemsInjectionKey, ctx);\n return () => slots.default?.();\n});\n\nexport const MenuAction = defineComponent(\n (props: UserButtonActionProps, { slots }) => {\n const ctx = inject(UserButtonMenuItemsInjectionKey);\n if (!ctx) {\n return errorThrower.throw(userButtonMenuActionRenderedError);\n }\n\n ctx.addCustomMenuItem({\n props,\n slots,\n component: MenuAction,\n });\n\n return () => null;\n },\n { name: 'MenuAction' },\n);\n\nexport const MenuLink = defineComponent(\n (props: UserButtonLinkProps, { slots }) => {\n const ctx = inject(UserButtonMenuItemsInjectionKey);\n if (!ctx) {\n return errorThrower.throw(userButtonMenuLinkRenderedError);\n }\n\n ctx.addCustomMenuItem({\n props,\n slots,\n component: MenuLink,\n });\n\n return () => null;\n },\n { name: 'MenuLink' },\n);\n\nexport const UserButton = Object.assign(_UserButton, {\n MenuItems,\n Action: MenuAction,\n Link: MenuLink,\n UserProfilePage,\n UserProfileLink,\n});\n","<script setup lang=\"ts\">\nimport { useAttrs, useSlots } from 'vue';\nimport type { SignInButtonProps } from '@clerk/shared/types';\nimport { useClerk } from '../composables/useClerk';\nimport { assertSingleChild, normalizeWithDefaultValue } from '../utils';\n\nconst props = defineProps<SignInButtonProps>();\n\nconst clerk = useClerk();\nconst slots = useSlots();\nconst attrs = useAttrs();\n\nfunction getChildComponent() {\n const children = normalizeWithDefaultValue(slots.default?.({}), 'Sign in');\n return assertSingleChild(children, 'SignInButton');\n}\n\nfunction clickHandler() {\n const { mode, ...opts } = props;\n\n if (mode === 'modal') {\n return clerk.value?.openSignIn({ ...opts, appearance: props.appearance });\n }\n\n const { withSignUp, ...redirectOpts } = opts;\n\n void clerk.value?.redirectToSignIn({\n ...redirectOpts,\n signInFallbackRedirectUrl: props.fallbackRedirectUrl,\n signInForceRedirectUrl: props.forceRedirectUrl,\n });\n}\n</script>\n\n<template>\n <component\n :is=\"getChildComponent\"\n v-bind=\"attrs\"\n @click=\"clickHandler\"\n >\n <slot />\n </component>\n</template>\n","<script setup lang=\"ts\">\nimport { useAttrs, useSlots } from 'vue';\nimport type { SignUpButtonProps } from '@clerk/shared/types';\nimport { useClerk } from '../composables/useClerk';\nimport { assertSingleChild, normalizeWithDefaultValue } from '../utils';\n\nconst props = defineProps<SignUpButtonProps>();\n\nconst clerk = useClerk();\nconst slots = useSlots();\nconst attrs = useAttrs();\n\nfunction getChildComponent() {\n const children = normalizeWithDefaultValue(slots.default?.({}), 'Sign up');\n return assertSingleChild(children, 'SignUpButton');\n}\n\nfunction clickHandler() {\n const { mode, ...opts } = props;\n\n if (mode === 'modal') {\n return clerk.value?.openSignUp({ ...opts, appearance: props.appearance });\n }\n\n void clerk.value?.redirectToSignUp({\n ...opts,\n signUpFallbackRedirectUrl: props.fallbackRedirectUrl,\n signUpForceRedirectUrl: props.forceRedirectUrl,\n });\n}\n</script>\n\n<template>\n <component\n :is=\"getChildComponent\"\n v-bind=\"attrs\"\n @click=\"clickHandler\"\n >\n <slot />\n </component>\n</template>\n","<script setup lang=\"ts\">\nimport { useAttrs, useSlots } from 'vue';\nimport { deprecated } from '@clerk/shared/deprecated';\nimport type { SignOutOptions } from '@clerk/shared/types';\nimport { useClerk } from '../composables/useClerk';\nimport { assertSingleChild, normalizeWithDefaultValue } from '../utils';\n\ninterface SignOutButtonProps {\n /**\n * @deprecated Use the `redirectUrl` and `sessionId` props directly instead.\n */\n signOutOptions?: SignOutOptions;\n sessionId?: string;\n redirectUrl?: string;\n}\n\nconst props = defineProps<SignOutButtonProps>();\n\nconst clerk = useClerk();\nconst slots = useSlots();\nconst attrs = useAttrs();\n\nfunction getChildComponent() {\n const children = normalizeWithDefaultValue(slots.default?.({}), 'Sign out');\n return assertSingleChild(children, 'SignOutButton');\n}\n\nfunction clickHandler() {\n if (props.signOutOptions) {\n deprecated('SignOutButton `signOutOptions`', 'Use the `redirectUrl` and `sessionId` props directly instead.');\n }\n\n const signOutOptions: SignOutOptions = {\n redirectUrl: props.signOutOptions?.redirectUrl ?? props.redirectUrl,\n sessionId: props.signOutOptions?.sessionId ?? props.sessionId,\n };\n void clerk.value?.signOut(signOutOptions);\n}\n</script>\n\n<template>\n <component\n :is=\"getChildComponent\"\n v-bind=\"attrs\"\n @click=\"clickHandler\"\n >\n <slot />\n </component>\n</template>\n","<script setup lang=\"ts\">\nimport { useAttrs, useSlots } from 'vue';\nimport type { RedirectUrlProp } from '@clerk/shared/types';\nimport { useClerk } from '../composables/useClerk';\nimport { assertSingleChild, normalizeWithDefaultValue } from '../utils';\n\ntype Props = RedirectUrlProp & {\n mode?: 'modal' | 'redirect';\n};\n\nconst props = defineProps<Props>();\n\nconst clerk = useClerk();\nconst slots = useSlots();\nconst attrs = useAttrs();\n\nfunction getChildComponent() {\n const children = normalizeWithDefaultValue(slots.default?.({}), 'Sign in with Metamask');\n return assertSingleChild(children, 'SignInWithMetamaskButton');\n}\n\nfunction clickHandler() {\n void clerk.value?.authenticateWithMetamask({ redirectUrl: props.redirectUrl || undefined });\n}\n</script>\n\n<template>\n <component\n :is=\"getChildComponent\"\n v-bind=\"attrs\"\n @click=\"clickHandler\"\n >\n <slot />\n </component>\n</template>\n","import { defineComponent, type PropType, provide } from 'vue';\n\nimport { PortalInjectionKey } from '../keys';\n\n/**\n * UNSAFE_PortalProvider allows you to specify a custom container for Clerk floating UI elements\n * (popovers, modals, tooltips, etc.) that use portals.\n *\n * Only components within this provider will be affected. Components outside the provider\n * will continue to use the default document.body for portals.\n *\n * This is particularly useful when using Clerk components inside external UI libraries\n * like Reka UI Dialog, where portaled elements need to render within the dialog's\n * container to remain interactable.\n *\n * @example\n * ```vue\n * <script setup>\n * import { useTemplateRef } from 'vue';\n * import { DialogContent } from 'reka-ui';\n * import { UNSAFE_PortalProvider, UserButton } from '@clerk/vue';\n *\n * const dialogContentRef = useTemplateRef('dialogContentRef');\n * </script>\n *\n * <template>\n * <DialogContent ref=\"dialogContentRef\">\n * <UNSAFE_PortalProvider :getContainer=\"() => dialogContentRef?.$el\">\n * <UserButton />\n * </UNSAFE_PortalProvider>\n * </DialogContent>\n * </template>\n * ```\n */\nexport const UNSAFE_PortalProvider = defineComponent({\n name: 'UNSAFE_PortalProvider',\n props: {\n /**\n * Function that returns the container element where portals should be rendered.\n * This allows Clerk components to render inside external dialogs/popovers\n * (e.g., Reka UI Dialog) instead of document.body.\n */\n getContainer: {\n type: Function as PropType<() => HTMLElement | null>,\n required: true,\n },\n },\n setup(props, { slots }) {\n provide(PortalInjectionKey, { getContainer: props.getContainer });\n return () => slots.default?.();\n },\n});\n","import { inBrowser } from '@clerk/shared/browser';\nimport { deriveState } from '@clerk/shared/deriveState';\nimport { loadClerkJSScript, type LoadClerkJSScriptOptions, loadClerkUIScript } from '@clerk/shared/loadClerkJsScript';\nimport type {\n Clerk,\n ClerkOptions,\n ClientResource,\n InitialState,\n InternalClerkScriptProps,\n IsomorphicClerkOptions,\n MultiDomainAndOrProxy,\n Resources,\n Without,\n} from '@clerk/shared/types';\nimport type { ClerkUIConstructor } from '@clerk/shared/ui';\nimport type { Appearance, Ui } from '@clerk/ui/internal';\nimport type { Plugin } from 'vue';\nimport { computed, ref, shallowRef, triggerRef } from 'vue';\n\nimport { ClerkInjectionKey } from './keys';\ndeclare global {\n interface Window {\n __internal_ClerkUICtor?: ClerkUIConstructor;\n }\n}\n\nexport type PluginOptions<TUi extends Ui = Ui> = Without<\n IsomorphicClerkOptions,\n 'domain' | 'proxyUrl' | 'appearance' | keyof InternalClerkScriptProps\n> &\n MultiDomainAndOrProxy & {\n initialState?: InitialState;\n appearance?: Appearance<TUi>;\n /**\n * An object to use the bundled Clerk UI instead of loading from CDN.\n * Import `ui` from `@clerk/ui` and pass it here to bundle the UI with your application.\n * When omitted, UI is loaded from Clerk's CDN.\n */\n ui?: TUi;\n };\n\nconst SDK_METADATA = {\n name: PACKAGE_NAME,\n version: PACKAGE_VERSION,\n environment: process.env.NODE_ENV,\n};\n\n/**\n * Vue plugin for integrating Clerk.\n *\n * @example\n * ```ts\n * import { createApp } from 'vue'\n * import { clerkPlugin } from '@clerk/vue'\n * import App from './App.vue'\n *\n * const app = createApp(App)\n *\n * app.use(clerkPlugin, {\n * publishableKey: 'pk_'\n * })\n *\n * app.mount('#app')\n * ```\n */\nexport const clerkPlugin: Plugin<[PluginOptions]> = {\n install<TUi extends Ui = Ui>(app: any, pluginOptions: PluginOptions<TUi>) {\n const { initialState } = pluginOptions || {};\n\n const loaded = shallowRef(false);\n const clerk = shallowRef<Clerk | null>(null);\n\n const resources = ref<Resources>({\n client: undefined as unknown as ClientResource,\n session: undefined,\n user: undefined,\n organization: undefined,\n });\n\n const options = {\n ...pluginOptions,\n sdkMetadata: pluginOptions.sdkMetadata || SDK_METADATA,\n } as LoadClerkJSScriptOptions;\n\n // We need this check for SSR apps like Nuxt as it will try to run this code on the server\n // and loadClerkJSScript contains browser-specific code\n if (inBrowser()) {\n void (async () => {\n try {\n const clerkPromise = loadClerkJSScript(options);\n // Support bundled UI via ui.ClerkUI prop\n const uiProp = pluginOptions.ui;\n const clerkUICtorPromise = uiProp?.ClerkUI\n ? Promise.resolve(uiProp.ClerkUI)\n : uiProp || pluginOptions.prefetchUI === false\n ? Promise.resolve(undefined)\n : (async () => {\n await loadClerkUIScript(options);\n if (!window.__internal_ClerkUICtor) {\n throw new Error('Failed to download latest Clerk UI. Contact support@clerk.com.');\n }\n return window.__internal_ClerkUICtor;\n })();\n\n await clerkPromise;\n\n if (!window.Clerk) {\n throw new Error('Failed to download latest ClerkJS. Contact support@clerk.com.');\n }\n\n clerk.value = window.Clerk;\n const loadOptions = {\n ...options,\n ui: { ...pluginOptions.ui, ClerkUI: clerkUICtorPromise },\n } as unknown as ClerkOptions;\n await window.Clerk.load(loadOptions);\n loaded.value = true;\n\n if (clerk.value) {\n clerk.value.addListener(payload => {\n resources.value = payload;\n });\n\n // When Clerk updates its state internally, Vue's reactivity system doesn't detect\n // the change since it's an external object being mutated. triggerRef() forces Vue\n // to re-evaluate all dependencies regardless of how the value was changed.\n triggerRef(clerk);\n }\n } catch (err) {\n const error = err as Error;\n console.error(error.stack || error.message || error);\n }\n })();\n }\n\n const derivedState = computed(() => deriveState(loaded.value, resources.value, initialState));\n\n const authCtx = computed(() => {\n const {\n sessionId,\n userId,\n orgId,\n actor,\n orgRole,\n orgSlug,\n orgPermissions,\n sessionStatus,\n sessionClaims,\n factorVerificationAge,\n } = derivedState.value;\n return {\n sessionId,\n userId,\n actor,\n orgId,\n orgRole,\n orgSlug,\n orgPermissions,\n sessionStatus,\n sessionClaims,\n factorVerificationAge,\n };\n });\n const clientCtx = computed(() => resources.value.client);\n const userCtx = computed(() => derivedState.value.user);\n const sessionCtx = computed(() => derivedState.value.session);\n const organizationCtx = computed(() => derivedState.value.organization);\n\n app.provide(ClerkInjectionKey, {\n loaded,\n clerk,\n authCtx,\n clientCtx,\n sessionCtx,\n userCtx,\n organizationCtx,\n });\n },\n};\n","import { setClerkJSLoadingErrorPackageName } from '@clerk/shared/loadClerkJsScript';\n\nimport { setErrorThrowerOptions } from './errors/errorThrower';\n\nexport * from './components';\nexport * from './composables';\n\nexport { clerkPlugin, type PluginOptions } from './plugin';\nexport { updateClerkOptions } from './utils';\nexport { getToken } from '@clerk/shared/getToken';\n\nsetErrorThrowerOptions({ packageName: PACKAGE_NAME });\nsetClerkJSLoadingErrorPackageName(PACKAGE_NAME);\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../src/composables/usePortalRoot.ts","../src/composables/useUser.ts","../src/composables/useSession.ts","../src/composables/useSignIn.ts","../src/composables/useSignUp.ts","../src/composables/useSessionList.ts","../src/composables/useOrganization.ts","../src/utils/useClerkLoaded.ts","../src/utils/updateClerkOptions.ts","../src/components/controlComponents.ts","../src/components/ClerkHostRenderer.ts","../src/components/ui-components/SignIn.vue","../src/components/ui-components/SignUp.vue","../src/components/ui-components/GoogleOneTap.vue","../src/components/ui-components/Waitlist.vue","../src/components/ui-components/CreateOrganization.vue","../src/components/ui-components/OrganizationList.vue","../src/components/ui-components/PricingTable.vue","../src/components/ui-components/APIKeys.vue","../src/components/ui-components/OAuthConsent.vue","../src/components/ui-components/OrganizationProfile/OrganizationProfile.vue","../src/components/ui-components/OrganizationProfile/index.ts","../src/utils/componentValidation.ts","../src/utils/useCustomElementPortal.ts","../src/utils/useCustomPages.ts","../src/components/ui-components/UserProfile/UserProfile.vue","../src/components/ui-components/UserProfile/index.ts","../src/components/ui-components/OrganizationSwitcher/OrganizationSwitcher.vue","../src/components/ui-components/OrganizationSwitcher/index.ts","../src/components/ui-components/UserAvatar.vue","../src/utils/useCustomMenuItems.ts","../src/components/ui-components/UserButton/UserButton.vue","../src/components/ui-components/UserButton/index.ts","../src/components/SignInButton.vue","../src/components/SignUpButton.vue","../src/components/SignOutButton.vue","../src/components/SignInWithMetamaskButton.vue","../src/components/PortalProvider.ts","../src/plugin.ts","../src/index.ts"],"sourcesContent":["import { inject } from 'vue';\n\nimport { PortalInjectionKey } from '../keys';\n\n/**\n * Composable to get the current portal root container.\n * Returns the getContainer function from context if inside a PortalProvider,\n * otherwise returns a function that returns null (default behavior).\n */\nexport const usePortalRoot = (): (() => HTMLElement | null) => {\n const context = inject(PortalInjectionKey, null);\n\n if (context && context.getContainer) {\n return context.getContainer;\n }\n\n // Return a function that returns null when not inside a PortalProvider\n return () => null;\n};\n","import type { UseUserReturn } from '@clerk/shared/types';\nimport { computed } from 'vue';\n\nimport type { ToComputedRefs } from '../utils';\nimport { toComputedRefs } from '../utils';\nimport { useClerkContext } from './useClerkContext';\n\ntype UseUser = () => ToComputedRefs<UseUserReturn>;\n\n/**\n * Returns the current user's [`User`](https://clerk.com/docs/reference/objects/user) object along with loading states.\n *\n * @example\n * <script setup>\n * import { useUser } from '@clerk/vue'\n *\n * const { isLoaded, isSignedIn, user } = useUser()\n * </script>\n *\n * <template>\n * <div v-if=\"!isLoaded\">\n * <!-- Handle loading state -->\n * </div>\n *\n * <div v-else-if=\"isSignedIn\">\n * Hello {{ user.fullName }}!\n * </div>\n *\n * <div v-else>\n * Not signed in\n * </div>\n * </template>\n */\nexport const useUser: UseUser = () => {\n const { userCtx } = useClerkContext('useUser');\n\n const result = computed<UseUserReturn>(() => {\n if (userCtx.value === undefined) {\n return { isLoaded: false, isSignedIn: undefined, user: undefined };\n }\n\n if (userCtx.value === null) {\n return { isLoaded: true, isSignedIn: false, user: null };\n }\n\n return { isLoaded: true, isSignedIn: true, user: userCtx.value };\n });\n\n return toComputedRefs(result);\n};\n","import type { UseSessionReturn } from '@clerk/shared/types';\nimport { computed } from 'vue';\n\nimport type { ToComputedRefs } from '../utils';\nimport { toComputedRefs } from '../utils';\nimport { useClerkContext } from './useClerkContext';\n\ntype UseSession = () => ToComputedRefs<UseSessionReturn>;\n\n/**\n * Returns the current [`Session`](https://clerk.com/docs/reference/objects/session) object which provides\n * information about the active session and methods to manage it.\n *\n * @example\n * <script setup>\n * import { useSession } from '@clerk/vue'\n *\n * const { isLoaded, session, isSignedIn } = useSession()\n * </script>\n *\n * <template>\n * <div v-if=\"!isLoaded\">\n * <!-- Handle loading state -->\n * </div>\n *\n * <div v-else-if=\"!isSignedIn\">\n * <!-- Handle not signed in state -->\n * </div>\n *\n * <div v-else>\n * <p>This session has been active since {{ session.lastActiveAt.toLocaleString() }}</p>\n * </div>\n * </template>\n */\nexport const useSession: UseSession = () => {\n const { sessionCtx, clerk } = useClerkContext('useSession');\n\n const result = computed<UseSessionReturn>(() => {\n if (sessionCtx.value === undefined) {\n return { isLoaded: false, isSignedIn: undefined, session: undefined };\n }\n\n const isSignedOut = sessionCtx.value === null;\n if (isSignedOut) {\n return { isLoaded: true, isSignedIn: false, session: null };\n }\n\n return { isLoaded: true, isSignedIn: !!clerk.value?.isSignedIn, session: sessionCtx.value };\n });\n\n return toComputedRefs(result);\n};\n","import { eventMethodCalled } from '@clerk/shared/telemetry';\nimport type { UseSignInReturn } from '@clerk/shared/types';\nimport { computed, watch } from 'vue';\n\nimport type { ToComputedRefs } from '../utils';\nimport { toComputedRefs } from '../utils';\nimport { useClerkContext } from './useClerkContext';\n\ntype UseSignIn = () => ToComputedRefs<UseSignInReturn>;\n\n/**\n * Returns the current [`SignIn`](https://clerk.com/docs/reference/objects/sign-in) object which provides\n * methods and state for managing the sign-in flow.\n *\n * @example\n * <script setup>\n * import { useSignIn } from '@clerk/vue'\n *\n * const { isLoaded, signIn } = useSignIn()\n * </script>\n *\n * <template>\n * <div v-if=\"!isLoaded\">\n * <!-- Handle loading state -->\n * </div>\n *\n * <div v-else>\n * The current sign in attempt status is {{ signIn.status }}.\n * </div>\n * </template>\n */\nexport const useSignIn: UseSignIn = () => {\n const { clerk, clientCtx } = useClerkContext('useSignIn');\n\n watch(\n clerk,\n value => {\n if (value) {\n value.telemetry?.record(eventMethodCalled('useSignIn'));\n }\n },\n { once: true },\n );\n\n const result = computed<UseSignInReturn>(() => {\n if (!clerk.value || !clientCtx.value) {\n return { isLoaded: false, signIn: undefined, setActive: undefined };\n }\n\n return {\n isLoaded: true,\n signIn: clientCtx.value.signIn,\n setActive: clerk.value.setActive,\n };\n });\n\n return toComputedRefs(result);\n};\n","import { eventMethodCalled } from '@clerk/shared/telemetry';\nimport type { UseSignUpReturn } from '@clerk/shared/types';\nimport { computed, watch } from 'vue';\n\nimport type { ToComputedRefs } from '../utils';\nimport { toComputedRefs } from '../utils';\nimport { useClerkContext } from './useClerkContext';\n\ntype UseSignUp = () => ToComputedRefs<UseSignUpReturn>;\n\n/**\n * Returns the current [`SignUp`](https://clerk.com/docs/reference/objects/sign-up) object which provides\n * methods and state for managing the sign-up flow.\n *\n * @example\n * <script setup>\n * import { useSignUp } from '@clerk/vue'\n *\n * const { isLoaded, signUp } = useSignUp()\n * </script>\n *\n * <template>\n * <div v-if=\"!isLoaded\">\n * <!-- Handle loading state -->\n * </div>\n *\n * <div v-else>\n * The current sign-up attempt status is {{ signUp.status }}.\n * </div>\n * </template>\n */\nexport const useSignUp: UseSignUp = () => {\n const { clerk, clientCtx } = useClerkContext('useSignUp');\n\n watch(\n clerk,\n value => {\n if (value) {\n value.telemetry?.record(eventMethodCalled('useSignUp'));\n }\n },\n { once: true },\n );\n\n const result = computed<UseSignUpReturn>(() => {\n if (!clerk.value || !clientCtx.value) {\n return { isLoaded: false, signUp: undefined, setActive: undefined };\n }\n\n return {\n isLoaded: true,\n signUp: clientCtx.value.signUp,\n setActive: clerk.value.setActive,\n };\n });\n\n return toComputedRefs(result);\n};\n","import type { UseSessionListReturn } from '@clerk/shared/types';\nimport { computed } from 'vue';\n\nimport type { ToComputedRefs } from '../utils';\nimport { toComputedRefs } from '../utils';\nimport { useClerkContext } from './useClerkContext';\n\ntype UseSessionList = () => ToComputedRefs<UseSessionListReturn>;\n\n/**\n * Returns an array of [`Session`](https://clerk.com/docs/reference/objects/session) objects that have been\n * registered on the client device.\n *\n * @example\n * <script setup>\n * import { useSessionList } from '@clerk/vue'\n *\n * const { isLoaded, sessions } = useSessionList()\n * </script>\n *\n * <template>\n * <div v-if=\"!isLoaded\">\n * <!-- Handle loading state -->\n * </div>\n *\n * <div v-else>\n * <p>\n * Welcome back. You have been here\n * {{ sessions.length }} times before.\n * </p>\n * </div>\n * </template>\n */\nexport const useSessionList: UseSessionList = () => {\n const { clerk, clientCtx } = useClerkContext('useSessionList');\n\n const result = computed<UseSessionListReturn>(() => {\n if (!clientCtx.value) {\n return { isLoaded: false, sessions: undefined, setActive: undefined };\n }\n\n return {\n isLoaded: true,\n sessions: clientCtx.value.sessions,\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n setActive: clerk.value!.setActive,\n };\n });\n\n return toComputedRefs(result);\n};\n","import { getCurrentOrganizationMembership } from '@clerk/shared/organization';\nimport type { OrganizationMembershipResource, OrganizationResource } from '@clerk/shared/types';\nimport { computed, watch } from 'vue';\n\nimport type { ToComputedRefs } from '../utils';\nimport { toComputedRefs } from '../utils';\nimport { useClerkContext } from './useClerkContext';\nimport { useSession } from './useSession';\n\ntype UseOrganizationReturn =\n | {\n isLoaded: false;\n organization: undefined;\n membership: undefined;\n }\n | {\n isLoaded: true;\n organization: OrganizationResource;\n membership: undefined;\n }\n | {\n isLoaded: boolean;\n organization: OrganizationResource | null;\n membership: OrganizationMembershipResource | null | undefined;\n };\n\ntype UseOrganization = () => ToComputedRefs<UseOrganizationReturn>;\n\n/**\n * Returns the current [`Organization`](https://clerk.com/docs/reference/objects/organization) object\n * along with loading states and membership information.\n *\n * @example\n * <script setup>\n * import { useOrganization } from '@clerk/vue'\n *\n * const { isLoaded, organization, membership } = useOrganization()\n * </script>\n *\n * <template>\n * <div v-if=\"!isLoaded\">\n * <!-- Handle loading state -->\n * </div>\n *\n * <div v-else-if=\"organization\">\n * <h1>{{ organization.name }}</h1>\n * <p>Your role: {{ membership.role }}</p>\n * </div>\n *\n * <div v-else>\n * No active organization\n * </div>\n * </template>\n */\nexport const useOrganization: UseOrganization = () => {\n const { loaded, clerk, organizationCtx } = useClerkContext('useOrganization');\n const { session } = useSession();\n\n watch(\n loaded,\n value => {\n if (value) {\n // Optional chaining is important for `@clerk/vue` usage with older clerk-js versions that don't have the method\n clerk.value?.__internal_attemptToEnableEnvironmentSetting?.({\n for: 'organizations',\n caller: 'useOrganization',\n });\n }\n },\n {\n once: true,\n },\n );\n\n const result = computed<UseOrganizationReturn>(() => {\n if (organizationCtx.value === undefined) {\n return { isLoaded: false, organization: undefined, membership: undefined };\n }\n\n if (organizationCtx.value === null) {\n return { isLoaded: true, organization: null, membership: null };\n }\n\n /** In SSR context we include only the organization object when loadOrg is set to true. */\n if (!loaded.value) {\n return {\n isLoaded: true,\n organization: organizationCtx.value,\n membership: undefined,\n };\n }\n\n return {\n isLoaded: loaded.value,\n organization: organizationCtx.value,\n membership: getCurrentOrganizationMembership(\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n session.value!.user.organizationMemberships,\n organizationCtx.value.id,\n ),\n };\n });\n\n return toComputedRefs(result);\n};\n","import type { LoadedClerk } from '@clerk/shared/types';\nimport { watch } from 'vue';\n\nimport { useClerk } from '../composables';\n\n/**\n * Executes a callback when Clerk is loaded.\n *\n * @param callback - Function to execute once Clerk is loaded\n * @example\n * ```ts\n * useClerkLoaded((clerk) => {\n * clerk.redirectToSignUp(props);\n * });\n * ```\n */\nexport const useClerkLoaded = (callback: (clerk: LoadedClerk) => void) => {\n const clerk = useClerk();\n\n let unwatch: (() => void) | undefined;\n // eslint-disable-next-line prefer-const\n unwatch = watch(\n clerk,\n unwrappedClerk => {\n if (!unwrappedClerk?.loaded) {\n return;\n }\n\n callback(unwrappedClerk as LoadedClerk);\n unwatch?.();\n },\n { immediate: true },\n );\n};\n","import type { ClerkOptions } from '@clerk/shared/types';\nimport type { Appearance, ExtractAppearanceType, Ui } from '@clerk/ui/internal';\n\ntype ClerkUpdateOptions<TUi extends Ui = Ui> = Pick<ClerkOptions, 'localization'> & {\n appearance?: ExtractAppearanceType<TUi, Appearance>;\n};\n\n/**\n * Updates Clerk's options at runtime.\n *\n * @param options - The Clerk options to update\n *\n * @example\n * import { frFR } from '@clerk/localizations';\n * import { dark } from '@clerk/ui/themes';\n *\n * updateClerkOptions({\n * appearance: { theme: dark },\n * localization: frFR\n * });\n */\nexport function updateClerkOptions<TUi extends Ui = Ui>(options: ClerkUpdateOptions<TUi>) {\n if (!window.Clerk) {\n throw new Error('Missing Clerk instance');\n }\n\n const updateOptions = {\n options: {\n localization: options.localization,\n },\n appearance: options.appearance,\n } as unknown as { options: any; appearance?: any };\n\n // @ts-expect-error - `__internal_updateProps` is not exposed as public API from `@clerk/types`\n void window.Clerk.__internal_updateProps(updateOptions);\n}\n","import { deprecated } from '@clerk/shared/deprecated';\nimport type {\n HandleOAuthCallbackParams,\n PendingSessionOptions,\n RedirectOptions,\n ShowWhenCondition,\n} from '@clerk/shared/types';\nimport { defineComponent, type VNodeChild } from 'vue';\n\nimport { useAuth } from '../composables/useAuth';\nimport { useClerk } from '../composables/useClerk';\nimport { useClerkContext } from '../composables/useClerkContext';\nimport { useClerkLoaded } from '../utils/useClerkLoaded';\n\nexport const ClerkLoaded = defineComponent((_, { slots }) => {\n const clerk = useClerk();\n\n return () => (clerk.value?.loaded ? slots.default?.() : null);\n});\n\nexport const ClerkLoading = defineComponent((_, { slots }) => {\n const clerk = useClerk();\n\n return () => (!clerk.value?.loaded ? slots.default?.() : null);\n});\n\nexport const RedirectToSignIn = defineComponent((props: RedirectOptions) => {\n const { sessionCtx, clientCtx } = useClerkContext('RedirectToSignIn');\n\n useClerkLoaded(clerk => {\n const hasSignedInSessions = clientCtx.value?.signedInSessions && clientCtx.value.signedInSessions.length > 0;\n\n if (sessionCtx.value === null && hasSignedInSessions) {\n void clerk.redirectToAfterSignOut();\n } else {\n void clerk.redirectToSignIn(props);\n }\n });\n\n return () => null;\n});\n\nexport const RedirectToSignUp = defineComponent((props: RedirectOptions) => {\n useClerkLoaded(clerk => {\n void clerk.redirectToSignUp(props);\n });\n\n return () => null;\n});\n\nexport const RedirectToTasks = defineComponent((props: RedirectOptions) => {\n useClerkLoaded(clerk => {\n void clerk.redirectToTasks(props);\n });\n\n return () => null;\n});\n\n/**\n * @deprecated Use [`redirectToUserProfile()`](https://clerk.com/docs/reference/objects/clerk#redirect-to-user-profile) instead.\n */\nexport const RedirectToUserProfile = defineComponent(() => {\n useClerkLoaded(clerk => {\n deprecated('RedirectToUserProfile', 'Use the `redirectToUserProfile()` method instead.');\n void clerk.redirectToUserProfile();\n });\n\n return () => null;\n});\n\n/**\n * @deprecated Use [`redirectToOrganizationProfile()`](https://clerk.com/docs/reference/objects/clerk#redirect-to-organization-profile) instead.\n */\nexport const RedirectToOrganizationProfile = defineComponent(() => {\n useClerkLoaded(clerk => {\n deprecated('RedirectToOrganizationProfile', 'Use the `redirectToOrganizationProfile()` method instead.');\n void clerk.redirectToOrganizationProfile();\n });\n\n return () => null;\n});\n\n/**\n * @deprecated Use [`redirectToCreateOrganization()`](https://clerk.com/docs/reference/objects/clerk#redirect-to-create-organization) instead.\n */\nexport const RedirectToCreateOrganization = defineComponent(() => {\n useClerkLoaded(clerk => {\n deprecated('RedirectToCreateOrganization', 'Use the `redirectToCreateOrganization()` method instead.');\n void clerk.redirectToCreateOrganization();\n });\n\n return () => null;\n});\n\nexport const AuthenticateWithRedirectCallback = defineComponent((props: HandleOAuthCallbackParams) => {\n useClerkLoaded(clerk => {\n void clerk.handleRedirectCallback(props);\n });\n\n return () => null;\n});\n\n/**\n * Props for `<Show>` that control when content renders based on sign-in or authorization state.\n *\n * @public\n * @property fallback Optional content shown when the condition fails; can be provided via prop or `fallback` slot.\n * @property when Condition controlling visibility; supports `\"signed-in\"`, `\"signed-out\"`, authorization descriptors, or a predicate that receives the `has` helper.\n * @property treatPendingAsSignedOut Inherited from `PendingSessionOptions`; treat pending sessions as signed out while loading.\n * @example\n * ```vue\n * <Show :when=\"{ role: 'admin' }\" fallback=\"Access denied\">\n * <AdminPanel />\n * </Show>\n *\n * <Show :when=\"(has) => has({ permission: 'org:read' })\">\n * <template #fallback>Not authorized</template>\n * <ProtectedFeature />\n * </Show>\n * ```\n */\nexport type ShowProps = PendingSessionOptions & { fallback?: unknown; when: ShowWhenCondition };\n\nexport const Show = defineComponent((props: ShowProps, { slots }) => {\n const { isLoaded, has, userId } = useAuth({ treatPendingAsSignedOut: props.treatPendingAsSignedOut });\n\n return () => {\n /**\n * Avoid flickering children or fallback while clerk is loading sessionId or userId\n */\n if (!isLoaded.value) {\n return null;\n }\n\n const authorized = (slots.default?.() ?? null) as VNodeChild | null;\n const fallbackFromSlot = slots.fallback?.() ?? null;\n const fallbackFromProp = (props.fallback as VNodeChild | null | undefined) ?? null;\n const unauthorized = (fallbackFromSlot ?? fallbackFromProp ?? null) as VNodeChild | null;\n\n if (props.when === 'signed-out') {\n return userId.value ? unauthorized : authorized;\n }\n\n if (!userId.value) {\n return unauthorized;\n }\n\n if (props.when === 'signed-in') {\n return authorized;\n }\n\n const hasValue = has.value;\n\n if (!hasValue) {\n return unauthorized;\n }\n\n if (typeof props.when === 'function') {\n return props.when(hasValue) ? authorized : unauthorized;\n }\n\n return hasValue(props.when) ? authorized : unauthorized;\n };\n});\n","import type { PropType } from 'vue';\nimport { defineComponent, h, onUnmounted, ref, watch, watchEffect } from 'vue';\n\nimport { usePortalRoot } from '../composables/usePortalRoot';\nimport type { CustomPortalsRendererProps } from '../types';\nimport { ClerkLoaded } from './controlComponents';\n\ntype AnyObject = Record<string, any>;\n\nexport const CustomPortalsRenderer = defineComponent((props: CustomPortalsRendererProps) => {\n return () => [...(props?.customPagesPortals ?? []), ...(props?.customMenuItemsPortals ?? [])];\n});\n\n/**\n * Used to orchestrate mounting of Clerk components in a host Vue application.\n * Components are rendered into a specific DOM node using mount/unmount methods provided by the Clerk class.\n */\nexport const ClerkHostRenderer = defineComponent({\n props: {\n mount: {\n type: Function as PropType<(node: HTMLDivElement, props: AnyObject) => void>,\n required: false,\n },\n unmount: {\n type: Function as PropType<(node: HTMLDivElement) => void>,\n required: false,\n },\n open: {\n type: Function as PropType<(props: AnyObject) => void>,\n required: false,\n },\n close: {\n type: Function as PropType<() => void>,\n required: false,\n },\n updateProps: {\n type: Function as PropType<(props: { node: HTMLDivElement; props: AnyObject | undefined }) => void>,\n required: false,\n },\n props: {\n type: Object,\n required: false,\n default: () => ({}),\n },\n },\n setup(props) {\n const portalRef = ref<HTMLDivElement | null>(null);\n const getContainer = usePortalRoot();\n let isPortalMounted = false;\n\n watchEffect(() => {\n // Skip if portal element isn't ready or component is already mounted\n if (!portalRef.value || isPortalMounted) {\n return;\n }\n\n const propsWithContainer = {\n ...props.props,\n getContainer,\n };\n\n if (props.mount) {\n props.mount(portalRef.value, propsWithContainer);\n }\n if (props.open) {\n props.open(propsWithContainer);\n }\n isPortalMounted = true;\n });\n\n watch(\n () => props.props,\n newProps => {\n if (isPortalMounted && props.updateProps && portalRef.value) {\n const propsWithContainer = {\n ...newProps,\n getContainer,\n };\n props.updateProps({ node: portalRef.value, props: propsWithContainer });\n }\n },\n { deep: true },\n );\n\n onUnmounted(() => {\n if (isPortalMounted && portalRef.value) {\n if (props.unmount) {\n props.unmount(portalRef.value);\n }\n if (props.close) {\n props.close();\n }\n }\n });\n\n return () => h(ClerkLoaded, () => h('div', { ref: portalRef }));\n },\n});\n","<script setup lang=\"ts\">\nimport { ClerkHostRenderer } from '../ClerkHostRenderer';\nimport { useClerk } from '../../composables';\nimport type { SignInProps } from '@clerk/shared/types';\nimport { getCurrentInstance } from 'vue';\n\nconst clerk = useClerk();\n\ndefineProps<SignInProps>();\n\n// Hacking our way to get actual initial uncasted boolean props as vue-tsc\n// is having a hard time with SignInProps type and withDefaults()\nconst currentInstance = getCurrentInstance();\n\nconst hasInitialTransferable = 'transferable' in (currentInstance?.vnode.props ?? {});\nconst hasInitialWithSignUp = 'withSignUp' in (currentInstance?.vnode.props ?? {});\n</script>\n\n<template>\n <ClerkHostRenderer\n :mount=\"clerk?.mountSignIn\"\n :unmount=\"clerk?.unmountSignIn\"\n :props=\"{\n ...$props,\n transferable: hasInitialTransferable ? $props.transferable : undefined,\n withSignUp: hasInitialWithSignUp ? $props.withSignUp : undefined,\n }\"\n :update-props=\"(clerk as any)?.__internal_updateProps\"\n />\n</template>\n","<script setup lang=\"ts\">\nimport { ClerkHostRenderer } from '../ClerkHostRenderer';\nimport { useClerk } from '../../composables';\nimport type { SignUpProps } from '@clerk/shared/types';\n\nconst clerk = useClerk();\n\nconst props = defineProps<SignUpProps>();\n</script>\n\n<template>\n <ClerkHostRenderer\n :mount=\"clerk?.mountSignUp\"\n :unmount=\"clerk?.unmountSignUp\"\n :props=\"props\"\n :update-props=\"(clerk as any)?.__internal_updateProps\"\n />\n</template>\n","<script setup lang=\"ts\">\nimport { ClerkHostRenderer } from '../ClerkHostRenderer';\nimport { useClerk } from '../../composables';\nimport type { GoogleOneTapProps } from '@clerk/shared/types';\n\nconst clerk = useClerk();\n\nconst props = withDefaults(defineProps<GoogleOneTapProps>(), {\n cancelOnTapOutside: true,\n itpSupport: true,\n fedCmSupport: true,\n});\n</script>\n\n<template>\n <ClerkHostRenderer\n :open=\"clerk?.openGoogleOneTap\"\n :close=\"clerk?.closeGoogleOneTap\"\n :props=\"props\"\n />\n</template>\n","<script setup lang=\"ts\">\nimport { ClerkHostRenderer } from '../ClerkHostRenderer';\nimport type { WaitlistProps } from '@clerk/shared/types';\nimport { useClerk } from '../../composables';\n\nconst clerk = useClerk();\nconst props = defineProps<WaitlistProps>();\n</script>\n\n<template>\n <ClerkHostRenderer\n :mount=\"clerk?.mountWaitlist\"\n :unmount=\"clerk?.unmountWaitlist\"\n :update-props=\"(clerk as any)?.__internal_updateProps\"\n :props=\"props\"\n />\n</template>\n","<script setup lang=\"ts\">\nimport { ClerkHostRenderer } from '../ClerkHostRenderer';\nimport { useClerk } from '../../composables';\nimport type { CreateOrganizationProps } from '@clerk/shared/types';\n\nconst clerk = useClerk();\nconst props = defineProps<CreateOrganizationProps>();\n</script>\n\n<template>\n <ClerkHostRenderer\n :mount=\"clerk?.mountCreateOrganization\"\n :unmount=\"clerk?.unmountCreateOrganization\"\n :update-props=\"(clerk as any)?.__internal_updateProps\"\n :props=\"props\"\n />\n</template>\n","<script setup lang=\"ts\">\nimport { useClerk } from '../../composables';\nimport type { OrganizationListProps } from '@clerk/shared/types';\nimport { ClerkHostRenderer } from '../ClerkHostRenderer';\n\nconst clerk = useClerk();\nconst props = defineProps<OrganizationListProps>();\n</script>\n\n<template>\n <ClerkHostRenderer\n :mount=\"clerk?.mountOrganizationList\"\n :unmount=\"clerk?.unmountOrganizationList\"\n :update-props=\"(clerk as any)?.__internal_updateProps\"\n :props=\"props\"\n />\n</template>\n","<script setup lang=\"ts\">\nimport { ClerkHostRenderer } from '../ClerkHostRenderer';\nimport type { PricingTableProps } from '@clerk/shared/types';\nimport { useClerk } from '../../composables';\n\nconst clerk = useClerk();\nconst props = defineProps<PricingTableProps>();\n</script>\n\n<template>\n <ClerkHostRenderer\n :mount=\"clerk?.mountPricingTable\"\n :unmount=\"clerk?.unmountPricingTable\"\n :update-props=\"(clerk as any)?.__internal_updateProps\"\n :props=\"props\"\n />\n</template>\n","<script setup lang=\"ts\">\nimport { ClerkHostRenderer } from '../ClerkHostRenderer';\nimport type { APIKeysProps } from '@clerk/shared/types';\nimport { useClerk } from '../../composables';\n\nconst clerk = useClerk();\nconst props = defineProps<APIKeysProps>();\n</script>\n\n<template>\n <ClerkHostRenderer\n :mount=\"clerk?.mountAPIKeys\"\n :unmount=\"clerk?.unmountAPIKeys\"\n :update-props=\"(clerk as any)?.__internal_updateProps\"\n :props=\"props\"\n />\n</template>\n","<script setup lang=\"ts\">\nimport { ClerkHostRenderer } from '../ClerkHostRenderer';\nimport type { OAuthConsentProps } from '@clerk/shared/types';\nimport { useClerk } from '../../composables';\n\nconst clerk = useClerk();\nconst props = defineProps<OAuthConsentProps>();\n</script>\n\n<template>\n <ClerkHostRenderer\n :mount=\"clerk?.mountOAuthConsent\"\n :unmount=\"clerk?.unmountOAuthConsent\"\n :update-props=\"(clerk as any)?.__internal_updateProps\"\n :props=\"props\"\n />\n</template>\n","<script setup lang=\"ts\">\nimport { computed, provide } from 'vue';\nimport { useOrganizationProfileCustomPages } from '../../../utils/useCustomPages';\nimport { useClerk } from '../../../composables';\nimport type { OrganizationProfileProps } from '@clerk/shared/types';\nimport { OrganizationProfileInjectionKey } from '../../../keys';\nimport { ClerkHostRenderer, CustomPortalsRenderer } from '../../ClerkHostRenderer';\n\ntype Props = Omit<OrganizationProfileProps, 'customPages'>;\nconst props = defineProps<Props>();\n\nconst clerk = useClerk();\n\nconst { customPages, customPagesPortals, addCustomPage } = useOrganizationProfileCustomPages();\n\nconst finalProps = computed(() => ({\n ...props,\n customPages: customPages.value,\n}));\n\nprovide(OrganizationProfileInjectionKey, {\n addCustomPage,\n});\n</script>\n\n<template>\n <ClerkHostRenderer\n :mount=\"clerk?.mountOrganizationProfile\"\n :unmount=\"clerk?.unmountOrganizationProfile\"\n :props=\"finalProps\"\n :update-props=\"(clerk as any)?.__internal_updateProps\"\n />\n <CustomPortalsRenderer :custom-pages-portals=\"customPagesPortals\" />\n <slot />\n</template>\n","import { defineComponent, inject } from 'vue';\n\nimport { errorThrower } from '../../../errors/errorThrower';\nimport { organizationProfileLinkRenderedError, organizationProfilePageRenderedError } from '../../../errors/messages';\nimport { OrganizationProfileInjectionKey } from '../../../keys';\nimport type { OrganizationLinkProps, OrganizationProfilePageProps } from '../../../types';\nimport _OrganizationProfile from './OrganizationProfile.vue';\n\nexport const OrganizationProfilePage = defineComponent(\n (props: OrganizationProfilePageProps, { slots }) => {\n const ctx = inject(OrganizationProfileInjectionKey);\n if (!ctx) {\n return errorThrower.throw(organizationProfilePageRenderedError);\n }\n\n ctx.addCustomPage({\n props,\n slots,\n component: OrganizationProfilePage,\n });\n\n return () => null;\n },\n { name: 'OrganizationProfilePage' },\n);\n\nexport const OrganizationProfileLink = defineComponent(\n (props: OrganizationLinkProps, { slots }) => {\n const ctx = inject(OrganizationProfileInjectionKey);\n if (!ctx) {\n return errorThrower.throw(organizationProfileLinkRenderedError);\n }\n\n ctx.addCustomPage({\n props,\n slots,\n component: OrganizationProfileLink,\n });\n\n return () => null;\n },\n { name: 'OrganizationProfileLink' },\n);\n\nexport const OrganizationProfile = Object.assign(_OrganizationProfile, {\n Page: OrganizationProfilePage,\n Link: OrganizationProfileLink,\n});\n","import { type Component } from 'vue';\n\nexport const isThatComponent = (v: any, component: Component): v is Component => {\n return !!v && isRenderFunction(v) && v.name === component.name;\n};\n\nconst isRenderFunction = (v: any): v is Component => {\n return 'name' in v && 'setup' in v;\n};\n","import type { Slot } from 'vue';\nimport { computed, h, ref, Teleport } from 'vue';\n\ninterface RawPortal {\n id: string;\n el: HTMLDivElement;\n slot: Slot;\n}\n\nfunction generateElementIdentifier() {\n return Math.random().toString(36).substring(2, 7);\n}\n\nexport const useCustomElementPortal = () => {\n const rawPortals = ref<RawPortal[]>([]);\n const portals = computed(() => {\n return rawPortals.value.map(item => {\n return h(Teleport, { to: item.el }, item.slot());\n });\n });\n\n const mount = (el: HTMLDivElement, slot: Slot) => {\n const id = generateElementIdentifier();\n el.setAttribute('data-clerk-mount-id', id);\n rawPortals.value.push({\n id,\n el,\n slot,\n });\n };\n\n const unmount = (el: HTMLDivElement | undefined) => {\n const id = el?.getAttribute('data-clerk-mount-id');\n if (id) {\n const index = rawPortals.value.findIndex(portal => portal.id === id);\n if (index !== -1) {\n rawPortals.value.splice(index, 1);\n }\n }\n };\n\n return {\n portals,\n mount,\n unmount,\n };\n};\n","import type { CustomPage } from '@clerk/shared/types';\nimport { logErrorInDevMode } from '@clerk/shared/utils';\nimport type { Component } from 'vue';\nimport { ref } from 'vue';\n\nimport { OrganizationProfileLink, OrganizationProfilePage } from '../components/ui-components/OrganizationProfile';\nimport { UserProfileLink, UserProfilePage } from '../components/ui-components/UserProfile';\nimport { customLinkWrongProps, customPageWrongProps } from '../errors/messages';\nimport type { AddCustomPagesParams } from '../types';\nimport { isThatComponent } from './componentValidation';\nimport { useCustomElementPortal } from './useCustomElementPortal';\n\nexport const useUserProfileCustomPages = () => {\n const { customPages, customPagesPortals, addCustomPage } = useCustomPages({\n reorderItemsLabels: ['account', 'security', 'billing', 'apiKeys'],\n PageComponent: UserProfilePage,\n LinkComponent: UserProfileLink,\n componentName: 'UserProfile',\n });\n\n const addUserProfileCustomPage = (params: AddCustomPagesParams) => {\n return addCustomPage(params);\n };\n\n return {\n customPages,\n customPagesPortals,\n addCustomPage: addUserProfileCustomPage,\n };\n};\n\nexport const useOrganizationProfileCustomPages = () => {\n const { customPages, customPagesPortals, addCustomPage } = useCustomPages({\n reorderItemsLabels: ['general', 'members', 'billing', 'apiKeys'],\n PageComponent: OrganizationProfilePage,\n LinkComponent: OrganizationProfileLink,\n componentName: 'OrganizationProfile',\n });\n\n const addOrganizationProfileCustomPage = (params: AddCustomPagesParams) => {\n return addCustomPage(params);\n };\n\n return {\n customPages,\n customPagesPortals,\n addCustomPage: addOrganizationProfileCustomPage,\n };\n};\n\ntype UseCustomPagesParams = {\n LinkComponent: Component;\n PageComponent: Component;\n reorderItemsLabels: string[];\n componentName: string;\n};\n\nexport const useCustomPages = (customPagesParams: UseCustomPagesParams) => {\n const customPages = ref<CustomPage[]>([]);\n const { portals: customPagesPortals, mount, unmount } = useCustomElementPortal();\n const { PageComponent, LinkComponent, reorderItemsLabels, componentName } = customPagesParams;\n\n const addCustomPage = (params: AddCustomPagesParams) => {\n const { props, slots, component } = params;\n const { label, url } = props;\n\n if (isThatComponent(component, PageComponent)) {\n if (isReorderItem(props, slots, reorderItemsLabels)) {\n // This is a reordering item\n customPages.value.push({ label });\n } else if (isCustomPage(props, slots)) {\n // This is a custom page\n customPages.value.push({\n label,\n url,\n mountIcon(el) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n mount(el, slots.labelIcon!);\n },\n unmountIcon: unmount,\n mount(el) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n mount(el, slots.default!);\n },\n unmount,\n });\n } else {\n logErrorInDevMode(customPageWrongProps(componentName));\n return;\n }\n }\n\n if (isThatComponent(component, LinkComponent)) {\n if (isExternalLink(props, slots)) {\n // This is an external link\n customPages.value.push({\n label,\n url,\n mountIcon(el) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n mount(el, slots.labelIcon!);\n },\n unmountIcon: unmount,\n });\n } else {\n logErrorInDevMode(customLinkWrongProps(componentName));\n return;\n }\n }\n };\n\n return {\n customPages,\n customPagesPortals,\n addCustomPage,\n };\n};\n\nconst isReorderItem = (props: any, slots: AddCustomPagesParams['slots'], validItems: string[]): boolean => {\n const { label, url } = props;\n const { default: defaultSlot, labelIcon } = slots;\n return !defaultSlot && !url && !labelIcon && validItems.some(v => v === label);\n};\n\nconst isCustomPage = (props: any, slots: AddCustomPagesParams['slots']): boolean => {\n const { label, url } = props;\n const { default: defaultSlot, labelIcon } = slots;\n return !!defaultSlot && !!url && !!labelIcon && !!label;\n};\n\nconst isExternalLink = (props: any, slots: AddCustomPagesParams['slots']): boolean => {\n const { label, url } = props;\n const { default: defaultSlot, labelIcon } = slots;\n return !defaultSlot && !!url && !!labelIcon && !!label;\n};\n","<script setup lang=\"ts\">\nimport { useClerk } from '../../../composables';\nimport type { UserProfileProps } from '@clerk/shared/types';\nimport { ClerkHostRenderer, CustomPortalsRenderer } from '../../ClerkHostRenderer';\nimport { computed, provide } from 'vue';\nimport { UserProfileInjectionKey } from '../../../keys';\nimport { useUserProfileCustomPages } from '../../../utils/useCustomPages';\n\ntype Props = Omit<UserProfileProps, 'customPages'>;\nconst props = defineProps<Props>();\n\nconst clerk = useClerk();\nconst { customPages, customPagesPortals, addCustomPage } = useUserProfileCustomPages();\n\nconst finalProps = computed(() => ({\n ...props,\n customPages: customPages.value,\n}));\n\nprovide(UserProfileInjectionKey, {\n addCustomPage,\n});\n</script>\n\n<template>\n <ClerkHostRenderer\n :mount=\"clerk?.mountUserProfile\"\n :unmount=\"clerk?.unmountUserProfile\"\n :props=\"finalProps\"\n :update-props=\"(clerk as any)?.__internal_updateProps\"\n />\n <CustomPortalsRenderer :custom-pages-portals=\"customPagesPortals\" />\n <slot />\n</template>\n","import { defineComponent, inject } from 'vue';\n\nimport { errorThrower } from '../../../errors/errorThrower';\nimport { userProfileLinkRenderedError, userProfilePageRenderedError } from '../../../errors/messages';\nimport { UserProfileInjectionKey } from '../../../keys';\nimport type { UserProfileLinkProps, UserProfilePageProps } from '../../../types';\nimport _UserProfile from './UserProfile.vue';\n\nexport const UserProfilePage = defineComponent(\n (props: UserProfilePageProps, { slots }) => {\n const ctx = inject(UserProfileInjectionKey);\n if (!ctx) {\n return errorThrower.throw(userProfilePageRenderedError);\n }\n\n ctx.addCustomPage({\n props,\n slots,\n component: UserProfilePage,\n });\n\n return () => null;\n },\n { name: 'UserProfilePage' },\n);\n\nexport const UserProfileLink = defineComponent(\n (props: UserProfileLinkProps, { slots }) => {\n const ctx = inject(UserProfileInjectionKey);\n if (!ctx) {\n return errorThrower.throw(userProfileLinkRenderedError);\n }\n\n ctx.addCustomPage({\n props,\n slots,\n component: UserProfileLink,\n });\n\n return () => null;\n },\n { name: 'UserProfileLink' },\n);\n\nexport const UserProfile = Object.assign(_UserProfile, {\n Page: UserProfilePage,\n Link: UserProfileLink,\n});\n","<script setup lang=\"ts\">\nimport { useClerk } from '../../../composables';\nimport type { OrganizationSwitcherProps, OrganizationProfileProps } from '@clerk/shared/types';\nimport { ClerkHostRenderer, CustomPortalsRenderer } from '../../ClerkHostRenderer';\nimport { useOrganizationProfileCustomPages } from '../../../utils/useCustomPages';\nimport { computed, provide } from 'vue';\nimport { OrganizationProfileInjectionKey } from '../../../keys';\n\nconst clerk = useClerk();\n\ntype Props = Omit<OrganizationSwitcherProps, 'organizationProfileProps' | '__experimental_asStandalone'> & {\n organizationProfileProps?: Pick<OrganizationProfileProps, 'appearance'>;\n};\nconst props = defineProps<Props>();\n\nconst { customPages, customPagesPortals, addCustomPage } = useOrganizationProfileCustomPages();\n\nconst finalProps = computed<Props>(() => ({\n ...props,\n organizationProfileProps: {\n ...(props.organizationProfileProps || {}),\n customPages: customPages.value,\n },\n}));\n\nprovide(OrganizationProfileInjectionKey, {\n addCustomPage,\n});\n</script>\n\n<template>\n <ClerkHostRenderer\n :mount=\"clerk?.mountOrganizationSwitcher\"\n :unmount=\"clerk?.unmountOrganizationSwitcher\"\n :update-props=\"(clerk as any)?.__internal_updateProps\"\n :props=\"finalProps\"\n />\n <CustomPortalsRenderer :custom-pages-portals=\"customPagesPortals\" />\n <slot />\n</template>\n","import { OrganizationProfileLink, OrganizationProfilePage } from '../OrganizationProfile';\nimport _OrganizationSwitcher from './OrganizationSwitcher.vue';\n\nexport const OrganizationSwitcher = Object.assign(_OrganizationSwitcher, {\n OrganizationProfilePage,\n OrganizationProfileLink,\n});\n","<script setup lang=\"ts\">\nimport { ClerkHostRenderer } from '../ClerkHostRenderer';\nimport type { UserAvatarProps } from '@clerk/shared/types';\nimport { useClerk } from '../../composables';\n\nconst clerk = useClerk();\nconst props = defineProps<UserAvatarProps>();\n</script>\n\n<template>\n <ClerkHostRenderer\n :mount=\"clerk?.mountUserAvatar\"\n :unmount=\"clerk?.unmountUserAvatar\"\n :update-props=\"(clerk as any)?.__internal_updateProps\"\n :props=\"props\"\n />\n</template>\n","import type { CustomMenuItem } from '@clerk/shared/types';\nimport { logErrorInDevMode } from '@clerk/shared/utils';\nimport { ref } from 'vue';\n\nimport { MenuAction, MenuLink } from '../components/ui-components/UserButton';\nimport { userButtonMenuItemActionWrongProps, userButtonMenuItemLinkWrongProps } from '../errors/messages';\nimport type { AddCustomMenuItemParams, UserButtonActionProps, UserButtonLinkProps } from '../types';\nimport { isThatComponent } from './componentValidation';\nimport { useCustomElementPortal } from './useCustomElementPortal';\n\nexport const useUserButtonCustomMenuItems = () => {\n const customMenuItems = ref<CustomMenuItem[]>([]);\n const { portals: customMenuItemsPortals, mount, unmount } = useCustomElementPortal();\n const reorderItemsLabels = ['manageAccount', 'signOut'];\n\n function addCustomMenuItem(params: AddCustomMenuItemParams) {\n const { props, component, slots } = params;\n const { label, onClick, open, href } = props;\n\n if (isThatComponent(component, MenuAction)) {\n if (isReorderItem(props, slots, reorderItemsLabels)) {\n // This is a reordering item\n customMenuItems.value.push({ label });\n } else if (isCustomMenuItem(props, slots)) {\n const baseItem: CustomMenuItem = {\n label,\n mountIcon(el) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n mount(el, slots.labelIcon!);\n },\n unmountIcon: unmount,\n };\n\n if (onClick !== undefined) {\n customMenuItems.value.push({\n ...baseItem,\n onClick,\n open,\n });\n } else if (open !== undefined) {\n customMenuItems.value.push({\n ...baseItem,\n open: open.startsWith('/') ? open : `/${open}`,\n });\n } else {\n // Handle the case where neither onClick nor open is defined\n logErrorInDevMode('Custom menu item must have either onClick or open property');\n return;\n }\n } else {\n logErrorInDevMode(userButtonMenuItemActionWrongProps);\n return;\n }\n }\n\n if (isThatComponent(component, MenuLink)) {\n if (isExternalLink(props, slots)) {\n customMenuItems.value.push({\n label,\n href,\n mountIcon(el) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n mount(el, slots.labelIcon!);\n },\n unmountIcon: unmount,\n });\n } else {\n logErrorInDevMode(userButtonMenuItemLinkWrongProps);\n return;\n }\n }\n }\n\n return {\n customMenuItems,\n customMenuItemsPortals,\n addCustomMenuItem,\n };\n};\n\nconst isReorderItem = (props: any, slots: AddCustomMenuItemParams['slots'], validItems: string[]): boolean => {\n const { label, onClick } = props;\n const { labelIcon } = slots;\n return !onClick && !labelIcon && validItems.some(v => v === label);\n};\n\nconst isCustomMenuItem = (props: any, slots: AddCustomMenuItemParams['slots']): props is UserButtonActionProps => {\n const { label, onClick, open } = props;\n const { labelIcon } = slots;\n return !!labelIcon && !!label && (typeof onClick === 'function' || typeof open === 'string');\n};\n\nconst isExternalLink = (props: any, slots: AddCustomMenuItemParams['slots']): props is UserButtonLinkProps => {\n const { label, href } = props;\n const { labelIcon } = slots;\n return !!href && !!labelIcon && !!label;\n};\n","<script setup lang=\"ts\">\nimport { useClerk } from '../../../composables';\nimport type { UserButtonProps, UserProfileProps } from '@clerk/shared/types';\nimport { ClerkHostRenderer, CustomPortalsRenderer } from '../../ClerkHostRenderer';\nimport { computed, provide } from 'vue';\nimport { UserButtonInjectionKey, UserProfileInjectionKey } from '../../../keys';\nimport { useUserProfileCustomPages } from '../../../utils/useCustomPages';\nimport { useUserButtonCustomMenuItems } from '../../../utils/useCustomMenuItems';\n\ntype Props = Omit<UserButtonProps, 'userProfileProps' | 'customMenuItems'> & {\n userProfileProps?: Pick<UserProfileProps, 'additionalOAuthScopes' | 'appearance' | 'apiKeysProps'>;\n};\nconst props = defineProps<Props>();\n\nconst clerk = useClerk();\n\nconst { customMenuItems, customMenuItemsPortals, addCustomMenuItem } = useUserButtonCustomMenuItems();\nconst { customPages, customPagesPortals, addCustomPage } = useUserProfileCustomPages();\n\nconst finalProps = computed<Props>(() => ({\n ...props,\n userProfileProps: {\n ...(props.userProfileProps || {}),\n customPages: customPages.value,\n },\n customMenuItems: customMenuItems.value,\n}));\n\nprovide(UserButtonInjectionKey, {\n addCustomMenuItem,\n});\nprovide(UserProfileInjectionKey, {\n addCustomPage,\n});\n</script>\n\n<template>\n <ClerkHostRenderer\n :mount=\"clerk?.mountUserButton\"\n :unmount=\"clerk?.unmountUserButton\"\n :props=\"finalProps\"\n :update-props=\"(clerk as any)?.__internal_updateProps\"\n />\n <CustomPortalsRenderer\n :custom-pages-portals=\"customPagesPortals\"\n :custom-menu-items-portals=\"customMenuItemsPortals\"\n />\n <slot />\n</template>\n","import { defineComponent, inject, provide } from 'vue';\n\nimport { errorThrower } from '../../../errors/errorThrower';\nimport {\n userButtonMenuActionRenderedError,\n userButtonMenuItemsRenderedError,\n userButtonMenuLinkRenderedError,\n} from '../../../errors/messages';\nimport { UserButtonInjectionKey, UserButtonMenuItemsInjectionKey } from '../../../keys';\nimport type { UserButtonActionProps, UserButtonLinkProps } from '../../../types';\nimport { UserProfileLink, UserProfilePage } from '../UserProfile';\nimport _UserButton from './UserButton.vue';\n\nconst MenuItems = defineComponent((_, { slots }) => {\n const ctx = inject(UserButtonInjectionKey);\n\n if (!ctx) {\n return errorThrower.throw(userButtonMenuItemsRenderedError);\n }\n\n provide(UserButtonMenuItemsInjectionKey, ctx);\n return () => slots.default?.();\n});\n\nexport const MenuAction = defineComponent(\n (props: UserButtonActionProps, { slots }) => {\n const ctx = inject(UserButtonMenuItemsInjectionKey);\n if (!ctx) {\n return errorThrower.throw(userButtonMenuActionRenderedError);\n }\n\n ctx.addCustomMenuItem({\n props,\n slots,\n component: MenuAction,\n });\n\n return () => null;\n },\n { name: 'MenuAction' },\n);\n\nexport const MenuLink = defineComponent(\n (props: UserButtonLinkProps, { slots }) => {\n const ctx = inject(UserButtonMenuItemsInjectionKey);\n if (!ctx) {\n return errorThrower.throw(userButtonMenuLinkRenderedError);\n }\n\n ctx.addCustomMenuItem({\n props,\n slots,\n component: MenuLink,\n });\n\n return () => null;\n },\n { name: 'MenuLink' },\n);\n\nexport const UserButton = Object.assign(_UserButton, {\n MenuItems,\n Action: MenuAction,\n Link: MenuLink,\n UserProfilePage,\n UserProfileLink,\n});\n","<script setup lang=\"ts\">\nimport { useAttrs, useSlots } from 'vue';\nimport type { SignInButtonProps } from '@clerk/shared/types';\nimport { useClerk } from '../composables/useClerk';\nimport { assertSingleChild, normalizeWithDefaultValue } from '../utils';\n\nconst props = defineProps<SignInButtonProps>();\n\nconst clerk = useClerk();\nconst slots = useSlots();\nconst attrs = useAttrs();\n\nfunction getChildComponent() {\n const children = normalizeWithDefaultValue(slots.default?.({}), 'Sign in');\n return assertSingleChild(children, 'SignInButton');\n}\n\nfunction clickHandler() {\n const { mode, ...opts } = props;\n\n if (mode === 'modal') {\n return clerk.value?.openSignIn({ ...opts, appearance: props.appearance });\n }\n\n const { withSignUp, ...redirectOpts } = opts;\n\n void clerk.value?.redirectToSignIn({\n ...redirectOpts,\n signInFallbackRedirectUrl: props.fallbackRedirectUrl,\n signInForceRedirectUrl: props.forceRedirectUrl,\n });\n}\n</script>\n\n<template>\n <component\n :is=\"getChildComponent\"\n v-bind=\"attrs\"\n @click=\"clickHandler\"\n >\n <slot />\n </component>\n</template>\n","<script setup lang=\"ts\">\nimport { useAttrs, useSlots } from 'vue';\nimport type { SignUpButtonProps } from '@clerk/shared/types';\nimport { useClerk } from '../composables/useClerk';\nimport { assertSingleChild, normalizeWithDefaultValue } from '../utils';\n\nconst props = defineProps<SignUpButtonProps>();\n\nconst clerk = useClerk();\nconst slots = useSlots();\nconst attrs = useAttrs();\n\nfunction getChildComponent() {\n const children = normalizeWithDefaultValue(slots.default?.({}), 'Sign up');\n return assertSingleChild(children, 'SignUpButton');\n}\n\nfunction clickHandler() {\n const { mode, ...opts } = props;\n\n if (mode === 'modal') {\n return clerk.value?.openSignUp({ ...opts, appearance: props.appearance });\n }\n\n void clerk.value?.redirectToSignUp({\n ...opts,\n signUpFallbackRedirectUrl: props.fallbackRedirectUrl,\n signUpForceRedirectUrl: props.forceRedirectUrl,\n });\n}\n</script>\n\n<template>\n <component\n :is=\"getChildComponent\"\n v-bind=\"attrs\"\n @click=\"clickHandler\"\n >\n <slot />\n </component>\n</template>\n","<script setup lang=\"ts\">\nimport { useAttrs, useSlots } from 'vue';\nimport { deprecated } from '@clerk/shared/deprecated';\nimport type { SignOutOptions } from '@clerk/shared/types';\nimport { useClerk } from '../composables/useClerk';\nimport { assertSingleChild, normalizeWithDefaultValue } from '../utils';\n\ninterface SignOutButtonProps {\n /**\n * @deprecated Use the `redirectUrl` and `sessionId` props directly instead.\n */\n signOutOptions?: SignOutOptions;\n sessionId?: string;\n redirectUrl?: string;\n}\n\nconst props = defineProps<SignOutButtonProps>();\n\nconst clerk = useClerk();\nconst slots = useSlots();\nconst attrs = useAttrs();\n\nfunction getChildComponent() {\n const children = normalizeWithDefaultValue(slots.default?.({}), 'Sign out');\n return assertSingleChild(children, 'SignOutButton');\n}\n\nfunction clickHandler() {\n if (props.signOutOptions) {\n deprecated('SignOutButton `signOutOptions`', 'Use the `redirectUrl` and `sessionId` props directly instead.');\n }\n\n const signOutOptions: SignOutOptions = {\n redirectUrl: props.signOutOptions?.redirectUrl ?? props.redirectUrl,\n sessionId: props.signOutOptions?.sessionId ?? props.sessionId,\n };\n void clerk.value?.signOut(signOutOptions);\n}\n</script>\n\n<template>\n <component\n :is=\"getChildComponent\"\n v-bind=\"attrs\"\n @click=\"clickHandler\"\n >\n <slot />\n </component>\n</template>\n","<script setup lang=\"ts\">\nimport { useAttrs, useSlots } from 'vue';\nimport type { RedirectUrlProp } from '@clerk/shared/types';\nimport { useClerk } from '../composables/useClerk';\nimport { assertSingleChild, normalizeWithDefaultValue } from '../utils';\n\ntype Props = RedirectUrlProp & {\n mode?: 'modal' | 'redirect';\n};\n\nconst props = defineProps<Props>();\n\nconst clerk = useClerk();\nconst slots = useSlots();\nconst attrs = useAttrs();\n\nfunction getChildComponent() {\n const children = normalizeWithDefaultValue(slots.default?.({}), 'Sign in with Metamask');\n return assertSingleChild(children, 'SignInWithMetamaskButton');\n}\n\nfunction clickHandler() {\n void clerk.value?.authenticateWithMetamask({ redirectUrl: props.redirectUrl || undefined });\n}\n</script>\n\n<template>\n <component\n :is=\"getChildComponent\"\n v-bind=\"attrs\"\n @click=\"clickHandler\"\n >\n <slot />\n </component>\n</template>\n","import { defineComponent, type PropType, provide } from 'vue';\n\nimport { PortalInjectionKey } from '../keys';\n\n/**\n * UNSAFE_PortalProvider allows you to specify a custom container for Clerk floating UI elements\n * (popovers, modals, tooltips, etc.) that use portals.\n *\n * Only components within this provider will be affected. Components outside the provider\n * will continue to use the default document.body for portals.\n *\n * This is particularly useful when using Clerk components inside external UI libraries\n * like Reka UI Dialog, where portaled elements need to render within the dialog's\n * container to remain interactable.\n *\n * @example\n * ```vue\n * <script setup>\n * import { useTemplateRef } from 'vue';\n * import { DialogContent } from 'reka-ui';\n * import { UNSAFE_PortalProvider, UserButton } from '@clerk/vue';\n *\n * const dialogContentRef = useTemplateRef('dialogContentRef');\n * </script>\n *\n * <template>\n * <DialogContent ref=\"dialogContentRef\">\n * <UNSAFE_PortalProvider :getContainer=\"() => dialogContentRef?.$el\">\n * <UserButton />\n * </UNSAFE_PortalProvider>\n * </DialogContent>\n * </template>\n * ```\n */\nexport const UNSAFE_PortalProvider = defineComponent({\n name: 'UNSAFE_PortalProvider',\n props: {\n /**\n * Function that returns the container element where portals should be rendered.\n * This allows Clerk components to render inside external dialogs/popovers\n * (e.g., Reka UI Dialog) instead of document.body.\n */\n getContainer: {\n type: Function as PropType<() => HTMLElement | null>,\n required: true,\n },\n },\n setup(props, { slots }) {\n provide(PortalInjectionKey, { getContainer: props.getContainer });\n return () => slots.default?.();\n },\n});\n","import { inBrowser } from '@clerk/shared/browser';\nimport { deriveState } from '@clerk/shared/deriveState';\nimport { loadClerkJSScript, type LoadClerkJSScriptOptions, loadClerkUIScript } from '@clerk/shared/loadClerkJsScript';\nimport type {\n Clerk,\n ClerkOptions,\n ClientResource,\n InitialState,\n InternalClerkScriptProps,\n IsomorphicClerkOptions,\n MultiDomainAndOrProxy,\n Resources,\n Without,\n} from '@clerk/shared/types';\nimport type { ClerkUIConstructor } from '@clerk/shared/ui';\nimport type { Appearance, ExtractAppearanceType, Ui } from '@clerk/ui/internal';\nimport type { Plugin } from 'vue';\nimport { computed, ref, shallowRef, triggerRef } from 'vue';\n\nimport { ClerkInjectionKey } from './keys';\ndeclare global {\n interface Window {\n __internal_ClerkUICtor?: ClerkUIConstructor;\n }\n}\n\nexport type PluginOptions<TUi extends Ui = Ui> = Without<\n IsomorphicClerkOptions,\n 'domain' | 'proxyUrl' | 'appearance' | keyof InternalClerkScriptProps\n> &\n MultiDomainAndOrProxy & {\n initialState?: InitialState;\n appearance?: ExtractAppearanceType<TUi, Appearance>;\n /**\n * An object to use the bundled Clerk UI instead of loading from CDN.\n * Import `ui` from `@clerk/ui` and pass it here to bundle the UI with your application.\n * When omitted, UI is loaded from Clerk's CDN.\n */\n ui?: TUi;\n };\n\nconst SDK_METADATA = {\n name: PACKAGE_NAME,\n version: PACKAGE_VERSION,\n environment: process.env.NODE_ENV,\n};\n\n/**\n * Vue plugin for integrating Clerk.\n *\n * @example\n * ```ts\n * import { createApp } from 'vue'\n * import { clerkPlugin } from '@clerk/vue'\n * import App from './App.vue'\n *\n * const app = createApp(App)\n *\n * app.use(clerkPlugin, {\n * publishableKey: 'pk_'\n * })\n *\n * app.mount('#app')\n * ```\n */\nexport const clerkPlugin: Plugin<[PluginOptions]> = {\n install<TUi extends Ui = Ui>(app: any, pluginOptions: PluginOptions<TUi>) {\n const { initialState } = pluginOptions || {};\n\n const loaded = shallowRef(false);\n const clerk = shallowRef<Clerk | null>(null);\n\n const resources = ref<Resources>({\n client: undefined as unknown as ClientResource,\n session: undefined,\n user: undefined,\n organization: undefined,\n });\n\n const options = {\n ...pluginOptions,\n sdkMetadata: pluginOptions.sdkMetadata || SDK_METADATA,\n } as LoadClerkJSScriptOptions;\n\n // We need this check for SSR apps like Nuxt as it will try to run this code on the server\n // and loadClerkJSScript contains browser-specific code\n if (inBrowser()) {\n void (async () => {\n try {\n const clerkPromise = loadClerkJSScript(options);\n // Support bundled UI via ui.ClerkUI prop\n const uiProp = pluginOptions.ui;\n const clerkUICtorPromise = uiProp?.ClerkUI\n ? Promise.resolve(uiProp.ClerkUI)\n : uiProp || pluginOptions.prefetchUI === false\n ? Promise.resolve(undefined)\n : (async () => {\n await loadClerkUIScript(options);\n if (!window.__internal_ClerkUICtor) {\n throw new Error('Failed to download latest Clerk UI. Contact support@clerk.com.');\n }\n return window.__internal_ClerkUICtor;\n })();\n\n await clerkPromise;\n\n if (!window.Clerk) {\n throw new Error('Failed to download latest ClerkJS. Contact support@clerk.com.');\n }\n\n clerk.value = window.Clerk;\n const loadOptions = {\n ...options,\n ui: { ...pluginOptions.ui, ClerkUI: clerkUICtorPromise },\n } as unknown as ClerkOptions;\n await window.Clerk.load(loadOptions);\n loaded.value = true;\n\n if (clerk.value) {\n clerk.value.addListener(payload => {\n resources.value = payload;\n });\n\n // When Clerk updates its state internally, Vue's reactivity system doesn't detect\n // the change since it's an external object being mutated. triggerRef() forces Vue\n // to re-evaluate all dependencies regardless of how the value was changed.\n triggerRef(clerk);\n }\n } catch (err) {\n const error = err as Error;\n console.error(error.stack || error.message || error);\n }\n })();\n }\n\n const derivedState = computed(() => deriveState(loaded.value, resources.value, initialState));\n\n const authCtx = computed(() => {\n const {\n sessionId,\n userId,\n orgId,\n actor,\n orgRole,\n orgSlug,\n orgPermissions,\n sessionStatus,\n sessionClaims,\n factorVerificationAge,\n } = derivedState.value;\n return {\n sessionId,\n userId,\n actor,\n orgId,\n orgRole,\n orgSlug,\n orgPermissions,\n sessionStatus,\n sessionClaims,\n factorVerificationAge,\n };\n });\n const clientCtx = computed(() => resources.value.client);\n const userCtx = computed(() => derivedState.value.user);\n const sessionCtx = computed(() => derivedState.value.session);\n const organizationCtx = computed(() => derivedState.value.organization);\n\n app.provide(ClerkInjectionKey, {\n loaded,\n clerk,\n authCtx,\n clientCtx,\n sessionCtx,\n userCtx,\n organizationCtx,\n });\n },\n};\n","import { setClerkJSLoadingErrorPackageName } from '@clerk/shared/loadClerkJsScript';\n\nimport { setErrorThrowerOptions } from './errors/errorThrower';\n\nexport * from './components';\nexport * from './composables';\n\nexport { clerkPlugin, type PluginOptions } from './plugin';\nexport { updateClerkOptions } from './utils';\nexport { getToken } from '@clerk/shared/getToken';\n\nsetErrorThrowerOptions({ packageName: PACKAGE_NAME });\nsetClerkJSLoadingErrorPackageName(PACKAGE_NAME);\n"],"mappings":"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"}
package/dist/plugin.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import type { InitialState, InternalClerkScriptProps, IsomorphicClerkOptions, MultiDomainAndOrProxy, Without } from '@clerk/shared/types';
2
2
  import type { ClerkUIConstructor } from '@clerk/shared/ui';
3
- import type { Appearance, Ui } from '@clerk/ui/internal';
3
+ import type { Appearance, ExtractAppearanceType, Ui } from '@clerk/ui/internal';
4
4
  import type { Plugin } from 'vue';
5
5
  declare global {
6
6
  interface Window {
@@ -9,7 +9,7 @@ declare global {
9
9
  }
10
10
  export type PluginOptions<TUi extends Ui = Ui> = Without<IsomorphicClerkOptions, 'domain' | 'proxyUrl' | 'appearance' | keyof InternalClerkScriptProps> & MultiDomainAndOrProxy & {
11
11
  initialState?: InitialState;
12
- appearance?: Appearance<TUi>;
12
+ appearance?: ExtractAppearanceType<TUi, Appearance>;
13
13
  /**
14
14
  * An object to use the bundled Clerk UI instead of loading from CDN.
15
15
  * Import `ui` from `@clerk/ui` and pass it here to bundle the UI with your application.
@@ -1,7 +1,7 @@
1
1
  import type { ClerkOptions } from '@clerk/shared/types';
2
- import type { Appearance, Ui } from '@clerk/ui/internal';
2
+ import type { Appearance, ExtractAppearanceType, Ui } from '@clerk/ui/internal';
3
3
  type ClerkUpdateOptions<TUi extends Ui = Ui> = Pick<ClerkOptions, 'localization'> & {
4
- appearance?: Appearance<TUi>;
4
+ appearance?: ExtractAppearanceType<TUi, Appearance>;
5
5
  };
6
6
  /**
7
7
  * Updates Clerk's options at runtime.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@clerk/vue",
3
- "version": "2.4.22-snapshot.v20260730145336",
3
+ "version": "2.4.22",
4
4
  "description": "Clerk SDK for Vue",
5
5
  "keywords": [
6
6
  "clerk",
@@ -50,7 +50,7 @@
50
50
  "dist"
51
51
  ],
52
52
  "dependencies": {
53
- "@clerk/shared": "4.25.10-snapshot.v20260730145336"
53
+ "@clerk/shared": "^4.25.10"
54
54
  },
55
55
  "devDependencies": {
56
56
  "@testing-library/vue": "^8.1.0",
@@ -59,7 +59,7 @@
59
59
  "unplugin-vue": "7.0.8",
60
60
  "vue": "3.5.33",
61
61
  "vue-tsc": "^3.2.4",
62
- "@clerk/ui": "1.27.2-snapshot.v20260730145336"
62
+ "@clerk/ui": "^1.27.2"
63
63
  },
64
64
  "peerDependencies": {
65
65
  "vue": "^3.2.0"