From 90a57a81e113a5ae496c489bb58797623603c15e Mon Sep 17 00:00:00 2001 From: Alex Carpenter Date: Mon, 7 Apr 2025 16:44:08 -0400 Subject: [PATCH 1/7] feat(clerk-js,types): Add experimental css layer name option --- packages/clerk-js/sandbox/app.ts | 2 +- .../clerk-js/src/ui/lazyModules/providers.tsx | 5 +++- .../ui/styledSystem/StyleCacheProvider.tsx | 24 ++++++++++++++++++- packages/types/src/clerk.ts | 4 ++++ 4 files changed, 32 insertions(+), 3 deletions(-) diff --git a/packages/clerk-js/sandbox/app.ts b/packages/clerk-js/sandbox/app.ts index a3571e9508c..a16ef4fc051 100644 --- a/packages/clerk-js/sandbox/app.ts +++ b/packages/clerk-js/sandbox/app.ts @@ -326,7 +326,7 @@ void (async () => { ...(componentControls.clerk.getProps() ?? {}), signInUrl: '/sign-in', signUpUrl: '/sign-up', - experimental: { commerce: true }, + experimental: { commerce: true, cssLayerName: 'clerk' }, }); renderCurrentRoute(); updateVariables(); diff --git a/packages/clerk-js/src/ui/lazyModules/providers.tsx b/packages/clerk-js/src/ui/lazyModules/providers.tsx index 223c9fba029..6843a304277 100644 --- a/packages/clerk-js/src/ui/lazyModules/providers.tsx +++ b/packages/clerk-js/src/ui/lazyModules/providers.tsx @@ -32,7 +32,10 @@ type LazyProvidersProps = React.PropsWithChildren<{ clerk: any; environment: any export const LazyProviders = (props: LazyProvidersProps) => { return ( - + {props.children} diff --git a/packages/clerk-js/src/ui/styledSystem/StyleCacheProvider.tsx b/packages/clerk-js/src/ui/styledSystem/StyleCacheProvider.tsx index 37564095c9f..ed66b0649d2 100644 --- a/packages/clerk-js/src/ui/styledSystem/StyleCacheProvider.tsx +++ b/packages/clerk-js/src/ui/styledSystem/StyleCacheProvider.tsx @@ -1,13 +1,34 @@ // eslint-disable-next-line no-restricted-imports +import type { StylisPlugin } from '@emotion/cache'; +// eslint-disable-next-line no-restricted-imports import createCache from '@emotion/cache'; // eslint-disable-next-line no-restricted-imports import { CacheProvider } from '@emotion/react'; import React, { useMemo } from 'react'; +const wrapInLayer: (layerName: string) => StylisPlugin = layerName => node => { + // if we're not at the root of a