Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .changeset/yellow-pens-kiss.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@primer/react": major
---

ThemeProvider: Remove styled-components ThemeProvider
12 changes: 7 additions & 5 deletions packages/react/src/ThemeProvider.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import React from 'react'
import ReactDOM from 'react-dom'
import {ThemeProvider as SCThemeProvider} from 'styled-components'
import defaultTheme from './theme'
import deepmerge from 'deepmerge'
import {useId} from './hooks'
Expand All @@ -16,7 +15,6 @@ type ColorMode = 'day' | 'night' | 'light' | 'dark'
export type ColorModeWithAuto = ColorMode | 'auto'

export type ThemeProviderProps = {
theme?: Theme
colorMode?: ColorModeWithAuto
dayScheme?: string
nightScheme?: string
Expand Down Expand Up @@ -61,7 +59,7 @@ export const ThemeProvider: React.FC<React.PropsWithChildren<ThemeProviderProps>
} = useTheme()

// Initialize state
const theme = props.theme ?? fallbackTheme ?? defaultTheme
const theme = fallbackTheme ?? defaultTheme

const uniqueDataId = useId()
const {resolvedServerColorMode} = getServerHandoff(uniqueDataId)
Expand Down Expand Up @@ -120,7 +118,11 @@ export const ThemeProvider: React.FC<React.PropsWithChildren<ThemeProviderProps>
setNightScheme,
}}
>
<SCThemeProvider theme={resolvedTheme}>
<div
data-color-mode={colorMode === 'auto' ? 'auto' : colorScheme.includes('dark') ? 'dark' : 'light'}
data-light-theme={dayScheme}
data-dark-theme={nightScheme}
>
{children}
{props.preventSSRMismatch ? (
<script
Expand All @@ -129,7 +131,7 @@ export const ThemeProvider: React.FC<React.PropsWithChildren<ThemeProviderProps>
dangerouslySetInnerHTML={{__html: JSON.stringify({resolvedServerColorMode: resolvedColorMode})}}
/>
) : null}
</SCThemeProvider>
</div>
</ThemeContext.Provider>
)
}
Expand Down
Loading
Loading