gatsby-plugin-theme-ui
Version:
Gatsby plugin for adding Theme UI context
39 lines (30 loc) • 939 B
JavaScript
import { ThemeUIProvider, merge } from 'theme-ui'
import { useThemedStylesWithMdx } from '@theme-ui/mdx'
import React from 'react'
import localTheme from './index'
import components from './components'
import useThemeUiConfig from './hooks/configOptions'
import { MDXProvider, useMDXComponents } from '@mdx-js/react'
const Root = ({ children }) => {
const themeUiConfig = useThemeUiConfig()
const { preset, prismPreset } = themeUiConfig
const theme = preset.default || preset
const themeWithPrism = merge(theme, {
styles: {
pre: prismPreset,
},
})
const fullTheme = merge(themeWithPrism, localTheme)
return (
<ThemeUIProvider theme={fullTheme}>
<MDXProvider
components={useThemedStylesWithMdx(useMDXComponents(components))}
>
{children}
</MDXProvider>
</ThemeUIProvider>
)
}
export const WrapRootElement = ({ element }) => {
return <Root>{element}</Root>
}