diff --git a/README.md b/README.md
index 67eccb9..07f29f4 100644
--- a/README.md
+++ b/README.md
@@ -7,4 +7,6 @@ ETHPrize single page React website
`npm run dev` runs the site at `localhost:3000`
-`npm run deploy` to deploy to `https://nona-creative.github.io/ETHPrize`
\ No newline at end of file
+`npm run deploy` to deploy to `https://nona-creative.github.io/ETHPrize`
+
+`yarn lint` runs the eslinter
diff --git a/assets/styles/base/fonts.scss b/assets/styles/base/fonts.scss
index 1cd25f3..ab7ea55 100644
--- a/assets/styles/base/fonts.scss
+++ b/assets/styles/base/fonts.scss
@@ -1,11 +1,11 @@
@font-face {
- font-family: 'proxima_nova_regular';
- src: url('/static/fonts/proxima_nova-regular-webfont.eot');
- src: url('/static/fonts/proxima_nova-regular-webfont.eot?#iefix') format('embedded-opentype'),
- url('/static/fonts/proxima_nova-regular-webfont.woff2') format('woff2'),
- url('/static/fonts/proxima_nova-regular-webfont.woff') format('woff'),
- url('/static/fonts/proxima_nova-regular-webfont.ttf') format('truetype'),
- url('/static/fonts/proxima_nova-regular-webfont.svg#proxima_nova_rgregular') format('svg');
+ font-family: 'bebas_neuebold';
+ src: url('/static/fonts/bebasneue_bold-webfont.eot');
+ src: url('/static/fonts/bebasneue_bold-webfont.eot?#iefix') format('embedded-opentype'),
+ url('/static/fonts/bebasneue_bold-webfont.woff2') format('woff2'),
+ url('/static/fonts/bebasneue_bold-webfont.woff') format('woff'),
+ url('/static/fonts/bebasneue_bold-webfont.ttf') format('truetype'),
+ url('/static/fonts/bebasneue_bold-webfont.svg#bebas_neuebold') format('svg');
font-weight: normal;
font-style: normal;
}
diff --git a/assets/styles/base/type.scss b/assets/styles/base/type.scss
index 1349c81..2fc625f 100644
--- a/assets/styles/base/type.scss
+++ b/assets/styles/base/type.scss
@@ -12,3 +12,16 @@ body {
line-height: calculateRem($body-line-height);
color: $text-color;
}
+
+h1,
+h2,
+h3,
+h4,
+h5,
+h6 {
+ font-weight: 700;
+}
+
+strong {
+ font-weight: 700;
+}
diff --git a/assets/styles/base/variables.scss b/assets/styles/base/variables.scss
index ac62d25..aa11721 100644
--- a/assets/styles/base/variables.scss
+++ b/assets/styles/base/variables.scss
@@ -2,6 +2,7 @@
$smallMobile: 375px;
$bigMobile: 480px;
$tablet: 768px;
+$toDesktop: 1023px;
$desktop: 1024px;
$monitor: 1220px;
$big: 1440px;
@@ -12,4 +13,10 @@ $text-color: #666;
// text
$body-font-size: 16;
$body-line-height: 24;
-$primary-font: 'proxima_nova_regular', sans-serif;
\ No newline at end of file
+$primary-font: 'Roboto Mono', monospace;
+$secondary-font: 'bebas_neuebold', sans-serif;
+
+// layout
+$container-width: 600;
+$desktop-related-interviews-width: 180;
+$container-padding: 24;
diff --git a/components/interviewsList/index.js b/components/interviewsList/index.js
new file mode 100644
index 0000000..3e0b937
--- /dev/null
+++ b/components/interviewsList/index.js
@@ -0,0 +1,51 @@
+import React from 'react';
+import Modal from '../../components/modal';
+import Data from '../../data/archives/interviews';
+import './style.scss';
+
+class InterviewsList extends React.Component {
+ constructor(props) {
+ super(props);
+
+ this.state = { isInterviewsListModalOpen: false };
+ this.toggleInterviewsListModal = this.toggleInterviewsListModal.bind(this);
+ }
+
+ toggleInterviewsListModal() {
+ const { isInterviewsListModalOpen } = this.state;
+ this.setState({ isInterviewsListModalOpen: !isInterviewsListModalOpen });
+ }
+
+ render() {
+ const { isInterviewsListModalOpen } = this.state;
+
+ return (
+
+
+ Interviews ({ Data.length }) {/* eslint-disable-line */}
+ View {/* eslint-disable-line */}
+
+
+ {
+ (
+
+ Interviews
+
+ {
+ Data.map(interview => - { `${interview.name} ${interview.surname}` }
)
+ }
+
+
+ )
+ }
+
+
+ );
+ }
+}
+
+export default InterviewsList;
diff --git a/components/interviewsList/style.scss b/components/interviewsList/style.scss
new file mode 100644
index 0000000..2111471
--- /dev/null
+++ b/components/interviewsList/style.scss
@@ -0,0 +1,37 @@
+@import './assets/styles/global.scss';
+
+.mob-interviews-link {
+ display: flex;
+ justify-content: space-between;
+ margin-bottom: calculateRem(24);
+
+ @media (min-width: $desktop) {
+ display: none;
+ }
+
+ span {
+ cursor: pointer;
+ outline: none;
+
+ &:hover {
+ text-decoration: underline;
+ }
+ }
+}
+
+.interviews-list-wrap .modal {
+
+ @media (min-width: $desktop) {
+ display: block;
+ width: calculateRem($desktop-related-interviews-width);
+ }
+
+ li {
+ font-size: calculateRem(14);
+ cursor: pointer;
+
+ &:hover {
+ text-decoration: underline;
+ }
+ }
+}
diff --git a/components/modal/index.js b/components/modal/index.js
new file mode 100644
index 0000000..76468c3
--- /dev/null
+++ b/components/modal/index.js
@@ -0,0 +1,25 @@
+import React from 'react';
+import { PropTypes } from 'prop-types';
+import './style.scss';
+
+const Modal = props => (
+
+
+ { props.children }
+
x
{/* eslint-disable-line */}
+
+
+);
+
+Modal.propTypes = {
+ isModalOpen: PropTypes.bool.isRequired,
+ children: PropTypes.shape({}).isRequired,
+ closeModal: PropTypes.func.isRequired,
+ modalOnMobileOnly: PropTypes.bool,
+};
+
+Modal.defaultProps = {
+ modalOnMobileOnly: false,
+};
+
+export default Modal;
diff --git a/components/modal/style.scss b/components/modal/style.scss
new file mode 100644
index 0000000..a47b121
--- /dev/null
+++ b/components/modal/style.scss
@@ -0,0 +1,71 @@
+@import './assets/styles/global.scss';
+
+.modal {
+ display: none;
+
+ &.modal-open {
+ display: block;
+ position: fixed;
+ top: 0;
+ left: 0;
+ width: 100vw;
+ height: 100vh;
+ background-color: rgba(0, 0, 0, 0.6);
+ z-index: 3;
+ }
+
+ &.modal-on-mobile-only {
+
+ @media (min-width: $desktop) {
+ background-color: transparent;
+ height: auto;
+
+ .modal-inner {
+ position: initial;
+ padding: 0;
+ width: auto;
+ height: auto;
+ top: inherit;
+ left: inherit;
+ }
+
+ .modal-close {
+ display: none;
+ }
+ }
+ }
+}
+
+.modal-inner {
+ position: relative;
+ z-index: 4;
+ background-color: #fff;
+ width: 90%;
+ height: 90%;
+ top: 5%;
+ left: 5%;
+ overflow: auto;
+ padding: calculateRem(20);
+
+ @media (min-width: $tablet) {
+ padding-top: calculateRem(60);
+ }
+}
+
+.modal-close {
+ position: absolute;
+ top: calculateRem(12);
+ right: calculateRem(12);
+ padding: calculateRem(4);
+ background-color: #cfcfcf;
+ text-align: center;
+ width: calculateRem(32);
+ height: calculateRem(32);
+ border-radius: 50%;
+ cursor: pointer;
+ outline: none;
+
+ &:hover {
+ background-color: #c1c1c1;
+ }
+}
diff --git a/components/pageFooter/index.js b/components/pageFooter/index.js
new file mode 100644
index 0000000..e5239a7
--- /dev/null
+++ b/components/pageFooter/index.js
@@ -0,0 +1,10 @@
+import React from 'react';
+import './style.scss';
+
+export default () => (
+
+
+
Copyright { (new Date()).getFullYear() }
+
+
+);
diff --git a/components/pageFooter/style.scss b/components/pageFooter/style.scss
new file mode 100644
index 0000000..9e37380
--- /dev/null
+++ b/components/pageFooter/style.scss
@@ -0,0 +1,8 @@
+@import './assets/styles/global.scss';
+
+.page-footer {
+ background-color: #efefef;
+ padding: calculateRem(8) 0;
+ text-align: center;
+ font-size: calculateRem(12);
+}
diff --git a/components/pageHeader/index.js b/components/pageHeader/index.js
new file mode 100644
index 0000000..97e0d49
--- /dev/null
+++ b/components/pageHeader/index.js
@@ -0,0 +1,14 @@
+import React from 'react';
+import './style.scss';
+
+export default () => (
+
+
+
Ethereum Report
+
+ We’ve interviewed 100+ developers to showcase the biggest opportunities in the
+ Ethereum ecosystem
+
+
+
+);
diff --git a/components/pageHeader/style.scss b/components/pageHeader/style.scss
new file mode 100644
index 0000000..5616434
--- /dev/null
+++ b/components/pageHeader/style.scss
@@ -0,0 +1,14 @@
+@import './assets/styles/global.scss';
+
+.page-header {
+ background-color: #efefef;
+ padding: calculateRem(24) 0;
+ text-align: center;
+ margin-bottom: calculateRem(24);
+
+ h1 {
+ margin-bottom: calculateRem(24);
+ font-family: $secondary-font;
+ font-size: calculateRem(36);
+ }
+}
diff --git a/components/projectsList/index.js b/components/projectsList/index.js
new file mode 100644
index 0000000..ec57547
--- /dev/null
+++ b/components/projectsList/index.js
@@ -0,0 +1,14 @@
+import React from 'react';
+import Data from '../../data/archives/projects';
+import './style.scss';
+
+export default () => (
+
+
Projects
+
+ {
+ Data.map(project => - { project }
)
+ }
+
+
+);
diff --git a/components/projectsList/style.scss b/components/projectsList/style.scss
new file mode 100644
index 0000000..9e4270b
--- /dev/null
+++ b/components/projectsList/style.scss
@@ -0,0 +1,25 @@
+@import './assets/styles/global.scss';
+
+.projects-list {
+ margin-bottom: calculateRem(24);
+
+ ul {
+ display: flex;
+ flex-wrap: wrap;
+ }
+
+ li {
+ font-size: calculateRem(14);
+ padding: 0 calculateRem(8) calculateRem(8) 0;
+ cursor: pointer;
+
+ span {
+ background-color: rgba(0, 0, 0, 0.1);
+ padding: calculateRem(4) calculateRem(12);
+
+ &:hover {
+ background-color: rgba(0, 0, 0, 0.3);
+ }
+ }
+ }
+}
diff --git a/components/resources/index.js b/components/resources/index.js
new file mode 100644
index 0000000..a50f2eb
--- /dev/null
+++ b/components/resources/index.js
@@ -0,0 +1,108 @@
+import React from 'react';
+import Parser from 'html-react-parser';
+import Slider from 'react-slick';
+import Modal from '../../components/modal';
+import WordCloud from '../../components/wordCloud';
+import Data from '../../data/resources/wordclouds';
+import './style.scss';
+
+class Resources extends React.Component {
+ constructor(props) {
+ super(props);
+
+ this.state = {
+ isWordCloudModalOpen: false,
+ activeSlide: 0,
+ };
+ this.openWordCloudModal = this.openWordCloudModal.bind(this);
+ this.closeWordCloudModal = this.closeWordCloudModal.bind(this);
+ }
+
+ openWordCloudModal(event) {
+ /*
+ /* Check if clicked element is a child and doesn't have a data-index,
+ /* then go get data-index from the parentNode
+ */
+ let clickedElement = event.target;
+ while (clickedElement.dataset.index === undefined) {
+ clickedElement = clickedElement.parentNode;
+ }
+ const clickedIndex = clickedElement.dataset.index;
+ this.slider.slickGoTo(clickedIndex);
+
+ this.setState({
+ isWordCloudModalOpen: true,
+ activeSlide: clickedIndex,
+ });
+ }
+
+ closeWordCloudModal() {
+ this.setState({ isWordCloudModalOpen: false });
+ }
+
+ render() {
+ const { isWordCloudModalOpen, activeSlide } = this.state;
+ const settings = {
+ infinite: true,
+ speed: 500,
+ slidesToShow: 1,
+ slidesToScroll: 1,
+ initialSlide: activeSlide,
+ className: 'resources-content-slider',
+ arrows: false,
+ };
+
+ return (
+
+
+
Resources
+
+ {
+ Data.map((wordCloud, index) =>
+ ())
+ }
+
+
+ (this.slider = slider)} {...settings}> {/* eslint-disable-line */}
+ {
+ Data.map((slide, index, array) => {
+ const prevItemIndex = index - 1 === -1 ? array.length - 1 : index - 1;
+ const nextItemIndex = index + 1 === array.length ? 0 : index + 1;
+
+ return (
+
+
+
+
this.slider.slickGoTo(prevItemIndex)}> {/* eslint-disable-line */}
+ < { array[prevItemIndex].title }
+
+
{ slide.title }
+
this.slider.slickGoTo(nextItemIndex)}> {/* eslint-disable-line */}
+ { array[nextItemIndex].title } >
+
+
+
+ { Parser(slide.slideContent) }
+
+
+
+ );
+ })
+ }
+
+
+
+
+ );
+ }
+}
+
+export default Resources;
diff --git a/components/resources/style.scss b/components/resources/style.scss
new file mode 100644
index 0000000..42b1572
--- /dev/null
+++ b/components/resources/style.scss
@@ -0,0 +1,75 @@
+@import './assets/styles/global.scss';
+
+.resources-wrap h2 {
+ text-transform: uppercase;
+ font-family: $secondary-font;
+ font-size: calculateRem(36);
+}
+
+.wordclouds-wrap {
+ margin-bottom: calculateRem(24);
+
+ @media (min-width: $bigMobile) {
+ display: grid;
+ grid-template-columns: repeat(2, 1fr);
+ }
+}
+
+.resources-content-slider {
+
+ @media (min-width: $tablet) {
+
+ .slick-arrow {
+ top: calculateRem(8);
+ }
+ }
+
+ .slide-inner {
+ text-align: center;
+ outline: none;
+
+ &:focus,
+ &:active {
+ outline: none;
+ }
+ }
+
+ .slide-header {
+ display: flex;
+ justify-content: space-between;
+
+ @media (min-width: $tablet) {
+ margin-bottom: calculateRem(24);
+ }
+
+ h3 {
+ margin: 0 calculateRem(40);
+ }
+ }
+
+ .slide-content {
+ max-width: calculateRem(1024);
+ margin: 0 auto;
+ padding: 0 calculateRem(32);
+ }
+
+ .slide-arrow {
+ cursor: pointer;
+ margin-top: calculateRem(32);
+ outline: none;
+
+ @media (min-width: $tablet) {
+ margin-top: 0;
+ }
+
+ span {
+ display: none;
+
+ @media (min-width: $tablet) {
+ display: inline-block;
+ margin: 0 calculateRem(8);
+ font-size: calculateRem(12);
+ }
+ }
+ }
+}
diff --git a/components/search/index.js b/components/search/index.js
new file mode 100644
index 0000000..7cc8f53
--- /dev/null
+++ b/components/search/index.js
@@ -0,0 +1,46 @@
+import React from 'react';
+import TopicsList from '../../components/topicsList';
+import ProjectsList from '../../components/projectsList';
+import InterviewsList from '../interviewsList';
+import './style.scss';
+
+class Search extends React.Component {
+ constructor(props) {
+ super(props);
+
+ this.state = { term: '' };
+ this.onInputChange = this.onInputChange.bind(this);
+ }
+
+ onInputChange(event) {
+ this.setState({ term: event.target.value });
+ }
+
+ render() {
+ return (
+
+
+
+
Browse Archives
+
+
+
+
+
+ );
+ }
+}
+
+export default Search;
diff --git a/components/search/style.scss b/components/search/style.scss
new file mode 100644
index 0000000..64247c6
--- /dev/null
+++ b/components/search/style.scss
@@ -0,0 +1,50 @@
+@import './assets/styles/global.scss';
+
+.search-bar {
+ background-color: #efefef;
+ margin-bottom: calculateRem(56);
+
+ h3 {
+ padding: calculateRem(32) 0 0;
+ text-align: center;
+ text-transform: uppercase;
+ font-family: $secondary-font;
+ font-size: calculateRem(36);
+ }
+}
+
+.search-input {
+ width: 100%;
+ height: calculateRem(48);
+ border: 5px solid #efefef;
+ padding: calculateRem(12);
+ font-size: calculateRem(16);
+ position: relative;
+ bottom: calculateRem(-24);
+
+ &:focus,
+ &:active {
+ outline: none;
+ }
+}
+
+.search-results-wrap.container {
+ margin-bottom: calculateRem(48);
+
+ @media (min-width: $desktop) {
+ display: flex;
+ max-width: calculateRem($container-width + $desktop-related-interviews-width*2 + $container-padding*2);
+ }
+
+ h4 {
+ margin-bottom: calculateRem(24);
+ }
+}
+
+.search-results {
+
+ @media (min-width: $desktop) {
+ width: calculateRem($container-width);
+ padding: 0 calculateRem($container-padding);
+ }
+}
diff --git a/components/topicsList/index.js b/components/topicsList/index.js
new file mode 100644
index 0000000..298b322
--- /dev/null
+++ b/components/topicsList/index.js
@@ -0,0 +1,14 @@
+import React from 'react';
+import Data from '../../data/archives/topics';
+import './style.scss';
+
+export default () => (
+
+
Topics
+
+ {
+ Data.map(topic => - { topic }
)
+ }
+
+
+);
diff --git a/components/topicsList/style.scss b/components/topicsList/style.scss
new file mode 100644
index 0000000..df57169
--- /dev/null
+++ b/components/topicsList/style.scss
@@ -0,0 +1,25 @@
+@import './assets/styles/global.scss';
+
+.topics-list {
+ margin-bottom: calculateRem(24);
+
+ ul {
+ display: flex;
+ flex-wrap: wrap;
+ }
+
+ li {
+ font-size: calculateRem(14);
+ padding: 0 calculateRem(8) calculateRem(8) 0;
+ cursor: pointer;
+
+ span {
+ background-color: rgba(0, 0, 0, 0.1);
+ padding: calculateRem(4) calculateRem(12);
+
+ &:hover {
+ background-color: rgba(0, 0, 0, 0.3);
+ }
+ }
+ }
+}
diff --git a/components/wordCloud/index.js b/components/wordCloud/index.js
new file mode 100644
index 0000000..bc141cc
--- /dev/null
+++ b/components/wordCloud/index.js
@@ -0,0 +1,38 @@
+import React from 'react';
+import { PropTypes } from 'prop-types';
+import './style.scss';
+
+const WordCloud = props => (
+ // eslint-disable-next-line
+
+
{ props.words.title }
+
+ { props.words.cloud.map(word => (
+
+ { word.word }
+
+ ))
+ }
+
+
+);
+
+WordCloud.propTypes = {
+ index: PropTypes.number.isRequired,
+ words: PropTypes.shape({
+ title: PropTypes.string,
+ cloud: PropTypes.array,
+ }).isRequired,
+ openWordCloudModal: PropTypes.func.isRequired,
+};
+
+export default WordCloud;
diff --git a/components/wordCloud/style.scss b/components/wordCloud/style.scss
new file mode 100644
index 0000000..7bffd97
--- /dev/null
+++ b/components/wordCloud/style.scss
@@ -0,0 +1,33 @@
+@import './assets/styles/global.scss';
+
+.wordcloud {
+ text-align: center;
+ padding: calculateRem(24);
+ cursor: pointer;
+ outline: none;
+
+ h3{
+ margin-bottom: calculateRem(8);
+ }
+
+ span {
+ display: inline-block;
+ padding: 0 calculateRem(8);
+
+ &.size-1 {
+ font-size: calculateRem(30);
+ }
+
+ &.size-2 {
+ font-size: calculateRem(25);
+ }
+
+ &.size-3 {
+ font-size: calculateRem(20);
+ }
+
+ &.size-4 {
+ font-size: calculateRem(15);
+ }
+ }
+}
diff --git a/data/archives/interviews.js b/data/archives/interviews.js
new file mode 100644
index 0000000..97c0ba1
--- /dev/null
+++ b/data/archives/interviews.js
@@ -0,0 +1,104 @@
+const data = [
+ {
+ id: 1,
+ name: 'Name',
+ surname: 'Surname'
+ },
+ {
+ id: 2,
+ name: 'Name',
+ surname: 'Surname'
+ },
+ {
+ id: 3,
+ name: 'Name',
+ surname: 'Surname'
+ },
+ {
+ id: 4,
+ name: 'Name',
+ surname: 'Surname'
+ },
+ {
+ id: 5,
+ name: 'Name',
+ surname: 'Surname'
+ },
+ {
+ id: 6,
+ name: 'Name',
+ surname: 'Surname'
+ },
+ {
+ id: 7,
+ name: 'Name',
+ surname: 'Surname'
+ },
+ {
+ id: 8,
+ name: 'Name',
+ surname: 'Surname'
+ },
+ {
+ id: 9,
+ name: 'Name',
+ surname: 'Surname'
+ },
+ {
+ id: 10,
+ name: 'Name',
+ surname: 'Surname'
+ },
+ {
+ id: 11,
+ name: 'Name',
+ surname: 'Surname'
+ },
+ {
+ id: 12,
+ name: 'Name',
+ surname: 'Surname'
+ },
+ {
+ id: 13,
+ name: 'Name',
+ surname: 'Surname'
+ },
+ {
+ id: 14,
+ name: 'Name',
+ surname: 'Surname'
+ },
+ {
+ id: 15,
+ name: 'Name',
+ surname: 'Surname'
+ },
+ {
+ id: 16,
+ name: 'Name',
+ surname: 'Surname'
+ },
+ {
+ id: 17,
+ name: 'Name',
+ surname: 'Surname'
+ },
+ {
+ id: 18,
+ name: 'Name',
+ surname: 'Surname'
+ },
+ {
+ id: 19,
+ name: 'Name',
+ surname: 'Surname'
+ },
+ {
+ id: 20,
+ name: 'Name',
+ surname: 'Surname'
+ }
+];
+
+export default data;
diff --git a/data/archives/projects.js b/data/archives/projects.js
new file mode 100644
index 0000000..f851c48
--- /dev/null
+++ b/data/archives/projects.js
@@ -0,0 +1,16 @@
+const data = [
+ 'Project 1',
+ 'Project 2',
+ 'Project 3',
+ 'Project 4',
+ 'Project 5',
+ 'Project 6',
+ 'Project 7',
+ 'Project 8',
+ 'Project 9',
+ 'Project 10',
+ 'Project 11',
+ 'Project 12'
+];
+
+export default data;
diff --git a/data/archives/topics.js b/data/archives/topics.js
new file mode 100644
index 0000000..c8f8f8d
--- /dev/null
+++ b/data/archives/topics.js
@@ -0,0 +1,17 @@
+const data = [
+ 'Tools',
+ 'Solidity',
+ 'Truffle',
+ 'Deploying',
+ 'Concerns',
+ 'Scalability',
+ 'Evolution',
+ 'Workflow',
+ 'Linting',
+ 'Casper',
+ 'Testnet',
+ 'Plasma',
+ 'Testing'
+];
+
+export default data;
diff --git a/data/resources/wordclouds.js b/data/resources/wordclouds.js
new file mode 100644
index 0000000..41a4e77
--- /dev/null
+++ b/data/resources/wordclouds.js
@@ -0,0 +1,108 @@
+const data = [
+ {
+ title: 'Resources Title 1',
+ cloud: [
+ {
+ 'word': 'testing',
+ 'size': 3
+ },
+ {
+ 'word': 'Solidity',
+ 'size': 2
+ },
+ {
+ 'word': 'Gas',
+ 'size': 3
+ },
+ {
+ 'word': 'Ethereum',
+ 'size': 1
+ },
+ {
+ 'word': 'load speed',
+ 'size': 4,
+ },
+ ],
+ slideContent: 'Slide 1 content goes here. Slide 1 content goes here. Slide 1 content goes here.
',
+ },
+ {
+ title: 'Resources Title 2',
+ cloud: [
+ {
+ 'word': 'load speed',
+ 'size': 4
+ },
+ {
+ 'word': 'Gas',
+ 'size': 3
+ },
+ {
+ 'word': 'Ethereum',
+ 'size': 2
+ },
+ {
+ 'word': 'testing',
+ 'size': 1
+ },
+ {
+ 'word': 'Solidity',
+ 'size': 2,
+ },
+ ],
+ slideContent: 'Slide 2 content goes here. Slide 2 content goes here. Slide 2 content goes here.
',
+ },
+ {
+ title: 'Resources Title 3',
+ cloud: [
+ {
+ 'word': 'load speed',
+ 'size': 4
+ },
+ {
+ 'word': 'Gas',
+ 'size': 3
+ },
+ {
+ 'word': 'Ethereum',
+ 'size': 2
+ },
+ {
+ 'word': 'testing',
+ 'size': 1
+ },
+ {
+ 'word': 'Solidity',
+ 'size': 2,
+ },
+ ],
+ slideContent: 'Slide 3 content goes here. Slide 3 content goes here. Slide 3 content goes here.
',
+ },
+ {
+ title: 'Resources Title 4',
+ cloud: [
+ {
+ 'word': 'testing',
+ 'size': 3
+ },
+ {
+ 'word': 'Solidity',
+ 'size': 2
+ },
+ {
+ 'word': 'Gas',
+ 'size': 3
+ },
+ {
+ 'word': 'Ethereum',
+ 'size': 1
+ },
+ {
+ 'word': 'load speed',
+ 'size': 4,
+ },
+ ],
+ slideContent: 'Slide 4 content goes here. Slide 4 content goes here. Slide 4 content goes here.
',
+ },
+];
+
+export default data;
diff --git a/pages/_document.js b/pages/_document.js
index d8bd00f..50993e4 100644
--- a/pages/_document.js
+++ b/pages/_document.js
@@ -10,6 +10,7 @@ export default class MyDocument extends Document {
+
diff --git a/pages/index.js b/pages/index.js
index 39a449c..72d94f7 100644
--- a/pages/index.js
+++ b/pages/index.js
@@ -1,8 +1,22 @@
import React from 'react';
+import PageHeader from '../components/pageHeader';
+import PageFooter from '../components/pageFooter';
+import Resources from '../components/resources';
+import Search from '../components/search';
import '../styles.scss';
-export default () => (
-
-
ETHPrize website
coming soon!
-
-);
+class PageWrapper extends React.Component {
+
+ render() {
+ return (
+
+ );
+ }
+}
+
+export default PageWrapper;
diff --git a/static/fonts/bebasneue_bold-webfont.eot b/static/fonts/bebasneue_bold-webfont.eot
new file mode 100755
index 0000000..9e61d3b
Binary files /dev/null and b/static/fonts/bebasneue_bold-webfont.eot differ
diff --git a/static/fonts/bebasneue_bold-webfont.svg b/static/fonts/bebasneue_bold-webfont.svg
new file mode 100755
index 0000000..6feee37
--- /dev/null
+++ b/static/fonts/bebasneue_bold-webfont.svg
@@ -0,0 +1,1935 @@
+
+
+
\ No newline at end of file
diff --git a/static/fonts/bebasneue_bold-webfont.ttf b/static/fonts/bebasneue_bold-webfont.ttf
new file mode 100755
index 0000000..cd0cc5c
Binary files /dev/null and b/static/fonts/bebasneue_bold-webfont.ttf differ
diff --git a/static/fonts/bebasneue_bold-webfont.woff b/static/fonts/bebasneue_bold-webfont.woff
new file mode 100755
index 0000000..aa79c25
Binary files /dev/null and b/static/fonts/bebasneue_bold-webfont.woff differ
diff --git a/static/fonts/bebasneue_bold-webfont.woff2 b/static/fonts/bebasneue_bold-webfont.woff2
new file mode 100755
index 0000000..53798c2
Binary files /dev/null and b/static/fonts/bebasneue_bold-webfont.woff2 differ
diff --git a/static/fonts/proxima_nova-regular-webfont.eot b/static/fonts/proxima_nova-regular-webfont.eot
deleted file mode 100755
index e351a3b..0000000
Binary files a/static/fonts/proxima_nova-regular-webfont.eot and /dev/null differ
diff --git a/static/fonts/proxima_nova-regular-webfont.svg b/static/fonts/proxima_nova-regular-webfont.svg
deleted file mode 100755
index 2ec535c..0000000
--- a/static/fonts/proxima_nova-regular-webfont.svg
+++ /dev/null
@@ -1,570 +0,0 @@
-
-
-
\ No newline at end of file
diff --git a/static/fonts/proxima_nova-regular-webfont.ttf b/static/fonts/proxima_nova-regular-webfont.ttf
deleted file mode 100755
index a05b5b9..0000000
Binary files a/static/fonts/proxima_nova-regular-webfont.ttf and /dev/null differ
diff --git a/static/fonts/proxima_nova-regular-webfont.woff b/static/fonts/proxima_nova-regular-webfont.woff
deleted file mode 100755
index 86506c6..0000000
Binary files a/static/fonts/proxima_nova-regular-webfont.woff and /dev/null differ
diff --git a/static/fonts/proxima_nova-regular-webfont.woff2 b/static/fonts/proxima_nova-regular-webfont.woff2
deleted file mode 100755
index f8b664e..0000000
Binary files a/static/fonts/proxima_nova-regular-webfont.woff2 and /dev/null differ
diff --git a/static/img/slick-carousel/ajax-loader.gif b/static/img/slick-carousel/ajax-loader.gif
new file mode 100644
index 0000000..e0e6e97
Binary files /dev/null and b/static/img/slick-carousel/ajax-loader.gif differ
diff --git a/styles.scss b/styles.scss
index 369516e..52c2fce 100644
--- a/styles.scss
+++ b/styles.scss
@@ -7,25 +7,11 @@
@import './assets/styles/global.scss';
.page-wrapper {
- width: 100vw;
- height: 100vh;
- display: flex;
- justify-content: center;
- align-items: center;
-
- h1 {
- text-align: center;
- font-size: calculateRem(24);
- line-height: 1;
- border: 1px solid;
- padding: calculateRem(20);
-
- @media (min-width: $tablet) {
- font-size: calculateRem(40);
- }
-
- strong {
- font-weight: 700;
- }
- }
+ min-width: calculateRem(320);
+}
+
+.container {
+ max-width: calculateRem($container-width);
+ margin: 0 auto;
+ padding: 0 calculateRem($container-padding);
}