mirror of
https://github.com/trezor/trezor-wallet
synced 2024-11-24 09:18:09 +00:00
Styled bridge page better
This commit is contained in:
parent
2831b7d254
commit
29e5dc2314
@ -6,13 +6,14 @@ const baseStyles = css`
|
|||||||
text-rendering: optimizeLegibility;
|
text-rendering: optimizeLegibility;
|
||||||
color: ${colors.TEXT_PRIMARY};
|
color: ${colors.TEXT_PRIMARY};
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
padding: 0;
|
|
||||||
margin: 0;
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
`;
|
`;
|
||||||
|
|
||||||
const H1 = styled.h1`
|
const H1 = styled.h1`
|
||||||
${baseStyles};
|
${baseStyles};
|
||||||
font-size: 18px;
|
font-size: 18px;
|
||||||
|
padding-bottom: 10px;
|
||||||
`;
|
`;
|
||||||
|
|
||||||
const H2 = styled.h2`
|
const H2 = styled.h2`
|
||||||
@ -23,16 +24,20 @@ const H2 = styled.h2`
|
|||||||
font-size: 36px;
|
font-size: 36px;
|
||||||
padding-bottom: 24px
|
padding-bottom: 24px
|
||||||
`}
|
`}
|
||||||
|
padding-bottom: 10px;
|
||||||
`;
|
`;
|
||||||
|
|
||||||
const H3 = styled.h3`
|
const H3 = styled.h3`
|
||||||
${baseStyles};
|
${baseStyles};
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
|
border: 1px solid red;
|
||||||
|
margin-bottom: 10px;
|
||||||
`;
|
`;
|
||||||
|
|
||||||
const H4 = styled.h4`
|
const H4 = styled.h4`
|
||||||
${baseStyles};
|
${baseStyles};
|
||||||
font-size: 12px;
|
font-size: 12px;
|
||||||
|
padding-bottom: 10px;
|
||||||
`;
|
`;
|
||||||
|
|
||||||
export {
|
export {
|
||||||
|
@ -9,6 +9,7 @@ const Wrapper = styled.p`
|
|||||||
line-height: ${LINE_HEIGHT.BASE};
|
line-height: ${LINE_HEIGHT.BASE};
|
||||||
color: ${colors.TEXT_SECONDARY};
|
color: ${colors.TEXT_SECONDARY};
|
||||||
padding: 0;
|
padding: 0;
|
||||||
|
margin: 0;
|
||||||
|
|
||||||
${props => props.isSmaller && css`
|
${props => props.isSmaller && css`
|
||||||
font-size: ${FONT_SIZE.SMALLER};
|
font-size: ${FONT_SIZE.SMALLER};
|
||||||
|
@ -3,9 +3,11 @@
|
|||||||
import React, { Component } from 'react';
|
import React, { Component } from 'react';
|
||||||
import styled from 'styled-components';
|
import styled from 'styled-components';
|
||||||
import colors from 'config/colors';
|
import colors from 'config/colors';
|
||||||
|
import PropTypes from 'prop-types';
|
||||||
import { FONT_SIZE, FONT_WEIGHT } from 'config/variables';
|
import { FONT_SIZE, FONT_WEIGHT } from 'config/variables';
|
||||||
import { Select } from 'components/Select';
|
import { Select } from 'components/Select';
|
||||||
import Link from 'components/Link';
|
import Link from 'components/Link';
|
||||||
|
import { H1 } from 'components/Heading';
|
||||||
import Button from 'components/Button';
|
import Button from 'components/Button';
|
||||||
import Loader from 'components/Loader';
|
import Loader from 'components/Loader';
|
||||||
import P from 'components/Paragraph';
|
import P from 'components/Paragraph';
|
||||||
@ -30,26 +32,39 @@ type State = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type Props = {
|
type Props = {
|
||||||
|
selectFirstAvailableDevice: typeof RouterActions.selectFirstAvailableDevice,
|
||||||
transport: $ElementType<TrezorConnectState, 'transport'>;
|
transport: $ElementType<TrezorConnectState, 'transport'>;
|
||||||
}
|
}
|
||||||
|
|
||||||
const InstallBridgeWrapper = styled.div`
|
const Wrapper = styled.div`
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
padding-top: 0px;
|
align-items: center;
|
||||||
max-width: 500px;
|
max-width: 500px;
|
||||||
`;
|
`;
|
||||||
|
|
||||||
const TitleHeader = styled.h3`
|
const Top = styled.div`
|
||||||
font-size: ${FONT_SIZE.BIGGEST};
|
|
||||||
display: flex;
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
align-items: center;
|
max-width: 500px;
|
||||||
margin-bottom: 24px;
|
flex: 1;
|
||||||
|
padding-top: 30px;
|
||||||
`;
|
`;
|
||||||
|
|
||||||
const BridgeVersion = styled.span`
|
const Bottom = styled.div`
|
||||||
|
padding-bottom: 20px;
|
||||||
|
`;
|
||||||
|
|
||||||
|
const TitleHeader = styled(H1)`
|
||||||
|
display: flex;
|
||||||
|
font-size: ${FONT_SIZE.BIGGEST};
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
`;
|
||||||
|
|
||||||
|
const Version = styled.span`
|
||||||
color: ${colors.GREEN_PRIMARY};
|
color: ${colors.GREEN_PRIMARY};
|
||||||
padding: 6px 10px;
|
padding: 6px 10px;
|
||||||
border: 1px solid ${colors.GREEN_PRIMARY};
|
border: 1px solid ${colors.GREEN_PRIMARY};
|
||||||
@ -68,7 +83,7 @@ const SelectWrapper = styled(Select)`
|
|||||||
width: 180px;
|
width: 180px;
|
||||||
`;
|
`;
|
||||||
|
|
||||||
const DownloadBridgeWrapper = styled.div`
|
const Download = styled.div`
|
||||||
margin: 24px auto;
|
margin: 24px auto;
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
@ -81,7 +96,29 @@ const DownloadBridgeButton = styled(Button)`
|
|||||||
align-items: center;
|
align-items: center;
|
||||||
`;
|
`;
|
||||||
|
|
||||||
export default class InstallBridge extends Component<Props, State> {
|
const GoBack = styled.span`
|
||||||
|
color: ${colors.GREEN_PRIMARY};
|
||||||
|
text-decoration: underline;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
cursor: pointer;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
`;
|
||||||
|
|
||||||
|
const Ol = styled.ul`
|
||||||
|
margin: 0 auto;
|
||||||
|
color: ${colors.TEXT_SECONDARY};
|
||||||
|
font-size: ${FONT_SIZE.BASE};
|
||||||
|
padding: 10px 0 15px 25px;
|
||||||
|
text-align: left;
|
||||||
|
`;
|
||||||
|
|
||||||
|
const Li = styled.li`
|
||||||
|
text-align: justify;
|
||||||
|
`;
|
||||||
|
|
||||||
|
class InstallBridge extends Component<Props, State> {
|
||||||
constructor(props: Props) {
|
constructor(props: Props) {
|
||||||
super(props);
|
super(props);
|
||||||
|
|
||||||
@ -113,67 +150,68 @@ export default class InstallBridge extends Component<Props, State> {
|
|||||||
if (!target) {
|
if (!target) {
|
||||||
return <Loader text="Loading" size={100} />;
|
return <Loader text="Loading" size={100} />;
|
||||||
}
|
}
|
||||||
|
|
||||||
const changelog = this.props.transport.bridge.changelog.map(entry => (
|
|
||||||
<li key={entry}>{entry}</li>
|
|
||||||
));
|
|
||||||
const url = `${this.state.uri}${target.value}`;
|
|
||||||
return (
|
return (
|
||||||
<InstallBridgeWrapper>
|
<Wrapper>
|
||||||
<TitleHeader>TREZOR Bridge.<BridgeVersion>{this.state.currentVersion}</BridgeVersion></TitleHeader>
|
<Top>
|
||||||
<P>New communication tool to facilitate the connection between your TREZOR and your internet browser.</P>
|
<TitleHeader>TREZOR Bridge<Version>{this.state.currentVersion}</Version></TitleHeader>
|
||||||
<DownloadBridgeWrapper>
|
<P>New communication tool to facilitate the connection between your TREZOR and your internet browser.</P>
|
||||||
<SelectWrapper
|
<Download>
|
||||||
isSearchable={false}
|
<SelectWrapper
|
||||||
isClearable={false}
|
isSearchable={false}
|
||||||
value={target}
|
isClearable={false}
|
||||||
onChange={v => this.onChange(v)}
|
value={target}
|
||||||
options={this.state.installers}
|
onChange={v => this.onChange(v)}
|
||||||
/>
|
options={this.state.installers}
|
||||||
<Link href={url}>
|
/>
|
||||||
<DownloadBridgeButton>
|
<Link href={`${this.state.uri}${target.value}`}>
|
||||||
<Icon
|
<DownloadBridgeButton>
|
||||||
icon={ICONS.DOWNLOAD}
|
<Icon
|
||||||
color={colors.WHITE}
|
icon={ICONS.DOWNLOAD}
|
||||||
size={30}
|
color={colors.WHITE}
|
||||||
/>
|
size={30}
|
||||||
|
/>
|
||||||
Download latest Bridge {this.state.latestVersion}
|
Download latest Bridge {this.state.latestVersion}
|
||||||
</DownloadBridgeButton>
|
</DownloadBridgeButton>
|
||||||
</Link>
|
</Link>
|
||||||
</DownloadBridgeWrapper>
|
</Download>
|
||||||
{target.signature && (
|
<Ol>
|
||||||
<P>
|
{this.props.transport.bridge.changelog.map(entry => (
|
||||||
|
<Li key={entry}>{entry}</Li>
|
||||||
|
))}
|
||||||
|
</Ol>
|
||||||
|
<P isSmaller>
|
||||||
|
<LearnMoreText>Learn more about latest versions in</LearnMoreText>
|
||||||
<Link
|
<Link
|
||||||
href={this.state.uri + target.signature}
|
href="https://github.com/trezor/trezord-go/blob/master/CHANGELOG.md"
|
||||||
target="_blank"
|
target="_blank"
|
||||||
rel="noreferrer noopener"
|
rel="noreferrer noopener"
|
||||||
isGreen
|
isGreen
|
||||||
>Check PGP signature
|
>Changelog
|
||||||
</Link>
|
</Link>
|
||||||
</P>
|
</P>
|
||||||
)}
|
<P>
|
||||||
<P>
|
{target.signature && (
|
||||||
{ changelog }
|
<Link
|
||||||
<LearnMoreText>Learn more about latest versions in</LearnMoreText>
|
href={this.state.uri + target.signature}
|
||||||
<Link
|
target="_blank"
|
||||||
href="https://github.com/trezor/trezord-go/blob/master/CHANGELOG.md"
|
rel="noreferrer noopener"
|
||||||
target="_blank"
|
isGreen
|
||||||
rel="noreferrer noopener"
|
>Check PGP signature
|
||||||
isGreen
|
</Link>
|
||||||
>Changelog
|
)}
|
||||||
</Link>
|
</P>
|
||||||
</P>
|
</Top>
|
||||||
{this.props.transport.type && (
|
<Bottom>
|
||||||
<React.Fragment>
|
{this.props.transport.type && (
|
||||||
<P>
|
<P>
|
||||||
No, i dont want to upgrade Bridge now,
|
No, i dont want to upgrade Bridge now<br />
|
||||||
|
Take me <GoBack onClick={() => this.props.selectFirstAvailableDevice()}>back to the wallet</GoBack>
|
||||||
</P>
|
</P>
|
||||||
<P>
|
)}
|
||||||
Take me <Link href="#/">back to the wallet</Link>
|
</Bottom>
|
||||||
</P>
|
</Wrapper>
|
||||||
</React.Fragment>
|
|
||||||
)}
|
|
||||||
</InstallBridgeWrapper>
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export default InstallBridge;
|
@ -36,7 +36,6 @@ const LandingWrapper = styled.div`
|
|||||||
const LandingContent = styled.div`
|
const LandingContent = styled.div`
|
||||||
flex: 1;
|
flex: 1;
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
`;
|
`;
|
||||||
|
|
||||||
@ -85,6 +84,7 @@ export default (props: Props) => {
|
|||||||
const shouldShowUnsupportedBrowser = browserState.supported === false;
|
const shouldShowUnsupportedBrowser = browserState.supported === false;
|
||||||
|
|
||||||
const isLoading = !shouldShowInitializationError && !shouldShowInstallBridge && !shouldShowConnectDevice && !shouldShowUnsupportedBrowser && !localStorageError;
|
const isLoading = !shouldShowInitializationError && !shouldShowInstallBridge && !shouldShowConnectDevice && !shouldShowUnsupportedBrowser && !localStorageError;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<LandingWrapper>
|
<LandingWrapper>
|
||||||
{isLoading && <LandingLoader text="Loading" size={100} />}
|
{isLoading && <LandingLoader text="Loading" size={100} />}
|
||||||
@ -103,7 +103,7 @@ export default (props: Props) => {
|
|||||||
<Log />
|
<Log />
|
||||||
<LandingContent>
|
<LandingContent>
|
||||||
{shouldShowUnsupportedBrowser && <BrowserNotSupported />}
|
{shouldShowUnsupportedBrowser && <BrowserNotSupported />}
|
||||||
{shouldShowInstallBridge && <InstallBridge transport={transport} />}
|
{shouldShowInstallBridge && <InstallBridge selectFirstAvailableDevice={props.selectFirstAvailableDevice} transport={transport} />}
|
||||||
|
|
||||||
{(shouldShowConnectDevice || shouldShowDisconnectDevice) && (
|
{(shouldShowConnectDevice || shouldShowDisconnectDevice) && (
|
||||||
<div>
|
<div>
|
||||||
|
Loading…
Reference in New Issue
Block a user