Skip to content

Commit a48fa53

Browse files
committed
Add antd config provider for automated darkm mode in lots of components
1 parent ce46a57 commit a48fa53

File tree

6 files changed

+144
-117
lines changed

6 files changed

+144
-117
lines changed

src/components/common/BinaryDownload.js

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,23 +12,22 @@ const BinaryRow = styled.div`
1212
display: flex;
1313
justify-content: space-between;
1414
align-items: center;
15-
background-color: ${({ index }) => (index % 2 === 0 ? '#fafbfc' : '#ffffff')};
16-
color: #24292e;
15+
background-color: ${({ index, theme }) =>
16+
index % 2 === 0 ? theme.rowEven : theme.rowOdd};
1717
font-family: SFMono-Regular, Consolas, Liberation Mono, Menlo, Courier,
1818
monospace;
1919
font-size: 12px;
2020
width: 500px;
2121
max-width: 500px;
2222
padding: 10px 15px;
23-
border-bottom: 1px solid #e1e4e8;
23+
border-bottom: 1px solid ${({ theme }) => theme.border};
2424
`
2525

2626
const Popover = styled(({ className, ...props }) => (
2727
<AntdPopover overlayClassName={className} {...props} />
2828
))`
2929
.ant-popover-inner-content {
3030
padding: 0;
31-
background: red;
3231
}
3332
`
3433

src/components/common/Diff/DiffHeader.js

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,10 @@ const Wrapper = styled.div`
2626
font-family: SFMono-Regular, Consolas, Liberation Mono, Menlo, Courier,
2727
monospace;
2828
font-size: 12px;
29-
color: #24292e;
29+
color: ${({ theme }) => theme.text};
3030
line-height: 32px;
31-
background-color: #fafbfc;
32-
border-bottom: 1px solid #e1e4e8;
31+
background-color: ${({ theme }) => theme.background};
32+
border-bottom: 1px solid ${({ theme }) => theme.border};
3333
border-top-left-radius: 2px;
3434
border-top-right-radius: 2px;
3535
padding: 5px 10px;
@@ -212,7 +212,7 @@ const CollapseClickableArea = styled.div`
212212
const CollapseDiffButton = styled(({ open, isDiffCollapsed, ...props }) =>
213213
open ? <Button {...props} type="link" icon={<DownOutlined />} /> : null
214214
)`
215-
color: #24292e;
215+
color: ${({ theme }) => theme.text};
216216
margin-right: 2px;
217217
font-size: 10px;
218218
transform: ${({ isDiffCollapsed }) =>
@@ -223,7 +223,7 @@ const CollapseDiffButton = styled(({ open, isDiffCollapsed, ...props }) =>
223223
height: auto;
224224
&:hover,
225225
&:focus {
226-
color: #24292e;
226+
color: ${({ theme }) => theme.text};
227227
}
228228
`
229229

