diff --git a/.changeset/deprecate-clerk-types.md b/.changeset/deprecate-clerk-types.md index 7900eeacd81..06925aca3f8 100644 --- a/.changeset/deprecate-clerk-types.md +++ b/.changeset/deprecate-clerk-types.md @@ -4,7 +4,6 @@ '@clerk/backend': patch '@clerk/chrome-extension': patch '@clerk/clerk-js': patch -'@clerk/themes': patch '@clerk/vue': patch --- diff --git a/.changeset/mean-owls-brake.md b/.changeset/mean-owls-brake.md index 3c4fc1b3986..7c70303998d 100644 --- a/.changeset/mean-owls-brake.md +++ b/.changeset/mean-owls-brake.md @@ -9,7 +9,6 @@ "@clerk/nuxt": major "@clerk/tanstack-react-start": major "@clerk/testing": major -"@clerk/themes": major "@clerk/upgrade": major "@clerk/vue": major --- diff --git a/.changeset/tall-snails-dance.md b/.changeset/tall-snails-dance.md new file mode 100644 index 00000000000..a845151cc84 --- /dev/null +++ b/.changeset/tall-snails-dance.md @@ -0,0 +1,2 @@ +--- +--- diff --git a/.cursor/rules/monorepo.mdc b/.cursor/rules/monorepo.mdc index 05c2748443e..79b5b0bfc34 100644 --- a/.cursor/rules/monorepo.mdc +++ b/.cursor/rules/monorepo.mdc @@ -22,7 +22,6 @@ Core Package Categories - **Backend**: `@clerk/backend` - Server-side utilities and JWT verification - **Shared Utilities**: `@clerk/shared`, `@clerk/types` - Common utilities and TypeScript types - **Developer Tools**: `@clerk/testing`, `@clerk/dev-cli`, `@clerk/upgrade` -- **UI Libraries**: `@clerk/themes` - Pre-built themes - **Specialized**: `@clerk/agent-toolkit` - AI agent integration tools Directory Structure diff --git a/.github/actions/verdaccio/action.yml b/.github/actions/verdaccio/action.yml index 5279ac08666..13fee03e20a 100644 --- a/.github/actions/verdaccio/action.yml +++ b/.github/actions/verdaccio/action.yml @@ -71,3 +71,37 @@ runs: pnpm config set $(echo ${{ inputs.registry }} | sed -E 's/https?://')/:_authToken secretToken # Verify proxy is working by trying to fetch a known package pnpm view semver > /dev/null 2>&1 || echo "Warning: Could not fetch semver package, proxy might not be working" + + - name: Print published Clerk package versions + shell: bash + run: | + echo "Published @clerk packages under 'integration' tag:" + echo "==================================================" + packages=( + "@clerk/agent-toolkit" + "@clerk/astro" + "@clerk/backend" + "@clerk/chrome-extension" + "@clerk/clerk-js" + "@clerk/dev-cli" + "@clerk/expo" + "@clerk/expo-passkeys" + "@clerk/express" + "@clerk/fastify" + "@clerk/localizations" + "@clerk/nextjs" + "@clerk/nuxt" + "@clerk/react" + "@clerk/react-router" + "@clerk/shared" + "@clerk/tanstack-react-start" + "@clerk/testing" + "@clerk/types" + "@clerk/ui" + "@clerk/upgrade" + "@clerk/vue" + ) + for pkg in "${packages[@]}"; do + version=$(pnpm view "$pkg@integration" version 2>/dev/null || echo "not found") + printf "%-35s %s\n" "$pkg@integration:" "$version" + done diff --git a/integration/presets/custom-flows.ts b/integration/presets/custom-flows.ts index f816de17057..efc01e753a9 100644 --- a/integration/presets/custom-flows.ts +++ b/integration/presets/custom-flows.ts @@ -12,7 +12,7 @@ const reactVite = applicationConfig() .addScript('serve', 'pnpm preview') .addDependency('@clerk/react', linkPackage('react', 'integration')) .addDependency('@clerk/shared', linkPackage('shared', 'integration')) - .addDependency('@clerk/themes', linkPackage('themes', 'integration')); + .addDependency('@clerk/ui', linkPackage('ui', 'integration')); export const customFlows = { reactVite, diff --git a/integration/presets/express.ts b/integration/presets/express.ts index 5c253f5daf4..f68cf904038 100644 --- a/integration/presets/express.ts +++ b/integration/presets/express.ts @@ -1,4 +1,3 @@ -import { constants } from '../constants'; import { applicationConfig } from '../models/applicationConfig'; import { templates } from '../templates'; import { linkPackage } from './utils'; @@ -11,9 +10,9 @@ const vite = applicationConfig() .addScript('dev', 'pnpm dev') .addScript('build', 'pnpm build') .addScript('serve', 'pnpm start') - .addDependency('@clerk/express', constants.E2E_CLERK_JS_VERSION || linkPackage('express')) - .addDependency('@clerk/clerk-js', constants.E2E_CLERK_JS_VERSION || linkPackage('clerk-js')) - .addDependency('@clerk/ui', constants.E2E_CLERK_UI_VERSION || linkPackage('ui')); + .addDependency('@clerk/express', linkPackage('express', 'integration')) + .addDependency('@clerk/clerk-js', linkPackage('clerk-js', 'integration')) + .addDependency('@clerk/ui', linkPackage('ui', 'integration')); export const express = { vite, diff --git a/integration/presets/react.ts b/integration/presets/react.ts index d2ea6b0861c..1af28ee9b66 100644 --- a/integration/presets/react.ts +++ b/integration/presets/react.ts @@ -12,7 +12,7 @@ const cra = applicationConfig() .addScript('serve', 'pnpm start') .addDependency('@clerk/react', linkPackage('react', 'integration')) .addDependency('@clerk/shared', linkPackage('shared', 'integration')) - .addDependency('@clerk/themes', linkPackage('themes', 'integration')); + .addDependency('@clerk/ui', linkPackage('ui', 'integration')); const vite = cra .clone() diff --git a/integration/tests/appearance.test.ts b/integration/tests/appearance.test.ts index 73192089912..39ae574e68f 100644 --- a/integration/tests/appearance.test.ts +++ b/integration/tests/appearance.test.ts @@ -15,7 +15,7 @@ test.describe('appearance prop', () => { 'src/App.tsx', ({ tsx }) => tsx` import { SignIn, SignUp } from '@clerk/react'; - import { dark, neobrutalism, shadesOfPurple } from '@clerk/themes'; + import { dark, neobrutalism, shadesOfPurple } from '@clerk/ui/themes'; const themes = { shadesOfPurple, neobrutalism, dark }; export default function App() { diff --git a/package.json b/package.json index bd269d632a0..eb19e9a61d7 100644 --- a/package.json +++ b/package.json @@ -39,14 +39,14 @@ "test:integration:custom": "pnpm test:integration:base --grep @custom", "test:integration:deployment:nextjs": "pnpm playwright test --config integration/playwright.deployments.config.ts", "test:integration:expo-web:disabled": "E2E_APP_ID=expo.expo-web pnpm test:integration:base --grep @expo-web", - "test:integration:express": "E2E_APP_ID=express.* pnpm test:integration:base --grep @express", + "test:integration:express": "E2E_DEBUG=1 E2E_APP_ID=express.* pnpm test:integration:base --grep @express", "test:integration:generic": "E2E_APP_ID=react.vite.*,next.appRouter.withEmailCodes* pnpm test:integration:base --grep @generic", "test:integration:handshake": "DISABLE_WEB_SECURITY=true E2E_APP_1_ENV_KEY=sessions-prod-1 E2E_SESSIONS_APP_1_HOST=multiple-apps-e2e.clerk.app pnpm test:integration:base --grep @handshake", "test:integration:handshake:staging": "DISABLE_WEB_SECURITY=true E2E_APP_1_ENV_KEY=clerkstage-sessions-prod-1 E2E_SESSIONS_APP_1_HOST=clerkstage-sessions-prod-1-e2e.clerk.app pnpm test:integration:base --grep @handshake", "test:integration:localhost": "pnpm test:integration:base --grep @localhost", "test:integration:machine": "E2E_APP_ID=withMachine.* pnpm test:integration:base --grep @machine", "test:integration:nextjs": "E2E_APP_ID=next.appRouter.* pnpm test:integration:base --grep @nextjs", - "test:integration:nuxt": "E2E_APP_ID=nuxt.node npm run test:integration:base -- --grep @nuxt", + "test:integration:nuxt": "E2E_DEBUG=1 E2E_APP_ID=nuxt.node npm run test:integration:base -- --grep @nuxt", "test:integration:quickstart": "E2E_APP_ID=quickstart.* pnpm test:integration:base --grep @quickstart", "test:integration:react-router": "E2E_APP_ID=react-router.* pnpm test:integration:base --grep @react-router", "test:integration:sessions": "DISABLE_WEB_SECURITY=true E2E_SESSIONS_APP_1_ENV_KEY=sessions-prod-1 E2E_SESSIONS_APP_2_ENV_KEY=sessions-prod-2 E2E_SESSIONS_APP_1_HOST=multiple-apps-e2e.clerk.app pnpm test:integration:base --grep @sessions", diff --git a/packages/astro/package.json b/packages/astro/package.json index 2cb0404cab9..fd7e14ba488 100644 --- a/packages/astro/package.json +++ b/packages/astro/package.json @@ -94,6 +94,7 @@ "nanostores": "1.0.1" }, "devDependencies": { + "@clerk/ui": "workspace:^", "astro": "^5.15.3" }, "peerDependencies": { diff --git a/packages/astro/src/internal/create-clerk-instance.ts b/packages/astro/src/internal/create-clerk-instance.ts index 88407459660..bbd86d04fa0 100644 --- a/packages/astro/src/internal/create-clerk-instance.ts +++ b/packages/astro/src/internal/create-clerk-instance.ts @@ -5,6 +5,7 @@ import { } from '@clerk/shared/loadClerkJsScript'; import type { ClerkOptions } from '@clerk/shared/types'; import type { ClerkUiConstructor } from '@clerk/shared/ui'; +import type { Ui } from '@clerk/ui/internal'; import { $clerkStore } from '../stores/external'; import { $clerk, $csrState } from '../stores/internal'; @@ -34,7 +35,7 @@ function createNavigationHandler( */ const createClerkInstance = runOnce(createClerkInstanceInternal); -async function createClerkInstanceInternal(options?: AstroClerkCreateInstanceParams) { +async function createClerkInstanceInternal(options?: AstroClerkCreateInstanceParams) { let clerkJSInstance = window.Clerk; let clerkUiCtor: Promise | undefined; @@ -63,16 +64,18 @@ async function createClerkInstanceInternal(options?: AstroClerkCreateInstancePar $clerk.set(clerkJSInstance); } - initOptions = { + const clerkOptions = { routerPush: createNavigationHandler(window.history.pushState.bind(window.history)), routerReplace: createNavigationHandler(window.history.replaceState.bind(window.history)), ...options, // Pass the clerk-ui constructor promise to clerk.load() clerkUiCtor, - }; + } as unknown as ClerkOptions; + + initOptions = clerkOptions; return clerkJSInstance - .load(initOptions) + .load(clerkOptions) .then(() => { $csrState.setKey('isLoaded', true); // Notify subscribers that $clerkStore has been loaded. @@ -94,16 +97,17 @@ async function createClerkInstanceInternal(options?: AstroClerkCreateInstancePar .catch(() => {}); } -function updateClerkOptions(options: AstroClerkUpdateOptions) { +function updateClerkOptions(options: AstroClerkUpdateOptions) { const clerk = $clerk.get(); if (!clerk) { throw new Error('Missing clerk instance'); } - // `__unstable__updateProps` is not exposed as public API from `@clerk/types` - void (clerk as any).__unstable__updateProps({ + const updateOptions = { options: { ...initOptions, ...options }, appearance: { ...initOptions?.appearance, ...options.appearance }, - }); + } as unknown as { options: ClerkOptions; appearance?: any }; + // `__unstable__updateProps` is not exposed as public API from `@clerk/types` + void (clerk as any).__unstable__updateProps(updateOptions); } export { createClerkInstance, updateClerkOptions }; diff --git a/packages/astro/src/types.ts b/packages/astro/src/types.ts index 707006e66dc..74031876751 100644 --- a/packages/astro/src/types.ts +++ b/packages/astro/src/types.ts @@ -7,10 +7,13 @@ import type { Without, } from '@clerk/shared/types'; import type { ClerkUiConstructor } from '@clerk/shared/ui'; +import type { Appearance, Ui } from '@clerk/ui/internal'; -type AstroClerkUpdateOptions = Pick; +type AstroClerkUpdateOptions = Pick & { + appearance?: Appearance; +}; -type AstroClerkIntegrationParams = Without< +type AstroClerkIntegrationParams = Without< ClerkOptions, | 'isSatellite' | 'sdkMetadata' @@ -21,8 +24,10 @@ type AstroClerkIntegrationParams = Without< | 'routerPush' | 'polling' | 'touchSession' + | 'appearance' > & MultiDomainAndOrProxyPrimitives & { + appearance?: Appearance; clerkJSUrl?: string; clerkJSVariant?: 'headless' | ''; clerkJSVersion?: string; @@ -32,7 +37,9 @@ type AstroClerkIntegrationParams = Without< clerkUiUrl?: string; }; -type AstroClerkCreateInstanceParams = AstroClerkIntegrationParams & { publishableKey: string }; +type AstroClerkCreateInstanceParams = AstroClerkIntegrationParams & { + publishableKey: string; +}; // Copied from `@clerk/react` export interface HeadlessBrowserClerk extends Clerk { diff --git a/packages/chrome-extension/src/react/ClerkProvider.tsx b/packages/chrome-extension/src/react/ClerkProvider.tsx index 003604882ee..45237484496 100644 --- a/packages/chrome-extension/src/react/ClerkProvider.tsx +++ b/packages/chrome-extension/src/react/ClerkProvider.tsx @@ -1,13 +1,14 @@ import type { Clerk } from '@clerk/clerk-js/no-rhc'; import type { ClerkProviderProps as ClerkReactProviderProps } from '@clerk/react'; import { ClerkProvider as ClerkReactProvider } from '@clerk/react'; +import type { Ui } from '@clerk/react/internal'; import { ClerkUi } from '@clerk/ui/entry'; import React from 'react'; import { createClerkClient } from '../internal/clerk'; import type { StorageCache } from '../internal/utils/storage'; -type ChromeExtensionClerkProviderProps = ClerkReactProviderProps & { +type ChromeExtensionClerkProviderProps = ClerkReactProviderProps & { /** * @experimental * @description Enables the listener to sync host cookies on changes. @@ -17,7 +18,7 @@ type ChromeExtensionClerkProviderProps = ClerkReactProviderProps & { syncHost?: string; }; -export function ClerkProvider(props: ChromeExtensionClerkProviderProps): JSX.Element | null { +export function ClerkProvider(props: ChromeExtensionClerkProviderProps): JSX.Element | null { const { children, storageCache, syncHost, __experimental_syncHostListener, ...rest } = props; const { publishableKey = '' } = props; diff --git a/packages/chrome-extension/tsconfig.json b/packages/chrome-extension/tsconfig.json index 904ccc83d88..274fd384521 100644 --- a/packages/chrome-extension/tsconfig.json +++ b/packages/chrome-extension/tsconfig.json @@ -9,8 +9,8 @@ "strict": true, "forceConsistentCasingInFileNames": true, "noFallthroughCasesInSwitch": true, - "module": "nodenext", - "moduleResolution": "nodenext", + "module": "preserve", + "moduleResolution": "bundler", "resolveJsonModule": true, "isolatedModules": true, "jsx": "react-jsx", diff --git a/packages/clerk-js/src/utils/captcha/turnstile.ts b/packages/clerk-js/src/utils/captcha/turnstile.ts index 71150d992f4..bd0a5ad03a5 100644 --- a/packages/clerk-js/src/utils/captcha/turnstile.ts +++ b/packages/clerk-js/src/utils/captcha/turnstile.ts @@ -1,7 +1,7 @@ import { waitForElement } from '@clerk/shared/dom'; import { CAPTCHA_ELEMENT_ID, CAPTCHA_INVISIBLE_CLASSNAME } from '@clerk/shared/internal/clerk-js/constants'; import { loadScript } from '@clerk/shared/loadScript'; -import type { CaptchaAppearanceOptions, CaptchaWidgetType } from '@clerk/shared/types'; +import type { CaptchaWidgetType } from '@clerk/shared/types'; import type { CaptchaOptions } from './types'; @@ -9,10 +9,11 @@ import type { CaptchaOptions } from './types'; // CF docs: https://developers.cloudflare.com/turnstile/get-started/client-side-rendering/#disable-implicit-rendering const CLOUDFLARE_TURNSTILE_ORIGINAL_URL = 'https://challenges.cloudflare.com/turnstile/v0/api.js?render=explicit'; +// These belong to `clerk/ui` now type CaptchaAttributes = { - theme?: CaptchaAppearanceOptions['theme']; - language?: CaptchaAppearanceOptions['language']; - size: CaptchaAppearanceOptions['size']; + theme?: unknown; + language?: unknown; + size: unknown; }; declare global { @@ -53,9 +54,9 @@ async function loadCaptchaFromCloudflareURL(nonce?: string) { function getCaptchaAttibutesFromElemenet(element: HTMLElement): CaptchaAttributes { try { - const theme = (element.getAttribute('data-cl-theme') as CaptchaAppearanceOptions['theme']) || undefined; - const language = (element.getAttribute('data-cl-language') as CaptchaAppearanceOptions['language']) || undefined; - const size = (element.getAttribute('data-cl-size') as CaptchaAppearanceOptions['size']) || undefined; + const theme = element.getAttribute('data-cl-theme') || undefined; + const language = element.getAttribute('data-cl-language') || undefined; + const size = element.getAttribute('data-cl-size') || undefined; return { theme, language, size }; } catch { @@ -79,9 +80,9 @@ export const getTurnstileToken = async (opts: CaptchaOptions) => { let captchaToken = ''; let id = ''; let turnstileSiteKey = siteKey; - let captchaTheme: CaptchaAppearanceOptions['theme']; - let captchaSize: CaptchaAppearanceOptions['size']; - let captchaLanguage: CaptchaAppearanceOptions['language']; + let captchaTheme: any; + let captchaSize: any; + let captchaLanguage: any; let retries = 0; let widgetContainerQuerySelector: string | undefined; // The backend uses this to determine which Turnstile site-key was used in order to verify the token diff --git a/packages/expo/src/provider/ClerkProvider.tsx b/packages/expo/src/provider/ClerkProvider.tsx index ceb27e8bcb6..cea114a6e43 100644 --- a/packages/expo/src/provider/ClerkProvider.tsx +++ b/packages/expo/src/provider/ClerkProvider.tsx @@ -1,7 +1,7 @@ import '../polyfills'; import { ClerkProvider as ClerkReactProvider } from '@clerk/react'; -import type { Without } from '@clerk/shared/types'; +import type { Ui } from '@clerk/react/internal'; import * as WebBrowser from 'expo-web-browser'; import type { TokenCache } from '../cache/types'; @@ -9,7 +9,10 @@ import { isNative, isWeb } from '../utils/runtime'; import { getClerkInstance } from './singleton'; import type { BuildClerkOptions } from './singleton/types'; -export type ClerkProviderProps = Without, 'publishableKey'> & { +export type ClerkProviderProps = Omit< + React.ComponentProps>, + 'publishableKey' +> & { /** * Used to override the default EXPO_PUBLIC_CLERK_PUBLISHABLE_KEY env variable if needed. * This is optional for Expo as the ClerkProvider will automatically use the EXPO_PUBLIC_CLERK_PUBLISHABLE_KEY env variable if it exists. @@ -40,7 +43,7 @@ const SDK_METADATA = { version: PACKAGE_VERSION, }; -export function ClerkProvider(props: ClerkProviderProps): JSX.Element { +export function ClerkProvider(props: ClerkProviderProps): JSX.Element { const { children, tokenCache, diff --git a/packages/nextjs/src/app-router/client/ClerkProvider.tsx b/packages/nextjs/src/app-router/client/ClerkProvider.tsx index f2efa059292..0510da31c51 100644 --- a/packages/nextjs/src/app-router/client/ClerkProvider.tsx +++ b/packages/nextjs/src/app-router/client/ClerkProvider.tsx @@ -1,5 +1,6 @@ 'use client'; import { ClerkProvider as ReactClerkProvider } from '@clerk/react'; +import type { Ui } from '@clerk/react/internal'; import dynamic from 'next/dynamic'; import { useRouter } from 'next/navigation'; import React from 'react'; @@ -24,7 +25,7 @@ const LazyCreateKeylessApplication = dynamic(() => import('./keyless-creator-reader.js').then(m => m.KeylessCreatorOrReader), ); -const NextClientClerkProvider = (props: NextClerkProviderProps) => { +const NextClientClerkProvider = (props: NextClerkProviderProps) => { const { __unstable_invokeMiddlewareOnAuthStateChange = true, children } = props; const router = useRouter(); const push = useAwaitablePush(); @@ -108,7 +109,9 @@ const NextClientClerkProvider = (props: NextClerkProviderProps) => { ); }; -export const ClientClerkProvider = (props: NextClerkProviderProps & { disableKeyless?: boolean }) => { +export const ClientClerkProvider = ( + props: NextClerkProviderProps & { disableKeyless?: boolean }, +) => { const { children, disableKeyless = false, ...rest } = props; const safePublishableKey = mergeNextClerkPropsWithEnv(rest).publishableKey; diff --git a/packages/nextjs/src/app-router/server/ClerkProvider.tsx b/packages/nextjs/src/app-router/server/ClerkProvider.tsx index c7ab1ff28e0..7d128e1ffb2 100644 --- a/packages/nextjs/src/app-router/server/ClerkProvider.tsx +++ b/packages/nextjs/src/app-router/server/ClerkProvider.tsx @@ -1,3 +1,4 @@ +import type { Ui } from '@clerk/react/internal'; import type { InitialState, Without } from '@clerk/shared/types'; import { headers } from 'next/headers'; import type { ReactNode } from 'react'; @@ -27,8 +28,8 @@ const getNonceHeaders = React.cache(async function getNonceHeaders() { getScriptNonceFromHeader(headersList.get('Content-Security-Policy') || '') || ''; }); -export async function ClerkProvider( - props: Without, +export async function ClerkProvider( + props: Without, '__unstable_invokeMiddlewareOnAuthStateChange'>, ) { const { children, dynamic, ...rest } = props; diff --git a/packages/nextjs/src/pages/ClerkProvider.tsx b/packages/nextjs/src/pages/ClerkProvider.tsx index cedbda19ff9..03df240d035 100644 --- a/packages/nextjs/src/pages/ClerkProvider.tsx +++ b/packages/nextjs/src/pages/ClerkProvider.tsx @@ -1,4 +1,5 @@ import { ClerkProvider as ReactClerkProvider } from '@clerk/react'; +import type { Ui } from '@clerk/react/internal'; // Override Clerk React error thrower to show that errors come from @clerk/nextjs import { setClerkJsLoadingErrorPackageName, setErrorThrowerOptions } from '@clerk/react/internal'; import { useRouter } from 'next/router'; @@ -16,7 +17,7 @@ import { RouterTelemetry } from '../utils/router-telemetry'; setErrorThrowerOptions({ packageName: PACKAGE_NAME }); setClerkJsLoadingErrorPackageName(PACKAGE_NAME); -export function ClerkProvider({ children, ...props }: NextClerkProviderProps): JSX.Element { +export function ClerkProvider({ children, ...props }: NextClerkProviderProps): JSX.Element { const { __unstable_invokeMiddlewareOnAuthStateChange = true } = props; const { push, replace } = useRouter(); ReactClerkProvider.displayName = 'ReactClerkProvider'; diff --git a/packages/nextjs/src/pages/__tests__/index.test.tsx b/packages/nextjs/src/pages/__tests__/index.test.tsx index 777d63b931e..071e36fcb57 100644 --- a/packages/nextjs/src/pages/__tests__/index.test.tsx +++ b/packages/nextjs/src/pages/__tests__/index.test.tsx @@ -17,43 +17,6 @@ describe('ClerkProvider', () => { }); }); - describe('Multi domain', () => { - const defaultProps = { children: '' }; - - it('proxyUrl (primary app)', () => { - expectTypeOf({ ...defaultProps, proxyUrl: 'test' }).toMatchTypeOf(); - }); - - it('proxyUrl + isSatellite (satellite app)', () => { - expectTypeOf({ ...defaultProps, proxyUrl: 'test', isSatellite: true }).toMatchTypeOf(); - }); - - it('domain + isSatellite (satellite app)', () => { - expectTypeOf({ ...defaultProps, domain: 'test', isSatellite: true }).toMatchTypeOf(); - }); - - it('only domain is not allowed', () => { - expectTypeOf({ ...defaultProps, domain: 'test' }).not.toMatchTypeOf(); - }); - - it('only isSatellite is not allowed', () => { - expectTypeOf({ ...defaultProps, isSatellite: true }).not.toMatchTypeOf(); - }); - - it('proxyUrl + domain is not allowed', () => { - expectTypeOf({ ...defaultProps, proxyUrl: 'test', domain: 'test' }).not.toMatchTypeOf(); - }); - - it('proxyUrl + domain + isSatellite is not allowed', () => { - expectTypeOf({ - ...defaultProps, - proxyUrl: 'test', - domain: 'test', - isSatellite: true, - }).not.toMatchTypeOf(); - }); - }); - describe('clerkJSVariant', () => { const defaultProps = { children: '' }; diff --git a/packages/nextjs/src/types.ts b/packages/nextjs/src/types.ts index 340fb99e716..423f48e2437 100644 --- a/packages/nextjs/src/types.ts +++ b/packages/nextjs/src/types.ts @@ -1,7 +1,8 @@ import type { ClerkProviderProps } from '@clerk/react'; +import type { Ui } from '@clerk/react/internal'; import type { Without } from '@clerk/shared/types'; -export type NextClerkProviderProps = Without & { +export type NextClerkProviderProps = Without, 'publishableKey'> & { /** * Used to override the default NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY env variable if needed. * This is optional for NextJS as the ClerkProvider will automatically use the NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY env variable if it exists. diff --git a/packages/nextjs/src/utils/clerk-script.tsx b/packages/nextjs/src/utils/clerk-script.tsx index 6d8d93ed35d..aceb76c4d9d 100644 --- a/packages/nextjs/src/utils/clerk-script.tsx +++ b/packages/nextjs/src/utils/clerk-script.tsx @@ -43,7 +43,7 @@ function ClerkScript(props: ClerkScriptProps) { } export function ClerkScripts({ router }: { router: ClerkScriptProps['router'] }) { - const { publishableKey, clerkJSUrl, clerkJSVersion, clerkJSVariant, nonce, clerkUiUrl } = useClerkNextOptions(); + const { publishableKey, clerkJSUrl, clerkJSVersion, clerkJSVariant, nonce, clerkUiUrl, ui } = useClerkNextOptions(); const { domain, proxyUrl } = useClerk(); if (!publishableKey) { @@ -58,7 +58,8 @@ export function ClerkScripts({ router }: { router: ClerkScriptProps['router'] }) nonce, domain, proxyUrl, - clerkUiUrl, + clerkUiVersion: ui?.version, + clerkUiUrl: ui?.url || clerkUiUrl, }; return ( diff --git a/packages/react-router/src/client/ReactRouterClerkProvider.tsx b/packages/react-router/src/client/ReactRouterClerkProvider.tsx index 38b5f11a4ae..33ea4406868 100644 --- a/packages/react-router/src/client/ReactRouterClerkProvider.tsx +++ b/packages/react-router/src/client/ReactRouterClerkProvider.tsx @@ -1,4 +1,5 @@ import { ClerkProvider as ReactClerkProvider } from '@clerk/react'; +import type { Ui } from '@clerk/react/internal'; import React from 'react'; import { @@ -28,11 +29,11 @@ const awaitableNavigateRef: { current: ReturnType | * Internal type that includes the initial state prop that is passed to the ClerkProvider during SSR. * This is a value that we pass automatically so it does not need to pollute the public API. */ -type ClerkProviderPropsWithState = ReactRouterClerkProviderProps & { +type ClerkProviderPropsWithState = ReactRouterClerkProviderProps & { clerkState?: ClerkState; }; -function ClerkProviderBase({ children, ...rest }: ClerkProviderPropsWithState) { +function ClerkProviderBase({ children, ...rest }: ClerkProviderPropsWithState) { const awaitableNavigate = useAwaitableNavigate(); const isSpaMode = _isSpaMode(); @@ -113,16 +114,16 @@ function ClerkProviderBase({ children, ...rest }: ClerkProviderPropsWithState) { ); } -type ClerkReactRouterOptions = Partial< - Omit +type ClerkReactRouterOptions = Partial< + Omit, 'routerPush' | 'routerReplace' | 'clerkState'> >; // TODO: Remove "any" on loaderData type and use Route.ComponentProps from userland code -type ClerkProviderProps = ClerkReactRouterOptions & { +type ClerkProviderProps = ClerkReactRouterOptions & { loaderData?: any; }; -export const ClerkProvider = ({ children, loaderData, ...opts }: ClerkProviderProps) => { +export const ClerkProvider = ({ children, loaderData, ...opts }: ClerkProviderProps) => { let clerkState; const isSpaMode = _isSpaMode(); diff --git a/packages/react-router/src/client/types.ts b/packages/react-router/src/client/types.ts index 13365fbf60a..63f07aea3c4 100644 --- a/packages/react-router/src/client/types.ts +++ b/packages/react-router/src/client/types.ts @@ -1,4 +1,5 @@ import type { ClerkProviderProps } from '@clerk/react'; +import type { Ui } from '@clerk/react/internal'; import type { InitialState, Without } from '@clerk/shared/types'; import type React from 'react'; @@ -30,7 +31,10 @@ export type WithClerkState = { clerkState: { __type: 'clerkState' }; }; -export type ReactRouterClerkProviderProps = Without & { +export type ReactRouterClerkProviderProps = Without< + ClerkProviderProps, + 'publishableKey' | 'initialState' +> & { /** * Used to override the default VITE_CLERK_PUBLISHABLE_KEY env variable if needed. * This is optional for React Router (in SSR mode) as the ClerkProvider will automatically use the VITE_CLERK_PUBLISHABLE_KEY env variable if it exists. diff --git a/packages/react/package.json b/packages/react/package.json index 0f3bf61e357..39e06117747 100644 --- a/packages/react/package.json +++ b/packages/react/package.json @@ -100,7 +100,7 @@ }, "devDependencies": { "@clerk/localizations": "workspace:*", - "@clerk/themes": "workspace:*", + "@clerk/ui": "workspace:*", "@types/semver": "^7.7.1" }, "peerDependencies": { diff --git a/packages/react/src/components/__tests__/CheckoutButton.test.tsx b/packages/react/src/components/__tests__/CheckoutButton.test.tsx index 86661123f89..94bbf8172c2 100644 --- a/packages/react/src/components/__tests__/CheckoutButton.test.tsx +++ b/packages/react/src/components/__tests__/CheckoutButton.test.tsx @@ -1,6 +1,6 @@ import '@testing-library/jest-dom/vitest'; -import type { Theme } from '@clerk/shared/types'; +import type { Theme } from '@clerk/ui/internal'; import { render, screen, waitFor } from '@testing-library/react'; import { userEvent } from '@testing-library/user-event'; import React from 'react'; diff --git a/packages/react/src/components/__tests__/PlanDetailsButton.test.tsx b/packages/react/src/components/__tests__/PlanDetailsButton.test.tsx index bb5394da51f..f20cd0272c9 100644 --- a/packages/react/src/components/__tests__/PlanDetailsButton.test.tsx +++ b/packages/react/src/components/__tests__/PlanDetailsButton.test.tsx @@ -1,6 +1,7 @@ import '@testing-library/jest-dom/vitest'; -import type { BillingPayerResourceType, BillingPlanResource, Theme } from '@clerk/shared/types'; +import type { BillingPayerResourceType, BillingPlanResource } from '@clerk/shared/types'; +import type { Theme } from '@clerk/ui/internal'; import { render, screen, waitFor } from '@testing-library/react'; import { userEvent } from '@testing-library/user-event'; import React from 'react'; diff --git a/packages/react/src/components/__tests__/SubscriptionDetailsButton.test.tsx b/packages/react/src/components/__tests__/SubscriptionDetailsButton.test.tsx index 93dfa7c39f7..96b2d479192 100644 --- a/packages/react/src/components/__tests__/SubscriptionDetailsButton.test.tsx +++ b/packages/react/src/components/__tests__/SubscriptionDetailsButton.test.tsx @@ -1,6 +1,6 @@ import '@testing-library/jest-dom/vitest'; -import type { Theme } from '@clerk/shared/types'; +import type { Theme } from '@clerk/ui/internal'; import { render, screen, waitFor } from '@testing-library/react'; import { userEvent } from '@testing-library/user-event'; import React from 'react'; diff --git a/packages/react/src/contexts/ClerkProvider.tsx b/packages/react/src/contexts/ClerkProvider.tsx index 66b21ed8a35..351ee6f2b5f 100644 --- a/packages/react/src/contexts/ClerkProvider.tsx +++ b/packages/react/src/contexts/ClerkProvider.tsx @@ -1,28 +1,20 @@ -import { isPublishableKey } from '@clerk/shared/keys'; +import type { IsomorphicClerkOptions } from '@clerk/shared/types'; +import type { Ui } from '@clerk/ui/internal'; import React from 'react'; -import { errorThrower } from '../errors/errorThrower'; import { multipleClerkProvidersError } from '../errors/messages'; import type { ClerkProviderProps } from '../types'; import { withMaxAllowedInstancesGuard } from '../utils'; import { ClerkContextProvider } from './ClerkContextProvider'; -function ClerkProviderBase(props: ClerkProviderProps) { - const { initialState, children, __internal_bypassMissingPublishableKey, ...restIsomorphicClerkOptions } = props; - const { publishableKey = '', Clerk: userInitialisedClerk } = restIsomorphicClerkOptions; - - if (!userInitialisedClerk && !__internal_bypassMissingPublishableKey) { - if (!publishableKey) { - errorThrower.throwMissingPublishableKeyError(); - } else if (publishableKey && !isPublishableKey(publishableKey)) { - errorThrower.throwInvalidPublishableKeyError({ key: publishableKey }); - } - } +function ClerkProviderBase(props: ClerkProviderProps) { + const { initialState, children, ...restIsomorphicClerkOptions } = props; + const isomorphicClerkOptions = restIsomorphicClerkOptions as unknown as IsomorphicClerkOptions; return ( {children} diff --git a/packages/react/src/contexts/__tests__/ClerkProvider.test.tsx b/packages/react/src/contexts/__tests__/ClerkProvider.test.tsx index 2fcfa187db4..f5de7b7c282 100644 --- a/packages/react/src/contexts/__tests__/ClerkProvider.test.tsx +++ b/packages/react/src/contexts/__tests__/ClerkProvider.test.tsx @@ -15,12 +15,11 @@ import { trTR, ukUA, } from '@clerk/localizations'; -import { dark } from '@clerk/themes'; +import { dark } from '@clerk/ui/themes'; import { describe, expectTypeOf, it } from 'vitest'; import type { ClerkProvider } from '../ClerkProvider'; -// @ts-ignore type ClerkProviderProps = Parameters[0]; describe('ClerkProvider', () => { @@ -36,43 +35,6 @@ describe('ClerkProvider', () => { }); }); - describe('Multi domain', () => { - const defaultProps = { publishableKey: 'test', children: '' }; - - it('proxyUrl (primary app)', () => { - expectTypeOf({ ...defaultProps, proxyUrl: 'test' }).toMatchTypeOf(); - }); - - it('proxyUrl + isSatellite (satellite app)', () => { - expectTypeOf({ ...defaultProps, proxyUrl: 'test', isSatellite: true }).toMatchTypeOf(); - }); - - it('domain + isSatellite (satellite app)', () => { - expectTypeOf({ ...defaultProps, domain: 'test', isSatellite: true }).toMatchTypeOf(); - }); - - it('only domain is not allowed', () => { - expectTypeOf({ ...defaultProps, domain: 'test' }).not.toMatchTypeOf(); - }); - - it('only isSatellite is not allowed', () => { - expectTypeOf({ ...defaultProps, isSatellite: true }).not.toMatchTypeOf(); - }); - - it('proxyUrl + domain is not allowed', () => { - expectTypeOf({ ...defaultProps, proxyUrl: 'test', domain: 'test' }).not.toMatchTypeOf(); - }); - - it('proxyUrl + domain + isSatellite is not allowed', () => { - expectTypeOf({ - ...defaultProps, - proxyUrl: 'test', - domain: 'test', - isSatellite: true, - }).not.toMatchTypeOf(); - }); - }); - describe('clerkJSVariant', () => { const defaultProps = { publishableKey: 'test', children: '' }; @@ -240,13 +202,5 @@ describe('ClerkProvider', () => { routerReplace: () => {}, }).toMatchTypeOf(); }); - - it('errors if one of routerPush / routerReplace is passed', () => { - expectTypeOf({ - publishableKey: 'test', - children: '', - routerPush: () => {}, - }).not.toMatchTypeOf(); - }); }); }); diff --git a/packages/react/src/index.ts b/packages/react/src/index.ts index 3ddd940623a..97d841eaf1c 100644 --- a/packages/react/src/index.ts +++ b/packages/react/src/index.ts @@ -1,4 +1,5 @@ import './polyfills'; +import './types/appearance'; import { setClerkJsLoadingErrorPackageName } from '@clerk/shared/loadClerkJsScript'; diff --git a/packages/react/src/internal.ts b/packages/react/src/internal.ts index 4fa353724b6..26e71d2e998 100644 --- a/packages/react/src/internal.ts +++ b/packages/react/src/internal.ts @@ -10,3 +10,5 @@ export { buildClerkUiScriptAttributes, setClerkJsLoadingErrorPackageName, } from '@clerk/shared/loadClerkJsScript'; + +export type { Ui } from '@clerk/ui/internal'; diff --git a/packages/react/src/isomorphicClerk.ts b/packages/react/src/isomorphicClerk.ts index e868f13de9d..85a7d0e1399 100644 --- a/packages/react/src/isomorphicClerk.ts +++ b/packages/react/src/isomorphicClerk.ts @@ -509,6 +509,8 @@ export class IsomorphicClerk implements IsomorphicLoadedClerk { await loadClerkUiScript({ ...this.options, + clerkUiVersion: this.options.ui?.version, + clerkUiUrl: this.options.ui?.url || this.options.clerkUiUrl, publishableKey: this.#publishableKey, proxyUrl: this.proxyUrl, domain: this.domain, diff --git a/packages/react/src/types.ts b/packages/react/src/types.ts index 2a2dfc939bb..07b020a0f56 100644 --- a/packages/react/src/types.ts +++ b/packages/react/src/types.ts @@ -9,6 +9,7 @@ import type { TasksRedirectOptions, } from '@clerk/shared/types'; import type { ClerkUiConstructor } from '@clerk/shared/ui'; +import type { Appearance, ExtractAppearanceType, Ui } from '@clerk/ui/internal'; import type React from 'react'; // Re-export types from @clerk/shared that are used by other modules @@ -35,7 +36,7 @@ declare global { /** * @interface */ -export type ClerkProviderProps = IsomorphicClerkOptions & { +export type ClerkProviderProps = Omit & { children: React.ReactNode; /** * Provide an initial state of the Clerk client during server-side rendering. You don't need to set this value yourself unless you're [developing an SDK](https://clerk.com/docs/guides/development/sdk-development/overview). @@ -47,6 +48,16 @@ export type ClerkProviderProps = IsomorphicClerkOptions & { * @internal */ __internal_bypassMissingPublishableKey?: boolean; + /** + * Optional object to style your components. Will only affect [Clerk Components](https://clerk.com/docs/reference/components/overview) and not [Account Portal](https://clerk.com/docs/guides/customizing-clerk/account-portal) pages. + */ + appearance?: ExtractAppearanceType; + /** + * Optional object to pin the UI version your app will be using. Useful when you've extensively customize the look and feel of the + * components using the appearance prop. + * Note: When `ui` is used, appearance is automatically typed based on the specific UI version. + */ + ui?: TUi; }; export type WithClerkProp = T & { clerk: LoadedClerk; component?: string }; diff --git a/packages/react/src/types/appearance.ts b/packages/react/src/types/appearance.ts new file mode 100644 index 00000000000..e88b60ee803 --- /dev/null +++ b/packages/react/src/types/appearance.ts @@ -0,0 +1,11 @@ +/** + * Augments the global ClerkAppearanceRegistry with the Theme type from @clerk/ui. + * This provides full type safety for appearance props in @clerk/react without creating circular dependencies. + */ +import type { Theme } from '@clerk/ui/internal'; + +declare global { + interface ClerkAppearanceRegistry { + theme: Theme; + } +} diff --git a/packages/react/src/utils/useMaxAllowedInstancesGuard.tsx b/packages/react/src/utils/useMaxAllowedInstancesGuard.tsx index bc78e8496f0..ec97465a3fb 100644 --- a/packages/react/src/utils/useMaxAllowedInstancesGuard.tsx +++ b/packages/react/src/utils/useMaxAllowedInstancesGuard.tsx @@ -19,15 +19,18 @@ export function useMaxAllowedInstancesGuard(name: string, error: string, maxCoun } export function withMaxAllowedInstancesGuard

