From b08e0215dcce805a7f818f7b5e62a40a76654768 Mon Sep 17 00:00:00 2001 From: Mikhail Mikheev Date: Wed, 28 Aug 2019 18:25:18 +0400 Subject: [PATCH 01/19] replace colors, change button styling --- .eslintrc | 3 +- package.json | 32 +- src/assets/icons/qrcode.svg | 2 +- src/assets/icons/trash.svg | 2 +- .../Header/assets/gnosis-safe-icon.svg | 2 +- .../Header/assets/gnosis-safe-logo.svg | 61 +- src/components/Header/assets/key.svg | 2 +- .../Header/assets/metamask-icon.svg | 2 +- src/components/Header/assets/triangle.svg | 2 +- src/components/Header/component/Layout.jsx | 6 +- .../component/ProviderDetails/UserDetails.jsx | 7 +- .../ProviderInfo/ProviderAccesible.jsx | 10 +- src/components/Header/index.jsx | 11 +- src/components/SnackbarContent/index.jsx | 16 +- src/components/layout/Button/index.jsx | 8 +- src/routes/opening/assets/vault.svg | 6 +- .../Balances/SendModal/SafeInfo/index.jsx | 4 +- .../SendModal/screens/ReviewTx/style.js | 2 +- .../SendModal/screens/SendFunds/style.js | 2 +- .../SendModal/screens/assets/arrow-down.svg | 2 +- .../Tokens/screens/TokenList/style.js | 2 +- .../Balances/assets/token_placeholder.svg | 2 +- src/routes/safe/components/Balances/index.jsx | 30 +- src/routes/safe/components/Layout.jsx | 15 +- .../AddOwnerModal/screens/OwnerForm/style.js | 2 +- .../AddOwnerModal/screens/Review/style.js | 4 +- .../screens/ThresholdForm/style.js | 2 +- .../screens/CheckOwner/style.js | 2 +- .../RemoveOwnerModal/screens/Review/style.js | 2 +- .../screens/ThresholdForm/style.js | 2 +- .../screens/OwnerForm/style.js | 2 +- .../ReplaceOwnerModal/screens/Review/style.js | 4 +- .../assets/icons/rename-owner.svg | 2 +- .../assets/icons/replace-owner.svg | 2 +- .../ChangeThreshold/style.js | 2 +- .../Settings/ThresholdSettings/style.js | 6 +- .../components/Settings/assets/icons/bin.svg | 2 +- src/routes/safe/components/Settings/style.js | 4 +- .../ExpandedTx/OwnersColumn/ButtonRow.jsx | 4 +- .../TxsTable/ExpandedTx/OwnersColumn/List.jsx | 4 +- .../ExpandedTx/OwnersColumn/index.jsx | 7 +- .../TxsTable/ExpandedTx/OwnersColumn/style.js | 2 +- .../TxsTable/ExpandedTx/style.js | 6 +- .../TxsTable/Status/assets/awaiting.svg | 2 +- .../TxsTable/Status/assets/error.svg | 2 +- .../TxsTable/Status/assets/ok.svg | 2 +- .../TransactionsNew/TxsTable/Status/style.js | 14 +- src/routes/welcome/assets/safe.svg | 2 +- src/theme/mui.js | 15 +- src/theme/variables.js | 103 +- yarn.lock | 1540 +++++++++-------- 51 files changed, 1087 insertions(+), 885 deletions(-) diff --git a/.eslintrc b/.eslintrc index b565138ccd..570d4fa3ad 100644 --- a/.eslintrc +++ b/.eslintrc @@ -42,7 +42,8 @@ } ], "react/require-default-props": 0, - "react/no-array-index-key": 0 + "react/no-array-index-key": 0, + "react/jsx-props-no-spreading": 0 }, "env": { "jest/globals": true, diff --git a/package.json b/package.json index c1e4ea18c1..ea05c3549b 100644 --- a/package.json +++ b/package.json @@ -31,14 +31,14 @@ "dependencies": { "@gnosis.pm/safe-contracts": "^1.0.0", "@gnosis.pm/util-contracts": "2.0.1", - "@material-ui/core": "4.3.2", + "@material-ui/core": "4.3.3", "@material-ui/icons": "4.2.1", - "@testing-library/jest-dom": "^4.0.0", + "@testing-library/jest-dom": "4.1.0", "@welldone-software/why-did-you-render": "3.3.3", "axios": "0.19.0", "bignumber.js": "9.0.0", "connected-react-router": "6.5.2", - "date-fns": "1.30.1", + "date-fns": "2.0.1", "ethereum-ens": "^0.7.7", "final-form": "4.18.5", "history": "^4.7.2", @@ -51,10 +51,10 @@ "react-dom": "16.9.0", "react-final-form": "6.3.0", "react-final-form-listeners": "^1.0.2", - "react-hot-loader": "4.12.11", + "react-hot-loader": "4.12.12", "react-infinite-scroll-component": "4.5.3", "react-qr-reader": "^2.2.1", - "react-redux": "7.1.0", + "react-redux": "7.1.1", "react-router-dom": "^5.0.1", "recompose": "^0.30.0", "redux": "4.0.4", @@ -93,11 +93,11 @@ "@storybook/addon-knobs": "5.1.11", "@storybook/addon-links": "5.1.11", "@storybook/react": "5.1.11", - "@testing-library/react": "9.1.1", + "@testing-library/react": "9.1.3", "autoprefixer": "9.6.1", "babel-core": "^7.0.0-bridge.0", - "babel-eslint": "10.0.2", - "babel-jest": "24.8.0", + "babel-eslint": "10.0.3", + "babel-jest": "24.9.0", "babel-loader": "8.0.6", "babel-plugin-dynamic-import-node": "^2.2.0", "babel-plugin-transform-es3-member-expression-literals": "^6.22.0", @@ -109,17 +109,17 @@ "eslint-config-airbnb": "18.0.1", "eslint-plugin-flowtype": "4.2.0", "eslint-plugin-import": "2.18.2", - "eslint-plugin-jest": "22.15.1", + "eslint-plugin-jest": "22.15.2", "eslint-plugin-jsx-a11y": "6.2.3", "eslint-plugin-react": "7.14.3", "ethereumjs-abi": "0.6.8", "extract-text-webpack-plugin": "^4.0.0-beta.0", "file-loader": "4.2.0", - "flow-bin": "0.105.2", + "flow-bin": "0.106.2", "fs-extra": "8.1.0", "html-loader": "^0.5.5", "html-webpack-plugin": "^3.0.4", - "jest": "24.8.0", + "jest": "24.9.0", "jest-dom": "4.0.0", "json-loader": "^0.5.7", "mini-css-extract-plugin": "0.8.0", @@ -132,13 +132,13 @@ "storybook-host": "5.1.0", "storybook-router": "^0.3.3", "style-loader": "1.0.0", - "truffle": "5.0.31", - "truffle-contract": "4.0.28", - "truffle-solidity-loader": "0.1.30", + "truffle": "5.0.33", + "truffle-contract": "4.0.30", + "truffle-solidity-loader": "0.1.32", "uglifyjs-webpack-plugin": "2.2.0", - "webpack": "4.39.2", + "webpack": "4.39.3", "webpack-bundle-analyzer": "3.4.1", - "webpack-cli": "3.3.6", + "webpack-cli": "3.3.7", "webpack-dev-server": "3.8.0", "webpack-manifest-plugin": "^2.0.0-rc.2" } diff --git a/src/assets/icons/qrcode.svg b/src/assets/icons/qrcode.svg index 59b5d70745..399e07a1e8 100644 --- a/src/assets/icons/qrcode.svg +++ b/src/assets/icons/qrcode.svg @@ -4,7 +4,7 @@ Group Created with Sketch. - + diff --git a/src/assets/icons/trash.svg b/src/assets/icons/trash.svg index 46b95b5941..7abd44bf4b 100644 --- a/src/assets/icons/trash.svg +++ b/src/assets/icons/trash.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/src/components/Header/assets/gnosis-safe-icon.svg b/src/components/Header/assets/gnosis-safe-icon.svg index 7c7d342abf..40a76bea47 100644 --- a/src/components/Header/assets/gnosis-safe-icon.svg +++ b/src/components/Header/assets/gnosis-safe-icon.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/src/components/Header/assets/gnosis-safe-logo.svg b/src/components/Header/assets/gnosis-safe-logo.svg index f125e10682..6e30638374 100644 --- a/src/components/Header/assets/gnosis-safe-logo.svg +++ b/src/components/Header/assets/gnosis-safe-logo.svg @@ -1,22 +1,47 @@ - + + + + Logo / Nav + Created with Sketch. - + + - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - TEAM EDITIO N - - + \ No newline at end of file diff --git a/src/components/Header/assets/key.svg b/src/components/Header/assets/key.svg index a1378604da..9d9cdd6255 100644 --- a/src/components/Header/assets/key.svg +++ b/src/components/Header/assets/key.svg @@ -1,3 +1,3 @@ - + diff --git a/src/components/Header/assets/metamask-icon.svg b/src/components/Header/assets/metamask-icon.svg index 5c45d278f9..fcca15cf67 100644 --- a/src/components/Header/assets/metamask-icon.svg +++ b/src/components/Header/assets/metamask-icon.svg @@ -1,3 +1,3 @@ - + diff --git a/src/components/Header/assets/triangle.svg b/src/components/Header/assets/triangle.svg index 7e06a9aa1a..dd2247c0f9 100644 --- a/src/components/Header/assets/triangle.svg +++ b/src/components/Header/assets/triangle.svg @@ -1,3 +1,3 @@ - + diff --git a/src/components/Header/component/Layout.jsx b/src/components/Header/component/Layout.jsx index cf2c801297..fdbc92d1d9 100644 --- a/src/components/Header/component/Layout.jsx +++ b/src/components/Header/component/Layout.jsx @@ -47,7 +47,7 @@ const styles = () => ({ const Layout = openHoc(({ open, toggle, clickAway, classes, providerInfo, providerDetails, }: Props) => ( - + <> @@ -58,7 +58,7 @@ const Layout = openHoc(({ - {providerRef => ( + {(providerRef) => ( {({ TransitionProps }) => ( @@ -73,7 +73,7 @@ const Layout = openHoc(({ )} - + )) export default withStyles(styles)(Layout) diff --git a/src/components/Header/component/ProviderDetails/UserDetails.jsx b/src/components/Header/component/ProviderDetails/UserDetails.jsx index 19eecc9c7d..13d43c852d 100644 --- a/src/components/Header/component/ProviderDetails/UserDetails.jsx +++ b/src/components/Header/component/ProviderDetails/UserDetails.jsx @@ -109,7 +109,7 @@ const UserDetails = ({ const color = connected ? 'primary' : 'warning' return ( - + <> {connected ? ( @@ -148,8 +148,7 @@ const UserDetails = ({ {provider === 'safe' ? Safe client - : Metamask client - } + : Metamask client} {upperFirst(provider)} @@ -173,7 +172,7 @@ const UserDetails = ({ - + ) } diff --git a/src/components/Header/component/ProviderInfo/ProviderAccesible.jsx b/src/components/Header/component/ProviderInfo/ProviderAccesible.jsx index e8b5a9c921..3be9066148 100644 --- a/src/components/Header/component/ProviderInfo/ProviderAccesible.jsx +++ b/src/components/Header/component/ProviderInfo/ProviderAccesible.jsx @@ -1,9 +1,9 @@ // @flow import * as React from 'react' import { withStyles } from '@material-ui/core/styles' +import Dot from '@material-ui/icons/FiberManualRecord' import Paragraph from '~/components/layout/Paragraph' import Col from '~/components/layout/Col' -import Dot from '@material-ui/icons/FiberManualRecord' import { connected as connectedBg, sm } from '~/theme/variables' import Identicon from '~/components/Identicon' import { shortVersionOf } from '~/logic/wallets/ethAddresses' @@ -53,12 +53,12 @@ const ProviderInfo = ({ const identiconAddress = userAddress || 'random' return ( - + <> {connected && ( - + <> - + )} {!connected && } @@ -69,7 +69,7 @@ const ProviderInfo = ({ {cutAddress} - + ) } diff --git a/src/components/Header/index.jsx b/src/components/Header/index.jsx index 6d4f95b0af..0511119bcb 100644 --- a/src/components/Header/index.jsx +++ b/src/components/Header/index.jsx @@ -5,6 +5,7 @@ import { logComponentStack, type Info } from '~/utils/logBoundaries' import { SharedSnackbarConsumer, type Variant } from '~/components/SharedSnackBar' import { WALLET_ERROR_MSG } from '~/logic/wallets/store/actions' import { getProviderInfo } from '~/logic/wallets/getWeb3' +import type { ProviderProps } from '~/logic/wallets/store/model/provider' import ProviderAccesible from './component/ProviderInfo/ProviderAccesible' import UserDetails from './component/ProviderDetails/UserDetails' import ProviderDisconnected from './component/ProviderInfo/ProviderDisconnected' @@ -23,8 +24,14 @@ type State = { } class HeaderComponent extends React.PureComponent { - state = { - hasError: false, + providerListener: ?IntervalID + + constructor(props) { + super(props) + + this.state = { + hasError: false, + } } componentDidMount() { diff --git a/src/components/SnackbarContent/index.jsx b/src/components/SnackbarContent/index.jsx index 0cfe80126e..7d6a479827 100644 --- a/src/components/SnackbarContent/index.jsx +++ b/src/components/SnackbarContent/index.jsx @@ -10,7 +10,9 @@ import IconButton from '@material-ui/core/IconButton' import { withStyles } from '@material-ui/core/styles' import WarningIcon from '@material-ui/icons/Warning' import { type WithStyles } from '~/theme/mui' -import { secondary, warning, connected } from '~/theme/variables' +import { + secondary, warning, connected, error, +} from '~/theme/variables' type Variant = 'success' | 'error' | 'warning' | 'info' @@ -34,7 +36,7 @@ const variantIcon = { info: InfoIcon, } -const styles = theme => ({ +const styles = (theme) => ({ success: { backgroundColor: '#ffffff', }, @@ -51,7 +53,7 @@ const styles = theme => ({ backgroundColor: '#ffe6ea', }, errorIcon: { - color: '#fd7890', + color: error, }, info: { backgroundColor: '#ffffff', @@ -73,13 +75,7 @@ const styles = theme => ({ }) const Close = ({ classes, onClose }: CloseProps) => ( - + ) diff --git a/src/components/layout/Button/index.jsx b/src/components/layout/Button/index.jsx index 4a47e0492d..1899495406 100644 --- a/src/components/layout/Button/index.jsx +++ b/src/components/layout/Button/index.jsx @@ -5,21 +5,19 @@ import Button from '@material-ui/core/Button' type Props = { minWidth?: number, minHeight?: number, - rounded?: boolean, testId?: string, style?: Object, } -const calculateStyleBased = (minWidth, minHeight, rounded) => ({ +const calculateStyleBased = (minWidth, minHeight) => ({ minWidth: minWidth && `${minWidth}px`, minHeight: minHeight && `${minHeight}px`, - borderRadius: rounded ? '4px' : 0, }) const GnoButton = ({ - minWidth, minHeight = 27, testId = '', rounded, style = {}, ...props + minWidth, minHeight = 27, testId = '', style = {}, ...props }: Props) => { - const calculatedStyle = calculateStyleBased(minWidth, minHeight, rounded) + const calculatedStyle = calculateStyleBased(minWidth, minHeight) return - + ) export default withStyles(styles)(ConnectDetails) diff --git a/src/components/Header/component/ProviderDetails/UserDetails.jsx b/src/components/Header/component/ProviderDetails/UserDetails.jsx index 13d43c852d..912a396e45 100644 --- a/src/components/Header/component/ProviderDetails/UserDetails.jsx +++ b/src/components/Header/component/ProviderDetails/UserDetails.jsx @@ -167,8 +167,8 @@ const UserDetails = ({ diff --git a/src/components/Stepper/Controls/index.jsx b/src/components/Stepper/Controls/index.jsx index b8423f8e8d..0a77d573ef 100644 --- a/src/components/Stepper/Controls/index.jsx +++ b/src/components/Stepper/Controls/index.jsx @@ -8,6 +8,7 @@ import { sm, boldFont } from '~/theme/variables' const controlStyle = { backgroundColor: 'white', padding: sm, + borderRadius: sm, } const firstButtonStyle = { diff --git a/src/components/Stepper/OpenPaper/index.jsx b/src/components/Stepper/OpenPaper/index.jsx index c17302418a..951096af8b 100644 --- a/src/components/Stepper/OpenPaper/index.jsx +++ b/src/components/Stepper/OpenPaper/index.jsx @@ -11,9 +11,6 @@ const styles = () => ({ maxWidth: '870px', boxShadow: '0 0 10px 0 rgba(33,48,77,0.10)', }, - container: { - letterSpacing: '-0.5px', - }, padding: { padding: lg, }, diff --git a/src/components/Stepper/index.jsx b/src/components/Stepper/index.jsx index 2b2bae41c4..d256c24fe2 100644 --- a/src/components/Stepper/index.jsx +++ b/src/components/Stepper/index.jsx @@ -118,7 +118,7 @@ const GnoStepper = (props: Props) => { const penultimate = isLastPage(page + 1) return ( - + <> { {(submitting: boolean, validating: boolean, ...rest: any) => { const disabled = disabledWhenValidating ? submitting || validating : submitting const controls = ( - + <> { lastPage={lastPage} penultimate={penultimate} /> - + ) return ( - {steps.map(label => ( + {steps.map((label) => ( {label} {activePage(controls, ...rest)} @@ -153,7 +153,7 @@ const GnoStepper = (props: Props) => { ) }} - + ) } diff --git a/src/components/layout/Button/index.jsx b/src/components/layout/Button/index.jsx index 1899495406..d2c00343fd 100644 --- a/src/components/layout/Button/index.jsx +++ b/src/components/layout/Button/index.jsx @@ -15,7 +15,7 @@ const calculateStyleBased = (minWidth, minHeight) => ({ }) const GnoButton = ({ - minWidth, minHeight = 27, testId = '', style = {}, ...props + minWidth, minHeight = 35, testId = '', style = {}, ...props }: Props) => { const calculatedStyle = calculateStyleBased(minWidth, minHeight) diff --git a/src/components/layout/Hairline/index.js b/src/components/layout/Hairline/index.js index 223244f00f..44648fe46d 100644 --- a/src/components/layout/Hairline/index.js +++ b/src/components/layout/Hairline/index.js @@ -5,8 +5,8 @@ import { border } from '~/theme/variables' const calculateStyleFrom = (color?: string, margin?: Size) => ({ width: '100%', - minHeight: '1px', - height: '1px', + minHeight: '2px', + height: '2px', backgroundColor: color || border, margin: `${getSize(margin)} 0px`, }) diff --git a/src/components/layout/Heading/index.scss b/src/components/layout/Heading/index.scss index 69c2960ca0..bea0eba64e 100644 --- a/src/components/layout/Heading/index.scss +++ b/src/components/layout/Heading/index.scss @@ -6,15 +6,15 @@ .h1 { line-height: 36px; - font-weight: $bolderFont; - letter-spacing: -1px; + font-weight: $extraBoldFont; + letter-spacing: 1.13px; font-size: $(fontSizeHeadingLg)px; } .h2 { - line-height: 28px; - font-weight: $bolderFont; - letter-spacing: -0.5px; + line-height: 26px; + letter-spacing: normal; + line-height: 1.3; font-size: $(fontSizeHeadingMd)px; } diff --git a/src/components/layout/Paragraph/index.scss b/src/components/layout/Paragraph/index.scss index 2d00bdb2ed..ad7c670930 100644 --- a/src/components/layout/Paragraph/index.scss +++ b/src/components/layout/Paragraph/index.scss @@ -1,6 +1,7 @@ .paragraph { text-overflow: ellipsis; overflow-x: inherit; + line-height: 1.38; } .soft { diff --git a/src/routes/load/components/DetailsForm/index.jsx b/src/routes/load/components/DetailsForm/index.jsx index aabd132056..28caf11e8e 100644 --- a/src/routes/load/components/DetailsForm/index.jsx +++ b/src/routes/load/components/DetailsForm/index.jsx @@ -85,7 +85,7 @@ export const safeFieldsValidation = async (values: Object) => { const Details = ({ classes, errors, form }: Props) => ( <> - + Adding an existing Safe only requires the Safe address. Optionally you can give it a name. In case your connected client is not the owner of the Safe, the interface will essentially provide you a read-only view. diff --git a/src/routes/welcome/components/Layout.jsx b/src/routes/welcome/components/Layout.jsx index b8897be91f..42e44d0cb6 100644 --- a/src/routes/welcome/components/Layout.jsx +++ b/src/routes/welcome/components/Layout.jsx @@ -58,19 +58,19 @@ export const LoadSafe = ({ size, provider }: SafeProps) => ( const Welcome = ({ provider }: Props) => ( - + Welcome to the Gnosis
Safe Team Edition
- - The Gnosis Safe Team Edition is geared towards teams managing + + The Gnosis Safe for Teams is geared towards teams managing shared
- shared crypto funds. It is an improvement of the existing Gnosis + crypto funds. It is an improvement of the existing Gnosis MultiSig
- MultiSig wallet with redesigned smart contracts, cheaper setup and + wallet with redesigned smart contracts, cheaper setup and transaction
- transaction costs as well as an enhanced user experience. + costs as well as an enhanced user experience.
diff --git a/src/theme/mui.js b/src/theme/mui.js index ed61fe38ae..c3843d3432 100644 --- a/src/theme/mui.js +++ b/src/theme/mui.js @@ -8,6 +8,7 @@ import { primary, secondary, error, + sm, md, lg, bolderFont, @@ -54,6 +55,7 @@ export default createMuiTheme({ color: disabled, }, color: disabled, + textTransform: 'none', borderRadius: '8px', }, contained: { @@ -75,7 +77,6 @@ export default createMuiTheme({ padding: `${md} ${lg}`, minHeight: '52px', fontSize: buttonLargeFontSize, - fontWeight: boldFont, }, sizeSmall: { minWidth: '130px', @@ -87,6 +88,11 @@ export default createMuiTheme({ }, }, }, + MuiPaper: { + rounded: { + borderRadius: sm, + }, + }, MuiStepper: { root: { padding: '24px 0 0 15px', diff --git a/src/theme/variables.js b/src/theme/variables.js index ebdc3dc10c..b3813f65b9 100644 --- a/src/theme/variables.js +++ b/src/theme/variables.js @@ -36,18 +36,19 @@ module.exports = { border, marginButtonImg, fontSizeHeadingXs: 13, - fontSizeHeadingSm: 18, - fontSizeHeadingMd: 21, + fontSizeHeadingSm: 16, + fontSizeHeadingMd: 20, fontSizeHeadingLg: 32, - buttonLargeFontSize: '12px', + buttonLargeFontSize: '16px', lightFont: 300, regularFont: 400, bolderFont: 500, boldFont: 700, + extraBoldFont: 800, smallFontSize: '11px', - mediumFontSize: '13px', - largeFontSize: '15px', - extraLargeFontSize: '18px', + mediumFontSize: '12px', + largeFontSize: '16px', + extraLargeFontSize: '20px', xxlFontSize: '32px', screenXs: 480, screenXsMax: 767, From 69da37254eb9f34713cec4feb2953968c4414264 Mon Sep 17 00:00:00 2001 From: Mikhail Mikheev Date: Thu, 29 Aug 2019 18:46:49 +0400 Subject: [PATCH 07/19] update font sizes --- src/components/Stepper/OpenPaper/index.jsx | 2 +- .../load/components/OwnerList/index.jsx | 6 ++-- .../components/ReviewInformation/index.jsx | 32 +++++++++++-------- src/theme/mui.js | 7 ++-- src/theme/variables.js | 5 +-- 5 files changed, 30 insertions(+), 22 deletions(-) diff --git a/src/components/Stepper/OpenPaper/index.jsx b/src/components/Stepper/OpenPaper/index.jsx index 951096af8b..95313f68f6 100644 --- a/src/components/Stepper/OpenPaper/index.jsx +++ b/src/components/Stepper/OpenPaper/index.jsx @@ -35,7 +35,7 @@ const OpenPaper = ({ return ( - + {children} {controls} diff --git a/src/routes/load/components/OwnerList/index.jsx b/src/routes/load/components/OwnerList/index.jsx index e3cc3d690c..f111163c9f 100644 --- a/src/routes/load/components/OwnerList/index.jsx +++ b/src/routes/load/components/OwnerList/index.jsx @@ -14,7 +14,7 @@ import Link from '~/components/layout/Link' import Paragraph from '~/components/layout/Paragraph' import Hairline from '~/components/layout/Hairline' import { - sm, md, lg, border, secondary, + sm, md, lg, border, secondary, disabled, extraSmallFontSize, } from '~/theme/variables' import { getOwnerNameBy, getOwnerAddressBy } from '~/routes/open/components/fields' import { getEtherScanLink } from '~/logic/wallets/getWeb3' @@ -62,6 +62,8 @@ const styles = () => ({ }, header: { padding: `${sm} ${lg}`, + color: disabled, + fontSize: extraSmallFontSize, }, name: { marginRight: `${sm}`, @@ -120,7 +122,7 @@ const OwnerListComponent = (props: Props) => { return ( <> - + {`This Safe has ${owners.length} owners. Optional: Provide a name for each owner.`} diff --git a/src/routes/load/components/ReviewInformation/index.jsx b/src/routes/load/components/ReviewInformation/index.jsx index 2f8732b356..43f1f0331d 100644 --- a/src/routes/load/components/ReviewInformation/index.jsx +++ b/src/routes/load/components/ReviewInformation/index.jsx @@ -106,18 +106,18 @@ class ReviewComponent extends React.PureComponent { const safeAddress = values[FIELD_LOAD_ADDRESS] return ( - + <> - Review details + Review details - Name of the Safe + Name of the Safe {values[FIELD_LOAD_NAME]} @@ -125,7 +125,7 @@ class ReviewComponent extends React.PureComponent { - Safe address + Safe address @@ -139,7 +139,7 @@ class ReviewComponent extends React.PureComponent { - Connected wallet client is owner? + Connected wallet client is owner? {isOwner ? 'Yes' : 'No (read-only)'} @@ -147,7 +147,7 @@ class ReviewComponent extends React.PureComponent { - Any transaction requires the confirmation of: + Any transaction requires the confirmation of: {`${values[THRESHOLD]} out of ${getNumOwnersFrom(values)} owners`} @@ -162,11 +162,11 @@ class ReviewComponent extends React.PureComponent { - {owners.map((x, index) => ( - + {owners.map((address, index) => ( + - + @@ -175,9 +175,13 @@ class ReviewComponent extends React.PureComponent {
- {owners[index]} + {address} - + @@ -189,7 +193,7 @@ class ReviewComponent extends React.PureComponent { ))} - + ) } } @@ -197,11 +201,11 @@ class ReviewComponent extends React.PureComponent { const ReviewPage = withStyles(styles)(ReviewComponent) const Review = ({ network, userAddress }: LayoutProps) => (controls: React.Node, { values }: Object) => ( - + <> - + ) export default Review diff --git a/src/theme/mui.js b/src/theme/mui.js index c3843d3432..3978c2e549 100644 --- a/src/theme/mui.js +++ b/src/theme/mui.js @@ -1,7 +1,6 @@ // @flow import { createMuiTheme } from '@material-ui/core/styles' import { - largeFontSize, mediumFontSize, smallFontSize, disabled, @@ -12,6 +11,7 @@ import { md, lg, bolderFont, + regularFont, boldFont, buttonLargeFontSize, border, @@ -47,6 +47,7 @@ export default createMuiTheme({ MuiButton: { label: { lineHeight: 1, + fontWeight: regularFont, }, root: { fontFamily: 'Averta, monospace', @@ -154,7 +155,7 @@ export default createMuiTheme({ root: { fontFamily: 'Averta, monospace', color: primary, - fontSize: largeFontSize, + fontSize: mediumFontSize, lineHeight: '56px', order: 1, padding: `0 ${md}`, @@ -190,7 +191,7 @@ export default createMuiTheme({ MuiStepLabel: { label: { textAlign: 'left', - color: '#B2B5B2', + color: secondary, '&$active': { color: primary, }, diff --git a/src/theme/variables.js b/src/theme/variables.js index b3813f65b9..da8c3119a6 100644 --- a/src/theme/variables.js +++ b/src/theme/variables.js @@ -45,8 +45,9 @@ module.exports = { bolderFont: 500, boldFont: 700, extraBoldFont: 800, - smallFontSize: '11px', - mediumFontSize: '12px', + extraSmallFontSize: '11px', + smallFontSize: '12px', + mediumFontSize: '14px', largeFontSize: '16px', extraLargeFontSize: '20px', xxlFontSize: '32px', From 35cf521b403dbea454264f223583c9178cf0e954 Mon Sep 17 00:00:00 2001 From: Mikhail Mikheev Date: Fri, 30 Aug 2019 17:50:05 +0400 Subject: [PATCH 08/19] update provider details --- src/components/Header/component/Provider.jsx | 8 ++++---- .../Header/component/ProviderDetails/UserDetails.jsx | 4 ++-- .../Header/component/ProviderInfo/ProviderAccesible.jsx | 6 +++--- src/components/layout/Paragraph/index.jsx | 2 +- src/components/layout/Paragraph/index.scss | 4 ++++ 5 files changed, 14 insertions(+), 10 deletions(-) diff --git a/src/components/Header/component/Provider.jsx b/src/components/Header/component/Provider.jsx index 76fd061fe9..dda09c7627 100644 --- a/src/components/Header/component/Provider.jsx +++ b/src/components/Header/component/Provider.jsx @@ -38,21 +38,21 @@ const styles = () => ({ type ProviderRef = { current: null | HTMLDivElement } class Provider extends React.Component { + myRef: ProviderRef + constructor(props: Props) { super(props) this.myRef = React.createRef() } - myRef: ProviderRef - render() { const { open, toggle, children, classes, info, } = this.props return ( - + <>
{info} @@ -62,7 +62,7 @@ class Provider extends React.Component {
{children(this.myRef)} -
+ ) } } diff --git a/src/components/Header/component/ProviderDetails/UserDetails.jsx b/src/components/Header/component/ProviderDetails/UserDetails.jsx index 912a396e45..1bdd6027e1 100644 --- a/src/components/Header/component/ProviderDetails/UserDetails.jsx +++ b/src/components/Header/component/ProviderDetails/UserDetails.jsx @@ -104,7 +104,7 @@ const UserDetails = ({ provider, connected, network, userAddress, classes, onDisconnect, }: Props) => { const status = connected ? 'Connected' : 'Connection error' - const address = userAddress ? shortVersionOf(userAddress, 6) : 'Address not available' + const address = userAddress ? shortVersionOf(userAddress, 4) : 'Address not available' const identiconAddress = userAddress || 'random' const color = connected ? 'primary' : 'warning' @@ -119,7 +119,7 @@ const UserDetails = ({ )} - + {address} {userAddress && ( diff --git a/src/components/Header/component/ProviderInfo/ProviderAccesible.jsx b/src/components/Header/component/ProviderInfo/ProviderAccesible.jsx index edfac14764..7d0e34d9a9 100644 --- a/src/components/Header/component/ProviderInfo/ProviderAccesible.jsx +++ b/src/components/Header/component/ProviderInfo/ProviderAccesible.jsx @@ -48,7 +48,7 @@ const ProviderInfo = ({ provider, network, userAddress, connected, classes, }: Props) => { const providerText = `${provider} [${network}]` - const cutAddress = connected ? shortVersionOf(userAddress, 6) : 'Connection Error' + const cutAddress = connected ? shortVersionOf(userAddress, 4) : 'Connection Error' const color = connected ? 'primary' : 'warning' const identiconAddress = userAddress || 'random' @@ -62,10 +62,10 @@ const ProviderInfo = ({ )} {!connected && } - + {providerText} - + {cutAddress} diff --git a/src/components/layout/Paragraph/index.jsx b/src/components/layout/Paragraph/index.jsx index af8e958408..f72c869cd4 100644 --- a/src/components/layout/Paragraph/index.jsx +++ b/src/components/layout/Paragraph/index.jsx @@ -10,7 +10,7 @@ type Props = { noMargin?: boolean, noPadding?: boolean, weight?: 'light' | 'regular' | 'bolder' | 'bold', - size?: 'sm' | 'md' | 'lg' | 'xl' | 'xxl', + size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'xxl', color?: 'soft' | 'medium' | 'dark' | 'white' | 'fancy' | 'primary' | 'secondary' | 'warning' | 'disabled' | 'error', transform?: 'capitalize' | 'lowercase' | 'uppercase', children: React.Node, diff --git a/src/components/layout/Paragraph/index.scss b/src/components/layout/Paragraph/index.scss index ad7c670930..a128caa9da 100644 --- a/src/components/layout/Paragraph/index.scss +++ b/src/components/layout/Paragraph/index.scss @@ -72,6 +72,10 @@ text-align: right; } +.xs { + font-size: $extraSmallFontSize; +} + .sm { font-size: $smallFontSize; } From d09b27df8597e10a6120e8914ba03faa2195fc65 Mon Sep 17 00:00:00 2001 From: Mikhail Mikheev Date: Fri, 30 Aug 2019 19:19:05 +0400 Subject: [PATCH 09/19] create safe flow rebranding wip --- src/routes/load/components/ReviewInformation/index.jsx | 2 +- .../SafeOwnersConfirmationsForm/ScanQRModal/index.jsx | 9 +++------ .../SafeOwnersConfirmationsForm/ScanQRModal/style.js | 9 +++------ .../components/SafeOwnersConfirmationsForm/index.jsx | 4 ++-- .../open/components/SafeOwnersConfirmationsForm/style.js | 6 +++++- 5 files changed, 14 insertions(+), 16 deletions(-) diff --git a/src/routes/load/components/ReviewInformation/index.jsx b/src/routes/load/components/ReviewInformation/index.jsx index 43f1f0331d..940586a36d 100644 --- a/src/routes/load/components/ReviewInformation/index.jsx +++ b/src/routes/load/components/ReviewInformation/index.jsx @@ -188,7 +188,7 @@ class ReviewComponent extends React.PureComponent { - + {index !== owners.length - 1 && } ))} diff --git a/src/routes/open/components/SafeOwnersConfirmationsForm/ScanQRModal/index.jsx b/src/routes/open/components/SafeOwnersConfirmationsForm/ScanQRModal/index.jsx index 80405529fe..65b9ef9928 100644 --- a/src/routes/open/components/SafeOwnersConfirmationsForm/ScanQRModal/index.jsx +++ b/src/routes/open/components/SafeOwnersConfirmationsForm/ScanQRModal/index.jsx @@ -56,7 +56,7 @@ const ScanQRModal = ({ return ( - + Scan QR @@ -88,18 +88,15 @@ const ScanQRModal = ({ diff --git a/src/routes/open/components/SafeOwnersConfirmationsForm/style.js b/src/routes/open/components/SafeOwnersConfirmationsForm/style.js index 600a4b7261..8b6eb94b13 100644 --- a/src/routes/open/components/SafeOwnersConfirmationsForm/style.js +++ b/src/routes/open/components/SafeOwnersConfirmationsForm/style.js @@ -1,5 +1,7 @@ // @flow -import { md, lg, sm } from '~/theme/variables' +import { + md, lg, sm, disabled, extraSmallFontSize, +} from '~/theme/variables' export const styles = () => ({ root: { @@ -17,6 +19,8 @@ export const styles = () => ({ }, header: { padding: `${sm} ${lg}`, + fontSize: extraSmallFontSize, + color: disabled, }, name: { marginRight: `${sm}`, From de16921f60308b57092bf6675d3abbb688ca42dd Mon Sep 17 00:00:00 2001 From: Mikhail Mikheev Date: Fri, 30 Aug 2019 19:32:58 +0400 Subject: [PATCH 10/19] safe page rebranding wip --- src/components/layout/ButtonLink/index.scss | 1 + .../SafeOwnersConfirmationsForm/ScanQRModal/style.js | 5 ++++- src/routes/opening/component/index.jsx | 6 +----- src/theme/variables.js | 2 ++ 4 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/components/layout/ButtonLink/index.scss b/src/components/layout/ButtonLink/index.scss index 3d3061f889..e591f46fc3 100644 --- a/src/components/layout/ButtonLink/index.scss +++ b/src/components/layout/ButtonLink/index.scss @@ -3,6 +3,7 @@ border: none; text-decoration: underline; cursor: pointer; + font-family: inherit; } .sm { diff --git a/src/routes/open/components/SafeOwnersConfirmationsForm/ScanQRModal/style.js b/src/routes/open/components/SafeOwnersConfirmationsForm/ScanQRModal/style.js index 3d2c3c2500..02220c30a7 100644 --- a/src/routes/open/components/SafeOwnersConfirmationsForm/ScanQRModal/style.js +++ b/src/routes/open/components/SafeOwnersConfirmationsForm/ScanQRModal/style.js @@ -1,5 +1,7 @@ // @flow -import { lg, sm, background } from '~/theme/variables' +import { + lg, sm, background, secondaryText, +} from '~/theme/variables' export const styles = () => ({ heading: { @@ -15,6 +17,7 @@ export const styles = () => ({ close: { height: '25px', width: '25px', + color: secondaryText, }, detailsContainer: { backgroundColor: background, diff --git a/src/routes/opening/component/index.jsx b/src/routes/opening/component/index.jsx index 39bb4d348e..d200d02e93 100644 --- a/src/routes/opening/component/index.jsx +++ b/src/routes/opening/component/index.jsx @@ -20,9 +20,6 @@ type Props = SelectorProps & { const vault = require('../assets/vault.svg') const styles = { - page: { - letterSpacing: '-1px', - }, icon: { height: mediumFontSize, color: secondary, @@ -38,7 +35,6 @@ const styles = { display: 'flex', alignItems: 'center', marginLeft: xs, - fontWeight: 'bolder', }, } @@ -46,7 +42,7 @@ const Opening = ({ classes, name = 'Safe creation process', tx, network, }: Props) => ( - + {name} diff --git a/src/theme/variables.js b/src/theme/variables.js index da8c3119a6..e7143318d8 100644 --- a/src/theme/variables.js +++ b/src/theme/variables.js @@ -7,6 +7,7 @@ const fontColor = '#001428' const fancyColor = '#f02525' const warningColor = '#ffc05f' const errorColor = '#f02525' +const secondaryTextOrSvg = '#B2B5B2' const connectedColor = '#008C73' const disabled = '#5D6D74' const xs = '4px' @@ -23,6 +24,7 @@ module.exports = { disabled, background, fontColor, + secondaryText: secondaryTextOrSvg, fancy: fancyColor, warning: warningColor, error: errorColor, From 79ddcc718ea1df77ab638759a9f6c079b1b17294 Mon Sep 17 00:00:00 2001 From: Mikhail Mikheev Date: Mon, 2 Sep 2019 13:54:23 +0400 Subject: [PATCH 11/19] Fix Tab component styles to match mockups --- package.json | 10 +-- src/routes/safe/components/Layout.jsx | 6 +- src/theme/mui.js | 7 +- yarn.lock | 103 ++++++++++++++++++-------- 4 files changed, 88 insertions(+), 38 deletions(-) diff --git a/package.json b/package.json index c8687e5adb..a8030ba679 100644 --- a/package.json +++ b/package.json @@ -31,7 +31,7 @@ "dependencies": { "@gnosis.pm/safe-contracts": "^1.0.0", "@gnosis.pm/util-contracts": "2.0.1", - "@material-ui/core": "4.3.3", + "@material-ui/core": "4.4.0", "@material-ui/icons": "4.2.1", "@testing-library/jest-dom": "4.1.0", "@welldone-software/why-did-you-render": "3.3.3", @@ -109,13 +109,13 @@ "eslint-config-airbnb": "18.0.1", "eslint-plugin-flowtype": "4.2.0", "eslint-plugin-import": "2.18.2", - "eslint-plugin-jest": "22.15.2", + "eslint-plugin-jest": "22.16.0", "eslint-plugin-jsx-a11y": "6.2.3", "eslint-plugin-react": "7.14.3", "ethereumjs-abi": "0.6.8", "extract-text-webpack-plugin": "^4.0.0-beta.0", "file-loader": "4.2.0", - "flow-bin": "0.106.2", + "flow-bin": "0.106.3", "fs-extra": "8.1.0", "html-loader": "^0.5.5", "html-webpack-plugin": "^3.0.4", @@ -132,8 +132,8 @@ "storybook-host": "5.1.0", "storybook-router": "^0.3.3", "style-loader": "1.0.0", - "truffle": "5.0.33", - "truffle-contract": "4.0.30", + "truffle": "5.0.34", + "truffle-contract": "4.0.31", "truffle-solidity-loader": "0.1.32", "uglifyjs-webpack-plugin": "2.2.0", "url-loader": "^2.1.0", diff --git a/src/routes/safe/components/Layout.jsx b/src/routes/safe/components/Layout.jsx index 781eb4f0f7..506711dfdc 100644 --- a/src/routes/safe/components/Layout.jsx +++ b/src/routes/safe/components/Layout.jsx @@ -15,7 +15,7 @@ import NoSafe from '~/components/NoSafe' import { type SelectorProps } from '~/routes/safe/container/selector' import { getEtherScanLink } from '~/logic/wallets/getWeb3' import { - sm, xs, secondary, smallFontSize, + sm, xs, secondary, smallFontSize, border, } from '~/theme/variables' import { copyToClipboard } from '~/utils/clipboard' import Balances from './Balances' @@ -130,7 +130,7 @@ class Layout extends React.Component { - + {name} {!granted && Read Only} @@ -152,7 +152,7 @@ class Layout extends React.Component { - + {tabIndex === 0 && ( Date: Mon, 2 Sep 2019 14:59:27 +0400 Subject: [PATCH 12/19] safe page rebranding wip --- src/components/Table/index.jsx | 6 ++++-- .../components/Balances/AssetTableCell/index.jsx | 2 +- src/theme/mui.js | 13 ++++++++++--- 3 files changed, 15 insertions(+), 6 deletions(-) diff --git a/src/components/Table/index.jsx b/src/components/Table/index.jsx index 487c2ede91..d86ddd714a 100644 --- a/src/components/Table/index.jsx +++ b/src/components/Table/index.jsx @@ -37,7 +37,8 @@ type State = { const styles = { root: { backgroundColor: 'white', - boxShadow: '0 -1px 4px 0 rgba(74, 85, 121, 0.5)', + borderRadius: '8px', + boxShadow: '1px 2px 10px 0 rgba(212, 212, 211, 0.59)', }, selectRoot: { lineHeight: '40px', @@ -48,8 +49,9 @@ const styles = { }, paginationRoot: { backgroundColor: 'white', - boxShadow: '0 2px 4px 0 rgba(74, 85, 121, 0.5)', + boxShadow: '1px 2px 10px 0 rgba(212, 212, 211, 0.59)', marginBottom: xl, + borderRadius: '8px', }, loader: { alignItems: 'center', diff --git a/src/routes/safe/components/Balances/AssetTableCell/index.jsx b/src/routes/safe/components/Balances/AssetTableCell/index.jsx index 905d7ad418..d9dfbffbb2 100644 --- a/src/routes/safe/components/Balances/AssetTableCell/index.jsx +++ b/src/routes/safe/components/Balances/AssetTableCell/index.jsx @@ -18,7 +18,7 @@ const AssetTableCell = (props: Props) => { return ( {asset.name} - {asset.name} + {asset.name} ) } diff --git a/src/theme/mui.js b/src/theme/mui.js index d44b8791ec..bcd6e40923 100644 --- a/src/theme/mui.js +++ b/src/theme/mui.js @@ -215,7 +215,7 @@ export default createMuiTheme({ }, '@media (min-width: 960px)': { fontSize: extraSmallFontSize, // override material-ui media query - } + }, }, }, MuiTablePagination: { @@ -230,7 +230,7 @@ export default createMuiTheme({ }, caption: { fontFamily: 'Averta, monospace', - letterSpacing: '-0.5px', + fontSize: mediumFontSize, order: 3, color: disabled, }, @@ -244,9 +244,16 @@ export default createMuiTheme({ color: disabled, }, }, + MuiTableSortLabel: { + root: { + fontSize: extraSmallFontSize, + }, + }, MuiTableCell: { root: { fontFamily: 'Averta, monospace', + fontSize: mediumFontSize, + borderBottomWidth: '2px', }, head: { letterSpacing: '1px', @@ -255,7 +262,7 @@ export default createMuiTheme({ }, body: { color: primary, - letterSpacing: '-0.5px', + letterSpacing: 'normal', fontWeight: 'normal', paddingTop: xs, paddingBottom: xs, From 4294d1f7cd45ccaa6ca3db0077780bd5aa4579cb Mon Sep 17 00:00:00 2001 From: Mikhail Mikheev Date: Mon, 2 Sep 2019 16:54:04 +0400 Subject: [PATCH 13/19] fix border radius in balances table --- src/components/Table/index.jsx | 37 ++++++++++++++++++++++++---------- 1 file changed, 26 insertions(+), 11 deletions(-) diff --git a/src/components/Table/index.jsx b/src/components/Table/index.jsx index d86ddd714a..e3c49fa0a3 100644 --- a/src/components/Table/index.jsx +++ b/src/components/Table/index.jsx @@ -27,7 +27,7 @@ type Props = { type State = { page: number, - order: Order, + order?: Order, orderBy?: string, orderProp: boolean, rowsPerPage: number, @@ -52,6 +52,8 @@ const styles = { boxShadow: '1px 2px 10px 0 rgba(212, 212, 211, 0.59)', marginBottom: xl, borderRadius: '8px', + borderTopLeftRadius: 0, + borderTopRightRadius: 0, }, loader: { alignItems: 'center', @@ -71,13 +73,17 @@ const nextProps = { } class GnoTable extends React.Component, State> { - state = { - page: 0, - order: undefined, - orderBy: undefined, - fixed: undefined, - orderProp: false, - rowsPerPage: 5, + constructor(props) { + super(props) + + this.state = { + page: 0, + order: undefined, + orderBy: undefined, + fixed: undefined, + orderProp: false, + rowsPerPage: 5, + } } componentDidMount() { @@ -130,7 +136,16 @@ class GnoTable extends React.Component, State> { render() { const { - data, label, columns, classes, children, size, defaultOrderBy, defaultOrder, defaultFixed, noBorder, + data, + label, + columns, + classes, + children, + size, + defaultOrderBy, + defaultOrder, + defaultFixed, + noBorder, } = this.props const { order, orderBy, page, orderProp, rowsPerPage, fixed, @@ -154,7 +169,7 @@ class GnoTable extends React.Component, State> { const isEmpty = size === 0 return ( - + <> {!isEmpty && ( @@ -181,7 +196,7 @@ class GnoTable extends React.Component, State> { onChangeRowsPerPage={this.handleChangeRowsPerPage} classes={paginationClasses} /> - + ) } } From fa5dee699776b58bc1d6c5d0af387935ee15cb01 Mon Sep 17 00:00:00 2001 From: Mikhail Mikheev Date: Mon, 2 Sep 2019 17:30:12 +0400 Subject: [PATCH 14/19] Extract color #B2B5B2 to a variable secondaryText --- .../components/Balances/SendModal/screens/ReviewTx/style.js | 4 ++-- .../components/Balances/SendModal/screens/SendFunds/style.js | 4 ++-- .../components/Balances/Tokens/screens/TokenList/style.js | 4 ++-- src/routes/safe/components/Layout.jsx | 4 ++-- .../ManageOwners/AddOwnerModal/screens/OwnerForm/style.js | 4 ++-- .../ManageOwners/AddOwnerModal/screens/Review/style.js | 4 ++-- .../AddOwnerModal/screens/ThresholdForm/style.js | 4 ++-- .../RemoveOwnerModal/screens/CheckOwner/style.js | 4 ++-- .../ManageOwners/RemoveOwnerModal/screens/Review/style.js | 4 ++-- .../RemoveOwnerModal/screens/ThresholdForm/style.js | 4 ++-- .../ReplaceOwnerModal/screens/OwnerForm/style.js | 4 ++-- .../ManageOwners/ReplaceOwnerModal/screens/Review/style.js | 4 ++-- .../Settings/ThresholdSettings/ChangeThreshold/style.js | 4 ++-- .../safe/components/Settings/ThresholdSettings/style.js | 4 ++-- src/theme/mui.js | 5 +++-- 15 files changed, 31 insertions(+), 30 deletions(-) diff --git a/src/routes/safe/components/Balances/SendModal/screens/ReviewTx/style.js b/src/routes/safe/components/Balances/SendModal/screens/ReviewTx/style.js index 2fc048e375..c2b97da546 100644 --- a/src/routes/safe/components/Balances/SendModal/screens/ReviewTx/style.js +++ b/src/routes/safe/components/Balances/SendModal/screens/ReviewTx/style.js @@ -1,5 +1,5 @@ // @flow -import { lg, md, sm } from '~/theme/variables' +import { lg, md, sm, secondaryText } from '~/theme/variables' export const styles = () => ({ heading: { @@ -10,7 +10,7 @@ export const styles = () => ({ }, annotation: { letterSpacing: '-1px', - color: '#B2B5B2', + color: secondaryText, marginRight: 'auto', marginLeft: '20px', }, diff --git a/src/routes/safe/components/Balances/SendModal/screens/SendFunds/style.js b/src/routes/safe/components/Balances/SendModal/screens/SendFunds/style.js index a3f6a564e2..a98c60bfe5 100644 --- a/src/routes/safe/components/Balances/SendModal/screens/SendFunds/style.js +++ b/src/routes/safe/components/Balances/SendModal/screens/SendFunds/style.js @@ -1,5 +1,5 @@ // @flow -import { lg, md, sm } from '~/theme/variables' +import { lg, md, sm, secondaryText } from '~/theme/variables' export const styles = () => ({ heading: { @@ -10,7 +10,7 @@ export const styles = () => ({ }, annotation: { letterSpacing: '-1px', - color: '#B2B5B2', + color: secondaryText, marginRight: 'auto', marginLeft: '20px', }, diff --git a/src/routes/safe/components/Balances/Tokens/screens/TokenList/style.js b/src/routes/safe/components/Balances/Tokens/screens/TokenList/style.js index 650285a332..fbb88d69cc 100644 --- a/src/routes/safe/components/Balances/Tokens/screens/TokenList/style.js +++ b/src/routes/safe/components/Balances/Tokens/screens/TokenList/style.js @@ -1,6 +1,6 @@ // @flow import { - md, sm, xs, mediumFontSize, border, + md, sm, xs, mediumFontSize, border, secondaryText, } from '~/theme/variables' export const styles = () => ({ @@ -8,7 +8,7 @@ export const styles = () => ({ minHeight: '48px', }, search: { - color: '#B2B5B2', + color: secondaryText, paddingLeft: sm, }, padding: { diff --git a/src/routes/safe/components/Layout.jsx b/src/routes/safe/components/Layout.jsx index 506711dfdc..52be6e159e 100644 --- a/src/routes/safe/components/Layout.jsx +++ b/src/routes/safe/components/Layout.jsx @@ -15,7 +15,7 @@ import NoSafe from '~/components/NoSafe' import { type SelectorProps } from '~/routes/safe/container/selector' import { getEtherScanLink } from '~/logic/wallets/getWeb3' import { - sm, xs, secondary, smallFontSize, border, + sm, xs, secondary, smallFontSize, border, secondaryText, } from '~/theme/variables' import { copyToClipboard } from '~/utils/clipboard' import Balances from './Balances' @@ -70,7 +70,7 @@ const styles = () => ({ fontSize: smallFontSize, letterSpacing: '0.5px', color: '#ffffff', - backgroundColor: '#B2B5B2', + backgroundColor: secondaryText, textTransform: 'uppercase', padding: `0 ${sm}`, marginLeft: sm, diff --git a/src/routes/safe/components/Settings/ManageOwners/AddOwnerModal/screens/OwnerForm/style.js b/src/routes/safe/components/Settings/ManageOwners/AddOwnerModal/screens/OwnerForm/style.js index 758ac36676..943d525f65 100644 --- a/src/routes/safe/components/Settings/ManageOwners/AddOwnerModal/screens/OwnerForm/style.js +++ b/src/routes/safe/components/Settings/ManageOwners/AddOwnerModal/screens/OwnerForm/style.js @@ -1,5 +1,5 @@ // @flow -import { lg, md, sm } from '~/theme/variables' +import { lg, md, sm, secondaryText, } from '~/theme/variables' export const styles = () => ({ heading: { @@ -10,7 +10,7 @@ export const styles = () => ({ }, annotation: { letterSpacing: '-1px', - color: '#B2B5B2', + color: secondaryText, marginRight: 'auto', marginLeft: '20px', }, diff --git a/src/routes/safe/components/Settings/ManageOwners/AddOwnerModal/screens/Review/style.js b/src/routes/safe/components/Settings/ManageOwners/AddOwnerModal/screens/Review/style.js index c348f25e3a..dbb876b1b3 100644 --- a/src/routes/safe/components/Settings/ManageOwners/AddOwnerModal/screens/Review/style.js +++ b/src/routes/safe/components/Settings/ManageOwners/AddOwnerModal/screens/Review/style.js @@ -1,6 +1,6 @@ // @flow import { - lg, sm, border, background, + lg, sm, border, background, secondaryText, } from '~/theme/variables' export const styles = () => ({ @@ -15,7 +15,7 @@ export const styles = () => ({ }, annotation: { letterSpacing: '-1px', - color: '#B2B5B2', + color: secondaryText, marginRight: 'auto', marginLeft: '20px', }, diff --git a/src/routes/safe/components/Settings/ManageOwners/AddOwnerModal/screens/ThresholdForm/style.js b/src/routes/safe/components/Settings/ManageOwners/AddOwnerModal/screens/ThresholdForm/style.js index fbd7bf0e41..34d100b35f 100644 --- a/src/routes/safe/components/Settings/ManageOwners/AddOwnerModal/screens/ThresholdForm/style.js +++ b/src/routes/safe/components/Settings/ManageOwners/AddOwnerModal/screens/ThresholdForm/style.js @@ -1,5 +1,5 @@ // @flow -import { lg, md, sm } from '~/theme/variables' +import { lg, md, sm, secondaryText } from '~/theme/variables' export const styles = () => ({ heading: { @@ -10,7 +10,7 @@ export const styles = () => ({ }, annotation: { letterSpacing: '-1px', - color: '#B2B5B2', + color: secondaryText, marginRight: 'auto', marginLeft: '20px', }, diff --git a/src/routes/safe/components/Settings/ManageOwners/RemoveOwnerModal/screens/CheckOwner/style.js b/src/routes/safe/components/Settings/ManageOwners/RemoveOwnerModal/screens/CheckOwner/style.js index 9d4c26e7ca..054834fb93 100644 --- a/src/routes/safe/components/Settings/ManageOwners/RemoveOwnerModal/screens/CheckOwner/style.js +++ b/src/routes/safe/components/Settings/ManageOwners/RemoveOwnerModal/screens/CheckOwner/style.js @@ -1,5 +1,5 @@ // @flow -import { lg, md, sm } from '~/theme/variables' +import { lg, md, sm, secondaryText } from '~/theme/variables' export const styles = () => ({ heading: { @@ -10,7 +10,7 @@ export const styles = () => ({ }, annotation: { letterSpacing: '-1px', - color: '#B2B5B2', + color: secondaryText, marginRight: 'auto', marginLeft: '20px', }, diff --git a/src/routes/safe/components/Settings/ManageOwners/RemoveOwnerModal/screens/Review/style.js b/src/routes/safe/components/Settings/ManageOwners/RemoveOwnerModal/screens/Review/style.js index d0f3b8813a..01518ffd0a 100644 --- a/src/routes/safe/components/Settings/ManageOwners/RemoveOwnerModal/screens/Review/style.js +++ b/src/routes/safe/components/Settings/ManageOwners/RemoveOwnerModal/screens/Review/style.js @@ -1,6 +1,6 @@ // @flow import { - lg, sm, border, background, + lg, sm, border, background, secondaryText, } from '~/theme/variables' export const styles = () => ({ @@ -15,7 +15,7 @@ export const styles = () => ({ }, annotation: { letterSpacing: '-1px', - color: '#B2B5B2', + color: secondaryText, marginRight: 'auto', marginLeft: '20px', }, diff --git a/src/routes/safe/components/Settings/ManageOwners/RemoveOwnerModal/screens/ThresholdForm/style.js b/src/routes/safe/components/Settings/ManageOwners/RemoveOwnerModal/screens/ThresholdForm/style.js index fbd7bf0e41..b43547e5e0 100644 --- a/src/routes/safe/components/Settings/ManageOwners/RemoveOwnerModal/screens/ThresholdForm/style.js +++ b/src/routes/safe/components/Settings/ManageOwners/RemoveOwnerModal/screens/ThresholdForm/style.js @@ -1,5 +1,5 @@ // @flow -import { lg, md, sm } from '~/theme/variables' +import { lg, md, sm, secondaryText, } from '~/theme/variables' export const styles = () => ({ heading: { @@ -10,7 +10,7 @@ export const styles = () => ({ }, annotation: { letterSpacing: '-1px', - color: '#B2B5B2', + color: secondaryText, marginRight: 'auto', marginLeft: '20px', }, diff --git a/src/routes/safe/components/Settings/ManageOwners/ReplaceOwnerModal/screens/OwnerForm/style.js b/src/routes/safe/components/Settings/ManageOwners/ReplaceOwnerModal/screens/OwnerForm/style.js index 9c81ed7374..0c1145bab0 100644 --- a/src/routes/safe/components/Settings/ManageOwners/ReplaceOwnerModal/screens/OwnerForm/style.js +++ b/src/routes/safe/components/Settings/ManageOwners/ReplaceOwnerModal/screens/OwnerForm/style.js @@ -1,5 +1,5 @@ // @flow -import { lg, md, sm } from '~/theme/variables' +import { lg, md, sm, secondaryText } from '~/theme/variables' export const styles = () => ({ heading: { @@ -10,7 +10,7 @@ export const styles = () => ({ }, annotation: { letterSpacing: '-1px', - color: '#B2B5B2', + color: secondaryText, marginRight: 'auto', marginLeft: '20px', }, diff --git a/src/routes/safe/components/Settings/ManageOwners/ReplaceOwnerModal/screens/Review/style.js b/src/routes/safe/components/Settings/ManageOwners/ReplaceOwnerModal/screens/Review/style.js index 2c734470e1..043d7727d0 100644 --- a/src/routes/safe/components/Settings/ManageOwners/ReplaceOwnerModal/screens/Review/style.js +++ b/src/routes/safe/components/Settings/ManageOwners/ReplaceOwnerModal/screens/Review/style.js @@ -1,6 +1,6 @@ // @flow import { - lg, sm, border, background, + lg, sm, border, background, secondaryText, } from '~/theme/variables' export const styles = () => ({ @@ -15,7 +15,7 @@ export const styles = () => ({ }, annotation: { letterSpacing: '-1px', - color: '#B2B5B2', + color: secondaryText, marginRight: 'auto', marginLeft: '20px', }, diff --git a/src/routes/safe/components/Settings/ThresholdSettings/ChangeThreshold/style.js b/src/routes/safe/components/Settings/ThresholdSettings/ChangeThreshold/style.js index 9d791db7ea..05465fc7a4 100644 --- a/src/routes/safe/components/Settings/ThresholdSettings/ChangeThreshold/style.js +++ b/src/routes/safe/components/Settings/ThresholdSettings/ChangeThreshold/style.js @@ -1,5 +1,5 @@ // @flow -import { lg, md, sm } from '~/theme/variables' +import { lg, md, sm, secondaryText } from '~/theme/variables' export const styles = () => ({ heading: { @@ -10,7 +10,7 @@ export const styles = () => ({ }, annotation: { letterSpacing: '-1px', - color: '#B2B5B2', + color: secondaryText, marginRight: 'auto', marginLeft: '20px', }, diff --git a/src/routes/safe/components/Settings/ThresholdSettings/style.js b/src/routes/safe/components/Settings/ThresholdSettings/style.js index 46d5e1aeb6..9f3daf311d 100644 --- a/src/routes/safe/components/Settings/ThresholdSettings/style.js +++ b/src/routes/safe/components/Settings/ThresholdSettings/style.js @@ -1,12 +1,12 @@ // @flow import { - fontColor, lg, smallFontSize, md, border, + fontColor, lg, smallFontSize, md, border, secondaryText, } from '~/theme/variables' export const styles = () => ({ ownersText: { fontSize: '26px', - color: '#B2B5B2', + color: secondaryText, '& b': { color: fontColor, }, diff --git a/src/theme/mui.js b/src/theme/mui.js index bcd6e40923..c78b3012ce 100644 --- a/src/theme/mui.js +++ b/src/theme/mui.js @@ -17,6 +17,7 @@ import { buttonLargeFontSize, border, xs, + secondaryText, } from './variables' export type WithStyles = { @@ -113,7 +114,7 @@ export default createMuiTheme({ MuiStepIcon: { root: { fontSize: '22px', - color: '#B2B5B2 !important', + color: `${secondaryText} !important`, }, completed: { color: `${secondary} !important`, @@ -125,7 +126,7 @@ export default createMuiTheme({ }, MuiStepContent: { root: { - borderLeft: '1px solid #B2B5B2', + borderLeft: `1px solid ${secondaryText}`, }, }, MuiTypography: { From 9e4cdb4bf8957bf06d1a852b136562817d461455 Mon Sep 17 00:00:00 2001 From: Mikhail Mikheev Date: Mon, 2 Sep 2019 17:30:31 +0400 Subject: [PATCH 15/19] eslint stuff --- .../components/Balances/SendModal/screens/ReviewTx/style.js | 4 +++- .../components/Balances/SendModal/screens/SendFunds/style.js | 4 +++- .../ManageOwners/AddOwnerModal/screens/OwnerForm/style.js | 4 +++- .../ManageOwners/AddOwnerModal/screens/ThresholdForm/style.js | 4 +++- .../ManageOwners/RemoveOwnerModal/screens/CheckOwner/style.js | 4 +++- .../RemoveOwnerModal/screens/ThresholdForm/style.js | 4 +++- .../ManageOwners/ReplaceOwnerModal/screens/OwnerForm/style.js | 4 +++- .../Settings/ThresholdSettings/ChangeThreshold/style.js | 4 +++- 8 files changed, 24 insertions(+), 8 deletions(-) diff --git a/src/routes/safe/components/Balances/SendModal/screens/ReviewTx/style.js b/src/routes/safe/components/Balances/SendModal/screens/ReviewTx/style.js index c2b97da546..94c10bc81c 100644 --- a/src/routes/safe/components/Balances/SendModal/screens/ReviewTx/style.js +++ b/src/routes/safe/components/Balances/SendModal/screens/ReviewTx/style.js @@ -1,5 +1,7 @@ // @flow -import { lg, md, sm, secondaryText } from '~/theme/variables' +import { + lg, md, sm, secondaryText, +} from '~/theme/variables' export const styles = () => ({ heading: { diff --git a/src/routes/safe/components/Balances/SendModal/screens/SendFunds/style.js b/src/routes/safe/components/Balances/SendModal/screens/SendFunds/style.js index a98c60bfe5..e1d9ef62cd 100644 --- a/src/routes/safe/components/Balances/SendModal/screens/SendFunds/style.js +++ b/src/routes/safe/components/Balances/SendModal/screens/SendFunds/style.js @@ -1,5 +1,7 @@ // @flow -import { lg, md, sm, secondaryText } from '~/theme/variables' +import { + lg, md, sm, secondaryText, +} from '~/theme/variables' export const styles = () => ({ heading: { diff --git a/src/routes/safe/components/Settings/ManageOwners/AddOwnerModal/screens/OwnerForm/style.js b/src/routes/safe/components/Settings/ManageOwners/AddOwnerModal/screens/OwnerForm/style.js index 943d525f65..26b7a097c5 100644 --- a/src/routes/safe/components/Settings/ManageOwners/AddOwnerModal/screens/OwnerForm/style.js +++ b/src/routes/safe/components/Settings/ManageOwners/AddOwnerModal/screens/OwnerForm/style.js @@ -1,5 +1,7 @@ // @flow -import { lg, md, sm, secondaryText, } from '~/theme/variables' +import { + lg, md, sm, secondaryText, +} from '~/theme/variables' export const styles = () => ({ heading: { diff --git a/src/routes/safe/components/Settings/ManageOwners/AddOwnerModal/screens/ThresholdForm/style.js b/src/routes/safe/components/Settings/ManageOwners/AddOwnerModal/screens/ThresholdForm/style.js index 34d100b35f..68cbadd6a1 100644 --- a/src/routes/safe/components/Settings/ManageOwners/AddOwnerModal/screens/ThresholdForm/style.js +++ b/src/routes/safe/components/Settings/ManageOwners/AddOwnerModal/screens/ThresholdForm/style.js @@ -1,5 +1,7 @@ // @flow -import { lg, md, sm, secondaryText } from '~/theme/variables' +import { + lg, md, sm, secondaryText, +} from '~/theme/variables' export const styles = () => ({ heading: { diff --git a/src/routes/safe/components/Settings/ManageOwners/RemoveOwnerModal/screens/CheckOwner/style.js b/src/routes/safe/components/Settings/ManageOwners/RemoveOwnerModal/screens/CheckOwner/style.js index 054834fb93..f142aecbf5 100644 --- a/src/routes/safe/components/Settings/ManageOwners/RemoveOwnerModal/screens/CheckOwner/style.js +++ b/src/routes/safe/components/Settings/ManageOwners/RemoveOwnerModal/screens/CheckOwner/style.js @@ -1,5 +1,7 @@ // @flow -import { lg, md, sm, secondaryText } from '~/theme/variables' +import { + lg, md, sm, secondaryText, +} from '~/theme/variables' export const styles = () => ({ heading: { diff --git a/src/routes/safe/components/Settings/ManageOwners/RemoveOwnerModal/screens/ThresholdForm/style.js b/src/routes/safe/components/Settings/ManageOwners/RemoveOwnerModal/screens/ThresholdForm/style.js index b43547e5e0..68cbadd6a1 100644 --- a/src/routes/safe/components/Settings/ManageOwners/RemoveOwnerModal/screens/ThresholdForm/style.js +++ b/src/routes/safe/components/Settings/ManageOwners/RemoveOwnerModal/screens/ThresholdForm/style.js @@ -1,5 +1,7 @@ // @flow -import { lg, md, sm, secondaryText, } from '~/theme/variables' +import { + lg, md, sm, secondaryText, +} from '~/theme/variables' export const styles = () => ({ heading: { diff --git a/src/routes/safe/components/Settings/ManageOwners/ReplaceOwnerModal/screens/OwnerForm/style.js b/src/routes/safe/components/Settings/ManageOwners/ReplaceOwnerModal/screens/OwnerForm/style.js index 0c1145bab0..9cd32317ff 100644 --- a/src/routes/safe/components/Settings/ManageOwners/ReplaceOwnerModal/screens/OwnerForm/style.js +++ b/src/routes/safe/components/Settings/ManageOwners/ReplaceOwnerModal/screens/OwnerForm/style.js @@ -1,5 +1,7 @@ // @flow -import { lg, md, sm, secondaryText } from '~/theme/variables' +import { + lg, md, sm, secondaryText, +} from '~/theme/variables' export const styles = () => ({ heading: { diff --git a/src/routes/safe/components/Settings/ThresholdSettings/ChangeThreshold/style.js b/src/routes/safe/components/Settings/ThresholdSettings/ChangeThreshold/style.js index 05465fc7a4..06e7859e53 100644 --- a/src/routes/safe/components/Settings/ThresholdSettings/ChangeThreshold/style.js +++ b/src/routes/safe/components/Settings/ThresholdSettings/ChangeThreshold/style.js @@ -1,5 +1,7 @@ // @flow -import { lg, md, sm, secondaryText } from '~/theme/variables' +import { + lg, md, sm, secondaryText, +} from '~/theme/variables' export const styles = () => ({ heading: { From 56c229a2bf864e33c701dfbd34db9f17dad397b7 Mon Sep 17 00:00:00 2001 From: Mikhail Mikheev Date: Thu, 5 Sep 2019 17:39:44 +0400 Subject: [PATCH 16/19] update favicon --- public/favicon.ico | Bin 101704 -> 110088 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/public/favicon.ico b/public/favicon.ico index 7b9d1cd161e0922f6aee098ae5e46c10f2960e40..85cacafc911b21d9ef58729cdd752dac828a38f4 100644 GIT binary patch literal 110088 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 literal 101704 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 K@;kL Date: Thu, 5 Sep 2019 17:56:57 +0400 Subject: [PATCH 17/19] change website title --- public/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/index.html b/public/index.html index 46daa15c98..a1a78b9ade 100644 --- a/public/index.html +++ b/public/index.html @@ -5,7 +5,7 @@ - Multisig Safe + Gnosis Safe For Teams
From 962da97ad02fcbb4ba375997e2e4bf73af98c6e1 Mon Sep 17 00:00:00 2001 From: Mikhail Mikheev Date: Thu, 5 Sep 2019 17:59:01 +0400 Subject: [PATCH 18/19] fix different background color on input helper text --- src/theme/mui.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/theme/mui.js b/src/theme/mui.js index c78b3012ce..d88e8ccfd9 100644 --- a/src/theme/mui.js +++ b/src/theme/mui.js @@ -15,7 +15,6 @@ import { regularFont, boldFont, buttonLargeFontSize, - border, xs, secondaryText, } from './variables' @@ -149,7 +148,6 @@ export default createMuiTheme({ color: secondary, order: 0, marginTop: '0px', - backgroundColor: border, zIndex: 1, // for firefox }, }, From 59a6fddb2ca97b98b2ac32917837de892d6d7b5b Mon Sep 17 00:00:00 2001 From: Mikhail Mikheev Date: Thu, 5 Sep 2019 18:39:53 +0400 Subject: [PATCH 19/19] update logo --- .../Header/assets/gnosis-safe-logo.svg | 48 +------------------ 1 file changed, 1 insertion(+), 47 deletions(-) diff --git a/src/components/Header/assets/gnosis-safe-logo.svg b/src/components/Header/assets/gnosis-safe-logo.svg index 6e30638374..41dc0c73de 100644 --- a/src/components/Header/assets/gnosis-safe-logo.svg +++ b/src/components/Header/assets/gnosis-safe-logo.svg @@ -1,47 +1 @@ - - - - Logo / Nav - Created with Sketch. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file +gnosis_safe_teams_2019_logo_all_rgb \ No newline at end of file