Skip to content

Commit 4dde2b5

Browse files
committed
Theme context
1 parent 33d3720 commit 4dde2b5

File tree

4 files changed

+44
-0
lines changed

4 files changed

+44
-0
lines changed

react-typescript-demo/src/App.tsx

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ import { Oscar } from './components/props/Oscar'
77
import { Button } from './components/props/Button'
88
import { Input } from './components/props/Input'
99
import { Container } from './components/props/Container'
10+
import { ThemeContextProvider } from './components/context/ThemeContext'
11+
import { Box } from './components/context/Box'
1012

1113
import './App.css'
1214

@@ -48,6 +50,9 @@ function App() {
4850
/>
4951
<Input value='' handleChange={event => console.log(event)} />
5052
<Container styles={{ border: '1px solid black', padding: '1rem' }} />
53+
<ThemeContextProvider>
54+
<Box />
55+
</ThemeContextProvider>
5156
</div>
5257
)
5358
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
import { useContext } from 'react'
2+
import { ThemeContext } from './ThemeContext'
3+
4+
export const Box = () => {
5+
const theme = useContext(ThemeContext)
6+
return (
7+
<div
8+
style={{
9+
backgroundColor: theme.primary.main,
10+
color: theme.primary.text
11+
}}>
12+
Theme context
13+
</div>
14+
)
15+
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
import React, { createContext } from 'react'
2+
import { theme } from './theme'
3+
4+
type ThemeContextProviderProps = {
5+
children: React.ReactNode
6+
}
7+
8+
export const ThemeContext = createContext(theme)
9+
10+
export const ThemeContextProvider = ({
11+
children
12+
}: ThemeContextProviderProps) => {
13+
return <ThemeContext.Provider value={theme}>{children}</ThemeContext.Provider>
14+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
export const theme = {
2+
primary: {
3+
main: '#3f51b5',
4+
text: '#fff'
5+
},
6+
secondary: {
7+
main: '#f50057',
8+
text: '#fff'
9+
}
10+
}

0 commit comments

Comments
 (0)