Skip to content

Commit ce46a57

Browse files
committed
Theme switcher in place
Started moving some of the hard-coded colors over to use the theming system.
1 parent 940a99c commit ce46a57

File tree

7 files changed

+138
-92
lines changed

7 files changed

+138
-92
lines changed

src/components/common/Diff/Diff.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ const copyPathPopoverContentOpts = {
1717
}
1818

1919
const Container = styled.div`
20-
border: 1px solid #e8e8e8;
20+
border: 1px solid ${({ theme }) => theme.border};
2121
border-radius: 3px;
2222
margin-bottom: 16px;
2323
margin-top: 16px;
@@ -53,8 +53,8 @@ const DiffView = styled(RDiff)`
5353
}
5454
5555
td.diff-gutter .diff-line-normal {
56-
background-color: #cdffd8;
57-
border-color: #bef5cb;
56+
background-color: ${({ theme }) => theme.lightGreenBackground};
57+
border-color: ${({ theme }) => theme.greenBorder};
5858
}
5959
6060
td.diff-gutter:hover {
@@ -68,7 +68,7 @@ const DiffView = styled(RDiff)`
6868
}
6969
7070
td.diff-code-insert .diff-code-edit {
71-
background-color: #acf2bd;
71+
background-color: ${({ theme }) => theme.darkGreenBackground};
7272
}
7373
7474
td.diff-gutter-omit:before {

src/components/common/Diff/DiffLoading.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ const DiffLoader = () => (
3434

3535
const Container = styled(motion.div)`
3636
margin-top: 16px;
37-
border: 1px solid #e8e8e8;
37+
border: 1px solid ${({ theme }) => theme.border};
3838
border-radius: 3px;
3939
`
4040

src/components/common/Settings.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@ const Settings = ({
3131
packageName,
3232
language,
3333
onChangePackageNameAndLanguage,
34+
themeName,
35+
handleThemeToggle,
3436
}) => {
3537
const [popoverVisibility, setVisibility] = useState(false)
3638
const [newPackageName, setNewPackageName] = useState(packageName)
@@ -59,6 +61,8 @@ const Settings = ({
5961
const updateCheckboxValues = (checkboxValues) =>
6062
handleSettingsChange(checkboxValues)
6163

64+
const humanThemeName = themeName[0].toUpperCase() + themeName.substring(1)
65+
6266
return (
6367
<Popover
6468
placement="bottomRight"
@@ -102,6 +106,10 @@ const Settings = ({
102106
</PackagesGroupContainer>
103107
</Radio.Group>
104108
</PlatformsContainer>
109+
<h5>Theme:</h5>
110+
<Button title={humanThemeName} onClick={handleThemeToggle}>
111+
{humanThemeName}
112+
</Button>
105113
</>
106114
}
107115
trigger="click"

src/components/common/TroubleshootingGuides.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ const Container = styled(motion.div)`
2020

2121
const Content = styled(motion.div)`
2222
h4 {
23-
border-bottom: 1px solid #e8e8e8;
23+
border-bottom: 1px solid ${({ theme }) => theme.border};
2424
padding-bottom: 6px;
2525
}
2626
`

src/components/common/UsefulContentSection.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ const InnerContainer = styled.div`
2727
background-color: #fffbe6;
2828
border-width: 1px;
2929
border-left-width: 7px;
30-
border-color: #ffe58f;
30+
border-color: ${({ theme }) => theme.yellowBorder};
3131
border-style: solid;
3232
border-radius: 3px;
3333
transition: padding 0.25s ease-out;

src/components/pages/Home.js

Lines changed: 101 additions & 85 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import React, { useState, useEffect, useDeferredValue } from 'react'
22
import styled from '@emotion/styled'
3+
import { ThemeProvider } from '@emotion/react'
34
import { Card, Input, Typography } from 'antd'
45
import GitHubButton from 'react-github-btn'
56
import ReactGA from 'react-ga'
@@ -18,8 +19,10 @@ import {
1819
import { TroubleshootingGuidesButton } from '../common/TroubleshootingGuidesButton'
1920
import { updateURL } from '../../utils/update-url'
2021
import { deviceSizes } from '../../utils/device-sizes'
22+
import { lightTheme, darkTheme } from '../../theme'
2123

2224
const 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`
3033
const Container = styled(Card)`
3134
width: 90%;
3235
border-radius: 3px;
33-
border-color: #e8e8e8;
36+
border-color: ${({ theme }) => theme.border};
3437
`
3538

3639
const 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

src/theme/index.js

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
export const lightTheme = {
2+
body: '#FFF',
3+
// text: '#363537',
4+
// toggleBorder: '#FFF',
5+
// background: '#363537',
6+
border: '#e8e8e8',
7+
greenBorder: '#bef5cb',
8+
yellowBorder: '#ffe58f',
9+
lightGreenBackground: '#cdffd8',
10+
darkGreenBackground: '#acf2bd',
11+
}
12+
export const darkTheme = {
13+
body: '#363537',
14+
// text: '#FAFAFA',
15+
// toggleBorder: '#6B8096',
16+
// background: '#999',
17+
border: '#e8e8e8',
18+
greenBorder: '#bef5cb',
19+
yellowBorder: '#ffe58f',
20+
lightGreenBackground: '#cdffd8',
21+
darkGreenBackground: '#acf2bd',
22+
}

0 commit comments

Comments
 (0)