Fix style issues & adjust copy
This commit is contained in:
parent
40d4d321eb
commit
8db1f98e34
|
@ -1,6 +1,10 @@
|
||||||
@import 'common/sass/variables';
|
@import 'common/sass/variables';
|
||||||
@import 'common/sass/mixins';
|
@import 'common/sass/mixins';
|
||||||
|
|
||||||
|
a.PrimaryButton {
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
|
||||||
.PrimaryButton {
|
.PrimaryButton {
|
||||||
@include reset-button;
|
@include reset-button;
|
||||||
display: block;
|
display: block;
|
||||||
|
|
|
@ -1,34 +1,61 @@
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import { Spinner } from 'components/ui';
|
import { Spinner, NewTabLink } from 'components/ui';
|
||||||
|
import { Link } from 'react-router-dom';
|
||||||
import './PrimaryButton.scss';
|
import './PrimaryButton.scss';
|
||||||
|
|
||||||
interface Props {
|
interface DefaultProps {
|
||||||
className?: string;
|
className?: string;
|
||||||
disabled?: boolean;
|
disabled?: boolean;
|
||||||
text?: string;
|
text?: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
interface InternalLinkProps extends DefaultProps {
|
||||||
|
to: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
interface ExternalLinkProps extends DefaultProps {
|
||||||
|
href: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
interface ButtonProps extends DefaultProps {
|
||||||
loading?: boolean;
|
loading?: boolean;
|
||||||
loadingTxt?: string;
|
loadingTxt?: string;
|
||||||
onClick(): void;
|
onClick(): void;
|
||||||
}
|
}
|
||||||
|
|
||||||
export default class PrimaryButton extends React.Component<Props> {
|
type Props = ButtonProps | InternalLinkProps | ExternalLinkProps;
|
||||||
public render() {
|
|
||||||
const { text, disabled, className, loading, loadingTxt, onClick } = this.props;
|
const PrimaryButton = (props: Props): JSX.Element => {
|
||||||
return (
|
const { text, disabled, className } = props;
|
||||||
<button
|
const { loading, loadingTxt, onClick } = props as ButtonProps;
|
||||||
className={`PrimaryButton ${loading ? 'loading' : ''} ${className}`}
|
const { to } = props as InternalLinkProps;
|
||||||
disabled={disabled}
|
const { href } = props as ExternalLinkProps;
|
||||||
onClick={onClick}
|
return !onClick ? (
|
||||||
>
|
to ? (
|
||||||
{loading ? (
|
<Link to={href} className={`PrimaryButton ${className}`}>
|
||||||
<div className="PrimaryButton-spinner-wrapper">
|
{text}
|
||||||
<Spinner light={true} />
|
</Link>
|
||||||
<span>{loadingTxt}</span>
|
) : (
|
||||||
</div>
|
<NewTabLink href={href} className={`PrimaryButton ${className}`}>
|
||||||
) : (
|
{text}
|
||||||
text
|
</NewTabLink>
|
||||||
)}
|
)
|
||||||
</button>
|
) : (
|
||||||
);
|
<button
|
||||||
}
|
className={`PrimaryButton ${loading ? 'loading' : ''} ${className}`}
|
||||||
}
|
disabled={disabled}
|
||||||
|
onClick={onClick}
|
||||||
|
>
|
||||||
|
{loading ? (
|
||||||
|
<div className="PrimaryButton-spinner-wrapper">
|
||||||
|
<Spinner light={true} />
|
||||||
|
<span>{loadingTxt}</span>
|
||||||
|
</div>
|
||||||
|
) : (
|
||||||
|
text
|
||||||
|
)}
|
||||||
|
</button>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export default PrimaryButton;
|
||||||
|
|
|
@ -61,14 +61,16 @@ $speed: 500ms;
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
flex-wrap: wrap;
|
flex-wrap: wrap;
|
||||||
|
margin: auto;
|
||||||
margin-bottom: 1rem;
|
margin-bottom: 1rem;
|
||||||
|
max-width: 895px;
|
||||||
|
|
||||||
@media screen and (max-width: $screen-xs) {
|
@media screen and (max-width: $screen-xs) {
|
||||||
margin: 0;
|
margin: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
&:last-child {
|
&:last-child {
|
||||||
margin: 0;
|
margin: auto;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -127,9 +129,10 @@ $speed: 500ms;
|
||||||
|
|
||||||
&-override {
|
&-override {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
bottom: 0;
|
bottom: -15%;
|
||||||
right: 0;
|
right: 50%;
|
||||||
opacity: 0.3;
|
transform: translateX(50%);
|
||||||
|
opacity: 0.8;
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
opacity: 1;
|
opacity: 1;
|
||||||
|
|
|
@ -1,6 +1,18 @@
|
||||||
@import 'common/sass/variables';
|
@import 'common/sass/variables';
|
||||||
@import 'common/sass/mixins';
|
@import 'common/sass/mixins';
|
||||||
|
|
||||||
|
$speed: 500ms;
|
||||||
|
@keyframes enter {
|
||||||
|
0% {
|
||||||
|
opacity: 0;
|
||||||
|
transform: translateY(8px);
|
||||||
|
}
|
||||||
|
100% {
|
||||||
|
opacity: 1;
|
||||||
|
transform: translateY(0px);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.WalletWarning {
|
.WalletWarning {
|
||||||
max-width: 820px;
|
max-width: 820px;
|
||||||
margin: 0 auto;
|
margin: 0 auto;
|
||||||
|
@ -8,41 +20,34 @@
|
||||||
|
|
||||||
&-title {
|
&-title {
|
||||||
color: color(brand-danger);
|
color: color(brand-danger);
|
||||||
margin: 0 0 $space;
|
text-align: center;
|
||||||
|
font-size: 24px;
|
||||||
|
line-height: 1;
|
||||||
|
margin: 0;
|
||||||
|
font-weight: normal;
|
||||||
|
animation: enter $speed ease 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
&-desc {
|
&-desc {
|
||||||
margin-bottom: $space * 2;
|
text-align: center;
|
||||||
|
font-size: 16px;
|
||||||
|
max-width: 61ch;
|
||||||
|
line-height: 1.6;
|
||||||
|
margin: auto;
|
||||||
|
margin-top: 1.5rem;
|
||||||
|
margin-bottom: 3rem;
|
||||||
|
font-weight: 400;
|
||||||
|
animation: enter $speed ease 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
&-buttons {
|
&-btn {
|
||||||
display: flex;
|
margin: auto !important;
|
||||||
flex-direction: column;
|
width: 100%;
|
||||||
flex-wrap: wrap;
|
max-width: 308px;
|
||||||
justify-content: center;
|
&-wrapper {
|
||||||
max-width: 440px;
|
display: flex;
|
||||||
margin: 0 auto #{-$space};
|
flex-direction: row;
|
||||||
|
flex-wrap: nowrap;
|
||||||
&-btn {
|
|
||||||
width: 100%;
|
|
||||||
margin: 0 0 $space;
|
|
||||||
|
|
||||||
&.is-cancel {
|
|
||||||
@include reset-button;
|
|
||||||
opacity: 0.4;
|
|
||||||
transition: $transition;
|
|
||||||
|
|
||||||
&:hover {
|
|
||||||
opacity: 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fa {
|
|
||||||
position: relative;
|
|
||||||
top: -1px;
|
|
||||||
margin-right: $space-xs;
|
|
||||||
font-size: 11px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import translate from 'translations';
|
import translate, { translateRaw } from 'translations';
|
||||||
import { NewTabLink } from 'components/ui';
|
import { PrimaryButton, SecondaryButton } from 'components';
|
||||||
import './InsecureWalletWarning.scss';
|
import './InsecureWalletWarning.scss';
|
||||||
|
|
||||||
interface Props {
|
interface Props {
|
||||||
|
@ -25,17 +25,18 @@ export class InsecureWalletWarning extends React.Component<Props> {
|
||||||
{translate('INSECURE_WALLET_TYPE_DESC', { $wallet_type: walletType })}
|
{translate('INSECURE_WALLET_TYPE_DESC', { $wallet_type: walletType })}
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<div className="WalletWarning-buttons">
|
<div className="WalletWarning-btn-wrapper">
|
||||||
<NewTabLink
|
<SecondaryButton
|
||||||
|
text={translateRaw('ACTION_4')}
|
||||||
|
onClick={onCancel}
|
||||||
|
className="WalletWarning-btn"
|
||||||
|
/>
|
||||||
|
<div className="flex-spacer" />
|
||||||
|
<PrimaryButton
|
||||||
|
text={translateRaw('WALLET_SUGGESTION_DESKTOP_APP')}
|
||||||
href="https://download.mycrypto.com/"
|
href="https://download.mycrypto.com/"
|
||||||
className="WalletWarning-buttons-btn is-download btn btn-lg btn-primary"
|
className="WalletWarning-btn"
|
||||||
>
|
/>
|
||||||
{translate('WALLET_SUGGESTION_DESKTOP_APP')}
|
|
||||||
</NewTabLink>
|
|
||||||
<button className="WalletWarning-buttons-btn is-cancel" onClick={onCancel}>
|
|
||||||
<i className="fa fa-arrow-left" />
|
|
||||||
{translate('INSECURE_WALLET_GO_BACK')}
|
|
||||||
</button>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
|
|
|
@ -18,94 +18,96 @@ $speed: 500ms;
|
||||||
&-header {
|
&-header {
|
||||||
margin-bottom: 3rem;
|
margin-bottom: 3rem;
|
||||||
}
|
}
|
||||||
&-decrypt {
|
&-buy {
|
||||||
position: relative;
|
text-align: center;
|
||||||
|
font-size: 16px;
|
||||||
|
line-height: 1;
|
||||||
|
margin: 0;
|
||||||
|
margin-top: 0.5rem;
|
||||||
|
font-weight: 400;
|
||||||
|
animation: decrypt-enter 500ms ease 1;
|
||||||
|
margin-bottom: 3rem;
|
||||||
|
}
|
||||||
|
|
||||||
&-title {
|
&-title {
|
||||||
text-align: center;
|
text-align: center;
|
||||||
font-size: 24px;
|
font-size: 24px;
|
||||||
line-height: 1;
|
line-height: 1;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
font-weight: normal;
|
font-weight: normal;
|
||||||
animation: enter $speed ease 1;
|
animation: enter $speed ease 1;
|
||||||
}
|
}
|
||||||
&-desc {
|
&-desc {
|
||||||
text-align: center;
|
text-align: center;
|
||||||
font-size: 16px;
|
font-size: 16px;
|
||||||
line-height: 1;
|
line-height: 1;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
margin-top: 0.5rem;
|
margin-top: 0.5rem;
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
animation: enter $speed ease 1;
|
animation: enter $speed ease 1;
|
||||||
}
|
}
|
||||||
&-tip {
|
&-tip {
|
||||||
font-size: $font-size-xs-bump;
|
font-size: $font-size-xs-bump;
|
||||||
opacity: 0.7;
|
opacity: 0.7;
|
||||||
margin-bottom: $space;
|
margin-bottom: $space;
|
||||||
}
|
}
|
||||||
|
|
||||||
&-help {
|
&-help {
|
||||||
margin-top: 10px;
|
margin-top: 10px;
|
||||||
font-size: 13px;
|
font-size: 13px;
|
||||||
|
}
|
||||||
|
|
||||||
|
&-error {
|
||||||
|
opacity: 0;
|
||||||
|
transition: none;
|
||||||
|
border-radius: 3px;
|
||||||
|
margin-bottom: 2.5rem;
|
||||||
|
|
||||||
|
&.is-showing {
|
||||||
|
opacity: 1;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
&-error {
|
&-message {
|
||||||
opacity: 0;
|
display: flex;
|
||||||
transition: none;
|
justify-content: center;
|
||||||
border-radius: 3px;
|
align-items: center;
|
||||||
margin-bottom: 2.5rem;
|
|
||||||
|
|
||||||
&.is-showing {
|
.Spinner {
|
||||||
opacity: 1;
|
margin-right: 16px;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
&-buy {
|
&-illustration {
|
||||||
margin: 10px 0;
|
margin-bottom: 2rem;
|
||||||
}
|
width: 160px;
|
||||||
|
}
|
||||||
|
|
||||||
&-message {
|
&-tip {
|
||||||
|
&-wrapper {
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: center;
|
flex-direction: row;
|
||||||
align-items: center;
|
flex-wrap: nowrap;
|
||||||
|
margin: auto;
|
||||||
.Spinner {
|
margin-bottom: 3rem;
|
||||||
margin-right: 16px;
|
max-width: 360px;
|
||||||
}
|
> p {
|
||||||
}
|
font-size: 1rem;
|
||||||
|
font-weight: 400;
|
||||||
&-illustration {
|
color: #a8adb3;
|
||||||
margin-bottom: 2rem;
|
text-align: left;
|
||||||
width: 128px;
|
&:first-child {
|
||||||
}
|
color: #333;
|
||||||
|
margin-right: 0.5rem;
|
||||||
&-tip {
|
|
||||||
&-wrapper {
|
|
||||||
display: flex;
|
|
||||||
flex-direction: row;
|
|
||||||
flex-wrap: nowrap;
|
|
||||||
margin: auto;
|
|
||||||
margin-bottom: 3rem;
|
|
||||||
max-width: 360px;
|
|
||||||
> p {
|
|
||||||
font-size: 1rem;
|
|
||||||
font-weight: 400;
|
|
||||||
color: #a8adb3;
|
|
||||||
text-align: left;
|
|
||||||
&:first-child {
|
|
||||||
color: #333;
|
|
||||||
margin-right: 0.5rem;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
&-btn {
|
&-btn {
|
||||||
&-wrapper {
|
&-wrapper {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: row;
|
flex-direction: row;
|
||||||
flex-wrap: nowrap;
|
flex-wrap: nowrap;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
import React, { PureComponent } from 'react';
|
import React, { PureComponent } from 'react';
|
||||||
import { connect } from 'react-redux';
|
import { connect } from 'react-redux';
|
||||||
|
import { SecureWalletName, ledgerReferralURL } from 'config';
|
||||||
import { SecureWalletName } from 'config';
|
|
||||||
import translate, { translateRaw } from 'translations';
|
import translate, { translateRaw } from 'translations';
|
||||||
import { LedgerWallet } from 'libs/wallet';
|
import { LedgerWallet } from 'libs/wallet';
|
||||||
import { NetworkConfig } from 'types/network';
|
import { NetworkConfig } from 'types/network';
|
||||||
|
@ -71,14 +70,15 @@ class LedgerNanoSDecryptClass extends PureComponent<Props, State> {
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="LedgerDecrypt">
|
<div className="LedgerDecrypt">
|
||||||
<div className="LedgerDecrypt-header">
|
<h2 className="LedgerDecrypt-title">
|
||||||
<h2 className="LedgerDecrypt-decrypt-title">
|
{translate('UNLOCK_DEVICE', { $device: translateRaw('X_LEDGER') })}
|
||||||
{translate('UNLOCK_DEVICE', { $device: translateRaw('X_LEDGER') })}
|
</h2>
|
||||||
</h2>
|
<p className="LedgerDecrypt-buy">
|
||||||
<p className="LedgerDecrypt-decrypt-desc">
|
Don't have a one?{' '}
|
||||||
{translate('UNLOCK_DEVICE_NEXT_STEP', { $network: this.props.network.name })}{' '}
|
<span>
|
||||||
</p>
|
<a href={ledgerReferralURL}>Order now!</a>
|
||||||
</div>
|
</span>
|
||||||
|
</p>
|
||||||
{error && (
|
{error && (
|
||||||
<div className={`LedgerDecrypt-error alert alert-danger ${showErr}`}>{error}</div>
|
<div className={`LedgerDecrypt-error alert alert-danger ${showErr}`}>{error}</div>
|
||||||
)}
|
)}
|
||||||
|
|
|
@ -78,7 +78,7 @@ $speed: 500ms;
|
||||||
|
|
||||||
&-illustration {
|
&-illustration {
|
||||||
margin-bottom: 2rem;
|
margin-bottom: 2rem;
|
||||||
width: 128px;
|
width: 160px;
|
||||||
}
|
}
|
||||||
|
|
||||||
&-tip {
|
&-tip {
|
||||||
|
@ -103,7 +103,7 @@ $speed: 500ms;
|
||||||
}
|
}
|
||||||
|
|
||||||
&-btn {
|
&-btn {
|
||||||
margin: auto;
|
margin: auto !important;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
max-width: 308px;
|
max-width: 308px;
|
||||||
&-wrapper {
|
&-wrapper {
|
||||||
|
|
|
@ -1,6 +1,39 @@
|
||||||
|
$speed: 500ms;
|
||||||
|
@keyframes enter {
|
||||||
|
0% {
|
||||||
|
opacity: 0;
|
||||||
|
transform: translateY(8px);
|
||||||
|
}
|
||||||
|
100% {
|
||||||
|
opacity: 1;
|
||||||
|
transform: translateY(0px);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.SafeTminiDecrypt {
|
.SafeTminiDecrypt {
|
||||||
text-align: center;
|
text-align: center;
|
||||||
|
|
||||||
|
&-header {
|
||||||
|
margin-bottom: 3rem;
|
||||||
|
}
|
||||||
|
&-title {
|
||||||
|
text-align: center;
|
||||||
|
font-size: 24px;
|
||||||
|
line-height: 1;
|
||||||
|
margin: 0;
|
||||||
|
font-weight: normal;
|
||||||
|
animation: enter $speed ease 1;
|
||||||
|
}
|
||||||
|
&-desc {
|
||||||
|
text-align: center;
|
||||||
|
font-size: 16px;
|
||||||
|
line-height: 1;
|
||||||
|
margin: 0;
|
||||||
|
margin-top: 0.5rem;
|
||||||
|
font-weight: 400;
|
||||||
|
animation: enter $speed ease 1;
|
||||||
|
}
|
||||||
|
|
||||||
&-help {
|
&-help {
|
||||||
margin-top: 10px;
|
margin-top: 10px;
|
||||||
font-size: 13px;
|
font-size: 13px;
|
||||||
|
@ -9,6 +42,8 @@
|
||||||
&-error {
|
&-error {
|
||||||
opacity: 0;
|
opacity: 0;
|
||||||
transition: none;
|
transition: none;
|
||||||
|
border-radius: 3px;
|
||||||
|
margin-bottom: 2.5rem;
|
||||||
|
|
||||||
&.is-showing {
|
&.is-showing {
|
||||||
opacity: 1;
|
opacity: 1;
|
||||||
|
@ -16,7 +51,14 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
&-buy {
|
&-buy {
|
||||||
margin: 10px 0;
|
text-align: center;
|
||||||
|
font-size: 16px;
|
||||||
|
line-height: 1;
|
||||||
|
margin: 0;
|
||||||
|
margin-top: 0.5rem;
|
||||||
|
font-weight: 400;
|
||||||
|
animation: decrypt-enter 500ms ease 1;
|
||||||
|
margin-bottom: 3rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
&-message {
|
&-message {
|
||||||
|
@ -28,4 +70,39 @@
|
||||||
margin-right: 16px;
|
margin-right: 16px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
&-illustration {
|
||||||
|
margin-bottom: 2rem;
|
||||||
|
width: 160px;
|
||||||
|
padding: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
&-tip {
|
||||||
|
&-wrapper {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
flex-wrap: nowrap;
|
||||||
|
margin: auto;
|
||||||
|
margin-bottom: 3rem;
|
||||||
|
max-width: 360px;
|
||||||
|
> p {
|
||||||
|
font-size: 1rem;
|
||||||
|
font-weight: 400;
|
||||||
|
color: #a8adb3;
|
||||||
|
text-align: left;
|
||||||
|
&:first-child {
|
||||||
|
color: #333;
|
||||||
|
margin-right: 0.5rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&-btn {
|
||||||
|
&-wrapper {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
flex-wrap: nowrap;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,14 +1,14 @@
|
||||||
import React, { PureComponent } from 'react';
|
import React, { PureComponent } from 'react';
|
||||||
import { connect } from 'react-redux';
|
import { connect } from 'react-redux';
|
||||||
|
import { PrimaryButton, SecondaryButton } from 'components';
|
||||||
import { SecureWalletName, safeTReferralURL } from 'config';
|
import { SecureWalletName, safeTReferralURL } from 'config';
|
||||||
import translate, { translateRaw } from 'translations';
|
import translate, { translateRaw } from 'translations';
|
||||||
import { SafeTWallet } from 'libs/wallet';
|
import { SafeTWallet } from 'libs/wallet';
|
||||||
import { AppState } from 'features/reducers';
|
import { AppState } from 'features/reducers';
|
||||||
import { getSingleDPath, getPaths } from 'features/config';
|
import { getSingleDPath, getPaths } from 'features/config';
|
||||||
import { Spinner, NewTabLink } from 'components/ui';
|
|
||||||
import UnsupportedNetwork from './UnsupportedNetwork';
|
import UnsupportedNetwork from './UnsupportedNetwork';
|
||||||
import DeterministicWalletsModal from './DeterministicWalletsModal';
|
import DeterministicWalletsModal from './DeterministicWalletsModal';
|
||||||
|
import img from 'assets/images/wallets/safe-t.svg';
|
||||||
import './SafeT.scss';
|
import './SafeT.scss';
|
||||||
|
|
||||||
//todo: conflicts with comment in walletDecrypt -> onUnlock method
|
//todo: conflicts with comment in walletDecrypt -> onUnlock method
|
||||||
|
@ -48,6 +48,7 @@ class SafeTminiDecryptClass extends PureComponent<Props, State> {
|
||||||
}
|
}
|
||||||
|
|
||||||
public render() {
|
public render() {
|
||||||
|
const { props } = this;
|
||||||
const { dPath, publicKey, chainCode, error, isLoading } = this.state;
|
const { dPath, publicKey, chainCode, error, isLoading } = this.state;
|
||||||
const showErr = error ? 'is-showing' : '';
|
const showErr = error ? 'is-showing' : '';
|
||||||
|
|
||||||
|
@ -58,26 +59,33 @@ class SafeTminiDecryptClass extends PureComponent<Props, State> {
|
||||||
// todo: update help link
|
// todo: update help link
|
||||||
return (
|
return (
|
||||||
<div className="SafeTminiDecrypt">
|
<div className="SafeTminiDecrypt">
|
||||||
<button
|
<h2 className="SafeTminiDecrypt-title">{translate('ADD_SAFE_T_SCAN')}</h2>
|
||||||
className="SafeTminiDecrypt-decrypt btn btn-primary btn-lg btn-block"
|
<p className="SafeTminiDecrypt-buy">
|
||||||
onClick={this.handleNullConnect}
|
Don't have a one?{' '}
|
||||||
disabled={isLoading}
|
<span>
|
||||||
>
|
<a href={safeTReferralURL}>Order now!</a>
|
||||||
{isLoading ? (
|
</span>
|
||||||
<div className="SafeTminiDecrypt-message">
|
</p>
|
||||||
<Spinner light={true} />
|
{error && (
|
||||||
{translate('WALLET_UNLOCKING')}
|
<div className={`SafeTminiDecrypt-error alert alert-danger ${showErr}`}>{error}</div>
|
||||||
</div>
|
)}
|
||||||
) : (
|
<img src={img} alt="Safe-T Logo" className="SafeTminiDecrypt-illustration" />
|
||||||
translate('ADD_SAFE_T_SCAN')
|
|
||||||
)}
|
|
||||||
</button>
|
|
||||||
|
|
||||||
<NewTabLink className="SafeTminiDecrypt-buy btn btn-sm btn-default" href={safeTReferralURL}>
|
<div className="TrezorDecrypt-btn-wrapper">
|
||||||
{translate('ORDER_SAFE_T')}
|
<SecondaryButton
|
||||||
</NewTabLink>
|
text="Back"
|
||||||
|
onClick={(props as any).clearWalletChoice}
|
||||||
<div className={`SafeTminiDecrypt-error alert alert-danger ${showErr}`}>{error || '-'}</div>
|
className="Web3Decrypt-btn"
|
||||||
|
/>
|
||||||
|
<div className="flex-spacer" />
|
||||||
|
<PrimaryButton
|
||||||
|
text="Connect"
|
||||||
|
onClick={this.handleNullConnect}
|
||||||
|
loading={isLoading}
|
||||||
|
loadingTxt={translateRaw('WALLET_UNLOCKING')}
|
||||||
|
className="TrezorDecrypt-btn"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
|
||||||
<DeterministicWalletsModal
|
<DeterministicWalletsModal
|
||||||
isOpen={!!publicKey && !!chainCode}
|
isOpen={!!publicKey && !!chainCode}
|
||||||
|
|
|
@ -55,8 +55,13 @@ $speed: 500ms;
|
||||||
}
|
}
|
||||||
|
|
||||||
&-buy {
|
&-buy {
|
||||||
font-size: 1rem;
|
text-align: center;
|
||||||
|
font-size: 16px;
|
||||||
|
line-height: 1;
|
||||||
|
margin: 0;
|
||||||
|
margin-top: 0.5rem;
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
|
animation: decrypt-enter 500ms ease 1;
|
||||||
margin-bottom: 3rem;
|
margin-bottom: 3rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -72,7 +77,7 @@ $speed: 500ms;
|
||||||
|
|
||||||
&-illustration {
|
&-illustration {
|
||||||
margin-bottom: 2rem;
|
margin-bottom: 2rem;
|
||||||
width: 128px;
|
width: 160px;
|
||||||
}
|
}
|
||||||
|
|
||||||
&-tip {
|
&-tip {
|
||||||
|
|
|
@ -59,22 +59,19 @@ class TrezorDecryptClass extends PureComponent<Props, State> {
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="TrezorDecrypt">
|
<div className="TrezorDecrypt">
|
||||||
<div className="TrezorDecrypt-header">
|
<h2 className="TrezorDecrypt-decrypt-title">
|
||||||
<h2 className="TrezorDecrypt-decrypt-title">
|
{translate('UNLOCK_DEVICE', { $device: translateRaw('X_TREZOR') })}
|
||||||
{translate('UNLOCK_DEVICE', { $device: translateRaw('X_TREZOR') })}
|
</h2>
|
||||||
</h2>
|
|
||||||
</div>
|
|
||||||
{error && (
|
|
||||||
<div className={`TrezorDecrypt-error alert alert-danger ${showErr}`}>{error}</div>
|
|
||||||
)}
|
|
||||||
<img src={img} alt="Trezor illustration" className="TrezorDecrypt-illustration" />
|
|
||||||
|
|
||||||
<p className="TrezorDecrypt-buy">
|
<p className="TrezorDecrypt-buy">
|
||||||
Don't have a one?{' '}
|
Don't have a one?{' '}
|
||||||
<span>
|
<span>
|
||||||
<a href={trezorReferralURL}>Order now!</a>
|
<a href={trezorReferralURL}>Order now!</a>
|
||||||
</span>
|
</span>
|
||||||
</p>
|
</p>
|
||||||
|
{error && (
|
||||||
|
<div className={`TrezorDecrypt-error alert alert-danger ${showErr}`}>{error}</div>
|
||||||
|
)}
|
||||||
|
<img src={img} alt="Trezor illustration" className="TrezorDecrypt-illustration" />
|
||||||
|
|
||||||
<div className="TrezorDecrypt-btn-wrapper">
|
<div className="TrezorDecrypt-btn-wrapper">
|
||||||
<SecondaryButton
|
<SecondaryButton
|
||||||
|
|
|
@ -100,7 +100,7 @@ $speed: 500ms;
|
||||||
|
|
||||||
&-illustration {
|
&-illustration {
|
||||||
margin-bottom: 2rem;
|
margin-bottom: 2rem;
|
||||||
width: 128px;
|
width: 160px;
|
||||||
}
|
}
|
||||||
|
|
||||||
&-tip {
|
&-tip {
|
||||||
|
|
|
@ -12,29 +12,29 @@ $speed: 500ms;
|
||||||
|
|
||||||
.Web3Decrypt {
|
.Web3Decrypt {
|
||||||
text-align: center;
|
text-align: center;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
flex-wrap: nowrap;
|
||||||
|
|
||||||
&-header {
|
&-header {
|
||||||
margin-bottom: 3rem;
|
margin-bottom: 3rem;
|
||||||
}
|
}
|
||||||
&-decrypt {
|
&-title {
|
||||||
position: relative;
|
text-align: center;
|
||||||
|
font-size: 24px;
|
||||||
&-title {
|
line-height: 1;
|
||||||
text-align: center;
|
margin: 0;
|
||||||
font-size: 24px;
|
font-weight: normal;
|
||||||
line-height: 1;
|
animation: enter $speed ease 1;
|
||||||
margin: 0;
|
}
|
||||||
font-weight: normal;
|
&-desc {
|
||||||
animation: enter $speed ease 1;
|
text-align: center;
|
||||||
}
|
font-size: 16px;
|
||||||
&-desc {
|
line-height: 1;
|
||||||
text-align: center;
|
margin: 0;
|
||||||
font-size: 16px;
|
margin-top: 0.5rem;
|
||||||
line-height: 1;
|
font-weight: 400;
|
||||||
margin: 0;
|
animation: enter $speed ease 1;
|
||||||
margin-top: 0.5rem;
|
|
||||||
font-weight: 400;
|
|
||||||
animation: enter $speed ease 1;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
&-help {
|
&-help {
|
||||||
|
@ -54,9 +54,13 @@ $speed: 500ms;
|
||||||
}
|
}
|
||||||
|
|
||||||
&-buy {
|
&-buy {
|
||||||
display: block;
|
text-align: center;
|
||||||
font-size: 1rem;
|
font-size: 16px;
|
||||||
|
line-height: 1;
|
||||||
|
margin: 0;
|
||||||
|
margin-top: 0.5rem;
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
|
animation: decrypt-enter 500ms ease 1;
|
||||||
margin-bottom: 3rem;
|
margin-bottom: 3rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -71,8 +75,9 @@ $speed: 500ms;
|
||||||
}
|
}
|
||||||
|
|
||||||
&-illustration {
|
&-illustration {
|
||||||
|
margin: auto;
|
||||||
margin-bottom: 2rem;
|
margin-bottom: 2rem;
|
||||||
width: 128px;
|
width: 160px;
|
||||||
}
|
}
|
||||||
|
|
||||||
&-tip {
|
&-tip {
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
|
|
||||||
import translate, { translateRaw } from 'translations';
|
import translate, { translateRaw } from 'translations';
|
||||||
import { NewTabLink } from 'components/ui';
|
import { NewTabLink } from 'components/ui';
|
||||||
import { PrimaryButton, SecondaryButton } from 'components';
|
import { PrimaryButton, SecondaryButton } from 'components';
|
||||||
|
@ -12,17 +11,14 @@ interface Props {
|
||||||
|
|
||||||
export const Web3Decrypt: React.SFC<Props> = props => (
|
export const Web3Decrypt: React.SFC<Props> = props => (
|
||||||
<div className="Web3Decrypt">
|
<div className="Web3Decrypt">
|
||||||
<div className="Web3Decrypt-header">
|
<h2 className="Web3Decrypt-title">{translate('ADD_METAMASK')}</h2>
|
||||||
<h2 className="Web3Decrypt-decrypt-title">{translate('ADD_METAMASK')}</h2>
|
|
||||||
</div>
|
|
||||||
<img src={img} alt="Metamask Logo" className="Web3Decrypt-illustration" />
|
|
||||||
<br />
|
|
||||||
<NewTabLink
|
<NewTabLink
|
||||||
className="Web3Decrypt-buy"
|
className="Web3Decrypt-buy"
|
||||||
href="https://chrome.google.com/webstore/detail/metamask/nkbihfbeogaeaoehlefnkodbefgpgknn?hl=en"
|
href="https://chrome.google.com/webstore/detail/metamask/nkbihfbeogaeaoehlefnkodbefgpgknn?hl=en"
|
||||||
>
|
>
|
||||||
{translate('ACTION_13', { $thing: 'MetaMask' })}
|
{translate('ACTION_13', { $thing: 'MetaMask' })}
|
||||||
</NewTabLink>
|
</NewTabLink>
|
||||||
|
<img src={img} alt="Metamask Logo" className="Web3Decrypt-illustration" />
|
||||||
<div className="Web3Decrypt-btn-wrapper">
|
<div className="Web3Decrypt-btn-wrapper">
|
||||||
<SecondaryButton
|
<SecondaryButton
|
||||||
text="Back"
|
text="Back"
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: -0.5rem;
|
top: -0.5rem;
|
||||||
right: 0;
|
right: 0;
|
||||||
padding: 0.5rem 1rem;
|
padding: 0.5rem 1rem !important;
|
||||||
|
|
||||||
&-text {
|
&-text {
|
||||||
padding-right: 8px;
|
padding-right: 8px;
|
||||||
|
|
|
@ -90,14 +90,7 @@ export const STATIC_NETWORKS_INITIAL_STATE: StaticNetworksState = {
|
||||||
},
|
},
|
||||||
gasPriceSettings: gasPriceDefaults,
|
gasPriceSettings: gasPriceDefaults,
|
||||||
shouldEstimateGasPrice: true,
|
shouldEstimateGasPrice: true,
|
||||||
unsupportedTabs: [
|
unsupportedTabs: [TAB.CREATE, TAB.CONTRACTS, TAB.ENS, TAB.SIGN, TAB.TXSTATUS, TAB.BROADCAST]
|
||||||
'NAV_GENERATEWALLET',
|
|
||||||
'NAV_CONTRACTS',
|
|
||||||
'NAV_ENS',
|
|
||||||
'NAV_SIGN',
|
|
||||||
'NAV_TXSTATUS',
|
|
||||||
'NAV_BROADCAST'
|
|
||||||
]
|
|
||||||
},
|
},
|
||||||
Ropsten: {
|
Ropsten: {
|
||||||
id: 'Ropsten',
|
id: 'Ropsten',
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
|
|
||||||
.alert {
|
.alert {
|
||||||
padding: 1rem;
|
padding: 1rem;
|
||||||
margin-bottom: 1rem;
|
margin-bottom: 2rem;
|
||||||
color: color(text-color-inverted);
|
color: color(text-color-inverted);
|
||||||
|
|
||||||
@include theme(dark) {
|
@include theme(dark) {
|
||||||
|
@ -18,12 +18,12 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
a {
|
a {
|
||||||
color: #FFF;
|
color: #fff;
|
||||||
font-weight: normal;
|
font-weight: normal;
|
||||||
text-decoration: underline;
|
text-decoration: underline;
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
color: #FFF;
|
color: #fff;
|
||||||
opacity: 0.8;
|
opacity: 0.8;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -83,12 +83,11 @@ strong,
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
}
|
}
|
||||||
|
|
||||||
a {
|
a:not(.PrimaryButton) {
|
||||||
color: color(link-color);
|
color: color(link-color);
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
transition: $transition;
|
transition: $transition;
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
opacity: 0.8;
|
opacity: 0.8;
|
||||||
color: color(link-hover-color);
|
color: color(link-hover-color);
|
||||||
|
|
|
@ -436,7 +436,7 @@
|
||||||
"WALLET_SUGGESTION_GENERATE_3": "Compatible with almost all wallets",
|
"WALLET_SUGGESTION_GENERATE_3": "Compatible with almost all wallets",
|
||||||
"WALLET_SUGGESTION_GENERATE_4": "Free to generate",
|
"WALLET_SUGGESTION_GENERATE_4": "Free to generate",
|
||||||
"WALLET_SUGGESTION_GENERATE_5": "Commonly a target for phishing and hacking",
|
"WALLET_SUGGESTION_GENERATE_5": "Commonly a target for phishing and hacking",
|
||||||
"WALLET_SUGGESTION_DESKTOP_APP": "Download the MyCrypto Desktop App",
|
"WALLET_SUGGESTION_DESKTOP_APP": "Download Desktop App",
|
||||||
"WALLET_SUGGESTION_DESKTOP_APP_DESC": "Where you can generate your own private key in a secure, sandboxed environment",
|
"WALLET_SUGGESTION_DESKTOP_APP_DESC": "Where you can generate your own private key in a secure, sandboxed environment",
|
||||||
"PREFOOTER_WARNING": "MyCrypto.com does not hold your keys for you. We cannot access accounts, recover keys, reset passwords, nor reverse transactions. Protect your keys & always check that you are on the correct URL.",
|
"PREFOOTER_WARNING": "MyCrypto.com does not hold your keys for you. We cannot access accounts, recover keys, reset passwords, nor reverse transactions. Protect your keys & always check that you are on the correct URL.",
|
||||||
"PREFOOTER_SECURITY_WARNING": "You are responsible for your security.",
|
"PREFOOTER_SECURITY_WARNING": "You are responsible for your security.",
|
||||||
|
@ -526,7 +526,7 @@
|
||||||
"VIEW_ONLY_ENTER": "Enter an address (e.g. 0x4bbeEB066eD09...)",
|
"VIEW_ONLY_ENTER": "Enter an address (e.g. 0x4bbeEB066eD09...)",
|
||||||
"GO_TO_ACCOUNT": "Go to Account",
|
"GO_TO_ACCOUNT": "Go to Account",
|
||||||
"INSECURE_WALLET_TYPE_TITLE": "$wallet_type wallets are disabled online",
|
"INSECURE_WALLET_TYPE_TITLE": "$wallet_type wallets are disabled online",
|
||||||
"INSECURE_WALLET_TYPE_DESC": "Entering your $wallet_type on any website is dangerous. If MyCrypto.com was compromised, or you accidentally visited a phishing website, you could lose your funds. Because of that, we have disabled the use of $wallet_type wallets through the website. In order to access your account, please download MyCrypto and run it locally.",
|
"INSECURE_WALLET_TYPE_DESC": "Entering your $wallet_type on any website is dangerous. If MyCrypto.com were compromised, or you visit a phishing website, you could lose your funds. Because of that, we have disabled the use of $wallet_type wallets. To access your wallet, download our desktop app.",
|
||||||
"INSECURE_WALLET_GO_BACK": "Go back to wallet selection",
|
"INSECURE_WALLET_GO_BACK": "Go back to wallet selection",
|
||||||
"DONT_HAVE_WALLET_PROMPT": "Don’t have a wallet?",
|
"DONT_HAVE_WALLET_PROMPT": "Don’t have a wallet?",
|
||||||
"DL_WALLET_WARNING_1": "**Don't lose it!** It can't be recovered if you lose it.",
|
"DL_WALLET_WARNING_1": "**Don't lose it!** It can't be recovered if you lose it.",
|
||||||
|
|
Loading…
Reference in New Issue