From f082cc4508409abdbd31107868046b61991ba146 Mon Sep 17 00:00:00 2001 From: Jan Tuomi Date: Tue, 10 Jul 2018 20:26:31 +0300 Subject: [PATCH] Add all kinds of placeholder content --- db.json | 18 +- plop-templates/component.scss | 2 + src/assets/img/beer.jpeg | Bin 0 -> 10520 bytes src/assets/scss/normalize.css | 341 ++++++++++++++++++++++ src/components/Card/Card.scss | 27 ++ src/components/Card/Card.tsx | 25 ++ src/components/Card/index.ts | 2 + src/components/Footer/Footer.scss | 15 + src/components/Footer/Footer.tsx | 19 ++ src/components/Footer/index.ts | 2 + src/components/Header/Header.scss | 5 + src/components/Header/Header.tsx | 19 ++ src/components/Header/index.ts | 2 + src/components/Navigation/Navigation.scss | 22 ++ src/components/Navigation/Navigation.tsx | 22 ++ src/components/Navigation/index.ts | 2 + src/index.d.ts | 3 + src/index.scss | 22 +- src/index.tsx | 1 + src/pages/CommonPage/CommonPage.tsx | 23 ++ src/pages/CommonPage/index.ts | 2 + src/pages/FrontPage/FrontPage.scss | 8 +- src/pages/FrontPage/FrontPage.tsx | 68 ++--- src/pages/NotFoundPage/NotFoundPage.scss | 5 +- src/routes.tsx | 3 +- tests/testcafe/index.test.ts | 30 +- 26 files changed, 583 insertions(+), 105 deletions(-) create mode 100644 src/assets/img/beer.jpeg create mode 100644 src/assets/scss/normalize.css create mode 100644 src/components/Card/Card.scss create mode 100644 src/components/Card/Card.tsx create mode 100644 src/components/Card/index.ts create mode 100644 src/components/Footer/Footer.scss create mode 100644 src/components/Footer/Footer.tsx create mode 100644 src/components/Footer/index.ts create mode 100644 src/components/Header/Header.scss create mode 100644 src/components/Header/Header.tsx create mode 100644 src/components/Header/index.ts create mode 100644 src/components/Navigation/Navigation.scss create mode 100644 src/components/Navigation/Navigation.tsx create mode 100644 src/components/Navigation/index.ts create mode 100644 src/index.d.ts create mode 100644 src/pages/CommonPage/CommonPage.tsx create mode 100644 src/pages/CommonPage/index.ts diff --git a/db.json b/db.json index f2ae48d..0e0dcd2 100644 --- a/db.json +++ b/db.json @@ -1,19 +1,3 @@ { - "posts": [ - { - "id": 1, - "title": "json-server", - "author": "typicode" - } - ], - "comments": [ - { - "id": 1, - "body": "some comment", - "postId": 1 - } - ], - "profile": { - "name": "typicode" - } + } \ No newline at end of file diff --git a/plop-templates/component.scss b/plop-templates/component.scss index 2bedf49..b6a03ed 100644 --- a/plop-templates/component.scss +++ b/plop-templates/component.scss @@ -1,3 +1,5 @@ +@import "../../index.scss"; + .{{ dashCase name }} { } diff --git a/src/assets/img/beer.jpeg b/src/assets/img/beer.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..56c0da511e68b5fdadfccfd2f128eb31cb5b8370 GIT binary patch literal 10520 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 veDYET4@r6!Ff*_=$ah~u=_eA^MPeqrtEKa`{E { + render() { + const { title, text, image } = this.props; + return ( + +
{title}
+ +
{text}
+ + ); + } +} + +export default Card; diff --git a/src/components/Card/index.ts b/src/components/Card/index.ts new file mode 100644 index 0000000..af0084f --- /dev/null +++ b/src/components/Card/index.ts @@ -0,0 +1,2 @@ +import Card from "./Card"; +export default Card; diff --git a/src/components/Footer/Footer.scss b/src/components/Footer/Footer.scss new file mode 100644 index 0000000..84047fe --- /dev/null +++ b/src/components/Footer/Footer.scss @@ -0,0 +1,15 @@ +@import "../../index.scss"; + +.footer { + width: 100%; + padding: 0.5rem; + margin-top: 10rem; + + &__content { + position: absolute; + bottom: 0; + padding: 1rem; + width: 100%; + text-align: center; + } +} diff --git a/src/components/Footer/Footer.tsx b/src/components/Footer/Footer.tsx new file mode 100644 index 0000000..862a53f --- /dev/null +++ b/src/components/Footer/Footer.tsx @@ -0,0 +1,19 @@ +import * as React from "react"; +import "./Footer.scss"; + +export interface FooterProps {} +export interface FooterState {} + +class Footer extends React.Component { + render() { + return +
+
+
+ Aalto-yliopiston Sähköinsinöörikilta © 2018 +
+
; + } +} + +export default Footer; diff --git a/src/components/Footer/index.ts b/src/components/Footer/index.ts new file mode 100644 index 0000000..ccb5e78 --- /dev/null +++ b/src/components/Footer/index.ts @@ -0,0 +1,2 @@ +import Footer from "./Footer"; +export default Footer; diff --git a/src/components/Header/Header.scss b/src/components/Header/Header.scss new file mode 100644 index 0000000..df1da96 --- /dev/null +++ b/src/components/Header/Header.scss @@ -0,0 +1,5 @@ +.header { + display: flex; + flex-flow: column nowrap; + align-items: center; +} diff --git a/src/components/Header/Header.tsx b/src/components/Header/Header.tsx new file mode 100644 index 0000000..deb569d --- /dev/null +++ b/src/components/Header/Header.tsx @@ -0,0 +1,19 @@ +import * as React from "react"; +import "./Header.scss"; +import Navigation from "../Navigation"; + +export interface HeaderProps {} +export interface HeaderState {} + +class Header extends React.Component { + render() { + return ( +
+

Aalto-yliopiston Sähköinsinöörikilta

+ +
+ ); + } +} + +export default Header; diff --git a/src/components/Header/index.ts b/src/components/Header/index.ts new file mode 100644 index 0000000..aa3e4e8 --- /dev/null +++ b/src/components/Header/index.ts @@ -0,0 +1,2 @@ +import Header from "./Header"; +export default Header; diff --git a/src/components/Navigation/Navigation.scss b/src/components/Navigation/Navigation.scss new file mode 100644 index 0000000..f55be75 --- /dev/null +++ b/src/components/Navigation/Navigation.scss @@ -0,0 +1,22 @@ +@import "../../index.scss"; +$border-width: 4px; + +.navigation { + width: 100%; + display: flex; + flex-flow: row nowrap; + justify-content: center; + margin-bottom: 3rem; + + &__item { + background-color: $off-white; + padding: 0.8rem 2rem; + transition: background-color 0.2s; + border-bottom: $border-width solid $blue; + cursor: pointer; + + &:hover { + background-color: $light-blue; + } + } +} diff --git a/src/components/Navigation/Navigation.tsx b/src/components/Navigation/Navigation.tsx new file mode 100644 index 0000000..728628b --- /dev/null +++ b/src/components/Navigation/Navigation.tsx @@ -0,0 +1,22 @@ +import * as React from "react"; +import "./Navigation.scss"; +import { Link } from "react-router-dom"; + +export interface NavigationProps {} +export interface NavigationState {} + +class Navigation extends React.Component { + render() { + return ( +
+ Etusivu + Kilta + International + Opinnot + Yrityksille +
+ ); + } +} + +export default Navigation; diff --git a/src/components/Navigation/index.ts b/src/components/Navigation/index.ts new file mode 100644 index 0000000..9315d7d --- /dev/null +++ b/src/components/Navigation/index.ts @@ -0,0 +1,2 @@ +import Navigation from "./Navigation"; +export default Navigation; diff --git a/src/index.d.ts b/src/index.d.ts new file mode 100644 index 0000000..999d0e9 --- /dev/null +++ b/src/index.d.ts @@ -0,0 +1,3 @@ +declare module "*.jpeg" { export default '' as string; }; +declare module '*.css' { export default '' as string; }; +declare module '*.png' { export default '' as string; }; \ No newline at end of file diff --git a/src/index.scss b/src/index.scss index 90889ba..48a44be 100644 --- a/src/index.scss +++ b/src/index.scss @@ -1,4 +1,8 @@ -$white: #f4f7fc; +@import "{}/src/assets/scss/normalize.css"; + +$white: #fff; +$off-white: #f4f7fc; +$light-blue: #e4ecfa; $blue: #2f6c76; $dark-blue: #193b41; @@ -7,11 +11,17 @@ $font-helvetica: helvetica, arial, sans-serif; html, body { font-size: 16px; - margin-top: 2rem; - background-color: $white; + background-color: $off-white; height: 100%; font-family: $font-helvetica; color: $blue; + text-align: center; + overflow: auto; +} + +#root { + position: relative; + min-height: 100vh; } body { @@ -28,3 +38,9 @@ p { color: $dark-blue; font-size: 1.5rem; } + +a, +a:hover { + text-decoration: none; + color: $blue; +} diff --git a/src/index.tsx b/src/index.tsx index 6099631..e24297c 100644 --- a/src/index.tsx +++ b/src/index.tsx @@ -5,6 +5,7 @@ import {AppContainer} from "react-hot-loader"; import Routes from "./routes"; import "normalize.css"; import "./index.scss"; +import "./index.d.ts"; const rootEl = document.getElementById("root"); diff --git a/src/pages/CommonPage/CommonPage.tsx b/src/pages/CommonPage/CommonPage.tsx new file mode 100644 index 0000000..8f1eb42 --- /dev/null +++ b/src/pages/CommonPage/CommonPage.tsx @@ -0,0 +1,23 @@ +import * as React from "react"; +import Header from "../../components/Header"; +import Footer from "../../components/Footer"; + +export interface CommonPageProps { + page: any; +} +export interface CommonPageState {} + +class CommonPage extends React.Component { + render() { + const Page = this.props.page; + return ( + +
+ +