diff --git a/.changeset/wicked-boats-allow.md b/.changeset/wicked-boats-allow.md
new file mode 100644
index 00000000000..0a3c118c716
--- /dev/null
+++ b/.changeset/wicked-boats-allow.md
@@ -0,0 +1,5 @@
+---
+"@primer/react": patch
+---
+
+ThemeProvider: Bug fix, in `colorMode=auto`, the theme now syncs with system changes.
diff --git a/.storybook/preview.js b/.storybook/preview.js
index 7a45a2396fc..2e6b81c7da9 100644
--- a/.storybook/preview.js
+++ b/.storybook/preview.js
@@ -71,6 +71,9 @@ export const globalTypes = {
// context.globals.X references items in globalTypes
const withThemeProvider = (Story, context) => {
+ // used for testing ThemeProvider.stories.tsx
+ if (context.parameters.disableThemeDecorator) return
+
if (context.globals.colorMode === 'all') {
return (
diff --git a/src/ThemeProvider.tsx b/src/ThemeProvider.tsx
index 1162d939f7e..de34daecbd6 100644
--- a/src/ThemeProvider.tsx
+++ b/src/ThemeProvider.tsx
@@ -101,10 +101,6 @@ export const ThemeProvider: React.FC = ({children, ...props}
setColorMode(props.colorMode ?? fallbackColorMode ?? defaultColorMode)
}, [props.colorMode, fallbackColorMode])
- React.useEffect(() => {
- setColorMode(resolvedColorMode)
- }, [resolvedColorMode])
-
React.useEffect(() => {
setDayScheme(props.dayScheme ?? fallbackDayScheme ?? defaultDayScheme)
}, [props.dayScheme, fallbackDayScheme])
diff --git a/src/stories/ThemeProvider.stories.tsx b/src/stories/ThemeProvider.stories.tsx
index 1e927de7534..350fee131f3 100644
--- a/src/stories/ThemeProvider.stories.tsx
+++ b/src/stories/ThemeProvider.stories.tsx
@@ -8,6 +8,7 @@ import {createGlobalStyle} from 'styled-components'
export default {
title: 'Generic behaviors/ThemeProvider',
component: ThemeProvider,
+ parameters: {disableThemeDecorator: true},
argTypes: {
theme: {
table: {
@@ -97,8 +98,23 @@ export const Nested: Story = args => {
)
}
-Nested.args = {
- colorMode: 'day',
- dayScheme: 'light',
- nightScheme: 'dark_dimmed'
+const AutoContents = () => {
+ const {colorMode, resolvedColorMode} = useTheme()
+
+ return (
+
+ colorMode: {colorMode}
+ resolvedColorMode: {resolvedColorMode}
+
+ )
+}
+
+export const Auto = () => {
+ return (
+
+
+
+
+
+ )
}