Commit 90df9c4c authored by Moody Salem's avatar Moody Salem Committed by GitHub

improvement(layout): move header version switch, drop footer for mobile (#910)

* version switch tweaks

* Mobile layout and toggle tweaks

* Remove the entire footer
Co-authored-by: default avatarCallil Capuozzo <callil.capuozzo@gmail.com>
parent 14f15d1f
import React from 'react'
import styled from 'styled-components'
import { Send, Sun, Moon } from 'react-feather'
import { useDarkModeManager } from '../../state/user/hooks'
import { ButtonSecondary } from '../Button'
const FooterFrame = styled.div`
display: flex;
align-items: center;
justify-content: flex-end;
position: fixed;
right: 1rem;
bottom: 1rem;
${({ theme }) => theme.mediaWidth.upToExtraSmall`
display: none;
`};
`
export default function Footer() {
const [darkMode, toggleDarkMode] = useDarkModeManager()
return (
<FooterFrame>
<form action="https://forms.gle/DaLuqvJsVhVaAM3J9" target="_blank">
<ButtonSecondary p="8px 12px">
<Send size={16} style={{ marginRight: '8px' }} /> Feedback
</ButtonSecondary>
</form>
<ButtonSecondary onClick={toggleDarkMode} p="8px 12px" ml="0.5rem" width="min-content">
{darkMode ? <Sun size={16} /> : <Moon size={16} />}
</ButtonSecondary>
</FooterFrame>
)
}
...@@ -6,16 +6,16 @@ import useParsedQueryString from '../../hooks/useParsedQueryString' ...@@ -6,16 +6,16 @@ import useParsedQueryString from '../../hooks/useParsedQueryString'
import useToggledVersion, { Version } from '../../hooks/useToggledVersion' import useToggledVersion, { Version } from '../../hooks/useToggledVersion'
const VersionLabel = styled.span<{ enabled: boolean }>` const VersionLabel = styled.span<{ enabled: boolean }>`
padding: ${({ enabled }) => (enabled ? '0.15rem 0.5rem 0.16rem 0.45rem' : '0.15rem 0.5rem 0.16rem 0.35rem')}; padding: 0.35rem 0.6rem;
border-radius: 14px; border-radius: 12px;
background: ${({ theme, enabled }) => (enabled ? theme.primary1 : 'none')}; background: ${({ theme, enabled }) => (enabled ? theme.primary1 : 'none')};
color: ${({ theme, enabled }) => (enabled ? theme.white : theme.primary1)}; color: ${({ theme, enabled }) => (enabled ? theme.white : theme.text1)};
font-size: 0.825rem; font-size: 1rem;
font-weight: 400; font-weight: ${({ theme, enabled }) => (enabled ? '500' : '400')};
:hover { :hover {
user-select: ${({ enabled }) => (enabled ? 'none' : 'initial')}; user-select: ${({ enabled }) => (enabled ? 'none' : 'initial')};
background: ${({ theme, enabled }) => (enabled ? theme.primary1 : 'none')}; background: ${({ theme, enabled }) => (enabled ? theme.primary1 : 'none')};
color: ${({ theme, enabled }) => (enabled ? theme.white : theme.primary3)}; color: ${({ theme, enabled }) => (enabled ? theme.white : theme.text1)};
} }
` `
...@@ -25,21 +25,21 @@ interface VersionToggleProps extends React.ComponentProps<typeof Link> { ...@@ -25,21 +25,21 @@ interface VersionToggleProps extends React.ComponentProps<typeof Link> {
// eslint-disable-next-line @typescript-eslint/no-unused-vars // eslint-disable-next-line @typescript-eslint/no-unused-vars
const VersionToggle = styled(({ enabled, ...rest }: VersionToggleProps) => <Link {...rest} />)<VersionToggleProps>` const VersionToggle = styled(({ enabled, ...rest }: VersionToggleProps) => <Link {...rest} />)<VersionToggleProps>`
border-radius: 16px; border-radius: 12px;
opacity: ${({ enabled }) => (enabled ? 1 : 0.5)}; opacity: ${({ enabled }) => (enabled ? 1 : 0.5)};
cursor: ${({ enabled }) => (enabled ? 'pointer' : 'default')}; cursor: ${({ enabled }) => (enabled ? 'pointer' : 'default')};
background: ${({ theme }) => theme.primary5}; background: ${({ theme }) => theme.bg3};
border: 1px solid ${({ theme }) => theme.primary4};
color: ${({ theme }) => theme.primary1}; color: ${({ theme }) => theme.primary1};
display: flex; display: flex;
width: fit-content; width: fit-content;
margin-left: 0.5rem;
text-decoration: none; text-decoration: none;
:hover { :hover {
text-decoration: none; text-decoration: none;
} }
` `
export function VersionSwitch() { export default function VersionSwitch() {
const version = useToggledVersion() const version = useToggledVersion()
const location = useLocation() const location = useLocation()
const query = useParsedQueryString() const query = useParsedQueryString()
......
...@@ -22,7 +22,7 @@ import Menu from '../Menu' ...@@ -22,7 +22,7 @@ import Menu from '../Menu'
import Row, { RowBetween } from '../Row' import Row, { RowBetween } from '../Row'
import Web3Status from '../Web3Status' import Web3Status from '../Web3Status'
import { VersionSwitch } from './VersionSwitch' import VersionSwitch from './VersionSwitch'
const HeaderFrame = styled.div` const HeaderFrame = styled.div`
display: flex; display: flex;
...@@ -45,6 +45,15 @@ const HeaderElement = styled.div` ...@@ -45,6 +45,15 @@ const HeaderElement = styled.div`
align-items: center; align-items: center;
` `
const HeaderElementWrap = styled.div`
display: flex;
align-items: center;
${({ theme }) => theme.mediaWidth.upToExtraSmall`
margin-top: 0.5rem;
`};
`
const Title = styled.div` const Title = styled.div`
display: flex; display: flex;
align-items: center; align-items: center;
...@@ -70,6 +79,7 @@ const AccountElement = styled.div<{ active: boolean }>` ...@@ -70,6 +79,7 @@ const AccountElement = styled.div<{ active: boolean }>`
background-color: ${({ theme, active }) => (!active ? theme.bg1 : theme.bg3)}; background-color: ${({ theme, active }) => (!active ? theme.bg1 : theme.bg3)};
border-radius: 12px; border-radius: 12px;
white-space: nowrap; white-space: nowrap;
width: 100%;
:focus { :focus {
border: 1px solid blue; border: 1px solid blue;
...@@ -80,10 +90,7 @@ const TestnetWrapper = styled.div` ...@@ -80,10 +90,7 @@ const TestnetWrapper = styled.div`
white-space: nowrap; white-space: nowrap;
width: fit-content; width: fit-content;
margin-left: 10px; margin-left: 10px;
pointer-events: auto;
${({ theme }) => theme.mediaWidth.upToSmall`
display: none;
`};
` `
const NetworkCard = styled(YellowCard)` const NetworkCard = styled(YellowCard)`
...@@ -120,6 +127,16 @@ const MigrateBanner = styled(AutoColumn)` ...@@ -120,6 +127,16 @@ const MigrateBanner = styled(AutoColumn)`
`}; `};
` `
const HeaderControls = styled.div`
display: flex;
flex-direction: row;
align-items: flex-end;
${({ theme }) => theme.mediaWidth.upToSmall`
flex-direction: column;
`};
`
const NETWORK_LABELS: { [chainId in ChainId]: string | null } = { const NETWORK_LABELS: { [chainId in ChainId]: string | null } = {
[ChainId.MAINNET]: null, [ChainId.MAINNET]: null,
[ChainId.RINKEBY]: 'Rinkeby', [ChainId.RINKEBY]: 'Rinkeby',
...@@ -128,12 +145,6 @@ const NETWORK_LABELS: { [chainId in ChainId]: string | null } = { ...@@ -128,12 +145,6 @@ const NETWORK_LABELS: { [chainId in ChainId]: string | null } = {
[ChainId.KOVAN]: 'Kovan' [ChainId.KOVAN]: 'Kovan'
} }
const BalanceWrapper = styled.div`
${({ theme }) => theme.mediaWidth.upToExtraSmall`
display: none;
`};
`
export default function Header() { export default function Header() {
const { account, chainId } = useActiveWeb3React() const { account, chainId } = useActiveWeb3React()
...@@ -153,7 +164,7 @@ export default function Header() { ...@@ -153,7 +164,7 @@ export default function Header() {
</StyledInternalLink> </StyledInternalLink>
. .
</MigrateBanner> </MigrateBanner>
<RowBetween padding="1rem"> <RowBetween style={{ alignItems: 'flex-start' }} padding="1rem 1rem 0 1rem">
<HeaderElement> <HeaderElement>
<Title> <Title>
<UniIcon id="link" to="/"> <UniIcon id="link" to="/">
...@@ -171,25 +182,27 @@ export default function Header() { ...@@ -171,25 +182,27 @@ export default function Header() {
</TitleText> </TitleText>
)} )}
</Title> </Title>
<TestnetWrapper style={{ pointerEvents: 'auto' }}>{!isMobile && <VersionSwitch />}</TestnetWrapper>
</HeaderElement> </HeaderElement>
<HeaderElement> <HeaderControls>
<TestnetWrapper> <HeaderElement>
{!isMobile && NETWORK_LABELS[chainId] && <NetworkCard>{NETWORK_LABELS[chainId]}</NetworkCard>} <TestnetWrapper>
</TestnetWrapper> {!isMobile && NETWORK_LABELS[chainId] && <NetworkCard>{NETWORK_LABELS[chainId]}</NetworkCard>}
<AccountElement active={!!account} style={{ pointerEvents: 'auto' }}> </TestnetWrapper>
<BalanceWrapper> <AccountElement active={!!account} style={{ pointerEvents: 'auto' }}>
{account && userEthBalance ? ( {account && userEthBalance ? (
<Text style={{ flexShrink: 0 }} pl="0.75rem" pr="0.5rem" fontWeight={500}> <Text style={{ flexShrink: 0 }} pl="0.75rem" pr="0.5rem" fontWeight={500}>
{userEthBalance?.toSignificant(4)} ETH {userEthBalance?.toSignificant(4)} ETH
</Text> </Text>
) : null} ) : null}
</BalanceWrapper> <Web3Status />
<Web3Status /> </AccountElement>
</AccountElement> </HeaderElement>
<Settings /> <HeaderElementWrap>
<Menu /> <VersionSwitch />
</HeaderElement> <Settings />
<Menu />
</HeaderElementWrap>
</HeaderControls>
</RowBetween> </RowBetween>
</HeaderFrame> </HeaderFrame>
) )
......
...@@ -2,7 +2,6 @@ import React, { Suspense } from 'react' ...@@ -2,7 +2,6 @@ import React, { Suspense } from 'react'
import { BrowserRouter, HashRouter, Route, Switch } from 'react-router-dom' import { BrowserRouter, HashRouter, Route, Switch } from 'react-router-dom'
import styled from 'styled-components' import styled from 'styled-components'
import GoogleAnalyticsReporter from '../components/analytics/GoogleAnalyticsReporter' import GoogleAnalyticsReporter from '../components/analytics/GoogleAnalyticsReporter'
import Footer from '../components/Footer'
import Header from '../components/Header' import Header from '../components/Header'
import Popups from '../components/Popups' import Popups from '../components/Popups'
import Web3ReactManager from '../components/Web3ReactManager' import Web3ReactManager from '../components/Web3ReactManager'
...@@ -90,7 +89,6 @@ export default function App() { ...@@ -90,7 +89,6 @@ export default function App() {
</Switch> </Switch>
</Web3ReactManager> </Web3ReactManager>
<Marginer /> <Marginer />
<Footer />
</BodyWrapper> </BodyWrapper>
</AppWrapper> </AppWrapper>
</Router> </Router>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment