Browse Source

Merge pull request #897 from mrfelton/refactor/general-cleaup

Refactor: general cleanup
renovate/lint-staged-8.x
JimmyMow 6 years ago
committed by GitHub
parent
commit
1336bad1f4
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 12
      .storybook/config.js
  2. 29
      .storybook/preview-head.html
  3. 1
      .svgrrc
  4. 95
      app/components/Activity/Countdown/Countdown.js
  5. 16
      app/components/Activity/Countdown/Countdown.scss
  6. 3
      app/components/Activity/Countdown/index.js
  7. 6
      app/components/Activity/Countdown/messages.js
  8. 2
      app/components/Activity/Invoice/Invoice.js
  9. 8
      app/components/Activity/InvoiceModal/InvoiceModal.js
  10. 2
      app/components/Activity/Payment/Payment.js
  11. 3
      app/components/Activity/PaymentModal/PaymentModal.js
  12. 2
      app/components/Activity/Transaction/Transaction.js
  13. 3
      app/components/Activity/TransactionModal/TransactionModal.js
  14. 0
      app/components/AmountInput/AmountInput.scss
  15. 3
      app/components/AmountInput/index.js
  16. 3
      app/components/Contacts/Network/Network.js
  17. 3
      app/components/Contacts/SubmitChannelForm/SubmitChannelForm.js
  18. 23
      app/components/CryptoIcon/CryptoIcon.js
  19. 3
      app/components/CryptoIcon/index.js
  20. 20
      app/components/CurrencyIcon/CurrencyIcon.js
  21. 3
      app/components/CurrencyIcon/index.js
  22. 2
      app/components/Icon/BigArrowLeft.js
  23. 2
      app/components/Icon/BigArrowRight.js
  24. 2
      app/components/Icon/Bitcoin.js
  25. 2
      app/components/Icon/Btcpay.js
  26. 6
      app/components/Icon/ChainLink.js
  27. 4
      app/components/Icon/Channels.js
  28. 6
      app/components/Icon/Check.js
  29. 16
      app/components/Icon/CheckAnimated.js
  30. 6
      app/components/Icon/CheckCircle.js
  31. 6
      app/components/Icon/Clock.js
  32. 2
      app/components/Icon/Close.js
  33. 6
      app/components/Icon/CloudLightning.js
  34. 4
      app/components/Icon/Cloudbolt.js
  35. 2
      app/components/Icon/Contacts.js
  36. 6
      app/components/Icon/Copy.js
  37. 2
      app/components/Icon/Error.js
  38. 6
      app/components/Icon/Eye.js
  39. 6
      app/components/Icon/Globe.js
  40. 2
      app/components/Icon/Hand.js
  41. 6
      app/components/Icon/Help.js
  42. 2
      app/components/Icon/Help2.js
  43. 4
      app/components/Icon/IconPlus.js
  44. 6
      app/components/Icon/Lightning.js
  45. 2
      app/components/Icon/Litecoin.js
  46. 2
      app/components/Icon/LndLogo.js
  47. 2
      app/components/Icon/LtcLogo.js
  48. 2
      app/components/Icon/Network.js
  49. 6
      app/components/Icon/Onchain.js
  50. 2
      app/components/Icon/PaperPlane.js
  51. 3
      app/components/Icon/Peers.js
  52. 6
      app/components/Icon/Plus.js
  53. 6
      app/components/Icon/PlusCircle.js
  54. 4
      app/components/Icon/Qrcode.js
  55. 6
      app/components/Icon/Search.js
  56. 3
      app/components/Icon/Settings.js
  57. 2
      app/components/Icon/SkinnyBitcoin.js
  58. 12
      app/components/Icon/Spinner.js
  59. 12
      app/components/Icon/Success.js
  60. 6
      app/components/Icon/User.js
  61. 2
      app/components/Icon/Wallet.js
  62. 2
      app/components/Icon/Wallet2.js
  63. 12
      app/components/Icon/X.js
  64. 6
      app/components/Icon/Zap.js
  65. 2
      app/components/Icon/ZapLogo.js
  66. 2
      app/components/Icon/ZapLogoBlack.js
  67. 10
      app/components/Pay/Pay.js
  68. 10
      app/components/Pay/PaySummaryLightning.js
  69. 8
      app/components/Pay/PaySummaryOnChain.js
  70. 24
      app/components/Pay/PaySummaryRow.js
  71. 1
      app/components/Pay/index.js
  72. 14
      app/components/Request/RequestSummary.js
  73. 0
      app/components/UI/AmountInput.js
  74. 7
      app/components/UI/Button.js
  75. 85
      app/components/UI/Countdown.js
  76. 22
      app/components/UI/DataRow.js
  77. 6
      app/components/UI/GlobalStyle.js
  78. 10
      app/components/UI/Input.js
  79. 6
      app/components/UI/LightningInvoiceInput.js
  80. 16
      app/components/UI/Message.js
  81. 2
      app/components/UI/Modal.js
  82. 1
      app/components/UI/Page.js
  83. 10
      app/components/UI/TextArea.js
  84. 0
      app/components/UI/Value.js
  85. 6
      app/components/UI/index.js
  86. 2
      app/components/UI/messages.js
  87. 0
      app/components/Value/Value.scss
  88. 3
      app/components/Value/index.js
  89. 3
      app/components/Wallet/Wallet.js
  90. 4
      app/icons/channels.svg
  91. 2
      app/icons/icon-plus.svg
  92. 4
      app/icons/peers.svg
  93. 4
      app/icons/qrcode.svg
  94. 4
      app/icons/settings.svg
  95. 185
      stories/_welcome.stories.js
  96. 83
      stories/color.stories.js
  97. 30
      stories/components/countdown.stories.js
  98. 20
      stories/helpers.js
  99. 6
      stories/pages/pay.stories.js
  100. 39
      test/unit/components/CryptoIcon.spec.js

12
.storybook/config.js

