Add new theme based on new GUT style guide

This commit is contained in:
Kacper Donat 2020-07-10 20:10:31 +02:00
parent 774e89a3ec
commit 2eabcc8b93
10 changed files with 106 additions and 16 deletions

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 13 KiB

View File

@ -7,6 +7,7 @@
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400,500,700&display=swap&subset=latin,latin-ext" />
<link rel="manifest" href="%PUBLIC_URL%/manifest.json" />
<title>Zgłoszenie praktyki studenckiej</title>
<base href="/">
</head>
<body>
<noscript>You need to enable JavaScript to run this app.</noscript>

View File

@ -1,18 +1,18 @@
import React from 'react';
import { Container, Typography } from "@material-ui/core";
import { MuiThemeProvider as ThemeProvider, StylesProvider } from "@material-ui/core/styles";
import { studentTheme } from "./ui/theme";
import { InternshipForm } from "@/forms/Internship";
import { MuiPickersUtilsProvider } from "@material-ui/pickers";
import MomentUtils from "@date-io/moment";
import { BrowserRouter, Switch, Route } from "react-router-dom"
import { BrowserRouter, Switch, Route, Link } from "react-router-dom"
import "moment/locale/pl"
moment.locale("pl")
import '@/styles/overrides.scss'
import '@/styles/header.scss'
import moment, { Moment } from "moment";
import { routes } from "@/routing";
import { route, routes } from "@/routing";
class LocalizedMomentUtils extends MomentUtils {
getDatePickerHeaderText(date: Moment): string {
@ -26,9 +26,18 @@ function App() {
<MuiPickersUtilsProvider utils={ LocalizedMomentUtils } libInstance={ moment }>
<ThemeProvider theme={ studentTheme }>
<BrowserRouter>
<div className="app">
<Switch>{ routes.map(({ name, content, ...route }) => <Route { ...route } key={ name }>{ content() }</Route>) }</Switch>
</div>
<header className="header">
<div id="logo" className="header__logo">
<Link to={ route('home') }>
<img src="img/pg-logotyp.svg"/>
</Link>
</div>
<div className="header__nav">
<nav className="header__top"></nav>
<nav className="header__bottom"></nav>
</div>
</header>
<Switch>{ routes.map(({ name, content, ...route }) => <Route { ...route } key={ name }>{ content() }</Route>) }</Switch>
</BrowserRouter>
</ThemeProvider>
</MuiPickersUtilsProvider>

View File

@ -1,10 +1,16 @@
import React, { HTMLProps, useEffect } from "react";
import classNames from "classnames"
import { Breadcrumbs, BreadcrumbsProps, Container, Typography } from "@material-ui/core";
import "@/styles/page.scss"
export type PageProps = {
title?: string;
} & HTMLProps<any>;
export type PageHeaderProps = {
maxWidth?: "sm" | "md" | "lg" | false
} & HTMLProps<HTMLDivElement>
export const Page = ({ title, children, ...props }: PageProps) => {
useEffect(() => {
document.title = title ? title + " | Praktyka Studencka" : "Praktyka Studencka";
@ -14,3 +20,14 @@ export const Page = ({ title, children, ...props }: PageProps) => {
{ children }
</main>
}
Page.Header = ({ children, maxWidth = false, ...props }: PageHeaderProps) =>
<section {...props} className={classNames("page__header", props.className)}>
<Container maxWidth={ maxWidth }>
{ children }
</Container>
</section>
Page.Title = ({ children }: HTMLProps<any>) => <Typography variant="h2" className="page__title">{ children }</Typography>
Page.Breadcrumbs = ({ children, ...props }: BreadcrumbsProps) => <Breadcrumbs { ...props}>{ children }</Breadcrumbs>

View File

@ -1,8 +1,8 @@
import React from "react";
import { Page } from "@/pages/base";
import { Container, Typography, Button, Divider, Box, Stepper, Step, StepLabel, StepContent } from "@material-ui/core";
import { Container, Typography, Button, Divider, Box, Stepper, Step, StepLabel, StepContent, Link } from "@material-ui/core";
import { InternshipForm } from "@/forms/Internship";
import { Link } from "react-router-dom";
import { Link as RouterLink } from "react-router-dom";
import { route } from "@/routing";
export const MainPage = () => {
@ -21,7 +21,7 @@ export const MainPage = () => {
<Step active>
<StepLabel>Zgłoszenie praktyki</StepLabel>
<StepContent>
<Button to={ route("internship_proposal") } variant="contained" color="primary" component={ Link }>Formularz zgłoszenia praktyki</Button>
<Button to={ route("internship_proposal") } variant="contained" color="primary" component={ RouterLink }>Formularz zgłoszenia praktyki</Button>
</StepContent>
</Step>
</Stepper>
@ -31,10 +31,14 @@ export const MainPage = () => {
export const InternshipFormPage = () => {
return <Page title="Zgłoszenie praktyki">
<Page.Header maxWidth="md">
<Page.Breadcrumbs>
<Link component={ RouterLink } to={ route("home") }>Moja praktyka</Link>
<Typography color="textPrimary">Zgłoszenie praktyki</Typography>
</Page.Breadcrumbs>
<Page.Title>Zgłoszenie praktyki</Page.Title>
</Page.Header>
<Container maxWidth={"md"}>
<Typography variant="h3">Zgłoszenie Praktyki</Typography>
<Typography variant="subtitle1">UX Demo</Typography>
<InternshipForm />
</Container>
</Page>
@ -50,7 +54,7 @@ export const NotFoundPage = () => {
<Divider variant="fullWidth" />
</Box>
<Button to={ route("home") } color="primary" component={ Link }>strona główna</Button>
<Button to={ route("home") } color="primary" component={ RouterLink }>strona główna</Button>
</Container>
</Page>
}

View File

@ -0,0 +1,5 @@
$brand: #043865;
$main: #052f52;
$main-dark: #072138;

29
src/styles/header.scss Normal file
View File

@ -0,0 +1,29 @@
@import "variables";
.header {
height: 110px;
background: $main;
display: flex;
}
.header__logo {
width: 152px;
background: $brand;
display: flex;
align-items: center;
justify-content: center;
img {
width: 100px;
}
}
.header__top {
background-color: $main-dark;
height: 38px;
width: 100%;
}
.header__nav {
flex: 1 1 auto;
}

View File

@ -11,6 +11,7 @@
margin-top: 1.5rem;
}
#root {
margin: 100px 0;
html, body {
margin: 0;
padding: 0;
}

14
src/styles/page.scss Normal file
View File

@ -0,0 +1,14 @@
@import "variables";
.page__header {
background-color: #e9f0f5;
padding: 20px 0;
margin-bottom: 2rem;
}
.page__title {
color: $brand;
font-size: 3rem;
font-weight: 400;
line-height: 1.5;
}

View File

@ -5,6 +5,15 @@ export const studentTheme = createMuiTheme({
MuiGrid: {
spacing: 3,
xs: 12,
},
MuiContainer: {
maxWidth: "md"
}
},
palette: {
primary: {
main: "#043865",
dark: "#072138"
}
},
spacing: 8