diff --git a/common/components/PrimaryButton/PrimaryButton.scss b/common/components/PrimaryButton/PrimaryButton.scss index 8fbdc276..ebcbbd8d 100644 --- a/common/components/PrimaryButton/PrimaryButton.scss +++ b/common/components/PrimaryButton/PrimaryButton.scss @@ -1,6 +1,10 @@ @import 'common/sass/variables'; @import 'common/sass/mixins'; +a.PrimaryButton { + color: white; +} + .PrimaryButton { @include reset-button; display: block; diff --git a/common/components/PrimaryButton/index.tsx b/common/components/PrimaryButton/index.tsx index b335e7f7..a25327ae 100644 --- a/common/components/PrimaryButton/index.tsx +++ b/common/components/PrimaryButton/index.tsx @@ -1,34 +1,61 @@ import React from 'react'; -import { Spinner } from 'components/ui'; +import { Spinner, NewTabLink } from 'components/ui'; +import { Link } from 'react-router-dom'; import './PrimaryButton.scss'; -interface Props { +interface DefaultProps { className?: string; disabled?: boolean; text?: string; +} + +interface InternalLinkProps extends DefaultProps { + to: string; +} + +interface ExternalLinkProps extends DefaultProps { + href: string; +} + +interface ButtonProps extends DefaultProps { loading?: boolean; loadingTxt?: string; onClick(): void; } -export default class PrimaryButton extends React.Component { - public render() { - const { text, disabled, className, loading, loadingTxt, onClick } = this.props; - return ( - - ); - } -} +type Props = ButtonProps | InternalLinkProps | ExternalLinkProps; + +const PrimaryButton = (props: Props): JSX.Element => { + const { text, disabled, className } = props; + const { loading, loadingTxt, onClick } = props as ButtonProps; + const { to } = props as InternalLinkProps; + const { href } = props as ExternalLinkProps; + return !onClick ? ( + to ? ( + + {text} + + ) : ( + + {text} + + ) + ) : ( + + ); +}; + +export default PrimaryButton; diff --git a/common/components/WalletDecrypt/WalletDecrypt.scss b/common/components/WalletDecrypt/WalletDecrypt.scss index 47a0be7e..4808b5ac 100644 --- a/common/components/WalletDecrypt/WalletDecrypt.scss +++ b/common/components/WalletDecrypt/WalletDecrypt.scss @@ -61,14 +61,16 @@ $speed: 500ms; display: flex; justify-content: center; flex-wrap: wrap; + margin: auto; margin-bottom: 1rem; + max-width: 895px; @media screen and (max-width: $screen-xs) { margin: 0; } &:last-child { - margin: 0; + margin: auto; } } @@ -127,9 +129,10 @@ $speed: 500ms; &-override { position: absolute; - bottom: 0; - right: 0; - opacity: 0.3; + bottom: -15%; + right: 50%; + transform: translateX(50%); + opacity: 0.8; &:hover { opacity: 1; diff --git a/common/components/WalletDecrypt/components/InsecureWalletWarning.scss b/common/components/WalletDecrypt/components/InsecureWalletWarning.scss index 901dab58..d86f6f4c 100644 --- a/common/components/WalletDecrypt/components/InsecureWalletWarning.scss +++ b/common/components/WalletDecrypt/components/InsecureWalletWarning.scss @@ -1,6 +1,18 @@ @import 'common/sass/variables'; @import 'common/sass/mixins'; +$speed: 500ms; +@keyframes enter { + 0% { + opacity: 0; + transform: translateY(8px); + } + 100% { + opacity: 1; + transform: translateY(0px); + } +} + .WalletWarning { max-width: 820px; margin: 0 auto; @@ -8,41 +20,34 @@ &-title { 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 { - 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 { - display: flex; - flex-direction: column; - flex-wrap: wrap; - justify-content: center; - max-width: 440px; - margin: 0 auto #{-$space}; - - &-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; - } - } + &-btn { + margin: auto !important; + width: 100%; + max-width: 308px; + &-wrapper { + display: flex; + flex-direction: row; + flex-wrap: nowrap; } } } diff --git a/common/components/WalletDecrypt/components/InsecureWalletWarning.tsx b/common/components/WalletDecrypt/components/InsecureWalletWarning.tsx index f24abef6..0a40074e 100644 --- a/common/components/WalletDecrypt/components/InsecureWalletWarning.tsx +++ b/common/components/WalletDecrypt/components/InsecureWalletWarning.tsx @@ -1,6 +1,6 @@ import React from 'react'; -import translate from 'translations'; -import { NewTabLink } from 'components/ui'; +import translate, { translateRaw } from 'translations'; +import { PrimaryButton, SecondaryButton } from 'components'; import './InsecureWalletWarning.scss'; interface Props { @@ -25,17 +25,18 @@ export class InsecureWalletWarning extends React.Component { {translate('INSECURE_WALLET_TYPE_DESC', { $wallet_type: walletType })}

-
- + +
+ - {translate('WALLET_SUGGESTION_DESKTOP_APP')} - - + className="WalletWarning-btn" + />
); diff --git a/common/components/WalletDecrypt/components/LedgerNano.scss b/common/components/WalletDecrypt/components/LedgerNano.scss index a38f2f1b..0277741b 100644 --- a/common/components/WalletDecrypt/components/LedgerNano.scss +++ b/common/components/WalletDecrypt/components/LedgerNano.scss @@ -18,94 +18,96 @@ $speed: 500ms; &-header { margin-bottom: 3rem; } - &-decrypt { - position: relative; + &-buy { + 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 { - 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; - } - &-tip { - font-size: $font-size-xs-bump; - opacity: 0.7; - margin-bottom: $space; - } + &-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; + } + &-tip { + font-size: $font-size-xs-bump; + opacity: 0.7; + margin-bottom: $space; + } - &-help { - margin-top: 10px; - font-size: 13px; + &-help { + margin-top: 10px; + font-size: 13px; + } + + &-error { + opacity: 0; + transition: none; + border-radius: 3px; + margin-bottom: 2.5rem; + + &.is-showing { + opacity: 1; } + } - &-error { - opacity: 0; - transition: none; - border-radius: 3px; - margin-bottom: 2.5rem; + &-message { + display: flex; + justify-content: center; + align-items: center; - &.is-showing { - opacity: 1; - } + .Spinner { + margin-right: 16px; } + } - &-buy { - margin: 10px 0; - } + &-illustration { + margin-bottom: 2rem; + width: 160px; + } - &-message { + &-tip { + &-wrapper { display: flex; - justify-content: center; - align-items: center; - - .Spinner { - margin-right: 16px; - } - } - - &-illustration { - margin-bottom: 2rem; - width: 128px; - } - - &-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; - } + 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; - } + } + &-btn { + &-wrapper { + display: flex; + flex-direction: row; + flex-wrap: nowrap; } } } diff --git a/common/components/WalletDecrypt/components/LedgerNano.tsx b/common/components/WalletDecrypt/components/LedgerNano.tsx index 50f4679d..c281938b 100644 --- a/common/components/WalletDecrypt/components/LedgerNano.tsx +++ b/common/components/WalletDecrypt/components/LedgerNano.tsx @@ -1,7 +1,6 @@ import React, { PureComponent } from 'react'; import { connect } from 'react-redux'; - -import { SecureWalletName } from 'config'; +import { SecureWalletName, ledgerReferralURL } from 'config'; import translate, { translateRaw } from 'translations'; import { LedgerWallet } from 'libs/wallet'; import { NetworkConfig } from 'types/network'; @@ -71,14 +70,15 @@ class LedgerNanoSDecryptClass extends PureComponent { return (
-
-

- {translate('UNLOCK_DEVICE', { $device: translateRaw('X_LEDGER') })} -

-

- {translate('UNLOCK_DEVICE_NEXT_STEP', { $network: this.props.network.name })}{' '} -

-
+

+ {translate('UNLOCK_DEVICE', { $device: translateRaw('X_LEDGER') })} +

+

+ Don't have a one?{' '} + + Order now! + +

{error && (
{error}
)} diff --git a/common/components/WalletDecrypt/components/ParitySigner.scss b/common/components/WalletDecrypt/components/ParitySigner.scss index 4d757b8b..d2176fe5 100644 --- a/common/components/WalletDecrypt/components/ParitySigner.scss +++ b/common/components/WalletDecrypt/components/ParitySigner.scss @@ -78,7 +78,7 @@ $speed: 500ms; &-illustration { margin-bottom: 2rem; - width: 128px; + width: 160px; } &-tip { @@ -103,7 +103,7 @@ $speed: 500ms; } &-btn { - margin: auto; + margin: auto !important; width: 100%; max-width: 308px; &-wrapper { diff --git a/common/components/WalletDecrypt/components/SafeT.scss b/common/components/WalletDecrypt/components/SafeT.scss index c4e33083..6115e00f 100644 --- a/common/components/WalletDecrypt/components/SafeT.scss +++ b/common/components/WalletDecrypt/components/SafeT.scss @@ -1,6 +1,39 @@ +$speed: 500ms; +@keyframes enter { + 0% { + opacity: 0; + transform: translateY(8px); + } + 100% { + opacity: 1; + transform: translateY(0px); + } +} + .SafeTminiDecrypt { 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 { margin-top: 10px; font-size: 13px; @@ -9,6 +42,8 @@ &-error { opacity: 0; transition: none; + border-radius: 3px; + margin-bottom: 2.5rem; &.is-showing { opacity: 1; @@ -16,7 +51,14 @@ } &-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 { @@ -28,4 +70,39 @@ 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; + } + } } diff --git a/common/components/WalletDecrypt/components/SafeT.tsx b/common/components/WalletDecrypt/components/SafeT.tsx index a1c59ae1..1b3a7193 100644 --- a/common/components/WalletDecrypt/components/SafeT.tsx +++ b/common/components/WalletDecrypt/components/SafeT.tsx @@ -1,14 +1,14 @@ import React, { PureComponent } from 'react'; import { connect } from 'react-redux'; - +import { PrimaryButton, SecondaryButton } from 'components'; import { SecureWalletName, safeTReferralURL } from 'config'; import translate, { translateRaw } from 'translations'; import { SafeTWallet } from 'libs/wallet'; import { AppState } from 'features/reducers'; import { getSingleDPath, getPaths } from 'features/config'; -import { Spinner, NewTabLink } from 'components/ui'; import UnsupportedNetwork from './UnsupportedNetwork'; import DeterministicWalletsModal from './DeterministicWalletsModal'; +import img from 'assets/images/wallets/safe-t.svg'; import './SafeT.scss'; //todo: conflicts with comment in walletDecrypt -> onUnlock method @@ -48,6 +48,7 @@ class SafeTminiDecryptClass extends PureComponent { } public render() { + const { props } = this; const { dPath, publicKey, chainCode, error, isLoading } = this.state; const showErr = error ? 'is-showing' : ''; @@ -58,26 +59,33 @@ class SafeTminiDecryptClass extends PureComponent { // todo: update help link return (
- +

{translate('ADD_SAFE_T_SCAN')}

+

+ Don't have a one?{' '} + + Order now! + +

+ {error && ( +
{error}
+ )} + Safe-T Logo - - {translate('ORDER_SAFE_T')} - - -
{error || '-'}
+
+ +
+ +
{ return (
-
-

- {translate('UNLOCK_DEVICE', { $device: translateRaw('X_TREZOR') })} -

-
- {error && ( -
{error}
- )} - Trezor illustration - +

+ {translate('UNLOCK_DEVICE', { $device: translateRaw('X_TREZOR') })} +

Don't have a one?{' '} Order now!

+ {error && ( +
{error}
+ )} + Trezor illustration
= props => (
-
-

{translate('ADD_METAMASK')}

-
- Metamask Logo -
+

{translate('ADD_METAMASK')}

{translate('ACTION_13', { $thing: 'MetaMask' })} + Metamask Logo