@ -1,6 +1,7 @@
import React from 'react' import React from 'react'
import { addDecorator, configure, setAddon } from '@storybook/react' import { addDecorator, configure, setAddon } from '@storybook/react'
import { withThemes } from 'storybook-styled-components' import { withThemes } from 'storybook-styled-components'
import { withTheme } from 'styled-components'
import { themes } from '@storybook/components' import { themes } from '@storybook/components'
import { withOptions } from '@storybook/addon-options' import { withOptions } from '@storybook/addon-options'
import { withInfo } from '@storybook/addon-info' import { withInfo } from '@storybook/addon-info'
@ -14,6 +15,12 @@ import { dark, light } from 'themes'
import { getDefaultLocale, locales } from 'lib/i18n' import { getDefaultLocale, locales } from 'lib/i18n'
import { BackgroundDark, GlobalStyle } from 'components/UI' import { BackgroundDark, GlobalStyle } from 'components/UI'
const BackgroundDarkWithTheme = withTheme(({ theme, ...rest }) => (
<div className={theme.name}>
<BackgroundDark p={3} css={{ height: '100vh', 'overflow-y': 'scroll !important' }} {...rest} />
</div>
))
// Register supported locales. // Register supported locales.
import '../app/lib/i18n/locale' import '../app/lib/i18n/locale'
@ -66,9 +73,7 @@ addDecorator(
addDecorator(story => ( addDecorator(story => (
<React.Fragment> <React.Fragment>
<GlobalStyle /> <GlobalStyle />
<BackgroundDark p={3} css={{ height: '100vh', 'overflow-y': 'scroll !important' }}> <BackgroundDarkWithTheme>{story()}</BackgroundDarkWithTheme>
{story()}
</BackgroundDark>
</React.Fragment> </React.Fragment>
)) ))
@ -77,6 +82,7 @@ addDecorator(withThemes({ Dark: dark, Light: light }))
// Chapters // Chapters
setAddon(chaptersAddon) setAddon(chaptersAddon)
setDefaults({ setDefaults({
sectionOptions: { sectionOptions: {
showSource: false, showSource: false,

29
.storybook/preview-head.html

@ -1,10 +1,25 @@
<style> <style>
.story-title, .dark .story-title,
.story-subtitle, .dark .story-subtitle,
.chapter-header, .dark .chapter-header,
.section-header, .dark .section-header,
.section-subsection, .dark .section-subsection,
.section-button-container { .dark .section-button-container {
filter: invert(100%); color: white !important;
display: block;
}
.light .story-title,
.light .story-subtitle,
.light .chapter-header,
.light .section-header,
.light .section-subsection,
.light .section-button-container {
color: black !important;
display: block;
}
.story-header p {
margin-bottom: 1em;
} }
</style> </style>

1
.svgrrc

@ -2,6 +2,7 @@
"icon": true, "icon": true,
"replaceAttrValues": { "replaceAttrValues": {
"#FFF": "currentColor", "#FFF": "currentColor",
"#FFFFFF": "currentColor",
"#F5A623": "currentColor", "#F5A623": "currentColor",
"#010002": "currentColor", "#010002": "currentColor",
"#E63939": "currentColor", "#E63939": "currentColor",

95
app/components/Activity/Countdown/Countdown.js

@ -1,95 +0,0 @@
import React from 'react'
import PropTypes from 'prop-types'
import { FormattedMessage } from 'react-intl'
import messages from './messages'
import styles from './Countdown.scss'
class Countdown extends React.Component {
constructor(props) {
super(props)
this.state = {
days: null,
hours: null,
minutes: null,
seconds: null,
expired: false,
interval: null
}
this.timerInterval = this.timerInterval.bind(this)
}
componentDidMount() {
const interval = setInterval(this.timerInterval, 1000)
// store interval in the state so it can be accessed later
this.setState({ interval })
}
componentWillUnmount() {
const { interval } = this.state
// use interval from the state to clear the interval
clearInterval(interval)
}
timerInterval() {
const convertTwoDigits = n => (n > 9 ? n : `0${n}`.slice(-2))
const now = new Date().getTime()
const { countDownDate } = this.props
const countDownSeconds = countDownDate * 1000
const distance = countDownSeconds - now
if (distance <= 0) {
this.setState({ expired: true })
const { interval } = this.state
clearInterval(interval)
return
}
const days = convertTwoDigits(Math.floor(distance / (1000 * 60 * 60 * 24)))
const hours = convertTwoDigits(
Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60))
)
const minutes = convertTwoDigits(Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60)))
const seconds = convertTwoDigits(Math.floor((distance % (1000 * 60)) / 1000))
this.setState({
days,
hours,
minutes,
seconds
})
}
render() {
const { days, hours, minutes, seconds, expired } = this.state
if (expired) {
return <span className={`${styles.container} ${styles.expired}`}>Expired</span>
}
if (!days && !hours && !minutes && !seconds) {
return <span className={styles.container} />
}
return (
<span className={styles.container}>
<i className={styles.caption}>
<FormattedMessage {...messages.expires} />
</i>
<i>{days > 0 && `${days}:`}</i>
<i>{hours > 0 && `${hours}:`}</i>
<i>{minutes > 0 && `${minutes}:`}</i>
<i>{seconds >= 0 && `${seconds}`}</i>
</span>
)
}
}
Countdown.propTypes = {
countDownDate: PropTypes.number.isRequired
}
export default Countdown

16
app/components/Activity/Countdown/Countdown.scss

@ -1,16 +0,0 @@
@import 'styles/variables.scss';
.container {
display: block;
text-align: center;
font-size: 12px;
min-height: 12px;
&.expired {
color: $red;
}
}
.caption {
margin-right: 4px;
}

3
app/components/Activity/Countdown/index.js

@ -1,3 +0,0 @@
import Countdown from './Countdown'
export default Countdown

6
app/components/Activity/Countdown/messages.js

@ -1,6 +0,0 @@
import { defineMessages } from 'react-intl'
/* eslint-disable max-len */
export default defineMessages({
expires: 'Expires in'
})

2
app/components/Activity/Invoice/Invoice.js

@ -1,7 +1,7 @@
import React from 'react' import React from 'react'
import PropTypes from 'prop-types' import PropTypes from 'prop-types'
import { btc } from 'lib/utils' import { btc } from 'lib/utils'
import Value from 'components/Value' import { Value } from 'components/UI'
import CheckCircle from 'components/Icon/CheckCircle' import CheckCircle from 'components/Icon/CheckCircle'
import { FormattedNumber, FormattedTime, FormattedMessage, injectIntl } from 'react-intl' import { FormattedNumber, FormattedTime, FormattedMessage, injectIntl } from 'react-intl'

8
app/components/Activity/InvoiceModal/InvoiceModal.js

@ -3,10 +3,8 @@ import PropTypes from 'prop-types'
import QRCode from 'qrcode.react' import QRCode from 'qrcode.react'
import copy from 'copy-to-clipboard' import copy from 'copy-to-clipboard'
import { showNotification } from 'lib/utils/notifications' import { showNotification } from 'lib/utils/notifications'
import Value from 'components/Value' import { Countdown, Dropdown, Value } from 'components/UI'
import { Dropdown } from 'components/UI'
import { FormattedDate, FormattedTime, FormattedMessage } from 'react-intl' import { FormattedDate, FormattedTime, FormattedMessage } from 'react-intl'
import Countdown from '../Countdown'
import messages from './messages' import messages from './messages'
import styles from './InvoiceModal.scss' import styles from './InvoiceModal.scss'
@ -22,7 +20,7 @@ const InvoiceModal = ({
showNotification('Noice', <FormattedMessage {...messages.copied} />) showNotification('Noice', <FormattedMessage {...messages.copied} />)
} }
const countDownDate = parseInt(invoice.creation_date, 10) + parseInt(invoice.expiry, 10) const countDownDate = (parseInt(invoice.creation_date, 10) + parseInt(invoice.expiry, 10)) * 1000
return ( return (
<div className={styles.container}> <div className={styles.container}>
@ -40,7 +38,7 @@ const InvoiceModal = ({
level="L" level="L"
className={styles.qrcode} className={styles.qrcode}
/> />
<Countdown countDownDate={countDownDate} /> <Countdown date={countDownDate} countUpAfterExpire={false} />
</section> </section>
<section className={styles.right}> <section className={styles.right}>
<div className={styles.details}> <div className={styles.details}>

2
app/components/Activity/Payment/Payment.js

@ -3,7 +3,7 @@ import PropTypes from 'prop-types'
import Zap from 'components/Icon/Zap' import Zap from 'components/Icon/Zap'
import { btc } from 'lib/utils' import { btc } from 'lib/utils'
import Value from 'components/Value' import { Value } from 'components/UI'
import { FormattedNumber, FormattedTime, injectIntl } from 'react-intl' import { FormattedNumber, FormattedTime, injectIntl } from 'react-intl'
import messages from './messages' import messages from './messages'

3
app/components/Activity/PaymentModal/PaymentModal.js

@ -2,8 +2,7 @@ import React from 'react'
import PropTypes from 'prop-types' import PropTypes from 'prop-types'
import PaperPlane from 'components/Icon/PaperPlane' import PaperPlane from 'components/Icon/PaperPlane'
import Zap from 'components/Icon/Zap' import Zap from 'components/Icon/Zap'
import { Dropdown } from 'components/UI' import { Dropdown, Value } from 'components/UI'
import Value from 'components/Value'
import { FormattedDate, FormattedTime, FormattedMessage } from 'react-intl' import { FormattedDate, FormattedTime, FormattedMessage } from 'react-intl'
import messages from './messages' import messages from './messages'
import styles from './PaymentModal.scss' import styles from './PaymentModal.scss'

2
app/components/Activity/Transaction/Transaction.js

@ -3,7 +3,7 @@ import PropTypes from 'prop-types'
import ChainLink from 'components/Icon/ChainLink' import ChainLink from 'components/Icon/ChainLink'
import { btc } from 'lib/utils' import { btc } from 'lib/utils'
import Value from 'components/Value' import { Value } from 'components/UI'
import { FormattedNumber, FormattedTime, FormattedMessage, injectIntl } from 'react-intl' import { FormattedNumber, FormattedTime, FormattedMessage, injectIntl } from 'react-intl'
import messages from './messages' import messages from './messages'

3
app/components/Activity/TransactionModal/TransactionModal.js

@ -3,9 +3,8 @@ import PropTypes from 'prop-types'
import PaperPlane from 'components/Icon/PaperPlane' import PaperPlane from 'components/Icon/PaperPlane'
import Hand from 'components/Icon/Hand' import Hand from 'components/Icon/Hand'
import ChainLink from 'components/Icon/ChainLink' import ChainLink from 'components/Icon/ChainLink'
import { Dropdown } from 'components/UI' import { Dropdown, Value } from 'components/UI'
import { blockExplorer } from 'lib/utils' import { blockExplorer } from 'lib/utils'
import Value from 'components/Value'
import { FormattedDate, FormattedTime, FormattedMessage } from 'react-intl' import { FormattedDate, FormattedTime, FormattedMessage } from 'react-intl'
import messages from './messages' import messages from './messages'
import styles from './TransactionModal.scss' import styles from './TransactionModal.scss'

0
app/components/AmountInput/AmountInput.scss

3
app/components/AmountInput/index.js

@ -1,3 +0,0 @@
import AmountInput from './AmountInput'
export default AmountInput

3
app/components/Contacts/Network/Network.js

@ -7,8 +7,7 @@ import FaAngleDown from 'react-icons/lib/fa/angle-down'
import { btc, blockExplorer } from 'lib/utils' import { btc, blockExplorer } from 'lib/utils'
import Plus from 'components/Icon/Plus' import Plus from 'components/Icon/Plus'
import Search from 'components/Icon/Search' import Search from 'components/Icon/Search'
import { BackgroundLight, Text } from 'components/UI' import { BackgroundLight, Text, Value } from 'components/UI'
import Value from 'components/Value'
import { FormattedNumber, FormattedMessage, injectIntl } from 'react-intl' import { FormattedNumber, FormattedMessage, injectIntl } from 'react-intl'
import messages from './messages' import messages from './messages'

3
app/components/Contacts/SubmitChannelForm/SubmitChannelForm.js

@ -1,8 +1,7 @@
import React from 'react' import React from 'react'
import PropTypes from 'prop-types' import PropTypes from 'prop-types'
import FaExclamationCircle from 'react-icons/lib/fa/exclamation-circle' import FaExclamationCircle from 'react-icons/lib/fa/exclamation-circle'
import AmountInput from 'components/AmountInput' import { AmountInput, Button, Dropdown } from 'components/UI'
import { Button, Dropdown } from 'components/UI'
import { FormattedNumber, FormattedMessage } from 'react-intl' import { FormattedNumber, FormattedMessage } from 'react-intl'
import messages from './messages' import messages from './messages'
import styles from './SubmitChannelForm.scss' import styles from './SubmitChannelForm.scss'

23
app/components/CryptoIcon/CryptoIcon.js

@ -1,23 +0,0 @@
import React from 'react'
import PropTypes from 'prop-types'
import SkinnyBitcoin from 'components/Icon/SkinnyBitcoin'
import Litecoin from 'components/Icon/Litecoin'
const CryptoIcon = ({ currency, styles }) => {
switch (currency) {
case 'btc':
return <SkinnyBitcoin style={styles} />
case 'ltc':
return <Litecoin style={styles} />
default:
return <span />
}
}
CryptoIcon.propTypes = {
currency: PropTypes.string.isRequired,
styles: PropTypes.object
}
export default CryptoIcon

3
app/components/CryptoIcon/index.js

@ -1,3 +0,0 @@
import CryptoIcon from './CryptoIcon'
export default CryptoIcon

20
app/components/CurrencyIcon/CurrencyIcon.js

@ -1,20 +0,0 @@
import React from 'react'
import PropTypes from 'prop-types'
import FaDollar from 'react-icons/lib/fa/dollar'
import CryptoIcon from '../CryptoIcon'
const CurrencyIcon = ({ currency, crypto, styles }) => {
return currency === 'usd' ? (
<FaDollar style={styles} />
) : (
<CryptoIcon styles={styles} currency={crypto} />
)
}
CurrencyIcon.propTypes = {
currency: PropTypes.string.isRequired,
crypto: PropTypes.string.isRequired,
styles: PropTypes.object
}
export default CurrencyIcon

3
app/components/CurrencyIcon/index.js

@ -1,3 +0,0 @@
import CurrencyIcon from './CurrencyIcon'
export default CurrencyIcon

2
app/components/Icon/BigArrowLeft.js

@ -1,7 +1,7 @@
import React from 'react' import React from 'react'
const SvgBigArrowLeft = props => ( const SvgBigArrowLeft = props => (
<svg viewBox="0 0 16 12" width="1em" height="1em" {...props}> <svg width="1em" height="1em" viewBox="0 0 16 12" {...props}>
<path <path
d="M1 6h14m-8.474 5L1 6l5.526-5" d="M1 6h14m-8.474 5L1 6l5.526-5"
fill="none" fill="none"

2
app/components/Icon/BigArrowRight.js

@ -1,7 +1,7 @@
import React from 'react' import React from 'react'
const SvgBigArrowRight = props => ( const SvgBigArrowRight = props => (
<svg viewBox="0 0 40 28" width="1em" height="1em" {...props}> <svg width="1em" height="1em" viewBox="0 0 40 28" {...props}>
<path <path
d="M1 14h38M24 27l15-13L24 1" d="M1 14h38M24 27l15-13L24 1"
fill="none" fill="none"

2
app/components/Icon/Bitcoin.js

@ -1,7 +1,7 @@
import React from 'react' import React from 'react'
const SvgBitcoin = props => ( const SvgBitcoin = props => (
<svg viewBox="0 0 32 33" width="1em" height="1em" {...props}> <svg width="1em" height="1em" viewBox="0 0 32 33" {...props}>
<path <path
d="M15.85 32.1C7.096 32.1 0 25.004 0 16.25S7.096.4 15.85.4 31.7 7.496 31.7 16.25 24.604 32.1 15.85 32.1zm-4.3-23.95c-.05.05-.05.05.15-.1-.15.55-.3 1.15-.45 1.7-.05.1 0 .15.1.15.4.1.85.2 1.3.35.45.15.7.6.6 1-.6 2.6-1.25 5.15-1.9 7.7-.05.35-.35.55-.75.45-.35-.05-.75-.15-1.1-.25-.15 0-.2 0-.25.15-.15.4-.35.85-.55 1.3-.1.2-.15.35-.25.55 1.2.3 2.35.6 3.5.9 0 .1-.05.15-.05.2-.25.8-.45 1.65-.65 2.5-.05.1-.05.15.1.2.5.1 1 .2 1.5.35.15.05.15 0 .2-.1.1-.45.25-.9.35-1.35.1-.45.25-.9.35-1.35.45.1.85.2 1.25.3.1.05.05.1.05.2-.25.8-.45 1.65-.65 2.5-.05.1-.05.15.1.2.45.1.95.25 1.4.35.25.1.25.05.3-.15.2-.8.4-1.65.6-2.45.05-.15.15-.2.3-.15 1 .15 2 .25 3.05.1.8-.1 1.5-.45 2.05-1.1.45-.55.7-1.15.9-1.85.15-.55.2-1.15.1-1.7-.2-.7-.6-1.25-1.2-1.7-.2-.15-.4-.25-.6-.4.1 0 .15-.05.2-.05.4-.15.8-.35 1.1-.65.4-.4.6-.9.75-1.45.2-.8.15-1.6-.3-2.35-.35-.5-.8-.9-1.3-1.2l-1.65-.75c-.15-.05-.2-.1-.15-.25.1-.25.15-.5.2-.75.15-.6.3-1.2.45-1.85-.05 0-.05-.05-.1-.05-.55-.15-1.05-.25-1.55-.4-.1-.05-.15 0-.15.1l-.15.6c-.2.65-.35 1.25-.5 1.9-.05.05-.1.15-.15.15-.4-.1-.85-.2-1.25-.3.05-.1.05-.15.05-.2.2-.8.4-1.65.6-2.45.05-.1.05-.15-.1-.2-.5-.1-.95-.2-1.45-.35-.15-.05-.2 0-.25.15-.2.85-.4 1.65-.6 2.5-.05.15-.1.2-.25.15-.55-.15-1.1-.25-1.65-.4-.55-.15-1.1-.25-1.65-.4zM14.1 20.5c.2-.75.35-1.45.55-2.15.1-.5.25-.95.35-1.45.05-.15.05-.2.2-.15 1 .2 2.05.4 2.95.9.4.25.8.5 1.05.9.55.8.15 2.05-.8 2.35-.55.2-1.1.2-1.7.15-.85-.05-1.7-.3-2.5-.5 0 0-.05-.05-.1-.05zm4.2-5.1c-.8 0-1.45-.15-2.2-.25-.2-.05-.35-.1-.55-.15-.1-.05-.15-.1-.1-.2.3-1.05.55-2.05.8-3.1.05-.15.1-.2.25-.15.75.2 1.45.35 2.15.65.45.2.9.5 1.15.95.5.85 0 1.95-.95 2.15-.2.05-.45.1-.55.1z" d="M15.85 32.1C7.096 32.1 0 25.004 0 16.25S7.096.4 15.85.4 31.7 7.496 31.7 16.25 24.604 32.1 15.85 32.1zm-4.3-23.95c-.05.05-.05.05.15-.1-.15.55-.3 1.15-.45 1.7-.05.1 0 .15.1.15.4.1.85.2 1.3.35.45.15.7.6.6 1-.6 2.6-1.25 5.15-1.9 7.7-.05.35-.35.55-.75.45-.35-.05-.75-.15-1.1-.25-.15 0-.2 0-.25.15-.15.4-.35.85-.55 1.3-.1.2-.15.35-.25.55 1.2.3 2.35.6 3.5.9 0 .1-.05.15-.05.2-.25.8-.45 1.65-.65 2.5-.05.1-.05.15.1.2.5.1 1 .2 1.5.35.15.05.15 0 .2-.1.1-.45.25-.9.35-1.35.1-.45.25-.9.35-1.35.45.1.85.2 1.25.3.1.05.05.1.05.2-.25.8-.45 1.65-.65 2.5-.05.1-.05.15.1.2.45.1.95.25 1.4.35.25.1.25.05.3-.15.2-.8.4-1.65.6-2.45.05-.15.15-.2.3-.15 1 .15 2 .25 3.05.1.8-.1 1.5-.45 2.05-1.1.45-.55.7-1.15.9-1.85.15-.55.2-1.15.1-1.7-.2-.7-.6-1.25-1.2-1.7-.2-.15-.4-.25-.6-.4.1 0 .15-.05.2-.05.4-.15.8-.35 1.1-.65.4-.4.6-.9.75-1.45.2-.8.15-1.6-.3-2.35-.35-.5-.8-.9-1.3-1.2l-1.65-.75c-.15-.05-.2-.1-.15-.25.1-.25.15-.5.2-.75.15-.6.3-1.2.45-1.85-.05 0-.05-.05-.1-.05-.55-.15-1.05-.25-1.55-.4-.1-.05-.15 0-.15.1l-.15.6c-.2.65-.35 1.25-.5 1.9-.05.05-.1.15-.15.15-.4-.1-.85-.2-1.25-.3.05-.1.05-.15.05-.2.2-.8.4-1.65.6-2.45.05-.1.05-.15-.1-.2-.5-.1-.95-.2-1.45-.35-.15-.05-.2 0-.25.15-.2.85-.4 1.65-.6 2.5-.05.15-.1.2-.25.15-.55-.15-1.1-.25-1.65-.4-.55-.15-1.1-.25-1.65-.4zM14.1 20.5c.2-.75.35-1.45.55-2.15.1-.5.25-.95.35-1.45.05-.15.05-.2.2-.15 1 .2 2.05.4 2.95.9.4.25.8.5 1.05.9.55.8.15 2.05-.8 2.35-.55.2-1.1.2-1.7.15-.85-.05-1.7-.3-2.5-.5 0 0-.05-.05-.1-.05zm4.2-5.1c-.8 0-1.45-.15-2.2-.25-.2-.05-.35-.1-.55-.15-.1-.05-.15-.1-.1-.2.3-1.05.55-2.05.8-3.1.05-.15.1-.2.25-.15.75.2 1.45.35 2.15.65.45.2.9.5 1.15.95.5.85 0 1.95-.95 2.15-.2.05-.45.1-.55.1z"
fillRule="nonzero" fillRule="nonzero"

2
app/components/Icon/Btcpay.js

@ -1,7 +1,7 @@
import React from 'react' import React from 'react'
const SvgBtcpay = props => ( const SvgBtcpay = props => (
<svg viewBox="0 0 400 400" width="1em" height="1em" {...props}> <svg width="1em" height="1em" viewBox="0 0 400 400" {...props}>
<g fillRule="evenodd"> <g fillRule="evenodd">
<path <path
d="M132.759 62.5c-.022.055-.104.809-.182 1.676l-.141 1.577.582-1.122c.677-1.305.752-2.231.182-2.231-.22 0-.418.045-.441.1m60.631 6.548c.357.356.769.526.917.378.149-.148.005-.437-.319-.642-.945-.597-1.301-.44-.598.264M132.537 78.6c.002 1.76.072 2.43.156 1.489.085-.94.084-2.38-.002-3.2-.086-.819-.155-.049-.154 1.711M244.19 93.048c.357.356.769.526.917.378.149-.148.005-.437-.319-.642-.945-.597-1.301-.44-.598.264m4.062 1.943c.128.335.484.609.791.609.781 0 .693-.299-.234-.795-.645-.346-.748-.311-.557.186m-79.84 11.509c.015 11.431.602 11.333 1.007-.167.259-7.337.364-8.243.936-8.067.476.147.442.034-.131-.433-1.772-1.444-1.825-1.19-1.812 8.667M210 117c.274.33.701.586.949.568.281-.019.262-.108-.051-.234-.277-.111-.401-.367-.277-.568.124-.201-.076-.366-.446-.366-.553 0-.584.107-.175.6m32.8 15.757c0 .197.27.461.6.588.365.14.6 0 .6-.358a.595.595 0 0 0-.6-.587c-.33 0-.6.161-.6.357m2 1.071c0 .315.343.572.763.572.561 0 .708.208.557.786-.113.432-.322.748-.463.703-.477-.153-2.211 1.29-1.911 1.59.164.164.441.066.616-.217.384-.622 2.314-1.662 3.084-1.662.644 0 .748-1.033.141-1.408-1.149-.71-2.787-.924-2.787-.364M180.4 171.2c0 .22.27.4.6.4.33 0 .6.21.6.467 0 .256.116.351.257.209.298-.297-.585-1.476-1.106-1.476-.193 0-.351.18-.351.4m3.2 1.81c0 .446 1.199 1.457 1.567 1.322.197-.073-.074-.455-.604-.851-.53-.395-.963-.607-.963-.471m4.232 2.939c-.154.248-.089.451.144.451.233 0 .424.27.424.6 0 .33.354.6.787.6.535 0 .714-.192.559-.598-.127-.328-.38-.505-.563-.391-.184.113-.5-.091-.703-.454-.252-.45-.458-.516-.648-.208m32.703 23.494c-.647.988-.646 1.063.036 1.445.396.221 1.059.742 1.474 1.157.415.415.935.755 1.155.755.22 0 .4.18.4.4 0 .22.278.4.619.4.787 0-.518-1.967-1.319-1.987-.275-.007-.5-.268-.5-.58 0-.311-.188-.629-.418-.706-.23-.076-.448-.541-.485-1.033-.085-1.126-.131-1.119-.962.149m5.165 4.589c.385.224.7.669.7.988 0 .6.477.77.92.327.272-.272-1.423-1.755-1.983-1.735-.185.007-.022.196.363.42m7.9 5.959c0 .225.18.409.4.409.22 0 .4.27.4.6 0 .33.27.6.6.6.906 0 .721-.629-.4-1.363-.55-.361-1-.471-1-.246m10.8 7.806c0 .255 1.534 1.803 1.787 1.803.104 0 .1-.229-.007-.509-.199-.516-1.78-1.667-1.78-1.294M178.4 231c0 .33.191.6.424.6.233 0 .321-.165.197-.366-.124-.201 0-.457.277-.568.303-.122.224-.215-.198-.234-.385-.018-.7.238-.7.568m85.5 1.265c.275.111.5.457.5.768 0 .593.482.752.927.307.296-.296-.917-1.324-1.527-1.296-.22.011-.175.11.1.221m3.3 2.286c0 .07.336.514.747.988.782.901 1.653 1.144 1.653.461 0-.22-.27-.4-.6-.4-.33 0-.6-.161-.6-.357 0-.197-.27-.461-.6-.588-.33-.126-.6-.173-.6-.104m-96.74 2.229c.172.516.721.608.77.13.016-.16-.186-.362-.45-.45-.264-.088-.408.056-.32.32m101.94 2.42c0 .22.27.4.6.4.33 0 .6-.18.6-.4 0-.22-.27-.4-.6-.4-.33 0-.6.18-.6.4m14 9.813c0 .323.27.587.6.587.33 0 .6-.161.6-.357 0-.197-.27-.461-.6-.588-.365-.14-.6 0-.6.358m-61.6.816c0 .422 1.102 1.335 1.333 1.104.126-.125-.02-.477-.323-.781-.577-.576-1.01-.715-1.01-.323m3.6 2.971c0 .22.27.4.6.4.33 0 .6-.18.6-.4 0-.22-.27-.4-.6-.4-.33 0-.6.18-.6.4m8.255 6.2c.127.33.391.6.588.6.196 0 .357-.27.357-.6 0-.33-.264-.6-.587-.6-.358 0-.498.235-.358.6m4.245 9.665c-.693.279-.627.802.1.802.33 0 .6-.24.6-.534 0-.293-.045-.519-.1-.501-.055.017-.325.122-.6.233m-17.033 8.002c-.461.46-.292.933.333.933.33 0 .6-.27.6-.6 0-.625-.473-.794-.933-.333M219.6 279c-.408.491-.38.6.151.6.357 0 .649-.27.649-.6 0-.33-.068-.6-.151-.6-.083 0-.375.27-.649.6m-12.8 6c-.408.491-.38.6.151.6.357 0 .649-.27.649-.6 0-.33-.068-.6-.151-.6-.083 0-.375.27-.649.6m-38.4 12.12c0 5.341.1 6.48.57 6.48.478 0 .534-.985.35-6.1-.297-8.258-.92-8.515-.92-.38m12.8-.12c-.408.491-.38.6.151.6.357 0 .649-.27.649-.6 0-.33-.068-.6-.151-.6-.083 0-.375.27-.649.6m83.2 1.787c0 .214.3.273.666.132.483-.185.576-.11.338.275-.218.352-.173.434.134.244.73-.451.539-1.038-.338-1.038-.44 0-.8.174-.8.387m-8 4.2c0 .358.235.498.6.358.33-.127.6-.391.6-.588 0-.196-.27-.357-.6-.357-.33 0-.6.264-.6.587m-4 2.013c0 .33.161.6.357.6.197 0 .461-.27.588-.6.14-.365 0-.6-.358-.6a.595.595 0 0 0-.587.6m-8.8 4c0 .33.191.6.424.6.233 0 .32-.166.195-.37-.126-.203.088-.452.476-.553.537-.14.49-.195-.195-.231-.554-.028-.9.185-.9.554m-4 2c0 .33.18.6.4.6.22 0 .4-.27.4-.6 0-.33-.18-.6-.4-.6-.22 0-.4.27-.4.6m-8.133 3.667c-.486.486-.277.912.333.678.33-.127.6-.391.6-.588 0-.419-.551-.473-.933-.09m-5.067 2.12c0 .214.3.273.666.132.483-.185.576-.11.338.275-.218.352-.173.434.134.244.73-.451.539-1.038-.338-1.038-.44 0-.8.174-.8.387m-2 1.178c0 .406 1.023.346 1.455-.087.153-.153-.112-.278-.588-.278-.477 0-.867.164-.867.365m-6 3.068c0 .349.214.562.475.475.742-.247.865-1.108.158-1.108a.635.635 0 0 0-.633.633m-20.957 10c-.15.39-.061.573.232.475.598-.199.927-1.108.401-1.108-.215 0-.5.285-.633.633m-13.043 6.016c0 .531.109.559.6.151.33-.274.6-.566.6-.649 0-.083-.27-.151-.6-.151-.33 0-.6.292-.6.649m-4 1.984c0 .707.861.584 1.108-.158.087-.261-.126-.475-.475-.475a.635.635 0 0 0-.633.633m-12.919 5.9c-.113.294.048.534.357.534s.562-.24.562-.534c0-.293-.161-.533-.357-.533-.197 0-.45.24-.562.533" d="M132.759 62.5c-.022.055-.104.809-.182 1.676l-.141 1.577.582-1.122c.677-1.305.752-2.231.182-2.231-.22 0-.418.045-.441.1m60.631 6.548c.357.356.769.526.917.378.149-.148.005-.437-.319-.642-.945-.597-1.301-.44-.598.264M132.537 78.6c.002 1.76.072 2.43.156 1.489.085-.94.084-2.38-.002-3.2-.086-.819-.155-.049-.154 1.711M244.19 93.048c.357.356.769.526.917.378.149-.148.005-.437-.319-.642-.945-.597-1.301-.44-.598.264m4.062 1.943c.128.335.484.609.791.609.781 0 .693-.299-.234-.795-.645-.346-.748-.311-.557.186m-79.84 11.509c.015 11.431.602 11.333 1.007-.167.259-7.337.364-8.243.936-8.067.476.147.442.034-.131-.433-1.772-1.444-1.825-1.19-1.812 8.667M210 117c.274.33.701.586.949.568.281-.019.262-.108-.051-.234-.277-.111-.401-.367-.277-.568.124-.201-.076-.366-.446-.366-.553 0-.584.107-.175.6m32.8 15.757c0 .197.27.461.6.588.365.14.6 0 .6-.358a.595.595 0 0 0-.6-.587c-.33 0-.6.161-.6.357m2 1.071c0 .315.343.572.763.572.561 0 .708.208.557.786-.113.432-.322.748-.463.703-.477-.153-2.211 1.29-1.911 1.59.164.164.441.066.616-.217.384-.622 2.314-1.662 3.084-1.662.644 0 .748-1.033.141-1.408-1.149-.71-2.787-.924-2.787-.364M180.4 171.2c0 .22.27.4.6.4.33 0 .6.21.6.467 0 .256.116.351.257.209.298-.297-.585-1.476-1.106-1.476-.193 0-.351.18-.351.4m3.2 1.81c0 .446 1.199 1.457 1.567 1.322.197-.073-.074-.455-.604-.851-.53-.395-.963-.607-.963-.471m4.232 2.939c-.154.248-.089.451.144.451.233 0 .424.27.424.6 0 .33.354.6.787.6.535 0 .714-.192.559-.598-.127-.328-.38-.505-.563-.391-.184.113-.5-.091-.703-.454-.252-.45-.458-.516-.648-.208m32.703 23.494c-.647.988-.646 1.063.036 1.445.396.221 1.059.742 1.474 1.157.415.415.935.755 1.155.755.22 0 .4.18.4.4 0 .22.278.4.619.4.787 0-.518-1.967-1.319-1.987-.275-.007-.5-.268-.5-.58 0-.311-.188-.629-.418-.706-.23-.076-.448-.541-.485-1.033-.085-1.126-.131-1.119-.962.149m5.165 4.589c.385.224.7.669.7.988 0 .6.477.77.92.327.272-.272-1.423-1.755-1.983-1.735-.185.007-.022.196.363.42m7.9 5.959c0 .225.18.409.4.409.22 0 .4.27.4.6 0 .33.27.6.6.6.906 0 .721-.629-.4-1.363-.55-.361-1-.471-1-.246m10.8 7.806c0 .255 1.534 1.803 1.787 1.803.104 0 .1-.229-.007-.509-.199-.516-1.78-1.667-1.78-1.294M178.4 231c0 .33.191.6.424.6.233 0 .321-.165.197-.366-.124-.201 0-.457.277-.568.303-.122.224-.215-.198-.234-.385-.018-.7.238-.7.568m85.5 1.265c.275.111.5.457.5.768 0 .593.482.752.927.307.296-.296-.917-1.324-1.527-1.296-.22.011-.175.11.1.221m3.3 2.286c0 .07.336.514.747.988.782.901 1.653 1.144 1.653.461 0-.22-.27-.4-.6-.4-.33 0-.6-.161-.6-.357 0-.197-.27-.461-.6-.588-.33-.126-.6-.173-.6-.104m-96.74 2.229c.172.516.721.608.77.13.016-.16-.186-.362-.45-.45-.264-.088-.408.056-.32.32m101.94 2.42c0 .22.27.4.6.4.33 0 .6-.18.6-.4 0-.22-.27-.4-.6-.4-.33 0-.6.18-.6.4m14 9.813c0 .323.27.587.6.587.33 0 .6-.161.6-.357 0-.197-.27-.461-.6-.588-.365-.14-.6 0-.6.358m-61.6.816c0 .422 1.102 1.335 1.333 1.104.126-.125-.02-.477-.323-.781-.577-.576-1.01-.715-1.01-.323m3.6 2.971c0 .22.27.4.6.4.33 0 .6-.18.6-.4 0-.22-.27-.4-.6-.4-.33 0-.6.18-.6.4m8.255 6.2c.127.33.391.6.588.6.196 0 .357-.27.357-.6 0-.33-.264-.6-.587-.6-.358 0-.498.235-.358.6m4.245 9.665c-.693.279-.627.802.1.802.33 0 .6-.24.6-.534 0-.293-.045-.519-.1-.501-.055.017-.325.122-.6.233m-17.033 8.002c-.461.46-.292.933.333.933.33 0 .6-.27.6-.6 0-.625-.473-.794-.933-.333M219.6 279c-.408.491-.38.6.151.6.357 0 .649-.27.649-.6 0-.33-.068-.6-.151-.6-.083 0-.375.27-.649.6m-12.8 6c-.408.491-.38.6.151.6.357 0 .649-.27.649-.6 0-.33-.068-.6-.151-.6-.083 0-.375.27-.649.6m-38.4 12.12c0 5.341.1 6.48.57 6.48.478 0 .534-.985.35-6.1-.297-8.258-.92-8.515-.92-.38m12.8-.12c-.408.491-.38.6.151.6.357 0 .649-.27.649-.6 0-.33-.068-.6-.151-.6-.083 0-.375.27-.649.6m83.2 1.787c0 .214.3.273.666.132.483-.185.576-.11.338.275-.218.352-.173.434.134.244.73-.451.539-1.038-.338-1.038-.44 0-.8.174-.8.387m-8 4.2c0 .358.235.498.6.358.33-.127.6-.391.6-.588 0-.196-.27-.357-.6-.357-.33 0-.6.264-.6.587m-4 2.013c0 .33.161.6.357.6.197 0 .461-.27.588-.6.14-.365 0-.6-.358-.6a.595.595 0 0 0-.587.6m-8.8 4c0 .33.191.6.424.6.233 0 .32-.166.195-.37-.126-.203.088-.452.476-.553.537-.14.49-.195-.195-.231-.554-.028-.9.185-.9.554m-4 2c0 .33.18.6.4.6.22 0 .4-.27.4-.6 0-.33-.18-.6-.4-.6-.22 0-.4.27-.4.6m-8.133 3.667c-.486.486-.277.912.333.678.33-.127.6-.391.6-.588 0-.419-.551-.473-.933-.09m-5.067 2.12c0 .214.3.273.666.132.483-.185.576-.11.338.275-.218.352-.173.434.134.244.73-.451.539-1.038-.338-1.038-.44 0-.8.174-.8.387m-2 1.178c0 .406 1.023.346 1.455-.087.153-.153-.112-.278-.588-.278-.477 0-.867.164-.867.365m-6 3.068c0 .349.214.562.475.475.742-.247.865-1.108.158-1.108a.635.635 0 0 0-.633.633m-20.957 10c-.15.39-.061.573.232.475.598-.199.927-1.108.401-1.108-.215 0-.5.285-.633.633m-13.043 6.016c0 .531.109.559.6.151.33-.274.6-.566.6-.649 0-.083-.27-.151-.6-.151-.33 0-.6.292-.6.649m-4 1.984c0 .707.861.584 1.108-.158.087-.261-.126-.475-.475-.475a.635.635 0 0 0-.633.633m-12.919 5.9c-.113.294.048.534.357.534s.562-.24.562-.534c0-.293-.161-.533-.357-.533-.197 0-.45.24-.562.533"

6
app/components/Icon/ChainLink.js

@ -2,15 +2,15 @@ import React from 'react'
const SvgChainLink = props => ( const SvgChainLink = props => (
<svg <svg
width="1em"
height="1em"
viewBox="0 0 24 24" viewBox="0 0 24 24"
fill="none" fill="none"
stroke="currentColor" stroke="currentColor"
strokeWidth={2} strokeWidth={2}
strokeLinecap="round" strokeLinecap="round"
strokeLinejoin="round" strokeLinejoin="round"
className="feather feather-link" className="chain-link_svg__feather chain-link_svg__feather-link"
width="1em"
height="1em"
{...props} {...props}
> >
<path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71" /> <path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71" />

4
app/components/Icon/Channels.js

@ -1,8 +1,8 @@
import React from 'react' import React from 'react'
const SvgChannels = props => ( const SvgChannels = props => (
<svg viewBox="0 0 22 26" width="1em" height="1em" {...props}> <svg width="1em" height="1em" viewBox="0 0 22 26" {...props}>
<g fill="currentColor" fillRule="evenodd" opacity={0.7}> <g fill="currentColor" fillRule="evenodd">
<path d="M13.148 22.728c-1.427 0-2.588-1.151-2.588-2.564 0-1.439 1.102-2.564 2.508-2.564.642 0 1.061.245 1.418.517a.422.422 0 1 1-.505.676c-.342-.253-.58-.346-.913-.346-.932 0-1.662.753-1.662 1.717 0 .948.781 1.717 1.742 1.717.373 0 .753-.126 1.045-.346a.426.426 0 0 1 .592.085.421.421 0 0 1-.085.591c-.441.331-.992.517-1.552.517M18.628 22.728c-.549 0-1.076-.178-1.525-.517a.422.422 0 0 1-.086-.591.42.42 0 0 1 .593-.085c.3.228.653.346 1.018.346a1.718 1.718 0 0 0 0-3.434c-.425 0-.978.151-1.232.346a.422.422 0 1 1-.507-.676c.471-.356 1.232-.517 1.74-.517a2.567 2.567 0 0 1 2.562 2.564 2.567 2.567 0 0 1-2.563 2.564" /> <path d="M13.148 22.728c-1.427 0-2.588-1.151-2.588-2.564 0-1.439 1.102-2.564 2.508-2.564.642 0 1.061.245 1.418.517a.422.422 0 1 1-.505.676c-.342-.253-.58-.346-.913-.346-.932 0-1.662.753-1.662 1.717 0 .948.781 1.717 1.742 1.717.373 0 .753-.126 1.045-.346a.426.426 0 0 1 .592.085.421.421 0 0 1-.085.591c-.441.331-.992.517-1.552.517M18.628 22.728c-.549 0-1.076-.178-1.525-.517a.422.422 0 0 1-.086-.591.42.42 0 0 1 .593-.085c.3.228.653.346 1.018.346a1.718 1.718 0 0 0 0-3.434c-.425 0-.978.151-1.232.346a.422.422 0 1 1-.507-.676c.471-.356 1.232-.517 1.74-.517a2.567 2.567 0 0 1 2.562 2.564 2.567 2.567 0 0 1-2.563 2.564" />
<path d="M17.854 21.085h-4.23a.42.42 0 0 1-.424-.422.42.42 0 0 1 .423-.423h4.23a.42.42 0 0 1 .424.423.42.42 0 0 1-.423.422" /> <path d="M17.854 21.085h-4.23a.42.42 0 0 1-.424-.422.42.42 0 0 1 .423-.423h4.23a.42.42 0 0 1 .424.423.42.42 0 0 1-.423.422" />
<path d="M11 25.384H.423A.422.422 0 0 1 0 24.96V6.328c0-.109.041-.21.116-.296L5.712.135A.429.429 0 0 1 6.019 0h13.02a.42.42 0 0 1 .423.423v15.653c0 .237-.19.424-.424.424a.422.422 0 0 1-.423-.424V.846H6.201L.846 6.496v18.04H11a.42.42 0 0 1 .423.423c0 .237-.19.424-.423.424" /> <path d="M11 25.384H.423A.422.422 0 0 1 0 24.96V6.328c0-.109.041-.21.116-.296L5.712.135A.429.429 0 0 1 6.019 0h13.02a.42.42 0 0 1 .423.423v15.653c0 .237-.19.424-.424.424a.422.422 0 0 1-.423-.424V.846H6.201L.846 6.496v18.04H11a.42.42 0 0 1 .423.423c0 .237-.19.424-.423.424" />

6
app/components/Icon/Check.js

@ -2,15 +2,15 @@ import React from 'react'
const SvgCheck = props => ( const SvgCheck = props => (
<svg <svg
width="1em"
height="1em"
viewBox="0 0 24 24" viewBox="0 0 24 24"
fill="none" fill="none"
stroke="currentColor" stroke="currentColor"
strokeWidth={2} strokeWidth={2}
strokeLinecap="round" strokeLinecap="round"
strokeLinejoin="round" strokeLinejoin="round"
className="feather feather-check" className="check_svg__feather check_svg__feather-check"
width="1em"
height="1em"
{...props} {...props}
> >
<path d="M20 6L9 17l-5-5" /> <path d="M20 6L9 17l-5-5" />

16
app/components/Icon/CheckAnimated.js

@ -1,9 +1,19 @@
import React from 'react' import React from 'react'
const SvgCheckAnimated = props => ( const SvgCheckAnimated = props => (
<svg className="checkmark" viewBox="0 0 52 52" width="1em" height="1em" {...props}> <svg
<circle className="checkmark__circle" cx={26} cy={26} r={25} fill="none" /> className="check-animated_svg__checkmark"
<path className="checkmark__check" fill="none" d="M14.1 27.2l7.1 7.2 16.7-16.8" /> viewBox="0 0 52 52"
{...props}
width="1em"
height="1em"
>
<circle className="check-animated_svg__checkmark__circle" cx={26} cy={26} r={25} fill="none" />
<path
className="check-animated_svg__checkmark__check"
fill="none"
d="M14.1 27.2l7.1 7.2 16.7-16.8"
/>
</svg> </svg>
) )

6
app/components/Icon/CheckCircle.js

@ -2,15 +2,15 @@ import React from 'react'
const SvgCheckCircle = props => ( const SvgCheckCircle = props => (
<svg <svg
width="1em"
height="1em"
viewBox="0 0 24 24" viewBox="0 0 24 24"
fill="none" fill="none"
stroke="currentColor" stroke="currentColor"
strokeWidth={0.5} strokeWidth={0.5}
strokeLinecap="round" strokeLinecap="round"
strokeLinejoin="round" strokeLinejoin="round"
className="feather feather-check-circle" className="check-circle_svg__feather check-circle_svg__feather-check-circle"
width="1em"
height="1em"
{...props} {...props}
> >
<path d="M22 11.07V12a10 10 0 1 1-5.93-9.14" /> <path d="M22 11.07V12a10 10 0 1 1-5.93-9.14" />

6
app/components/Icon/Clock.js

@ -2,15 +2,15 @@ import React from 'react'
const SvgClock = props => ( const SvgClock = props => (
<svg <svg
width="1em"
height="1em"
viewBox="0 0 24 24" viewBox="0 0 24 24"
fill="none" fill="none"
stroke="currentColor" stroke="currentColor"
strokeWidth={2} strokeWidth={2}
strokeLinecap="round" strokeLinecap="round"
strokeLinejoin="round" strokeLinejoin="round"
className="feather feather-clock" className="clock_svg__feather clock_svg__feather-clock"
width="1em"
height="1em"
{...props} {...props}
> >
<circle cx={12} cy={12} r={10} /> <circle cx={12} cy={12} r={10} />

2
app/components/Icon/Close.js

@ -1,7 +1,7 @@
import React from 'react' import React from 'react'
const SvgClose = props => ( const SvgClose = props => (
<svg viewBox="0 0 10 10" width="1em" height="1em" {...props}> <svg width="1em" height="1em" viewBox="0 0 10 10" {...props}>
<g fill="currentColor" fillRule="evenodd"> <g fill="currentColor" fillRule="evenodd">
<path d="M7.744 1.077a.833.833 0 1 1 1.179 1.179L2.256 8.923a.833.833 0 1 1-1.179-1.179l6.667-6.667z" /> <path d="M7.744 1.077a.833.833 0 1 1 1.179 1.179L2.256 8.923a.833.833 0 1 1-1.179-1.179l6.667-6.667z" />
<path d="M1.077 2.256a.833.833 0 1 1 1.179-1.179l6.667 6.667a.833.833 0 1 1-1.179 1.179L1.077 2.256z" /> <path d="M1.077 2.256a.833.833 0 1 1 1.179-1.179l6.667 6.667a.833.833 0 1 1-1.179 1.179L1.077 2.256z" />

6
app/components/Icon/CloudLightning.js

@ -2,15 +2,15 @@ import React from 'react'
const SvgCloudLightning = props => ( const SvgCloudLightning = props => (
<svg <svg
width="1em"
height="1em"
viewBox="0 0 24 24" viewBox="0 0 24 24"
fill="none" fill="none"
stroke="currentColor" stroke="currentColor"
strokeWidth={0.5} strokeWidth={0.5}
strokeLinecap="round" strokeLinecap="round"
strokeLinejoin="round" strokeLinejoin="round"
className="feather feather-cloud-lightning" className="cloud-lightning_svg__feather cloud-lightning_svg__feather-cloud-lightning"
width="1em"
height="1em"
{...props} {...props}
> >
<path d="M19 16.9A5 5 0 0 0 18 7h-1.26a8 8 0 1 0-11.62 9" /> <path d="M19 16.9A5 5 0 0 0 18 7h-1.26a8 8 0 1 0-11.62 9" />

4
app/components/Icon/Cloudbolt.js

@ -1,9 +1,9 @@
import React from 'react' import React from 'react'
const SvgCloudbolt = props => ( const SvgCloudbolt = props => (
<svg viewBox="0 0 79.536 79.536" width="1em" height="1em" {...props}> <svg width="1em" height="1em" viewBox="0 0 79.536 79.536" {...props}>
<path <path
className="load-draw-svg" className="cloudbolt_svg__load-draw-svg"
d="M78.967 29.396c0 8.124-6.582 14.7-14.706 14.7H9.145c-4.735 0-8.575-1.799-8.575-6.54a8.576 8.576 0 0 1 8.575-8.575c.857 0 1.675.171 2.47.409 0-.067-.021-.132-.021-.202 0-5.525 4.479-9.999 10.004-9.999.228 0 .456.052.687.067-.013-.233-.075-.451-.075-.684C22.209 8.313 30.522 0 40.788 0c9.264 0 16.896 6.814 18.289 15.689 1.61-.616 3.351-.991 5.184-.991 8.124 0 14.706 6.581 14.706 14.698zm-29.79 18.222H34.504c-4.306 4.329-11.283 11.34-11.363 11.34h11.757L23.146 79.536l26.45-23.52h-8.818l8.399-8.398z" d="M78.967 29.396c0 8.124-6.582 14.7-14.706 14.7H9.145c-4.735 0-8.575-1.799-8.575-6.54a8.576 8.576 0 0 1 8.575-8.575c.857 0 1.675.171 2.47.409 0-.067-.021-.132-.021-.202 0-5.525 4.479-9.999 10.004-9.999.228 0 .456.052.687.067-.013-.233-.075-.451-.075-.684C22.209 8.313 30.522 0 40.788 0c9.264 0 16.896 6.814 18.289 15.689 1.61-.616 3.351-.991 5.184-.991 8.124 0 14.706 6.581 14.706 14.698zm-29.79 18.222H34.504c-4.306 4.329-11.283 11.34-11.363 11.34h11.757L23.146 79.536l26.45-23.52h-8.818l8.399-8.398z"
fill="currentColor" fill="currentColor"
/> />

2
app/components/Icon/Contacts.js

@ -1,7 +1,7 @@
import React from 'react' import React from 'react'
const SvgContacts = props => ( const SvgContacts = props => (
<svg viewBox="0 0 20 15" width="1em" height="1em" {...props}> <svg width="1em" height="1em" viewBox="0 0 20 15" {...props}>
<g <g
transform="translate(1 1)" transform="translate(1 1)"
stroke="currentColor" stroke="currentColor"

6
app/components/Icon/Copy.js

@ -2,15 +2,15 @@ import React from 'react'
const SvgCopy = props => ( const SvgCopy = props => (
<svg <svg
width="1em"
height="1em"
viewBox="0 0 24 24" viewBox="0 0 24 24"
fill="none" fill="none"
stroke="currentColor" stroke="currentColor"
strokeWidth={2} strokeWidth={2}
strokeLinecap="round" strokeLinecap="round"
strokeLinejoin="round" strokeLinejoin="round"
className="feather feather-copy" className="copy_svg__feather copy_svg__feather-copy"
width="1em"
height="1em"
{...props} {...props}
> >
<rect x={9} y={9} width={13} height={13} rx={2} ry={2} /> <rect x={9} y={9} width={13} height={13} rx={2} ry={2} />

2
app/components/Icon/Error.js

@ -1,7 +1,7 @@
import React from 'react' import React from 'react'
const SvgError = props => ( const SvgError = props => (
<svg viewBox="0 0 17 17" width="1em" height="1em" {...props}> <svg width="1em" height="1em" viewBox="0 0 17 17" {...props}>
<path <path
fill="currentColor" fill="currentColor"
fillRule="evenodd" fillRule="evenodd"

6
app/components/Icon/Eye.js

@ -2,15 +2,15 @@ import React from 'react'
const SvgEye = props => ( const SvgEye = props => (
<svg <svg
width="1em"
height="1em"
viewBox="0 0 24 24" viewBox="0 0 24 24"
fill="none" fill="none"
stroke="currentColor" stroke="currentColor"
strokeWidth={2} strokeWidth={2}
strokeLinecap="round" strokeLinecap="round"
strokeLinejoin="round" strokeLinejoin="round"
className="feather feather-eye" className="eye_svg__feather eye_svg__feather-eye"
width="1em"
height="1em"
{...props} {...props}
> >
<path d="M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z" /> <path d="M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z" />

6
app/components/Icon/Globe.js

@ -2,15 +2,15 @@ import React from 'react'
const SvgGlobe = props => ( const SvgGlobe = props => (
<svg <svg
width="1em"
height="1em"
viewBox="0 0 24 24" viewBox="0 0 24 24"
fill="none" fill="none"
stroke="currentColor" stroke="currentColor"
strokeWidth={2} strokeWidth={2}
strokeLinecap="round" strokeLinecap="round"
strokeLinejoin="round" strokeLinejoin="round"
className="feather feather-globe" className="globe_svg__feather globe_svg__feather-globe"
width="1em"
height="1em"
{...props} {...props}
> >
<circle cx={12} cy={12} r={10} /> <circle cx={12} cy={12} r={10} />

2
app/components/Icon/Hand.js

@ -1,7 +1,7 @@
import React from 'react' import React from 'react'
const SvgHand = props => ( const SvgHand = props => (
<svg viewBox="0 0 32 14" width="1em" height="1em" {...props}> <svg width="1em" height="1em" viewBox="0 0 32 14" {...props}>
<g stroke="currentColor" strokeWidth={0.75} fill="none" fillRule="evenodd"> <g stroke="currentColor" strokeWidth={0.75} fill="none" fillRule="evenodd">
<path d="M7 2.078c4.025-.372 7.34.589 9.943 2.882h4.623c2.038 0 1.782 3.04 0 3.04h-7.134M3.11 10.925H7V1H1c.208 5.035.966 8.368 2.272 10" /> <path d="M7 2.078c4.025-.372 7.34.589 9.943 2.882h4.623c2.038 0 1.782 3.04 0 3.04h-7.134M3.11 10.925H7V1H1c.208 5.035.966 8.368 2.272 10" />
<path d="M7 9.843C12.434 11.948 16.079 13 17.933 13c2.782 0 10.816-4.844 12.351-5.842C31.82 6.159 30.524 5 29.738 5c-.525 0-2.798.752-6.818 2.257" /> <path d="M7 9.843C12.434 11.948 16.079 13 17.933 13c2.782 0 10.816-4.844 12.351-5.842C31.82 6.159 30.524 5 29.738 5c-.525 0-2.798.752-6.818 2.257" />

6
app/components/Icon/Help.js

@ -2,15 +2,15 @@ import React from 'react'
const SvgHelp = props => ( const SvgHelp = props => (
<svg <svg
width="1em"
height="1em"
viewBox="0 0 24 24" viewBox="0 0 24 24"
fill="none" fill="none"
stroke="currentColor" stroke="currentColor"
strokeWidth={2} strokeWidth={2}
strokeLinecap="round" strokeLinecap="round"
strokeLinejoin="round" strokeLinejoin="round"
className="feather feather-life-buoy" className="help_svg__feather help_svg__feather-life-buoy"
width="1em"
height="1em"
{...props} {...props}
> >
<circle cx={12} cy={12} r={10} /> <circle cx={12} cy={12} r={10} />

2
app/components/Icon/Help2.js

@ -1,7 +1,7 @@
import React from 'react' import React from 'react'
const SvgHelp2 = props => ( const SvgHelp2 = props => (
<svg viewBox="0 0 18 18" width="1em" height="1em" {...props}> <svg width="1em" height="1em" viewBox="0 0 18 18" {...props}>
<g <g
transform="translate(1 1)" transform="translate(1 1)"
stroke="currentColor" stroke="currentColor"

4
app/components/Icon/IconPlus.js

@ -1,8 +1,8 @@
import React from 'react' import React from 'react'
const SvgIconPlus = props => ( const SvgIconPlus = props => (
<svg viewBox="0 0 18 18" width="1em" height="1em" {...props}> <svg width="1em" height="1em" viewBox="0 0 18 18" {...props}>
<g fill="none" fillRule="evenodd" stroke="#FD9800" transform="translate(1 1)"> <g fill="none" fillRule="evenodd" stroke="currentColor" transform="translate(1 1)">
<path d="M8.09 5v6M5 8.09h6" strokeLinecap="round" strokeLinejoin="round" /> <path d="M8.09 5v6M5 8.09h6" strokeLinecap="round" strokeLinejoin="round" />
<circle cx={8} cy={8} r={8} /> <circle cx={8} cy={8} r={8} />
</g> </g>

6
app/components/Icon/Lightning.js

@ -1,15 +1,15 @@
import React from 'react' import React from 'react'
const SvgLightning = props => ( const SvgLightning = props => (
<svg viewBox="0 0 50 50" width="1em" height="1em" {...props}> <svg width="1em" height="1em" viewBox="0 0 50 50" {...props}>
<defs> <defs>
<linearGradient id="b" x1="0%" y1="0%" y2="100%"> <linearGradient id="lightning_svg__a" x1="0%" y1="0%" y2="100%">
<stop offset="0%" stopColor="#FFBD59" /> <stop offset="0%" stopColor="#FFBD59" />
<stop offset="100%" stopColor="#FD9800" /> <stop offset="100%" stopColor="#FD9800" />
</linearGradient> </linearGradient>
</defs> </defs>
<g fill="none" fillRule="evenodd"> <g fill="none" fillRule="evenodd">
<circle cx={25} cy={25} r={25} fill="url(#b)" /> <circle cx={25} cy={25} r={25} fill="url(#lightning_svg__a)" />
<path <path
fill="currentColor" fill="currentColor"
fillRule="nonzero" fillRule="nonzero"

2
app/components/Icon/Litecoin.js

@ -1,7 +1,7 @@
import React from 'react' import React from 'react'
const SvgLitecoin = props => ( const SvgLitecoin = props => (
<svg fill="currentColor" viewBox="0 0 40 40" data-icon="ltc" width="1em" height="1em" {...props}> <svg fill="currentColor" viewBox="0 0 40 40" dataIcon="ltc" {...props} width="1em" height="1em">
<path d="M12.29 28.04l1.29-5.52-1.58.67.63-2.85 1.64-.68L16.52 10h5.23l-1.52 7.14 2.09-.74-.58 2.7-2.05.8-.9 4.34h8.1l-.99 3.8z" /> <path d="M12.29 28.04l1.29-5.52-1.58.67.63-2.85 1.64-.68L16.52 10h5.23l-1.52 7.14 2.09-.74-.58 2.7-2.05.8-.9 4.34h8.1l-.99 3.8z" />
</svg> </svg>
) )

2
app/components/Icon/LndLogo.js

File diff suppressed because one or more lines are too long

2
app/components/Icon/LtcLogo.js

@ -1,7 +1,7 @@
import React from 'react' import React from 'react'
const SvgLtcLogo = props => ( const SvgLtcLogo = props => (
<svg viewBox="0.847 0.876 329.254 329.256" width="1em" height="1em" {...props}> <svg width="1em" height="1em" viewBox="0.847 0.876 329.254 329.256" {...props}>
<path <path
d="M330.102 165.503c0 90.922-73.705 164.629-164.626 164.629C74.554 330.132.848 256.425.848 165.503.848 74.582 74.554.876 165.476.876c90.92 0 164.626 73.706 164.626 164.627" d="M330.102 165.503c0 90.922-73.705 164.629-164.626 164.629C74.554 330.132.848 256.425.848 165.503.848 74.582 74.554.876 165.476.876c90.92 0 164.626 73.706 164.626 164.627"
fill="#bebebe" fill="#bebebe"

2
app/components/Icon/Network.js

@ -1,7 +1,7 @@
import React from 'react' import React from 'react'
const SvgNetwork = props => ( const SvgNetwork = props => (
<svg viewBox="0 0 18 18" width="1em" height="1em" {...props}> <svg width="1em" height="1em" viewBox="0 0 18 18" {...props}>
<g <g
transform="translate(1 1)" transform="translate(1 1)"
stroke="currentColor" stroke="currentColor"

6
app/components/Icon/Onchain.js

@ -1,15 +1,15 @@
import React from 'react' import React from 'react'
const SvgOnchain = props => ( const SvgOnchain = props => (
<svg viewBox="0 0 50 50" width="1em" height="1em" {...props}> <svg width="1em" height="1em" viewBox="0 0 50 50" {...props}>
<defs> <defs>
<linearGradient id="c" x1="0%" y1="0%" y2="100%"> <linearGradient id="onchain_svg__a" x1="0%" y1="0%" y2="100%">
<stop offset="0%" stopColor="#FFBD59" /> <stop offset="0%" stopColor="#FFBD59" />
<stop offset="100%" stopColor="#FD9800" /> <stop offset="100%" stopColor="#FD9800" />
</linearGradient> </linearGradient>
</defs> </defs>
<g fill="none" fillRule="evenodd"> <g fill="none" fillRule="evenodd">
<circle cx={25} cy={25} r={25} fill="url(#c)" /> <circle cx={25} cy={25} r={25} fill="url(#onchain_svg__a)" />
<path <path
stroke="currentColor" stroke="currentColor"
strokeLinecap="round" strokeLinecap="round"

2
app/components/Icon/PaperPlane.js

@ -1,7 +1,7 @@
import React from 'react' import React from 'react'
const SvgPaperPlane = props => ( const SvgPaperPlane = props => (
<svg viewBox="0 0 22 22" width="1em" height="1em" {...props}> <svg width="1em" height="1em" viewBox="0 0 22 22" {...props}>
<g <g
stroke="currentColor" stroke="currentColor"
strokeWidth={0.75} strokeWidth={0.75}

3
app/components/Icon/Peers.js

@ -1,14 +1,13 @@
import React from 'react' import React from 'react'
const SvgPeers = props => ( const SvgPeers = props => (
<svg viewBox="0 0 24 19" width="1em" height="1em" {...props}> <svg width="1em" height="1em" viewBox="0 0 24 19" {...props}>
<g <g
transform="translate(1 1)" transform="translate(1 1)"
stroke="currentColor" stroke="currentColor"
fill="none" fill="none"
fillRule="evenodd" fillRule="evenodd"
strokeLinecap="round" strokeLinecap="round"
opacity={0.7}
strokeLinejoin="round" strokeLinejoin="round"
> >
<path d="M16 18v-2a4 4 0 0 0-4-4H4a4 4 0 0 0-4 4v2" /> <path d="M16 18v-2a4 4 0 0 0-4-4H4a4 4 0 0 0-4 4v2" />

6
app/components/Icon/Plus.js

@ -2,15 +2,15 @@ import React from 'react'
const SvgPlus = props => ( const SvgPlus = props => (
<svg <svg
width="1em"
height="1em"
viewBox="0 0 24 24" viewBox="0 0 24 24"
fill="none" fill="none"
stroke="currentColor" stroke="currentColor"
strokeWidth={2} strokeWidth={2}
strokeLinecap="round" strokeLinecap="round"
strokeLinejoin="round" strokeLinejoin="round"
className="feather feather-plus" className="plus_svg__feather plus_svg__feather-plus"
width="1em"
height="1em"
{...props} {...props}
> >
<path d="M12 5v14M5 12h14" /> <path d="M12 5v14M5 12h14" />

6
app/components/Icon/PlusCircle.js

@ -2,15 +2,15 @@ import React from 'react'
const SvgPlusCircle = props => ( const SvgPlusCircle = props => (
<svg <svg
width="1em"
height="1em"
viewBox="0 0 24 24" viewBox="0 0 24 24"
fill="none" fill="none"
stroke="currentColor" stroke="currentColor"
strokeWidth={2} strokeWidth={2}
strokeLinecap="round" strokeLinecap="round"
strokeLinejoin="round" strokeLinejoin="round"
className="feather feather-plus-circle" className="plus-circle_svg__feather plus-circle_svg__feather-plus-circle"
width="1em"
height="1em"
{...props} {...props}
> >
<circle cx={12} cy={12} r={10} /> <circle cx={12} cy={12} r={10} />

4
app/components/Icon/Qrcode.js

@ -1,8 +1,8 @@
import React from 'react' import React from 'react'
const SvgQrcode = props => ( const SvgQrcode = props => (
<svg viewBox="0 0 16 16" width="1em" height="1em" {...props}> <svg width="1em" height="1em" viewBox="0 0 16 16" {...props}>
<g fill="currentColor" fillRule="nonzero" opacity={0.5}> <g fill="currentColor" fillRule="nonzero">
<path d="M.4 4.809a.4.4 0 0 1-.4-.4V.4A.4.4 0 0 1 .4 0h4.009a.4.4 0 1 1 0 .8H.8v3.609a.4.4 0 0 1-.4.4zM15.6 16h-4.01a.4.4 0 1 1 0-.8h3.61v-3.61a.4.4 0 1 1 .8 0v4.01a.4.4 0 0 1-.4.4zM15.6 4.809a.4.4 0 0 1-.4-.4V.8h-3.61a.4.4 0 1 1 0-.8h4.01a.4.4 0 0 1 .4.4v4.009a.4.4 0 0 1-.4.4zM4.409 16H.4a.4.4 0 0 1-.4-.4v-4.01a.4.4 0 1 1 .8 0v3.61h3.609a.4.4 0 1 1 0 .8zM11.588 11.98H7.6a.393.393 0 0 1-.393-.393V7.994H3.612a.393.393 0 1 1 0-.786H7.6c.217 0 .393.176.393.393v3.595h3.595a.393.393 0 1 1 0 .785z" /> <path d="M.4 4.809a.4.4 0 0 1-.4-.4V.4A.4.4 0 0 1 .4 0h4.009a.4.4 0 1 1 0 .8H.8v3.609a.4.4 0 0 1-.4.4zM15.6 16h-4.01a.4.4 0 1 1 0-.8h3.61v-3.61a.4.4 0 1 1 .8 0v4.01a.4.4 0 0 1-.4.4zM15.6 4.809a.4.4 0 0 1-.4-.4V.8h-3.61a.4.4 0 1 1 0-.8h4.01a.4.4 0 0 1 .4.4v4.009a.4.4 0 0 1-.4.4zM4.409 16H.4a.4.4 0 0 1-.4-.4v-4.01a.4.4 0 1 1 .8 0v3.61h3.609a.4.4 0 1 1 0 .8zM11.588 11.98H7.6a.393.393 0 0 1-.393-.393V7.994H3.612a.393.393 0 1 1 0-.786H7.6c.217 0 .393.176.393.393v3.595h3.595a.393.393 0 1 1 0 .785z" />
<path d="M11.588 9.879a.393.393 0 0 1-.393-.393V7.993H9.879v1.493a.393.393 0 1 1-.786 0V7.6c0-.217.176-.393.393-.393h2.101c.218 0 .393.176.393.393v1.886a.393.393 0 0 1-.393.393zM5.714 6.107H3.612a.393.393 0 0 1-.392-.393V3.612c0-.217.175-.392.392-.392h2.102c.217 0 .393.175.393.392v2.102a.393.393 0 0 1-.393.393zm-1.709-.786h1.316V4.005H4.005v1.316zM11.588 6.107H9.486a.393.393 0 0 1-.393-.393V3.612c0-.217.176-.392.393-.392h2.101c.218 0 .393.175.393.392v2.102a.393.393 0 0 1-.393.393zm-1.71-.786h1.317V4.005H9.879v1.316zM5.714 11.98H3.612a.393.393 0 0 1-.392-.393V9.486c0-.217.175-.393.392-.393h2.102c.217 0 .393.176.393.393v2.101a.393.393 0 0 1-.393.393zm-1.709-.785h1.316V9.879H4.005v1.316zM7.6 6.107a.393.393 0 0 1-.393-.393V3.612a.393.393 0 1 1 .786 0v2.102a.393.393 0 0 1-.393.393z" /> <path d="M11.588 9.879a.393.393 0 0 1-.393-.393V7.993H9.879v1.493a.393.393 0 1 1-.786 0V7.6c0-.217.176-.393.393-.393h2.101c.218 0 .393.176.393.393v1.886a.393.393 0 0 1-.393.393zM5.714 6.107H3.612a.393.393 0 0 1-.392-.393V3.612c0-.217.175-.392.392-.392h2.102c.217 0 .393.175.393.392v2.102a.393.393 0 0 1-.393.393zm-1.709-.786h1.316V4.005H4.005v1.316zM11.588 6.107H9.486a.393.393 0 0 1-.393-.393V3.612c0-.217.176-.392.393-.392h2.101c.218 0 .393.175.393.392v2.102a.393.393 0 0 1-.393.393zm-1.71-.786h1.317V4.005H9.879v1.316zM5.714 11.98H3.612a.393.393 0 0 1-.392-.393V9.486c0-.217.175-.393.392-.393h2.102c.217 0 .393.176.393.393v2.101a.393.393 0 0 1-.393.393zm-1.709-.785h1.316V9.879H4.005v1.316zM7.6 6.107a.393.393 0 0 1-.393-.393V3.612a.393.393 0 1 1 .786 0v2.102a.393.393 0 0 1-.393.393z" />
</g> </g>

6
app/components/Icon/Search.js

@ -2,15 +2,15 @@ import React from 'react'
const SvgSearch = props => ( const SvgSearch = props => (
<svg <svg
width="1em"
height="1em"
viewBox="0 0 24 24" viewBox="0 0 24 24"
fill="none" fill="none"
stroke="currentColor" stroke="currentColor"
strokeWidth={2} strokeWidth={2}
strokeLinecap="round" strokeLinecap="round"
strokeLinejoin="round" strokeLinejoin="round"
className="feather feather-search" className="search_svg__feather search_svg__feather-search"
width="1em"
height="1em"
{...props} {...props}
> >
<circle cx={10.5} cy={10.5} r={7.5} /> <circle cx={10.5} cy={10.5} r={7.5} />

3
app/components/Icon/Settings.js

@ -1,14 +1,13 @@
import React from 'react' import React from 'react'
const SvgSettings = props => ( const SvgSettings = props => (
<svg viewBox="0 0 24 24" width="1em" height="1em" {...props}> <svg width="1em" height="1em" viewBox="0 0 24 24" {...props}>
<g <g
transform="translate(1 1)" transform="translate(1 1)"
stroke="currentColor" stroke="currentColor"
fill="none" fill="none"
fillRule="evenodd" fillRule="evenodd"
strokeLinecap="round" strokeLinecap="round"
opacity={0.7}
strokeLinejoin="round" strokeLinejoin="round"
> >
<circle cx={11} cy={11} r={3} /> <circle cx={11} cy={11} r={3} />

2
app/components/Icon/SkinnyBitcoin.js

@ -1,7 +1,7 @@
import React from 'react' import React from 'react'
const SvgSkinnyBitcoin = props => ( const SvgSkinnyBitcoin = props => (
<svg viewBox="0 0 25 42" width="1em" height="1em" {...props}> <svg width="1em" height="1em" viewBox="0 0 25 42" {...props}>
<g fillRule="nonzero" fill="currentColor"> <g fillRule="nonzero" fill="currentColor">
<path d="M16.667 38H.833A.842.842 0 0 1 0 37.15V4.85C0 4.38.373 4 .833 4h12.5c4.595 0 8.334 3.813 8.334 8.5 0 2.86-1.39 5.392-3.519 6.934C22.038 20.148 25 23.628 25 27.8v1.7c0 4.687-3.738 8.5-8.333 8.5zm-15-1.7h15c3.676 0 6.666-3.05 6.666-6.8v-1.7c0-3.75-2.99-6.8-6.666-6.8h-15v15.3zm0-17h11.666C17.01 19.3 20 16.25 20 12.5s-2.99-6.8-6.667-6.8H1.667v13.6z" /> <path d="M16.667 38H.833A.842.842 0 0 1 0 37.15V4.85C0 4.38.373 4 .833 4h12.5c4.595 0 8.334 3.813 8.334 8.5 0 2.86-1.39 5.392-3.519 6.934C22.038 20.148 25 23.628 25 27.8v1.7c0 4.687-3.738 8.5-8.333 8.5zm-15-1.7h15c3.676 0 6.666-3.05 6.666-6.8v-1.7c0-3.75-2.99-6.8-6.666-6.8h-15v15.3zm0-17h11.666C17.01 19.3 20 16.25 20 12.5s-2.99-6.8-6.667-6.8H1.667v13.6z" />
<path d="M6 5c-.552 0-1-.373-1-.833V.833C5 .373 5.448 0 6 0s1 .373 1 .833v3.334C7 4.627 6.554 5 6 5zM12 5c-.552 0-1-.373-1-.833V.833c0-.46.448-.833 1-.833s1 .373 1 .833v3.334c0 .46-.446.833-1 .833zM6 42c-.552 0-1-.373-1-.833v-3.334c0-.46.448-.833 1-.833s1 .373 1 .833v3.334c0 .46-.446.833-1 .833zM12 42c-.552 0-1-.373-1-.833v-3.334c0-.46.448-.833 1-.833s1 .373 1 .833v3.334c0 .46-.446.833-1 .833z" /> <path d="M6 5c-.552 0-1-.373-1-.833V.833C5 .373 5.448 0 6 0s1 .373 1 .833v3.334C7 4.627 6.554 5 6 5zM12 5c-.552 0-1-.373-1-.833V.833c0-.46.448-.833 1-.833s1 .373 1 .833v3.334c0 .46-.446.833-1 .833zM6 42c-.552 0-1-.373-1-.833v-3.334c0-.46.448-.833 1-.833s1 .373 1 .833v3.334c0 .46-.446.833-1 .833zM12 42c-.552 0-1-.373-1-.833v-3.334c0-.46.448-.833 1-.833s1 .373 1 .833v3.334c0 .46-.446.833-1 .833z" />

12
app/components/Icon/Spinner.js

@ -1,20 +1,14 @@
import React from 'react' import React from 'react'
const SvgSpinner = props => ( const SvgSpinner = props => (
<svg <svg width="1em" height="1em" viewBox="0 0 14 14" {...props}>
xmlnsXlink="http://www.w3.org/1999/xlink"
viewBox="0 0 14 14"
width="1em"
height="1em"
{...props}
>
<defs> <defs>
<path <path
id="d" id="spinner_svg__a"
d="M0 7a.778.778 0 1 1 1.556 0c0 1.464.58 2.835 1.594 3.85a5.444 5.444 0 1 0 1.766-8.881A.778.778 0 1 1 4.32.53 7 7 0 1 1 0 7z" d="M0 7a.778.778 0 1 1 1.556 0c0 1.464.58 2.835 1.594 3.85a5.444 5.444 0 1 0 1.766-8.881A.778.778 0 1 1 4.32.53 7 7 0 1 1 0 7z"
/> />
</defs> </defs>
<use fill="currentColor" xlinkHref="#d" /> <use fill="currentColor" xlinkHref="#spinner_svg__a" />
</svg> </svg>
) )

12
app/components/Icon/Success.js

@ -1,20 +1,14 @@
import React from 'react' import React from 'react'
const SvgSuccess = props => ( const SvgSuccess = props => (
<svg <svg width="1em" height="1em" viewBox="0 0 17 17" {...props}>
xmlnsXlink="http://www.w3.org/1999/xlink"
viewBox="0 0 17 17"
width="1em"
height="1em"
{...props}
>
<defs> <defs>
<path <path
id="a" id="success_svg__a"
d="M8.333 16.667A8.333 8.333 0 1 1 8.333 0a8.333 8.333 0 0 1 0 16.667zM11.095 5.66l-4.41 4.41-1.513-1.51a.833.833 0 1 0-1.179 1.178l2.101 2.101a.833.833 0 0 0 1.179 0l5-5a.833.833 0 0 0-1.179-1.178z" d="M8.333 16.667A8.333 8.333 0 1 1 8.333 0a8.333 8.333 0 0 1 0 16.667zM11.095 5.66l-4.41 4.41-1.513-1.51a.833.833 0 1 0-1.179 1.178l2.101 2.101a.833.833 0 0 0 1.179 0l5-5a.833.833 0 0 0-1.179-1.178z"
/> />
</defs> </defs>
<use fill="currentColor" fillRule="evenodd" xlinkHref="#a" /> <use fill="currentColor" fillRule="evenodd" xlinkHref="#success_svg__a" />
</svg> </svg>
) )

6
app/components/Icon/User.js

@ -2,15 +2,15 @@ import React from 'react'
const SvgUser = props => ( const SvgUser = props => (
<svg <svg
width="1em"
height="1em"
viewBox="0 0 24 24" viewBox="0 0 24 24"
fill="none" fill="none"
stroke="currentColor" stroke="currentColor"
strokeWidth={2} strokeWidth={2}
strokeLinecap="round" strokeLinecap="round"
strokeLinejoin="round" strokeLinejoin="round"
className="feather feather-user" className="user_svg__feather user_svg__feather-user"
width="1em"
height="1em"
{...props} {...props}
> >
<path d="M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2" /> <path d="M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2" />

2
app/components/Icon/Wallet.js

@ -1,7 +1,7 @@
import React from 'react' import React from 'react'
const SvgWallet = props => ( const SvgWallet = props => (
<svg viewBox="0 0 25 23" width="1em" height="1em" {...props}> <svg width="1em" height="1em" viewBox="0 0 25 23" {...props}>
<g fill="currentColor" fillRule="evenodd"> <g fill="currentColor" fillRule="evenodd">
<path d="M22.9 22.822H2.1c-1.158 0-2.1-.942-2.1-2.1V4.869c0-.21.129-.388.311-.463a1.755 1.755 0 0 1-.176-.343.5.5 0 0 1 .933-.36c.256.666 1.342.674 1.815.666H22.9c1.158 0 2.1.942 2.1 2.1v14.253c0 1.158-.942 2.1-2.1 2.1zM1 5.018v15.704c0 .606.494 1.1 1.1 1.1h20.8c.607 0 1.1-.494 1.1-1.1V6.469c0-.606-.493-1.1-1.1-1.1H2.901c-.402.02-1.232 0-1.901-.351z" /> <path d="M22.9 22.822H2.1c-1.158 0-2.1-.942-2.1-2.1V4.869c0-.21.129-.388.311-.463a1.755 1.755 0 0 1-.176-.343.5.5 0 0 1 .933-.36c.256.666 1.342.674 1.815.666H22.9c1.158 0 2.1.942 2.1 2.1v14.253c0 1.158-.942 2.1-2.1 2.1zM1 5.018v15.704c0 .606.494 1.1 1.1 1.1h20.8c.607 0 1.1-.494 1.1-1.1V6.469c0-.606-.493-1.1-1.1-1.1H2.901c-.402.02-1.232 0-1.901-.351z" />
<path d="M22.318 5.305a.5.5 0 0 1-.5-.5V1.829c0-.274-.099-.508-.28-.656-.181-.15-.428-.203-.695-.15L2.149 2.833C1.071 3.074 1 3.96.999 3.97l.001.75a.5.5 0 0 1-1 0v-.783c.039-.6.503-1.761 1.993-2.088L20.699.035A1.789 1.789 0 0 1 22.174.4c.409.338.644.859.644 1.429v2.976c0 .277-.223.5-.5.5M19.916 14.997a1.301 1.301 0 1 1 1.3-1.301c0 .717-.583 1.3-1.3 1.3zm0-1.6a.3.3 0 1 0-.001.598.3.3 0 0 0 .001-.598z" /> <path d="M22.318 5.305a.5.5 0 0 1-.5-.5V1.829c0-.274-.099-.508-.28-.656-.181-.15-.428-.203-.695-.15L2.149 2.833C1.071 3.074 1 3.96.999 3.97l.001.75a.5.5 0 0 1-1 0v-.783c.039-.6.503-1.761 1.993-2.088L20.699.035A1.789 1.789 0 0 1 22.174.4c.409.338.644.859.644 1.429v2.976c0 .277-.223.5-.5.5M19.916 14.997a1.301 1.301 0 1 1 1.3-1.301c0 .717-.583 1.3-1.3 1.3zm0-1.6a.3.3 0 1 0-.001.598.3.3 0 0 0 .001-.598z" />

2
app/components/Icon/Wallet2.js

@ -1,7 +1,7 @@
import React from 'react' import React from 'react'
const SvgWallet2 = props => ( const SvgWallet2 = props => (
<svg viewBox="0 0 18 16" width="1em" height="1em" {...props}> <svg width="1em" height="1em" viewBox="0 0 18 16" {...props}>
<g fill="currentColor" fillRule="evenodd"> <g fill="currentColor" fillRule="evenodd">
<path d="M16.488 15.876H1.512C.678 15.876 0 15.22 0 14.415V3.387a.35.35 0 0 1 .224-.322 1.206 1.206 0 0 1-.127-.239.345.345 0 0 1 .207-.45.365.365 0 0 1 .465.2c.184.463.966.469 1.307.463h14.412c.834 0 1.512.655 1.512 1.46v9.916c0 .806-.678 1.46-1.512 1.46zM.72 3.49v10.924c0 .422.356.765.792.765h14.976a.78.78 0 0 0 .792-.765V4.5a.78.78 0 0 0-.792-.765h-14.4c-.289.014-.886 0-1.368-.244z" /> <path d="M16.488 15.876H1.512C.678 15.876 0 15.22 0 14.415V3.387a.35.35 0 0 1 .224-.322 1.206 1.206 0 0 1-.127-.239.345.345 0 0 1 .207-.45.365.365 0 0 1 .465.2c.184.463.966.469 1.307.463h14.412c.834 0 1.512.655 1.512 1.46v9.916c0 .806-.678 1.46-1.512 1.46zM.72 3.49v10.924c0 .422.356.765.792.765h14.976a.78.78 0 0 0 .792-.765V4.5a.78.78 0 0 0-.792-.765h-14.4c-.289.014-.886 0-1.368-.244z" />
<path d="M16.069 3.69a.354.354 0 0 1-.36-.348v-2.07a.565.565 0 0 0-.202-.456.607.607 0 0 0-.5-.105l-13.46 1.26c-.776.167-.827.784-.828.79l.001.522a.354.354 0 0 1-.36.347.354.354 0 0 1-.36-.347v-.545c.028-.418.362-1.225 1.435-1.453L14.903.025c.368-.073.768.02 1.062.253.295.235.464.598.464.994v2.07c0 .193-.16.348-.36.348M14.34 10.432c-.517 0-.936-.406-.936-.905 0-.498.42-.903.936-.903s.936.405.936.903c0 .5-.42.905-.936.905zm0-1.113a.212.212 0 0 0-.216.208c0 .116.096.21.216.21a.213.213 0 0 0 .216-.21.212.212 0 0 0-.216-.208z" /> <path d="M16.069 3.69a.354.354 0 0 1-.36-.348v-2.07a.565.565 0 0 0-.202-.456.607.607 0 0 0-.5-.105l-13.46 1.26c-.776.167-.827.784-.828.79l.001.522a.354.354 0 0 1-.36.347.354.354 0 0 1-.36-.347v-.545c.028-.418.362-1.225 1.435-1.453L14.903.025c.368-.073.768.02 1.062.253.295.235.464.598.464.994v2.07c0 .193-.16.348-.36.348M14.34 10.432c-.517 0-.936-.406-.936-.905 0-.498.42-.903.936-.903s.936.405.936.903c0 .5-.42.905-.936.905zm0-1.113a.212.212 0 0 0-.216.208c0 .116.096.21.216.21a.213.213 0 0 0 .216-.21.212.212 0 0 0-.216-.208z" />

12
app/components/Icon/X.js

@ -1,16 +1,10 @@
import React from 'react' import React from 'react'
const SvgX = props => ( const SvgX = props => (
<svg <svg width="1em" height="1em" viewBox="0 0 22 20" {...props}>
xmlnsXlink="http://www.w3.org/1999/xlink"
viewBox="0 0 22 20"
width="1em"
height="1em"
{...props}
>
<defs> <defs>
<path <path
id="a" id="x_svg__a"
d="M10 10L0 20l10-10L0 0l10 10L20 0l-8.394 8.394L10 10l1.606 1.606L20 20 10 10z" d="M10 10L0 20l10-10L0 0l10 10L20 0l-8.394 8.394L10 10l1.606 1.606L20 20 10 10z"
/> />
</defs> </defs>
@ -21,7 +15,7 @@ const SvgX = props => (
strokeLinecap="round" strokeLinecap="round"
strokeLinejoin="round" strokeLinejoin="round"
transform="translate(1)" transform="translate(1)"
xlinkHref="#a" xlinkHref="#x_svg__a"
/> />
</svg> </svg>
) )

6
app/components/Icon/Zap.js

@ -2,15 +2,15 @@ import React from 'react'
const SvgZap = props => ( const SvgZap = props => (
<svg <svg
width="1em"
height="1em"
viewBox="0 0 24 24" viewBox="0 0 24 24"
fill="none" fill="none"
stroke="currentColor" stroke="currentColor"
strokeWidth={2} strokeWidth={2}
strokeLinecap="round" strokeLinecap="round"
strokeLinejoin="round" strokeLinejoin="round"
className="feather feather-zap" className="zap_svg__feather zap_svg__feather-zap"
width="1em"
height="1em"
{...props} {...props}
> >
<path d="M13 2L3 14h9l-1 8 10-12h-9l1-8z" /> <path d="M13 2L3 14h9l-1 8 10-12h-9l1-8z" />

2
app/components/Icon/ZapLogo.js

@ -1,7 +1,7 @@
import React from 'react' import React from 'react'
const SvgZapLogo = props => ( const SvgZapLogo = props => (
<svg viewBox="0 0 60 21" width="1em" height="1em" {...props}> <svg width="1em" height="1em" viewBox="0 0 60 21" {...props}>
<g fill="none" fillRule="evenodd"> <g fill="none" fillRule="evenodd">
<path <path
d="M29.533 15.014h6.865V16h-8.31v-.86l6.406-8.7h-6.21V5.433h7.685v.869l-6.436 8.71zM46.158 16c-.117-.332-.192-.824-.224-1.475-.41.534-.933.946-1.568 1.236a4.8 4.8 0 0 1-2.016.434c-1.016 0-1.838-.283-2.466-.85-.628-.566-.943-1.282-.943-2.148 0-1.028.428-1.842 1.285-2.441.856-.6 2.049-.899 3.579-.899h2.119v-1.2c0-.756-.233-1.35-.698-1.783-.466-.433-1.145-.65-2.037-.65-.813 0-1.487.209-2.021.626-.534.416-.8.918-.8 1.504l-1.173-.01c0-.84.39-1.568 1.172-2.183.781-.615 1.742-.923 2.881-.923 1.178 0 2.108.295 2.788.884.68.59 1.03 1.411 1.05 2.466v5c0 1.022.107 1.787.322 2.295V16h-1.25zm-3.672-.84c.782 0 1.48-.189 2.095-.566a3.333 3.333 0 0 0 1.343-1.514v-2.324h-2.09c-1.165.013-2.077.226-2.734.64-.658.413-.987.98-.987 1.704 0 .592.22 1.084.66 1.474.439.39 1.01.586 1.713.586zm17.211-4.336c0 1.647-.364 2.954-1.093 3.921-.73.967-1.706 1.45-2.93 1.45-1.445 0-2.552-.507-3.32-1.523v5.39H51.19V5.434h1.084l.059 1.494c.762-1.127 1.865-1.69 3.31-1.69 1.264 0 2.255.479 2.974 1.436.72.957 1.08 2.285 1.08 3.984v.166zm-1.172-.205c0-1.348-.276-2.412-.83-3.193-.553-.781-1.325-1.172-2.314-1.172-.716 0-1.332.172-1.846.517-.514.346-.908.847-1.181 1.504v5.069c.28.605.68 1.067 1.2 1.386.522.32 1.137.479 1.846.479.983 0 1.75-.392 2.3-1.177.55-.784.825-1.922.825-3.413z" d="M29.533 15.014h6.865V16h-8.31v-.86l6.406-8.7h-6.21V5.433h7.685v.869l-6.436 8.71zM46.158 16c-.117-.332-.192-.824-.224-1.475-.41.534-.933.946-1.568 1.236a4.8 4.8 0 0 1-2.016.434c-1.016 0-1.838-.283-2.466-.85-.628-.566-.943-1.282-.943-2.148 0-1.028.428-1.842 1.285-2.441.856-.6 2.049-.899 3.579-.899h2.119v-1.2c0-.756-.233-1.35-.698-1.783-.466-.433-1.145-.65-2.037-.65-.813 0-1.487.209-2.021.626-.534.416-.8.918-.8 1.504l-1.173-.01c0-.84.39-1.568 1.172-2.183.781-.615 1.742-.923 2.881-.923 1.178 0 2.108.295 2.788.884.68.59 1.03 1.411 1.05 2.466v5c0 1.022.107 1.787.322 2.295V16h-1.25zm-3.672-.84c.782 0 1.48-.189 2.095-.566a3.333 3.333 0 0 0 1.343-1.514v-2.324h-2.09c-1.165.013-2.077.226-2.734.64-.658.413-.987.98-.987 1.704 0 .592.22 1.084.66 1.474.439.39 1.01.586 1.713.586zm17.211-4.336c0 1.647-.364 2.954-1.093 3.921-.73.967-1.706 1.45-2.93 1.45-1.445 0-2.552-.507-3.32-1.523v5.39H51.19V5.434h1.084l.059 1.494c.762-1.127 1.865-1.69 3.31-1.69 1.264 0 2.255.479 2.974 1.436.72.957 1.08 2.285 1.08 3.984v.166zm-1.172-.205c0-1.348-.276-2.412-.83-3.193-.553-.781-1.325-1.172-2.314-1.172-.716 0-1.332.172-1.846.517-.514.346-.908.847-1.181 1.504v5.069c.28.605.68 1.067 1.2 1.386.522.32 1.137.479 1.846.479.983 0 1.75-.392 2.3-1.177.55-.784.825-1.922.825-3.413z"

2
app/components/Icon/ZapLogoBlack.js

@ -1,7 +1,7 @@
import React from 'react' import React from 'react'
const SvgZapLogoBlack = props => ( const SvgZapLogoBlack = props => (
<svg viewBox="0 0 60 21" width="1em" height="1em" {...props}> <svg width="1em" height="1em" viewBox="0 0 60 21" {...props}>
<g fill="none" fillRule="evenodd"> <g fill="none" fillRule="evenodd">
<path <path
d="M29.533 15.014h6.865V16h-8.31v-.86l6.406-8.7h-6.21V5.433h7.685v.869l-6.436 8.71zM46.158 16c-.117-.332-.192-.824-.224-1.475-.41.534-.933.946-1.568 1.236a4.8 4.8 0 0 1-2.016.434c-1.016 0-1.838-.283-2.466-.85-.628-.566-.943-1.282-.943-2.148 0-1.028.428-1.842 1.285-2.441.856-.6 2.049-.899 3.579-.899h2.119v-1.2c0-.756-.233-1.35-.698-1.783-.466-.433-1.145-.65-2.037-.65-.813 0-1.487.209-2.021.626-.534.416-.8.918-.8 1.504l-1.173-.01c0-.84.39-1.568 1.172-2.183.781-.615 1.742-.923 2.881-.923 1.178 0 2.108.295 2.788.884.68.59 1.03 1.411 1.05 2.466v5c0 1.022.107 1.787.322 2.295V16h-1.25zm-3.672-.84c.782 0 1.48-.189 2.095-.566a3.333 3.333 0 0 0 1.343-1.514v-2.324h-2.09c-1.165.013-2.077.226-2.734.64-.658.413-.987.98-.987 1.704 0 .592.22 1.084.66 1.474.439.39 1.01.586 1.713.586zm17.211-4.336c0 1.647-.364 2.954-1.093 3.921-.73.967-1.706 1.45-2.93 1.45-1.445 0-2.552-.507-3.32-1.523v5.39H51.19V5.434h1.084l.059 1.494c.762-1.127 1.865-1.69 3.31-1.69 1.264 0 2.255.479 2.974 1.436.72.957 1.08 2.285 1.08 3.984v.166zm-1.172-.205c0-1.348-.276-2.412-.83-3.193-.553-.781-1.325-1.172-2.314-1.172-.716 0-1.332.172-1.846.517-.514.346-.908.847-1.181 1.504v5.069c.28.605.68 1.067 1.2 1.386.522.32 1.137.479 1.846.479.983 0 1.75-.392 2.3-1.177.55-.784.825-1.922.825-3.413z" d="M29.533 15.014h6.865V16h-8.31v-.86l6.406-8.7h-6.21V5.433h7.685v.869l-6.436 8.71zM46.158 16c-.117-.332-.192-.824-.224-1.475-.41.534-.933.946-1.568 1.236a4.8 4.8 0 0 1-2.016.434c-1.016 0-1.838-.283-2.466-.85-.628-.566-.943-1.282-.943-2.148 0-1.028.428-1.842 1.285-2.441.856-.6 2.049-.899 3.579-.899h2.119v-1.2c0-.756-.233-1.35-.698-1.783-.466-.433-1.145-.65-2.037-.65-.813 0-1.487.209-2.021.626-.534.416-.8.918-.8 1.504l-1.173-.01c0-.84.39-1.568 1.172-2.183.781-.615 1.742-.923 2.881-.923 1.178 0 2.108.295 2.788.884.68.59 1.03 1.411 1.05 2.466v5c0 1.022.107 1.787.322 2.295V16h-1.25zm-3.672-.84c.782 0 1.48-.189 2.095-.566a3.333 3.333 0 0 0 1.343-1.514v-2.324h-2.09c-1.165.013-2.077.226-2.734.64-.658.413-.987.98-.987 1.704 0 .592.22 1.084.66 1.474.439.39 1.01.586 1.713.586zm17.211-4.336c0 1.647-.364 2.954-1.093 3.921-.73.967-1.706 1.45-2.93 1.45-1.445 0-2.552-.507-3.32-1.523v5.39H51.19V5.434h1.084l.059 1.494c.762-1.127 1.865-1.69 3.31-1.69 1.264 0 2.255.479 2.974 1.436.72.957 1.08 2.285 1.08 3.984v.166zm-1.172-.205c0-1.348-.276-2.412-.83-3.193-.553-.781-1.325-1.172-2.314-1.172-.716 0-1.332.172-1.846.517-.514.346-.908.847-1.181 1.504v5.069c.28.605.68 1.067 1.2 1.386.522.32 1.137.479 1.846.479.983 0 1.75-.392 2.3-1.177.55-.784.825-1.922.825-3.413z"

10
app/components/Pay/Pay.js

@ -11,7 +11,7 @@ import {
Dropdown, Dropdown,
FiatAmountInput, FiatAmountInput,
Form, Form,
FormFieldMessage, Message,
Label, Label,
LightningInvoiceInput, LightningInvoiceInput,
Panel, Panel,
@ -699,16 +699,16 @@ class Pay extends React.Component {
{currentStep === 'summary' && {currentStep === 'summary' &&
!isQueryingRoutes && !isQueryingRoutes &&
!hasRoute && ( !hasRoute && (
<FormFieldMessage variant="error" justifyContent="center" mb={2}> <Message variant="error" justifyContent="center" mb={2}>
<FormattedMessage {...messages.error_no_route} /> <FormattedMessage {...messages.error_no_route} />
</FormFieldMessage> </Message>
)} )}
{currentStep === 'summary' && {currentStep === 'summary' &&
!hasEnoughFunds && ( !hasEnoughFunds && (
<FormFieldMessage variant="error" justifyContent="center" mb={2}> <Message variant="error" justifyContent="center" mb={2}>
<FormattedMessage {...messages.error_not_enough_funds} /> <FormattedMessage {...messages.error_not_enough_funds} />
</FormFieldMessage> </Message>
)} )}
<PayButtons <PayButtons

10
app/components/Pay/PaySummaryLightning.js

@ -5,9 +5,7 @@ import { FormattedNumber, FormattedMessage } from 'react-intl'
import { satoshisToFiat } from 'lib/utils/btc' import { satoshisToFiat } from 'lib/utils/btc'
import { decodePayReq, getNodeAlias } from 'lib/utils/crypto' import { decodePayReq, getNodeAlias } from 'lib/utils/crypto'
import BigArrowRight from 'components/Icon/BigArrowRight' import BigArrowRight from 'components/Icon/BigArrowRight'
import { Bar, Dropdown, Spinner, Text, Truncate } from 'components/UI' import { Bar, DataRow, Dropdown, Spinner, Text, Truncate, Value } from 'components/UI'
import Value from 'components/Value'
import { PaySummaryRow } from '.'
import messages from './messages' import messages from './messages'
class PaySummaryLightning extends React.PureComponent { class PaySummaryLightning extends React.PureComponent {
@ -133,7 +131,7 @@ class PaySummaryLightning extends React.PureComponent {
<Bar /> <Bar />
<PaySummaryRow <DataRow
left={<FormattedMessage {...messages.fee} />} left={<FormattedMessage {...messages.fee} />}
right={ right={
isQueryingRoutes ? ( isQueryingRoutes ? (
@ -152,7 +150,7 @@ class PaySummaryLightning extends React.PureComponent {
<Bar /> <Bar />
<PaySummaryRow <DataRow
left={<FormattedMessage {...messages.total} />} left={<FormattedMessage {...messages.total} />}
right={ right={
<React.Fragment> <React.Fragment>
@ -163,7 +161,7 @@ class PaySummaryLightning extends React.PureComponent {
<Bar /> <Bar />
{memo && <PaySummaryRow left={<FormattedMessage {...messages.memo} />} right={memo} />} {memo && <DataRow left={<FormattedMessage {...messages.memo} />} right={memo} />}
</Box> </Box>
) )
} }

8
app/components/Pay/PaySummaryOnChain.js

@ -5,9 +5,7 @@ import { FormattedNumber, FormattedMessage } from 'react-intl'
import get from 'lodash.get' import get from 'lodash.get'
import { satoshisToFiat } from 'lib/utils/btc' import { satoshisToFiat } from 'lib/utils/btc'
import BigArrowRight from 'components/Icon/BigArrowRight' import BigArrowRight from 'components/Icon/BigArrowRight'
import { Bar, Dropdown, Spinner, Text, Truncate } from 'components/UI' import { Bar, DataRow, Dropdown, Spinner, Text, Truncate, Value } from 'components/UI'
import Value from 'components/Value'
import { PaySummaryRow } from '.'
import messages from './messages' import messages from './messages'
class PaySummaryOnChain extends React.Component { class PaySummaryOnChain extends React.Component {
@ -111,7 +109,7 @@ class PaySummaryOnChain extends React.Component {
<Bar /> <Bar />
<PaySummaryRow <DataRow
left={<FormattedMessage {...messages.fee} />} left={<FormattedMessage {...messages.fee} />}
right={ right={
isQueryingFees ? ( isQueryingFees ? (
@ -139,7 +137,7 @@ class PaySummaryOnChain extends React.Component {
<Bar /> <Bar />
<PaySummaryRow <DataRow
left={<FormattedMessage {...messages.total} />} left={<FormattedMessage {...messages.total} />}
right={ right={
<React.Fragment> <React.Fragment>

24
app/components/Pay/PaySummaryRow.js

@ -1,24 +0,0 @@
import React from 'react'
import PropTypes from 'prop-types'
import { Box, Flex } from 'rebass'
import { Text } from 'components/UI'
const PaySummaryRow = ({ left, right }) => (
<Box py={3}>
<Flex alignItems="center">
<Box width={1 / 2}>
<Text fontWeight="normal">{left}</Text>
</Box>
<Box width={1 / 2}>
<Text textAlign="right">{right}</Text>
</Box>
</Flex>
</Box>
)
PaySummaryRow.propTypes = {
left: PropTypes.any,
right: PropTypes.any
}
export default PaySummaryRow

1
app/components/Pay/index.js

@ -3,4 +3,3 @@ export PayButtons from './PayButtons'
export PayHeader from './PayHeader' export PayHeader from './PayHeader'
export PaySummaryLightning from './PaySummaryLightning' export PaySummaryLightning from './PaySummaryLightning'
export PaySummaryOnChain from './PaySummaryOnChain' export PaySummaryOnChain from './PaySummaryOnChain'
export PaySummaryRow from './PaySummaryRow'

14
app/components/Request/RequestSummary.js

@ -5,9 +5,7 @@ import { FormattedMessage, FormattedRelative, injectIntl } from 'react-intl'
import { decodePayReq } from 'lib/utils/crypto' import { decodePayReq } from 'lib/utils/crypto'
import { showNotification } from 'lib/utils/notifications' import { showNotification } from 'lib/utils/notifications'
import copy from 'copy-to-clipboard' import copy from 'copy-to-clipboard'
import { Bar, Button, Dropdown, QRCode, Text, Truncate } from 'components/UI' import { Bar, DataRow, Button, Dropdown, QRCode, Text, Truncate, Value } from 'components/UI'
import Value from 'components/Value'
import { PaySummaryRow } from '../Pay'
import messages from './messages' import messages from './messages'
class RequestSummary extends React.Component { class RequestSummary extends React.Component {
@ -96,11 +94,11 @@ class RequestSummary extends React.Component {
<Box {...rest}> <Box {...rest}>
{memo && ( {memo && (
<React.Fragment> <React.Fragment>
<PaySummaryRow left={<FormattedMessage {...messages.memo} />} right={memo} /> <Bar />{' '} <DataRow left={<FormattedMessage {...messages.memo} />} right={memo} /> <Bar />{' '}
</React.Fragment> </React.Fragment>
)} )}
<PaySummaryRow <DataRow
left={<FormattedMessage {...messages.amount} />} left={<FormattedMessage {...messages.amount} />}
right={ right={
<Flex alignItems="center" justifyContent="flex-end"> <Flex alignItems="center" justifyContent="flex-end">
@ -118,7 +116,7 @@ class RequestSummary extends React.Component {
<Bar /> <Bar />
<PaySummaryRow <DataRow
left={<FormattedMessage {...messages.qrcode} />} left={<FormattedMessage {...messages.qrcode} />}
right={ right={
<Text> <Text>
@ -129,7 +127,7 @@ class RequestSummary extends React.Component {
<Bar /> <Bar />
<PaySummaryRow <DataRow
left={<FormattedMessage {...messages.ln_invoice} />} left={<FormattedMessage {...messages.ln_invoice} />}
right=<React.Fragment> right=<React.Fragment>
<Text <Text
@ -150,7 +148,7 @@ class RequestSummary extends React.Component {
<Bar /> <Bar />
<PaySummaryRow <DataRow
left={<FormattedMessage {...messages.status} />} left={<FormattedMessage {...messages.status} />}
right={ right={
<React.Fragment> <React.Fragment>

0
app/components/AmountInput/AmountInput.js → app/components/UI/AmountInput.js

7
app/components/UI/Button.js

@ -39,7 +39,7 @@ class Button extends React.PureComponent {
} }
render() { render() {
let { children, processing, size, ...rest } = this.props let { children, processing, size, variant, ...rest } = this.props
const sizes = { const sizes = {
small: { small: {
x: 3, x: 3,
@ -52,9 +52,12 @@ class Button extends React.PureComponent {
} }
size = sizes[size] || sizes['medium'] size = sizes[size] || sizes['medium']
if (variant === 'secondary') {
size.x = 0
}
return ( return (
<Wrapper px={size['x']} py={size['y']} {...rest}> <Wrapper px={size['x']} py={size['y']} variant={variant} {...rest}>
{processing ? ( {processing ? (
<Flex alignItems="center"> <Flex alignItems="center">
{processing && <Spinner />} {processing && <Spinner />}

85
app/components/UI/Countdown.js

@ -0,0 +1,85 @@
import React from 'react'
import PropTypes from 'prop-types'
import { FormattedMessage, FormattedRelative } from 'react-intl'
import { Text } from 'components/UI'
import messages from './messages'
class Countdown extends React.Component {
state = {
isExpired: null,
timer: null
}
static propTypes = {
colorActive: PropTypes.string,
colorExpired: PropTypes.string,
date: PropTypes.oneOfType([PropTypes.number, PropTypes.instanceOf(Date)]).isRequired,
countdownStyle: PropTypes.string,
countUpAfterExpire: PropTypes.bool,
updateInterval: PropTypes.number
}
static defaultProps = {
colorActive: 'superGreen',
colorExpired: 'superRed',
countdownStyle: 'best fit',
countUpAfterExpire: true,
updateInterval: 1000
}
componentDidMount() {
let { date } = this.props
if (date instanceof Date) {
date = new Date(date)
}
const expiresIn = date - Date.now()
if (expiresIn >= 0) {
this.setState({ isExpired: false })
const timer = setInterval(() => this.setState({ isExpired: true }), expiresIn)
this.setState({ timer })
} else {
this.setState({ isExpired: true })
}
}
componentWillUnmount() {
const { timer } = this.state
clearInterval(timer)
}
render() {
const {
colorActive,
colorExpired,
countdownStyle,
countUpAfterExpire,
date,
updateInterval,
...rest
} = this.props
const { isExpired } = this.state
return (
<Text color={isExpired ? colorExpired : colorActive} {...rest}>
{isExpired ? (
<FormattedMessage {...messages.expired} />
) : (
<FormattedMessage {...messages.expires} />
)}
{(!isExpired || (isExpired && countUpAfterExpire)) && (
<React.Fragment>
{` `}
<FormattedRelative
value={new Date(date)}
updateInterval={updateInterval}
style={countdownStyle}
/>
</React.Fragment>
)}
</Text>
)
}
}
export default Countdown

22
app/components/UI/DataRow.js

@ -0,0 +1,22 @@
import React from 'react'
import PropTypes from 'prop-types'
import { Flex } from 'rebass'
import { Text } from 'components/UI'
const DataRow = ({ left, right }) => (
<Flex alignItems="center" py={3}>
<Text width={1 / 2} fontWeight="normal">
{left}
</Text>
<Text width={1 / 2} textAlign="right">
{right}
</Text>
</Flex>
)
DataRow.propTypes = {
left: PropTypes.any,
right: PropTypes.any
}
export default DataRow

6
app/components/UI/GlobalStyle.js

@ -23,6 +23,7 @@ const GlobalStyle = createGlobalStyle`
html { html {
box-sizing: border-box; box-sizing: border-box;
height: 100%;
} }
*, *:before, *:after { *, *:before, *:after {
@ -30,6 +31,7 @@ const GlobalStyle = createGlobalStyle`
} }
body { body {
height: 100%;
position: relative; position: relative;
overflow-y: hidden; overflow-y: hidden;
-webkit-font-smoothing: antialiased; -webkit-font-smoothing: antialiased;
@ -39,6 +41,10 @@ const GlobalStyle = createGlobalStyle`
font-size: 13px; font-size: 13px;
} }
#root {
height: 100%;
}
.element-show { .element-show {
display: inherit; display: inherit;
} }

10
app/components/UI/Input.js

@ -4,7 +4,7 @@ import { withTheme } from 'styled-components'
import system from '@rebass/components' import system from '@rebass/components'
import { styles } from 'styled-system' import { styles } from 'styled-system'
import { Flex } from 'rebass' import { Flex } from 'rebass'
import { FormFieldMessage } from 'components/UI' import { Message } from 'components/UI'
// Create an html input element that accepts all style props from styled-system. // Create an html input element that accepts all style props from styled-system.
const SystemInput = system( const SystemInput = system(
@ -120,13 +120,9 @@ class Input extends React.Component {
error={fieldState.error} error={fieldState.error}
/> />
{fieldState.error && ( {fieldState.error && (
<FormFieldMessage <Message variant={hasFocus ? 'warning' : 'error'} justifyContent={justifyContent} mt={2}>
variant={hasFocus ? 'warning' : 'error'}
justifyContent={justifyContent}
mt={2}
>
{fieldState.error} {fieldState.error}
</FormFieldMessage> </Message>
)} )}
</Flex> </Flex>
) )

6
app/components/UI/LightningInvoiceInput.js

@ -4,7 +4,7 @@ import { FormattedMessage, injectIntl } from 'react-intl'
import { asField } from 'informed' import { asField } from 'informed'
import { isOnchain, isLn } from 'lib/utils/crypto' import { isOnchain, isLn } from 'lib/utils/crypto'
import TextArea from 'components/UI/TextArea' import TextArea from 'components/UI/TextArea'
import FormFieldMessage from 'components/UI/FormFieldMessage' import Message from 'components/UI/Message'
import messages from './messages' import messages from './messages'
/** /**
@ -76,14 +76,14 @@ const InformedTextArea = asField(({ fieldState, fieldApi, ...props }) => {
<TextArea {...rest} /> <TextArea {...rest} />
{value && {value &&
!fieldState.error && ( !fieldState.error && (
<FormFieldMessage variant="success" mt={2}> <Message variant="success" mt={2}>
<FormattedMessage <FormattedMessage
{...messages.valid_request} {...messages.valid_request}
values={{ values={{
chain: chainName chain: chainName
}} }}
/> />
</FormFieldMessage> </Message>
)} )}
</React.Fragment> </React.Fragment>
) )

16
app/components/UI/FormFieldMessage.js → app/components/UI/Message.js

@ -9,16 +9,16 @@ import styled from 'styled-components'
import { variant } from 'styled-system' import { variant } from 'styled-system'
const messageStyle = variant({ key: 'messages' }) const messageStyle = variant({ key: 'messages' })
const Message = styled(Flex)(messageStyle) const StyledMessage = styled(Flex)(messageStyle)
/** /**
* @render react * @render react
* @name FormFieldMessage * @name Message
* @example * @example
* <FormFieldMessage message="Error message" /> * <Message message="Error message" />
*/ */
class FormFieldMessage extends React.Component { class Message extends React.Component {
static displayName = 'FormFieldMessage' static displayName = 'Message'
static propTypes = { static propTypes = {
variant: PropTypes.string, variant: PropTypes.string,
@ -28,7 +28,7 @@ class FormFieldMessage extends React.Component {
render() { render() {
const { children, variant, ...rest } = this.props const { children, variant, ...rest } = this.props
return ( return (
<Message {...rest} variant={variant} alignItems="center"> <StyledMessage {...rest} variant={variant} alignItems="center">
<Box mr={1}> <Box mr={1}>
{variant === 'success' && <Success />} {variant === 'success' && <Success />}
{variant === 'warning' && <Warning />} {variant === 'warning' && <Warning />}
@ -37,9 +37,9 @@ class FormFieldMessage extends React.Component {
<Text fontSize="s" fontWeight="normal"> <Text fontSize="s" fontWeight="normal">
{children} {children}
</Text> </Text>
</Message> </StyledMessage>
) )
} }
} }
export default FormFieldMessage export default Message

2
app/components/UI/Modal.js

@ -46,7 +46,7 @@ class Modal extends React.Component {
<X width="2em" height="2em" /> <X width="2em" height="2em" />
</Box> </Box>
</Flex> </Flex>
<Box as="section" p={2} css={{ flex: 1 }}> <Box as="section" p={3} pt={1} css={{ flex: 1 }}>
{children} {children}
</Box> </Box>
</Flex> </Flex>

1
app/components/UI/Page.js

@ -14,6 +14,7 @@ const Page = ({ css, ...rest }) => (
as="article" as="article"
css={Object.assign( css={Object.assign(
{ {
height: '100%',
'min-width': '950px', 'min-width': '950px',
'min-height': '600px', 'min-height': '600px',
'overflow-y': 'hidden', 'overflow-y': 'hidden',

10
app/components/UI/TextArea.js

@ -4,7 +4,7 @@ import system from '@rebass/components'
import { styles } from 'styled-system' import { styles } from 'styled-system'
import { withTheme } from 'styled-components' import { withTheme } from 'styled-components'
import { Flex } from 'rebass' import { Flex } from 'rebass'
import { FormFieldMessage } from 'components/UI' import { Message } from 'components/UI'
// Create an html textarea element that accepts all style props from styled-system. // Create an html textarea element that accepts all style props from styled-system.
const SystemTextArea = system( const SystemTextArea = system(
@ -122,13 +122,9 @@ class TextArea extends React.PureComponent {
error={fieldState.error} error={fieldState.error}
/> />
{fieldState.error && ( {fieldState.error && (
<FormFieldMessage <Message variant={hasFocus ? 'warning' : 'error'} justifyContent={justifyContent} mt={2}>
variant={hasFocus ? 'warning' : 'error'}
justifyContent={justifyContent}
mt={2}
>
{fieldState.error} {fieldState.error}
</FormFieldMessage> </Message>
)} )}
</Flex> </Flex>
) )

0
app/components/Value/Value.js → app/components/UI/Value.js

6
app/components/UI/index.js

@ -1,13 +1,16 @@
export AmountInput from './AmountInput'
export BackgroundDark from './BackgroundDark' export BackgroundDark from './BackgroundDark'
export BackgroundLight from './BackgroundLight' export BackgroundLight from './BackgroundLight'
export BackgroundLightest from './BackgroundLightest' export BackgroundLightest from './BackgroundLightest'
export Bar from './Bar' export Bar from './Bar'
export Button from './Button' export Button from './Button'
export Countdown from './Countdown'
export CryptoAmountInput from './CryptoAmountInput' export CryptoAmountInput from './CryptoAmountInput'
export DataRow from './DataRow'
export Dropdown from './Dropdown' export Dropdown from './Dropdown'
export FiatAmountInput from './FiatAmountInput' export FiatAmountInput from './FiatAmountInput'
export Form from './Form' export Form from './Form'
export FormFieldMessage from './FormFieldMessage' export Message from './Message'
export GlobalStyle from './GlobalStyle' export GlobalStyle from './GlobalStyle'
export Header from './Header' export Header from './Header'
export Heading from './Heading' export Heading from './Heading'
@ -32,3 +35,4 @@ export TextArea from './TextArea'
export Titlebar from './Titlebar' export Titlebar from './Titlebar'
export Toggle from './Toggle' export Toggle from './Toggle'
export Truncate from './Truncate' export Truncate from './Truncate'
export Value from './Value'

2
app/components/UI/messages.js

@ -2,6 +2,8 @@ import { defineMessages } from 'react-intl'
/* eslint-disable max-len */ /* eslint-disable max-len */
export default defineMessages({ export default defineMessages({
expires: 'Expires',
expired: 'Expired',
required_field: 'This is a required field', required_field: 'This is a required field',
invalid_request: 'Not a valid {chain} request.', invalid_request: 'Not a valid {chain} request.',
valid_request: 'Valid {chain} request', valid_request: 'Valid {chain} request',

0
app/components/Value/Value.scss

3
app/components/Value/index.js

@ -1,3 +0,0 @@
import Value from './Value'
export default Value

3
app/components/Wallet/Wallet.js

@ -4,9 +4,8 @@ import FaAngleUp from 'react-icons/lib/fa/angle-up'
import FaAngleDown from 'react-icons/lib/fa/angle-down' import FaAngleDown from 'react-icons/lib/fa/angle-down'
import { Box, Flex } from 'rebass' import { Box, Flex } from 'rebass'
import { btc, blockExplorer } from 'lib/utils' import { btc, blockExplorer } from 'lib/utils'
import Value from 'components/Value'
import Settings from 'components/Settings' import Settings from 'components/Settings'
import { Button, Dropdown, Text } from 'components/UI' import { Button, Dropdown, Text, Value } from 'components/UI'
import CheckAnimated from 'components/Icon/CheckAnimated' import CheckAnimated from 'components/Icon/CheckAnimated'
import ZapLogo from 'components/Icon/ZapLogo' import ZapLogo from 'components/Icon/ZapLogo'
import ZapLogoBlack from 'components/Icon/ZapLogoBlack' import ZapLogoBlack from 'components/Icon/ZapLogoBlack'

4
app/icons/channels.svg

@ -4,7 +4,7 @@
<title>Group</title> <title>Group</title>
<desc>Created with Sketch.</desc> <desc>Created with Sketch.</desc>
<defs></defs> <defs></defs>
<g id="Exploration-v2" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" opacity="0.7"> <g id="Exploration-v2" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="Main-Page-Copy-14" transform="translate(-37.000000, -380.000000)" fill="#FFFFFF"> <g id="Main-Page-Copy-14" transform="translate(-37.000000, -380.000000)" fill="#FFFFFF">
<g id="Group-3" transform="translate(37.000000, 380.000000)"> <g id="Group-3" transform="translate(37.000000, 380.000000)">
<g id="Group"> <g id="Group">
@ -17,4 +17,4 @@
</g> </g>
</g> </g>
</g> </g>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 3.9 KiB

After

Width:  |  Height:  |  Size: 3.9 KiB

2
app/icons/icon-plus.svg

@ -1,5 +1,5 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 18 18"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 18 18">
<g fill="none" fill-rule="evenodd" stroke="#FD9800" transform="translate(1 1)"> <g fill="none" fill-rule="evenodd" stroke="currentColor" transform="translate(1 1)">
<g stroke-linecap="round" stroke-linejoin="round"> <g stroke-linecap="round" stroke-linejoin="round">
<path d="M8.09 5v6M5 8.09h6"/> <path d="M8.09 5v6M5 8.09h6"/>
</g> </g>

Before

Width:  |  Height:  |  Size: 337 B

After

Width:  |  Height:  |  Size: 342 B

4
app/icons/peers.svg

@ -4,7 +4,7 @@
<title>users</title> <title>users</title>
<desc>Created with Sketch.</desc> <desc>Created with Sketch.</desc>
<defs></defs> <defs></defs>
<g id="Exploration-v2" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="round" opacity="0.7" stroke-linejoin="round"> <g id="Exploration-v2" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round">
<g id="Main-Page-Copy-14" transform="translate(-37.000000, -332.000000)" stroke="#FFFFFF"> <g id="Main-Page-Copy-14" transform="translate(-37.000000, -332.000000)" stroke="#FFFFFF">
<g id="Group-9" transform="translate(38.000000, 332.000000)"> <g id="Group-9" transform="translate(38.000000, 332.000000)">
<g id="users" transform="translate(0.000000, 1.000000)"> <g id="users" transform="translate(0.000000, 1.000000)">
@ -16,4 +16,4 @@
</g> </g>
</g> </g>
</g> </g>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

4
app/icons/qrcode.svg

@ -4,7 +4,7 @@
<title>Group 23</title> <title>Group 23</title>
<desc>Created with Sketch.</desc> <desc>Created with Sketch.</desc>
<defs></defs> <defs></defs>
<g id="v1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" transform="translate(-276.000000, -96.000000)" opacity="0.5"> <g id="v1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" transform="translate(-276.000000, -96.000000)">
<g id="Group-23" transform="translate(276.000000, 96.000000)" fill="#FFFFFF" fill-rule="nonzero"> <g id="Group-23" transform="translate(276.000000, 96.000000)" fill="#FFFFFF" fill-rule="nonzero">
<g id="Group-22"> <g id="Group-22">
<g id="Group"> <g id="Group">
@ -24,4 +24,4 @@
</g> </g>
</g> </g>
</g> </g>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 4.9 KiB

After

Width:  |  Height:  |  Size: 4.9 KiB

4
app/icons/settings.svg

@ -4,7 +4,7 @@
<title>settings</title> <title>settings</title>
<desc>Created with Sketch.</desc> <desc>Created with Sketch.</desc>
<defs></defs> <defs></defs>
<g id="Exploration-v2" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="round" opacity="0.7" stroke-linejoin="round"> <g id="Exploration-v2" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round">
<g id="Main-Page-Copy-14" transform="translate(-36.000000, -434.000000)" stroke="#FFFFFF"> <g id="Main-Page-Copy-14" transform="translate(-36.000000, -434.000000)" stroke="#FFFFFF">
<g id="Group-33" transform="translate(37.000000, 435.000000)"> <g id="Group-33" transform="translate(37.000000, 435.000000)">
<g id="settings"> <g id="settings">
@ -14,4 +14,4 @@
</g> </g>
</g> </g>
</g> </g>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 3.2 KiB

After

Width:  |  Height:  |  Size: 3.1 KiB

185
stories/_welcome.stories.js

@ -1,5 +1,186 @@
import React from 'react'
import { storiesOf } from '@storybook/react' import { storiesOf } from '@storybook/react'
import { StateDecorator, Store } from '@sambego/storybook-state'
import { Flex } from 'rebass'
import {
Button,
Dropdown,
Form,
Input,
Label,
LightningInvoiceInput,
Message,
Notification,
Range,
TextArea,
Toggle
} from 'components/UI'
import { Column, Group, Element } from './helpers'
storiesOf('Welcome', module).addWithChapters('Zap Style Guide', { const store = new Store({
subtitle: 'Reusable components for Zap Desktop.' crypto: 'btc',
fiat: 'usd',
cryptoCurrencies: [
{
key: 'btc',
name: 'BTC'
},
{
key: 'bits',
name: 'bits'
},
{
key: 'sats',
name: 'satoshis'
}
],
fiatCurrencies: [
{
key: 'usd',
name: 'USD'
},
{
key: 'eur',
name: 'EUR'
},
{
key: 'gbp',
name: 'GBP'
}
]
}) })
storiesOf('Welcome', module)
.addDecorator(StateDecorator(store))
.addWithChapters('Zap Style Guide', {
subtitle: 'Reusable components for Zap Desktop.',
info: `The Zap style guide showcases and documents our library of reusable React components. Below is a sample of
these components. You can see more examples and full documentation of each component using the navigation on the
left. Use the Theme Picker in the bottom panel to view components in one of our alternate themes.`,
chapters: [
{
sections: [
{
options: {
showSource: false,
allowSourceToggling: false,
showPropTables: false,
allowPropTablesToggling: false
},
sectionFn: () => (
<Flex>
<Column>
<Group title="Message">
<Element>
<Message variant="error">Error message</Message>
</Element>
<Element>
<Message variant="success">Success message</Message>
</Element>
<Element>
<Message variant="warning">Warning message</Message>
</Element>
</Group>
<Group title="Notification">
<Element>
<Notification variant="error">Error message</Notification>
</Element>
<Element>
<Notification variant="success">Success message</Notification>
</Element>
<Element>
<Notification variant="warning">Warning message</Notification>
</Element>
</Group>
</Column>
<Column>
<Group title="Input with Label">
<Form>
<Label htmlFor="input">Input Label</Label>
<Input field="input" />
</Form>
</Group>
<Group title="TextArea with Label">
<Form>
<Label htmlFor="input">Input Label</Label>
<TextArea field="input" />
</Form>
</Group>
<Group title="Lightning Invoice Input">
<Form>
<LightningInvoiceInput
field="input"
chain="bitcoin"
network="testnet"
rows={7}
validateOnBlur
validateOnChange
/* eslint-disable max-len */
initialValue="lntb100u1pdaxza7pp5x73t3j7xgvkzgcdvzgpdg74k4pn0uhwuxlxu9qssytjn77x7zs4qdqqcqzysxqyz5vqd20eaq5uferzgzwasu5te3pla7gv8tzk8gcdxlj7lpkygvfdwndhwtl3ezn9ltjejl3hsp36ps3z3e5pp4rzp2hgqjqql80ec3hyzucq4d9axl"
/>
</Form>
</Group>
</Column>
<Column>
<Group title="Button">
<Element>
<Button>Text</Button>
</Element>
<Element>
<Button size="small">Text</Button>
</Element>
</Group>
<Group title="Secondary Button">
<Element>
<Button variant="secondary">Text</Button>
</Element>
</Group>
<Group title="Loading Button">
<Element>
<Button>Send 0.1235 BTC</Button>
</Element>
<Element>
<Button processing disabled>
Send 0.1235 BTC
</Button>
</Element>
</Group>
</Column>
<Column>
<Group title="Dropdown">
<Element>
<Dropdown
activeKey={store.get('fiat')}
items={store.get('fiatCurrencies')}
onChange={fiat => store.set({ fiat })}
/>
</Element>
</Group>
<Group title="Toggle">
<Form>
<Toggle field="input" />
</Form>
</Group>
<Group title="Range">
<Form>
<Range field="input" />
</Form>
</Group>
</Column>
</Flex>
)
}
]
}
]
})

83
stories/color.stories.js

@ -0,0 +1,83 @@
import React from 'react'
import PropTypes from 'prop-types'
import { storiesOf } from '@storybook/react'
import { ThemeProvider, withTheme } from 'styled-components'
import { Box, Card, Flex } from 'rebass'
import { BackgroundDark, Text } from 'components/UI'
import { dark, light } from 'themes'
import { Column, Group, Element } from './helpers'
const Swatch = ({ name, color }) => (
<Element>
<Flex mb={2}>
<Card
bg={color}
width={50}
css={{ height: '50px' }}
mr={21}
borderRadius={8}
borderColor="primaryText"
border="solid 1px"
/>
<Box>
<Text fontWeight="normal">{name}</Text>
<Text>{color}</Text>
</Box>
</Flex>
</Element>
)
Swatch.propTypes = {
name: PropTypes.string,
color: PropTypes.string
}
const Palette = withTheme(({ theme, ...rest }) => (
<Box {...rest}>
{Object.keys(theme.palette).map(key => (
<Swatch key={key} name={key} color={theme.palette[key]} />
))}
</Box>
))
storiesOf('Welcome', module).addWithChapters('Color palette', {
subtitle: 'Colors that we use throughout the app.',
info: `This page shows our two primary colour palettes. These are used as "themes" that users can switch between
within the app.`,
chapters: [
{
sections: [
{
options: {
showSource: false,
allowSourceToggling: false,
showPropTables: false,
allowPropTablesToggling: false
},
sectionFn: () => (
<Flex>
<Column>
<Group title="Dark">
<ThemeProvider theme={dark}>
<BackgroundDark p={3}>
<Palette />
</BackgroundDark>
</ThemeProvider>
</Group>
</Column>
<Column>
<Group title="Light">
<ThemeProvider theme={light}>
<BackgroundDark p={3}>
<Palette />
</BackgroundDark>
</ThemeProvider>
</Group>
</Column>
</Flex>
)
}
]
}
]
})

30
stories/components/countdown.stories.js

@ -0,0 +1,30 @@
import React from 'react'
import { storiesOf } from '@storybook/react'
import { Countdown } from 'components/UI'
storiesOf('Components.Countdown', module).addWithChapters('Countdown', {
chapters: [
{
sections: [
{
title: 'Default',
sectionFn: () => <Countdown date={Date.now() + 5000} />
},
{
title: 'Stop after expire',
sectionFn: () => <Countdown date={Date.now() + 5000} countUpAfterExpire={false} />
},
{
title: 'Custom colors',
sectionFn: () => (
<Countdown
date={Date.now() + 5000}
colorActive="lightningOrange"
colorExpired="yellow"
/>
)
}
]
}
]
})

20
stories/helpers.js

@ -0,0 +1,20 @@
import React from 'react'
import PropTypes from 'prop-types'
import { Box } from 'rebass'
import { Bar, Heading } from 'components/UI'
export const Column = props => <Box width={1 / 2} mr={5} {...props} />
export const Group = ({ title, children }) => (
<Box mb={4}>
<Heading.h3 mb={2} fontWeight="normal">
{title}
</Heading.h3>
<Bar mb={3} />
{children}
</Box>
)
Group.propTypes = {
title: PropTypes.string,
children: PropTypes.node
}
export const Element = props => <Box py={1} {...props} />

6
stories/pages/pay.stories.js

@ -36,6 +36,12 @@ const store = new Store({
fiatCurrency: 'USD', fiatCurrency: 'USD',
fiatCurrencies: ['USD', 'EUR', 'GBP'], fiatCurrencies: ['USD', 'EUR', 'GBP'],
onchainFees: {
fastestFee: 100,
halfHourFee: 70,
hourFee: 30
},
nodes: [ nodes: [
{ {
pub_key: '03c856d2dbec7454c48f311031f06bb99e3ca1ab15a9b9b35de14e139aa663b463', pub_key: '03c856d2dbec7454c48f311031f06bb99e3ca1ab15a9b9b35de14e139aa663b463',

39
test/unit/components/CryptoIcon.spec.js

@ -1,39 +0,0 @@
import React from 'react'
import { configure, shallow } from 'enzyme'
import Adapter from 'enzyme-adapter-react-16'
import CryptoIcon from 'components/CryptoIcon'
import SkinnyBitcoin from 'components/Icon/SkinnyBitcoin'
import Litecoin from 'components/Icon/Litecoin'
configure({ adapter: new Adapter() })
const defaultProps = {
currency: 'bch',
styles: {}
}
describe('component.CryptoIcon', () => {
describe('currency is "unknown"', () => {
const props = { ...defaultProps }
const el = shallow(<CryptoIcon {...props} />)
it('should show empty span', () => {
expect(el.html()).toEqual('<span></span>')
})
})
describe('currency is "btc"', () => {
const props = { ...defaultProps, currency: 'btc' }
const el = shallow(<CryptoIcon {...props} />)
it('should show btc symbol', () => {
expect(el.find(SkinnyBitcoin)).toHaveLength(1)
})
})
describe('currency is "ltc"', () => {
const props = { ...defaultProps, currency: 'ltc' }
const el = shallow(<CryptoIcon {...props} />)
it('should show ltc symbol', () => {
expect(el.find(Litecoin)).toHaveLength(1)
})
})
})

Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save