diff --git a/.changeset/cuddly-heads-battle.md b/.changeset/cuddly-heads-battle.md
new file mode 100644
index 00000000000..c1041747f41
--- /dev/null
+++ b/.changeset/cuddly-heads-battle.md
@@ -0,0 +1,37 @@
+---
+'@clerk/clerk-js': minor
+'@clerk/themes': minor
+'@clerk/types': minor
+---
+
+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.
+
+
+```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.
\ No newline at end of file
diff --git a/packages/clerk-js/bundlewatch.config.json b/packages/clerk-js/bundlewatch.config.json
index c057b996f26..c2337fff6e8 100644
--- a/packages/clerk-js/bundlewatch.config.json
+++ b/packages/clerk-js/bundlewatch.config.json
@@ -1,11 +1,11 @@
{
"files": [
- { "path": "./dist/clerk.js", "maxSize": "616kB" },
+ { "path": "./dist/clerk.js", "maxSize": "616.27KB" },
{ "path": "./dist/clerk.browser.js", "maxSize": "72.2KB" },
- { "path": "./dist/clerk.legacy.browser.js", "maxSize": "115KB" },
+ { "path": "./dist/clerk.legacy.browser.js", "maxSize": "115.08KB" },
{ "path": "./dist/clerk.headless*.js", "maxSize": "55KB" },
- { "path": "./dist/ui-common*.js", "maxSize": "111KB" },
- { "path": "./dist/ui-common*.legacy.*.js", "maxSize": "115KB" },
+ { "path": "./dist/ui-common*.js", "maxSize": "111.52KB" },
+ { "path": "./dist/ui-common*.legacy.*.js", "maxSize": "115.33KB" },
{ "path": "./dist/vendors*.js", "maxSize": "40.2KB" },
{ "path": "./dist/coinbase*.js", "maxSize": "38KB" },
{ "path": "./dist/stripe-vendors*.js", "maxSize": "1KB" },
diff --git a/packages/clerk-js/sandbox/app.ts b/packages/clerk-js/sandbox/app.ts
index e2752c2f7b3..c04981e2b77 100644
--- a/packages/clerk-js/sandbox/app.ts
+++ b/packages/clerk-js/sandbox/app.ts
@@ -156,16 +156,17 @@ function appearanceVariableOptions() {
'colorPrimary',
'colorNeutral',
'colorBackground',
- 'colorTextOnPrimaryBackground',
+ 'colorPrimaryForeground',
+ 'colorForeground',
'colorDanger',
'colorSuccess',
'colorWarning',
- 'colorText',
- 'colorTextSecondary',
- 'colorInputText',
- 'colorInputBackground',
+ 'colorForeground',
+ 'colorMutedForeground',
+ 'colorInputForeground',
+ 'colorInput',
'colorShimmer',
- 'spacingUnit',
+ 'spacing',
'borderRadius',
] as const;
diff --git a/packages/clerk-js/sandbox/template.html b/packages/clerk-js/sandbox/template.html
index 0e5003dd7dd..315482ffc8d 100644
--- a/packages/clerk-js/sandbox/template.html
+++ b/packages/clerk-js/sandbox/template.html
@@ -216,11 +216,11 @@
/>
@@ -252,38 +252,38 @@
/>
@@ -297,10 +297,10 @@
/>