Initial commit
23
.gitignore
vendored
Normal file
@ -0,0 +1,23 @@
|
||||
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
|
||||
|
||||
# dependencies
|
||||
/node_modules
|
||||
/.pnp
|
||||
.pnp.js
|
||||
|
||||
# testing
|
||||
/coverage
|
||||
|
||||
# production
|
||||
/build
|
||||
|
||||
# misc
|
||||
.DS_Store
|
||||
.env.local
|
||||
.env.development.local
|
||||
.env.test.local
|
||||
.env.production.local
|
||||
|
||||
npm-debug.log*
|
||||
yarn-debug.log*
|
||||
yarn-error.log*
|
5
.idea/.gitignore
generated
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
# Default ignored files
|
||||
/shelf/
|
||||
/workspace.xml
|
||||
# Editor-based HTTP Client requests
|
||||
/httpRequests/
|
6
.idea/discord.xml
generated
Normal file
@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="DiscordProjectSettings">
|
||||
<option name="show" value="PROJECT_FILES" />
|
||||
</component>
|
||||
</project>
|
13
.idea/gameresearch.iml
generated
Normal file
@ -0,0 +1,13 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module type="WEB_MODULE" version="4">
|
||||
<component name="NewModuleRootManager">
|
||||
<content url="file://$MODULE_DIR$">
|
||||
<excludeFolder url="file://$MODULE_DIR$/temp" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/.tmp" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/tmp" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/build" />
|
||||
</content>
|
||||
<orderEntry type="inheritedJdk" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
</component>
|
||||
</module>
|
27
.idea/inspectionProfiles/Project_Default.xml
generated
Normal file
@ -0,0 +1,27 @@
|
||||
<component name="InspectionProjectProfileManager">
|
||||
<profile version="1.0">
|
||||
<option name="myName" value="Project Default" />
|
||||
<inspection_tool class="CssUnknownProperty" enabled="true" level="WARNING" enabled_by_default="true">
|
||||
<option name="myCustomPropertiesEnabled" value="true" />
|
||||
<option name="myIgnoreVendorSpecificProperties" value="false" />
|
||||
<option name="myCustomPropertiesList">
|
||||
<value>
|
||||
<list size="1">
|
||||
<item index="0" class="java.lang.String" itemvalue="line-clamp" />
|
||||
</list>
|
||||
</value>
|
||||
</option>
|
||||
</inspection_tool>
|
||||
<inspection_tool class="Eslint" enabled="true" level="WARNING" enabled_by_default="true" />
|
||||
<inspection_tool class="HtmlUnknownAttribute" enabled="true" level="WARNING" enabled_by_default="true">
|
||||
<option name="myValues">
|
||||
<value>
|
||||
<list size="1">
|
||||
<item index="0" class="java.lang.String" itemvalue="class" />
|
||||
</list>
|
||||
</value>
|
||||
</option>
|
||||
<option name="myCustomValuesEnabled" value="true" />
|
||||
</inspection_tool>
|
||||
</profile>
|
||||
</component>
|
8
.idea/modules.xml
generated
Normal file
@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ProjectModuleManager">
|
||||
<modules>
|
||||
<module fileurl="file://$PROJECT_DIR$/.idea/gameresearch.iml" filepath="$PROJECT_DIR$/.idea/gameresearch.iml" />
|
||||
</modules>
|
||||
</component>
|
||||
</project>
|
6
.idea/vcs.xml
generated
Normal file
@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="VcsDirectoryMappings">
|
||||
<mapping directory="$PROJECT_DIR$" vcs="Git" />
|
||||
</component>
|
||||
</project>
|
4
.idea/watcherTasks.xml
generated
Normal file
@ -0,0 +1,4 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ProjectTasksOptions" suppressed-tasks="Sass" />
|
||||
</project>
|
31365
package-lock.json
generated
Normal file
45
package.json
Normal file
@ -0,0 +1,45 @@
|
||||
{
|
||||
"name": "gameresearch",
|
||||
"version": "0.1.0",
|
||||
"private": true,
|
||||
"dependencies": {
|
||||
"@testing-library/jest-dom": "^5.16.4",
|
||||
"@testing-library/react": "^13.3.0",
|
||||
"@testing-library/user-event": "^14.3.0",
|
||||
"jquery": "^3.6.0",
|
||||
"react": "^18.2.0",
|
||||
"react-dom": "^18.2.0",
|
||||
"react-router-dom": "^5.2.0",
|
||||
"react-scripts": "5.0.1",
|
||||
"sass": "^1.54.0",
|
||||
"universal-cookie": "^4.0.4",
|
||||
"web-vitals": "^2.1.4"
|
||||
},
|
||||
"scripts": {
|
||||
"start": "react-scripts start",
|
||||
"build": "react-scripts build",
|
||||
"test": "react-scripts test",
|
||||
"eject": "react-scripts eject"
|
||||
},
|
||||
"eslintConfig": {
|
||||
"extends": [
|
||||
"react-app",
|
||||
"react-app/jest"
|
||||
]
|
||||
},
|
||||
"browserslist": {
|
||||
"production": [
|
||||
">0.2%",
|
||||
"not dead",
|
||||
"not op_mini all"
|
||||
],
|
||||
"development": [
|
||||
"last 1 chrome version",
|
||||
"last 1 firefox version",
|
||||
"last 1 safari version"
|
||||
]
|
||||
},
|
||||
"optionalDependencies": {
|
||||
"fsevents": "^2.3.2"
|
||||
}
|
||||
}
|
BIN
public/favicon.ico
Normal file
After Width: | Height: | Size: 3.8 KiB |
21
public/index.html
Normal file
@ -0,0 +1,21 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<link rel="icon" href="%PUBLIC_URL%/favicon.ico" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link href="https://fonts.googleapis.com/css2?family=Roboto:wght@500&display=swap" rel="stylesheet">
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.2/css/all.min.css">
|
||||
<meta
|
||||
name="description"
|
||||
content="Web site created using create-react-app"
|
||||
/>
|
||||
<link rel="apple-touch-icon" href="%PUBLIC_URL%/logo192.png" />
|
||||
<link rel="manifest" href="%PUBLIC_URL%/manifest.json" />
|
||||
<title>React App</title>
|
||||
</head>
|
||||
<body>
|
||||
<noscript>You need to enable JavaScript to run this app.</noscript>
|
||||
<div id="root"></div>
|
||||
</body>
|
||||
</html>
|
BIN
public/logo192.png
Normal file
After Width: | Height: | Size: 5.2 KiB |
BIN
public/logo512.png
Normal file
After Width: | Height: | Size: 9.4 KiB |
25
public/manifest.json
Normal file
@ -0,0 +1,25 @@
|
||||
{
|
||||
"short_name": "React App",
|
||||
"name": "Create React App Sample",
|
||||
"icons": [
|
||||
{
|
||||
"src": "favicon.ico",
|
||||
"sizes": "64x64 32x32 24x24 16x16",
|
||||
"type": "image/x-icon"
|
||||
},
|
||||
{
|
||||
"src": "logo192.png",
|
||||
"type": "image/png",
|
||||
"sizes": "192x192"
|
||||
},
|
||||
{
|
||||
"src": "logo512.png",
|
||||
"type": "image/png",
|
||||
"sizes": "512x512"
|
||||
}
|
||||
],
|
||||
"start_url": ".",
|
||||
"display": "standalone",
|
||||
"theme_color": "#000000",
|
||||
"background_color": "#ffffff"
|
||||
}
|
3
public/robots.txt
Normal file
@ -0,0 +1,3 @@
|
||||
# https://www.robotstxt.org/robotstxt.html
|
||||
User-agent: *
|
||||
Disallow:
|
27
src/App.js
Normal file
@ -0,0 +1,27 @@
|
||||
import Nav from "./Nav";
|
||||
import {BrowserRouter as Router, Switch, Route} from 'react-router-dom';
|
||||
import Footer from "./Footer";
|
||||
import Kontakt from "./Kontakt";
|
||||
import NotFound from "./NotFound";
|
||||
import Home from "./Home";
|
||||
import Explained from "./Explained";
|
||||
|
||||
function App() {
|
||||
return (
|
||||
<Router>
|
||||
<div className="App">
|
||||
<Nav />
|
||||
<Switch>
|
||||
<Route path="/" exact component={Home} />
|
||||
<Route path="/contact" component={Kontakt} />
|
||||
<Route path="/explained" component={Explained} />
|
||||
<Route component={NotFound}/>
|
||||
</Switch>
|
||||
<Footer />
|
||||
</div>
|
||||
</Router>
|
||||
|
||||
);
|
||||
}
|
||||
|
||||
export default App;
|
28
src/Explained.js
Normal file
@ -0,0 +1,28 @@
|
||||
import React from 'react';
|
||||
import clip from './img/clip.mp4';
|
||||
import './Explained.sass';
|
||||
|
||||
function Explained() {
|
||||
return (
|
||||
<div className="wrapper">
|
||||
{/*// TODO: links*/}
|
||||
<div className="dir-left">
|
||||
<h3>Wie ist die Seite entstanden?</h3>
|
||||
<p>Ich hab zu viel Zeit und hatte zu dem Zeitpunkt einfach nichts zu tun. Rechts ein Papaplatte Clip,
|
||||
weil er mich auf die Idee der Seite gebracht hat</p>
|
||||
<h3>Wie funktioniert die Seite?</h3>
|
||||
<p>Ganz einfach. Wähle 2-5 Spiele aus, die du kennst und wir schlagen dir dann weitere Spiele vor,
|
||||
die auf Basis der obrigen Spiele entstanden ist aus</p>
|
||||
<h3>Was kostet der Spaß?</h3>
|
||||
<p>Nichts. Die Seite wird aus Hobby betrieben und hat kein Unternehmen, was dahinter steht.</p>
|
||||
</div>
|
||||
{/*// TODO: rechts clip*/}
|
||||
<div className="dir-right">
|
||||
<video src={clip} controls/>
|
||||
</div>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
export default Explained;
|
16
src/Explained.sass
Normal file
@ -0,0 +1,16 @@
|
||||
.wrapper
|
||||
margin: 250px
|
||||
display: flex
|
||||
.dir-left
|
||||
margin-right: 25px
|
||||
h2, h3, p
|
||||
color: #ffffff
|
||||
h3
|
||||
margin: 0
|
||||
font-size: 40px
|
||||
p
|
||||
font-size: 18px
|
||||
.dir-right
|
||||
margin-left: 25px
|
||||
video
|
||||
width: 70vh
|
12
src/Footer.js
Normal file
@ -0,0 +1,12 @@
|
||||
import React from 'react';
|
||||
import './Footer.sass';
|
||||
|
||||
function Footer() {
|
||||
return (
|
||||
<div className="footer">
|
||||
<p>© 2021. By Gamers. For Games 🎮.</p>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
export default Footer;
|
8
src/Footer.sass
Normal file
@ -0,0 +1,8 @@
|
||||
.footer
|
||||
position: fixed
|
||||
left: 0
|
||||
bottom: 0
|
||||
width: 100%
|
||||
background-color: #1C1D2F
|
||||
color: white
|
||||
text-align: center
|
147
src/Home.js
Normal file
@ -0,0 +1,147 @@
|
||||
import React, { useState } from 'react';
|
||||
import './Home.sass';
|
||||
import plus from './img/plus.png'
|
||||
import minus from './img/minus.png'
|
||||
import searchIcon from './img/search.png'
|
||||
|
||||
import cover_1 from './img/cover/img.png'
|
||||
import cover_2 from './img/cover/img_1.png'
|
||||
import cover_3 from './img/cover/img_2.png'
|
||||
import cover_4 from './img/cover/img_3.png'
|
||||
import cover_5 from './img/cover/img_4.png'
|
||||
import cover_6 from './img/cover/img_5.png'
|
||||
import $ from "jquery"
|
||||
|
||||
|
||||
function toggleSearch() {
|
||||
if ($(".search").hasClass("hidden")) {
|
||||
$('.search').removeClass("hidden");
|
||||
} else {
|
||||
$('.search').addClass("hidden");
|
||||
}
|
||||
}
|
||||
|
||||
const displayData = [];
|
||||
let resultSection = [];
|
||||
|
||||
export default function Home() {
|
||||
|
||||
$(document).ready(function(){
|
||||
$(".big").on("click", function(){
|
||||
$(this).closest('div').remove();
|
||||
});
|
||||
});
|
||||
|
||||
const [showdata, setData] = useState(displayData);
|
||||
const [result, setResult] = useState(resultSection);
|
||||
|
||||
function appendData(data) {
|
||||
displayData.push({"id": data.target.id, "source": data.target.src});
|
||||
setData({
|
||||
showdata : displayData
|
||||
});
|
||||
fetchItems();
|
||||
}
|
||||
|
||||
const fetchItems = async () => {
|
||||
const data = await fetch("http://localhost/gamebackend/games.php");
|
||||
const items = await data.json();
|
||||
resultSection = [];
|
||||
items.map(item => {
|
||||
resultSection.push({"title": item.title, "thumbnail": item.thumbnail, "description": item.description});
|
||||
})
|
||||
setResult(
|
||||
{result : resultSection}
|
||||
);
|
||||
console.log(items);
|
||||
}
|
||||
|
||||
return (
|
||||
<div className="container">
|
||||
|
||||
|
||||
{/*<div className="modal-overlay closed" id="modal-overlay"/>*/}
|
||||
|
||||
<h2>Finde dein neues Spiel.</h2>
|
||||
|
||||
{/*TODO: bei big images nicht toggleSearchen, da einfach das element löschen*/}
|
||||
|
||||
<div className="selection">
|
||||
|
||||
<div id="game-selection">
|
||||
{displayData.map(game => (<div key={game.id} className="item"><img className="big" src={game.source}/></div>))}
|
||||
</div>
|
||||
|
||||
<div className="item" onClick={toggleSearch}>
|
||||
<img className="center" src={plus} />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className="search hidden">
|
||||
|
||||
<div className="search-top">
|
||||
<h3 className="left">Spiele suchen</h3>
|
||||
<div className="search-box">
|
||||
<input className="input" placeholder="Suchen..."/>
|
||||
<button className="submit">
|
||||
<img src={searchIcon} width="10px"/>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className="content">
|
||||
<div className="categories">
|
||||
<div className="element active"><p>Action</p></div>
|
||||
<div className="element"><p>Action</p></div>
|
||||
<div className="element"><p>Action</p></div>
|
||||
<div className="element"><p>Action</p></div>
|
||||
<div className="element"><p>Action</p></div>
|
||||
<div className="element"><p>Action</p></div>
|
||||
<div className="element"><p>Action</p></div>
|
||||
</div>
|
||||
<div className="games">
|
||||
<img className="game" src={cover_1} onClick={appendData} id="1"/>
|
||||
<img className="game" src={cover_2} onClick={appendData} id="2"/>
|
||||
<img className="game" src={cover_3} onClick={appendData} id="3"/>
|
||||
<img className="game" src={cover_4} onClick={appendData} id="4"/>
|
||||
<img className="game" src={cover_5} onClick={appendData} id="5"/>
|
||||
<img className="game" src={cover_6} onClick={appendData} id="6"/>
|
||||
<img className="game" src={cover_1} onClick={appendData} id="7"/>
|
||||
<img className="game" src={cover_2} onClick={appendData} id="8"/>
|
||||
<img className="game" src={cover_3} onClick={appendData} id="9"/>
|
||||
<img className="game" src={cover_4} onClick={appendData} id="10"/>
|
||||
<img className="game" src={cover_5} onClick={appendData} id="11"/>
|
||||
<img className="game" src={cover_6} onClick={appendData} id="12"/>
|
||||
<img className="game" src={cover_1} onClick={appendData} id="13"/>
|
||||
<img className="game" src={cover_2} onClick={appendData} id="14"/>
|
||||
<img className="game" src={cover_3} onClick={appendData} id="15"/>
|
||||
<img className="game" src={cover_4} onClick={appendData} id="16"/>
|
||||
<img className="game" src={cover_5} onClick={appendData} id="17"/>
|
||||
<img className="game" src={cover_6} onClick={appendData} id="18"/>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<hr/>
|
||||
|
||||
<div className="result-area">
|
||||
<h2>{resultSection.length} Ergebnisse</h2>
|
||||
|
||||
<div className="results">
|
||||
{resultSection.length !== 0 ?
|
||||
resultSection.map(result => (
|
||||
<div className="card">
|
||||
<div className="card-left"><img src={result.thumbnail}/></div>
|
||||
<div className="card-right"><h4>{result.title}</h4><hr/><p>{result.description}</p></div>
|
||||
</div>
|
||||
)) : <h3>Bitte wähle 2+ Spiele aus, um weitere Empfehlungen enzeigen zu lassen</h3>}
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
)
|
||||
}
|
183
src/Home.sass
Normal file
@ -0,0 +1,183 @@
|
||||
.container
|
||||
margin: 50px
|
||||
|
||||
.selection
|
||||
display: flex
|
||||
flex-flow: row wrap
|
||||
justify-content: center
|
||||
& #game-selection
|
||||
display: flex
|
||||
flex-flow: row wrap
|
||||
justify-content: center
|
||||
|
||||
.container h2
|
||||
font-size: 30px
|
||||
color: #fff
|
||||
text-align: center
|
||||
|
||||
hr
|
||||
width: 35px
|
||||
height: 3px
|
||||
background-color: #1e1e24
|
||||
border-radius: 50px
|
||||
border: none
|
||||
|
||||
|
||||
.item:hover
|
||||
box-shadow: inset 0 0 0 0.2rem #A235EC
|
||||
|
||||
& .center
|
||||
width: 90px
|
||||
height: 90px
|
||||
|
||||
.item
|
||||
|
||||
box-shadow: inset 0 0 0 0.2rem #cacae5
|
||||
transition: all 250ms
|
||||
cursor: pointer
|
||||
margin: 15px
|
||||
width: 150px
|
||||
height: 200px
|
||||
display: flex
|
||||
border-radius: 18px
|
||||
flex-direction: column
|
||||
justify-content: center
|
||||
align-items: center
|
||||
background-color: #1F1F2D
|
||||
.center
|
||||
width: 80px
|
||||
height: 80px
|
||||
.big
|
||||
height: 97%
|
||||
border-radius: 15px
|
||||
width: 96%
|
||||
& :hover
|
||||
box-shadow: inset 0 0 0 0.3rem #A235EC
|
||||
|
||||
|
||||
.results h3
|
||||
color: #ffffff
|
||||
|
||||
.results
|
||||
display: flex
|
||||
flex-flow: row wrap
|
||||
justify-content: center
|
||||
|
||||
.results .card
|
||||
margin: 15px
|
||||
-webkit-box-shadow: 7px 6px 22px -7px rgba(0,0,0,0.75)
|
||||
-moz-box-shadow: 7px 6px 22px -7px rgba(0,0,0,0.75)
|
||||
box-shadow: 7px 6px 22px -7px rgba(0,0,0,0.75)
|
||||
background-color: #1F1F2D
|
||||
border-radius: 15px
|
||||
width: 450px
|
||||
height: 150px
|
||||
display: flex
|
||||
|
||||
.results .card .card-left img
|
||||
width: 100px
|
||||
border-radius: 15px
|
||||
padding: 5px
|
||||
margin-left: 1px
|
||||
|
||||
|
||||
.results .card .card-right
|
||||
color: #fff
|
||||
margin-left: 10px
|
||||
margin-right: 25px
|
||||
& h4
|
||||
margin: 9px 0
|
||||
font-size: 20px
|
||||
& hr
|
||||
background-color: #30303C
|
||||
height: 7px
|
||||
width: 320px
|
||||
& p
|
||||
overflow: hidden
|
||||
display: -webkit-box
|
||||
-webkit-line-clamp: 4
|
||||
-webkit-box-orient: vertical
|
||||
.big
|
||||
cursor: not-allowed
|
||||
|
||||
.big:hover
|
||||
box-shadow: inset 0 0 0 2.2rem #ffffff
|
||||
|
||||
.hidden
|
||||
visibility: hidden
|
||||
|
||||
.container .search
|
||||
-webkit-box-shadow: 7px 6px 22px -7px rgba(0,0,0,0.75)
|
||||
-moz-box-shadow: 7px 6px 22px -7px rgba(0,0,0,0.75)
|
||||
box-shadow: 7px 6px 22px -7px rgba(0,0,0,075)
|
||||
position: absolute
|
||||
left: 50%
|
||||
margin-top: 15px
|
||||
transform: translate(-50%, 0)
|
||||
border-radius: 19px
|
||||
background-color: #141524
|
||||
width: 800px
|
||||
height: 400px
|
||||
.search-top
|
||||
margin: 25px
|
||||
display: flex
|
||||
flex-direction: row
|
||||
justify-content: space-between
|
||||
.left
|
||||
margin: 0
|
||||
font-size: 24px
|
||||
color: #ffffff
|
||||
.search-box
|
||||
margin: 0
|
||||
.input, .submit
|
||||
outline: none
|
||||
border: 0
|
||||
font-size: 18px
|
||||
.input
|
||||
border-radius: 5px 0 0 5px
|
||||
width: 250px
|
||||
font-weight: 600
|
||||
padding-left: 5px
|
||||
height: 90%
|
||||
background-color: #2B334D
|
||||
.submit
|
||||
border-radius: 0 5px 5px 0
|
||||
cursor: pointer
|
||||
height: 100%
|
||||
width: 30px
|
||||
background-color: #212843
|
||||
img
|
||||
|
||||
width: 100%
|
||||
.content
|
||||
margin-left: 25px
|
||||
.categories
|
||||
height: 300px
|
||||
width: 190px
|
||||
overflow-y: auto
|
||||
float: left
|
||||
margin-right: 20px
|
||||
.element
|
||||
cursor: pointer
|
||||
border-radius: 20px
|
||||
background-color: #282948
|
||||
width: 150px
|
||||
height: 30px
|
||||
margin: 5px
|
||||
color: #ffffff
|
||||
p
|
||||
padding: 5px
|
||||
vertical-align: center
|
||||
margin-left: 10px
|
||||
.active
|
||||
background-color: #4e529b
|
||||
.games
|
||||
height: 300px
|
||||
overflow-y: auto
|
||||
margin-right: 20px
|
||||
.game
|
||||
margin: 10px
|
||||
border-radius: 15px
|
||||
width: 80px
|
||||
height: 100px
|
||||
cursor: pointer
|
15
src/Kontakt.js
Normal file
@ -0,0 +1,15 @@
|
||||
import React from 'react'
|
||||
import './Kontakt.sass';
|
||||
|
||||
|
||||
function Kontakt() {
|
||||
return (
|
||||
<div className="info-content">
|
||||
<h2>Kontakt</h2>
|
||||
<h3>Mathias Wagner</h3>
|
||||
<h3>Discord: GNM#2487</h3>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
export default Kontakt;
|
10
src/Kontakt.sass
Normal file
@ -0,0 +1,10 @@
|
||||
h3, h2
|
||||
color: #fff
|
||||
.info-content
|
||||
text-align: center
|
||||
margin: 0
|
||||
position: absolute
|
||||
top: 50%
|
||||
left: 50%
|
||||
-ms-transform: translate(-50%, -50%)
|
||||
transform: translate(-50%, -50%)
|
27
src/Nav.js
Normal file
@ -0,0 +1,27 @@
|
||||
import React from 'react';
|
||||
import './Nav.sass';
|
||||
import { Link } from 'react-router-dom';
|
||||
|
||||
function test() {
|
||||
const x = document.getElementById("myTopnav");
|
||||
if (x.className === "topnav") {
|
||||
x.className += " responsive";
|
||||
} else {
|
||||
x.className = "topnav";
|
||||
}
|
||||
}
|
||||
|
||||
function Nav() {
|
||||
return (
|
||||
<div className="topnav" id="myTopnav">
|
||||
<Link to="/">Startseite</Link>
|
||||
<Link to="/explained">Erklärung</Link>
|
||||
<Link to="/contact">Kontakt</Link>
|
||||
<a className="icon" onClick={test}>
|
||||
<i className="fa fa-bars"/>
|
||||
</a>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
export default Nav;
|
41
src/Nav.sass
Normal file
@ -0,0 +1,41 @@
|
||||
.topnav
|
||||
overflow: hidden
|
||||
background-color: #1C1D2F
|
||||
|
||||
.topnav a
|
||||
cursor: pointer
|
||||
float: left
|
||||
display: block
|
||||
color: #f2f2f2
|
||||
text-align: center
|
||||
padding: 14px 16px
|
||||
text-decoration: none
|
||||
font-size: 17px
|
||||
|
||||
.topnav a:hover
|
||||
color: #2e38bc
|
||||
|
||||
.topnav .icon
|
||||
display: none
|
||||
|
||||
|
||||
// Mobile Optimization
|
||||
@media only screen and (max-width: 600px)
|
||||
.topnav a:not(:first-child)
|
||||
display: none
|
||||
.topnav a.icon
|
||||
float: right
|
||||
display: block
|
||||
|
||||
|
||||
@media only screen and (max-width: 600px)
|
||||
.topnav.responsive
|
||||
position: relative
|
||||
.topnav.responsive .icon
|
||||
position: absolute
|
||||
right: 0
|
||||
top: 0
|
||||
.topnav.responsive a
|
||||
float: none
|
||||
display: block
|
||||
text-align: left
|
10
src/NotFound.js
Normal file
@ -0,0 +1,10 @@
|
||||
import React from 'react'
|
||||
import './NotFound.sass'
|
||||
|
||||
function NotFound() {
|
||||
return (
|
||||
<h2>Page not Found</h2>
|
||||
)
|
||||
}
|
||||
|
||||
export default NotFound
|
3
src/NotFound.sass
Normal file
@ -0,0 +1,3 @@
|
||||
h2
|
||||
text-align: center
|
||||
color: #ffffff
|
BIN
src/img/clip.mp4
Normal file
BIN
src/img/cover/img.png
Normal file
After Width: | Height: | Size: 130 KiB |
BIN
src/img/cover/img_1.png
Normal file
After Width: | Height: | Size: 1.2 MiB |
BIN
src/img/cover/img_2.png
Normal file
After Width: | Height: | Size: 1.0 MiB |
BIN
src/img/cover/img_3.png
Normal file
After Width: | Height: | Size: 842 KiB |
BIN
src/img/cover/img_4.png
Normal file
After Width: | Height: | Size: 164 KiB |
BIN
src/img/cover/img_5.png
Normal file
After Width: | Height: | Size: 1.0 MiB |
BIN
src/img/minus.png
Normal file
After Width: | Height: | Size: 451 B |
BIN
src/img/plus.png
Normal file
After Width: | Height: | Size: 1.8 KiB |
BIN
src/img/search.png
Normal file
After Width: | Height: | Size: 5.6 KiB |
6
src/index.js
Normal file
@ -0,0 +1,6 @@
|
||||
import React from 'react';
|
||||
import ReactDOM from 'react-dom';
|
||||
import './index.sass';
|
||||
import App from './App';
|
||||
|
||||
ReactDOM.render(<App />, document.getElementById('root'));
|
15
src/index.sass
Normal file
@ -0,0 +1,15 @@
|
||||
body
|
||||
background-color: #27283A
|
||||
margin: 0
|
||||
font-family: 'Roboto', Helvetica, sans-serif
|
||||
|
||||
::-webkit-scrollbar
|
||||
width: 10px
|
||||
|
||||
::-webkit-scrollbar-track
|
||||
background: #34364F
|
||||
border-radius: 15px
|
||||
|
||||
::-webkit-scrollbar-thumb
|
||||
background: #393B65
|
||||
border-radius: 15px
|
1
src/logo.svg
Normal file
@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 841.9 595.3"><g fill="#61DAFB"><path d="M666.3 296.5c0-32.5-40.7-63.3-103.1-82.4 14.4-63.6 8-114.2-20.2-130.4-6.5-3.8-14.1-5.6-22.4-5.6v22.3c4.6 0 8.3.9 11.4 2.6 13.6 7.8 19.5 37.5 14.9 75.7-1.1 9.4-2.9 19.3-5.1 29.4-19.6-4.8-41-8.5-63.5-10.9-13.5-18.5-27.5-35.3-41.6-50 32.6-30.3 63.2-46.9 84-46.9V78c-27.5 0-63.5 19.6-99.9 53.6-36.4-33.8-72.4-53.2-99.9-53.2v22.3c20.7 0 51.4 16.5 84 46.6-14 14.7-28 31.4-41.3 49.9-22.6 2.4-44 6.1-63.6 11-2.3-10-4-19.7-5.2-29-4.7-38.2 1.1-67.9 14.6-75.8 3-1.8 6.9-2.6 11.5-2.6V78.5c-8.4 0-16 1.8-22.6 5.6-28.1 16.2-34.4 66.7-19.9 130.1-62.2 19.2-102.7 49.9-102.7 82.3 0 32.5 40.7 63.3 103.1 82.4-14.4 63.6-8 114.2 20.2 130.4 6.5 3.8 14.1 5.6 22.5 5.6 27.5 0 63.5-19.6 99.9-53.6 36.4 33.8 72.4 53.2 99.9 53.2 8.4 0 16-1.8 22.6-5.6 28.1-16.2 34.4-66.7 19.9-130.1 62-19.1 102.5-49.9 102.5-82.3zm-130.2-66.7c-3.7 12.9-8.3 26.2-13.5 39.5-4.1-8-8.4-16-13.1-24-4.6-8-9.5-15.8-14.4-23.4 14.2 2.1 27.9 4.7 41 7.9zm-45.8 106.5c-7.8 13.5-15.8 26.3-24.1 38.2-14.9 1.3-30 2-45.2 2-15.1 0-30.2-.7-45-1.9-8.3-11.9-16.4-24.6-24.2-38-7.6-13.1-14.5-26.4-20.8-39.8 6.2-13.4 13.2-26.8 20.7-39.9 7.8-13.5 15.8-26.3 24.1-38.2 14.9-1.3 30-2 45.2-2 15.1 0 30.2.7 45 1.9 8.3 11.9 16.4 24.6 24.2 38 7.6 13.1 14.5 26.4 20.8 39.8-6.3 13.4-13.2 26.8-20.7 39.9zm32.3-13c5.4 13.4 10 26.8 13.8 39.8-13.1 3.2-26.9 5.9-41.2 8 4.9-7.7 9.8-15.6 14.4-23.7 4.6-8 8.9-16.1 13-24.1zM421.2 430c-9.3-9.6-18.6-20.3-27.8-32 9 .4 18.2.7 27.5.7 9.4 0 18.7-.2 27.8-.7-9 11.7-18.3 22.4-27.5 32zm-74.4-58.9c-14.2-2.1-27.9-4.7-41-7.9 3.7-12.9 8.3-26.2 13.5-39.5 4.1 8 8.4 16 13.1 24 4.7 8 9.5 15.8 14.4 23.4zM420.7 163c9.3 9.6 18.6 20.3 27.8 32-9-.4-18.2-.7-27.5-.7-9.4 0-18.7.2-27.8.7 9-11.7 18.3-22.4 27.5-32zm-74 58.9c-4.9 7.7-9.8 15.6-14.4 23.7-4.6 8-8.9 16-13 24-5.4-13.4-10-26.8-13.8-39.8 13.1-3.1 26.9-5.8 41.2-7.9zm-90.5 125.2c-35.4-15.1-58.3-34.9-58.3-50.6 0-15.7 22.9-35.6 58.3-50.6 8.6-3.7 18-7 27.7-10.1 5.7 19.6 13.2 40 22.5 60.9-9.2 20.8-16.6 41.1-22.2 60.6-9.9-3.1-19.3-6.5-28-10.2zM310 490c-13.6-7.8-19.5-37.5-14.9-75.7 1.1-9.4 2.9-19.3 5.1-29.4 19.6 4.8 41 8.5 63.5 10.9 13.5 18.5 27.5 35.3 41.6 50-32.6 30.3-63.2 46.9-84 46.9-4.5-.1-8.3-1-11.3-2.7zm237.2-76.2c4.7 38.2-1.1 67.9-14.6 75.8-3 1.8-6.9 2.6-11.5 2.6-20.7 0-51.4-16.5-84-46.6 14-14.7 28-31.4 41.3-49.9 22.6-2.4 44-6.1 63.6-11 2.3 10.1 4.1 19.8 5.2 29.1zm38.5-66.7c-8.6 3.7-18 7-27.7 10.1-5.7-19.6-13.2-40-22.5-60.9 9.2-20.8 16.6-41.1 22.2-60.6 9.9 3.1 19.3 6.5 28.1 10.2 35.4 15.1 58.3 34.9 58.3 50.6-.1 15.7-23 35.6-58.4 50.6zM320.8 78.4z"/><circle cx="420.9" cy="296.5" r="45.7"/><path d="M520.5 78.1z"/></g></svg>
|
After Width: | Height: | Size: 2.6 KiB |