( - WrappedComponent: React.ComponentType

, + WrappedComponent: P, name: string, error: string, -): React.ComponentType

{ +): P & { displayName: string } { + // @ts-expect-error - simplified types to preserve generics in P const displayName = WrappedComponent.displayName || WrappedComponent.name || name || 'Component'; const Hoc = (props: P) => { useMaxAllowedInstancesGuard(name, error); + // @ts-expect-error - simplified types to preserve generics in P return ; }; Hoc.displayName = `withMaxAllowedInstancesGuard(${displayName})`; + // @ts-expect-error - simplified types to preserve generics in P return Hoc; } diff --git a/packages/react/tsconfig.json b/packages/react/tsconfig.json index fe00399fb13..f0012eeecf3 100644 --- a/packages/react/tsconfig.json +++ b/packages/react/tsconfig.json @@ -6,8 +6,8 @@ "isolatedModules": true, "jsx": "react", "lib": ["es6", "dom"], - "moduleResolution": "NodeNext", - "module": "NodeNext", + "moduleResolution": "Bundler", + "module": "preserve", "noImplicitReturns": true, "noUnusedLocals": false, "noUnusedParameters": true, diff --git a/packages/shared/package.json b/packages/shared/package.json index a78df3dc173..ad143c874a6 100644 --- a/packages/shared/package.json +++ b/packages/shared/package.json @@ -123,7 +123,6 @@ "test:coverage": "vitest --collectCoverage && open coverage/lcov-report/index.html" }, "dependencies": { - "csstype": "3.1.3", "dequal": "2.0.3", "glob-to-regexp": "0.4.1", "js-cookie": "3.0.5", diff --git a/packages/shared/src/__tests__/loadClerkJsScript.spec.ts b/packages/shared/src/__tests__/loadClerkJsScript.spec.ts index 2a2ab817757..b8d11d75af7 100644 --- a/packages/shared/src/__tests__/loadClerkJsScript.spec.ts +++ b/packages/shared/src/__tests__/loadClerkJsScript.spec.ts @@ -4,9 +4,12 @@ import { afterEach, beforeEach, describe, expect, test, vi } from 'vitest'; import { ClerkRuntimeError } from '../error'; import { buildClerkJsScriptAttributes, + buildClerkUiScriptAttributes, buildScriptHost, clerkJsScriptUrl, + clerkUiScriptUrl, loadClerkJsScript, + loadClerkUiScript, setClerkJsLoadingErrorPackageName, } from '../loadClerkJsScript'; import { loadScript } from '../loadScript'; @@ -264,3 +267,189 @@ describe('buildClerkJsScriptAttributes()', () => { expect(buildClerkJsScriptAttributes(input)).toEqual(expected); }); }); + +describe('loadClerkUiScript(options)', () => { + const mockPublishableKey = 'pk_test_Zm9vLWJhci0xMy5jbGVyay5hY2NvdW50cy5kZXYk'; + + const mockClerkUi = { + render: vi.fn(), + }; + + beforeEach(() => { + vi.clearAllMocks(); + (loadScript as Mock).mockResolvedValue(undefined); + document.querySelector = vi.fn().mockReturnValue(null); + + (window as any).__unstable_ClerkUiCtor = undefined; + + vi.useFakeTimers(); + }); + + afterEach(() => { + vi.useRealTimers(); + }); + + test('throws error when publishableKey is missing', async () => { + await expect(loadClerkUiScript({} as any)).rejects.toThrow( + '@clerk/react: Missing publishableKey. You can get your key at https://dashboard.clerk.com/last-active?path=api-keys.', + ); + }); + + test('returns null immediately when ClerkUI is already loaded', async () => { + (window as any).__unstable_ClerkUiCtor = mockClerkUi; + + const result = await loadClerkUiScript({ publishableKey: mockPublishableKey }); + expect(result).toBeNull(); + expect(loadScript).not.toHaveBeenCalled(); + }); + + test('loads script and waits for ClerkUI to be available', async () => { + const loadPromise = loadClerkUiScript({ publishableKey: mockPublishableKey }); + + // Simulate ClerkUI becoming available after 250ms + setTimeout(() => { + (window as any).__unstable_ClerkUiCtor = mockClerkUi; + }, 250); + + // Advance timers to allow polling to detect ClerkUI + vi.advanceTimersByTime(300); + + const result = await loadPromise; + expect(result).toBeNull(); + expect(loadScript).toHaveBeenCalledWith( + expect.stringContaining( + `https://foo-bar-13.clerk.accounts.dev/npm/@clerk/ui@${jsPackageMajorVersion}/dist/ui.browser.js`, + ), + expect.objectContaining({ + async: true, + crossOrigin: 'anonymous', + beforeLoad: expect.any(Function), + }), + ); + }); + + test('times out and rejects when ClerkUI does not load', async () => { + let rejectedWith: any; + + const loadPromise = loadClerkUiScript({ publishableKey: mockPublishableKey, scriptLoadTimeout: 1000 }); + + try { + vi.advanceTimersByTime(1000); + await loadPromise; + } catch (error) { + rejectedWith = error; + } + + expect(rejectedWith).toBeInstanceOf(ClerkRuntimeError); + expect(rejectedWith.message).toContain('Failed to load Clerk UI'); + expect((window as any).__unstable_ClerkUiCtor).toBeUndefined(); + }); + + test('waits for existing script with timeout', async () => { + const mockExistingScript = document.createElement('script'); + document.querySelector = vi.fn().mockReturnValue(mockExistingScript); + + const loadPromise = loadClerkUiScript({ publishableKey: mockPublishableKey }); + + // Simulate ClerkUI becoming available after 250ms + setTimeout(() => { + (window as any).__unstable_ClerkUiCtor = mockClerkUi; + }, 250); + + // Advance timers to allow polling to detect ClerkUI + vi.advanceTimersByTime(300); + + const result = await loadPromise; + expect(result).toBeNull(); + expect(loadScript).not.toHaveBeenCalled(); + }); + + test('handles race condition when ClerkUI loads just as timeout fires', async () => { + const loadPromise = loadClerkUiScript({ publishableKey: mockPublishableKey, scriptLoadTimeout: 1000 }); + + setTimeout(() => { + (window as any).__unstable_ClerkUiCtor = mockClerkUi; + }, 999); + + vi.advanceTimersByTime(1000); + + const result = await loadPromise; + expect(result).toBeNull(); + expect((window as any).__unstable_ClerkUiCtor).toBe(mockClerkUi); + }); + + test('validates ClerkUI is properly loaded', async () => { + (window as any).__unstable_ClerkUiCtor = mockClerkUi; + + const result = await loadClerkUiScript({ publishableKey: mockPublishableKey }); + + expect(result).toBeNull(); + expect((window as any).__unstable_ClerkUiCtor).toBe(mockClerkUi); + }); +}); + +describe('clerkUiScriptUrl()', () => { + const mockDevPublishableKey = 'pk_test_Zm9vLWJhci0xMy5jbGVyay5hY2NvdW50cy5kZXYk'; + const mockProdPublishableKey = 'pk_live_ZXhhbXBsZS5jbGVyay5jb20k'; // example.clerk.com + + test('returns clerkUiUrl when provided', () => { + const customUrl = 'https://custom.clerk.com/ui.js'; + const result = clerkUiScriptUrl({ clerkUiUrl: customUrl, publishableKey: mockDevPublishableKey }); + expect(result).toBe(customUrl); + }); + + test('constructs URL correctly for development key', () => { + const result = clerkUiScriptUrl({ publishableKey: mockDevPublishableKey }); + expect(result).toBe( + `https://foo-bar-13.clerk.accounts.dev/npm/@clerk/ui@${jsPackageMajorVersion}/dist/ui.browser.js`, + ); + }); + + test('constructs URL correctly for production key', () => { + const result = clerkUiScriptUrl({ publishableKey: mockProdPublishableKey }); + expect(result).toBe(`https://example.clerk.com/npm/@clerk/ui@${jsPackageMajorVersion}/dist/ui.browser.js`); + }); + + test('uses provided clerkUiVersion', () => { + const result = clerkUiScriptUrl({ publishableKey: mockDevPublishableKey, clerkUiVersion: '1' }); + expect(result).toContain('/npm/@clerk/ui@1/'); + }); + + test('uses latest as default version when not specified', () => { + const result = clerkUiScriptUrl({ publishableKey: mockDevPublishableKey }); + // When no version is specified, versionSelector should return the major version + expect(result).toContain(`/npm/@clerk/ui@${jsPackageMajorVersion}/`); + }); +}); + +describe('buildClerkUiScriptAttributes()', () => { + const mockPublishableKey = 'pk_test_Zm9vLWJhci0xMy5jbGVyay5hY2NvdW50cy5kZXYk'; + const mockProxyUrl = 'https://proxy.clerk.com'; + const mockDomain = 'custom.com'; + + test.each([ + [ + 'all options', + { publishableKey: mockPublishableKey, proxyUrl: mockProxyUrl, domain: mockDomain }, + { + 'data-clerk-publishable-key': mockPublishableKey, + 'data-clerk-proxy-url': mockProxyUrl, + 'data-clerk-domain': mockDomain, + }, + ], + [ + 'only publishableKey', + { publishableKey: mockPublishableKey }, + { 'data-clerk-publishable-key': mockPublishableKey }, + ], + [ + 'publishableKey and proxyUrl', + { publishableKey: mockPublishableKey, proxyUrl: mockProxyUrl }, + { 'data-clerk-publishable-key': mockPublishableKey, 'data-clerk-proxy-url': mockProxyUrl }, + ], + ['no options', {}, {}], + ])('returns correct attributes with %s', (_, input, expected) => { + // @ts-ignore input loses correct type because of empty object + expect(buildClerkUiScriptAttributes(input)).toEqual(expected); + }); +}); diff --git a/packages/shared/src/loadClerkJsScript.ts b/packages/shared/src/loadClerkJsScript.ts index 65ff3169ecb..3ff4b5fd15d 100644 --- a/packages/shared/src/loadClerkJsScript.ts +++ b/packages/shared/src/loadClerkJsScript.ts @@ -30,6 +30,7 @@ export type LoadClerkJsScriptOptions = { export type LoadClerkUiScriptOptions = { publishableKey: string; clerkUiUrl?: string; + clerkUiVersion?: string; proxyUrl?: string; domain?: string; nonce?: string; @@ -162,15 +163,15 @@ export const clerkJsScriptUrl = (opts: LoadClerkJsScriptOptions) => { }; export const clerkUiScriptUrl = (opts: LoadClerkUiScriptOptions) => { - const { clerkUiUrl, proxyUrl, domain, publishableKey } = opts; + const { clerkUiUrl, clerkUiVersion, proxyUrl, domain, publishableKey } = opts; if (clerkUiUrl) { return clerkUiUrl; } const scriptHost = buildScriptHost({ publishableKey, proxyUrl, domain }); - // TODO: add version selector for clerk/ui similar to clerk-js - return `https://${scriptHost}/npm/@clerk/ui@latest/dist/ui.browser.js`; + const version = versionSelector(clerkUiVersion); + return `https://${scriptHost}/npm/@clerk/ui@${version}/dist/ui.browser.js`; }; export const buildClerkJsScriptAttributes = (options: LoadClerkJsScriptOptions) => { diff --git a/packages/shared/src/telemetry/events/theme-usage.ts b/packages/shared/src/telemetry/events/theme-usage.ts index dade8e68c61..c305242def6 100644 --- a/packages/shared/src/telemetry/events/theme-usage.ts +++ b/packages/shared/src/telemetry/events/theme-usage.ts @@ -1,4 +1,4 @@ -import type { Appearance, BaseTheme, TelemetryEventRaw } from '../../types'; +import type { TelemetryEventRaw } from '../../types'; export const EVENT_THEME_USAGE = 'THEME_USAGE'; export const EVENT_SAMPLING_RATE = 1; @@ -17,7 +17,7 @@ type EventThemeUsage = { * @example * telemetry.record(eventThemeUsage(appearance)); */ -export function eventThemeUsage(appearance?: Appearance): TelemetryEventRaw { +export function eventThemeUsage(appearance?: any): TelemetryEventRaw { const payload = analyzeThemeUsage(appearance); return { @@ -32,7 +32,7 @@ export function eventThemeUsage(appearance?: Appearance): TelemetryEventRaw; @@ -1467,7 +1465,7 @@ export type GoogleOneTapProps = GoogleOneTapRedirectUrlProps & { * @default true */ fedCmSupport?: boolean; - appearance?: SignInTheme; + appearance?: ClerkAppearanceTheme; }; export type SignUpProps = RoutingOptions & { @@ -1496,7 +1494,7 @@ export type SignUpProps = RoutingOptions & { * These options serve as overrides and will be merged with the global `appearance` * prop of ClerkProvider (if one is provided) */ - appearance?: SignUpTheme; + appearance?: ClerkAppearanceTheme; /** * Additional arbitrary metadata to be stored alongside the User object @@ -1535,7 +1533,7 @@ export type UserProfileProps = RoutingOptions & { * These options serve as overrides and will be merged with the global `appearance` * prop of ClerkProvider (if one is provided) */ - appearance?: UserProfileTheme; + appearance?: ClerkAppearanceTheme; /* * Specify additional scopes per OAuth provider that your users would like to provide if not already approved. * e.g. @@ -1583,7 +1581,7 @@ export type OrganizationProfileProps = RoutingOptions & { * These options serve as overrides and will be merged with the global `appearance` * prop of ClerkProvider (if one is provided) */ - appearance?: OrganizationProfileTheme; + appearance?: ClerkAppearanceTheme; /* * Provide custom pages and links to be rendered inside the OrganizationProfile. */ @@ -1635,7 +1633,7 @@ export type CreateOrganizationProps = RoutingOptions & { * These options serve as overrides and will be merged with the global `appearance` * prop of ClerkProvider (if one is provided) */ - appearance?: CreateOrganizationTheme; + appearance?: ClerkAppearanceTheme; }; export type CreateOrganizationModalProps = WithoutRouting; @@ -1686,9 +1684,9 @@ export type UserButtonProps = UserButtonProfileMode & { * These options serve as overrides and will be merged with the global `appearance` * prop of ClerkProvider (if one is provided) */ - appearance?: UserButtonTheme; + appearance?: ClerkAppearanceTheme; - /* + /** * Specify options for the underlying component. * e.g. */ @@ -1701,7 +1699,7 @@ export type UserButtonProps = UserButtonProfileMode & { }; export type UserAvatarProps = { - appearance?: UserAvatarTheme; + appearance?: ClerkAppearanceTheme; rounded?: boolean; }; @@ -1787,7 +1785,7 @@ export type OrganizationSwitcherProps = CreateOrganizationMode & * These options serve as overrides and will be merged with the global `appearance` * prop of ClerkProvider(if one is provided) */ - appearance?: OrganizationSwitcherTheme; + appearance?: ClerkAppearanceTheme; /* * Specify options for the underlying component. * e.g. @@ -1818,7 +1816,7 @@ export type OrganizationListProps = { * These options serve as overrides and will be merged with the global `appearance` * prop of ClerkProvider (if one is provided) */ - appearance?: OrganizationListTheme; + appearance?: ClerkAppearanceTheme; /** * Hides the screen for sending invitations after an organization is created. * @@ -1854,7 +1852,7 @@ export type WaitlistProps = { * These options serve as overrides and will be merged with the global `appearance` * prop of ClerkProvided (if one is provided) */ - appearance?: WaitlistTheme; + appearance?: ClerkAppearanceTheme; /** * Full URL or path where the SignIn component is mounted. */ @@ -1897,7 +1895,7 @@ type PricingTableBaseProps = { * These options serve as overrides and will be merged with the global `appearance` * prop of ClerkProvider (if one is provided) */ - appearance?: PricingTableTheme; + appearance?: ClerkAppearanceTheme; /* * Specify options for the underlying component. * e.g. @@ -1921,7 +1919,7 @@ export type APIKeysProps = { * These options serve as overrides and will be merged with the global `appearance` * prop of ClerkProvider (if one is provided) */ - appearance?: APIKeysTheme; + appearance?: ClerkAppearanceTheme; /** * Whether to show the description field in the API key creation form. * @@ -1951,7 +1949,7 @@ export type RevokeAPIKeyParams = { * @experimental This is an experimental API for the Billing feature that is available under a public beta, and the API is subject to change. It is advised to [pin](https://clerk.com/docs/pinning) the SDK version and the clerk-js version to avoid breaking changes. */ export type __internal_CheckoutProps = { - appearance?: CheckoutTheme; + appearance?: ClerkAppearanceTheme; planId?: string; planPeriod?: BillingSubscriptionPlanPeriod; for?: ForPayerType; @@ -1976,7 +1974,7 @@ export type __experimental_CheckoutButtonProps = { for?: ForPayerType; onSubscriptionComplete?: () => void; checkoutProps?: { - appearance?: CheckoutTheme; + appearance?: ClerkAppearanceTheme; portalId?: string; portalRoot?: HTMLElement | null | undefined; onClose?: () => void; @@ -2005,7 +2003,7 @@ export type __internal_PlanDetailsProps = ( planId?: never; } ) & { - appearance?: PlanDetailTheme; + appearance?: ClerkAppearanceTheme; initialPlanPeriod?: BillingSubscriptionPlanPeriod; portalId?: string; portalRoot?: PortalRoot; @@ -2029,7 +2027,7 @@ export type __experimental_PlanDetailsButtonProps = ( ) & { initialPlanPeriod?: BillingSubscriptionPlanPeriod; planDetailsProps?: { - appearance?: PlanDetailTheme; + appearance?: ClerkAppearanceTheme; portalId?: string; portalRoot?: PortalRoot; }; @@ -2046,7 +2044,7 @@ export type __internal_SubscriptionDetailsProps = { * @default 'user' */ for?: ForPayerType; - appearance?: SubscriptionDetailsTheme; + appearance?: ClerkAppearanceTheme; onSubscriptionCancel?: () => void; portalId?: string; portalRoot?: PortalRoot; @@ -2065,14 +2063,14 @@ export type __experimental_SubscriptionDetailsButtonProps = { for?: ForPayerType; onSubscriptionCancel?: () => void; subscriptionDetailsProps?: { - appearance?: SubscriptionDetailsTheme; + appearance?: ClerkAppearanceTheme; portalId?: string; portalRoot?: PortalRoot; }; }; export type __internal_OAuthConsentProps = { - appearance?: OAuthConsentTheme; + appearance?: ClerkAppearanceTheme; /** * Name of the OAuth application. */ @@ -2168,7 +2166,7 @@ export type TaskChooseOrganizationProps = { * Full URL or path to navigate to after successfully resolving all tasks */ redirectUrlComplete: string; - appearance?: TaskChooseOrganizationTheme; + appearance?: ClerkAppearanceTheme; }; export type CreateOrganizationInvitationParams = { @@ -2298,6 +2296,12 @@ export type IsomorphicClerkOptions = Without & { * This nonce value will be passed through to the `@clerk/clerk-js` script tag. Use it to implement a [strict-dynamic CSP](https://clerk.com/docs/guides/secure/best-practices/csp-headers#implementing-a-strict-dynamic-csp). Requires the `dynamic` prop to also be set. */ nonce?: string; + /** + * @internal + * This is a structural-only type for the `ui` object that can be passed + * to Clerk.load() and ClerkProvider + */ + ui?: { version: string; url?: string }; } & MultiDomainAndOrProxy; export interface LoadedClerk extends Clerk { diff --git a/packages/shared/src/types/index.ts b/packages/shared/src/types/index.ts index e640f009138..b2cc2a5a314 100644 --- a/packages/shared/src/types/index.ts +++ b/packages/shared/src/types/index.ts @@ -1,6 +1,5 @@ export type * from './apiKeys'; export type * from './apiKeysSettings'; -export type * from './appearance'; export type * from './attributes'; export type * from './authConfig'; export type * from './authObject'; @@ -13,7 +12,6 @@ export type * from './customMenuItems'; export type * from './customPages'; export type * from './deletedObject'; export type * from './displayConfig'; -export type * from './elementIds'; export type * from './emailAddress'; export type * from './enterpriseAccount'; export type * from './environment'; @@ -50,6 +48,7 @@ export type * from './protectConfig'; export type * from './redirects'; export type * from './resource'; export type * from './role'; +export type * from './elementIds'; export type * from './router'; /** * TODO @revamp-hooks: Drop this in the next major release. diff --git a/packages/shared/src/ui/types.ts b/packages/shared/src/ui/types.ts index 699b3710028..8b7e5ec4d73 100644 --- a/packages/shared/src/ui/types.ts +++ b/packages/shared/src/ui/types.ts @@ -1,5 +1,8 @@ import type { ModuleManager } from '../moduleManager'; -import type { Appearance, Clerk, ClerkOptions, EnvironmentResource } from '../types'; +import type { Clerk, ClerkOptions, EnvironmentResource } from '../types'; + +// TODO @nikos +type Appearance = any; export type UIVersion = string; diff --git a/packages/tanstack-react-start/src/client/ClerkProvider.tsx b/packages/tanstack-react-start/src/client/ClerkProvider.tsx index b9dbbc566cd..74d4702eeff 100644 --- a/packages/tanstack-react-start/src/client/ClerkProvider.tsx +++ b/packages/tanstack-react-start/src/client/ClerkProvider.tsx @@ -1,4 +1,5 @@ import { ClerkProvider as ReactClerkProvider } from '@clerk/react'; +import type { Ui } from '@clerk/react/internal'; import { ScriptOnce } from '@tanstack/react-router'; import { getGlobalStartContext } from '@tanstack/react-start'; import { useEffect } from 'react'; @@ -18,7 +19,10 @@ const SDK_METADATA = { const awaitableNavigateRef: { current: ReturnType | undefined } = { current: undefined }; -export function ClerkProvider({ children, ...providerProps }: TanstackStartClerkProviderProps): JSX.Element { +export function ClerkProvider({ + children, + ...providerProps +}: TanstackStartClerkProviderProps): JSX.Element { const awaitableNavigate = useAwaitableNavigate(); // @ts-expect-error: Untyped internal Clerk initial state const clerkInitialState = getGlobalStartContext()?.clerkInitialState ?? {}; diff --git a/packages/tanstack-react-start/src/client/types.ts b/packages/tanstack-react-start/src/client/types.ts index 9e52298f519..49e3a71c1b2 100644 --- a/packages/tanstack-react-start/src/client/types.ts +++ b/packages/tanstack-react-start/src/client/types.ts @@ -1,4 +1,5 @@ import type { ClerkProviderProps } from '@clerk/react'; +import type { Ui } from '@clerk/react/internal'; import type { InitialState, Without } from '@clerk/shared/types'; import type React from 'react'; @@ -23,7 +24,10 @@ export type ClerkState = { }; }; -export type TanstackStartClerkProviderProps = Without & { +export type TanstackStartClerkProviderProps = Without< + ClerkProviderProps, + 'publishableKey' | 'initialState' +> & { publishableKey?: string; children: React.ReactNode; }; diff --git a/packages/themes/CHANGELOG.md b/packages/themes/CHANGELOG.md deleted file mode 100644 index 89ef8925072..00000000000 --- a/packages/themes/CHANGELOG.md +++ /dev/null @@ -1,1727 +0,0 @@ -# Change Log - -## 2.4.39 - -### Patch Changes - -- Updated dependencies [[`d8f59a6`](https://github.com/clerk/javascript/commit/d8f59a66d56d8fb0dfea353ecd86af97d0ec56b7)]: - - @clerk/shared@3.35.2 - -## 2.4.38 - -### Patch Changes - -- Updated dependencies [[`a9c13ca`](https://github.com/clerk/javascript/commit/a9c13cae5a6f46ca753d530878f7e4492ca7938b)]: - - @clerk/shared@3.35.1 - -## 2.4.37 - -### Patch Changes - -- Updated dependencies [[`7be8f45`](https://github.com/clerk/javascript/commit/7be8f458367b2c050b0dc8c0481d7bbe090ea400), [`bdbb0d9`](https://github.com/clerk/javascript/commit/bdbb0d91712a84fc214c534fc47b62b1a2028ac9), [`aa184a4`](https://github.com/clerk/javascript/commit/aa184a46a91f9dec3fd275ec5867a8366d310469), [`1d4e7a7`](https://github.com/clerk/javascript/commit/1d4e7a7769e9efaaa945e4ba6468ad47bd24c807), [`42f0d95`](https://github.com/clerk/javascript/commit/42f0d95e943d82960de3f7e5da17d199eff9fddd), [`c63cc8e`](https://github.com/clerk/javascript/commit/c63cc8e9c38ed0521a22ebab43e10111f04f9daf), [`d32d724`](https://github.com/clerk/javascript/commit/d32d724c34a921a176eca159273f270c2af4e787), [`00291bc`](https://github.com/clerk/javascript/commit/00291bc8ae03c06f7154bd937628e8193f6e3ce9)]: - - @clerk/shared@3.35.0 - -## 2.4.36 - -### Patch Changes - -- Updated dependencies [[`a1d10fc`](https://github.com/clerk/javascript/commit/a1d10fc6e231f27ec7eabd0db45b8f7e8c98250e), [`b944ff3`](https://github.com/clerk/javascript/commit/b944ff30494a8275450ca0d5129cdf58f02bea81), [`4011c5e`](https://github.com/clerk/javascript/commit/4011c5e0014ede5e480074b73d064a1bc2a577dd)]: - - @clerk/shared@3.34.0 - -## 2.4.35 - -### Patch Changes - -- Updated dependencies [[`613cb97`](https://github.com/clerk/javascript/commit/613cb97cb7b3b33c3865cfe008ef9b1ea624cc8d)]: - - @clerk/shared@3.33.0 - -## 2.4.34 - -### Patch Changes - -- Updated dependencies [[`cc11472`](https://github.com/clerk/javascript/commit/cc11472e7318b806ee43d609cd03fb0446f56146), [`539fad7`](https://github.com/clerk/javascript/commit/539fad7b80ed284a7add6cf8c4c45cf4c6a0a8b2), [`c413433`](https://github.com/clerk/javascript/commit/c413433fee49701f252df574ce6a009d256c0cb9), [`a940c39`](https://github.com/clerk/javascript/commit/a940c39354bd0ee48d2fc9b0f3217ec20b2f32b4)]: - - @clerk/shared@3.32.0 - -## 2.4.33 - -### Patch Changes - -- Updated dependencies [[`a474c59`](https://github.com/clerk/javascript/commit/a474c59e3017358186de15c5b1e5b83002e72527), [`5536429`](https://github.com/clerk/javascript/commit/55364291e245ff05ca1e50e614e502d2081b87fb)]: - - @clerk/shared@3.31.1 - -## 2.4.32 - -### Patch Changes - -- Updated dependencies [[`ea65d39`](https://github.com/clerk/javascript/commit/ea65d390cd6d3b0fdd35202492e858f8c8370f73), [`b09b29e`](https://github.com/clerk/javascript/commit/b09b29e82323c8fc508c49ffe10c77a737ef0bec)]: - - @clerk/shared@3.31.0 - -## 2.4.31 - -### Patch Changes - -- Deprecate `@clerk/types` in favor of `@clerk/shared/types` ([#7022](https://github.com/clerk/javascript/pull/7022)) by [@nikosdouvlis](https://github.com/nikosdouvlis) - - The `@clerk/types` package is now deprecated. All type definitions have been consolidated and moved to `@clerk/shared/types` to improve consistency across the Clerk ecosystem. - - **Backward Compatibility:** - - The `@clerk/types` package will remain available and will continue to re-export all types from `@clerk/shared/types` to ensure backward compatibility. Existing applications will continue to work without any immediate breaking changes. However, we strongly recommend migrating to `@clerk/shared/types` as new type definitions and updates will only be added to `@clerk/shared/types` starting with the next major release. - - **Migration Steps:** - - Please update your imports from `@clerk/types` to `@clerk/shared/types`: - - ```typescript - // Before - import type { ClerkResource, UserResource } from '@clerk/types'; - - // After - import type { ClerkResource, UserResource } from '@clerk/shared/types'; - ``` - - **What Changed:** - - All type definitions including: - - Resource types (User, Organization, Session, etc.) - - API response types - - Configuration types - - Authentication types - - Error types - - And all other shared types - - Have been moved from `packages/types/src` to `packages/shared/src/types` and are now exported via `@clerk/shared/types`. - -- Updated dependencies [[`3e0ef92`](https://github.com/clerk/javascript/commit/3e0ef9281194714f56dcf656d0caf4f75dcf097c), [`2587aa6`](https://github.com/clerk/javascript/commit/2587aa671dac1ca66711889bf1cd1c2e2ac8d7c8)]: - - @clerk/shared@3.30.0 - -## 2.4.30 - -### Patch Changes - -- Updated dependencies [[`439427e`](https://github.com/clerk/javascript/commit/439427e44adef4f43e5f0719adf5654ea58c33e7), [`7dfbf3a`](https://github.com/clerk/javascript/commit/7dfbf3aa1b5269aee2d3af628b02027be9767088), [`d33b7b5`](https://github.com/clerk/javascript/commit/d33b7b5538e9bcbbca1ac23c46793d0cddcef533)]: - - @clerk/types@4.96.0 - -## 2.4.29 - -### Patch Changes - -- Updated dependencies [[`4d46e4e`](https://github.com/clerk/javascript/commit/4d46e4e601a5f2a213f1718af3f9271db4db0911)]: - - @clerk/types@4.95.1 - -## 2.4.28 - -### Patch Changes - -- Updated dependencies [[`a172d51`](https://github.com/clerk/javascript/commit/a172d51df2d7f2e450c983a15ae897624304a764)]: - - @clerk/types@4.95.0 - -## 2.4.27 - -### Patch Changes - -- Updated dependencies [[`53214f9`](https://github.com/clerk/javascript/commit/53214f9a600074affc84d616bbbe7a6b625e7d33), [`1441e68`](https://github.com/clerk/javascript/commit/1441e6851102e9eed5697ad78c695f75b4a20db2)]: - - @clerk/types@4.94.0 - -## 2.4.26 - -### Patch Changes - -- Updated dependencies [[`65b7cc7`](https://github.com/clerk/javascript/commit/65b7cc787a5f02a302b665b6eaf4d4b9a1cae4b0), [`6e09786`](https://github.com/clerk/javascript/commit/6e09786adeb0f481ca8b6d060ae8754b556a3f9a), [`aa7210c`](https://github.com/clerk/javascript/commit/aa7210c7fff34f6c6e2d4ca3cb736bbd35439cb6), [`2cd53cd`](https://github.com/clerk/javascript/commit/2cd53cd8c713dfa7f2e802fe08986411587095fa), [`1a2eee6`](https://github.com/clerk/javascript/commit/1a2eee6b8b6ead2d0481e93104fcaed6452bd1b9), [`2cd53cd`](https://github.com/clerk/javascript/commit/2cd53cd8c713dfa7f2e802fe08986411587095fa), [`1a2430a`](https://github.com/clerk/javascript/commit/1a2430a166fb1df5fbca76437c63423b18a49ced), [`31a04fc`](https://github.com/clerk/javascript/commit/31a04fc2b783f01cd4848c1e681af3b30e57bb2f), [`22b8e49`](https://github.com/clerk/javascript/commit/22b8e49f9fb65d55ab737d11f1f57a25bf947511), [`a66357e`](https://github.com/clerk/javascript/commit/a66357e8a5928199aebde408ec7cfaac152c2c42), [`dacc1af`](https://github.com/clerk/javascript/commit/dacc1af22e1d1af0940b2d626b8a47d376c19342)]: - - @clerk/types@4.93.0 - -## 2.4.25 - -### Patch Changes - -- Updated dependencies [[`fba4781`](https://github.com/clerk/javascript/commit/fba4781ff2a2d16f8934029fa6fb77d70953f2be), [`a1f6714`](https://github.com/clerk/javascript/commit/a1f671480cda6f978db059ba0640d4ed8b08f112)]: - - @clerk/types@4.92.0 - -## 2.4.24 - -### Patch Changes - -- Updated dependencies [[`f737d26`](https://github.com/clerk/javascript/commit/f737d268aa167889a4f3f7aba2658c2ba1fd909a)]: - - @clerk/types@4.91.0 - -## 2.4.23 - -### Patch Changes - -- Updated dependencies [[`37028ca`](https://github.com/clerk/javascript/commit/37028caad59cb0081ac74e70a44e4a419082a999)]: - - @clerk/types@4.90.0 - -## 2.4.22 - -### Patch Changes - -- Updated dependencies [[`e3e77eb`](https://github.com/clerk/javascript/commit/e3e77eb277c6b36847265db7b863c418e3708ab6), [`090ca74`](https://github.com/clerk/javascript/commit/090ca742c590bc4f369cf3e1ca2ec9917410ffe4)]: - - @clerk/types@4.89.0 - -## 2.4.21 - -### Patch Changes - -- Updated dependencies [[`41e0a41`](https://github.com/clerk/javascript/commit/41e0a4190b33dd2c4bdc0d536bbe83fcf99af9b0), [`1aa9e9f`](https://github.com/clerk/javascript/commit/1aa9e9f10c051319e9ff4b1a0ecd71507bd6a6aa), [`a88ee58`](https://github.com/clerk/javascript/commit/a88ee5827adee0cc8a62246d03a3034d8566fe21), [`d6c7bbb`](https://github.com/clerk/javascript/commit/d6c7bbba23f38c0b3ca7edebb53028a05c7b38e6)]: - - @clerk/types@4.88.0 - -## 2.4.20 - -### Patch Changes - -- Improve return type of createTheme ([#6778](https://github.com/clerk/javascript/pull/6778)) by [@alexcarpenter](https://github.com/alexcarpenter) - -- Updated dependencies [[`bcf24f2`](https://github.com/clerk/javascript/commit/bcf24f2f91913fa0dd3fbf02b3bbef345c4e1ea9), [`de90ede`](https://github.com/clerk/javascript/commit/de90ede82664b58bef9e294498384cf2c99a331e), [`9d4a95c`](https://github.com/clerk/javascript/commit/9d4a95c766396a0bc327fbf0560228bedb4828eb)]: - - @clerk/types@4.87.0 - -## 2.4.19 - -### Patch Changes - -- Add theme-usage telemetry ([#6529](https://github.com/clerk/javascript/pull/6529)) by [@alexcarpenter](https://github.com/alexcarpenter) - -- Updated dependencies [[`23948dc`](https://github.com/clerk/javascript/commit/23948dc777ec6a17bafbae59c253a93143b0e105), [`50a8622`](https://github.com/clerk/javascript/commit/50a8622c3579306f15e5d40e5ea72b4fe4384ef7)]: - - @clerk/types@4.86.0 - -## 2.4.18 - -### Patch Changes - -- Updated dependencies [[`55490c3`](https://github.com/clerk/javascript/commit/55490c31fadc82bdca6cd5f2b22e5e158aaba0cb), [`e8d21de`](https://github.com/clerk/javascript/commit/e8d21de39b591973dad48fc1d1851c4d28b162fe), [`637f2e8`](https://github.com/clerk/javascript/commit/637f2e8768b76aaf756062b6b5b44bf651f66789)]: - - @clerk/types@4.85.0 - -## 2.4.17 - -### Patch Changes - -- Updated dependencies [[`fced4fc`](https://github.com/clerk/javascript/commit/fced4fc869bb21c77826dfaf281b6640e0f0c006), [`1b1e8b1`](https://github.com/clerk/javascript/commit/1b1e8b1fd33b787f956b17b193e5fd0a4cdc6cec)]: - - @clerk/types@4.84.1 - -## 2.4.16 - -### Patch Changes - -- Updated dependencies [[`2a82737`](https://github.com/clerk/javascript/commit/2a8273705b9764e1a4613d5a0dbb738d0b156c05), [`cda5d7b`](https://github.com/clerk/javascript/commit/cda5d7b79b28dc03ec794ea54e0feb64b148cdd2), [`ba25a5b`](https://github.com/clerk/javascript/commit/ba25a5b5a3fa686a65f52e221d9d1712a389fea9), [`a50cfc8`](https://github.com/clerk/javascript/commit/a50cfc8f1dd168b436499e32fc8b0fc41d28bbff), [`377f67b`](https://github.com/clerk/javascript/commit/377f67b8e552d1a19efbe4530e9306675b7f8eab), [`65b12ee`](https://github.com/clerk/javascript/commit/65b12eeeb57ee80cdd8c36c5949d51f1227a413e), [`263722e`](https://github.com/clerk/javascript/commit/263722e61fd27403b4c8d9794880686771e123f9)]: - - @clerk/types@4.84.0 - -## 2.4.15 - -### Patch Changes - -- Updated dependencies [[`600c648`](https://github.com/clerk/javascript/commit/600c648d4087a823341041c90018797fbc0033f0)]: - - @clerk/types@4.83.0 - -## 2.4.14 - -### Patch Changes - -- Updated dependencies [[`d52714e`](https://github.com/clerk/javascript/commit/d52714e4cb7f369c74826cd4341c58eb1900abe4), [`2ed539c`](https://github.com/clerk/javascript/commit/2ed539cc7f08ed4d70c33621563ad386ea8becc5), [`c16a7a5`](https://github.com/clerk/javascript/commit/c16a7a5837fc15e0e044baf9c809b8da6fbac795)]: - - @clerk/types@4.82.0 - -## 2.4.13 - -### Patch Changes - -- Updated dependencies [[`e52bf8e`](https://github.com/clerk/javascript/commit/e52bf8ebef74a9e123c69b69acde1340c01d32d7), [`c043c19`](https://github.com/clerk/javascript/commit/c043c1919854aaa5b9cf7f6df5bb517f5617f7a1), [`c28d29c`](https://github.com/clerk/javascript/commit/c28d29c79bb4f144d782313ca72df7db91a77340), [`172e054`](https://github.com/clerk/javascript/commit/172e054a3511be12d16ba19037db320c2d9838bf)]: - - @clerk/types@4.81.0 - -## 2.4.12 - -### Patch Changes - -- Updated dependencies [[`8dc6bad`](https://github.com/clerk/javascript/commit/8dc6bad5c7051b59bd8c73e65d497f6a974bb1c3), [`aa6a3c3`](https://github.com/clerk/javascript/commit/aa6a3c3d3ba2de67a468c996cbf0bff43a09ddb8), [`db50c47`](https://github.com/clerk/javascript/commit/db50c4734920ada6002de8c62c994047eb6cb5a0)]: - - @clerk/types@4.80.0 - -## 2.4.11 - -### Patch Changes - -- Updated dependencies [[`413468c`](https://github.com/clerk/javascript/commit/413468c9b9c8fb7576f8e4cbdccff98784e33fef), [`7b7eb1f`](https://github.com/clerk/javascript/commit/7b7eb1fc0235249c5c179239078294118f2947cd)]: - - @clerk/types@4.79.0 - -## 2.4.10 - -### Patch Changes - -- Updated dependencies [[`5b24129`](https://github.com/clerk/javascript/commit/5b24129ddcfc2f7dc6eb79d8c818b4ff97c68e9a)]: - - @clerk/types@4.78.0 - -## 2.4.9 - -### Patch Changes - -- Updated dependencies [[`4db1e58`](https://github.com/clerk/javascript/commit/4db1e58d70b60e1e236709b507666715d571e925), [`69498df`](https://github.com/clerk/javascript/commit/69498dfca3e6bb388eb8c94313eac06347dd5a27)]: - - @clerk/types@4.77.0 - -## 2.4.8 - -### Patch Changes - -- Updated dependencies [[`15fe106`](https://github.com/clerk/javascript/commit/15fe1060f730a6a4391f3d2451d23edd3218e1ae), [`173837c`](https://github.com/clerk/javascript/commit/173837c2526aa826b7981ee8d6d4f52c00675da5), [`8b52d7a`](https://github.com/clerk/javascript/commit/8b52d7ae19407e8ab5a5451bd7d34b6bc38417de), [`854dde8`](https://github.com/clerk/javascript/commit/854dde88e642c47b5a29ac8f576c8c1976e5d067), [`ae2e2d6`](https://github.com/clerk/javascript/commit/ae2e2d6b336be6b596cc855e549843beb5bfd2a1), [`037f25a`](https://github.com/clerk/javascript/commit/037f25a8171888168913b186b7edf871e0aaf197), [`f8b38b7`](https://github.com/clerk/javascript/commit/f8b38b7059e498fef3ac1271346be0710aa31c76)]: - - @clerk/types@4.76.0 - -## 2.4.7 - -### Patch Changes - -- Updated dependencies [[`b72a3dd`](https://github.com/clerk/javascript/commit/b72a3dda2467720e5dc8cab3e7e6a110f3beb79b), [`d93b0ed`](https://github.com/clerk/javascript/commit/d93b0edf4adc57d48a26cb08444192887ccec659), [`6459f7d`](https://github.com/clerk/javascript/commit/6459f7dabe5f163f48ed73106bb901d8187da3e2), [`9084759`](https://github.com/clerk/javascript/commit/90847593300be605e1ee1c06dac147ce68b25dc7)]: - - @clerk/types@4.75.0 - -## 2.4.6 - -### Patch Changes - -- Updated dependencies [[`1ad16da`](https://github.com/clerk/javascript/commit/1ad16daa49795a861ae277001831230580b6b9f4), [`4edef81`](https://github.com/clerk/javascript/commit/4edef81dd423a0471e3f579dd6b36094aa8546aa), [`696f8e1`](https://github.com/clerk/javascript/commit/696f8e11a3e5391e6b5a97d98e929b8973575b9a), [`f318d22`](https://github.com/clerk/javascript/commit/f318d22cf83caaef272bcf532561a03ca72575e7)]: - - @clerk/types@4.74.0 - -## 2.4.5 - -### Patch Changes - -- Updated dependencies [[`f93965f`](https://github.com/clerk/javascript/commit/f93965f64c81030f9fcf9d1cc4e4984d30cd12ec), [`7b6dcee`](https://github.com/clerk/javascript/commit/7b6dceea5bfd7f1cc1bf24126aa715307e24ae7f)]: - - @clerk/types@4.73.0 - -## 2.4.4 - -### Patch Changes - -- Add `shadcn.css` export for importing within stylesheets to resolve Tailwind not picking up the elements class names used within the shadcn theme. ([#6415](https://github.com/clerk/javascript/pull/6415)) by [@alexcarpenter](https://github.com/alexcarpenter) - -- Updated dependencies [[`22c35ef`](https://github.com/clerk/javascript/commit/22c35efb59226df2efaa2891fa4775c13312f4c6), [`e8d816a`](https://github.com/clerk/javascript/commit/e8d816a3350e862c3e9e1d4f8c96c047a0a016a2), [`aa9f185`](https://github.com/clerk/javascript/commit/aa9f185e21b58f8a6e03ea44ce29ee09ad2477d9), [`af0e123`](https://github.com/clerk/javascript/commit/af0e12393c9412281626e20dafb1b3a15558f6d9), [`3d1d871`](https://github.com/clerk/javascript/commit/3d1d8711405646cf3c2aabe99e08337a1028703a)]: - - @clerk/types@4.72.0 - -## 2.4.3 - -### Patch Changes - -- Updated dependencies [[`e404456`](https://github.com/clerk/javascript/commit/e4044566bca81f63c8e9c630fdec0f498ad6fc08), [`d58b959`](https://github.com/clerk/javascript/commit/d58b9594cf65158e87dbaa90d632c45f543373e1), [`822ba1f`](https://github.com/clerk/javascript/commit/822ba1fd5e7daf665120cf183e4600a227098d53), [`d4d2612`](https://github.com/clerk/javascript/commit/d4d2612483baf356c389ef0ba5084059025481f2)]: - - @clerk/types@4.71.0 - -## 2.4.2 - -### Patch Changes - -- Updated dependencies [[`b0fdc9e`](https://github.com/clerk/javascript/commit/b0fdc9eaf764ca0c17cbe0810b7d240f6d9db0b6)]: - - @clerk/types@4.70.1 - -## 2.4.1 - -### Patch Changes - -- Updated dependencies [[`cd59c0e`](https://github.com/clerk/javascript/commit/cd59c0e5512a341dd8fb420aca583333c8243aa5)]: - - @clerk/types@4.70.0 - -## 2.4.0 - -### Minor Changes - -- Add shadcn theme to @clerk/themes ([#6322](https://github.com/clerk/javascript/pull/6322)) by [@alexcarpenter](https://github.com/alexcarpenter) - -- Add optional `cssLayerName` to `BaseTheme` object ([#6322](https://github.com/clerk/javascript/pull/6322)) by [@alexcarpenter](https://github.com/alexcarpenter) - -### Patch Changes - -- Fix shadcn theme provider icon rendering in dark mode for Apple, GitHub, and OKX Wallet. ([#6375](https://github.com/clerk/javascript/pull/6375)) by [@alexcarpenter](https://github.com/alexcarpenter) - -- Updated dependencies [[`fecc99d`](https://github.com/clerk/javascript/commit/fecc99d43cb7db5b99863829acb234cbce0da264), [`10e1060`](https://github.com/clerk/javascript/commit/10e10605b18a58f33a93caed058159c190678e74), [`92c44dd`](https://github.com/clerk/javascript/commit/92c44dd9d51e771a928a8da7004bdb8f8bdbaf58), [`a04a8f5`](https://github.com/clerk/javascript/commit/a04a8f5f81241ee41d93cd64793beca9d6296abb), [`c61855c`](https://github.com/clerk/javascript/commit/c61855c51d9c129d48c4543da3719939ad82f623), [`43ea069`](https://github.com/clerk/javascript/commit/43ea069c570dc64503fc82356ad28a2e43689d45)]: - - @clerk/types@4.69.0 - -## 2.3.3 - -### Patch Changes - -- Updated dependencies [[`d2f6f9e`](https://github.com/clerk/javascript/commit/d2f6f9e02036a4288916fcce14f24be5d56561c4), [`a329836`](https://github.com/clerk/javascript/commit/a329836a6c64f0a551a277ccae07043456a70523), [`6041c39`](https://github.com/clerk/javascript/commit/6041c39a31e787a6065dbc3f21e1c569982a06de), [`3f1270d`](https://github.com/clerk/javascript/commit/3f1270db86a21ead0ed6f0bd4f9986485203e973)]: - - @clerk/types@4.68.0 - -## 2.3.2 - -### Patch Changes - -- Updated dependencies [[`2a90b68`](https://github.com/clerk/javascript/commit/2a90b689550ae960496c9292ca23e0225e3425cd)]: - - @clerk/types@4.67.0 - -## 2.3.1 - -### Patch Changes - -- Updated dependencies [[`8ee859c`](https://github.com/clerk/javascript/commit/8ee859ce00d1d5747c14a80fe7166303e64a4f1f)]: - - @clerk/types@4.66.1 - -## 2.3.0 - -### Minor Changes - -- Expose Clerk CSS variables as an option for theming Clerk's components. This change introduces CSS custom properties that allow developers to customize Clerk's appearance using standard CSS variables, providing a more flexible theming approach. ([#6275](https://github.com/clerk/javascript/pull/6275)) by [@alexcarpenter](https://github.com/alexcarpenter) - - ```css - :root { - --clerk-color-primary: #6d47ff; - --clerk-color-primary-foreground: #ffffff; - } - ``` - - ## Deprecated variables - - | Deprecated | New | - | ------------------------------ | ------------------------ | - | `colorText` | `colorForeground` | - | `colorTextOnPrimaryBackground` | `colorPrimaryForeground` | - | `colorTextSecondary` | `colorMutedForeground` | - | `spacingUnit` | `spacing` | - | `colorInputText` | `colorInputForeground` | - | `colorInputBackground` | `colorInput` | - - Deprecated variables will continue to work but will be removed in the next major version. - - ## New variables - - `colorRing` - The color of the ring when an interactive element is focused. - - `colorMuted` - The background color for elements of lower importance, eg: a muted background. - - `colorShadow` - The base shadow color used in the components. - - `colorBorder` - The base border color used in the components. - - `colorModalBackdrop` - The background color of the modal backdrop. - -### Patch Changes - -- Updated dependencies [[`025e304`](https://github.com/clerk/javascript/commit/025e304c4d6402dfd750ee51ac9c8fc2dea1f353), [`dedf487`](https://github.com/clerk/javascript/commit/dedf48703986d547d5b28155b0182a51030cffeb), [`b96114e`](https://github.com/clerk/javascript/commit/b96114e438638896ba536bb7a17b09cdadcd9407)]: - - @clerk/types@4.66.0 - -## 2.2.56 - -### Patch Changes - -- Updated dependencies [[`2be6a53`](https://github.com/clerk/javascript/commit/2be6a53959cb8a3127c2eb5d1aeb4248872d2c24), [`6826d0b`](https://github.com/clerk/javascript/commit/6826d0bbd03e844d49224565878a4326684f06b4), [`f6a1c35`](https://github.com/clerk/javascript/commit/f6a1c35bd5fb4bd2a3cd45bdaf9defe6be59d4a9)]: - - @clerk/types@4.65.0 - -## 2.2.55 - -### Patch Changes - -- Updated dependencies [[`f42c4fe`](https://github.com/clerk/javascript/commit/f42c4fedfdab873129b876eba38b3677f190b460), [`ec207dc`](https://github.com/clerk/javascript/commit/ec207dcd2a13340cfa4e3b80d3d52d1b4e7d5f23)]: - - @clerk/types@4.64.0 - -## 2.2.54 - -### Patch Changes - -- Updated dependencies [[`8387a39`](https://github.com/clerk/javascript/commit/8387a392a04906f0f10d84c61cfee36f23942f85), [`f2a6641`](https://github.com/clerk/javascript/commit/f2a66419b1813abc86ea98fde7475861995a1486)]: - - @clerk/types@4.63.0 - -## 2.2.53 - -### Patch Changes - -- Updated dependencies [[`edc0bfd`](https://github.com/clerk/javascript/commit/edc0bfdae929dad78a99dfd6275aad947d9ddd73)]: - - @clerk/types@4.62.1 - -## 2.2.52 - -### Patch Changes - -- Updated dependencies [[`f1be1fe`](https://github.com/clerk/javascript/commit/f1be1fe3d575c11acd04fc7aadcdec8f89829894), [`bffb42a`](https://github.com/clerk/javascript/commit/bffb42aaf266a188b9ae7d16ace3024d468a3bd4)]: - - @clerk/types@4.62.0 - -## 2.2.51 - -### Patch Changes - -- Updated dependencies [[`b495279`](https://github.com/clerk/javascript/commit/b4952796e3c7dee4ab4726de63a17b7f4265ce37), [`c3fa15d`](https://github.com/clerk/javascript/commit/c3fa15d60642b4fcbcf26e21caaca0fc60975795), [`52d5e57`](https://github.com/clerk/javascript/commit/52d5e5768d54725b4d20d028135746493e05d44c), [`15a945c`](https://github.com/clerk/javascript/commit/15a945c02a9f6bc8d2f7d1e3534217100bf45936)]: - - @clerk/types@4.61.0 - -## 2.2.50 - -### Patch Changes - -- Updated dependencies [[`19e9e11`](https://github.com/clerk/javascript/commit/19e9e11af04f13fd12975fbf7016fe0583202056), [`18bcb64`](https://github.com/clerk/javascript/commit/18bcb64a3e8b6d352d7933ed094d68214e6e80fb), [`138f733`](https://github.com/clerk/javascript/commit/138f733f13121487268a4f96e6eb2cffedc6e238), [`48be55b`](https://github.com/clerk/javascript/commit/48be55b61a86e014dd407414764d24bb43fd26f3), [`2c6f805`](https://github.com/clerk/javascript/commit/2c6f805a9e6e4685990f9a8abc740b2d0859a453), [`97749d5`](https://github.com/clerk/javascript/commit/97749d570bc687c7e05cd800a50e0ae4180a371d)]: - - @clerk/types@4.60.1 - -## 2.2.49 - -### Patch Changes - -- Updated dependencies [[`d8fa5d9`](https://github.com/clerk/javascript/commit/d8fa5d9d3d8dc575260d8d2b7c7eeeb0052d0b0d), [`be2e89c`](https://github.com/clerk/javascript/commit/be2e89ca11aa43d48f74c57a5a34e20d85b4003c), [`5644d94`](https://github.com/clerk/javascript/commit/5644d94f711a0733e4970c3f15c24d56cafc8743), [`b578225`](https://github.com/clerk/javascript/commit/b5782258242474c9b0987a3f8349836cd763f24b), [`8838120`](https://github.com/clerk/javascript/commit/8838120596830b88fec1c6c853371dabfec74a0d)]: - - @clerk/types@4.60.0 - -## 2.2.48 - -### Patch Changes - -- Updated dependencies [[`2c6a0cc`](https://github.com/clerk/javascript/commit/2c6a0cca6e824bafc6b0d0501784517a5b1f75ea), [`71e6a1f`](https://github.com/clerk/javascript/commit/71e6a1f1024d65b7a09cdc8fa81ce0164e0a34cb)]: - - @clerk/types@4.59.3 - -## 2.2.47 - -### Patch Changes - -- Updated dependencies [[`6ed3dfc`](https://github.com/clerk/javascript/commit/6ed3dfc1bc742ac9d9a2307fe8e4733411cbc0d7)]: - - @clerk/types@4.59.2 - -## 2.2.46 - -### Patch Changes - -- Updated dependencies [[`c305b31`](https://github.com/clerk/javascript/commit/c305b310e351e9ce2012f805b35e464c3e43e310)]: - - @clerk/types@4.59.1 - -## 2.2.45 - -### Patch Changes - -- Updated dependencies [[`b1337df`](https://github.com/clerk/javascript/commit/b1337dfeae8ccf8622efcf095e3201f9bbf1cefa), [`65f0878`](https://github.com/clerk/javascript/commit/65f08788ee5e56242eee2194c73ba90965c75c97), [`df6fefd`](https://github.com/clerk/javascript/commit/df6fefd05fd2df93f5286d97e546b48911adea7c), [`4282bfa`](https://github.com/clerk/javascript/commit/4282bfa09491225bde7d619fe9a3561062703f69), [`5491491`](https://github.com/clerk/javascript/commit/5491491711e0a8ee37828451c1f603a409de32cf)]: - - @clerk/types@4.59.0 - -## 2.2.44 - -### Patch Changes - -- Updated dependencies [[`1ff6d6e`](https://github.com/clerk/javascript/commit/1ff6d6efbe838b3f7f6977b2b5215c2cafd715f6), [`fbf3cf4`](https://github.com/clerk/javascript/commit/fbf3cf4916469c4e118870bf12efca2d0f77d9d8)]: - - @clerk/types@4.58.1 - -## 2.2.43 - -### Patch Changes - -- Updated dependencies [[`0f5145e`](https://github.com/clerk/javascript/commit/0f5145e164f3d3d5faf57e58162b05e7110d2403), [`afdfd18`](https://github.com/clerk/javascript/commit/afdfd18d645608dec37e52a291a91ba5f42dcbe7), [`b7c51ba`](https://github.com/clerk/javascript/commit/b7c51baac6df1129b468274c9a7f63ca303f16ce), [`437b53b`](https://github.com/clerk/javascript/commit/437b53b67e281d076b5b3f927e11c1d64666d154), [`5217155`](https://github.com/clerk/javascript/commit/52171554250c5c58f4f497b6d3c7416e79ac77da)]: - - @clerk/types@4.58.0 - -## 2.2.42 - -### Patch Changes - -- Updated dependencies [[`4db96e0`](https://github.com/clerk/javascript/commit/4db96e0ff2ab44c7bdd8540e09ec70b84b19d3eb), [`36fb43f`](https://github.com/clerk/javascript/commit/36fb43f8b35866bdc20680fac58020f036d30d1f), [`e5ac444`](https://github.com/clerk/javascript/commit/e5ac4447f52bb6887ad686feab308fe9daf76e33), [`4db96e0`](https://github.com/clerk/javascript/commit/4db96e0ff2ab44c7bdd8540e09ec70b84b19d3eb), [`d227805`](https://github.com/clerk/javascript/commit/d22780599a5e29545a3d8309cc411c2e8659beac)]: - - @clerk/types@4.57.1 - -## 2.2.41 - -### Patch Changes - -- Updated dependencies [[`db0138f`](https://github.com/clerk/javascript/commit/db0138f3f72aea8cb68a5684a90123f733848f63), [`aa97231`](https://github.com/clerk/javascript/commit/aa97231962e3f472a46135e376159c6ddcf1157b), [`c792f37`](https://github.com/clerk/javascript/commit/c792f37129fd6475d5af95146e9ef0f1c8eff730), [`3bf08a9`](https://github.com/clerk/javascript/commit/3bf08a9e0a9e65496edac5fc3bb22ad7b561df26), [`74cf3b2`](https://github.com/clerk/javascript/commit/74cf3b28cdf622a942aaf99caabfba74b7e856fd), [`037b113`](https://github.com/clerk/javascript/commit/037b113aaedd53d4647d88f1659eb9c14cf6f275), [`c15a412`](https://github.com/clerk/javascript/commit/c15a412169058e2304a51c9e92ffaa7f6bb2a898), [`7726a03`](https://github.com/clerk/javascript/commit/7726a03a7fec4d292b6de2587b84ed4371984c23), [`b846a9a`](https://github.com/clerk/javascript/commit/b846a9ab96db6b1d8344a4b693051618865508a8), [`e66c800`](https://github.com/clerk/javascript/commit/e66c8002b82b2902f77e852e16482f5cfb062d2c), [`45e8298`](https://github.com/clerk/javascript/commit/45e829890ec9ac66f07e0d7076cd283f14c893ed), [`9c41091`](https://github.com/clerk/javascript/commit/9c41091eb795bce8ffeeeca0264ae841fe07b426), [`29462b4`](https://github.com/clerk/javascript/commit/29462b433eb411ce614e4768e5844cacd00c1975), [`322c43f`](https://github.com/clerk/javascript/commit/322c43f6807a932c3cfaaef1b587b472c80180d2), [`17397f9`](https://github.com/clerk/javascript/commit/17397f95b715bd4fefd7f63c1d351abcf1c8ee16), [`45e8298`](https://github.com/clerk/javascript/commit/45e829890ec9ac66f07e0d7076cd283f14c893ed)]: - - @clerk/types@4.57.0 - -## 2.2.40 - -### Patch Changes - -- Updated dependencies [[`9ec0a73`](https://github.com/clerk/javascript/commit/9ec0a7353e9f6ea661c3d7b9542423b6eb1d29e9), [`d9222fc`](https://github.com/clerk/javascript/commit/d9222fc3c21da2bcae30b06f0b1897f526935582)]: - - @clerk/types@4.56.3 - -## 2.2.39 - -### Patch Changes - -- Updated dependencies [[`225b9ca`](https://github.com/clerk/javascript/commit/225b9ca21aba44930872a85d6b112ee2a1b606b9)]: - - @clerk/types@4.56.2 - -## 2.2.38 - -### Patch Changes - -- Updated dependencies [[`387bf62`](https://github.com/clerk/javascript/commit/387bf623406306e0c5c08da937f4930a7ec5e4a5), [`294da82`](https://github.com/clerk/javascript/commit/294da82336e7a345900d7ef9b28f56a7c8864c52)]: - - @clerk/types@4.56.1 - -## 2.2.37 - -### Patch Changes - -- Updated dependencies [[`b02e766`](https://github.com/clerk/javascript/commit/b02e76627e47aec314573586451fa345a089115a), [`5d78b28`](https://github.com/clerk/javascript/commit/5d78b286b63e35fbcf44aac1f7657cbeaba4d659), [`d7f4438`](https://github.com/clerk/javascript/commit/d7f4438fa4bfd04474d5cdb9212ba908568ad6d2), [`5866855`](https://github.com/clerk/javascript/commit/58668550ec91d5511cf775972c54dc485185cc58), [`0007106`](https://github.com/clerk/javascript/commit/00071065998a3676c51e396b4c0afcbf930a9898), [`462b5b2`](https://github.com/clerk/javascript/commit/462b5b271d4e120d58a85818a358b60a6b3c8100), [`447d7a9`](https://github.com/clerk/javascript/commit/447d7a9e133c2a0e7db014bd5837e6ffff08f572), [`2beea29`](https://github.com/clerk/javascript/commit/2beea2957c67bc62446fe24d36332b0a4e850d7d), [`115601d`](https://github.com/clerk/javascript/commit/115601d12fd65dbf3011c0cda368525a2b95bfeb)]: - - @clerk/types@4.56.0 - -## 2.2.36 - -### Patch Changes - -- Updated dependencies [[`8b25035`](https://github.com/clerk/javascript/commit/8b25035aa49382fe1cd1c6f30ec80e86bcf9d66e)]: - - @clerk/types@4.55.1 - -## 2.2.35 - -### Patch Changes - -- Updated dependencies [[`33201bf`](https://github.com/clerk/javascript/commit/33201bf972d6a980617d47ebd776bef76f871833), [`4334598`](https://github.com/clerk/javascript/commit/4334598108ff2cfa3c25b5a46117c1c9c65b7974), [`0ae0403`](https://github.com/clerk/javascript/commit/0ae040303d239b75a3221436354a2c2ecdb85aae)]: - - @clerk/types@4.55.0 - -## 2.2.34 - -### Patch Changes - -- Updated dependencies [[`45486ac`](https://github.com/clerk/javascript/commit/45486acebf4d133efb09a3622a738cdbf4e51d66), [`837692a`](https://github.com/clerk/javascript/commit/837692aa40197b1574783ad36d0d017a771c08e1), [`0c00e59`](https://github.com/clerk/javascript/commit/0c00e59ff4714491650ac9480ae3b327c626d30d), [`6a5f644`](https://github.com/clerk/javascript/commit/6a5f6447a36a635d6201f8bb7619fb844ab21b79)]: - - @clerk/types@4.54.2 - -## 2.2.33 - -### Patch Changes - -- Updated dependencies [[`ab939fd`](https://github.com/clerk/javascript/commit/ab939fdb29150c376280b42f861a188a33f57dcc), [`03284da`](https://github.com/clerk/javascript/commit/03284da6a93a790ce3e3ebbd871c06e19f5a8803), [`7389ba3`](https://github.com/clerk/javascript/commit/7389ba3164ca0d848fb0a9de5d7e9716925fadcc), [`f6ef841`](https://github.com/clerk/javascript/commit/f6ef841125ff21ca8cae731d1f47f3a101d887e1), [`e634830`](https://github.com/clerk/javascript/commit/e6348301ab56a7868f24c1b9a4dd9e1d60f6027b), [`f8887b2`](https://github.com/clerk/javascript/commit/f8887b2cbd145e8e49bec890e8b6e02e34178d6a)]: - - @clerk/types@4.54.1 - -## 2.2.32 - -### Patch Changes - -- Updated dependencies [[`e4d04ae`](https://github.com/clerk/javascript/commit/e4d04aea490ab67e3431729398d3f4c46fc3e7e7), [`431a821`](https://github.com/clerk/javascript/commit/431a821b590835bcf6193a4cbdd234c5e763e08c), [`93068ea`](https://github.com/clerk/javascript/commit/93068ea9eb19d8c8b9c7ade35d0cd860e08049fc), [`48438b4`](https://github.com/clerk/javascript/commit/48438b409036088701bda7e1e732d6a51bee8cdc), [`196dcb4`](https://github.com/clerk/javascript/commit/196dcb47928bd22a3382197f8594a590f688faee)]: - - @clerk/types@4.54.0 - -## 2.2.31 - -### Patch Changes - -- Updated dependencies [[`554242e`](https://github.com/clerk/javascript/commit/554242e16e50c92a6afb6ed74c681b04b9f113b5)]: - - @clerk/types@4.53.0 - -## 2.2.30 - -### Patch Changes - -- Updated dependencies [[`3ad3bc8`](https://github.com/clerk/javascript/commit/3ad3bc8380b354b0cd952eb58eb6c07650efa0f2), [`cfa94b8`](https://github.com/clerk/javascript/commit/cfa94b88476608edf8c2486e8ec0d3f3f82e0bfb), [`2033919`](https://github.com/clerk/javascript/commit/203391964857b98dae11944799d1e6328439e838), [`5f3cc46`](https://github.com/clerk/javascript/commit/5f3cc460b6b775b5a74746758b8cff11649a877a)]: - - @clerk/types@4.52.0 - -## 2.2.29 - -### Patch Changes - -- Updated dependencies [[`f6f275d`](https://github.com/clerk/javascript/commit/f6f275dac5ae83ac0c2016a85a6a0cee9513f224)]: - - @clerk/types@4.51.1 - -## 2.2.28 - -### Patch Changes - -- Updated dependencies [[`e1ec52b`](https://github.com/clerk/javascript/commit/e1ec52b93038c9cb24e030dc06e53825a384a480), [`bebb6d8`](https://github.com/clerk/javascript/commit/bebb6d8af66b2bb7a4b3bdf96f9d480e65b31ba2), [`d0d5203`](https://github.com/clerk/javascript/commit/d0d5203e4ee9e2e1bed5c00ef0f87f0130f1d298), [`9b25e31`](https://github.com/clerk/javascript/commit/9b25e311cf5e15f896c7948faa42ace45df364c5)]: - - @clerk/types@4.51.0 - -## 2.2.27 - -### Patch Changes - -- Updated dependencies [[`ec4521b`](https://github.com/clerk/javascript/commit/ec4521b4fe56602f524a0c6d1b09d21aef5d8bd0), [`f30fa75`](https://github.com/clerk/javascript/commit/f30fa750754f19030f932a666d2bdbdf0d86743d), [`9c68678`](https://github.com/clerk/javascript/commit/9c68678e87047e6312b708b775ebfb23a3e22f8a)]: - - @clerk/types@4.50.2 - -## 2.2.26 - -### Patch Changes - -- Updated dependencies [[`e20fb6b`](https://github.com/clerk/javascript/commit/e20fb6b397fb69c9d5af4e321267b82f12a5f127), [`77e6462`](https://github.com/clerk/javascript/commit/77e64628560cab688af214edb5922e67cd68a951)]: - - @clerk/types@4.50.1 - -## 2.2.25 - -### Patch Changes - -- Updated dependencies [[`1da28a2`](https://github.com/clerk/javascript/commit/1da28a28bf602069b433c15b92df21f682779294), [`f20dc15`](https://github.com/clerk/javascript/commit/f20dc159f542449e7f5b437b70d3eb3ba04d6975), [`4d9f1ee`](https://github.com/clerk/javascript/commit/4d9f1ee8c22fe1e4a166ff054d0af4d37b829f0a)]: - - @clerk/types@4.50.0 - -## 2.2.24 - -### Patch Changes - -- Updated dependencies [[`466ed13`](https://github.com/clerk/javascript/commit/466ed136af73b59b267d92ad3296039d1c3a4fcc)]: - - @clerk/types@4.49.2 - -## 2.2.23 - -### Patch Changes - -- Updated dependencies [[`3910ebe`](https://github.com/clerk/javascript/commit/3910ebea85817273f18fd2f3f142dd1c728e2220)]: - - @clerk/types@4.49.1 - -## 2.2.22 - -### Patch Changes - -- Updated dependencies [[`725918d`](https://github.com/clerk/javascript/commit/725918df2e74cea15e9b748aaf103a52df8e8500), [`91d0f0b`](https://github.com/clerk/javascript/commit/91d0f0b0dccab7168ad4dc06c8629808938c235f), [`9572bf5`](https://github.com/clerk/javascript/commit/9572bf5bdfb7dc309ec8714989b98ab12174965b), [`39bbc51`](https://github.com/clerk/javascript/commit/39bbc5189a33dc6cebdc269ac2184dc4ffff2534), [`3dddcda`](https://github.com/clerk/javascript/commit/3dddcda191d8f8d6a9b02464f1f6374d3c6aacb9), [`7524943`](https://github.com/clerk/javascript/commit/7524943300d7e693d61cc1820b520abfadec1c64), [`150b5c8`](https://github.com/clerk/javascript/commit/150b5c89477abb0feab15e0a886179473f653cac), [`23c931e`](https://github.com/clerk/javascript/commit/23c931e9e95e6de992549ad499b477aca9a9c344), [`730262f`](https://github.com/clerk/javascript/commit/730262f0f973923c8749b09078c80c2fc966a8ec), [`0b18bb1`](https://github.com/clerk/javascript/commit/0b18bb1fe6fa3ded97547bb6b4d2c73030aad329), [`021bc5f`](https://github.com/clerk/javascript/commit/021bc5f40044d34e49956ce3c9b61d833d815b42), [`1a61390`](https://github.com/clerk/javascript/commit/1a61390d3482bd4af58508b972ad89dea56fa224)]: - - @clerk/types@4.49.0 - -## 2.2.21 - -### Patch Changes - -- Updated dependencies [[`75879672c5805bfba1caca906ac0729497744164`](https://github.com/clerk/javascript/commit/75879672c5805bfba1caca906ac0729497744164), [`7ec95a7e59033600958aca4b86f3bcd5da947dec`](https://github.com/clerk/javascript/commit/7ec95a7e59033600958aca4b86f3bcd5da947dec), [`3c225d90227141dc62d955e76c7f8e0202524bc7`](https://github.com/clerk/javascript/commit/3c225d90227141dc62d955e76c7f8e0202524bc7), [`2a66c16af08573000bb619607346ac420cd4ce56`](https://github.com/clerk/javascript/commit/2a66c16af08573000bb619607346ac420cd4ce56)]: - - @clerk/types@4.48.0 - -## 2.2.20 - -### Patch Changes - -- Updated dependencies [[`28179323d9891bd13625e32c5682a3276e73cdae`](https://github.com/clerk/javascript/commit/28179323d9891bd13625e32c5682a3276e73cdae), [`c5c246ce91c01db9f1eaccbd354f646bcd24ec0a`](https://github.com/clerk/javascript/commit/c5c246ce91c01db9f1eaccbd354f646bcd24ec0a), [`bcbe5f6382ebcc70ef4fddb950d052bf6b7d693a`](https://github.com/clerk/javascript/commit/bcbe5f6382ebcc70ef4fddb950d052bf6b7d693a)]: - - @clerk/types@4.47.0 - -## 2.2.19 - -### Patch Changes - -- Updated dependencies [[`a9b0087fca3f427f65907b358d9b5bc0c95921d8`](https://github.com/clerk/javascript/commit/a9b0087fca3f427f65907b358d9b5bc0c95921d8)]: - - @clerk/types@4.46.1 - -## 2.2.18 - -### Patch Changes - -- Updated dependencies [[`dd2cbfe9f30358b6b298901bb52fa378b0acdca3`](https://github.com/clerk/javascript/commit/dd2cbfe9f30358b6b298901bb52fa378b0acdca3), [`570d8386f6aa596bf7bb1659bdddb8dd4d992b1d`](https://github.com/clerk/javascript/commit/570d8386f6aa596bf7bb1659bdddb8dd4d992b1d)]: - - @clerk/types@4.46.0 - -## 2.2.17 - -### Patch Changes - -- Invert OKX Wallet icon in dark theme. ([#5100](https://github.com/clerk/javascript/pull/5100)) by [@alexcarpenter](https://github.com/alexcarpenter) - -- Updated dependencies [[`767ac85fe6ce0ee0594c923e9af701bb05f40a0b`](https://github.com/clerk/javascript/commit/767ac85fe6ce0ee0594c923e9af701bb05f40a0b), [`225b38c7187d31fc755155ea99834ca03894d36b`](https://github.com/clerk/javascript/commit/225b38c7187d31fc755155ea99834ca03894d36b), [`429f1bfe5f7a554ab1fdf265475ba6c8b3f78472`](https://github.com/clerk/javascript/commit/429f1bfe5f7a554ab1fdf265475ba6c8b3f78472)]: - - @clerk/types@4.45.1 - -## 2.2.16 - -### Patch Changes - -- Updated dependencies [[`d3152be7f01fbb5ca26aeddc2437021f4b7ecc83`](https://github.com/clerk/javascript/commit/d3152be7f01fbb5ca26aeddc2437021f4b7ecc83), [`f976349243da2b75023e59e802460e6f3592ebbd`](https://github.com/clerk/javascript/commit/f976349243da2b75023e59e802460e6f3592ebbd)]: - - @clerk/types@4.45.0 - -## 2.2.15 - -### Patch Changes - -- Updated dependencies [[`833693a6792b621e72162d70673e7bdfa84a69b6`](https://github.com/clerk/javascript/commit/833693a6792b621e72162d70673e7bdfa84a69b6)]: - - @clerk/types@4.44.3 - -## 2.2.14 - -### Patch Changes - -- Updated dependencies [[`1345cb487970a7347351897e80dfb829d85c41ea`](https://github.com/clerk/javascript/commit/1345cb487970a7347351897e80dfb829d85c41ea)]: - - @clerk/types@4.44.2 - -## 2.2.13 - -### Patch Changes - -- Updated dependencies [[`57c983fdc2b8d883623a2294daae0ac6c02c48f6`](https://github.com/clerk/javascript/commit/57c983fdc2b8d883623a2294daae0ac6c02c48f6), [`a26cf0ff10c76244975c454fdf6c615475d4bcd5`](https://github.com/clerk/javascript/commit/a26cf0ff10c76244975c454fdf6c615475d4bcd5)]: - - @clerk/types@4.44.1 - -## 2.2.12 - -### Patch Changes - -- Updated dependencies [[`2179690c10a61b117e82fdd566b34939f4d28bc1`](https://github.com/clerk/javascript/commit/2179690c10a61b117e82fdd566b34939f4d28bc1), [`bdb537a9902c0f0ae58ca1d4b7590d929f28fedb`](https://github.com/clerk/javascript/commit/bdb537a9902c0f0ae58ca1d4b7590d929f28fedb)]: - - @clerk/types@4.44.0 - -## 2.2.11 - -### Patch Changes - -- Updated dependencies [[`6e096564a459db4eaf953e99e570905b10be6c84`](https://github.com/clerk/javascript/commit/6e096564a459db4eaf953e99e570905b10be6c84)]: - - @clerk/types@4.43.0 - -## 2.2.10 - -### Patch Changes - -- Updated dependencies [[`fe3e49f61acefe8d7f1992405f7cb415fea2e5c8`](https://github.com/clerk/javascript/commit/fe3e49f61acefe8d7f1992405f7cb415fea2e5c8), [`4427c4702f64d4f28f7564ce5889d41e260aa519`](https://github.com/clerk/javascript/commit/4427c4702f64d4f28f7564ce5889d41e260aa519)]: - - @clerk/types@4.42.0 - -## 2.2.9 - -### Patch Changes - -- Updated dependencies [[`418ec5c62c4eb600566faab07684c068a29007e3`](https://github.com/clerk/javascript/commit/418ec5c62c4eb600566faab07684c068a29007e3)]: - - @clerk/types@4.41.2 - -## 2.2.8 - -### Patch Changes - -- Updated dependencies [[`7ffc99b48977b9f6c74c0c71c500b60cb8aba65e`](https://github.com/clerk/javascript/commit/7ffc99b48977b9f6c74c0c71c500b60cb8aba65e)]: - - @clerk/types@4.41.1 - -## 2.2.7 - -### Patch Changes - -- Updated dependencies [[`4af35380f18d1d06c15ad1f5745c2d5a1ab1c37d`](https://github.com/clerk/javascript/commit/4af35380f18d1d06c15ad1f5745c2d5a1ab1c37d), [`aa48b1f9e890b2402e9d05989a4820141076f7bf`](https://github.com/clerk/javascript/commit/aa48b1f9e890b2402e9d05989a4820141076f7bf), [`53bd34fff38b17498edf66cc4bc2d42d707f28dc`](https://github.com/clerk/javascript/commit/53bd34fff38b17498edf66cc4bc2d42d707f28dc)]: - - @clerk/types@4.41.0 - -## 2.2.6 - -### Patch Changes - -- Updated dependencies [[`fd7a5be73db3acaa7daeb9b15af73c2ce99d03a6`](https://github.com/clerk/javascript/commit/fd7a5be73db3acaa7daeb9b15af73c2ce99d03a6)]: - - @clerk/types@4.40.3 - -## 2.2.5 - -### Patch Changes - -- Updated dependencies [[`44cab6038af0a4d23869b3b292ece742fbbc4d85`](https://github.com/clerk/javascript/commit/44cab6038af0a4d23869b3b292ece742fbbc4d85)]: - - @clerk/types@4.40.2 - -## 2.2.4 - -### Patch Changes - -- Updated dependencies [[`80e1117631d35834705119a79cdcf9e0ed423fdd`](https://github.com/clerk/javascript/commit/80e1117631d35834705119a79cdcf9e0ed423fdd)]: - - @clerk/types@4.40.1 - -## 2.2.3 - -### Patch Changes - -- Updated dependencies [[`c9da04636ffe1ba804a1ce5e5b79027d3a2344d2`](https://github.com/clerk/javascript/commit/c9da04636ffe1ba804a1ce5e5b79027d3a2344d2)]: - - @clerk/types@4.40.0 - -## 2.2.2 - -### Patch Changes - -- Updated dependencies [[`aeafa7c5efd50c893d088ac99199d7eaecc04025`](https://github.com/clerk/javascript/commit/aeafa7c5efd50c893d088ac99199d7eaecc04025), [`acd9326ef2d6942b981b3ee59c4b20ddd303323d`](https://github.com/clerk/javascript/commit/acd9326ef2d6942b981b3ee59c4b20ddd303323d)]: - - @clerk/types@4.39.4 - -## 2.2.1 - -### Patch Changes - -- Updated dependencies [[`e1748582d0c89462f48a482a7805871b7065fa19`](https://github.com/clerk/javascript/commit/e1748582d0c89462f48a482a7805871b7065fa19), [`7f7edcaa8228c26d19e9081979100ada7e982095`](https://github.com/clerk/javascript/commit/7f7edcaa8228c26d19e9081979100ada7e982095), [`dd3fdc7b2a96ddb90b33c6f1cefb055a60f99a9d`](https://github.com/clerk/javascript/commit/dd3fdc7b2a96ddb90b33c6f1cefb055a60f99a9d)]: - - @clerk/types@4.39.3 - -## 2.2.0 - -### Minor Changes - -- Switching to use ^ for semver ranges of internal @clerk/ production dependencies. ([#4664](https://github.com/clerk/javascript/pull/4664)) by [@jacekradko](https://github.com/jacekradko) - -## 2.1.55 - -### Patch Changes - -- Updated dependencies [[`cd72a27a75863dfd94b0a00ed5b2d03231556bc0`](https://github.com/clerk/javascript/commit/cd72a27a75863dfd94b0a00ed5b2d03231556bc0)]: - - @clerk/types@4.39.2 - -## 2.1.54 - -### Patch Changes - -- Updated dependencies [[`1b86a1da34ce4bc309f69980ac13a691a0a633c2`](https://github.com/clerk/javascript/commit/1b86a1da34ce4bc309f69980ac13a691a0a633c2)]: - - @clerk/types@4.39.1 - -## 2.1.53 - -### Patch Changes - -- Updated dependencies [[`550c7e9851329688e37be29b83ea0c3b12482af7`](https://github.com/clerk/javascript/commit/550c7e9851329688e37be29b83ea0c3b12482af7), [`3f640805d2a4e1616aafa56f6848d6657911bb99`](https://github.com/clerk/javascript/commit/3f640805d2a4e1616aafa56f6848d6657911bb99)]: - - @clerk/types@4.39.0 - -## 2.1.52 - -### Patch Changes - -- Updated dependencies [[`0bc3ccc5bd4a93121bb7e7d6a32271af9c31f8c3`](https://github.com/clerk/javascript/commit/0bc3ccc5bd4a93121bb7e7d6a32271af9c31f8c3)]: - - @clerk/types@4.38.0 - -## 2.1.51 - -### Patch Changes - -- Updated dependencies [[`4e5e7f463c12893a21cb3b5f9317fc3f2945879b`](https://github.com/clerk/javascript/commit/4e5e7f463c12893a21cb3b5f9317fc3f2945879b)]: - - @clerk/types@4.37.0 - -## 2.1.50 - -### Patch Changes - -- Updated dependencies [[`8ee5d84995fa17532491ff96efac5738c9bcd9ef`](https://github.com/clerk/javascript/commit/8ee5d84995fa17532491ff96efac5738c9bcd9ef), [`09fedd1df155d30cc055ce701b133aa6470e9b47`](https://github.com/clerk/javascript/commit/09fedd1df155d30cc055ce701b133aa6470e9b47)]: - - @clerk/types@4.36.0 - -## 2.1.49 - -### Patch Changes - -- Updated dependencies [[`8a28d1f403309f692d9332704f07effbf39d056d`](https://github.com/clerk/javascript/commit/8a28d1f403309f692d9332704f07effbf39d056d)]: - - @clerk/types@4.35.1 - -## 2.1.48 - -### Patch Changes - -- Updated dependencies [[`fe9e147e366153d664af7fc325655ecb299a1f9d`](https://github.com/clerk/javascript/commit/fe9e147e366153d664af7fc325655ecb299a1f9d), [`dce4f7ffca7248c0500f0ec9a978672b1f2fad69`](https://github.com/clerk/javascript/commit/dce4f7ffca7248c0500f0ec9a978672b1f2fad69)]: - - @clerk/types@4.35.0 - -## 2.1.47 - -### Patch Changes - -- Updated dependencies [[`c70994b5b6f92a6550dfe37547f01bbfa810c223`](https://github.com/clerk/javascript/commit/c70994b5b6f92a6550dfe37547f01bbfa810c223), [`7623a99594e7329200b6b374e483152d7679ce66`](https://github.com/clerk/javascript/commit/7623a99594e7329200b6b374e483152d7679ce66)]: - - @clerk/types@4.34.2 - -## 2.1.46 - -### Patch Changes - -- Updated dependencies [[`e47eb5882a7fd4a8dee25933c6644790d6ea3407`](https://github.com/clerk/javascript/commit/e47eb5882a7fd4a8dee25933c6644790d6ea3407), [`273d16cb0665d4d960838cb294dc356f41814745`](https://github.com/clerk/javascript/commit/273d16cb0665d4d960838cb294dc356f41814745)]: - - @clerk/types@4.34.1 - -## 2.1.45 - -### Patch Changes - -- Updated dependencies [[`46faeb6f59b19c963fb137c858347525b1cd9e19`](https://github.com/clerk/javascript/commit/46faeb6f59b19c963fb137c858347525b1cd9e19)]: - - @clerk/types@4.34.0 - -## 2.1.44 - -### Patch Changes - -- Updated dependencies [[`1c0b5001f7f975a2f3f54ad692526ecf7257847e`](https://github.com/clerk/javascript/commit/1c0b5001f7f975a2f3f54ad692526ecf7257847e), [`6217a3f7c94311d49f873214bd406961e0b8d6f7`](https://github.com/clerk/javascript/commit/6217a3f7c94311d49f873214bd406961e0b8d6f7), [`1783025cdb94c447028704c2121fa0b8af785904`](https://github.com/clerk/javascript/commit/1783025cdb94c447028704c2121fa0b8af785904)]: - - @clerk/types@4.33.0 - -## 2.1.43 - -### Patch Changes - -- Updated dependencies [[`7dbad4c5abd226d7b10941a626ead5d85b1a3f24`](https://github.com/clerk/javascript/commit/7dbad4c5abd226d7b10941a626ead5d85b1a3f24)]: - - @clerk/types@4.32.0 - -## 2.1.42 - -### Patch Changes - -- Updated dependencies [[`f7472e22877f62fc7f3c8d3efe409ff2276fb4a3`](https://github.com/clerk/javascript/commit/f7472e22877f62fc7f3c8d3efe409ff2276fb4a3), [`e199037b8f484abdeeb9fc24455a1b4b8c31c8dd`](https://github.com/clerk/javascript/commit/e199037b8f484abdeeb9fc24455a1b4b8c31c8dd), [`0e443ad7c76643420b50e5b169193e03f6ef79f9`](https://github.com/clerk/javascript/commit/0e443ad7c76643420b50e5b169193e03f6ef79f9), [`cc24c8145f1eea7fb91550f2c3e0bac3993e4320`](https://github.com/clerk/javascript/commit/cc24c8145f1eea7fb91550f2c3e0bac3993e4320)]: - - @clerk/types@4.31.0 - -## 2.1.41 - -### Patch Changes - -- Updated dependencies [[`d74a6a7c0f291104c6bba722a8c432814d7b336e`](https://github.com/clerk/javascript/commit/d74a6a7c0f291104c6bba722a8c432814d7b336e), [`1a0c8fe665869e732d3c800bde0f5219fce54301`](https://github.com/clerk/javascript/commit/1a0c8fe665869e732d3c800bde0f5219fce54301)]: - - @clerk/types@4.30.0 - -## 2.1.40 - -### Patch Changes - -- Updated dependencies [[`f875463da`](https://github.com/clerk/javascript/commit/f875463da9692f2d173b6d5388743cf720750ae3), [`5be7ca9fd`](https://github.com/clerk/javascript/commit/5be7ca9fd239c937cc88e20ce8f5bfc9f3b84f22), [`434b432f8`](https://github.com/clerk/javascript/commit/434b432f8c114825120eef0f2c278b8142ed1563)]: - - @clerk/types@4.29.0 - -## 2.1.39 - -### Patch Changes - -- Updated dependencies [[`3fdcdbf88`](https://github.com/clerk/javascript/commit/3fdcdbf88c38facf8b82563f634ec1b6604fd8e5)]: - - @clerk/types@4.28.0 - -## 2.1.38 - -### Patch Changes - -- Updated dependencies [[`3b50b67bd`](https://github.com/clerk/javascript/commit/3b50b67bd40da33c9e36773aa05462717e9f44cc), [`3b50b67bd`](https://github.com/clerk/javascript/commit/3b50b67bd40da33c9e36773aa05462717e9f44cc)]: - - @clerk/types@4.27.0 - -## 2.1.37 - -### Patch Changes - -- Updated dependencies [[`e81d45b72`](https://github.com/clerk/javascript/commit/e81d45b72c81403c7c206dac5454de1fef6bec57), [`99cdf9b67`](https://github.com/clerk/javascript/commit/99cdf9b67d1e99e66cc73d8a5bfce1f1f8df1b83), [`ce40ff6f0`](https://github.com/clerk/javascript/commit/ce40ff6f0d3bc79e33375be6dd5e03f140a07000), [`2102052c0`](https://github.com/clerk/javascript/commit/2102052c017065ab511339870fcebaa6719f2702)]: - - @clerk/types@4.26.0 - -## 2.1.36 - -### Patch Changes - -- Updated dependencies [[`2ba2fd148`](https://github.com/clerk/javascript/commit/2ba2fd1483b7561d7df9a1952ead0ee15e422131)]: - - @clerk/types@4.25.1 - -## 2.1.35 - -### Patch Changes - -- Updated dependencies [[`fb932e5cf`](https://github.com/clerk/javascript/commit/fb932e5cf21315adf60bee0855b6bd5ee2ff9867)]: - - @clerk/types@4.25.0 - -## 2.1.34 - -### Patch Changes - -- Updated dependencies [[`f6fb8b53d`](https://github.com/clerk/javascript/commit/f6fb8b53d236863ad7eca576ee7a16cd33f3506b), [`4a8570590`](https://github.com/clerk/javascript/commit/4a857059059a02bb4f20893e08601e1e67babbed)]: - - @clerk/types@4.24.0 - -## 2.1.33 - -### Patch Changes - -- Updated dependencies [[`4749ed4c5`](https://github.com/clerk/javascript/commit/4749ed4c55a5ba5810451b8d436aad0d49829050), [`f1f17eaab`](https://github.com/clerk/javascript/commit/f1f17eaabed0dc4b7de405fb77d85503cf75ad33), [`2e35ac538`](https://github.com/clerk/javascript/commit/2e35ac53885f8008779940d41d1e804fa77ebfa9)]: - - @clerk/types@4.23.0 - -## 2.1.32 - -### Patch Changes - -- Updated dependencies [[`c9063853e`](https://github.com/clerk/javascript/commit/c9063853e538a4010f5d4e522a3da5abc80098a4), [`19d3808d4`](https://github.com/clerk/javascript/commit/19d3808d4672234944226d6709ec51214e8d6e1d), [`737bcbb0f`](https://github.com/clerk/javascript/commit/737bcbb0ffb5e2dcadbb02e8fc718fe8825c5842)]: - - @clerk/types@4.22.0 - -## 2.1.31 - -### Patch Changes - -- Updated dependencies [[`2e5c550e4`](https://github.com/clerk/javascript/commit/2e5c550e4aec61150c2a17fdcd4a0e1273cb50e7)]: - - @clerk/types@4.21.1 - -## 2.1.30 - -### Patch Changes - -- Updated dependencies [[`248142a6d`](https://github.com/clerk/javascript/commit/248142a6ded6ca937d0df7d628197f25228aadec), [`1189f71f8`](https://github.com/clerk/javascript/commit/1189f71f872f2683c12de5add5f154aeb953ca8d)]: - - @clerk/types@4.21.0 - -## 2.1.29 - -### Patch Changes - -- Updated dependencies [[`8c6909d46`](https://github.com/clerk/javascript/commit/8c6909d46328c943f1d464a28f1a324a27d0f3f1)]: - - @clerk/types@4.20.1 - -## 2.1.28 - -### Patch Changes - -- Updated dependencies [[`c63a5adf0`](https://github.com/clerk/javascript/commit/c63a5adf0ba4b99252146f168318f51b709bb5dd), [`8823c21a2`](https://github.com/clerk/javascript/commit/8823c21a26bc81cbc3ed007908b1a9ea474bd343), [`a0cb062fa`](https://github.com/clerk/javascript/commit/a0cb062faa4d23bef7a577e5cc486f4c5efe6bfa)]: - - @clerk/types@4.20.0 - -## 2.1.27 - -### Patch Changes - -- Updated dependencies [[`8a3b9f079`](https://github.com/clerk/javascript/commit/8a3b9f0793484b32dd609a5c80a194e62151d6ea), [`e95c28196`](https://github.com/clerk/javascript/commit/e95c2819675cea7963f2404e5f71f37ebed8d5e0)]: - - @clerk/types@4.19.0 - -## 2.1.26 - -### Patch Changes - -- Updated dependencies [[`82593173a`](https://github.com/clerk/javascript/commit/82593173aafbf6646e12c5779627cdcb138a1f27), [`afad9af89`](https://github.com/clerk/javascript/commit/afad9af893984a19d7284f0ad3b36e7891d0d733)]: - - @clerk/types@4.18.0 - -## 2.1.25 - -### Patch Changes - -- Tidy up and improve README ([#4053](https://github.com/clerk/javascript/pull/4053)) by [@LekoArts](https://github.com/LekoArts) - -- Updated dependencies [[`58e6754ad`](https://github.com/clerk/javascript/commit/58e6754ad9f9a1244b023ce1f5e5f2c1c4eb20e7), [`13693018f`](https://github.com/clerk/javascript/commit/13693018f4f7ac5d224698aa730e20960896f68c), [`3304dcc0b`](https://github.com/clerk/javascript/commit/3304dcc0bc93a92a7f729f585c60ff91d2ae04f6)]: - - @clerk/types@4.17.0 - -## 2.1.24 - -### Patch Changes - -- Updated dependencies [[`c1389492d`](https://github.com/clerk/javascript/commit/c1389492d8b6a9292ab04889bf776c0f45e66845)]: - - @clerk/types@4.16.0 - -## 2.1.23 - -### Patch Changes - -- Updated dependencies [[`0158c774a`](https://github.com/clerk/javascript/commit/0158c774af2243a2cd13b55c4d6fae877178c961), [`8be1a7abc`](https://github.com/clerk/javascript/commit/8be1a7abc8849d7d59552011bd6b25bc917d51f5)]: - - @clerk/types@4.15.1 - -## 2.1.22 - -### Patch Changes - -- Updated dependencies [[`247b3fd75`](https://github.com/clerk/javascript/commit/247b3fd75042365dc9f950db056b76f9fadfdcf6)]: - - @clerk/types@4.15.0 - -## 2.1.21 - -### Patch Changes - -- Updated dependencies [[`dc0e1c33d`](https://github.com/clerk/javascript/commit/dc0e1c33d6844b028cb1ee11c3359b886d609f3c)]: - - @clerk/types@4.14.0 - -## 2.1.20 - -### Patch Changes - -- Updated dependencies [[`b6f0613dc`](https://github.com/clerk/javascript/commit/b6f0613dc9d8b0bab41cfabbaa8621b126e3bdf5)]: - - @clerk/types@4.13.1 - -## 2.1.19 - -### Patch Changes - -- Updated dependencies [[`4e6c94e3f`](https://github.com/clerk/javascript/commit/4e6c94e3f4cc92cbba8bddcd2b90fcc9cfb83763)]: - - @clerk/types@4.13.0 - -## 2.1.18 - -### Patch Changes - -- Updated dependencies [[`9b2aeacb3`](https://github.com/clerk/javascript/commit/9b2aeacb32fff7c300bda458636a1cc81a42ee7b)]: - - @clerk/types@4.12.1 - -## 2.1.17 - -### Patch Changes - -- Updated dependencies [[`7e94fcf0f`](https://github.com/clerk/javascript/commit/7e94fcf0fcbee8842a54f7931c45190370aa870d)]: - - @clerk/types@4.12.0 - -## 2.1.16 - -### Patch Changes - -- Updated dependencies [[`568186cad`](https://github.com/clerk/javascript/commit/568186cad29acaf0b084a9f86ccb9d29bd23fcf4), [`407195270`](https://github.com/clerk/javascript/commit/407195270ed8aab6eef18c64a4918e3870fef471)]: - - @clerk/types@4.11.0 - -## 2.1.15 - -### Patch Changes - -- Updated dependencies [[`aa06f3ba7`](https://github.com/clerk/javascript/commit/aa06f3ba7e725071c90d4a1d6840060236da3c23), [`80e647731`](https://github.com/clerk/javascript/commit/80e64773135865434cf0e6c220e287397aa07937)]: - - @clerk/types@4.10.0 - -## 2.1.14 - -### Patch Changes - -- Updated dependencies [[`b48689705`](https://github.com/clerk/javascript/commit/b48689705f9fc2251d2f24addec7a0d0b1da0fe1)]: - - @clerk/types@4.9.1 - -## 2.1.13 - -### Patch Changes - -- Updated dependencies [[`b2788f67b`](https://github.com/clerk/javascript/commit/b2788f67b75cce17af1a2f91a984bb826a5a42e1), [`86c75e50c`](https://github.com/clerk/javascript/commit/86c75e50cba9c4efb480672f1b8c6a6fff4ef477)]: - - @clerk/types@4.9.0 - -## 2.1.12 - -### Patch Changes - -- Updated dependencies [[`df7d856d5`](https://github.com/clerk/javascript/commit/df7d856d56bc3b1dcbdbf9155b4ef1b1ea5971f7)]: - - @clerk/types@4.8.0 - -## 2.1.11 - -### Patch Changes - -- Updated dependencies [[`d6b5006c4`](https://github.com/clerk/javascript/commit/d6b5006c4cc1b6f07bb3a6832b4ec6e65ea15814)]: - - @clerk/types@4.7.0 - -## 2.1.10 - -### Patch Changes - -- Updated dependencies [[`1273b04ec`](https://github.com/clerk/javascript/commit/1273b04ecf1866b59ef59a74abe31dbcc726da2c)]: - - @clerk/types@4.6.1 - -## 2.1.9 - -### Patch Changes - -- Updated dependencies [[`73e5d61e2`](https://github.com/clerk/javascript/commit/73e5d61e21ab3f77f3c8343bc63da0626466c7ac), [`b8e46328d`](https://github.com/clerk/javascript/commit/b8e46328da874859c4928f19f924219cd6520b11)]: - - @clerk/types@4.6.0 - -## 2.1.8 - -### Patch Changes - -- Updated dependencies [[`4beb00672`](https://github.com/clerk/javascript/commit/4beb00672da64bafd67fbc98181c4c2649a9062c)]: - - @clerk/types@4.5.1 - -## 2.1.7 - -### Patch Changes - -- Updated dependencies [[`d6a9b3f5d`](https://github.com/clerk/javascript/commit/d6a9b3f5dd8c64b1bd49f74c3707eb01dcd6aff4)]: - - @clerk/types@4.5.0 - -## 2.1.6 - -### Patch Changes - -- Updated dependencies [[`3d790d5ea`](https://github.com/clerk/javascript/commit/3d790d5ea347a51ef16557c015c901a9f277effe)]: - - @clerk/types@4.4.0 - -## 2.1.5 - -### Patch Changes - -- Updated dependencies [[`eae0a32d5`](https://github.com/clerk/javascript/commit/eae0a32d5c9e97ccbfd96e001c2cac6bc753b5b3)]: - - @clerk/types@4.3.1 - -## 2.1.4 - -### Patch Changes - -- Updated dependencies [[`94197710a`](https://github.com/clerk/javascript/commit/94197710a70381c4f1c460948ef02cd2a70b88bb), [`b27ca8366`](https://github.com/clerk/javascript/commit/b27ca8366a1d6ec1d7ce4a5be5005f1b1b017c20)]: - - @clerk/types@4.3.0 - -## 2.1.3 - -### Patch Changes - -- Updated dependencies [[`f70c885f7`](https://github.com/clerk/javascript/commit/f70c885f798f7ff513f6687f87c8a56daf26fa05)]: - - @clerk/types@4.2.1 - -## 2.1.2 - -### Patch Changes - -- Update the `neobrutalism` to make it compatible with the new Core 2 components ([#3310](https://github.com/clerk/javascript/pull/3310)) by [@EmmanouelaPothitou](https://github.com/EmmanouelaPothitou) - -## 2.1.1 - -### Patch Changes - -- Updated dependencies [[`c7d626292`](https://github.com/clerk/javascript/commit/c7d626292a9fd12ca0f1b31a1035e711b6e99531)]: - - @clerk/types@4.2.0 - -## 2.1.0 - -### Minor Changes - -- Drop `react` and `react-dom` as peer dependencies since they are not necessary for this package. ([#3273](https://github.com/clerk/javascript/pull/3273)) by [@panteliselef](https://github.com/panteliselef) - -## 2.0.1 - -### Patch Changes - -- Updated dependencies [[`956d8792f`](https://github.com/clerk/javascript/commit/956d8792fefe9d6a89022f1e938149b25503ec7f)]: - - @clerk/types@4.1.0 - -## 2.0.0 - -### Major Changes - -- c2a090513: Change the minimal Node.js version required by Clerk to `18.17.0`. -- 52ff8fe6b: Upgrade React version to >=18 and add react-dom as peer dependency - to fix issues with vite & rollup building. -- 97407d8aa: Dropping support for Node 14 and 16 as they both reached EOL status. The minimal Node.js version required by Clerk is `18.18.0` now. -- 7886ba89d: Refresh the look and feel of the Clerk UI components - - For more info, refer to the [upgrade guide from v4 to v5 in Clerk docs](https://clerk.com/docs/upgrade-guides/upgrading-from-v4-to-v5). - -### Patch Changes - -- 2ae9fd601: Release the latest beta changes of the `@clerk/themes` package -- 2de442b24: Rename beta-v5 to beta -- be5bc7b4b: Rename `unstable_createTheme` to `experimental_createTheme` -- Updated dependencies [1db1f4068] -- Updated dependencies [c2a090513] -- Updated dependencies [0d0b1d89a] -- Updated dependencies [d37d44a68] -- Updated dependencies [fe356eebd] -- Updated dependencies [7f6a64f43] -- Updated dependencies [afec17953] -- Updated dependencies [0699fa496] -- Updated dependencies [2de442b24] -- Updated dependencies [0293f29c8] -- Updated dependencies [5f58a2274] -- Updated dependencies [9180c8b80] -- Updated dependencies [7f833da9e] -- Updated dependencies [fc3ffd880] -- Updated dependencies [840636a14] -- Updated dependencies [bab2e7e05] -- Updated dependencies [2352149f6] -- Updated dependencies [ff08fe237] -- Updated dependencies [244de5ea3] -- Updated dependencies [d9f265fcb] -- Updated dependencies [7bffc47cb] -- Updated dependencies [9737ef510] -- Updated dependencies [fafa76fb6] -- Updated dependencies [1f650f30a] -- Updated dependencies [2a22aade8] -- Updated dependencies [69ce3e185] -- Updated dependencies [78fc5eec0] -- Updated dependencies [a9fe242be] -- Updated dependencies [5f58a2274] -- Updated dependencies [6a33709cc] -- Updated dependencies [f77e8cdbd] -- Updated dependencies [8b466a9ba] -- Updated dependencies [fe2607b6f] -- Updated dependencies [c7e6d00f5] -- Updated dependencies [663243220] -- Updated dependencies [c6a5e0f5d] -- Updated dependencies [4edb77632] -- Updated dependencies [ab4eb56a5] -- Updated dependencies [a9fe242be] -- Updated dependencies [5c239d973] -- Updated dependencies [97407d8aa] -- Updated dependencies [12962bc58] -- Updated dependencies [2e4a43017] -- Updated dependencies [5aab9f04a] -- Updated dependencies [46040a2f3] -- Updated dependencies [f00fd2dfe] -- Updated dependencies [9a1fe3728] -- Updated dependencies [7f751c4ef] -- Updated dependencies [18c0d015d] -- Updated dependencies [7886ba89d] -- Updated dependencies [9a1fe3728] -- Updated dependencies [f540e9843] -- Updated dependencies [477170962] -- Updated dependencies [d6a7ea61a] -- Updated dependencies [41ae1d2f0] -- Updated dependencies [48ca40af9] -- Updated dependencies [94519aa33] -- Updated dependencies [ebf9be77f] -- Updated dependencies [008ac4217] -- Updated dependencies [40ac4b645] -- Updated dependencies [429d030f7] -- Updated dependencies [844847e0b] - - @clerk/types@4.0.0 - -## 2.0.0-beta.15 - -### Patch Changes - -- Updated dependencies [[`f00fd2dfe`](https://github.com/clerk/javascript/commit/f00fd2dfe309cfeac82a776cc006f2c21b6d7988)]: - - @clerk/types@4.0.0-beta.30 - -## 2.0.0-beta.14 - -### Patch Changes - -- Updated dependencies [[`bab2e7e05`](https://github.com/clerk/javascript/commit/bab2e7e0590d0da1fd7db0680e63e8f2eb836b41)]: - - @clerk/types@4.0.0-beta.29 - -## 2.0.0-beta.13 - -### Patch Changes - -- Updated dependencies [[`ff08fe237`](https://github.com/clerk/javascript/commit/ff08fe237fa5a9ded04924b3c5821111836b49b6), [`d9f265fcb`](https://github.com/clerk/javascript/commit/d9f265fcb12b39301b9802e4787dc636ee28444f)]: - - @clerk/types@4.0.0-beta.28 - -## 2.0.0-beta.12 - -### Patch Changes - -- Updated dependencies [[`94519aa33`](https://github.com/clerk/javascript/commit/94519aa33774c8d6e557ce47a00974ad7b194c5d)]: - - @clerk/types@4.0.0-beta.27 - -## 2.0.0-beta.11 - -### Patch Changes - -- Updated dependencies [[`0699fa496`](https://github.com/clerk/javascript/commit/0699fa49693dc7a8d3de8ba053c4f16a5c8431d0)]: - - @clerk/types@4.0.0-beta.26 - -## 2.0.0-beta.10 - -### Patch Changes - -- Updated dependencies [[`2352149f6`](https://github.com/clerk/javascript/commit/2352149f6ba9708095146a3087538faf2d4f161f)]: - - @clerk/types@4.0.0-beta.25 - -## 2.0.0-beta.9 - -### Patch Changes - -- Updated dependencies [[`9180c8b80`](https://github.com/clerk/javascript/commit/9180c8b80e0ad95c1a9e490e8201ffd089634a48), [`c6a5e0f5d`](https://github.com/clerk/javascript/commit/c6a5e0f5dbd9ec4a7b5657855e8a31bc8347d0a4)]: - - @clerk/types@4.0.0-beta.24 - -## 2.0.0-beta.8 - -### Patch Changes - -- Updated dependencies [[`fc3ffd880`](https://github.com/clerk/javascript/commit/fc3ffd88064a09ab98877dfba119150390f9296e), [`840636a14`](https://github.com/clerk/javascript/commit/840636a14537d4f6b810832e7662518ef4bd4500), [`f540e9843`](https://github.com/clerk/javascript/commit/f540e98435c86298415552537e33164471298a5c)]: - - @clerk/types@4.0.0-beta.23 - -## 2.0.0-beta.7 - -### Patch Changes - -- Updated dependencies [[`afec17953`](https://github.com/clerk/javascript/commit/afec17953d1ae4ba39ee73e4383757694375524d)]: - - @clerk/types@4.0.0-beta.22 - -## 2.0.0-beta.6 - -### Patch Changes - -- Updated dependencies [[`0d0b1d89a`](https://github.com/clerk/javascript/commit/0d0b1d89a46d2418cb05a10940f4a399cbd8ffeb), [`1f650f30a`](https://github.com/clerk/javascript/commit/1f650f30a97939817b7b2f3cc6283e22dc431523), [`663243220`](https://github.com/clerk/javascript/commit/6632432208aa6ca507f33fa9ab79abaa40431be6), [`ebf9be77f`](https://github.com/clerk/javascript/commit/ebf9be77f17f8880541de67f66879324f68cf6bd)]: - - @clerk/types@4.0.0-beta.21 - -## 2.0.0-beta.5 - -### Patch Changes - -- Release the latest beta changes of the `@clerk/themes` package ([#2947](https://github.com/clerk/javascript/pull/2947)) by [@anagstef](https://github.com/anagstef) - -## 2.0.0-beta.4 - -### Patch Changes - -- Rename beta-v5 to beta by [@nikosdouvlis](https://github.com/nikosdouvlis) - -## 2.0.0-beta-v5.3 - -### Major Changes - -- Refresh the look and feel of the Clerk UI components ([#2622](https://github.com/clerk/javascript/pull/2622)) by [@anagstef](https://github.com/anagstef) - - For more info, refer to the [upgrade guide from v4 to v5 in Clerk docs](https://clerk.com/docs/upgrade-guides/upgrading-from-v4-to-v5). - -## 2.0.0-alpha-v5.2 - -### Major Changes - -- Upgrade React version to >=18 and add react-dom as peer dependency ([#2164](https://github.com/clerk/javascript/pull/2164)) by [@dimkl](https://github.com/dimkl) - - to fix issues with vite & rollup building. - -### Patch Changes - -- Rename `unstable_createTheme` to `experimental_createTheme` ([#2174](https://github.com/clerk/javascript/pull/2174)) by [@royanger](https://github.com/royanger) - -## 2.0.0-alpha-v5.1 - -### Major Changes - -- Change the minimal Node.js version required by Clerk to `18.17.0`. ([#2162](https://github.com/clerk/javascript/pull/2162)) by [@dimkl](https://github.com/dimkl) - -## 2.0.0-alpha-v5.0 - -### Major Changes - -- Dropping support for Node 14 and 16 as they both reached EOL status. The minimal Node.js version required by Clerk is `18.18.0` now. ([#1864](https://github.com/clerk/javascript/pull/1864)) by [@dimkl](https://github.com/dimkl) - -## 1.7.9 - -### Patch Changes - -- Publish packages with [npm provenance](https://docs.npmjs.com/generating-provenance-statements) enabled ([#1891](https://github.com/clerk/javascript/pull/1891)) by [@LekoArts](https://github.com/LekoArts) - -## 1.7.8 - -### Patch Changes - -- Introduces three new element appearance descriptors: ([#1803](https://github.com/clerk/javascript/pull/1803)) by [@octoper](https://github.com/octoper) - - `tableHead` let's you customize the tables head styles. - - `paginationButton` let's you customize the pagination buttons. - - `paginationRowText` let's you customize the pagination text. - -## 1.7.7 - -### Patch Changes - -- Pins the internal dependency versions. This ensures that users installing our main framework SDKs will get consistent versions across all @clerk/ packages. ([#1798](https://github.com/clerk/javascript/pull/1798)) by [@BRKalow](https://github.com/BRKalow) - -## 1.7.6 - -### Patch Changes - -- Change `README` to include updated links to issue templates and update Discord link. ([#1750](https://github.com/clerk/javascript/pull/1750)) by [@LekoArts](https://github.com/LekoArts) - -### [1.7.5](https://github.com/clerk/javascript/compare/@clerk/themes@1.7.5-staging.1...@clerk/themes@1.7.5) (2023-06-03) - -**Note:** Version bump only for package @clerk/themes - -### [1.7.4](https://github.com/clerk/javascript/compare/@clerk/themes@1.7.4-staging.0...@clerk/themes@1.7.4) (2023-05-26) - -**Note:** Version bump only for package @clerk/themes - -### [1.7.3](https://github.com/clerk/javascript/compare/@clerk/themes@1.7.3-staging.2...@clerk/themes@1.7.3) (2023-05-23) - -**Note:** Version bump only for package @clerk/themes - -### [1.7.2](https://github.com/clerk/javascript/compare/@clerk/themes@1.7.2-staging.0...@clerk/themes@1.7.2) (2023-05-18) - -**Note:** Version bump only for package @clerk/themes - -### [1.7.1](https://github.com/clerk/javascript/compare/@clerk/themes@1.7.1-staging.1...@clerk/themes@1.7.1) (2023-05-17) - -**Note:** Version bump only for package @clerk/themes - -## [1.7.0](https://github.com/clerk/javascript/compare/@clerk/themes@1.6.5-staging.3...@clerk/themes@1.7.0) (2023-05-15) - -**Note:** Version bump only for package @clerk/themes - -### [1.6.4](https://github.com/clerk/javascript/compare/@clerk/themes@1.6.4-staging.4...@clerk/themes@1.6.4) (2023-05-04) - -**Note:** Version bump only for package @clerk/themes - -### [1.6.4-staging.4](https://github.com/clerk/javascript/compare/@clerk/themes@1.6.4-staging.3...@clerk/themes@1.6.4-staging.4) (2023-05-04) - -**Note:** Version bump only for package @clerk/themes - -### [1.6.4-staging.3](https://github.com/clerk/javascript/compare/@clerk/themes@1.6.4-staging.2...@clerk/themes@1.6.4-staging.3) (2023-05-02) - -**Note:** Version bump only for package @clerk/themes - -### [1.6.3](https://github.com/clerk/javascript/compare/@clerk/themes@1.6.3-staging.0...@clerk/themes@1.6.3) (2023-04-19) - -**Note:** Version bump only for package @clerk/themes - -### [1.6.2](https://github.com/clerk/javascript/compare/@clerk/themes@1.6.1...@clerk/themes@1.6.2) (2023-04-19) - -**Note:** Version bump only for package @clerk/themes - -### [1.6.1](https://github.com/clerk/javascript/compare/@clerk/themes@1.6.1-staging.0...@clerk/themes@1.6.1) (2023-04-12) - -**Note:** Version bump only for package @clerk/themes - -## [1.6.0](https://github.com/clerk/javascript/compare/@clerk/themes@1.6.0-staging.3...@clerk/themes@1.6.0) (2023-04-11) - -**Note:** Version bump only for package @clerk/themes - -### [1.5.2](https://github.com/clerk/javascript/compare/@clerk/themes@1.5.2-staging.0...@clerk/themes@1.5.2) (2023-04-06) - -**Note:** Version bump only for package @clerk/themes - -### [1.5.1](https://github.com/clerk/javascript/compare/@clerk/themes@1.5.1-staging.2...@clerk/themes@1.5.1) (2023-03-31) - -**Note:** Version bump only for package @clerk/themes - -## [1.5.0](https://github.com/clerk/javascript/compare/@clerk/themes@1.5.0-staging.0...@clerk/themes@1.5.0) (2023-03-29) - -**Note:** Version bump only for package @clerk/themes - -### [1.4.6](https://github.com/clerk/javascript/compare/@clerk/themes@1.4.6-staging.2...@clerk/themes@1.4.6) (2023-03-10) - -**Note:** Version bump only for package @clerk/themes - -### [1.4.5](https://github.com/clerk/javascript/compare/@clerk/themes@1.4.5-staging.0...@clerk/themes@1.4.5) (2023-03-09) - -**Note:** Version bump only for package @clerk/themes - -### [1.4.4](https://github.com/clerk/javascript/compare/@clerk/themes@1.4.4-staging.0...@clerk/themes@1.4.4) (2023-03-07) - -**Note:** Version bump only for package @clerk/themes - -### [1.4.3](https://github.com/clerk/javascript/compare/@clerk/themes@1.4.3-staging.1...@clerk/themes@1.4.3) (2023-03-03) - -**Note:** Version bump only for package @clerk/themes - -### [1.4.2](https://github.com/clerk/javascript/compare/@clerk/themes@1.4.2-staging.0...@clerk/themes@1.4.2) (2023-03-01) - -**Note:** Version bump only for package @clerk/themes - -### [1.4.1](https://github.com/clerk/javascript/compare/@clerk/themes@1.4.1-staging.0...@clerk/themes@1.4.1) (2023-02-25) - -**Note:** Version bump only for package @clerk/themes - -## [1.4.0](https://github.com/clerk/javascript/compare/@clerk/themes@1.4.0-staging.0...@clerk/themes@1.4.0) (2023-02-24) - -**Note:** Version bump only for package @clerk/themes - -### [1.3.5-staging.2](https://github.com/clerk/javascript/compare/@clerk/themes@1.3.5-staging.1...@clerk/themes@1.3.5-staging.2) (2023-02-22) - -**Note:** Version bump only for package @clerk/themes - -### [1.3.4](https://github.com/clerk/javascript/compare/@clerk/themes@1.3.4-staging.0...@clerk/themes@1.3.4) (2023-02-17) - -**Note:** Version bump only for package @clerk/themes - -### [1.3.3](https://github.com/clerk/javascript/compare/@clerk/themes@1.3.3-staging.1...@clerk/themes@1.3.3) (2023-02-15) - -**Note:** Version bump only for package @clerk/themes - -### [1.3.2](https://github.com/clerk/javascript/compare/@clerk/themes@1.3.2-staging.1...@clerk/themes@1.3.2) (2023-02-10) - -**Note:** Version bump only for package @clerk/themes - -### [1.3.1](https://github.com/clerk/javascript/compare/@clerk/themes@1.3.1-staging.0...@clerk/themes@1.3.1) (2023-02-07) - -**Note:** Version bump only for package @clerk/themes - -### [1.3.1-staging.0](https://github.com/clerk/javascript/compare/@clerk/themes@1.3.0...@clerk/themes@1.3.1-staging.0) (2023-02-07) - -**Note:** Version bump only for package @clerk/themes - -## [1.3.0](https://github.com/clerk/javascript/compare/@clerk/themes@1.2.42-staging.1...@clerk/themes@1.3.0) (2023-02-07) - -**Note:** Version bump only for package @clerk/themes - -### [1.2.41](https://github.com/clerk/javascript/compare/@clerk/themes@1.2.41-staging.0...@clerk/themes@1.2.41) (2023-02-01) - -**Note:** Version bump only for package @clerk/themes - -### [1.2.40](https://github.com/clerk/javascript/compare/@clerk/themes@1.2.40-staging.3...@clerk/themes@1.2.40) (2023-01-27) - -**Note:** Version bump only for package @clerk/themes - -### [1.2.39](https://github.com/clerk/javascript/compare/@clerk/themes@1.2.38...@clerk/themes@1.2.39) (2023-01-20) - -**Note:** Version bump only for package @clerk/themes - -### [1.2.38](https://github.com/clerk/javascript/compare/@clerk/themes@1.2.38-staging.1...@clerk/themes@1.2.38) (2023-01-17) - -**Note:** Version bump only for package @clerk/themes - -### [1.2.37](https://github.com/clerk/javascript/compare/@clerk/themes@1.2.37-staging.1...@clerk/themes@1.2.37) (2022-12-19) - -**Note:** Version bump only for package @clerk/themes - -### [1.2.36](https://github.com/clerk/javascript/compare/@clerk/themes@1.2.36-staging.0...@clerk/themes@1.2.36) (2022-12-13) - -**Note:** Version bump only for package @clerk/themes - -### [1.2.35](https://github.com/clerk/javascript/compare/@clerk/themes@1.2.34...@clerk/themes@1.2.35) (2022-12-12) - -**Note:** Version bump only for package @clerk/themes - -### [1.2.34](https://github.com/clerk/javascript/compare/@clerk/themes@1.2.34-staging.1...@clerk/themes@1.2.34) (2022-12-09) - -**Note:** Version bump only for package @clerk/themes - -### [1.2.33](https://github.com/clerk/javascript/compare/@clerk/themes@1.2.32...@clerk/themes@1.2.33) (2022-12-08) - -**Note:** Version bump only for package @clerk/themes - -### [1.2.32](https://github.com/clerk/javascript/compare/@clerk/themes@1.2.32-staging.0...@clerk/themes@1.2.32) (2022-12-08) - -**Note:** Version bump only for package @clerk/themes - -### [1.2.31](https://github.com/clerk/javascript/compare/@clerk/themes@1.2.31-staging.0...@clerk/themes@1.2.31) (2022-12-02) - -**Note:** Version bump only for package @clerk/themes - -### [1.2.30](https://github.com/clerk/javascript/compare/@clerk/themes@1.2.30-staging.4...@clerk/themes@1.2.30) (2022-11-30) - -**Note:** Version bump only for package @clerk/themes - -### [1.2.30-staging.4](https://github.com/clerk/javascript/compare/@clerk/themes@1.2.30-staging.3...@clerk/themes@1.2.30-staging.4) (2022-11-29) - -**Note:** Version bump only for package @clerk/themes - -### [1.2.29](https://github.com/clerk/javascript/compare/@clerk/themes@1.2.29-staging.0...@clerk/themes@1.2.29) (2022-11-25) - -**Note:** Version bump only for package @clerk/themes - -### [1.2.28](https://github.com/clerk/javascript/compare/@clerk/themes@1.2.28-staging.0...@clerk/themes@1.2.28) (2022-11-25) - -**Note:** Version bump only for package @clerk/themes - -### [1.2.27](https://github.com/clerk/javascript/compare/@clerk/themes@1.2.26...@clerk/themes@1.2.27) (2022-11-23) - -**Note:** Version bump only for package @clerk/themes - -### [1.2.26](https://github.com/clerk/javascript/compare/@clerk/themes@1.2.26-staging.2...@clerk/themes@1.2.26) (2022-11-22) - -**Note:** Version bump only for package @clerk/themes - -### [1.2.26-staging.2](https://github.com/clerk/javascript/compare/@clerk/themes@1.2.26-staging.1...@clerk/themes@1.2.26-staging.2) (2022-11-21) - -**Note:** Version bump only for package @clerk/themes - -### [1.2.25](https://github.com/clerk/javascript/compare/@clerk/themes@1.2.25-staging.1...@clerk/themes@1.2.25) (2022-11-18) - -**Note:** Version bump only for package @clerk/themes - -### [1.2.24](https://github.com/clerk/javascript/compare/@clerk/themes@1.2.24-staging.2...@clerk/themes@1.2.24) (2022-11-15) - -**Note:** Version bump only for package @clerk/themes - -### [1.2.23](https://github.com/clerk/javascript/compare/@clerk/themes@1.2.23-staging.1...@clerk/themes@1.2.23) (2022-11-10) - -**Note:** Version bump only for package @clerk/themes - -### [1.2.22](https://github.com/clerk/javascript/compare/@clerk/themes@1.2.22-staging.2...@clerk/themes@1.2.22) (2022-11-05) - -**Note:** Version bump only for package @clerk/themes - -### [1.2.21](https://github.com/clerk/javascript/compare/@clerk/themes@1.2.21-staging.7...@clerk/themes@1.2.21) (2022-11-03) - -**Note:** Version bump only for package @clerk/themes - -### [1.2.21-staging.4](https://github.com/clerk/javascript/compare/@clerk/themes@1.2.21-staging.3...@clerk/themes@1.2.21-staging.4) (2022-11-02) - -**Note:** Version bump only for package @clerk/themes - -### [1.2.21-staging.3](https://github.com/clerk/javascript/compare/@clerk/themes@1.2.21-staging.1...@clerk/themes@1.2.21-staging.3) (2022-11-02) - -**Note:** Version bump only for package @clerk/themes - -### [1.2.21-staging.2](https://github.com/clerk/javascript/compare/@clerk/themes@1.2.21-staging.1...@clerk/themes@1.2.21-staging.2) (2022-11-02) - -**Note:** Version bump only for package @clerk/themes - -### [1.2.21-staging.1](https://github.com/clerk/javascript/compare/@clerk/themes@1.2.20...@clerk/themes@1.2.21-staging.1) (2022-11-02) - -**Note:** Version bump only for package @clerk/themes - -### [1.2.20](https://github.com/clerk/javascript/compare/@clerk/themes@1.2.20-staging.0...@clerk/themes@1.2.20) (2022-10-24) - -**Note:** Version bump only for package @clerk/themes - -### [1.2.19](https://github.com/clerk/javascript/compare/@clerk/themes@1.2.18...@clerk/themes@1.2.19) (2022-10-14) - -**Note:** Version bump only for package @clerk/themes - -### [1.2.18](https://github.com/clerk/javascript/compare/@clerk/themes@1.2.18-staging.2...@clerk/themes@1.2.18) (2022-10-14) - -**Note:** Version bump only for package @clerk/themes - -### [1.2.18-staging.1](https://github.com/clerk/javascript/compare/@clerk/themes@1.2.17...@clerk/themes@1.2.18-staging.1) (2022-10-13) - -**Note:** Version bump only for package @clerk/themes - -### [1.2.17](https://github.com/clerk/javascript/compare/@clerk/themes@1.2.17-staging.0...@clerk/themes@1.2.17) (2022-10-07) - -**Note:** Version bump only for package @clerk/themes - -### [1.2.16](https://github.com/clerk/javascript/compare/@clerk/themes@1.2.16-staging.0...@clerk/themes@1.2.16) (2022-10-05) - -**Note:** Version bump only for package @clerk/themes - -### [1.2.15](https://github.com/clerk/javascript/compare/@clerk/themes@1.2.15-staging.3...@clerk/themes@1.2.15) (2022-10-03) - -**Note:** Version bump only for package @clerk/themes - -### [1.2.14](https://github.com/clerk/javascript/compare/@clerk/themes@1.2.14-staging.4...@clerk/themes@1.2.14) (2022-09-29) - -**Note:** Version bump only for package @clerk/themes - -### [1.2.13](https://github.com/clerk/javascript/compare/@clerk/themes@1.2.12...@clerk/themes@1.2.13) (2022-09-25) - -**Note:** Version bump only for package @clerk/themes - -### [1.2.12](https://github.com/clerk/javascript/compare/@clerk/themes@1.2.12-staging.1...@clerk/themes@1.2.12) (2022-09-24) - -**Note:** Version bump only for package @clerk/themes - -### [1.2.11](https://github.com/clerk/javascript/compare/@clerk/themes@1.2.11-staging.0...@clerk/themes@1.2.11) (2022-09-22) - -**Note:** Version bump only for package @clerk/themes - -### [1.2.10](https://github.com/clerk/javascript/compare/@clerk/themes@1.2.9-staging.4...@clerk/themes@1.2.10) (2022-09-19) - -**Note:** Version bump only for package @clerk/themes - -### [1.2.9](https://github.com/clerk/javascript/compare/@clerk/themes@1.2.9-staging.4...@clerk/themes@1.2.9) (2022-09-16) - -**Note:** Version bump only for package @clerk/themes - -### [1.2.8](https://github.com/clerk/javascript/compare/@clerk/themes@1.2.8-staging.0...@clerk/themes@1.2.8) (2022-09-07) - -**Note:** Version bump only for package @clerk/themes - -### [1.2.7](https://github.com/clerk/javascript/compare/@clerk/themes@1.2.7-staging.0...@clerk/themes@1.2.7) (2022-09-02) - -**Note:** Version bump only for package @clerk/themes - -### [1.2.6](https://github.com/clerk/javascript/compare/@clerk/themes@1.2.6-staging.0...@clerk/themes@1.2.6) (2022-08-29) - -**Note:** Version bump only for package @clerk/themes - -### [1.2.5](https://github.com/clerk/javascript/compare/@clerk/themes@1.2.5-staging.2...@clerk/themes@1.2.5) (2022-08-29) - -**Note:** Version bump only for package @clerk/themes - -### [1.2.4](https://github.com/clerk/javascript/compare/@clerk/themes@1.2.4-staging.0...@clerk/themes@1.2.4) (2022-08-24) - -**Note:** Version bump only for package @clerk/themes - -### [1.2.3](https://github.com/clerk/javascript/compare/@clerk/themes@1.2.2...@clerk/themes@1.2.3) (2022-08-18) - -**Note:** Version bump only for package @clerk/themes - -### [1.2.2](https://github.com/clerk/javascript/compare/@clerk/themes@1.2.2-staging.0...@clerk/themes@1.2.2) (2022-08-18) - -**Note:** Version bump only for package @clerk/themes - -### [1.2.1](https://github.com/clerk/javascript/compare/@clerk/themes@1.2.0...@clerk/themes@1.2.1) (2022-08-16) - -**Note:** Version bump only for package @clerk/themes - -## [1.2.0](https://github.com/clerk/javascript/compare/@clerk/themes@1.2.0-staging.0...@clerk/themes@1.2.0) (2022-08-11) - -**Note:** Version bump only for package @clerk/themes - -## [1.1.0](https://github.com/clerk/javascript/compare/@clerk/themes@1.1.0-staging.0...@clerk/themes@1.1.0) (2022-08-09) - -**Note:** Version bump only for package @clerk/themes diff --git a/packages/themes/LICENSE b/packages/themes/LICENSE deleted file mode 100644 index 66914b6af7c..00000000000 --- a/packages/themes/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2022 Clerk, Inc. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/packages/themes/README.md b/packages/themes/README.md deleted file mode 100644 index 80efdbda980..00000000000 --- a/packages/themes/README.md +++ /dev/null @@ -1,71 +0,0 @@ -

- - - - - - -
-

@clerk/themes

-

- -
- -[![Chat on Discord](https://img.shields.io/discord/856971667393609759.svg?logo=discord)](https://clerk.com/discord) -[![Clerk documentation](https://img.shields.io/badge/documentation-clerk-green.svg)](https://clerk.com/docs?utm_source=github&utm_medium=clerk_themes) -[![Follow on Twitter](https://img.shields.io/twitter/follow/ClerkDev?style=social)](https://twitter.com/intent/follow?screen_name=ClerkDev) - -[Changelog](https://github.com/clerk/javascript/blob/main/packages/themes/CHANGELOG.md) -· -[Report a Bug](https://github.com/clerk/javascript/issues/new?assignees=&labels=needs-triage&projects=&template=BUG_REPORT.yml) -· -[Request a Feature](https://feedback.clerk.com/roadmap) -· -[Get help](https://clerk.com/contact/support?utm_source=github&utm_medium=clerk_themes) - -
- -## Getting Started - -[Clerk](https://clerk.com/?utm_source=github&utm_medium=clerk_themes) is the easiest way to add authentication and user management to your application. Add sign up, sign in, and profile management to your application in minutes. - -You can customize the appearance of Clerk components by using the [appearance prop](https://clerk.com/docs/customization/overview?utm_source=github&utm_medium=clerk_themes). `@clerk/themes` offers prebuilt themes. - -### Prerequisites - -- An existing Clerk application. [Create your account for free](https://dashboard.clerk.com/sign-up?utm_source=github&utm_medium=clerk_themes). - -### Installation - -```shell -npm install @clerk/themes -``` - -## Usage - -Learn how to [apply custom themes](https://clerk.com/docs/customization/themes#usage?utm_source=github&utm_medium=clerk_themes) in the reference documentation. - -## Support - -You can get in touch with us in any of the following ways: - -- Join our official community [Discord server](https://clerk.com/discord) -- On [our support page](https://clerk.com/contact/support?utm_source=github&utm_medium=clerk_themes) - -## Contributing - -We're open to all community contributions! If you'd like to contribute in any way, please read [our contribution guidelines](https://github.com/clerk/javascript/blob/main/docs/CONTRIBUTING.md) and [code of conduct](https://github.com/clerk/javascript/blob/main/docs/CODE_OF_CONDUCT.md). - -## Security - -`@clerk/themes` follows good practices of security, but 100% security cannot be assured. - -`@clerk/themes` is provided **"as is"** without any **warranty**. Use at your own risk. - -_For more information and to report security issues, please refer to our [security documentation](https://github.com/clerk/javascript/blob/main/docs/SECURITY.md)._ - -## License - -This project is licensed under the **MIT license**. - -See [LICENSE](https://github.com/clerk/javascript/blob/main/packages/themes/LICENSE) for more information. diff --git a/packages/themes/package.json b/packages/themes/package.json deleted file mode 100644 index 229a1df235d..00000000000 --- a/packages/themes/package.json +++ /dev/null @@ -1,63 +0,0 @@ -{ - "name": "@clerk/themes", - "version": "2.4.39", - "description": "Themes for the Clerk auth components", - "keywords": [ - "react", - "next", - "auth", - "authentication", - "passwordless", - "session", - "jwt", - "customisation", - "themes" - ], - "homepage": "https://clerk.com/", - "bugs": { - "url": "https://github.com/clerk/javascript/issues" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/clerk/javascript.git", - "directory": "packages/themes" - }, - "license": "MIT", - "author": "Clerk", - "exports": { - ".": { - "types": "./dist/index.d.ts", - "import": "./dist/index.js", - "require": "./dist/index.cjs" - }, - "./shadcn.css": "./dist/themes/shadcn.css" - }, - "main": "dist/index.cjs", - "module": "dist/index.js", - "types": "dist/index.d.ts", - "files": [ - "dist" - ], - "scripts": { - "build": "tsup", - "clean": "rimraf ./dist", - "dev": "tsup --watch", - "format": "node ../../scripts/format-package.mjs", - "format:check": "node ../../scripts/format-package.mjs --check", - "lint": "eslint src", - "lint:attw": "attw --pack . --exclude-entrypoints shadcn.css --profile node16" - }, - "dependencies": { - "@clerk/shared": "workspace:^", - "tslib": "catalog:repo" - }, - "devDependencies": { - "tsup": "catalog:repo" - }, - "engines": { - "node": ">=20.9.0" - }, - "publishConfig": { - "access": "public" - } -} diff --git a/packages/themes/src/index.ts b/packages/themes/src/index.ts deleted file mode 100644 index 34018070c83..00000000000 --- a/packages/themes/src/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from './createTheme'; -export * from './themes'; diff --git a/packages/themes/tsconfig.json b/packages/themes/tsconfig.json deleted file mode 100644 index fcbe0eeb46c..00000000000 --- a/packages/themes/tsconfig.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "compilerOptions": { - "outDir": "dist", - "baseUrl": ".", - "lib": ["es6", "dom"], - "module": "ESNext", - "moduleResolution": "bundler", - "importHelpers": true, - "declaration": true, - "declarationMap": false, - "noImplicitReturns": true, - "noUnusedLocals": false, - "noUnusedParameters": true, - "resolveJsonModule": true, - "sourceMap": false, - "strict": true, - "esModuleInterop": true, - "skipLibCheck": true, - "allowJs": true, - "target": "es2020" - }, - "include": ["src"] -} diff --git a/packages/themes/tsup.config.ts b/packages/themes/tsup.config.ts deleted file mode 100644 index ad4d2719a51..00000000000 --- a/packages/themes/tsup.config.ts +++ /dev/null @@ -1,38 +0,0 @@ -import { cp, mkdir, readdir } from 'fs/promises'; -import { extname, join } from 'path'; -import { defineConfig } from 'tsup'; - -export default defineConfig({ - entry: ['./src/**/*.{ts,tsx}'], - format: ['cjs', 'esm'], - bundle: false, - clean: true, - minify: false, - sourcemap: false, - dts: true, - target: 'es2020', - onSuccess: async () => { - // Ensure dist/themes directory exists - await mkdir('./dist/themes', { recursive: true }); - - // Copy all CSS files from src/themes to dist/themes - try { - const files = await readdir('./src/themes'); - const cssFiles = files.filter(file => extname(file) === '.css'); - - for (const cssFile of cssFiles) { - await cp(join('./src/themes', cssFile), join('./dist/themes', cssFile)); - console.log(`✓ Copied ${cssFile}`); - } - } catch (error) { - // Handle specific errors gracefully, log unexpected ones - if (error instanceof Error && 'code' in error && error.code === 'ENOENT') { - // Directory doesn't exist or no CSS files found, that's ok - console.log('ℹ No themes directory or CSS files found, skipping copy'); - } else { - // Log unexpected errors to avoid hiding real issues - console.warn('⚠ Warning: Failed to copy CSS files:', error); - } - } - }, -}); diff --git a/packages/ui/package.json b/packages/ui/package.json index da4305c7a07..cc49b342aed 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -13,34 +13,45 @@ "type": "module", "exports": { ".": { - "types": "./dist/types/index.d.ts", - "import": "./dist/ui.mjs", - "default": "./dist/ui.mjs" + "types": "./dist/index.d.ts", + "import": "./dist/index.js", + "default": "./dist/index.js" }, "./entry": { - "types": "./dist/types/entry.d.ts", - "import": "./dist/entry.mjs", - "default": "./dist/entry.mjs" + "types": "./dist/entry.d.ts", + "import": "./dist/entry.js", + "default": "./dist/entry.js" }, + "./internal": { + "types": "./dist/internal/index.d.ts", + "import": "./dist/internal/index.js", + "default": "./dist/internal/index.js" + }, + "./themes": { + "types": "./dist/themes/index.d.ts", + "import": "./dist/themes/index.js", + "default": "./dist/themes/index.js" + }, + "./themes/shadcn.css": "./dist/themes/shadcn.css", "./package.json": "./package.json" }, - "types": "dist/types/index.d.ts", + "types": "dist/index.d.ts", "files": [ "dist" ], "scripts": { - "build": "pnpm build:bundle && pnpm build:declarations", + "build": "pnpm build:umd && pnpm build:esm", "build:analyze": "rspack build --config rspack.config.js --env production --analyze", - "build:bundle": "rspack build --config rspack.config.js --env production", - "build:declarations": "tsc -p tsconfig.declarations.json", + "build:esm": "tsdown", + "build:umd": "rspack build --config rspack.config.js --env production", "bundlewatch": "FORCE_COLOR=1 bundlewatch --config bundlewatch.config.json", "bundlewatch:fix": "node bundlewatch-fix.mjs", "clean": "rimraf ./dist", - "dev": "rspack serve --config rspack.config.js", + "dev": "tsdown --watch src", "dev:origin": "rspack serve --config rspack.config.js --env devOrigin=http://localhost:${PORT:-4001}", "format": "node ../../scripts/format-package.mjs", "format:check": "node ../../scripts/format-package.mjs --check", - "lint:attw": "attw --pack . --profile esm-only --ignore-rules internal-resolution-error", + "lint:attw": "attw --pack . --exclude-entrypoints themes/shadcn.css --profile esm-only", "lint:disabled": "eslint src", "lint:publint": "publint", "showerrors": "tsc", @@ -69,10 +80,12 @@ "@rspack/cli": "^1.6.0", "@rspack/core": "^1.6.0", "@rspack/plugin-react-refresh": "^1.5.2", + "@svgr/rollup": "^8.1.0", "@svgr/webpack": "^6.5.1", "@types/webpack-env": "^1.18.8", "bundlewatch": "^0.4.1", "cross-fetch": "^4.1.0", + "tsdown": "catalog:repo", "webpack-merge": "^5.10.0" }, "engines": { diff --git a/packages/ui/rspack.config.js b/packages/ui/rspack.config.js index bfcbdd8ff2f..2c1a0520ee3 100644 --- a/packages/ui/rspack.config.js +++ b/packages/ui/rspack.config.js @@ -15,14 +15,10 @@ const isDevelopment = mode => !isProduction(mode); const variants = { uiBrowser: 'ui.browser', - ui: 'ui', - entry: 'entry', }; const variantToSourceFile = { [variants.uiBrowser]: './src/index.browser.ts', - [variants.ui]: './src/index.ts', - [variants.entry]: './src/entry.ts', }; /** @@ -140,43 +136,9 @@ const commonForProdBrowser = () => { }; /** - * Common production configuration for bundled module builds (no chunks) - * @returns {import('@rspack/core').Configuration} - */ -const commonForProdBundled = () => { - return { - devtool: false, - output: { - path: path.resolve(__dirname, 'dist'), - publicPath: '', - }, - module: { - rules: [svgLoader(), ...typescriptLoaderProd({ targets: 'last 2 years' })], - }, - optimization: { - minimize: true, - minimizer: [ - new rspack.SwcJsMinimizerRspackPlugin({ - minimizerOptions: { - compress: { - unused: true, - dead_code: true, - passes: 2, - }, - mangle: { - safari10: true, - }, - }, - }), - ], - }, - }; -}; - -/** - * Production configuration - builds multiple variants + * Production configuration - builds UMD browser variant only * @param {'development'|'production'} mode - * @returns {(import('@rspack/core').Configuration)[]} + * @returns {import('@rspack/core').Configuration} */ const prodConfig = mode => { // Browser bundle with chunks (UMD) @@ -186,52 +148,7 @@ const prodConfig = mode => { commonForProdBrowser(), ); - // ESM module bundle (no chunks) - const uiEsm = merge(entryForVariant(variants.ui), common({ mode, variant: variants.ui }), commonForProdBundled(), { - experiments: { - outputModule: true, - }, - output: { - filename: '[name].mjs', - libraryTarget: 'module', - }, - plugins: [ - // Bundle everything into a single file for ESM - new rspack.optimize.LimitChunkCountPlugin({ - maxChunks: 1, - }), - ], - optimization: { - splitChunks: false, - }, - }); - - // Entry ESM module bundle (no chunks) - const entryEsm = merge( - entryForVariant(variants.entry), - common({ mode, variant: variants.entry }), - commonForProdBundled(), - { - experiments: { - outputModule: true, - }, - output: { - filename: '[name].mjs', - libraryTarget: 'module', - }, - plugins: [ - // Bundle everything into a single file for ESM - new rspack.optimize.LimitChunkCountPlugin({ - maxChunks: 1, - }), - ], - optimization: { - splitChunks: false, - }, - }, - ); - - return [uiBrowser, uiEsm, entryEsm]; + return uiBrowser; }; /** diff --git a/packages/ui/src/Components.tsx b/packages/ui/src/Components.tsx index 311a9467efe..8c2ac885f8e 100644 --- a/packages/ui/src/Components.tsx +++ b/packages/ui/src/Components.tsx @@ -5,7 +5,6 @@ import type { __internal_PlanDetailsProps, __internal_SubscriptionDetailsProps, __internal_UserVerificationProps, - Appearance, Clerk, ClerkOptions, CreateOrganizationProps, @@ -17,6 +16,8 @@ import type { UserProfileProps, WaitlistProps, } from '@clerk/shared/types'; + +import type { Appearance } from './internal/appearance'; import { createDeferredPromise } from '@clerk/shared/utils'; import React, { Suspense } from 'react'; diff --git a/packages/ui/src/baseTheme.ts b/packages/ui/src/baseTheme.ts index 42883ac5763..ed85bffb7f0 100644 --- a/packages/ui/src/baseTheme.ts +++ b/packages/ui/src/baseTheme.ts @@ -1,6 +1,5 @@ -import type { Appearance, Elements } from '@clerk/shared/types'; - import type { InternalTheme } from './foundations'; +import type { Appearance, Elements } from './internal/appearance'; const BORDER_SHADOW_LENGTH = '0px 0px 0px 1px'; const BUTTON_SOLID_SHADOW = (color: string) => diff --git a/packages/ui/src/contexts/components/Plans.tsx b/packages/ui/src/contexts/components/Plans.tsx index 834b37fdb06..3b2131bbf0f 100644 --- a/packages/ui/src/contexts/components/Plans.tsx +++ b/packages/ui/src/contexts/components/Plans.tsx @@ -9,7 +9,6 @@ import { useSession, } from '@clerk/shared/react'; import type { - Appearance, BillingPlanResource, BillingSubscriptionItemResource, BillingSubscriptionPlanPeriod, @@ -19,6 +18,7 @@ import { useCallback, useMemo } from 'react'; import { useProtect } from '@/ui/common/Gate'; import { getClosestProfileScrollBox } from '@/ui/utils/getClosestProfileScrollBox'; +import type { Appearance } from '../../internal/appearance'; import type { LocalizationKey } from '../../localization'; import { localizationKeys } from '../../localization'; import { useSubscriberTypeContext } from './SubscriberType'; diff --git a/packages/ui/src/customizables/classGeneration.ts b/packages/ui/src/customizables/classGeneration.ts index ad1ebf44d46..403c13036d1 100644 --- a/packages/ui/src/customizables/classGeneration.ts +++ b/packages/ui/src/customizables/classGeneration.ts @@ -1,6 +1,5 @@ -import type { Elements, ElementState } from '@clerk/shared/types'; - import type { FlowMetadata } from '../elements/contexts'; +import type { Elements, ElementState } from '../internal/appearance'; import type { ElementDescriptor, ElementId } from './elementDescriptors'; import { CLASS_PREFIX } from './elementDescriptors'; import type { ParsedElements } from './parseAppearance'; diff --git a/packages/ui/src/customizables/elementDescriptors.ts b/packages/ui/src/customizables/elementDescriptors.ts index 9d0dfae51dc..9772f7e22d9 100644 --- a/packages/ui/src/customizables/elementDescriptors.ts +++ b/packages/ui/src/customizables/elementDescriptors.ts @@ -1,5 +1,4 @@ -import type { ElementObjectKey, ElementsConfig, IdSelectors, StateSelectors } from '@clerk/shared/types'; - +import type { ElementObjectKey, ElementsConfig, IdSelectors, StateSelectors } from '../internal/appearance'; import { containsAllOfType } from '../utils/containsAllOf'; import { fromEntries } from '../utils/fromEntries'; diff --git a/packages/ui/src/customizables/parseAppearance.ts b/packages/ui/src/customizables/parseAppearance.ts index 11348a8f29d..319f70df2e5 100644 --- a/packages/ui/src/customizables/parseAppearance.ts +++ b/packages/ui/src/customizables/parseAppearance.ts @@ -1,8 +1,9 @@ -import type { Appearance, CaptchaAppearanceOptions, DeepPartial, Elements, Layout, Theme } from '@clerk/shared/types'; +import type { DeepPartial } from '@clerk/shared/types'; import { fastDeepMergeAndReplace } from '@clerk/shared/utils'; import { baseTheme, getBaseTheme } from '../baseTheme'; import { createInternalTheme, defaultInternalTheme } from '../foundations'; +import type { Appearance, CaptchaAppearanceOptions, Elements, Layout, Theme } from '../internal/appearance'; import type { InternalTheme } from '../styledSystem'; import { createColorScales, diff --git a/packages/ui/src/customizables/parseVariables.ts b/packages/ui/src/customizables/parseVariables.ts index 56df896df03..45d6f07dab6 100644 --- a/packages/ui/src/customizables/parseVariables.ts +++ b/packages/ui/src/customizables/parseVariables.ts @@ -1,8 +1,7 @@ -import type { Theme } from '@clerk/shared/types'; - import { createShadowSet, generateShadow } from '../foundations/shadows'; import { BORDER_RADIUS_SCALE_RATIOS, spaceScaleKeys } from '../foundations/sizes'; import { FONT_SIZE_SCALE_RATIOS, type FontSizeKey, type fontWeights } from '../foundations/typography'; +import type { Theme } from '../internal/appearance'; import { colors } from '../utils/colors'; import { colorOptionToThemedAlphaScale, colorOptionToThemedLightnessScale } from '../utils/colors/scales'; import { createAlphaColorMixString } from '../utils/colors/utils'; diff --git a/packages/ui/src/index.ts b/packages/ui/src/index.ts index 83cc4b5757c..cc3aa52b41b 100644 --- a/packages/ui/src/index.ts +++ b/packages/ui/src/index.ts @@ -1 +1,12 @@ -export const uiVersion = {} as any; +import type { Ui } from './internal'; +import type { Appearance } from './internal/appearance'; + +declare const PACKAGE_VERSION: string; + +/** + * Default ui object for Clerk UI components + * Tagged with the internal Appearance type for type-safe appearance prop inference + */ +export const ui = { + version: PACKAGE_VERSION, +} as Ui; diff --git a/packages/ui/src/internal.ts b/packages/ui/src/internal.ts deleted file mode 100644 index f7b660df234..00000000000 --- a/packages/ui/src/internal.ts +++ /dev/null @@ -1 +0,0 @@ -export { type ComponentControls, type MountComponentRenderer, mountComponentRenderer } from './Components'; diff --git a/packages/shared/src/types/appearance.ts b/packages/ui/src/internal/appearance.ts similarity index 98% rename from packages/shared/src/types/appearance.ts rename to packages/ui/src/internal/appearance.ts index 117548c680f..e44adfdf3b6 100644 --- a/packages/shared/src/types/appearance.ts +++ b/packages/ui/src/internal/appearance.ts @@ -1,22 +1,22 @@ -import type * as CSS from 'csstype'; - import type { AlertId, + BuiltInColors, CardActionId, + EnterpriseProvider, FieldId, MenuId, + OAuthProvider, OrganizationPreviewId, + PhoneCodeChannel, ProfilePageId, ProfileSectionId, + SamlIdpSlug, SelectId, + TransparentColor, UserPreviewId, -} from './elementIds'; -import type { EnterpriseProvider } from './enterpriseAccount'; -import type { OAuthProvider } from './oauth'; -import type { PhoneCodeChannel } from './phoneCodeChannel'; -import type { SamlIdpSlug } from './saml'; -import type { BuiltInColors, TransparentColor } from './theme'; -import type { Web3Provider } from './web3'; + Web3Provider, +} from '@clerk/shared/types'; +import type * as CSS from 'csstype'; type CSSProperties = CSS.PropertiesFallback; type CSSPropertiesWithMultiValues = { [K in keyof CSSProperties]: CSSProperties[K] }; @@ -872,7 +872,7 @@ export type Theme = { * Supports both object-based themes and string-based themes: * * @example - * import { dark } from "@clerk/themes"; + * import { dark } from "@clerk/ui/themes"; * appearance={{ theme: dark }} * * @example @@ -887,7 +887,7 @@ export type Theme = { * For further customisation, you can use the {@link Theme.layout}, {@link Theme.variables} and {@link Theme.elements} props. * * @example - * import { dark } from "@clerk/themes"; + * import { dark } from "@clerk/ui/themes"; * appearance={{ baseTheme: dark }} */ baseTheme?: BaseTheme | BaseTheme[]; diff --git a/packages/ui/src/internal/index.ts b/packages/ui/src/internal/index.ts new file mode 100644 index 00000000000..211e987d817 --- /dev/null +++ b/packages/ui/src/internal/index.ts @@ -0,0 +1,96 @@ +import type { Appearance } from './appearance'; + +export type { ComponentControls, MountComponentRenderer } from '../Components'; + +/** + * Extracts the appearance type from a Ui object. We got 3 cases: + * - If the Ui type has __appearanceType with a specific type, extract it + * - If __appearanceType is 'any', fallback to base Appearance type + * - Otherwise, fallback to the base Appearance type + */ +export type ExtractAppearanceType = T extends { __appearanceType?: infer A } + ? 0 extends 1 & A // Check if A is 'any' (this trick works because 1 & any = any, and 0 extends any) + ? Default + : A + : Default; + +declare const Tags: unique symbol; +type Tagged = BaseType & { [Tags]: { [K in Tag]: void } }; + +/** + * Ui type that carries appearance type information via phantom property + * Tagged to ensure only official ui objects from @clerk/ui can be used + */ +export type Ui = Tagged< + { + version: string; + url?: string; + /** + * Phantom property for type-level appearance inference + * This property never exists at runtime + */ + __appearanceType?: A; + }, + 'ClerkUi' +>; + +export type { + AlphaColorScale, + Appearance, + APIKeysTheme, + BaseTheme, + CaptchaAppearanceOptions, + CheckoutTheme, + ColorScale, + ColorScaleWithRequiredBase, + CreateOrganizationTheme, + CssColorOrAlphaScale, + CssColorOrScale, + ElementObjectKey, + Elements, + ElementsConfig, + ElementState, + FontFamily, + IdSelectors, + Layout, + OAuthConsentTheme, + OrganizationListTheme, + OrganizationProfileTheme, + OrganizationSwitcherTheme, + PlanDetailTheme, + PricingTableTheme, + SignInTheme, + SignUpTheme, + StateSelectors, + SubscriptionDetailsTheme, + TaskChooseOrganizationTheme, + Theme, + UserAvatarTheme, + UserButtonTheme, + UserProfileTheme, + UserVerificationTheme, + Variables, + WaitlistTheme, +} from './appearance'; + +// export type { +// AlertId, +// CardActionId, +// FieldId, +// MenuId, +// OrganizationPreviewId, +// ProfilePageId, +// ProfileSectionId, +// SelectId, +// UserPreviewId, +// } from './internal/elementIds'; + +/** + * @internal + * Local ui object for testing purposes + * Do not use + */ +export const localUiForTesting = { + version: PACKAGE_VERSION, + url: 'http://localhost:4001/npm/ui.browser.js', +} as Ui; diff --git a/packages/ui/src/lazyModules/MountedCheckoutDrawer.tsx b/packages/ui/src/lazyModules/MountedCheckoutDrawer.tsx index aab2f2b8814..88696be89db 100644 --- a/packages/ui/src/lazyModules/MountedCheckoutDrawer.tsx +++ b/packages/ui/src/lazyModules/MountedCheckoutDrawer.tsx @@ -1,6 +1,7 @@ import { useUser } from '@clerk/shared/react'; -import type { __internal_CheckoutProps, Appearance } from '@clerk/shared/types'; +import type { __internal_CheckoutProps } from '@clerk/shared/types'; +import type { Appearance } from '../internal/appearance'; import { Checkout } from './components'; import { LazyDrawerRenderer } from './providers'; diff --git a/packages/ui/src/lazyModules/MountedPlanDetailDrawer.tsx b/packages/ui/src/lazyModules/MountedPlanDetailDrawer.tsx index b144468fe16..782c87776e6 100644 --- a/packages/ui/src/lazyModules/MountedPlanDetailDrawer.tsx +++ b/packages/ui/src/lazyModules/MountedPlanDetailDrawer.tsx @@ -1,6 +1,7 @@ import { useUser } from '@clerk/shared/react'; -import type { __internal_PlanDetailsProps, Appearance } from '@clerk/shared/types'; +import type { __internal_PlanDetailsProps } from '@clerk/shared/types'; +import type { Appearance } from '../internal/appearance'; import { PlanDetails } from './components'; import { LazyDrawerRenderer } from './providers'; diff --git a/packages/ui/src/lazyModules/MountedSubscriptionDetailDrawer.tsx b/packages/ui/src/lazyModules/MountedSubscriptionDetailDrawer.tsx index 8ab75ff7ccb..49c960dcc08 100644 --- a/packages/ui/src/lazyModules/MountedSubscriptionDetailDrawer.tsx +++ b/packages/ui/src/lazyModules/MountedSubscriptionDetailDrawer.tsx @@ -1,7 +1,8 @@ import { useUser } from '@clerk/shared/react'; -import type { __internal_SubscriptionDetailsProps, Appearance } from '@clerk/shared/types'; +import type { __internal_SubscriptionDetailsProps } from '@clerk/shared/types'; import { SubscriptionDetails } from '../components/SubscriptionDetails'; +import type { Appearance } from '../internal/appearance'; import { LazyDrawerRenderer } from './providers'; export function MountedSubscriptionDetailDrawer({ diff --git a/packages/ui/src/lazyModules/providers.tsx b/packages/ui/src/lazyModules/providers.tsx index 3a852efec89..b0f62846340 100644 --- a/packages/ui/src/lazyModules/providers.tsx +++ b/packages/ui/src/lazyModules/providers.tsx @@ -1,10 +1,10 @@ import { deprecated } from '@clerk/shared/deprecated'; import type { ModuleManager } from '@clerk/shared/moduleManager'; -import type { Appearance } from '@clerk/shared/types'; import React, { lazy, Suspense } from 'react'; import type { FlowMetadata } from '../elements/contexts'; import type { Drawer } from '../elements/Drawer'; +import type { Appearance } from '../internal/appearance'; import type { ThemableCssProp } from '../styledSystem'; import type { AvailableComponentCtx } from '../types'; import type { ClerkComponentName } from './components'; diff --git a/packages/themes/src/createTheme.ts b/packages/ui/src/themes/createTheme.ts similarity index 79% rename from packages/themes/src/createTheme.ts rename to packages/ui/src/themes/createTheme.ts index 48c1e95ccec..3fb963f7aca 100644 --- a/packages/themes/src/createTheme.ts +++ b/packages/ui/src/themes/createTheme.ts @@ -1,8 +1,9 @@ // Temp way to import the type. We will clean this up when we extract // theming into its own package -import type { BaseTheme, DeepPartial, Elements, Theme } from '@clerk/shared/types'; +import type { DeepPartial } from '@clerk/shared/types'; +import type { BaseTheme, Elements, Theme } from '@clerk/ui/internal'; -import type { InternalTheme } from '../../ui/src/foundations'; +import type { InternalTheme } from '../foundations'; interface CreateClerkThemeParams extends DeepPartial, Pick { /** diff --git a/packages/themes/src/themes/dark.ts b/packages/ui/src/themes/dark.ts similarity index 91% rename from packages/themes/src/themes/dark.ts rename to packages/ui/src/themes/dark.ts index 3a9e4530695..584db34b151 100644 --- a/packages/themes/src/themes/dark.ts +++ b/packages/ui/src/themes/dark.ts @@ -1,4 +1,4 @@ -import { experimental_createTheme } from '../createTheme'; +import { experimental_createTheme } from './createTheme'; export const dark = experimental_createTheme({ name: 'dark', diff --git a/packages/themes/src/themes/index.ts b/packages/ui/src/themes/index.ts similarity index 82% rename from packages/themes/src/themes/index.ts rename to packages/ui/src/themes/index.ts index b57a2cb704d..41975539c1e 100644 --- a/packages/themes/src/themes/index.ts +++ b/packages/ui/src/themes/index.ts @@ -1,3 +1,4 @@ +export * from './createTheme'; export * from './dark'; export * from './shadesOfPurple'; export * from './neobrutalism'; diff --git a/packages/themes/src/themes/neobrutalism.ts b/packages/ui/src/themes/neobrutalism.ts similarity index 97% rename from packages/themes/src/themes/neobrutalism.ts rename to packages/ui/src/themes/neobrutalism.ts index 3d49f81aa5b..ccb4c1ca447 100644 --- a/packages/themes/src/themes/neobrutalism.ts +++ b/packages/ui/src/themes/neobrutalism.ts @@ -1,4 +1,4 @@ -import { experimental_createTheme } from '../createTheme'; +import { experimental_createTheme } from './createTheme'; const buttonStyle = { boxShadow: '3px 3px 0px #000', diff --git a/packages/themes/src/themes/shadcn.css b/packages/ui/src/themes/shadcn.css similarity index 100% rename from packages/themes/src/themes/shadcn.css rename to packages/ui/src/themes/shadcn.css diff --git a/packages/themes/src/themes/shadcn.ts b/packages/ui/src/themes/shadcn.ts similarity index 95% rename from packages/themes/src/themes/shadcn.ts rename to packages/ui/src/themes/shadcn.ts index 82cb9435513..4d353486f69 100644 --- a/packages/themes/src/themes/shadcn.ts +++ b/packages/ui/src/themes/shadcn.ts @@ -1,4 +1,4 @@ -import { experimental_createTheme } from '../createTheme'; +import { experimental_createTheme } from './createTheme'; export const shadcn = experimental_createTheme({ name: 'shadcn', diff --git a/packages/themes/src/themes/shadesOfPurple.ts b/packages/ui/src/themes/shadesOfPurple.ts similarity index 85% rename from packages/themes/src/themes/shadesOfPurple.ts rename to packages/ui/src/themes/shadesOfPurple.ts index a80392ed149..032c03edc84 100644 --- a/packages/themes/src/themes/shadesOfPurple.ts +++ b/packages/ui/src/themes/shadesOfPurple.ts @@ -1,4 +1,4 @@ -import { experimental_createTheme } from '../createTheme'; +import { experimental_createTheme } from './createTheme'; import { dark } from './dark'; export const shadesOfPurple = experimental_createTheme({ diff --git a/packages/themes/src/themes/simple.ts b/packages/ui/src/themes/simple.ts similarity index 70% rename from packages/themes/src/themes/simple.ts rename to packages/ui/src/themes/simple.ts index 228dfb752e3..37554bf3c53 100644 --- a/packages/themes/src/themes/simple.ts +++ b/packages/ui/src/themes/simple.ts @@ -1,4 +1,4 @@ -import { experimental_createTheme } from '../createTheme'; +import { experimental_createTheme } from './createTheme'; export const experimental__simple = experimental_createTheme({ name: 'simple', diff --git a/packages/ui/src/utils/__tests__/extractCssLayerNameFromAppearance.ts b/packages/ui/src/utils/__tests__/extractCssLayerNameFromAppearance.ts index bf77a612f38..49af9d80dbd 100644 --- a/packages/ui/src/utils/__tests__/extractCssLayerNameFromAppearance.ts +++ b/packages/ui/src/utils/__tests__/extractCssLayerNameFromAppearance.ts @@ -1,6 +1,6 @@ -import type { Appearance, BaseTheme } from '@clerk/shared/types'; import { describe, expect, it } from 'vitest'; +import type { Appearance, BaseTheme } from '../../internal/appearance'; import { extractCssLayerNameFromAppearance } from '../extractCssLayerNameFromAppearance'; describe('extractCssLayerNameFromAppearance', () => { diff --git a/packages/ui/src/utils/colors/__tests__/scales.test.ts b/packages/ui/src/utils/colors/__tests__/scales.test.ts index 445c3bb505d..3b71ba71dc3 100644 --- a/packages/ui/src/utils/colors/__tests__/scales.test.ts +++ b/packages/ui/src/utils/colors/__tests__/scales.test.ts @@ -1,6 +1,6 @@ -import type { ColorScale } from '@clerk/shared/types'; import { beforeEach, describe, expect, it, vi } from 'vitest'; +import type { ColorScale } from '../../../internal/appearance'; import { cssSupports } from '../../cssSupports'; import { colorOptionToThemedAlphaScale, diff --git a/packages/ui/src/utils/colors/constants.ts b/packages/ui/src/utils/colors/constants.ts index 3ed99b0de17..bece7a14bdb 100644 --- a/packages/ui/src/utils/colors/constants.ts +++ b/packages/ui/src/utils/colors/constants.ts @@ -2,7 +2,7 @@ * Shared constants for color utilities */ -import type { ColorScale } from '@clerk/shared/types'; +import type { ColorScale } from '../../internal/appearance'; // Types export type ColorShade = 25 | 50 | 100 | 150 | 200 | 300 | 400 | 500 | 600 | 700 | 750 | 800 | 850 | 900 | 950; diff --git a/packages/ui/src/utils/colors/scales.ts b/packages/ui/src/utils/colors/scales.ts index 29991af5e4d..e18a15d3a69 100644 --- a/packages/ui/src/utils/colors/scales.ts +++ b/packages/ui/src/utils/colors/scales.ts @@ -1,5 +1,6 @@ -import type { ColorScale, CssColorOrAlphaScale, CssColorOrScale, HslaColorString } from '@clerk/shared/types'; +import type { HslaColorString } from '@clerk/shared/types'; +import type { ColorScale, CssColorOrAlphaScale, CssColorOrScale } from '../../internal/appearance'; import { cssSupports } from '../cssSupports'; import { ALL_SHADES, ALPHA_VALUES, COLOR_SCALE, DARK_SHADES, LIGHT_SHADES, LIGHTNESS_CONFIG } from './constants'; import { colors as legacyColors } from './legacy'; diff --git a/packages/ui/src/utils/colors/utils.ts b/packages/ui/src/utils/colors/utils.ts index 3aea423f31c..c48d637d50e 100644 --- a/packages/ui/src/utils/colors/utils.ts +++ b/packages/ui/src/utils/colors/utils.ts @@ -1,5 +1,4 @@ -import type { ColorScale } from '@clerk/shared/types'; - +import type { ColorScale } from '../../internal/appearance'; import { cssSupports } from '../cssSupports'; import type { ColorShade } from './constants'; import { ALL_SHADES, ALPHA_PERCENTAGES, LIGHTNESS_CONFIG, LIGHTNESS_MIX_DATA, RELATIVE_SHADE_STEPS } from './constants'; diff --git a/packages/ui/src/utils/extractCssLayerNameFromAppearance.ts b/packages/ui/src/utils/extractCssLayerNameFromAppearance.ts index 69a0cd84c51..634593e9cc5 100644 --- a/packages/ui/src/utils/extractCssLayerNameFromAppearance.ts +++ b/packages/ui/src/utils/extractCssLayerNameFromAppearance.ts @@ -1,4 +1,4 @@ -import type { Appearance, BaseTheme } from '@clerk/shared/types'; +import type { Appearance, BaseTheme } from '../internal/appearance'; /** * Extracts cssLayerName from theme/baseTheme and moves it to appearance level. diff --git a/packages/ui/tsconfig.declarations.json b/packages/ui/tsconfig.declarations.json deleted file mode 100644 index 441fd4802fa..00000000000 --- a/packages/ui/tsconfig.declarations.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "declaration": true, - "declarationMap": true, - "emitDeclarationOnly": true, - "outDir": "./dist/types", - "noEmit": false - }, - "include": ["src"], - "exclude": [ - "node_modules", - "**/*.test.ts", - "**/*.test.tsx", - "**/*.spec.ts", - "**/*.spec.tsx", - "src/**/__tests__", - "src/**/__mocks__" - ] -} diff --git a/packages/ui/tsconfig.json b/packages/ui/tsconfig.json index 0c0c7babb68..8c4013283ec 100644 --- a/packages/ui/tsconfig.json +++ b/packages/ui/tsconfig.json @@ -18,7 +18,6 @@ "isolatedModules": true, "forceConsistentCasingInFileNames": true, "esModuleInterop": true, - "emitDeclarationOnly": true, "declaration": true, "declarationMap": true, "allowJs": true, diff --git a/packages/ui/tsdown.config.mts b/packages/ui/tsdown.config.mts new file mode 100644 index 00000000000..f5fa33d397a --- /dev/null +++ b/packages/ui/tsdown.config.mts @@ -0,0 +1,46 @@ +import svgr from '@svgr/rollup'; +import type { Options } from 'tsdown'; +import { defineConfig } from 'tsdown'; + +import uiPackage from './package.json' with { type: 'json' }; + +export default defineConfig(({ watch }) => { + const common = { + dts: true, + sourcemap: true, + clean: false, + target: 'es2022', + platform: 'browser', + external: ['react', 'react-dom', '@clerk/localizations', '@clerk/shared'], + format: ['esm'], // ESM only + minify: false, + plugins: [svgr()], + define: { + PACKAGE_NAME: `"${uiPackage.name}"`, + PACKAGE_VERSION: `"${uiPackage.version}"`, + __PKG_VERSION__: `"${uiPackage.version}"`, + __DEV__: `${watch}`, + }, + } satisfies Options; + + return [ + { + ...common, + entry: ['./src/index.ts', './src/entry.ts', './src/internal/index.ts', './src/themes/index.ts'], + outDir: './dist', + unbundle: true, + onSuccess: async () => { + // Copy CSS files from src/themes to dist/themes + const { cp, mkdir } = await import('fs/promises'); + const { join } = await import('path'); + await mkdir('./dist/themes', { recursive: true }); + try { + await cp(join('./src/themes/shadcn.css'), join('./dist/themes/shadcn.css')); + console.log('✓ Copied shadcn.css'); + } catch (error) { + console.warn('⚠ Warning: Failed to copy CSS files:', error); + } + }, + }, + ]; +}); diff --git a/packages/vue/package.json b/packages/vue/package.json index 9ed87b8608b..3015b4b363b 100644 --- a/packages/vue/package.json +++ b/packages/vue/package.json @@ -66,6 +66,7 @@ "@clerk/shared": "workspace:^" }, "devDependencies": { + "@clerk/ui": "workspace:^", "@testing-library/vue": "^8.1.0", "@vitejs/plugin-vue": "^5.2.4", "@vue.ts/tsx-auto-props": "^0.6.0", diff --git a/packages/vue/src/plugin.ts b/packages/vue/src/plugin.ts index 21d4a6c8855..1c5f4a0c700 100644 --- a/packages/vue/src/plugin.ts +++ b/packages/vue/src/plugin.ts @@ -3,6 +3,7 @@ import { deriveState } from '@clerk/shared/deriveState'; import { loadClerkJsScript, type LoadClerkJsScriptOptions, loadClerkUiScript } from '@clerk/shared/loadClerkJsScript'; import type { Clerk, + ClerkOptions, ClientResource, InitialState, IsomorphicClerkOptions, @@ -11,20 +12,21 @@ import type { Without, } from '@clerk/shared/types'; import type { ClerkUiConstructor } from '@clerk/shared/ui'; +import type { Appearance, Ui } from '@clerk/ui/internal'; import type { Plugin } from 'vue'; import { computed, ref, shallowRef, triggerRef } from 'vue'; import { ClerkInjectionKey } from './keys'; - declare global { interface Window { __unstable_ClerkUiCtor?: ClerkUiConstructor; } } -export type PluginOptions = Without & +export type PluginOptions = Without & MultiDomainAndOrProxy & { initialState?: InitialState; + appearance?: Appearance; }; const SDK_METADATA = { @@ -52,7 +54,7 @@ const SDK_METADATA = { * ``` */ export const clerkPlugin: Plugin<[PluginOptions]> = { - install(app, pluginOptions) { + install(app: any, pluginOptions: PluginOptions) { const { initialState } = pluginOptions || {}; const loaded = shallowRef(false); @@ -93,7 +95,8 @@ export const clerkPlugin: Plugin<[PluginOptions]> = { } clerk.value = window.Clerk; - await window.Clerk.load({ ...options, clerkUiCtor: clerkUiCtorPromise }); + const loadOptions = { ...options, clerkUiCtor: clerkUiCtorPromise } as unknown as ClerkOptions; + await window.Clerk.load(loadOptions); loaded.value = true; if (clerk.value) { diff --git a/packages/vue/src/utils/updateClerkOptions.ts b/packages/vue/src/utils/updateClerkOptions.ts index ac07e652958..7673ffd23e8 100644 --- a/packages/vue/src/utils/updateClerkOptions.ts +++ b/packages/vue/src/utils/updateClerkOptions.ts @@ -1,6 +1,9 @@ import type { ClerkOptions } from '@clerk/shared/types'; +import type { Appearance, Ui } from '@clerk/ui/internal'; -type ClerkUpdateOptions = Pick; +type ClerkUpdateOptions = Pick & { + appearance?: Appearance; +}; /** * Updates Clerk's options at runtime. @@ -9,23 +12,25 @@ type ClerkUpdateOptions = Pick; * * @example * import { frFR } from '@clerk/localizations'; - * import { dark } from '@clerk/themes'; + * import { dark } from '@clerk/ui/themes'; * * updateClerkOptions({ * appearance: { baseTheme: dark }, * localization: frFR * }); */ -export function updateClerkOptions(options: ClerkUpdateOptions) { +export function updateClerkOptions(options: ClerkUpdateOptions) { if (!window.Clerk) { throw new Error('Missing Clerk instance'); } - // @ts-expect-error - `__unstable__updateProps` is not exposed as public API from `@clerk/types` - void window.Clerk.__unstable__updateProps({ + const updateOptions = { options: { localization: options.localization, }, appearance: options.appearance, - }); + } as unknown as { options: any; appearance?: any }; + + // @ts-expect-error - `__unstable__updateProps` is not exposed as public API from `@clerk/types` + void window.Clerk.__unstable__updateProps(updateOptions); } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f6aea8de8a0..49279a98f89 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -280,7 +280,7 @@ importers: version: 1.2.2 ts-jest: specifier: 29.2.5 - version: 29.2.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.28.5))(jest@29.7.0(@types/node@22.19.0)(babel-plugin-macros@3.1.0))(typescript@5.8.3) + version: 29.2.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest@29.7.0(@types/node@22.19.0)(babel-plugin-macros@3.1.0))(typescript@5.8.3) tsdown: specifier: catalog:repo version: 0.15.7(publint@0.3.15)(typescript@5.8.3)(vue-tsc@3.1.4(typescript@5.8.3)) @@ -364,6 +364,9 @@ importers: specifier: 1.0.1 version: 1.0.1 devDependencies: + '@clerk/ui': + specifier: workspace:^ + version: link:../ui astro: specifier: ^5.15.3 version: 5.15.4(@types/node@22.19.0)(db0@0.3.4)(idb-keyval@6.2.1)(ioredis@5.8.2)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.53.1)(terser@5.44.1)(tsx@4.20.6)(typescript@5.8.3)(yaml@2.8.1) @@ -483,10 +486,10 @@ importers: version: link:../testing '@rsdoctor/rspack-plugin': specifier: ^0.4.13 - version: 0.4.13(@rspack/core@1.6.1(@swc/helpers@0.5.17))(webpack@5.102.1) + version: 0.4.13(@rspack/core@1.6.1(@swc/helpers@0.5.17))(webpack@5.102.1(esbuild@0.25.12)) '@rspack/cli': specifier: ^1.6.0 - version: 1.6.1(@rspack/core@1.6.1(@swc/helpers@0.5.17))(@types/express@4.17.25)(webpack@5.102.1) + version: 1.6.1(@rspack/core@1.6.1(@swc/helpers@0.5.17))(@types/express@4.17.25)(webpack@5.102.1(esbuild@0.25.12)) '@rspack/core': specifier: ^1.6.0 version: 1.6.1(@swc/helpers@0.5.17) @@ -734,9 +737,9 @@ importers: '@clerk/localizations': specifier: workspace:* version: link:../localizations - '@clerk/themes': + '@clerk/ui': specifier: workspace:* - version: link:../themes + version: link:../ui '@types/semver': specifier: ^7.7.1 version: 7.7.1 @@ -777,9 +780,6 @@ importers: packages/shared: dependencies: - csstype: - specifier: 3.1.3 - version: 3.1.3 dequal: specifier: 2.0.3 version: 2.0.3 @@ -862,7 +862,7 @@ importers: version: 1.132.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@tanstack/react-start': specifier: 1.132.0 - version: 1.132.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(vite@7.2.2(@types/node@22.19.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1))(webpack@5.102.1) + version: 1.132.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(vite@7.2.2(@types/node@22.19.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1))(webpack@5.102.1(esbuild@0.25.12)) esbuild-plugin-file-path-extensions: specifier: ^2.1.4 version: 2.1.4 @@ -886,19 +886,6 @@ importers: specifier: ^14.5.4 version: 14.5.4 - packages/themes: - dependencies: - '@clerk/shared': - specifier: workspace:^ - version: link:../shared - tslib: - specifier: catalog:repo - version: 2.8.1 - devDependencies: - tsup: - specifier: catalog:repo - version: 8.5.0(jiti@2.6.1)(postcss@8.5.6)(tsx@4.20.6)(typescript@5.8.3)(yaml@2.8.1) - packages/ui: dependencies: '@clerk/localizations': @@ -949,13 +936,16 @@ importers: version: 2.1.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@rspack/cli': specifier: ^1.6.0 - version: 1.6.1(@rspack/core@1.6.1(@swc/helpers@0.5.17))(@types/express@4.17.25)(webpack@5.102.1) + version: 1.6.1(@rspack/core@1.6.1(@swc/helpers@0.5.17))(@types/express@4.17.25)(webpack@5.102.1(esbuild@0.25.12)) '@rspack/core': specifier: ^1.6.0 version: 1.6.1(@swc/helpers@0.5.17) '@rspack/plugin-react-refresh': specifier: ^1.5.2 version: 1.5.2(react-refresh@0.17.0) + '@svgr/rollup': + specifier: ^8.1.0 + version: 8.1.0(rollup@4.53.1)(typescript@5.8.3) '@svgr/webpack': specifier: ^6.5.1 version: 6.5.1 @@ -968,6 +958,9 @@ importers: cross-fetch: specifier: ^4.1.0 version: 4.1.0 + tsdown: + specifier: catalog:repo + version: 0.15.7(publint@0.3.15)(typescript@5.8.3)(vue-tsc@3.1.4(typescript@5.8.3)) webpack-merge: specifier: ^5.10.0 version: 5.10.0 @@ -1045,6 +1038,9 @@ importers: specifier: workspace:^ version: link:../shared devDependencies: + '@clerk/ui': + specifier: workspace:^ + version: link:../ui '@testing-library/vue': specifier: ^8.1.0 version: 8.1.0(@vue/compiler-sfc@3.5.24)(vue@3.5.24(typescript@5.8.3)) @@ -2381,7 +2377,7 @@ packages: '@expo/bunyan@4.0.1': resolution: {integrity: sha512-+Lla7nYSiHZirgK+U/uYzsLv/X+HaJienbD5AKX1UQZHYfWaP+9uuQluRB4GrEVWF0GZ7vEVp/jzaOT9k/SQlg==} - engines: {'0': node >=0.10.0} + engines: {node: '>=0.10.0'} '@expo/cli@0.22.26': resolution: {integrity: sha512-I689wc8Fn/AX7aUGiwrh3HnssiORMJtR2fpksX+JIe8Cj/EDleblYMSwRPd0025wrwOV9UN1KM/RuEt/QjCS3Q==} @@ -4508,6 +4504,12 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 + '@svgr/babel-plugin-add-jsx-attribute@8.0.0': + resolution: {integrity: sha512-b9MIk7yhdS1pMCZM8VeNfUlSKVRhsHZNMl5O9SfaX0l0t5wjdgu4IDzGB8bpnGBBOjGST3rRFVsaaEtI4W6f7g==} + engines: {node: '>=14'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@svgr/babel-plugin-remove-jsx-attribute@8.0.0': resolution: {integrity: sha512-BcCkm/STipKvbCl6b7QFrMh/vx00vIP63k2eM66MfHJzPr6O2U0jYEViXkHJWqXqQYjdeA9cuCl5KWmlwjDvbA==} engines: {node: '>=14'} @@ -4526,56 +4528,116 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 + '@svgr/babel-plugin-replace-jsx-attribute-value@8.0.0': + resolution: {integrity: sha512-KVQ+PtIjb1BuYT3ht8M5KbzWBhdAjjUPdlMtpuw/VjT8coTrItWX6Qafl9+ji831JaJcu6PJNKCV0bp01lBNzQ==} + engines: {node: '>=14'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@svgr/babel-plugin-svg-dynamic-title@6.5.1': resolution: {integrity: sha512-FwOEi0Il72iAzlkaHrlemVurgSQRDFbk0OC8dSvD5fSBPHltNh7JtLsxmZUhjYBZo2PpcU/RJvvi6Q0l7O7ogw==} engines: {node: '>=10'} peerDependencies: '@babel/core': ^7.0.0-0 + '@svgr/babel-plugin-svg-dynamic-title@8.0.0': + resolution: {integrity: sha512-omNiKqwjNmOQJ2v6ge4SErBbkooV2aAWwaPFs2vUY7p7GhVkzRkJ00kILXQvRhA6miHnNpXv7MRnnSjdRjK8og==} + engines: {node: '>=14'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@svgr/babel-plugin-svg-em-dimensions@6.5.1': resolution: {integrity: sha512-gWGsiwjb4tw+ITOJ86ndY/DZZ6cuXMNE/SjcDRg+HLuCmwpcjOktwRF9WgAiycTqJD/QXqL2f8IzE2Rzh7aVXA==} engines: {node: '>=10'} peerDependencies: '@babel/core': ^7.0.0-0 + '@svgr/babel-plugin-svg-em-dimensions@8.0.0': + resolution: {integrity: sha512-mURHYnu6Iw3UBTbhGwE/vsngtCIbHE43xCRK7kCw4t01xyGqb2Pd+WXekRRoFOBIY29ZoOhUCTEweDMdrjfi9g==} + engines: {node: '>=14'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@svgr/babel-plugin-transform-react-native-svg@6.5.1': resolution: {integrity: sha512-2jT3nTayyYP7kI6aGutkyfJ7UMGtuguD72OjeGLwVNyfPRBD8zQthlvL+fAbAKk5n9ZNcvFkp/b1lZ7VsYqVJg==} engines: {node: '>=10'} peerDependencies: '@babel/core': ^7.0.0-0 + '@svgr/babel-plugin-transform-react-native-svg@8.1.0': + resolution: {integrity: sha512-Tx8T58CHo+7nwJ+EhUwx3LfdNSG9R2OKfaIXXs5soiy5HtgoAEkDay9LIimLOcG8dJQH1wPZp/cnAv6S9CrR1Q==} + engines: {node: '>=14'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@svgr/babel-plugin-transform-svg-component@6.5.1': resolution: {integrity: sha512-a1p6LF5Jt33O3rZoVRBqdxL350oge54iZWHNI6LJB5tQ7EelvD/Mb1mfBiZNAan0dt4i3VArkFRjA4iObuNykQ==} engines: {node: '>=12'} peerDependencies: '@babel/core': ^7.0.0-0 + '@svgr/babel-plugin-transform-svg-component@8.0.0': + resolution: {integrity: sha512-DFx8xa3cZXTdb/k3kfPeaixecQLgKh5NVBMwD0AQxOzcZawK4oo1Jh9LbrcACUivsCA7TLG8eeWgrDXjTMhRmw==} + engines: {node: '>=12'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@svgr/babel-preset@6.5.1': resolution: {integrity: sha512-6127fvO/FF2oi5EzSQOAjo1LE3OtNVh11R+/8FXa+mHx1ptAaS4cknIjnUA7e6j6fwGGJ17NzaTJFUwOV2zwCw==} engines: {node: '>=10'} peerDependencies: '@babel/core': ^7.0.0-0 + '@svgr/babel-preset@8.1.0': + resolution: {integrity: sha512-7EYDbHE7MxHpv4sxvnVPngw5fuR6pw79SkcrILHJ/iMpuKySNCl5W1qcwPEpU+LgyRXOaAFgH0KhwD18wwg6ug==} + engines: {node: '>=14'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@svgr/core@6.5.1': resolution: {integrity: sha512-/xdLSWxK5QkqG524ONSjvg3V/FkNyCv538OIBdQqPNaAta3AsXj/Bd2FbvR87yMbXO2hFSWiAe/Q6IkVPDw+mw==} engines: {node: '>=10'} + '@svgr/core@8.1.0': + resolution: {integrity: sha512-8QqtOQT5ACVlmsvKOJNEaWmRPmcojMOzCz4Hs2BGG/toAp/K38LcsMRyLp349glq5AzJbCEeimEoxaX6v/fLrA==} + engines: {node: '>=14'} + '@svgr/hast-util-to-babel-ast@6.5.1': resolution: {integrity: sha512-1hnUxxjd83EAxbL4a0JDJoD3Dao3hmjvyvyEV8PzWmLK3B9m9NPlW7GKjFyoWE8nM7HnXzPcmmSyOW8yOddSXw==} engines: {node: '>=10'} + '@svgr/hast-util-to-babel-ast@8.0.0': + resolution: {integrity: sha512-EbDKwO9GpfWP4jN9sGdYwPBU0kdomaPIL2Eu4YwmgP+sJeXT+L7bMwJUBnhzfH8Q2qMBqZ4fJwpCyYsAN3mt2Q==} + engines: {node: '>=14'} + '@svgr/plugin-jsx@6.5.1': resolution: {integrity: sha512-+UdQxI3jgtSjCykNSlEMuy1jSRQlGC7pqBCPvkG/2dATdWo082zHTTK3uhnAju2/6XpE6B5mZ3z4Z8Ns01S8Gw==} engines: {node: '>=10'} peerDependencies: '@svgr/core': ^6.0.0 + '@svgr/plugin-jsx@8.1.0': + resolution: {integrity: sha512-0xiIyBsLlr8quN+WyuxooNW9RJ0Dpr8uOnH/xrCVO8GLUcwHISwj1AG0k+LFzteTkAA0GbX0kj9q6Dk70PTiPA==} + engines: {node: '>=14'} + peerDependencies: + '@svgr/core': '*' + '@svgr/plugin-svgo@6.5.1': resolution: {integrity: sha512-omvZKf8ixP9z6GWgwbtmP9qQMPX4ODXi+wzbVZgomNFsUIlHA1sf4fThdwTWSsZGgvGAG6yE+b/F5gWUkcZ/iQ==} engines: {node: '>=10'} peerDependencies: '@svgr/core': '*' + '@svgr/plugin-svgo@8.1.0': + resolution: {integrity: sha512-Ywtl837OGO9pTLIN/onoWLmDQ4zFUycI1g76vuKGEz6evR/ZTJlJuz3G/fIkb6OVBJ2g0o6CGJzaEjfmEo3AHA==} + engines: {node: '>=14'} + peerDependencies: + '@svgr/core': '*' + + '@svgr/rollup@8.1.0': + resolution: {integrity: sha512-0XR1poYvPQoPpmfDYLEqUGu5ePAQ4pdgN3VFsZBNAeze7qubVpsIY1o1R6PZpKep/DKu33GSm2NhwpCLkMs2Cw==} + engines: {node: '>=14'} + '@svgr/webpack@6.5.1': resolution: {integrity: sha512-cQ/AsnBkXPkEK8cLbv4Dm7JGXq2XrumKnL1dRpJD9rIO2fTIlJI9a1uCciYG1F2aUsox/hJQyNGbt3soDxSRkA==} engines: {node: '>=10'} @@ -6852,6 +6914,15 @@ packages: resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} engines: {node: '>=10'} + cosmiconfig@8.3.6: + resolution: {integrity: sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==} + engines: {node: '>=14'} + peerDependencies: + typescript: '>=4.9.5' + peerDependenciesMeta: + typescript: + optional: true + cosmiconfig@9.0.0: resolution: {integrity: sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==} engines: {node: '>=14'} @@ -6942,6 +7013,10 @@ packages: resolution: {integrity: sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==} engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} + css-tree@2.3.1: + resolution: {integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} + css-tree@3.1.0: resolution: {integrity: sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==} engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} @@ -7360,6 +7435,9 @@ packages: domutils@3.2.2: resolution: {integrity: sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==} + dot-case@3.0.4: + resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} + dot-prop@10.1.0: resolution: {integrity: sha512-MVUtAugQMOff5RnBy2d9N31iG0lNwg1qAoAOn7pOK5wf94WIaE3My2p3uwTQuvS2AcqchkcR3bHByjaM0mmi7Q==} engines: {node: '>=20'} @@ -10160,6 +10238,9 @@ packages: resolution: {integrity: sha512-2+x8esE/Wb9SQ1F9IHaYWfsC9FIecLOPrK4g17FGEayjUWH172H6nwicRovGvSE2CPZouc2MCIqCI7h9d+GftQ==} engines: {node: '>=4'} + lower-case@2.0.2: + resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} + lru-cache@10.4.3: resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} @@ -10317,6 +10398,9 @@ packages: mdn-data@2.0.28: resolution: {integrity: sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==} + mdn-data@2.0.30: + resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==} + mdn-data@2.12.2: resolution: {integrity: sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==} @@ -10846,6 +10930,9 @@ packages: nlcst-to-string@4.0.0: resolution: {integrity: sha512-YKLBCcUYKAg0FNlOBT6aI91qFmSiFKiluk655WzPF+DDMA02qIyy8uiRqI8QXtcFpEvll12LpL5MXqEmAZ+dcA==} + no-case@3.0.4: + resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} + node-addon-api@7.1.1: resolution: {integrity: sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==} @@ -12723,6 +12810,9 @@ packages: resolution: {integrity: sha512-rInDH6lCNiEyn3+hH8KVGFdbjc099j47+OSgbMrfDYX1CmXLfdKd7qi6IfcWj2wFxvSVkuI46M+wPGYfEOEj6g==} engines: {node: '>= 18'} + snake-case@3.0.4: + resolution: {integrity: sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==} + snakecase-keys@9.0.2: resolution: {integrity: sha512-Tr4gONsDj1Pa6HJH9D3b411r6tuRyCGgb1l7YpzDFp/thjVSWs7rcbNjyTyRqJi5SUV23sFpzf9epIJRbLR6Yw==} engines: {node: '>=22'} @@ -13124,6 +13214,11 @@ packages: engines: {node: '>=10.13.0'} hasBin: true + svgo@3.3.2: + resolution: {integrity: sha512-OoohrmuUlBs8B8o6MB2Aevn+pRIH9zDALSR+6hhqVfa6fRwG/Qw9VUMSMW9VNg2CFc/MTIfabtdOVl9ODIJjpw==} + engines: {node: '>=14.0.0'} + hasBin: true + svgo@4.0.0: resolution: {integrity: sha512-VvrHQ+9uniE+Mvx3+C9IEe/lWasXCU0nXMY2kZeLrHNICuRiC8uMPyM14UEaMOFA5mhyQqEkB02VoQ16n3DLaw==} engines: {node: '>=16'} @@ -18919,12 +19014,12 @@ snapshots: '@rsdoctor/client@0.4.13': {} - '@rsdoctor/core@0.4.13(@rspack/core@1.6.1(@swc/helpers@0.5.17))(webpack@5.102.1)': + '@rsdoctor/core@0.4.13(@rspack/core@1.6.1(@swc/helpers@0.5.17))(webpack@5.102.1(esbuild@0.25.12))': dependencies: - '@rsdoctor/graph': 0.4.13(@rspack/core@1.6.1(@swc/helpers@0.5.17))(webpack@5.102.1) - '@rsdoctor/sdk': 0.4.13(@rspack/core@1.6.1(@swc/helpers@0.5.17))(webpack@5.102.1) - '@rsdoctor/types': 0.4.13(@rspack/core@1.6.1(@swc/helpers@0.5.17))(webpack@5.102.1) - '@rsdoctor/utils': 0.4.13(@rspack/core@1.6.1(@swc/helpers@0.5.17))(webpack@5.102.1) + '@rsdoctor/graph': 0.4.13(@rspack/core@1.6.1(@swc/helpers@0.5.17))(webpack@5.102.1(esbuild@0.25.12)) + '@rsdoctor/sdk': 0.4.13(@rspack/core@1.6.1(@swc/helpers@0.5.17))(webpack@5.102.1(esbuild@0.25.12)) + '@rsdoctor/types': 0.4.13(@rspack/core@1.6.1(@swc/helpers@0.5.17))(webpack@5.102.1(esbuild@0.25.12)) + '@rsdoctor/utils': 0.4.13(@rspack/core@1.6.1(@swc/helpers@0.5.17))(webpack@5.102.1(esbuild@0.25.12)) axios: 1.13.2 enhanced-resolve: 5.12.0 filesize: 10.1.6 @@ -18942,10 +19037,10 @@ snapshots: - utf-8-validate - webpack - '@rsdoctor/graph@0.4.13(@rspack/core@1.6.1(@swc/helpers@0.5.17))(webpack@5.102.1)': + '@rsdoctor/graph@0.4.13(@rspack/core@1.6.1(@swc/helpers@0.5.17))(webpack@5.102.1(esbuild@0.25.12))': dependencies: - '@rsdoctor/types': 0.4.13(@rspack/core@1.6.1(@swc/helpers@0.5.17))(webpack@5.102.1) - '@rsdoctor/utils': 0.4.13(@rspack/core@1.6.1(@swc/helpers@0.5.17))(webpack@5.102.1) + '@rsdoctor/types': 0.4.13(@rspack/core@1.6.1(@swc/helpers@0.5.17))(webpack@5.102.1(esbuild@0.25.12)) + '@rsdoctor/utils': 0.4.13(@rspack/core@1.6.1(@swc/helpers@0.5.17))(webpack@5.102.1(esbuild@0.25.12)) lodash.unionby: 4.8.0 socket.io: 4.8.1 source-map: 0.7.6 @@ -18956,13 +19051,13 @@ snapshots: - utf-8-validate - webpack - '@rsdoctor/rspack-plugin@0.4.13(@rspack/core@1.6.1(@swc/helpers@0.5.17))(webpack@5.102.1)': + '@rsdoctor/rspack-plugin@0.4.13(@rspack/core@1.6.1(@swc/helpers@0.5.17))(webpack@5.102.1(esbuild@0.25.12))': dependencies: - '@rsdoctor/core': 0.4.13(@rspack/core@1.6.1(@swc/helpers@0.5.17))(webpack@5.102.1) - '@rsdoctor/graph': 0.4.13(@rspack/core@1.6.1(@swc/helpers@0.5.17))(webpack@5.102.1) - '@rsdoctor/sdk': 0.4.13(@rspack/core@1.6.1(@swc/helpers@0.5.17))(webpack@5.102.1) - '@rsdoctor/types': 0.4.13(@rspack/core@1.6.1(@swc/helpers@0.5.17))(webpack@5.102.1) - '@rsdoctor/utils': 0.4.13(@rspack/core@1.6.1(@swc/helpers@0.5.17))(webpack@5.102.1) + '@rsdoctor/core': 0.4.13(@rspack/core@1.6.1(@swc/helpers@0.5.17))(webpack@5.102.1(esbuild@0.25.12)) + '@rsdoctor/graph': 0.4.13(@rspack/core@1.6.1(@swc/helpers@0.5.17))(webpack@5.102.1(esbuild@0.25.12)) + '@rsdoctor/sdk': 0.4.13(@rspack/core@1.6.1(@swc/helpers@0.5.17))(webpack@5.102.1(esbuild@0.25.12)) + '@rsdoctor/types': 0.4.13(@rspack/core@1.6.1(@swc/helpers@0.5.17))(webpack@5.102.1(esbuild@0.25.12)) + '@rsdoctor/utils': 0.4.13(@rspack/core@1.6.1(@swc/helpers@0.5.17))(webpack@5.102.1(esbuild@0.25.12)) '@rspack/core': 1.6.1(@swc/helpers@0.5.17) lodash: 4.17.21 transitivePeerDependencies: @@ -18972,12 +19067,12 @@ snapshots: - utf-8-validate - webpack - '@rsdoctor/sdk@0.4.13(@rspack/core@1.6.1(@swc/helpers@0.5.17))(webpack@5.102.1)': + '@rsdoctor/sdk@0.4.13(@rspack/core@1.6.1(@swc/helpers@0.5.17))(webpack@5.102.1(esbuild@0.25.12))': dependencies: '@rsdoctor/client': 0.4.13 - '@rsdoctor/graph': 0.4.13(@rspack/core@1.6.1(@swc/helpers@0.5.17))(webpack@5.102.1) - '@rsdoctor/types': 0.4.13(@rspack/core@1.6.1(@swc/helpers@0.5.17))(webpack@5.102.1) - '@rsdoctor/utils': 0.4.13(@rspack/core@1.6.1(@swc/helpers@0.5.17))(webpack@5.102.1) + '@rsdoctor/graph': 0.4.13(@rspack/core@1.6.1(@swc/helpers@0.5.17))(webpack@5.102.1(esbuild@0.25.12)) + '@rsdoctor/types': 0.4.13(@rspack/core@1.6.1(@swc/helpers@0.5.17))(webpack@5.102.1(esbuild@0.25.12)) + '@rsdoctor/utils': 0.4.13(@rspack/core@1.6.1(@swc/helpers@0.5.17))(webpack@5.102.1(esbuild@0.25.12)) '@types/fs-extra': 11.0.4 body-parser: 1.20.3 cors: 2.8.5 @@ -18997,20 +19092,20 @@ snapshots: - utf-8-validate - webpack - '@rsdoctor/types@0.4.13(@rspack/core@1.6.1(@swc/helpers@0.5.17))(webpack@5.102.1)': + '@rsdoctor/types@0.4.13(@rspack/core@1.6.1(@swc/helpers@0.5.17))(webpack@5.102.1(esbuild@0.25.12))': dependencies: '@types/connect': 3.4.38 '@types/estree': 1.0.5 '@types/tapable': 2.2.7 source-map: 0.7.6 - webpack: 5.102.1 + webpack: 5.102.1(esbuild@0.25.12) optionalDependencies: '@rspack/core': 1.6.1(@swc/helpers@0.5.17) - '@rsdoctor/utils@0.4.13(@rspack/core@1.6.1(@swc/helpers@0.5.17))(webpack@5.102.1)': + '@rsdoctor/utils@0.4.13(@rspack/core@1.6.1(@swc/helpers@0.5.17))(webpack@5.102.1(esbuild@0.25.12))': dependencies: '@babel/code-frame': 7.25.7 - '@rsdoctor/types': 0.4.13(@rspack/core@1.6.1(@swc/helpers@0.5.17))(webpack@5.102.1) + '@rsdoctor/types': 0.4.13(@rspack/core@1.6.1(@swc/helpers@0.5.17))(webpack@5.102.1(esbuild@0.25.12)) '@types/estree': 1.0.5 acorn: 8.15.0 acorn-import-assertions: 1.9.0(acorn@8.15.0) @@ -19076,11 +19171,11 @@ snapshots: '@rspack/binding-win32-ia32-msvc': 1.6.1 '@rspack/binding-win32-x64-msvc': 1.6.1 - '@rspack/cli@1.6.1(@rspack/core@1.6.1(@swc/helpers@0.5.17))(@types/express@4.17.25)(webpack@5.102.1)': + '@rspack/cli@1.6.1(@rspack/core@1.6.1(@swc/helpers@0.5.17))(@types/express@4.17.25)(webpack@5.102.1(esbuild@0.25.12))': dependencies: '@discoveryjs/json-ext': 0.5.7 '@rspack/core': 1.6.1(@swc/helpers@0.5.17) - '@rspack/dev-server': 1.1.4(@rspack/core@1.6.1(@swc/helpers@0.5.17))(@types/express@4.17.25)(webpack@5.102.1) + '@rspack/dev-server': 1.1.4(@rspack/core@1.6.1(@swc/helpers@0.5.17))(@types/express@4.17.25)(webpack@5.102.1(esbuild@0.25.12)) exit-hook: 4.0.0 webpack-bundle-analyzer: 4.10.2 transitivePeerDependencies: @@ -19100,13 +19195,13 @@ snapshots: optionalDependencies: '@swc/helpers': 0.5.17 - '@rspack/dev-server@1.1.4(@rspack/core@1.6.1(@swc/helpers@0.5.17))(@types/express@4.17.25)(webpack@5.102.1)': + '@rspack/dev-server@1.1.4(@rspack/core@1.6.1(@swc/helpers@0.5.17))(@types/express@4.17.25)(webpack@5.102.1(esbuild@0.25.12))': dependencies: '@rspack/core': 1.6.1(@swc/helpers@0.5.17) chokidar: 3.6.0 http-proxy-middleware: 2.0.9(@types/express@4.17.25) p-retry: 6.2.1 - webpack-dev-server: 5.2.2(webpack@5.102.1) + webpack-dev-server: 5.2.2(webpack@5.102.1(esbuild@0.25.12)) ws: 8.18.3 transitivePeerDependencies: - '@types/express' @@ -19219,6 +19314,10 @@ snapshots: dependencies: '@babel/core': 7.28.5 + '@svgr/babel-plugin-add-jsx-attribute@8.0.0(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@svgr/babel-plugin-remove-jsx-attribute@8.0.0(@babel/core@7.28.5)': dependencies: '@babel/core': 7.28.5 @@ -19231,22 +19330,42 @@ snapshots: dependencies: '@babel/core': 7.28.5 + '@svgr/babel-plugin-replace-jsx-attribute-value@8.0.0(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@svgr/babel-plugin-svg-dynamic-title@6.5.1(@babel/core@7.28.5)': dependencies: '@babel/core': 7.28.5 + '@svgr/babel-plugin-svg-dynamic-title@8.0.0(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@svgr/babel-plugin-svg-em-dimensions@6.5.1(@babel/core@7.28.5)': dependencies: '@babel/core': 7.28.5 + '@svgr/babel-plugin-svg-em-dimensions@8.0.0(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@svgr/babel-plugin-transform-react-native-svg@6.5.1(@babel/core@7.28.5)': dependencies: '@babel/core': 7.28.5 + '@svgr/babel-plugin-transform-react-native-svg@8.1.0(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@svgr/babel-plugin-transform-svg-component@6.5.1(@babel/core@7.28.5)': dependencies: '@babel/core': 7.28.5 + '@svgr/babel-plugin-transform-svg-component@8.0.0(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@svgr/babel-preset@6.5.1(@babel/core@7.28.5)': dependencies: '@babel/core': 7.28.5 @@ -19259,6 +19378,18 @@ snapshots: '@svgr/babel-plugin-transform-react-native-svg': 6.5.1(@babel/core@7.28.5) '@svgr/babel-plugin-transform-svg-component': 6.5.1(@babel/core@7.28.5) + '@svgr/babel-preset@8.1.0(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@svgr/babel-plugin-add-jsx-attribute': 8.0.0(@babel/core@7.28.5) + '@svgr/babel-plugin-remove-jsx-attribute': 8.0.0(@babel/core@7.28.5) + '@svgr/babel-plugin-remove-jsx-empty-expression': 8.0.0(@babel/core@7.28.5) + '@svgr/babel-plugin-replace-jsx-attribute-value': 8.0.0(@babel/core@7.28.5) + '@svgr/babel-plugin-svg-dynamic-title': 8.0.0(@babel/core@7.28.5) + '@svgr/babel-plugin-svg-em-dimensions': 8.0.0(@babel/core@7.28.5) + '@svgr/babel-plugin-transform-react-native-svg': 8.1.0(@babel/core@7.28.5) + '@svgr/babel-plugin-transform-svg-component': 8.0.0(@babel/core@7.28.5) + '@svgr/core@6.5.1': dependencies: '@babel/core': 7.28.5 @@ -19269,11 +19400,27 @@ snapshots: transitivePeerDependencies: - supports-color + '@svgr/core@8.1.0(typescript@5.8.3)': + dependencies: + '@babel/core': 7.28.5 + '@svgr/babel-preset': 8.1.0(@babel/core@7.28.5) + camelcase: 6.3.0 + cosmiconfig: 8.3.6(typescript@5.8.3) + snake-case: 3.0.4 + transitivePeerDependencies: + - supports-color + - typescript + '@svgr/hast-util-to-babel-ast@6.5.1': dependencies: '@babel/types': 7.28.5 entities: 4.5.0 + '@svgr/hast-util-to-babel-ast@8.0.0': + dependencies: + '@babel/types': 7.28.5 + entities: 4.5.0 + '@svgr/plugin-jsx@6.5.1(@svgr/core@6.5.1)': dependencies: '@babel/core': 7.28.5 @@ -19284,6 +19431,16 @@ snapshots: transitivePeerDependencies: - supports-color + '@svgr/plugin-jsx@8.1.0(@svgr/core@8.1.0(typescript@5.8.3))': + dependencies: + '@babel/core': 7.28.5 + '@svgr/babel-preset': 8.1.0(@babel/core@7.28.5) + '@svgr/core': 8.1.0(typescript@5.8.3) + '@svgr/hast-util-to-babel-ast': 8.0.0 + svg-parser: 2.0.4 + transitivePeerDependencies: + - supports-color + '@svgr/plugin-svgo@6.5.1(@svgr/core@6.5.1)': dependencies: '@svgr/core': 6.5.1 @@ -19291,6 +19448,31 @@ snapshots: deepmerge: 4.3.1 svgo: 2.8.0 + '@svgr/plugin-svgo@8.1.0(@svgr/core@8.1.0(typescript@5.8.3))(typescript@5.8.3)': + dependencies: + '@svgr/core': 8.1.0(typescript@5.8.3) + cosmiconfig: 8.3.6(typescript@5.8.3) + deepmerge: 4.3.1 + svgo: 3.3.2 + transitivePeerDependencies: + - typescript + + '@svgr/rollup@8.1.0(rollup@4.53.1)(typescript@5.8.3)': + dependencies: + '@babel/core': 7.28.5 + '@babel/plugin-transform-react-constant-elements': 7.27.1(@babel/core@7.28.5) + '@babel/preset-env': 7.28.5(@babel/core@7.28.5) + '@babel/preset-react': 7.28.5(@babel/core@7.28.5) + '@babel/preset-typescript': 7.28.5(@babel/core@7.28.5) + '@rollup/pluginutils': 5.3.0(rollup@4.53.1) + '@svgr/core': 8.1.0(typescript@5.8.3) + '@svgr/plugin-jsx': 8.1.0(@svgr/core@8.1.0(typescript@5.8.3)) + '@svgr/plugin-svgo': 8.1.0(@svgr/core@8.1.0(typescript@5.8.3))(typescript@5.8.3) + transitivePeerDependencies: + - rollup + - supports-color + - typescript + '@svgr/webpack@6.5.1': dependencies: '@babel/core': 7.28.5 @@ -19365,14 +19547,14 @@ snapshots: transitivePeerDependencies: - crossws - '@tanstack/react-start@1.132.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(vite@7.2.2(@types/node@22.19.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1))(webpack@5.102.1)': + '@tanstack/react-start@1.132.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(vite@7.2.2(@types/node@22.19.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1))(webpack@5.102.1(esbuild@0.25.12))': dependencies: '@tanstack/react-router': 1.132.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@tanstack/react-start-client': 1.132.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@tanstack/react-start-server': 1.132.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@tanstack/router-utils': 1.133.19 '@tanstack/start-client-core': 1.132.0 - '@tanstack/start-plugin-core': 1.132.0(@tanstack/react-router@1.132.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.2.2(@types/node@22.19.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1))(webpack@5.102.1) + '@tanstack/start-plugin-core': 1.132.0(@tanstack/react-router@1.132.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.2.2(@types/node@22.19.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1))(webpack@5.102.1(esbuild@0.25.12)) pathe: 2.0.3 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -19414,7 +19596,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@tanstack/router-plugin@1.132.0(@tanstack/react-router@1.132.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.2.2(@types/node@22.19.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1))(webpack@5.102.1)': + '@tanstack/router-plugin@1.132.0(@tanstack/react-router@1.132.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.2.2(@types/node@22.19.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1))(webpack@5.102.1(esbuild@0.25.12))': dependencies: '@babel/core': 7.28.5 '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.5) @@ -19433,7 +19615,7 @@ snapshots: optionalDependencies: '@tanstack/react-router': 1.132.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) vite: 7.2.2(@types/node@22.19.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1) - webpack: 5.102.1 + webpack: 5.102.1(esbuild@0.25.12) transitivePeerDependencies: - supports-color @@ -19488,14 +19670,14 @@ snapshots: tiny-invariant: 1.3.3 tiny-warning: 1.0.3 - '@tanstack/start-plugin-core@1.132.0(@tanstack/react-router@1.132.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.2.2(@types/node@22.19.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1))(webpack@5.102.1)': + '@tanstack/start-plugin-core@1.132.0(@tanstack/react-router@1.132.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.2.2(@types/node@22.19.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1))(webpack@5.102.1(esbuild@0.25.12))': dependencies: '@babel/code-frame': 7.26.2 '@babel/core': 7.28.5 '@babel/types': 7.28.5 '@tanstack/router-core': 1.132.0 '@tanstack/router-generator': 1.132.0 - '@tanstack/router-plugin': 1.132.0(@tanstack/react-router@1.132.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.2.2(@types/node@22.19.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1))(webpack@5.102.1) + '@tanstack/router-plugin': 1.132.0(@tanstack/react-router@1.132.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.2.2(@types/node@22.19.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1))(webpack@5.102.1(esbuild@0.25.12)) '@tanstack/router-utils': 1.132.0 '@tanstack/server-functions-plugin': 1.132.0(vite@7.2.2(@types/node@22.19.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1)) '@tanstack/start-server-core': 1.132.0 @@ -22175,6 +22357,15 @@ snapshots: path-type: 4.0.0 yaml: 1.10.2 + cosmiconfig@8.3.6(typescript@5.8.3): + dependencies: + import-fresh: 3.3.1 + js-yaml: 4.1.0 + parse-json: 5.2.0 + path-type: 4.0.0 + optionalDependencies: + typescript: 5.8.3 + cosmiconfig@9.0.0(typescript@5.8.3): dependencies: env-paths: 2.2.1 @@ -22298,6 +22489,11 @@ snapshots: mdn-data: 2.0.28 source-map-js: 1.2.1 + css-tree@2.3.1: + dependencies: + mdn-data: 2.0.30 + source-map-js: 1.2.1 + css-tree@3.1.0: dependencies: mdn-data: 2.12.2 @@ -22714,6 +22910,11 @@ snapshots: domelementtype: 2.3.0 domhandler: 5.0.3 + dot-case@3.0.4: + dependencies: + no-case: 3.0.4 + tslib: 2.8.1 + dot-prop@10.1.0: dependencies: type-fest: 5.2.0 @@ -26184,6 +26385,10 @@ snapshots: pify: 3.0.0 steno: 0.4.4 + lower-case@2.0.2: + dependencies: + tslib: 2.8.1 + lru-cache@10.4.3: {} lru-cache@11.2.2: {} @@ -26427,6 +26632,8 @@ snapshots: mdn-data@2.0.28: {} + mdn-data@2.0.30: {} + mdn-data@2.12.2: {} mdurl@2.0.0: {} @@ -27352,6 +27559,11 @@ snapshots: dependencies: '@types/nlcst': 2.0.3 + no-case@3.0.4: + dependencies: + lower-case: 2.0.2 + tslib: 2.8.1 + node-addon-api@7.1.1: {} node-dir@0.1.17: @@ -29582,6 +29794,11 @@ snapshots: smol-toml@1.4.2: {} + snake-case@3.0.4: + dependencies: + dot-case: 3.0.4 + tslib: 2.8.1 + snakecase-keys@9.0.2: dependencies: change-case: 5.4.4 @@ -30047,6 +30264,16 @@ snapshots: picocolors: 1.1.1 stable: 0.1.8 + svgo@3.3.2: + dependencies: + '@trysound/sax': 0.2.0 + commander: 7.2.0 + css-select: 5.2.2 + css-tree: 2.3.1 + css-what: 6.2.2 + csso: 5.0.5 + picocolors: 1.1.1 + svgo@4.0.0: dependencies: commander: 11.1.0 @@ -30133,14 +30360,16 @@ snapshots: ansi-escapes: 5.0.0 supports-hyperlinks: 2.3.0 - terser-webpack-plugin@5.3.14(webpack@5.102.1): + terser-webpack-plugin@5.3.14(esbuild@0.25.12)(webpack@5.102.1(esbuild@0.25.12)): dependencies: '@jridgewell/trace-mapping': 0.3.31 jest-worker: 27.5.1 schema-utils: 4.3.3 serialize-javascript: 6.0.2 terser: 5.44.1 - webpack: 5.102.1 + webpack: 5.102.1(esbuild@0.25.12) + optionalDependencies: + esbuild: 0.25.12 terser@5.44.1: dependencies: @@ -30305,7 +30534,7 @@ snapshots: ts-interface-checker@0.1.13: {} - ts-jest@29.2.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.28.5))(jest@29.7.0(@types/node@22.19.0)(babel-plugin-macros@3.1.0))(typescript@5.8.3): + ts-jest@29.2.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.28.5))(esbuild@0.25.12)(jest@29.7.0(@types/node@22.19.0)(babel-plugin-macros@3.1.0))(typescript@5.8.3): dependencies: bs-logger: 0.2.6 ejs: 3.1.10 @@ -30323,6 +30552,7 @@ snapshots: '@jest/transform': 29.7.0 '@jest/types': 29.6.3 babel-jest: 29.7.0(@babel/core@7.28.5) + esbuild: 0.25.12 tsconfck@3.1.6(typescript@5.8.3): optionalDependencies: @@ -31330,7 +31560,7 @@ snapshots: - bufferutil - utf-8-validate - webpack-dev-middleware@7.4.5(webpack@5.102.1): + webpack-dev-middleware@7.4.5(webpack@5.102.1(esbuild@0.25.12)): dependencies: colorette: 2.0.20 memfs: 4.50.0 @@ -31339,9 +31569,9 @@ snapshots: range-parser: 1.2.1 schema-utils: 4.3.3 optionalDependencies: - webpack: 5.102.1 + webpack: 5.102.1(esbuild@0.25.12) - webpack-dev-server@5.2.2(webpack@5.102.1): + webpack-dev-server@5.2.2(webpack@5.102.1(esbuild@0.25.12)): dependencies: '@types/bonjour': 3.5.13 '@types/connect-history-api-fallback': 1.5.4 @@ -31369,10 +31599,10 @@ snapshots: serve-index: 1.9.1 sockjs: 0.3.24 spdy: 4.0.2 - webpack-dev-middleware: 7.4.5(webpack@5.102.1) + webpack-dev-middleware: 7.4.5(webpack@5.102.1(esbuild@0.25.12)) ws: 8.18.3 optionalDependencies: - webpack: 5.102.1 + webpack: 5.102.1(esbuild@0.25.12) transitivePeerDependencies: - bufferutil - debug @@ -31389,7 +31619,7 @@ snapshots: webpack-virtual-modules@0.6.2: {} - webpack@5.102.1: + webpack@5.102.1(esbuild@0.25.12): dependencies: '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.8 @@ -31413,7 +31643,7 @@ snapshots: neo-async: 2.6.2 schema-utils: 4.3.3 tapable: 2.3.0 - terser-webpack-plugin: 5.3.14(webpack@5.102.1) + terser-webpack-plugin: 5.3.14(esbuild@0.25.12)(webpack@5.102.1(esbuild@0.25.12)) watchpack: 2.4.4 webpack-sources: 3.3.3 transitivePeerDependencies: diff --git a/renovate.json5 b/renovate.json5 index b72f922ac10..1ee4cd064b8 100644 --- a/renovate.json5 +++ b/renovate.json5 @@ -1157,65 +1157,6 @@ ], semanticCommitScope: "testing", }, - { - groupName: "[DEV] minor & patch dependencies", - groupSlug: "themes-dev-minor", - matchFileNames: [ - "packages/themes/package.json", - ], - matchDepTypes: [ - "devDependencies", - ], - matchUpdateTypes: [ - "patch", - "minor", - ], - automerge: true, - semanticCommitScope: "themes", - }, - { - groupName: "[DEV] major dependencies", - groupSlug: "themes-dev-major", - matchFileNames: [ - "packages/themes/package.json", - ], - matchDepTypes: [ - "devDependencies", - ], - matchUpdateTypes: [ - "major", - ], - semanticCommitScope: "themes", - }, - { - groupName: "minor & patch dependencies", - groupSlug: "themes-prod-minor", - matchFileNames: [ - "packages/themes/package.json", - ], - matchDepTypes: [ - "dependencies", - ], - matchUpdateTypes: [ - "patch", - "minor", - ], - semanticCommitScope: "themes", - }, - { - groupName: "major dependencies", - groupSlug: "themes-prod-major", - matchFileNames: [ - "packages/themes/package.json", - ], - matchDepTypes: [ - "dependencies", - ], - matchUpdateTypes: [ - "major", - ], - semanticCommitScope: "themes", - }, { groupName: "[DEV] minor & patch dependencies", groupSlug: "upgrade-dev-minor",