UI 2 styling (#5518)

* [ci skip] js-precompiled 20170426-110849

* export topNavigate function

* Stateless components in shell

* Connection icon fill

* Parity overlay only in dapps

* Additional buttons

* Adjust toolbar styles

* Adjust ParityBar button styling

* Complete icon conversion
This commit is contained in:
Jaco Greeff 2017-04-27 13:28:02 +02:00 committed by GitHub
parent c9d41beb28
commit d16cfc736d
23 changed files with 311 additions and 259 deletions

2
Cargo.lock generated
View File

@ -1777,7 +1777,7 @@ dependencies = [
[[package]] [[package]]
name = "parity-ui-precompiled" name = "parity-ui-precompiled"
version = "1.4.0" version = "1.4.0"
source = "git+https://github.com/paritytech/js-precompiled.git#4d50e7bfc3712287e37da1d45fe983f2a6e69ca7" source = "git+https://github.com/paritytech/js-precompiled.git#76c40dc32016e1189fd3b35d9cf7b8f53c648162"
dependencies = [ dependencies = [
"parity-dapps-glue 1.7.0 (registry+https://github.com/rust-lang/crates.io-index)", "parity-dapps-glue 1.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
] ]

View File

@ -1,6 +1,6 @@
{ {
"name": "parity.js", "name": "parity.js",
"version": "1.7.60", "version": "1.7.61",
"main": "release/index.js", "main": "release/index.js",
"jsnext:main": "src/index.js", "jsnext:main": "src/index.js",
"author": "Parity Team <admin@parity.io>", "author": "Parity Team <admin@parity.io>",

View File

@ -16,7 +16,7 @@
import React, { Component, PropTypes } from 'react'; import React, { Component, PropTypes } from 'react';
import { AccountsIcon, DoneIcon, FileIcon, FileUploadIcon, KeyboardIcon, KeyIcon, MembershipIcon, PhoneLock } from '~/ui/Icons'; import { AccountsIcon, DoneIcon, FileIcon, FileUploadIcon, KeyboardIcon, KeyIcon, MembershipIcon, QrIcon } from '~/ui/Icons';
import { STAGE_INFO } from '../store'; import { STAGE_INFO } from '../store';
@ -49,7 +49,7 @@ export default class TypeIcon extends Component {
return <MembershipIcon className={ className } />; return <MembershipIcon className={ className } />;
case 'fromQr': case 'fromQr':
return <PhoneLock className={ className } />; return <QrIcon className={ className } />;
case 'fromRaw': case 'fromRaw':
return <KeyIcon className={ className } />; return <KeyIcon className={ className } />;

View File

@ -14,35 +14,31 @@
// You should have received a copy of the GNU General Public License // You should have received a copy of the GNU General Public License
// along with Parity. If not, see <http://www.gnu.org/licenses/>. // along with Parity. If not, see <http://www.gnu.org/licenses/>.
import React, { Component, PropTypes } from 'react'; import React, { PropTypes } from 'react';
import { FirstRun, UpgradeParity } from '~/modals'; import { FirstRun, UpgradeParity } from '~/modals';
import { Errors, Tooltips } from '~/ui'; import { Errors, Tooltips } from '~/ui';
import styles from '../application.css'; import styles from '../application.css';
export default class Container extends Component { export default function Container ({ children, onCloseFirstRun, showFirstRun, upgradeStore }) {
static propTypes = { return (
children: PropTypes.node.isRequired, <div className={ styles.container }>
onCloseFirstRun: PropTypes.func, <FirstRun
showFirstRun: PropTypes.bool, onClose={ onCloseFirstRun }
upgradeStore: PropTypes.object.isRequired visible={ showFirstRun }
}; />
<Tooltips />
render () { <UpgradeParity upgradeStore={ upgradeStore } />
const { children, onCloseFirstRun, showFirstRun, upgradeStore } = this.props; <Errors />
{ children }
return ( </div>
<div className={ styles.container }> );
<FirstRun
onClose={ onCloseFirstRun }
visible={ showFirstRun }
/>
<Tooltips />
<UpgradeParity upgradeStore={ upgradeStore } />
<Errors />
{ children }
</div>
);
}
} }
Container.propTypes = {
children: PropTypes.node.isRequired,
onCloseFirstRun: PropTypes.func,
showFirstRun: PropTypes.bool,
upgradeStore: PropTypes.object.isRequired
};

View File

@ -14,25 +14,21 @@
// You should have received a copy of the GNU General Public License // You should have received a copy of the GNU General Public License
// along with Parity. If not, see <http://www.gnu.org/licenses/>. // along with Parity. If not, see <http://www.gnu.org/licenses/>.
import React, { Component, PropTypes } from 'react'; import React, { PropTypes } from 'react';
import { Errors } from '~/ui'; import { Errors } from '~/ui';
import styles from '../application.css'; import styles from '../application.css';
export default class DappContainer extends Component { export default function DappContainer ({ children }) {
static propTypes = { return (
children: PropTypes.node.isRequired <div className={ styles.container }>
}; <Errors />
{ children }
render () { </div>
const { children } = this.props; );
return (
<div className={ styles.container }>
<Errors />
{ children }
</div>
);
}
} }
DappContainer.propTypes = {
children: PropTypes.node.isRequired
};

View File

@ -14,20 +14,18 @@
// You should have received a copy of the GNU General Public License // You should have received a copy of the GNU General Public License
// along with Parity. If not, see <http://www.gnu.org/licenses/>. // along with Parity. If not, see <http://www.gnu.org/licenses/>.
import React, { Component } from 'react'; import React from 'react';
import { FormattedMessage } from 'react-intl'; import { FormattedMessage } from 'react-intl';
import styles from './frameError.css'; import styles from './frameError.css';
export default class FrameError extends Component { export default function FrameError () {
render () { return (
return ( <div className={ styles.error }>
<div className={ styles.error }> <FormattedMessage
<FormattedMessage id='application.frame.error'
id='application.frame.error' defaultMessage='ERROR: This application cannot and should not be loaded in an embedded iFrame'
defaultMessage='ERROR: This application cannot and should not be loaded in an embedded iFrame' />
/> </div>
</div> );
);
}
} }

View File

@ -0,0 +1,76 @@
// Copyright 2015-2017 Parity Technologies (UK) Ltd.
// This file is part of Parity.
// Parity is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
// Parity is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License
// along with Parity. If not, see <http://www.gnu.org/licenses/>.
import React, { PropTypes } from 'react';
import { FormattedMessage } from 'react-intl';
export default function Consensus ({ upgradeStore }) {
if (!upgradeStore || !upgradeStore.consensusCapability) {
return null;
}
if (upgradeStore.consensusCapability === 'capable') {
return (
<div>
<FormattedMessage
id='application.status.consensus.capable'
defaultMessage='Capable'
/>
</div>
);
}
if (upgradeStore.consensusCapability.capableUntil) {
return (
<div>
<FormattedMessage
id='application.status.consensus.capableUntil'
defaultMessage='Capable until #{blockNumber}'
values={ {
blockNumber: upgradeStore.consensusCapability.capableUntil
} }
/>
</div>
);
}
if (upgradeStore.consensusCapability.incapableSince) {
return (
<div>
<FormattedMessage
id='application.status.consensus.incapableSince'
defaultMessage='Incapable since #{blockNumber}'
values={ {
blockNumber: upgradeStore.consensusCapability.incapableSince
} }
/>
</div>
);
}
return (
<div>
<FormattedMessage
id='application.status.consensus.unknown'
defaultMessage='Unknown capability'
/>
</div>
);
}
Consensus.propTypes = {
upgradeStore: PropTypes.object.isRequired
};

View File

@ -0,0 +1,17 @@
// Copyright 2015-2017 Parity Technologies (UK) Ltd.
// This file is part of Parity.
// Parity is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
// Parity is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License
// along with Parity. If not, see <http://www.gnu.org/licenses/>.
export default from './consensus';

View File

@ -0,0 +1,17 @@
// Copyright 2015-2017 Parity Technologies (UK) Ltd.
// This file is part of Parity.
// Parity is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
// Parity is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License
// along with Parity. If not, see <http://www.gnu.org/licenses/>.
export default from './upgrade';

View File

@ -0,0 +1,42 @@
// Copyright 2015-2017 Parity Technologies (UK) Ltd.
// This file is part of Parity.
// Parity is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
// Parity is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License
// along with Parity. If not, see <http://www.gnu.org/licenses/>.
import React, { PropTypes } from 'react';
import { FormattedMessage } from 'react-intl';
export default function Upgrade ({ upgradeStore }) {
if (!upgradeStore.available) {
return null;
}
return (
<div>
<a
href='javascript:void(0)'
onClick={ upgradeStore.openModal }
>
<FormattedMessage
id='application.status.upgrade'
defaultMessage='Upgrade'
/>
</a>
</div>
);
}
Upgrade.propTypes = {
upgradeStore: PropTypes.object.isRequired
};

View File

@ -14,127 +14,47 @@
// You should have received a copy of the GNU General Public License // You should have received a copy of the GNU General Public License
// along with Parity. If not, see <http://www.gnu.org/licenses/>. // along with Parity. If not, see <http://www.gnu.org/licenses/>.
import React, { Component, PropTypes } from 'react'; import React, { PropTypes } from 'react';
import { FormattedMessage } from 'react-intl';
import { connect } from 'react-redux'; import { connect } from 'react-redux';
import { BlockStatus } from '~/ui'; import { BlockStatus } from '~/ui';
import Consensus from './Consensus';
import Upgrade from './Upgrade';
import styles from './status.css'; import styles from './status.css';
class Status extends Component { function Status ({ clientVersion, isTest, netChain, netPeers, upgradeStore }) {
static propTypes = { return (
clientVersion: PropTypes.string, <div className={ styles.status }>
isTest: PropTypes.bool, <div className={ styles.version }>
netChain: PropTypes.string, { clientVersion }
netPeers: PropTypes.object, </div>
upgradeStore: PropTypes.object.isRequired <div className={ styles.upgrade }>
} <Consensus upgradeStore={ upgradeStore } />
<Upgrade upgradeStore={ upgradeStore } />
render () { </div>
const { clientVersion, isTest, netChain, netPeers } = this.props; <div className={ styles.netinfo }>
<BlockStatus />
return ( <div className={ `${styles.network} ${styles[isTest ? 'test' : 'live']}` }>
<div className={ styles.status }> { netChain }
<div className={ styles.version }>
{ clientVersion }
</div> </div>
<div className={ styles.upgrade }> <div className={ styles.peers }>
{ this.renderConsensus() } { netPeers.active.toFormat() }/{ netPeers.connected.toFormat() }/{ netPeers.max.toFormat() } peers
{ this.renderUpgradeButton() }
</div>
<div className={ styles.netinfo }>
<BlockStatus />
<div className={ `${styles.network} ${styles[isTest ? 'test' : 'live']}` }>
{ netChain }
</div>
<div className={ styles.peers }>
{ netPeers.active.toFormat() }/{ netPeers.connected.toFormat() }/{ netPeers.max.toFormat() } peers
</div>
</div> </div>
</div> </div>
); </div>
} );
renderConsensus () {
const { upgradeStore } = this.props;
if (!upgradeStore || !upgradeStore.consensusCapability) {
return null;
}
if (upgradeStore.consensusCapability === 'capable') {
return (
<div>
<FormattedMessage
id='application.status.consensus.capable'
defaultMessage='Capable'
/>
</div>
);
}
if (upgradeStore.consensusCapability.capableUntil) {
return (
<div>
<FormattedMessage
id='application.status.consensus.capableUntil'
defaultMessage='Capable until #{blockNumber}'
values={ {
blockNumber: upgradeStore.consensusCapability.capableUntil
} }
/>
</div>
);
}
if (upgradeStore.consensusCapability.incapableSince) {
return (
<div>
<FormattedMessage
id='application.status.consensus.incapableSince'
defaultMessage='Incapable since #{blockNumber}'
values={ {
blockNumber: upgradeStore.consensusCapability.incapableSince
} }
/>
</div>
);
}
return (
<div>
<FormattedMessage
id='application.status.consensus.unknown'
defaultMessage='Unknown capability'
/>
</div>
);
}
renderUpgradeButton () {
const { upgradeStore } = this.props;
if (!upgradeStore.available) {
return null;
}
return (
<div>
<a
href='javascript:void(0)'
onClick={ upgradeStore.openModal }
>
<FormattedMessage
id='application.status.upgrade'
defaultMessage='Upgrade'
/>
</a>
</div>
);
}
} }
Status.propTypes = {
clientVersion: PropTypes.string,
isTest: PropTypes.bool,
netChain: PropTypes.string,
netPeers: PropTypes.object,
upgradeStore: PropTypes.object.isRequired
};
function mapStateToProps (state) { function mapStateToProps (state) {
const { clientVersion, netPeers, netChain, isTest } = state.nodeStatus; const { clientVersion, netPeers, netChain, isTest } = state.nodeStatus;

View File

@ -54,7 +54,7 @@ class Application extends Component {
render () { render () {
const [root] = (window.location.hash || '').replace('#/', '').split('/'); const [root] = (window.location.hash || '').replace('#/', '').split('/');
const isMinimized = root === 'app' || root === 'web'; const isMinimized = root !== '';
if (process.env.NODE_ENV !== 'production' && root === 'playground') { if (process.env.NODE_ENV !== 'production' && root === 'playground') {
return ( return (

View File

@ -77,14 +77,12 @@
.iconName { .iconName {
} }
.icon .svg { .icon i {
width: 6em !important; font-size: 6em;
height: 6em !important;
} }
.iconSmall .svg { .iconSmall i {
width: 3em !important; font-size: 3em;
height: 3em !important;
} }
.console { .console {

View File

@ -172,8 +172,9 @@ $modalZ: 10001;
} }
.label { .label {
position: relative;
display: inline-block; display: inline-block;
padding: 5px;
position: relative;
vertical-align: top; vertical-align: top;
} }
@ -202,11 +203,14 @@ $modalZ: 10001;
.header, .header,
.corner { .corner {
button { button {
color: white !important; background-color: transparent !important;
} margin: 0 !important;
padding: 0 0.5em !important;
svg { i {
fill: white !important; font-size: 24px !important;
height: 24px !important;
}
} }
} }

View File

@ -285,7 +285,7 @@ class ParityBar extends Component {
if (!externalLink) { if (!externalLink) {
return ( return (
<Link to='/apps'> <Link to='/'>
{ button } { button }
</Link> </Link>
); );

View File

@ -39,8 +39,6 @@ import Application from './Application';
import Dapp from './Dapp'; import Dapp from './Dapp';
import Dapps from './Dapps'; import Dapps from './Dapps';
import styles from '~/reset.css';
import '~/environment'; import '~/environment';
import '~/../assets/fonts/Roboto/font.css'; import '~/../assets/fonts/Roboto/font.css';
@ -90,7 +88,7 @@ function onEnterDapp ({ params }) {
ReactDOM.render( ReactDOM.render(
<ContextProvider api={ api } muiTheme={ muiTheme } store={ store }> <ContextProvider api={ api } muiTheme={ muiTheme } store={ store }>
<Router className={ styles.reset } history={ hashHistory }> <Router history={ hashHistory }>
<Route path='/' component={ Application }> <Route path='/' component={ Application }>
<Redirect from='/auth' to='/' /> <Redirect from='/auth' to='/' />
<Route path='/:id' component={ Dapp } onEnter={ onEnterDapp } /> <Route path='/:id' component={ Dapp } onEnter={ onEnterDapp } />

View File

@ -27,17 +27,6 @@
} }
.toolbuttons { .toolbuttons {
padding: 0.5em 0;
overflow: hidden; overflow: hidden;
button {
margin: 10px 0 10px 16px !important;
&:not([disabled]) {
color: white !important;
svg {
fill: white !important;
}
}
}
} }

View File

@ -20,6 +20,10 @@ import { nodeOrStringProptype } from '~/util/proptypes';
import styles from './dappLink.css'; import styles from './dappLink.css';
export function topNavigate (to) {
window.parent.location.hash = to;
}
export default class DappLink extends Component { export default class DappLink extends Component {
static propTypes = { static propTypes = {
children: nodeOrStringProptype().isRequired, children: nodeOrStringProptype().isRequired,
@ -41,6 +45,6 @@ export default class DappLink extends Component {
} }
onClick = () => { onClick = () => {
window.parent.location.hash = this.props.to; topNavigate(this.props.to);
} }
} }

View File

@ -17,66 +17,62 @@
import React from 'react'; import React from 'react';
import { Icon } from 'semantic-ui-react'; import { Icon } from 'semantic-ui-react';
export const AccountsIcon = () => <Icon name='id card outline' />;
export const AddIcon = () => <Icon name='plus' />; export const AddIcon = () => <Icon name='plus' />;
export const AddressIcon = () => <Icon name='address book outline' />;
export const AppsIcon = () => <Icon name='grid layout' />;
export const AttachFileIcon = () => <Icon name='attach' />;
export const BackgroundIcon = () => <Icon name='image' />;
export const CancelIcon = () => <Icon name='cancel' />; export const CancelIcon = () => <Icon name='cancel' />;
export const DoneIcon = () => <Icon name='check' />; export const CheckIcon = () => <Icon name='check' />;
export const CloseIcon = () => <Icon name='close' />;
export const CompareIcon = () => <Icon name='exchange' />;
export const ComputerIcon = () => <Icon name='desktop' />;
export const ContractIcon = () => <Icon name='code' />;
export const CopyIcon = () => <Icon name='copy' />;
export const DashboardIcon = () => <Icon name='cubes' />;
export const DoneIcon = CheckIcon;
export const DeleteIcon = () => <Icon name='trash' />; export const DeleteIcon = () => <Icon name='trash' />;
export const DevelopIcon = () => <Icon name='connectdevelop' />;
export const DialIcon = () => <Icon name='text telephone' />;
export const EditIcon = () => <Icon name='edit' />; export const EditIcon = () => <Icon name='edit' />;
export const ErrorIcon = () => <Icon name='exclamation circle' />;
export const EthernetIcon = () => <Icon name='wifi' />;
export const FileIcon = () => <Icon name='file outline' />;
export const FileDownloadIcon = () => <Icon name='download' />; export const FileDownloadIcon = () => <Icon name='download' />;
export const FileUploadIcon = () => <Icon name='upload' />; export const FileUploadIcon = () => <Icon name='upload' />;
export const FingerprintIcon = () => <Icon name='privacy' />;
export const GasIcon = () => <Icon name='settings' />;
export const GotoIcon = () => <Icon name='arrow circle right' />;
export const InfoIcon = () => <Icon name='info circle' />;
export const KeyIcon = () => <Icon name='key' />;
export const KeyboardIcon = () => <Icon name='keyboard' />;
export const LinkIcon = () => <Icon name='linkify' />;
export const ListIcon = () => <Icon name='list ul' />;
export const LockedIcon = () => <Icon name='unlock alternate' />; export const LockedIcon = () => <Icon name='unlock alternate' />;
export const MembershipIcon = () => <Icon name='openid' />;
export const MoveIcon = () => <Icon name='move' />;
export const NextIcon = () => <Icon name='chevron right' />;
export const PauseIcon = () => <Icon name='pause' />;
export const PlayIcon = () => <Icon name='play' />;
export const PrevIcon = () => <Icon name='chevron left' />;
export const PrintIcon = () => <Icon name='print' />;
export const QrIcon = () => <Icon name='qrcode' />;
export const RefreshIcon = () => <Icon name='refresh' />;
export const RemoveIcon = () => <Icon name='remove' />;
export const ReorderIcon = MoveIcon;
export const ReplayIcon = () => <Icon name='step forward' />;
export const SaveIcon = () => <Icon name='save' />;
export const SearchIcon = () => <Icon name='search' />; export const SearchIcon = () => <Icon name='search' />;
export const SendIcon = () => <Icon name='send' />; export const SendIcon = () => <Icon name='send' />;
export const SettingsIcon = () => <Icon name='settings' />;
export const SnoozeIcon = () => <Icon name='alarm' />;
export const SortIcon = () => <Icon name='filter' />;
export const StarIcon = () => <Icon name='star' />;
export const StatusIcon = () => <Icon name='signal' />;
export const UnlockedIcon = () => <Icon name='unlock' />;
export const UpdateIcon = () => <Icon name='plug' />;
export const UpdateWaitIcon = () => <Icon name='wait' />;
export const VisibleIcon = () => <Icon name='eye' />; export const VisibleIcon = () => <Icon name='eye' />;
export const VerifyIcon = () => <Icon name='user circle outline' />;
export AccountsIcon from 'material-ui/svg-icons/action/account-balance-wallet'; export const VpnIcon = () => DashboardIcon;
export AddressesIcon from 'material-ui/svg-icons/communication/contacts';
export AppsIcon from 'material-ui/svg-icons/navigation/apps';
export AttachFileIcon from 'material-ui/svg-icons/editor/attach-file';
export BackgroundIcon from 'material-ui/svg-icons/image/blur-on';
export CheckIcon from 'material-ui/svg-icons/navigation/check';
export CloseIcon from 'material-ui/svg-icons/navigation/close';
export CompareIcon from 'material-ui/svg-icons/action/compare-arrows';
export ComputerIcon from 'material-ui/svg-icons/hardware/desktop-mac';
export ContactsIcon from 'material-ui/svg-icons/image/grid-on';
export ContractIcon from 'material-ui/svg-icons/action/code';
export CopyIcon from 'material-ui/svg-icons/content/content-copy';
export DashboardIcon from 'material-ui/svg-icons/action/dashboard';
export DevelopIcon from 'material-ui/svg-icons/action/description';
export DialIcon from 'material-ui/svg-icons/communication/dialpad';
export ErrorIcon from 'material-ui/svg-icons/alert/error';
export Ethernet from 'material-ui/svg-icons/action/settings-ethernet';
export FileIcon from 'material-ui/svg-icons/editor/insert-drive-file';
export FingerprintIcon from 'material-ui/svg-icons/action/fingerprint';
export GasIcon from 'material-ui/svg-icons/maps/local-gas-station';
export InfoIcon from 'material-ui/svg-icons/action/info-outline';
export KeyIcon from 'material-ui/svg-icons/communication/vpn-key';
export KeyboardIcon from 'material-ui/svg-icons/hardware/keyboard';
export LinkIcon from 'material-ui/svg-icons/content/link';
export ListIcon from 'material-ui/svg-icons/action/view-list';
export MembershipIcon from 'material-ui/svg-icons/action/card-membership';
export MoveIcon from 'material-ui/svg-icons/action/open-with';
export NextIcon from 'material-ui/svg-icons/navigation/arrow-forward';
export PauseIcon from 'material-ui/svg-icons/av/pause';
export PhoneLock from 'material-ui/svg-icons/communication/phonelink-lock';
export PlayIcon from 'material-ui/svg-icons/av/play-arrow';
export PrevIcon from 'material-ui/svg-icons/navigation/arrow-back';
export PrintIcon from 'material-ui/svg-icons/action/print';
export RefreshIcon from 'material-ui/svg-icons/action/autorenew';
export RemoveIcon from 'material-ui/svg-icons/content/remove';
export ReorderIcon from 'material-ui/svg-icons/action/reorder';
export ReplayIcon from 'material-ui/svg-icons/av/replay';
export SaveIcon from 'material-ui/svg-icons/content/save';
export SettingsIcon from 'material-ui/svg-icons/action/settings';
export SnoozeIcon from 'material-ui/svg-icons/av/snooze';
export SortIcon from 'material-ui/svg-icons/content/sort';
export StarCircleIcon from 'material-ui/svg-icons/action/stars';
export StarIcon from 'material-ui/svg-icons/toggle/star';
export StarOutlineIcon from 'material-ui/svg-icons/toggle/star-border';
export StatusIcon from 'material-ui/svg-icons/action/track-changes';
export SubdirectoryIcon from 'material-ui/svg-icons/navigation/subdirectory-arrow-left';
export UnlockedIcon from 'material-ui/svg-icons/action/lock-open';
export UpdateIcon from 'material-ui/svg-icons/action/system-update-alt';
export UpdateWaitIcon from 'material-ui/svg-icons/action/update';
export VerifyIcon from 'material-ui/svg-icons/action/verified-user';
export VpnIcon from 'material-ui/svg-icons/notification/vpn-lock';

View File

@ -117,15 +117,14 @@ $backgroundOverlay: rgba(255, 255, 255, 0.95);
} }
.closeIcon { .closeIcon {
font-size: 4em; font-size: 3em;
position: absolute; position: absolute;
right: 1rem; right: 1rem;
top: 0.5rem; top: 0.5rem;
z-index: 100; z-index: 100;
&, * { i {
height: 48px !important; font-size: inherit;
width: 48px !important;
} }
&:hover { &:hover {

View File

@ -139,10 +139,12 @@ export default class Portal extends Component {
} }
return ( return (
<CloseIcon <div
className={ styles.closeIcon } className={ styles.closeIcon }
onClick={ this.handleClose } onClick={ this.handleClose }
/> >
<CloseIcon />
</div>
); );
} }

View File

@ -21,7 +21,7 @@ import { Tab, Tabs } from 'material-ui';
import imagesEthcoreBlock from '~/../assets/images/parity-logo-white-no-text.svg'; import imagesEthcoreBlock from '~/../assets/images/parity-logo-white-no-text.svg';
import { Actionbar, Page } from '~/ui'; import { Actionbar, Page } from '~/ui';
import { BackgroundIcon, Ethernet, VisibleIcon } from '~/ui/Icons'; import { BackgroundIcon, EthernetIcon, VisibleIcon } from '~/ui/Icons';
import styles from './settings.css'; import styles from './settings.css';
@ -41,7 +41,7 @@ export default class Settings extends Component {
let proxy = null; let proxy = null;
if (!isProxied) { if (!isProxied) {
proxy = this.renderTab(hash, 'proxy', <Ethernet />); proxy = this.renderTab(hash, 'proxy', <EthernetIcon />);
} }
return ( return (

View File

@ -18,7 +18,7 @@ import { observer } from 'mobx-react';
import React, { Component, PropTypes } from 'react'; import React, { Component, PropTypes } from 'react';
import { Button, DappUrlInput } from '~/ui'; import { Button, DappUrlInput } from '~/ui';
import { CloseIcon, RefreshIcon, SubdirectoryIcon } from '~/ui/Icons'; import { CloseIcon, RefreshIcon, GotoIcon } from '~/ui/Icons';
@observer @observer
export default class AddressBar extends Component { export default class AddressBar extends Component {
@ -50,7 +50,7 @@ export default class AddressBar extends Component {
<Button <Button
disabled={ isPristine } disabled={ isPristine }
onClick={ this.onGotoUrl } onClick={ this.onGotoUrl }
icon={ <SubdirectoryIcon /> } icon={ <GotoIcon /> }
/> />
</div> </div>
); );