Add top bar logged user info
This commit is contained in:
parent
2eabcc8b93
commit
0adbb53151
65
src/app.tsx
65
src/app.tsx
@ -3,16 +3,17 @@ import { MuiThemeProvider as ThemeProvider, StylesProvider } from "@material-ui/
|
||||
import { studentTheme } from "./ui/theme";
|
||||
import { MuiPickersUtilsProvider } from "@material-ui/pickers";
|
||||
import MomentUtils from "@date-io/moment";
|
||||
import { BrowserRouter, Switch, Route, Link } from "react-router-dom"
|
||||
import { BrowserRouter, Link, Route, Switch } 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 { route, routes } from "@/routing";
|
||||
import { Button, Divider } from '@material-ui/core';
|
||||
|
||||
moment.locale("pl")
|
||||
|
||||
class LocalizedMomentUtils extends MomentUtils {
|
||||
getDatePickerHeaderText(date: Moment): string {
|
||||
@ -21,28 +22,42 @@ class LocalizedMomentUtils extends MomentUtils {
|
||||
}
|
||||
|
||||
function App() {
|
||||
return (
|
||||
<StylesProvider injectFirst>
|
||||
<MuiPickersUtilsProvider utils={ LocalizedMomentUtils } libInstance={ moment }>
|
||||
<ThemeProvider theme={ studentTheme }>
|
||||
<BrowserRouter>
|
||||
<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>
|
||||
</StylesProvider>
|
||||
);
|
||||
return (
|
||||
<StylesProvider injectFirst>
|
||||
<MuiPickersUtilsProvider utils={ LocalizedMomentUtils } libInstance={ moment }>
|
||||
<ThemeProvider theme={ studentTheme }>
|
||||
<BrowserRouter>
|
||||
<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">
|
||||
<ul className="header__menu"></ul>
|
||||
<div className="header__user">
|
||||
zalogowany jako: <strong>Jan Kowalski</strong>
|
||||
{' '}
|
||||
(<Link to={'#'}>wyloguj się</Link>)
|
||||
</div>
|
||||
<div className="header__divider" />
|
||||
<ul className="header__language-switcher">
|
||||
<li>pl</li>
|
||||
<li>en</li>
|
||||
</ul>
|
||||
</nav>
|
||||
<nav className="header__bottom">
|
||||
<ul className="header__menu header__menu--main"></ul>
|
||||
</nav>
|
||||
</div>
|
||||
</header>
|
||||
<Switch>{ routes.map(({ name, content, ...route }) => <Route { ...route } key={ name }>{ content() }</Route>) }</Switch>
|
||||
</BrowserRouter>
|
||||
</ThemeProvider>
|
||||
</MuiPickersUtilsProvider>
|
||||
</StylesProvider>
|
||||
);
|
||||
}
|
||||
|
||||
export default App;
|
||||
|
@ -144,13 +144,13 @@ export const InternshipForm: React.FunctionComponent<InternshipFormProps> = prop
|
||||
|
||||
return (
|
||||
<div className="internship-form">
|
||||
<Typography variant="h5" className="section-header">Dane osoby odbywającej praktykę</Typography>
|
||||
<Typography variant="h3" className="section-header">Dane osoby odbywającej praktykę</Typography>
|
||||
<StudentForm student={ sampleStudent }/>
|
||||
<Typography variant="h5" className="section-header">Rodzaj i program praktyki</Typography>
|
||||
<Typography variant="h3" className="section-header">Rodzaj i program praktyki</Typography>
|
||||
<InternshipProgramForm internship={ internship } onChange={ setInternship }/>
|
||||
<Typography variant="h5" className="section-header">Czas trwania praktyki</Typography>
|
||||
<Typography variant="h3" className="section-header">Czas trwania praktyki</Typography>
|
||||
<InternshipDurationForm internship={ internship } onChange={ setInternship }/>
|
||||
<Typography variant="h5" className="section-header">Miejsce odbywania praktyki</Typography>
|
||||
<Typography variant="h3" className="section-header">Miejsce odbywania praktyki</Typography>
|
||||
<CompanyForm internship={ internship } onChange={ setInternship }/>
|
||||
<Button variant="contained" color="primary">Wyślij</Button>
|
||||
</div>
|
||||
|
@ -1,11 +1,11 @@
|
||||
import React, { HTMLProps, useEffect } from "react";
|
||||
import classNames from "classnames"
|
||||
import { Breadcrumbs, BreadcrumbsProps, Container, Typography } from "@material-ui/core";
|
||||
import { Box, BoxProps, Breadcrumbs, BreadcrumbsProps, Container, Typography } from "@material-ui/core";
|
||||
import "@/styles/page.scss"
|
||||
|
||||
export type PageProps = {
|
||||
title?: string;
|
||||
} & HTMLProps<any>;
|
||||
} & BoxProps;
|
||||
|
||||
export type PageHeaderProps = {
|
||||
maxWidth?: "sm" | "md" | "lg" | false
|
||||
@ -16,9 +16,9 @@ export const Page = ({ title, children, ...props }: PageProps) => {
|
||||
document.title = title ? title + " | Praktyka Studencka" : "Praktyka Studencka";
|
||||
}, [ title ])
|
||||
|
||||
return <main {...props} className={ classNames("page", props.className) }>
|
||||
return <Box {...props} className={ classNames("page", props.className) } component="main">
|
||||
{ children }
|
||||
</main>
|
||||
</Box>
|
||||
}
|
||||
|
||||
Page.Header = ({ children, maxWidth = false, ...props }: PageHeaderProps) =>
|
||||
|
@ -6,8 +6,9 @@ import { Link as RouterLink } from "react-router-dom";
|
||||
import { route } from "@/routing";
|
||||
|
||||
export const MainPage = () => {
|
||||
return <Page>
|
||||
return <Page my={6}>
|
||||
<Container>
|
||||
<Typography variant="h2">Moja praktyka</Typography>
|
||||
<Stepper orientation="vertical" nonLinear>
|
||||
<Step completed active={false}>
|
||||
<StepLabel>
|
||||
|
@ -4,6 +4,8 @@
|
||||
height: 110px;
|
||||
background: $main;
|
||||
display: flex;
|
||||
|
||||
color: white;
|
||||
}
|
||||
|
||||
.header__logo {
|
||||
@ -22,8 +24,39 @@
|
||||
background-color: $main-dark;
|
||||
height: 38px;
|
||||
width: 100%;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
font-size: 0.75rem;
|
||||
color: #e4f1fe;
|
||||
padding: 0 1rem;
|
||||
|
||||
a {
|
||||
color: #e4f1fe
|
||||
}
|
||||
|
||||
.header__divider {
|
||||
margin: 0 .5rem;
|
||||
background: lighten($main-dark, 3%);
|
||||
width: 1px;
|
||||
height: 60%;
|
||||
}
|
||||
}
|
||||
|
||||
.header__nav {
|
||||
flex: 1 1 auto;
|
||||
}
|
||||
|
||||
.header__top .header__menu {
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
.header__language-switcher {
|
||||
padding: 0;
|
||||
display: flex;
|
||||
text-transform: uppercase;
|
||||
|
||||
li {
|
||||
padding: 7px;
|
||||
list-style: none;
|
||||
}
|
||||
}
|
||||
|
@ -14,4 +14,10 @@
|
||||
html, body {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
|
||||
font-family: "Roboto", "Helvetica", "Arial", sans-serif;
|
||||
}
|
||||
|
||||
* {
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
@ -1,6 +1,6 @@
|
||||
import { createMuiTheme } from "@material-ui/core/styles";
|
||||
import { createMuiTheme, responsiveFontSizes } from "@material-ui/core/styles";
|
||||
|
||||
export const studentTheme = createMuiTheme({
|
||||
export const studentTheme = responsiveFontSizes(createMuiTheme({
|
||||
props: {
|
||||
MuiGrid: {
|
||||
spacing: 3,
|
||||
@ -16,5 +16,19 @@ export const studentTheme = createMuiTheme({
|
||||
dark: "#072138"
|
||||
}
|
||||
},
|
||||
typography: {
|
||||
h2: {
|
||||
fontSize: "3rem",
|
||||
fontWeight: 400,
|
||||
color: "#043865",
|
||||
},
|
||||
h3: {
|
||||
fontSize: "2.25rem",
|
||||
lineHeight: "1.2",
|
||||
},
|
||||
h4: {
|
||||
fontSize: "1.75rem"
|
||||
},
|
||||
},
|
||||
spacing: 8
|
||||
})
|
||||
}))
|
||||
|
Loading…
Reference in New Issue
Block a user