diff --git a/package.json b/package.json index d0da3360..5522ee3c 100644 --- a/package.json +++ b/package.json @@ -90,7 +90,7 @@ "eslint-plugin-react": "^6.9.0", "file-loader": "^0.10.0", "json-loader": "^0.5.4", - "nodemon": "^1.11.0", + "nodemon": "^1.18.7", "null-loader": "^0.1.1", "react-intl-translations-manager": "^5.0.0", "style-loader": "^0.19.0", diff --git a/src/common/components/Background/MainScreen.jsx b/src/common/components/Background/MainScreen.jsx index 2b60314e..df10c9f6 100644 --- a/src/common/components/Background/MainScreen.jsx +++ b/src/common/components/Background/MainScreen.jsx @@ -15,6 +15,7 @@ const styles = theme => ({ position: 'relative', height: '100vh', width: '100%', + minHeight: '700px', }, background: { position: 'absolute', @@ -59,6 +60,7 @@ const styles = theme => ({ }); const MainScreenBackground = ({ + minHeight, classes, children, className, @@ -71,7 +73,7 @@ const MainScreenBackground = ({ videoFirstFrameMobile, }) => (
- +
({ pointerEvents: 'none', }, }, + coloredHover: { '&:hover': { transform: 'none', @@ -50,6 +51,20 @@ const styles = theme => ({ border: `1px solid ${theme.palette.gray[1000]}`, color: '#fff', }, + grey: { + backgroundColor: theme.palette.gray[200], + border: `1px solid ${theme.palette.gray[200]}`, + color: theme.palette.gray[700], + pointerEvents: 'none', + transform: 'none', + '&:hover': { + transform: 'none', + }, + '&:disabled': { + opacity: 1, + pointerEvents: 'none', + }, + }, light: { backgroundColor: theme.palette.blue[500], border: `1px solid ${theme.palette.blue[500]}`, diff --git a/src/common/components/ButtonGetApp/index.jsx b/src/common/components/ButtonGetApp/index.jsx index 28fbd775..df5d3e37 100644 --- a/src/common/components/ButtonGetApp/index.jsx +++ b/src/common/components/ButtonGetApp/index.jsx @@ -4,6 +4,7 @@ import PropTypes from 'prop-types'; import { FormattedHTMLMessage } from 'react-intl'; import Button from '../Button'; import Icon from 'src/common/components/Icon'; +import { fileUrl } from 'src/common/utils/url'; import injectSheet from 'react-jss'; import cn from 'classnames'; @@ -22,33 +23,50 @@ const styles = theme => ({ button: { padding: [0, theme.spacing.unit * 5, 0, theme.spacing.unit * 3], }, - }, + } }); -const APP_STORE_HREF = - 'https://itunes.apple.com/us/app/waves-wallet/id1233158971?mt=8'; -const GOOGLE_PLAY_HREF = - 'https://play.google.com/store/apps/details?id=com.wavesplatform.wallet'; +const APP_STORE_HREF = { + store: 'https://itunes.apple.com/us/app/waves-wallet/id1233158971?mt=8', + link: null +}; +const GOOGLE_PLAY_HREF = { + store: 'https://play.google.com/store/apps/details?id=com.wavesplatform.wallet', + link: fileUrl('WavesWallet_release_2.2.1.apk'), +}; -const ButtonGetApp = ({ classes, className, type, ...rest }) => ( + +const AppIcon = ({ type, fromFile}) => ( + type === 'google-play' ? ( + + ) : ( + + ) +); + +const getButtonProps = ({fromFile, type, onClick}) => ({ + href: (type === 'google-play' ? GOOGLE_PLAY_HREF : APP_STORE_HREF)[fromFile ? 'link' : 'store'], + target: "_blank", + grey: type === 'app-store' && fromFile, + disabled: type === 'app-store' && fromFile, + icon: , + onClick: () => onClick(fromFile ? 'mobile_client_download' : 'mobile_client') +}); + +const ButtonGetApp = ({ classes, className, type, fromFile, onClick, ...rest }) => ( diff --git a/src/common/components/Icon/lib/custom/AppleLogo.jsx b/src/common/components/Icon/lib/custom/AppleLogo.jsx new file mode 100644 index 00000000..b0b26fb3 --- /dev/null +++ b/src/common/components/Icon/lib/custom/AppleLogo.jsx @@ -0,0 +1,23 @@ +import React from 'react'; + +const AppleLogo = ({size, style}) => ( + + + + + + + + + +); + +export default AppleLogo; diff --git a/src/common/components/Icon/lib/custom/GoogleAndroid.jsx b/src/common/components/Icon/lib/custom/GoogleAndroid.jsx new file mode 100644 index 00000000..bcfd1b4e --- /dev/null +++ b/src/common/components/Icon/lib/custom/GoogleAndroid.jsx @@ -0,0 +1,20 @@ +import React from 'react'; + +const GoogleAndroid = ({size, style}) => ( + + + + + + + + +); + +export default GoogleAndroid; diff --git a/src/common/components/Icon/lib/custom/map.js b/src/common/components/Icon/lib/custom/map.js index 2841a080..a4e1e6c6 100644 --- a/src/common/components/Icon/lib/custom/map.js +++ b/src/common/components/Icon/lib/custom/map.js @@ -1,6 +1,8 @@ import Hamburger from './Hamburger'; import Cross from './Cross'; import GooglePlay from './GooglePlay'; +import GoogleAndroid from './GoogleAndroid'; +import AppleLogo from './AppleLogo'; import MapMarker from './MapMarker'; import DiscordIcon from '!svg-react-loader!./Discord.svg'; @@ -8,6 +10,8 @@ export default { hamburger: Hamburger, cross: Cross, googlePlay: GooglePlay, + googleAndroid: GoogleAndroid, + appleLogo: AppleLogo, mapMarker: MapMarker, discord: DiscordIcon, }; diff --git a/src/common/components/Typography/index.jsx b/src/common/components/Typography/index.jsx index 579fd4cd..e179476b 100644 --- a/src/common/components/Typography/index.jsx +++ b/src/common/components/Typography/index.jsx @@ -46,6 +46,7 @@ Typography.defaultProps = { type: 'body', tagName: '', tagMap: { + display6: 'h1', display5: 'h1', display4: 'h1', display3: 'h2', @@ -65,6 +66,7 @@ Typography.defaultProps = { }; const types = [ + 'display6', 'display5', 'display4', 'display3', diff --git a/src/common/components/Typography/styles.js b/src/common/components/Typography/styles.js index 216ebc7a..dd116fe5 100644 --- a/src/common/components/Typography/styles.js +++ b/src/common/components/Typography/styles.js @@ -30,6 +30,10 @@ const styles = theme => ({ extend: [theme.typography.body2, theme.spacing.body], fontWeight: ({ weight }) => weight || theme.typography.body2.fontWeight, }, + display6: { + extend: [theme.typography.display6, theme.spacing.display6], + fontWeight: ({ weight }) => weight || theme.typography.display6.fontWeight, + }, display5: { extend: [theme.typography.display5, theme.spacing.display5], fontWeight: ({ weight }) => weight || theme.typography.display5.fontWeight, diff --git a/src/common/components/Vacancies/index.jsx b/src/common/components/Vacancies/index.jsx deleted file mode 100644 index 79a0a445..00000000 --- a/src/common/components/Vacancies/index.jsx +++ /dev/null @@ -1,35 +0,0 @@ -import React, { Component } from 'react'; - -import Vacancy from './lib/Vacancy'; -import Margin from 'src/common/components/Margin'; - -class Vacancies extends Component { - state = { - expandedIndex: null, - }; - - handleToggle = index => { - this.setState(oldState => ({ - expandedIndex: index === oldState.expandedIndex ? null : index, - })); - }; - - render() { - const { vacancies } = this.props; - return ( - - {vacancies.map((v, i) => ( - - this.handleToggle(i)} - {...v} - /> - - ))} - - ); - } -} - -export default Vacancies; diff --git a/src/common/components/Vacancies/lib/Vacancy/img/arrow.svg b/src/common/components/Vacancies/lib/Vacancy/img/arrow.svg deleted file mode 100644 index a44fb8db..00000000 --- a/src/common/components/Vacancies/lib/Vacancy/img/arrow.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/src/common/components/Vacancies/lib/Vacancy/index.jsx b/src/common/components/Vacancies/lib/Vacancy/index.jsx deleted file mode 100644 index ab39f3ca..00000000 --- a/src/common/components/Vacancies/lib/Vacancy/index.jsx +++ /dev/null @@ -1,68 +0,0 @@ -import React from 'react'; - -import Panel from 'src/common/components/Panel'; -import Typography from 'src/common/components/Typography'; -import List from 'src/common/components/List'; -import Divider from 'src/common/components/Divider'; -import Margin from 'src/common/components/Margin'; -import Button from 'src/common/components/Button'; -import Icon from 'src/common/components/Icon'; - -import injectSheet from 'react-jss'; -import styles from './styles'; -import cn from 'classnames'; - -import { FormattedMessage } from 'react-intl'; - -const Vacancy = ({ - title, - location, - blocks, - classes, - onSubmitResumeClick, - expanded, - onToggle, -}) => ( - -
-
-
- - - {title} - - - - {location} - -
-
- -
- - - {blocks.map((block, index) => ( -
- - - {block.title} - - - - -
- ))} - - - - -
- -); - -export default injectSheet(styles)(Vacancy); diff --git a/src/common/components/Vacancies/lib/Vacancy/styles.js b/src/common/components/Vacancies/lib/Vacancy/styles.js deleted file mode 100644 index 5d03ae48..00000000 --- a/src/common/components/Vacancies/lib/Vacancy/styles.js +++ /dev/null @@ -1,117 +0,0 @@ -import arrow from './img/arrow.svg'; - -export default theme => ({ - clickable: { - margin: [-theme.spacing.unit * 3, -theme.spacing.unit * 2.5, 0], - cursor: 'pointer', - }, - titleWrapper: { - padding: [ - theme.spacing.unit * 3, - theme.spacing.unit * 6, - theme.spacing.unit * 3, - theme.spacing.unit * 2.5, - ], - position: 'relative', - }, - title: { - marginBottom: theme.spacing.unit / 2, - }, - subtitle: { - fontWeight: 500, - marginBottom: theme.spacing.unit, - }, - locationText: { - verticalAlign: '-5%', - marginLeft: '.3em', - color: theme.palette.gray[800], - }, - wrapper: { - position: 'relative', - }, - - collapsed: { - // shadow hover - '&:before': { - content: '""', - display: 'block', - position: 'absolute', - top: 0, - bottom: 0, - left: 0, - right: 0, - boxShadow: '0 3px 20px 1px rgba(39, 47, 89, .08)', - borderRadius: theme.spacing.radius, - opacity: 0, - willChange: 'opacity', - transition: theme.transitions.create('opacity'), - }, - '& $clickable': { - marginBottom: -theme.spacing.unit * 3, - }, - '& $content': { - opacity: 0, - transition: 'none', - height: 0, - overflow: 'hidden', - }, - '& $arrow': { - transform: 'none', - }, - }, - - arrow: { - position: 'absolute', - top: 'calc(50% - 11px)', - width: 22, - height: 22, - borderRadius: '50%', - background: `${ - theme.palette.primary[500] - } url(${arrow}) no-repeat center 9px`, - right: theme.spacing.unit * 2.5, - transition: theme.transitions.create( - 'transform', - theme.transitions.durationMedium - ), - transform: 'rotate(-180deg)', - }, - - content: { - // opacity: 0, - transition: theme.transitions.create( - 'opacity', - theme.transitions.durationMedium - ), - }, - [theme.breakpoints.up('md')]: { - clickable: { - margin: [-theme.spacing.unit * 5, -theme.spacing.unit * 5, 0], - }, - titleWrapper: { - padding: [ - theme.spacing.unit * 5, - theme.spacing.unit * 10, - theme.spacing.unit * 5.5, - theme.spacing.unit * 5, - ], - }, - collapsed: { - '&:hover:before': { - opacity: 1, - }, - '& $clickable': { - marginBottom: -theme.spacing.unit * 5.5, - }, - }, - subtitle: { - marginBottom: theme.spacing.unit * 1.5, - }, - title: { - fontSize: 24, - }, - arrow: { - right: theme.spacing.unit * 5, - }, - }, -}); diff --git a/src/common/containers/Company/index.jsx b/src/common/containers/Company/index.jsx index e3efa19f..4d6bb53b 100644 --- a/src/common/containers/Company/index.jsx +++ b/src/common/containers/Company/index.jsx @@ -24,72 +24,74 @@ import Branding from './lib/Branding'; import injectSheet from 'react-jss'; import styles from './styles'; -import { FormattedMessage } from 'react-intl'; +import {FormattedMessage} from 'react-intl'; // url -import { fileUrl } from 'src/common/utils/url'; +import {fileUrl} from 'src/common/utils/url'; -const PageLayout = ({ classes }) => ( - - - } /> - +const PageLayout = ({classes}) => ( + + + }/> + - {/* */} -
- - - -
+ {/* */} +
+ + + +
+ +
+ + + +
-
- - - -
+
+ + + +
+ {/*
*/} -
- - - -
- {/*
*/} +
+ + + +
-
- - - -
+
+ + + +
-
- - - -
+ +
+ + + + + +
+
- -
- - + + +
+ +
+
-
-
- - - -
- -
-
-
-
+
); const App = injectSheet(styles)(PageLayout); diff --git a/src/common/containers/Company/lib/Vacancies/View.jsx b/src/common/containers/Company/lib/Vacancies/View.jsx index b1601388..9e66ff7f 100644 --- a/src/common/containers/Company/lib/Vacancies/View.jsx +++ b/src/common/containers/Company/lib/Vacancies/View.jsx @@ -2,37 +2,31 @@ import React from 'react'; import Typography from 'src/common/components/Typography'; import Margin from 'src/common/components/Margin'; -import { Row, Col } from 'src/common/components/Grid'; +import {Row, Col} from 'src/common/components/Grid'; -import Vacancies from 'src/common/containers/Vacancies'; - -import { FormattedMessage } from 'react-intl'; +import {FormattedMessage} from 'react-intl'; import injectSheet from 'react-jss'; import styles from './styles'; +import Button from 'src/common/components/Button'; -const VacanciesContainer = ({ classes }) => ( - - -
- - - - - - - - +const VacanciesContainer = ({classes, onVacanciesClick}) => ( + + - + - - -
- - - -
+ + + + + ); export default injectSheet(styles)(VacanciesContainer); diff --git a/src/common/containers/Company/lib/Vacancies/index.js b/src/common/containers/Company/lib/Vacancies/index.js index 7cd93cdb..ed430144 100644 --- a/src/common/containers/Company/lib/Vacancies/index.js +++ b/src/common/containers/Company/lib/Vacancies/index.js @@ -1,10 +1,12 @@ import { connect } from 'react-redux'; -import { submitResumeClick } from 'src/public/actions'; +import { submitResumeClick, vacanciesClick } from 'src/public/actions'; import View from './View'; export default connect(undefined, { + onVacanciesClick: () => + vacanciesClick({ page: 'company', source: 'careers' }), onSubmitResumeClick: () => submitResumeClick({ page: 'company', source: 'careers' }), })(View); diff --git a/src/common/containers/Company/lib/Whitepaper/View.jsx b/src/common/containers/Company/lib/Whitepaper/View.jsx index 32a30a7b..fcac58ef 100644 --- a/src/common/containers/Company/lib/Whitepaper/View.jsx +++ b/src/common/containers/Company/lib/Whitepaper/View.jsx @@ -28,7 +28,7 @@ const Whitepaper = ({ classes, onWhitepaperClick }) => ( + + + + +
+ ); + } +} + +export default injectSheet(styles)(SmartAssetsView); + diff --git a/src/common/containers/Main/lib/SmartAssets/styles/bg.js b/src/common/containers/Main/lib/SmartAssets/styles/bg.js new file mode 100644 index 00000000..2e97a615 --- /dev/null +++ b/src/common/containers/Main/lib/SmartAssets/styles/bg.js @@ -0,0 +1,11 @@ +import img2x from '../img/smart-launch-bg.jpg'; + +export default () => ({ + bgAssets: { + backgroundImage: `url(${img2x})`, + backgroundSize: 'cover', + backgroundPosition: 'center center', + width: '100%', + minHeight: '544px', + }, +}); diff --git a/src/common/containers/Main/lib/SmartAssets/styles/index.js b/src/common/containers/Main/lib/SmartAssets/styles/index.js new file mode 100644 index 00000000..6e59b11b --- /dev/null +++ b/src/common/containers/Main/lib/SmartAssets/styles/index.js @@ -0,0 +1,54 @@ +import spacing from './spacing'; +import bg from './bg'; + +export default theme => ({ + ...bg(theme), + ...spacing(theme), + + smartAssetTitle: { + marginTop: '147px', + fontWeight: 600, + }, + + smartAssetNotActiveTitle: { + marginTop: '152px', + }, + + digest: { + display: 'inline-block', + }, + + dots: { + paddingLeft: '10px', + marginRight: '10px', + fontSize: '36px', + verticalAlign: 'top', + [theme.mixins.atMedia('md')]: { + paddingLeft: '14px', + marginRight: '14px', + fontSize: '70px', + }, + }, + + + + desktopOnly: { + display: 'none', + [theme.mixins.atMedia('md')]: { + display: 'block', + }, + }, + centered: { + textAlign: 'center', + }, + titleStyle: { + fontSize: 38, + color: theme.palette.gray[0], + [theme.breakpoints.up('md')]: { + fontSize: 80, + width: 773, + fontWeight: 700, + lineHeight: 1.05, + }, + }, +}); diff --git a/src/common/containers/Main/lib/SmartAssets/styles/spacing.js b/src/common/containers/Main/lib/SmartAssets/styles/spacing.js new file mode 100644 index 00000000..8ef6f354 --- /dev/null +++ b/src/common/containers/Main/lib/SmartAssets/styles/spacing.js @@ -0,0 +1,25 @@ +export default theme => ({ + paddedTop: theme.spacing.paddedTop, + paddedBottom: theme.spacing.paddedBottom, + section: theme.spacing.section, + sectionNarrow: theme.spacing.sectionNarrow, + sectionWide: theme.spacing.sectionWide, + + withBackground: { + padding: theme.spacing.getSpacing(8, 0), + [theme.mixins.atMedia('md')]: { + padding: theme.spacing.getSpacing(12, 0), + }, + [theme.mixins.atMedia('lg')]: { + padding: theme.spacing.getSpacing(20, 0), + }, + }, + + marginSmall: { + marginBottom: theme.spacing.unit, + }, + + footerMarginCompensate: { + marginBottom: -10, + }, +}); diff --git a/src/common/containers/Product/lib/MobileWallet/View.jsx b/src/common/containers/Product/lib/MobileWallet/View.jsx index e947edc0..8406c683 100644 --- a/src/common/containers/Product/lib/MobileWallet/View.jsx +++ b/src/common/containers/Product/lib/MobileWallet/View.jsx @@ -9,44 +9,53 @@ import { FormattedMessage } from 'react-intl'; import injectSheet from 'react-jss'; import styles from './styles'; +import {withLocaleCookie} from "src/public/hoc/withLocaleCookie"; -const MainScreen = ({ classes, onAndroidClientClick, onIosClientClick }) => ( - - +const MainScreen = ({ classes, onAndroidClientClick, onIosClientClick, getLocale }) => { + + const locale = getLocale(); + const fromFile = locale === 'zh'; + + return + - + - - + { fromFile ? null : + - + - + } - + - + - +
-); +}; + +export default withLocaleCookie(injectSheet(styles)(MainScreen)); + +const AppAndroidButton = ({ fromLink, onClick, ...props }) => { -export default injectSheet(styles)(MainScreen); +}; diff --git a/src/common/containers/Product/lib/MobileWallet/index.js b/src/common/containers/Product/lib/MobileWallet/index.js index 14b59215..ff4e7a4c 100644 --- a/src/common/containers/Product/lib/MobileWallet/index.js +++ b/src/common/containers/Product/lib/MobileWallet/index.js @@ -5,8 +5,8 @@ import { androidClientClick, iosClientClick } from 'src/public/actions'; import View from './View'; export default connect(s => s, { - onAndroidClientClick: () => - androidClientClick({ page: 'product', source: 'mobile_client' }), - onIosClientClick: () => - iosClientClick({ page: 'product', source: 'mobile_client' }), + onAndroidClientClick: (source = 'mobile_client') => + androidClientClick({ page: 'product', source }), + onIosClientClick: (source = 'mobile_client') => + iosClientClick({ page: 'product', source }), })(View); diff --git a/src/common/containers/SmartContracts/View.jsx b/src/common/containers/SmartContracts/View.jsx index 57ce3dd3..3afdb43e 100644 --- a/src/common/containers/SmartContracts/View.jsx +++ b/src/common/containers/SmartContracts/View.jsx @@ -40,7 +40,7 @@ const PageLayout = ({ onDocumentationClick, classes }) => ( diff --git a/src/common/containers/SmartContracts/lib/Features/index.jsx b/src/common/containers/SmartContracts/lib/Features/index.jsx index 73df4a94..5615839e 100644 --- a/src/common/containers/SmartContracts/lib/Features/index.jsx +++ b/src/common/containers/SmartContracts/lib/Features/index.jsx @@ -21,7 +21,7 @@ const MultisigWallet = () => ( text={ } inverted @@ -67,7 +67,7 @@ const TokenFreeze = () => ( text={ } inverted @@ -91,7 +91,7 @@ const DecentralizedApps = () => ( text={ } inverted diff --git a/src/common/containers/SmartContracts/lib/TwoStageImplementation/index.jsx b/src/common/containers/SmartContracts/lib/TwoStageImplementation/index.jsx index c7964ffc..c936184e 100644 --- a/src/common/containers/SmartContracts/lib/TwoStageImplementation/index.jsx +++ b/src/common/containers/SmartContracts/lib/TwoStageImplementation/index.jsx @@ -25,7 +25,7 @@ const FEATURES_LIST = [ rightColumn: [ , ], }, @@ -38,16 +38,35 @@ const FEATURES_LIST = [ />, , ], rightColumn: [ , ], }, + + { + leftColumn: [ + , + , + ], + rightColumn: [ + , + ], + }, ]; const Block = ({ classes, leftColumn, rightColumn }) => ( @@ -92,7 +111,7 @@ const TwoStageImplementation = ({ classes }) => ( diff --git a/src/common/containers/Vacancies/index.jsx b/src/common/containers/Vacancies/index.jsx deleted file mode 100644 index 5f60f47c..00000000 --- a/src/common/containers/Vacancies/index.jsx +++ /dev/null @@ -1,8 +0,0 @@ -import React from 'react'; - -import Vacancies from 'src/common/components/Vacancies'; -import vacancies from './vacancies.json'; - -const VacanciesContainer = () => ; - -export default VacanciesContainer; diff --git a/src/common/containers/Vacancies/vacancies.json b/src/common/containers/Vacancies/vacancies.json deleted file mode 100644 index 146bb50a..00000000 --- a/src/common/containers/Vacancies/vacancies.json +++ /dev/null @@ -1,200 +0,0 @@ -[ - { - "title": "API Integration Specialist", - "location": "Moscow", - "blocks": [ - { - "title": "Responsibilities:", - "elements": [ - "Consult with our partners and third-party developers, contribute to the development of applications, and work with API", - "Develop client libraries for our API and examples of their use and useful services", - "Write technical documentation and instructions" - ] - }, - { - "title": "Requirements:", - "elements": [ - "Basic programming skills in one or more languages (Java / Scala / C# / Python / JavaScript / Go / PHP)", - "The desire to learn about new platforms, languages, and libraries", - "Good written English", - "Basic knowledge of Unix (preferred)" - ] - } - ] - }, - { - "title": "Analyst", - "location": "Moscow", - "blocks": [ - { - "title": "Responsibilities:", - "elements": [ - "Constant monitoring and analysis of the market and trends", - "Monitoring of information space", - "Search for investment opportunities (assets already on markets)", - "Analysis of projects having ICOs (including those in the Pre-Sale stages)", - "Participation in writing fund analytical reports" - ] - }, - { - "title": "Requirements:", - "elements": [ - "First-hand experience working in cryptocurrency markets", - "First-hand experience investing in projects having an ICO", - "The ability to analyze large amounts of information, draw conclusions, and offer solutions" - ] - } - ] - }, - { - "title": "Android Developer", - "location": "Moscow", - "blocks": [ - { - "title": "Responsibilities:", - "elements": [ - "Breaking down tasks", - "Project scope planning", - "Interacting with analysts, designers, programmers, and testers", - "Writing quality code" - ] - }, - { - "title": "Requirements:", - "elements": [ - "Experience developing on Android (2+ years, API level 15+)", - "Deep understanding of Java (3+ years)", - "Knowledge of the development specifics of Android (version 4 and higher)", - "Knowledge and understanding of Android MVP, OOP, and design patterns", - "Ability to create interfaces and interface animations", - "Protocol and format knowledge of HTTP, HTTPS, JSON, REST", - "Experience working with push notifications", - "Experience working with Git", - "Ability to understand others’ code" - ] - }, - { - "title": "Preferred:", - "elements": [ - "Knowledge of Android Studio and Gradle", - "Experience working with NoSQL databases (Realm)", - "Experience with non-mobile programming", - "Projects already on Google Play" - ] - } - ] - }, - { - "title": "iOS developer", - "location": "Moscow", - "blocks": [ - { - "title": "Responsibilities:", - "elements": [ - "Developing and supporting iOS apps and participating in the company’s projects", - "Designing new versions of apps and ensuring that external devices, smartphones, third-party apps, and web services synchronize harmoniously with them", - "Working on the system core, interacting with portable devices (Bluetooth LE)", - "Forming the functional and technical requirements of apps", - "Analyzing and searching for new solutions in order to optimize the app’s consumption of mobile devices’ resources", - "Developing project documentation (Wiki)" - ] - }, - { - "title": "Requirements:", - "elements": [ - "4+ years experience working with iOS 9, 10, 11 (completed projects on the App Store with over 100,000 users)", - "Experience working on a team (GIT/ SVN + Redmine / Jira)", - "Strong knowledge of development technologies (Objective C, XCode, iOS SDK, Cocoa Touch)", - "Experience working with databases (SQLite)", - "Understanding of the principles of OOP, MVC; knowledge of design patterns and the principles of client-server apps (REST, caching, query queues)", - "Experience working with JSON, UIKit, Core Graphis, Core Data, Auto Layout, Quartz Core (layers), Core Animation, GCD (blocks and lines), NSOperation, NSURLSession, AFNetworking, MagicalRecord, RestKit" - ] - }, - { - "title": "Preferred::", - "elements": [ - "Experience working with multithreading", - "Knowledge of English for technical documentation", - "Experience working with Crashlytics, Reactive Cocoa, push notifications", - "Experience developing on other platforms (web, desktop)", - "Experience localizing iOS apps", - "Experience working with Bluetooth / BLE", - "Experience writing unit tests" - ] - } - ] - }, - { - "title": "Blockchain Evangelist", - "location": "Moscow", - "blocks": [ - { - "title": "Responsibilities:", - "elements": [ - "Participating in making presentations, reports, holding negotiations, consulting clients and partners", - "Promoting the Waves Platform ideology and brand", - "Closing deals with independent clients", - "Planning your responsibilities and work schedule", - "Accounting for and analyzing your own work" - ] - }, - { - "title": "Requirements:", - "elements": [ - "More than 3 years’ work experience with similar tasks", - "A good tech background, experience working with tech projects (in the fields of fintech and blockchain)", - "Fluent English", - "Perfect Russian, experience with public speaking at large events; good communication skills", - "Experience organizing events and meetups from scratch", - "Experience holding negotiations", - "Regular business trips" - ] - }, - { - "title": "Preferred:", - "elements": [ - "High mobility and self-organization", - "Real cases of attracting partners and clients", - "Ability to find the right people and a common language with them", - "Ability to think outside the box", - "Ability to persuade others" - ] - } - ] - }, - { - "title": "UX/UI designer", - "location": "Moscow", - "blocks": [ - { - "title": "Responsibilities:", - "elements": [ - "Closely collaborate with colleagues across the product team to design and deliver industry-leading digital experiences across a wide range of platforms; including mobile, desktop, web, and others as projects require", - "Clearly articulate your design and bring it to life for the developers via user journeys, user flows, wireframes, mock-ups, prototypes, presentations and comprehensively-annotated design specifications", - "Effectively balance complex project plans with multiple work streams and dependencies as well as user experience quality and implementation challenges/considerations", - "Incorporate UX research tools, data, personas, competitive analysis and metrics to help shape user experiences", - "Revise and iterate designs and documentation based on continued user testing and feedback", - "Contribute to testing criteria for usability studies, A/B & MV Testing of products and platforms as part of the design process", - "Guide, maintain and communicate UX/UI consistency of experience across all platforms", - "Spur new ideas in the development team through expert-level knowledge of competitive and complimentary mobile and multi-platform products" - ] - }, - { - "title": "Requirements:", - "elements": [ - "Strong working knowledge of relevant design software, in particular Sketch", - "Experience designing applications over a wide range of screen sizes", - "A strong knowledge of modern design standards and conventions. Up to date with latest design trends", - "An in-depth understanding of user experience and user-centered design principles", - "Understanding of user psychology, and intuition for how users interact with interactive systems", - "A strong aesthetic instinct, with honed visual design skills", - "Ability to effectively communicate design concepts and development, both internally and to clients", - "An understanding of how to effectively work with a development team, including provision of design assets for implementation", - "Highly motivated and self-disciplined, with the ability to work both independently as well as part of a team", - "Strong problem solving skills", - "Excellent oral and written communication skills" - ] - } - ] - } -] \ No newline at end of file diff --git a/src/common/theme/colors.js b/src/common/theme/colors.js index be369d68..831546e1 100644 --- a/src/common/theme/colors.js +++ b/src/common/theme/colors.js @@ -8,6 +8,7 @@ const colors = { }, gray: { 100: '#646464', + 200: '#f3f5fa', 300: '#e7e7e7', 400: '#acacac', 700: '#f9f9f9', diff --git a/src/common/theme/palette.js b/src/common/theme/palette.js index 914828ec..b41d79f9 100644 --- a/src/common/theme/palette.js +++ b/src/common/theme/palette.js @@ -22,6 +22,7 @@ export const gray = colorMigrationProxy( 0: '#fff', 50: '#fafafa', 100: '#ebecf0', + 200: '#f3f5fa', // 200: '#d8dbed', // moved to grayBlue // 300: '#9cb4e1', // moved to grayBlue 300: '#c6c6c6', diff --git a/src/common/theme/spacing.js b/src/common/theme/spacing.js index 6494c9b2..24d6aa4e 100644 --- a/src/common/theme/spacing.js +++ b/src/common/theme/spacing.js @@ -43,6 +43,17 @@ const createSpacing = ( ), }, + display6: { + '& + $body': combineMobileDesktopStyles( + { marginTop: unit * 3 }, + { marginTop: unit * 5 } + ), + '& + $body2': combineMobileDesktopStyles( + { marginTop: unit * 3 }, + { marginTop: unit * 5 } + ), + }, + display5: { '& + $body': combineMobileDesktopStyles( { marginTop: unit * 3 }, diff --git a/src/common/theme/typography.js b/src/common/theme/typography.js index 581d8e5e..de20068f 100644 --- a/src/common/theme/typography.js +++ b/src/common/theme/typography.js @@ -24,6 +24,18 @@ const creatyTypography = (palette, breakpoints) => { }; return { + display6: { + ...base, + ...display, + fontSize: 46, + lineHeight: 1.2, + fontWeight: 600, + margin: 0, + + [breakpoints.up('md')]: { + fontSize: 110, + }, + }, display5: { ...base, ...display, diff --git a/src/public/actions/index.js b/src/public/actions/index.js index 7e7d771f..f4b05340 100644 --- a/src/public/actions/index.js +++ b/src/public/actions/index.js @@ -37,6 +37,9 @@ export const COOKIES_CONSENT_ALLOW = 'CookieConsent.Allow.Click'; export const COOKIES_CONSENT_DISABLE = 'CookieConsent.Disable.Click'; export const COOKIES_CONSENT_RESET = 'CookieConsent.Reset.Click'; +//vacancies +export const VACANCIES_CLICK = 'vacanciesClick'; + // export const GIVE_FEEDBACK_CLICK = 'GiveFeedbackClick'; // export const GIVE_FEEDBACK_CLOSE = 'GiveFeedbackClose'; // export const GIVE_FEEDBACK_SHOW = 'GiveFeedbackShow'; @@ -84,6 +87,9 @@ export const feedbackFormSubmit = createAC(FEEDBACK_FORM_SUBMIT); export const joinTelegramClick = createAC(TELEGRAM_POPUP_JOIN_CLICK); export const closeTelegramClick = createAC(TELEGRAM_POPUP_CLOSE); +// vacancies +export const vacanciesClick = createAC(VACANCIES_CLICK); + // export const giveFeedbackShow = createAC(GIVE_FEEDBACK_SHOW); // export const giveFeedbackClick = createAC(GIVE_FEEDBACK_CLICK); // export const giveFeedbackClose = createAC(GIVE_FEEDBACK_CLOSE); diff --git a/src/server/locale/en.json b/src/server/locale/en.json index f70b4179..43e9067b 100644 --- a/src/server/locale/en.json +++ b/src/server/locale/en.json @@ -21,6 +21,10 @@ "company.about.text": "The Waves Platform is a global public blockchain platform, founded in 2016. Waves Platform’s mission is to reinvent the DNA of entrepreneurship around the world by providing a shared infrastructure, offering easy-to-use, highly functional tools to make blockchain available to every person or organisation that can benefit from it.", "components.buttonGetApp.title.android": "Get it on
Google Play", "components.buttonGetApp.title.ios": "Get it on
APP STORE", + + "components.buttonGetApp.title.androidLink": "Download Android
version 2.2.1", + "components.buttonGetApp.title.iosLink": "iOS version is
coming soon", + "cookieConsent.text": "According to our {policy}, this website uses 🍪cookies to improve functionality and performance. Some cookies are essential for the operation of the website, you can turn them off only via browser settings. Other cookies can be disabled by this tool.", "cookieConsent.disable": "DISABLE", "cookieConsent.allow": "ALLOW ALL", @@ -60,9 +64,9 @@ "developers.ng.subtitle": "Based on the Waves-NG protocol, our system supports up to 6,000 transactions per minute, leaving other blockchains far behind.", "developers.ng.text": "In the NG model, the next miner is selected in advance. This miner creates a ‘key block’, which is then immediately filled with microblocks containing transactions, which requires no further proof-of-work. Whilst maintaining the open structure of the protocol, this allows transactions to be confirmed as fast as network latency will allow.", "developers.ng.cta": "Learn more", - "developers.smart.title": "Smart Contracts & Smart Accounts", + "developers.smart.title": "Versatile functionality for any use case", "developers.smart.subtitle": "We are building simple, scalable, reliable and robust tools to perform secure and transparent business operations on the Waves blockchain.", - "developers.smart.text": "We have created a new programming language, RIDE, which makes it very easy for anyone to set up a Smart Account. To bring you the sophisticated tools required for launching a dApp, we are creating Smart Contracts, which enables users to execute any set of instructions on the Waves blockchain.", + "developers.smart.text": "RIDE, our purpose-designed programming language, makes it straightforward to apply scripted conditions to both accounts and assets. We are currently creating Turing-complete smart contracts to enable the launch of fully-fledged dApps and the execution of any set of instructions on the blockchain.", "developers.smart.cta": "Learn more", "developers.text": "These apps run on a custom built blockchain, an enormously powerful shared global infrastructure that can move value around and represent the ownership of property.", "developers.title": "Build applications on the blockchain", @@ -175,6 +179,22 @@ "home.wallet.wallet": "Create a multiple-currency wallet", "home.wavesClient.text": "The current version of the Waves client is a wallet, decentralised exchange (DEX), and a tool to release tokens.", "home.wavesClient.title": "The Waves Client", + "home.smartAssets.title.text": "Smart Assets feature is activated on Waves MainNet!", + "home.smartAssets.button.learn": "Learn more", + "home.smartAssets.activated.title": "Smart Assets will be activated in", + "home.smartAssets.days.one": "day", + "home.smartAssets.days.few": "days", + "home.smartAssets.days.other": "days", + "home.smartAssets.hours.one": "hour", + "home.smartAssets.hours.few": "hours", + "home.smartAssets.hours.other": "hours", + "home.smartAssets.minutes.one": "minute", + "home.smartAssets.minutes.few": "minutes", + "home.smartAssets.minutes.other": "minutes", + "home.smartAssets.seconds.one": "second", + "home.smartAssets.seconds.few": "seconds", + "home.smartAssets.seconds.other": "seconds", + "howToWallet.step1": "First, create an account.", "howToWallet.step2": "Fill your wallet with Bitcoin, Ethereum, Litecoin, Zcash, US dollars or Euros.", "howToWallet.step3": "You can convert them to Waves tokens using the decentralized exchange, which you can find on the Waves client.", @@ -339,23 +359,26 @@ "smartContracts.title": "RIDE on Waves blockchain with smart contracts", "smartContracts.description": "Scalable failsafe language to serve both basic account security cases and rich decentralized application.", "smartContracts.cta.documentation": "Download Whitepaper", - "smartContracts.block1.text": "Waves platform is building a blockchain based solutions for real-world business. We are providing smart and flexible tools that will fit for most of the business cases and able to work with real-world data.", + "smartContracts.block1.text": "Waves platform is building blockchain-based solutions for enterprise applications. We provide smart and flexible tools capable of interacting with real-world data, designed to meet most business use cases.", "smartContracts.features.title": "What Will Smart Contracts Bring to Waves?", "smartContracts.features.1.title": "Multisignature Wallet", - "smartContracts.features.1.text": "Two-factor authentication
Cannot be controlled by one person alone
The necessary parties must provide their private keys simultaneously", + "smartContracts.features.1.text": "Two-factor authentication
Cannot be controlled by one person alone
The specified parties must all provide their private keys", "smartContracts.features.2.title": "Atomic Swaps", "smartContracts.features.2.text": "Trustless exchange of cryptocurrencies hosted on different blockchains", "smartContracts.features.3.title": "Token Freeze", - "smartContracts.features.3.text": "Preventing buyers from selling or transferring tokens out of their address for a certain amount of time", + "smartContracts.features.3.text": "Preventing buyers from selling or transferring tokens for a certain period of time", "smartContracts.features.4.title": "Decentralised applications", - "smartContracts.features.4.text": "dApps based on Turing-complete smart contracts will be able to undertake complex processes on the blockchain according to a range of different conditions", - "smartContracts.plans.title": "Two-stage Implementation", + "smartContracts.features.4.text": "dApps based on Turing-complete smart contracts will be able to undertake complex processes on the blockchain according to a wide range of different conditions", + "smartContracts.plans.title": "Smart Contracts Development Plan", "smartContracts.plans.stage1.left.title": "Stage 1", "smartContracts.plans.stage1.left.subtitle": "Smart Accounts", "smartContracts.plans.stage1.right.text": "Lightweight implementation of smart contracts with limited functionality, based on the most popular and in-demand use cases.", "smartContracts.plans.stage2.left.title": "Stage 2", - "smartContracts.plans.stage2.left.subtitle": "Smart Contracts", - "smartContracts.plans.stage2.right.text": "Decentralised applications based on Turing-complete smart contracts will be able to undertake complex processes on the blockchain according to a range of different conditions. After the release of Smart Accounts, we'll continue smart contract development to implement sophisticated logic to address almost any computational task.", + "smartContracts.plans.stage2.left.subtitle": "Smart Assets", + "smartContracts.plans.stage2.right.text": "A unique feature that dramatically extends token functionality, offering the ability to script token behaviour and providing the flexibility to satisfy any developer’s needs.", + "smartContracts.plans.stage3.left.title": "Stage 3", + "smartContracts.plans.stage3.left.subtitle": "Smart Contracts", + "smartContracts.plans.stage3.right.text": "Decentralised applications based on Turing-complete smart contracts will be able to carry out almost any computational task on the blockchain.", "smartContracts.usefulLinks.title": "Useful links", "smartContracts.usefulLinks.contracts.title": "Smart Contracts", "smartContracts.usefulLinks.contracts.capabilities": "Approach and capabilities", diff --git a/src/server/locale/hi.json b/src/server/locale/hi.json index 43737acc..abfee4ca 100644 --- a/src/server/locale/hi.json +++ b/src/server/locale/hi.json @@ -168,6 +168,21 @@ "home.wallet.wallet":"मल्टी-करेंसी वॉलेट्स", "home.wavesClient.text":"Waves क्लाइंट के वर्तमान संस्करण में वॉलेट, DEX और Token Launcher शामिल है।", "home.wavesClient.title":"Waves Client", + "home.smartAssets.title.text": "Smart Assets feature is activated on Waves MainNet!", + "home.smartAssets.button.learn": "Learn more", + "home.smartAssets.activated.title": "Smart Assets will be activated in", + "home.smartAssets.days.one": "day", + "home.smartAssets.days.few": "days", + "home.smartAssets.days.other": "days", + "home.smartAssets.hours.one": "hour", + "home.smartAssets.hours.few": "hours", + "home.smartAssets.hours.other": "hours", + "home.smartAssets.minutes.one": "minute", + "home.smartAssets.minutes.few": "minutes", + "home.smartAssets.minutes.other": "minutes", + "home.smartAssets.seconds.one": "second", + "home.smartAssets.seconds.few": "seconds", + "home.smartAssets.seconds.other": "seconds", "howToWallet.step1":"खाता बनाएं", "howToWallet.step2":"अपने वॉलेट में क्रिप्टो या फिएट करेंसी जमा करें।", "howToWallet.step3":"Waves क्लाइंट में विकेन्द्रित (डीसेन्ट्रलाइज़्ड) एक्सचेंज का उपयोग करते हुए आप किसी भी करेंसी को Waves टोकनों में बदल सकते हैं।", @@ -379,4 +394,4 @@ "wavesNG.news.2":"Waves, पूरी दुनिया में 'सबसे तेज' विकेन्द्रित ब्लॉकचेन प्लेटफार्म बनने के लिए तैयार है", "wavesNG.descriptions.costPerTxs":"लेनदेन मूल्य", "wavesNG.descriptions.txsPerSecond":"प्रति सेकंड लेनदेन" -} \ No newline at end of file +} diff --git a/src/server/locale/ko.json b/src/server/locale/ko.json index bc6727a3..c4d20750 100644 --- a/src/server/locale/ko.json +++ b/src/server/locale/ko.json @@ -159,6 +159,21 @@ "home.wallet.wallet": "복수통화 지갑을 개설", "home.wavesClient.text": "Waves 클라이언트의 현재 버전은 지갑, 분산화거래소 (DEX), 토큰 발행 기능을 포합합니다. ", "home.wavesClient.title": "Waves 클라이언트 ", + "home.smartAssets.title.text": "Smart Assets feature is activated on Waves MainNet!", + "home.smartAssets.button.learn": "Learn more", + "home.smartAssets.activated.title": "Smart Assets will be activated in", + "home.smartAssets.days.one": "day", + "home.smartAssets.days.few": "days", + "home.smartAssets.days.other": "days", + "home.smartAssets.hours.one": "hour", + "home.smartAssets.hours.few": "hours", + "home.smartAssets.hours.other": "hours", + "home.smartAssets.minutes.one": "minute", + "home.smartAssets.minutes.few": "minutes", + "home.smartAssets.minutes.other": "minutes", + "home.smartAssets.seconds.one": "second", + "home.smartAssets.seconds.few": "seconds", + "home.smartAssets.seconds.other": "seconds", "howToWallet.step1": "먼저 Waves 클라이언트를 다운로드 받고 설치하십시오.", "howToWallet.step2": "지갑을 비트코인, 이더리움, 이더리움 클래식, 미국 달러나 유로로 채우십시오. ", "howToWallet.step3": "화폐를 Waves 클라이언트에 있는 분산화거래소(DEX)를 통해 Waves 토큰으로 변환하실 수 있습니다. ", diff --git a/src/server/locale/ru.json b/src/server/locale/ru.json index ec838e9e..4c750de0 100644 --- a/src/server/locale/ru.json +++ b/src/server/locale/ru.json @@ -21,6 +21,8 @@ "company.about.text": "Waves — глобальная блокчейн-платформа, запущенная в 2016 году. Миссия Waves — построить блокчейн-экосистему, позволяющую решать реальные задачи в самых разных сферах. Мы создаем блокчейн-инфраструктуру с удобными инструментами для пользователей нашей платформы, разработчиков и бизнесов.", "components.buttonGetApp.title.android": "Скачать в Google Play", "components.buttonGetApp.title.ios": "Скачать в APP STORE", + "components.buttonGetApp.title.androidLink": "Скачать Android
версию 2.2.1", + "components.buttonGetApp.title.iosLink": "iOS версия
ожидается", "home.joinUs.text2": "Присоединиться к сообществу Waves", "cta.brandingPackage": "Брендбук", "cta.getClient": "Скачать клиент", @@ -54,10 +56,6 @@ "developers.friendlyAPI.subtitle": "Waves — платформа с открытым кодом. Вы можете использовать API для разработки собственных приложений.", "developers.friendlyAPI.text": "Ноды предоставляют доступ ко всей информации в блокчейне Waves, включая историю транзакций, состояние баланса и другой. Через REST API можно легко осуществить перевод, обмен или выпуск токенов, а также сдать баланс в лизинг.", "developers.friendlyAPI.title": "Удобный API", - "developers.smart.title": "Смарт-контракты и Смарт-аккаунты", - "developers.smart.subtitle": "Мы создаем простые, надежные и масштабируемые, инструменты для выполнения безопасных и прозрачных бизнес-операций на блокчейне Waves.", - "developers.smart.text": "Мы придумали новый язык программирования, оптимизированный для работы в блокчейн среде и упрощающий создание смарт-контрактов — RIDE. Мы разрабатываем экосистему, которая позволит запускать децентрализованные приложения и реализовывать любой функционал на блокчейне Waves.", - "developers.smart.cta": "Узнать больше", "developers.text": " Ваши приложения могут работать на блокчейне — мощной, глобально распределенной инфраструктуре. Блокчейн Waves один из самых быстрых NG, масштабируемых и легких в использовании.", "developers.title": "Создавайте приложения с использованием блокчейна", "developers.wavesEcosystem.explorer": "Многофункциональный блокчейн-explorer", @@ -168,6 +166,22 @@ "home.wallet.wallet": "Мультивалютные кошельки", "home.wavesClient.text": "В действующую версию клиента Waves входят кошелек, децентрализованная биржа (DEX) и инструмент для выпуска токенов.", "home.wavesClient.title": "Клиент Waves", + "home.smartAssets.title.text": "Смарт-ассеты активированы в основной сети Waves!", + "home.smartAssets.button.learn": "Узнать больше", + "home.smartAssets.activated.title": "Смарт-ассеты будут активированы через", + "home.smartAssets.days.one": "день", + "home.smartAssets.days.few": "дня", + "home.smartAssets.days.other": "дней", + "home.smartAssets.hours.one": "час", + "home.smartAssets.hours.few": "часа", + "home.smartAssets.hours.other": "часов", + "home.smartAssets.minutes.one": "минута", + "home.smartAssets.minutes.few": "минуты", + "home.smartAssets.minutes.other": "минут", + "home.smartAssets.seconds.one": "секунда", + "home.smartAssets.seconds.few": "секунды", + "home.smartAssets.seconds.other": "секунд", + "howToWallet.step1": "Создайте аккаунт", "howToWallet.step2": "Добавьте в кошелек Bitcoin, Ethereum, Litecoin, Zcash, доллары или евро", "howToWallet.step3": "Деньги можно конвертировать в токены WAVES (находятся в клиенте Waves)", @@ -333,23 +347,6 @@ "smartContracts.title": "Используй RIDE на блокчейне Waves для программирования смарт-контрактов", "smartContracts.description": "Масштабируемый и отказоустойчивый язык программирования, созданный специально для разработки на блокчейне Waves", "smartContracts.cta.documentation": "Скачать Whitepaper", - "smartContracts.block1.text": "Платформа Waves строит блокчейн-решения для реального бизнеса. Мы разрабатываем умные и гибкие инструменты, подходящие для большинства бизнес-кейсов и способные работать с данными из реального мира.", - "smartContracts.features.title": "Что нового дают смарт-контракты?", - "smartContracts.features.1.title": "Мультиподпись", - "smartContracts.features.1.text": "Двухфакторная аутентификация
Не может контролироваться одним человеком
Транзакции производятся только по согласию всех участников одновременно", - "smartContracts.features.2.title": "Атомик свопы", - "smartContracts.features.2.text": "Безопасный обмен токенов, которые находятся на разных блокчейнах", - "smartContracts.features.3.title": "Заморозка токенов", - "smartContracts.features.3.text": "Внедрение параметра, предотвращающего продажу, или передачу токена на определенное время.", - "smartContracts.features.4.title": "Децентрализованные приложения", - "smartContracts.features.4.text": "Децентрализованные приложения на Тьюринг-полных смарт-контрактах, способные осуществлять комплексные процессы на блокчейне с учетом широкого спектра входящих данных.. ", - "smartContracts.plans.title": "План разработки смарт-контрактов", - "smartContracts.plans.stage1.left.title": "Первая стадия", - "smartContracts.plans.stage1.left.subtitle": "Смарт-аккаунты", - "smartContracts.plans.stage1.right.text": "Облегченная версия смарт-контрактов с ограниченным функционалом, основанная на наиболее популярных и востребованных вариантах использования.", - "smartContracts.plans.stage2.left.title": "Вторая стадия", - "smartContracts.plans.stage2.left.subtitle": "Смарт-контракты", - "smartContracts.plans.stage2.right.text": "Децентрализованные приложения на основе Тьюринг-полных смарт-контрактов смогут осуществлять сложные процессы на блокчейне в соответствии с целым рядом различных условий. После выпуска смарт-аккаунтов мы продолжим разработку смарт-контрактов для реализации сложной логики и решения практически любых вычислительных задач.", "smartContracts.usefulLinks.title": "Полезные ссылки", "smartContracts.usefulLinks.contracts.title": "Смарт-контракты", "smartContracts.usefulLinks.contracts.capabilities": "Подход и возможности", diff --git a/src/server/locale/zh.json b/src/server/locale/zh.json index 494ef72d..71c027cc 100644 --- a/src/server/locale/zh.json +++ b/src/server/locale/zh.json @@ -21,6 +21,10 @@ "company.about.text": " Waves平台是全球公共区块链平台,成立于2016年。Waves 平台的使命是通过提供共享基础设施,重塑全球企业家的DNA,提供易于使用,功能强大的工具,使得区块链让每个可从中受益的人们或是组织使用.", "components.buttonGetApp.title.android":"在Google Play上下载", "components.buttonGetApp.title.ios":"在APP STORE上下载", + + "components.buttonGetApp.title.androidLink":"下载Android版本2.2.1", + "components.buttonGetApp.title.iosLink":"iOS版即将推出", + "cta.brandingPackage": "品牌套餐", "cta.getClient": "下载客户端", "cta.getClient.windows": "Windows", @@ -120,13 +124,13 @@ "home.audience.organisations.title": "组织架构", "home.audience.traders.text": "在本地的简易客户端中安全地存储资产,同时也可以快速安全地在内置的去中心化交易平台 (DEX) 上进行交易。", "home.audience.traders.title": "交易者", - "home.issuingTokens.text.one": "获得自己的内部数字货币。使用区块链众筹,支付货物和服务。使用代币创建投票系统和忠诚度或折扣项目。他们在Waves上发行了自己的代币:", - "home.issuingTokens.text.few": "获得自己的内部数字货币。使用区块链众筹,支付货物和服务。使用代币创建投票系统和忠诚度或折扣项目。他们在Waves上发行了自己的代币:", - "home.issuingTokens.text.other": "获得自己的内部数字货币。使用区块链众筹,支付货物和服务。使用代币创建投票系统和忠诚度或折扣项目。他们在Waves上发行了自己的代币:", + "home.issuingTokens.text.one": "获得自己的内部数字货币。使用区块链众筹,支付货物和服务。使用代币创建投票系统和忠诚度或折扣项目。:", + "home.issuingTokens.text.few": "获得自己的内部数字货币。使用区块链众筹,支付货物和服务。使用代币创建投票系统和忠诚度或折扣项目。:", + "home.issuingTokens.text.other": "获得自己的内部数字货币。使用区块链众筹,支付货物和服务。使用代币创建投票系统和忠诚度或折扣项目。:", "home.issuingTokens.title": "发行自己的代币", "home.joinUs.quote": "关注最新的新闻和资讯,了解Waves平台上发生的所有大事件", "home.joinUs.text": "Waves汇集了区块链爱好者、来自许多不同行业的项目创始人、交易者和投资者。", - "home.joinUs.text2": "加入Waves官方社群", + "home.joinUs.text2": "加入Waves官方社群", "home.main.text": "访问Waves平台的解决方案,以方便、安全地存储、交易、管理和发行您的数字资产。", "home.main.title": "开始
使用区块链", "home.numbers.dexVolume": "24小时DEX交易量", @@ -163,6 +167,21 @@ "home.wallet.wallet": "创建一个多币种钱包", "home.wavesClient.text": "当前版本的Waves客户端是一个钱包,去中心化交易平台 (DEX),以及一个发行代币的工具。", "home.wavesClient.title": "Waves客户端", + "home.smartAssets.title.text": "Smart Assets feature is activated on Waves MainNet!", + "home.smartAssets.button.learn": "Learn more", + "home.smartAssets.activated.title": "Smart Assets will be activated in", + "home.smartAssets.days.one": "day", + "home.smartAssets.days.few": "days", + "home.smartAssets.days.other": "days", + "home.smartAssets.hours.one": "hour", + "home.smartAssets.hours.few": "hours", + "home.smartAssets.hours.other": "hours", + "home.smartAssets.minutes.one": "minute", + "home.smartAssets.minutes.few": "minutes", + "home.smartAssets.minutes.other": "minutes", + "home.smartAssets.seconds.one": "second", + "home.smartAssets.seconds.few": "seconds", + "home.smartAssets.seconds.other": "seconds", "howToWallet.step1": "请首先创建一个帐户。", "howToWallet.step2": "用比特币、以太币、莱特币、Zcash、美元或欧元向钱包中充值。", "howToWallet.step3": "您可以在钱包客户端上使用去中心化交易平台将它们转换为Waves代币。", @@ -371,4 +390,4 @@ "wavesNG.title": "Waves—有史以来最快的区块链", "wavesNG.news.1": "Waves-NG压力测试:结果是!", "wavesNG.news.2": "Waves将成为全球最快的去中心化区块链平台" -} \ No newline at end of file +}