11import React , { useState , useEffect , useDeferredValue } from 'react'
22import styled from '@emotion/styled'
3+ import { ThemeProvider } from '@emotion/react'
34import { Card , Input , Typography } from 'antd'
45import GitHubButton from 'react-github-btn'
56import ReactGA from 'react-ga'
@@ -18,8 +19,10 @@ import {
1819import { TroubleshootingGuidesButton } from '../common/TroubleshootingGuidesButton'
1920import { updateURL } from '../../utils/update-url'
2021import { deviceSizes } from '../../utils/device-sizes'
22+ import { lightTheme , darkTheme } from '../../theme'
2123
2224const Page = styled . div `
25+ background-color: ${ ( { theme } ) => theme . body } ;
2326 display: flex;
2427 align-items: center;
2528 justify-content: center;
@@ -30,7 +33,7 @@ const Page = styled.div`
3033const Container = styled ( Card ) `
3134 width: 90%;
3235 border-radius: 3px;
33- border-color: #e8e8e8 ;
36+ border-color: ${ ( { theme } ) => theme . border } ;
3437`
3538
3639const HeaderContainer = styled . div `
@@ -181,95 +184,108 @@ const Home = () => {
181184 setSettings ( normalizedIncomingSettings )
182185 }
183186
187+ const [ themeName , setThemeName ] = useState ( 'light' )
188+ const themeToggler = ( ) => {
189+ themeName === 'light' ? setThemeName ( 'dark' ) : setThemeName ( 'light' )
190+ }
191+
184192 return (
185- < Page >
186- < Container >
187- < HeaderContainer >
188- < TitleContainer >
189- < LogoImg
190- alt = "React Native Upgrade Helper logo"
191- title = "React Native Upgrade Helper logo"
192- src = { logo }
193- />
194- < a href = { homepageUrl } >
195- < TitleHeader > React Native Upgrade Helper</ TitleHeader >
196- </ a >
197- </ TitleContainer >
198-
199- < SettingsContainer >
200- < StarButton
201- href = "https://github.com/react-native-community/upgrade-helper"
202- data-icon = "octicon-star"
203- data-show-count = "true"
204- aria-label = "Star react-native-community/upgrade-helper on GitHub"
205- >
206- Star
207- </ StarButton >
208- { packageName === PACKAGE_NAMES . RN && (
209- < TroubleshootingGuidesButton />
210- ) }
211- < Settings
212- handleSettingsChange = { handleSettingsChange }
213- packageName = { packageName }
214- onChangePackageNameAndLanguage = {
215- handlePackageNameAndLanguageChange
216- }
217- language = { language }
218- />
219- </ SettingsContainer >
220- </ HeaderContainer >
221-
222- < AppDetailsContainer >
223- < AppNameField >
224- < Typography . Title level = { 5 } > What's your app name?</ Typography . Title >
225-
226- < Input
227- size = "large"
228- placeholder = { DEFAULT_APP_NAME }
229- value = { appName }
230- onChange = { ( { target } ) => setAppName ( ( value ) => target . value ) }
231- />
232- </ AppNameField >
233-
234- < AppPackageField >
235- < Typography . Title level = { 5 } >
236- What's your app package?
237- </ Typography . Title >
238-
239- < Input
240- size = "large"
241- placeholder = { DEFAULT_APP_PACKAGE }
242- value = { appPackage }
243- onChange = { ( { target } ) => setAppPackage ( ( value ) => target . value ) }
244- />
245- </ AppPackageField >
246- </ AppDetailsContainer >
247- < VersionSelector
248- key = { packageName }
249- showDiff = { handleShowDiff }
250- showReleaseCandidates = { settings [ SHOW_LATEST_RCS ] }
251- packageName = { packageName }
252- language = { language }
253- isPackageNameDefinedInURL = { isPackageNameDefinedInURL }
254- />
255- </ Container >
256- { /*
193+ < ThemeProvider theme = { themeName === 'light' ? lightTheme : darkTheme } >
194+ < Page >
195+ < Container >
196+ < HeaderContainer >
197+ < TitleContainer >
198+ < LogoImg
199+ alt = "React Native Upgrade Helper logo"
200+ title = "React Native Upgrade Helper logo"
201+ src = { logo }
202+ />
203+ < a href = { homepageUrl } >
204+ < TitleHeader > React Native Upgrade Helper</ TitleHeader >
205+ </ a >
206+ </ TitleContainer >
207+
208+ < SettingsContainer >
209+ < StarButton
210+ href = "https://github.com/react-native-community/upgrade-helper"
211+ data-icon = "octicon-star"
212+ data-show-count = "true"
213+ aria-label = "Star react-native-community/upgrade-helper on GitHub"
214+ >
215+ Star
216+ </ StarButton >
217+ { packageName === PACKAGE_NAMES . RN && (
218+ < TroubleshootingGuidesButton />
219+ ) }
220+ < Settings
221+ handleSettingsChange = { handleSettingsChange }
222+ packageName = { packageName }
223+ onChangePackageNameAndLanguage = {
224+ handlePackageNameAndLanguageChange
225+ }
226+ language = { language }
227+ themeName = { themeName }
228+ handleThemeToggle = { themeToggler }
229+ />
230+ </ SettingsContainer >
231+ </ HeaderContainer >
232+
233+ < AppDetailsContainer >
234+ < AppNameField >
235+ < Typography . Title level = { 5 } >
236+ What's your app name?
237+ </ Typography . Title >
238+
239+ < Input
240+ size = "large"
241+ placeholder = { DEFAULT_APP_NAME }
242+ value = { appName }
243+ onChange = { ( { target } ) => setAppName ( ( value ) => target . value ) }
244+ />
245+ </ AppNameField >
246+
247+ < AppPackageField >
248+ < Typography . Title level = { 5 } >
249+ What's your app package?
250+ </ Typography . Title >
251+
252+ < Input
253+ size = "large"
254+ placeholder = { DEFAULT_APP_PACKAGE }
255+ value = { appPackage }
256+ onChange = { ( { target } ) =>
257+ setAppPackage ( ( value ) => target . value )
258+ }
259+ />
260+ </ AppPackageField >
261+ </ AppDetailsContainer >
262+ < VersionSelector
263+ key = { packageName }
264+ showDiff = { handleShowDiff }
265+ showReleaseCandidates = { settings [ SHOW_LATEST_RCS ] }
266+ packageName = { packageName }
267+ language = { language }
268+ isPackageNameDefinedInURL = { isPackageNameDefinedInURL }
269+ />
270+ </ Container >
271+ { /*
257272 Pass empty values for app name and package if they're the defaults to
258273 hint to diffing components they don't need to further patch the
259274 rn-diff-purge output.
260275 */ }
261- < DiffViewer
262- shouldShowDiff = { shouldShowDiff }
263- fromVersion = { fromVersion }
264- toVersion = { toVersion }
265- appName = { deferredAppName !== DEFAULT_APP_NAME ? deferredAppName : '' }
266- appPackage = {
267- deferredAppPackage !== DEFAULT_APP_PACKAGE ? deferredAppPackage : ''
268- }
269- packageName = { packageName }
270- language = { language }
271- />
272- </ Page >
276+ < DiffViewer
277+ shouldShowDiff = { shouldShowDiff }
278+ fromVersion = { fromVersion }
279+ toVersion = { toVersion }
280+ appName = { deferredAppName !== DEFAULT_APP_NAME ? deferredAppName : '' }
281+ appPackage = {
282+ deferredAppPackage !== DEFAULT_APP_PACKAGE ? deferredAppPackage : ''
283+ }
284+ packageName = { packageName }
285+ language = { language }
286+ />
287+ </ Page >
288+ </ ThemeProvider >
273289 )
274290}
275291
0 commit comments