src/components/common/Settings.js

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,8 @@ const Settings = ({
3131
packageName,
3232
language,
3333
onChangePackageNameAndLanguage,
34-
themeName,
35-
handleThemeToggle,
34+
isDarkMode,
35+
toggleDarkMode,
3636
}) => {
3737
const [popoverVisibility, setVisibility] = useState(false)
3838
const [newPackageName, setNewPackageName] = useState(packageName)
@@ -61,8 +61,6 @@ const Settings = ({
6161
const updateCheckboxValues = (checkboxValues) =>
6262
handleSettingsChange(checkboxValues)
6363

64-
const humanThemeName = themeName[0].toUpperCase() + themeName.substring(1)
65-
6664
return (
6765
<Popover
6866
placement="bottomRight"
@@ -107,8 +105,8 @@ const Settings = ({
107105
</Radio.Group>
108106
</PlatformsContainer>
109107
<h5>Theme:</h5>
110-
<Button title={humanThemeName} onClick={handleThemeToggle}>
111-
{humanThemeName}
108+
<Button onClick={toggleDarkMode}>
109+
{isDarkMode ? 'Dark' : 'Light'}
112110
</Button>
113111
</>
114112
}

src/components/common/ViewFileButton.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@ const ViewFileButton = styled(
2222
}
2323
)`
2424
font-size: 12px;
25-
color: #24292e;
2625
`
2726

2827
export default ViewFileButton

src/components/pages/Home.js

Lines changed: 120 additions & 98 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import React, { useState, useEffect, useDeferredValue } from 'react'
22
import styled from '@emotion/styled'
3-
import { ThemeProvider } from '@emotion/react'
4-
import { Card, Input, Typography } from 'antd'
3+
import { ThemeProvider, Global, css } from '@emotion/react'
4+
import { Card, Input, Typography, ConfigProvider, theme } from 'antd'
55
import GitHubButton from 'react-github-btn'
66
import ReactGA from 'react-ga'
77
import VersionSelector from '../common/VersionSelector'
@@ -31,6 +31,7 @@ const Page = styled.div`
3131
`
3232

3333
const Container = styled(Card)`
34+
background-color: ${({ theme }) => theme.background};
3435
width: 90%;
3536
border-radius: 3px;
3637
border-color: ${({ theme }) => theme.border};
@@ -184,108 +185,129 @@ const Home = () => {
184185
setSettings(normalizedIncomingSettings)
185186
}
186187

187-
const [themeName, setThemeName] = useState('light')
188-
const themeToggler = () => {
189-
themeName === 'light' ? setThemeName('dark') : setThemeName('light')
190-
}
188+
const { defaultAlgorithm, darkAlgorithm } = theme
189+
const [isDarkMode, setIsDarkMode] = useState(false)
190+
const toggleDarkMode = () => setIsDarkMode((previousValue) => !previousValue)
191+
const themeString = isDarkMode ? 'dark' : 'light'
191192

192193
return (
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-
{/*
194+
<ConfigProvider
195+
theme={{
196+
algorithm: isDarkMode ? darkAlgorithm : defaultAlgorithm,
197+
// components: {
198+
// Button: {
199+
// // colorPrimary: '#00b96b',
200+
// algorithm: true, // Enable algorithm
201+
// },
202+
// Input: {
203+
// colorPrimary: '#eb2f96',
204+
// algorithm: true, // Enable algorithm
205+
// },
206+
// },
207+
}}
208+
>
209+
<ThemeProvider theme={isDarkMode ? darkTheme : lightTheme}>
210+
<Page>
211+
<Container>
212+
<HeaderContainer>
213+
<TitleContainer>
214+
<LogoImg
215+
alt="React Native Upgrade Helper logo"
216+
title="React Native Upgrade Helper logo"
217+
src={logo}
218+
/>
219+
<a href={homepageUrl}>
220+
<TitleHeader>React Native Upgrade Helper</TitleHeader>
221+
</a>
222+
</TitleContainer>
223+
224+
<SettingsContainer>
225+
<StarButton
226+
href="https://github.com/react-native-community/upgrade-helper"
227+
data-icon="octicon-star"
228+
data-show-count="true"
229+
aria-label="Star react-native-community/upgrade-helper on GitHub"
230+
data-color-scheme={`no-preference: ${themeString}; light: ${themeString}; dark: ${themeString};`}
231+
>
232+
Star
233+
</StarButton>
234+
{packageName === PACKAGE_NAMES.RN && (
235+
<TroubleshootingGuidesButton />
236+
)}
237+
<Settings
238+
handleSettingsChange={handleSettingsChange}
239+
packageName={packageName}
240+
onChangePackageNameAndLanguage={
241+
handlePackageNameAndLanguageChange
242+
}
243+
language={language}
244+
isDarkMode={isDarkMode}
245+
toggleDarkMode={toggleDarkMode}
246+
/>
247+
</SettingsContainer>
248+
</HeaderContainer>
249+
250+
<AppDetailsContainer>
251+
<AppNameField>
252+
<Typography.Title level={5}>
253+
What's your app name?
254+
</Typography.Title>
255+
256+
<Input
257+
size="large"
258+
placeholder={DEFAULT_APP_NAME}
259+
value={appName}
260+
onChange={({ target }) => setAppName((value) => target.value)}
261+
/>
262+
</AppNameField>
263+
264+
<AppPackageField>
265+
<Typography.Title level={5}>
266+
What's your app package?
267+
</Typography.Title>
268+
269+
<Input
270+
size="large"
271+
placeholder={DEFAULT_APP_PACKAGE}
272+
value={appPackage}
273+
onChange={({ target }) =>
274+
setAppPackage((value) => target.value)
275+
}
276+
/>
277+
</AppPackageField>
278+
</AppDetailsContainer>
279+
<VersionSelector
280+
key={packageName}
281+
showDiff={handleShowDiff}
282+
showReleaseCandidates={settings[SHOW_LATEST_RCS]}
283+
packageName={packageName}
284+
language={language}
285+
isPackageNameDefinedInURL={isPackageNameDefinedInURL}
286+
/>
287+
</Container>
288+
{/*
272289
Pass empty values for app name and package if they're the defaults to
273290
hint to diffing components they don't need to further patch the
274291
rn-diff-purge output.
275292
*/}
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>
293+
<DiffViewer
294+
shouldShowDiff={shouldShowDiff}
295+
fromVersion={fromVersion}
296+
toVersion={toVersion}
297+
appName={
298+
deferredAppName !== DEFAULT_APP_NAME ? deferredAppName : ''
299+
}
300+
appPackage={
301+
deferredAppPackage !== DEFAULT_APP_PACKAGE
302+
? deferredAppPackage
303+
: ''
304+
}
305+
packageName={packageName}
306+
language={language}
307+
/>
308+
</Page>
309+
</ThemeProvider>
310+
</ConfigProvider>
289311
)
290312
}
291313

src/theme/index.js

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,31 @@
11
export const lightTheme = {
22
body: '#FFF',
3-
// text: '#363537',
3+
background: '#ffffff',
4+
5+
text: '#363537',
46
// toggleBorder: '#FFF',
57
// background: '#363537',
68
border: '#e8e8e8',
79
greenBorder: '#bef5cb',
810
yellowBorder: '#ffe58f',
911
lightGreenBackground: '#cdffd8',
1012
darkGreenBackground: '#acf2bd',
13+
// Alternating Rows
14+
rowEven: '#fafbfc',
15+
rowOdd: '#ffffff',
1116
}
1217
export const darkTheme = {
1318
body: '#363537',
14-
// text: '#FAFAFA',
19+
background: '#363537',
20+
text: '#FAFAFA',
1521
// toggleBorder: '#6B8096',
1622
// background: '#999',
17-
border: '#e8e8e8',
23+
border: '#888',
1824
greenBorder: '#bef5cb',
1925
yellowBorder: '#ffe58f',
2026
lightGreenBackground: '#cdffd8',
2127
darkGreenBackground: '#acf2bd',
28+
// Alternating Rows
29+
rowEven: '#363537',
30+
rowOdd: '#363537',
2231
}

0 commit comments

Comments
 (0)