|
1 | 1 | import React, { useState, useEffect, useDeferredValue } from 'react'
|
2 | 2 | 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' |
5 | 5 | import GitHubButton from 'react-github-btn'
|
6 | 6 | import ReactGA from 'react-ga'
|
7 | 7 | import VersionSelector from '../common/VersionSelector'
|
@@ -31,6 +31,7 @@ const Page = styled.div`
|
31 | 31 | `
|
32 | 32 |
|
33 | 33 | const Container = styled(Card)`
|
| 34 | + background-color: ${({ theme }) => theme.background}; |
34 | 35 | width: 90%;
|
35 | 36 | border-radius: 3px;
|
36 | 37 | border-color: ${({ theme }) => theme.border};
|
@@ -184,108 +185,129 @@ const Home = () => {
|
184 | 185 | setSettings(normalizedIncomingSettings)
|
185 | 186 | }
|
186 | 187 |
|
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' |
191 | 192 |
|
192 | 193 | 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 | + {/* |
272 | 289 | Pass empty values for app name and package if they're the defaults to
|
273 | 290 | hint to diffing components they don't need to further patch the
|
274 | 291 | rn-diff-purge output.
|
275 | 292 | */}
|
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> |
289 | 311 | )
|
290 | 312 | }
|
291 | 313 |
|
|
0 commit comments