|
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