Add files via upload

This commit is contained in:
Hazem Krimi
2020-05-29 07:49:00 +01:00
committed by GitHub
parent b1b94af954
commit d8dd24c52b
45 changed files with 18004 additions and 0 deletions
+14668
View File
File diff suppressed because it is too large Load Diff
+33
View File
@@ -0,0 +1,33 @@
{
"name": "pexta",
"version": "0.1.0",
"private": true,
"dependencies": {
"node-sass": "^4.12.0",
"react": "^16.9.0",
"react-dom": "^16.9.0",
"react-router-dom": "^5.0.1",
"react-scripts": "3.1.1"
},
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build",
"test": "react-scripts test",
"eject": "react-scripts eject"
},
"eslintConfig": {
"extends": "react-app"
},
"browserslist": {
"production": [
">0.2%",
"not dead",
"not op_mini all"
],
"development": [
"last 1 chrome version",
"last 1 firefox version",
"last 1 safari version"
]
}
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

+13
View File
@@ -0,0 +1,13 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta lang="en-US">
<link rel="shortcut icon" href="%PUBLIC_URL%/favicon.ico" />
<title>Pexta</title>
</head>
<body>
<div id="root"></div>
</body>
</html>
+20
View File
@@ -0,0 +1,20 @@
import React from 'react';
import { BrowserRouter as Router, Route } from 'react-router-dom';
import LandingPage from './components/LandingPage';
import HomePage from './components/HomePage';
import PostPage from './components/PostPage';
import './App.scss';
class App extends React.Component {
render() {
return (
<Router>
<Route path="/" exact component={LandingPage} />
<Route path="/home" exact component={HomePage} />
<Route path="/post" exact component={PostPage} />
</Router>
);
}
}
export default App;
+50
View File
@@ -0,0 +1,50 @@
@import url('https://fonts.googleapis.com/css?family=Montserrat&display=swap');
@import './scss/variables';
:root {
height: 100%;
}
* {
margin: 0;
padding: 0;
box-sizing: border-box;
&:focus {
outline: none;
}
}
body {
background: none;
height: 100%;
font-family: Montserrat;
font-size: 10px;
}
body::-webkit-scrollbar {
width: .3rem;
}
body::-webkit-scrollbar-thumb {
background: linear-gradient(#ee64d1, #eacc56);
}
.container {
width: 85%;
margin: auto;
}
button {
font-family: Montserrat;
font-size: inherit;
border: none;
background: none;
outline: none;
}
.route-link {
text-decoration: none;
color: inherit;
font-size: inherit;
}
+47
View File
@@ -0,0 +1,47 @@
import React from 'react';
import '../scss/AddPost.scss';
class AddPost extends React.Component {
close = () => {
this.props.close();
}
render() {
return(
<div id="add-post-container" style={{display: this.props.display ? "grid" : "none"}}>
<div id="add-post">
<svg className="close-add-post" xmlns="http://www.w3.org/2000/svg" x="0px" y="0px" width="438.533px" height="438.533px" viewBox="0 0 438.533 438.533" onClick={this.close}>
<defs>
<linearGradient id="linear-gradient" x1="275.62" y1="495.12" x2="71.68" y2="291.18" gradientUnits="userSpaceOnUse">
<stop offset="0" stopColor="#eacc56"/>
<stop offset="1" stopColor="#ee64d1"/>
</linearGradient>
</defs>
<g>
<path d="M409.133,109.203c-19.608-33.592-46.205-60.189-79.798-79.796C295.736,9.801,259.058,0,219.273,0
c-39.781,0-76.47,9.801-110.063,29.407c-33.595,19.604-60.192,46.201-79.8,79.796C9.801,142.8,0,179.489,0,219.267
c0,39.78,9.804,76.463,29.407,110.062c19.607,33.592,46.204,60.189,79.799,79.798c33.597,19.605,70.283,29.407,110.063,29.407
s76.47-9.802,110.065-29.407c33.593-19.602,60.189-46.206,79.795-79.798c19.603-33.596,29.403-70.284,29.403-110.062
C438.533,179.485,428.732,142.795,409.133,109.203z M322.621,270.939c3.617,3.613,5.428,7.905,5.428,12.854
c0,5.133-1.811,9.514-5.428,13.127l-25.693,25.701c-3.614,3.613-7.994,5.42-13.135,5.42c-4.948,0-9.236-1.807-12.847-5.42
l-51.676-51.682l-51.678,51.682c-3.616,3.613-7.898,5.42-12.847,5.42c-5.14,0-9.517-1.807-13.134-5.42l-25.697-25.701
c-3.616-3.613-5.424-7.994-5.424-13.127c0-4.948,1.809-9.24,5.424-12.854l51.678-51.673l-51.678-51.678
c-3.616-3.612-5.424-7.898-5.424-12.847c0-5.14,1.809-9.517,5.424-13.134l25.697-25.693c3.617-3.616,7.994-5.424,13.134-5.424
c4.949,0,9.231,1.809,12.847,5.424l51.678,51.674l51.676-51.674c3.61-3.616,7.898-5.424,12.847-5.424
c5.141,0,9.521,1.809,13.135,5.424l25.693,25.693c3.617,3.617,5.428,7.994,5.428,13.134c0,4.948-1.811,9.235-5.428,12.847
l-51.675,51.678L322.621,270.939z"/>
</g>
</svg>
<h2>Add a Post</h2>
<form>
<input type="text" placeholder="Title" />
<textarea rows="10" placeholder="Content"></textarea>
<button className="btn btn-gradient">Post</button>
</form>
</div>
</div>
);
}
}
export default AddPost;
+83
View File
@@ -0,0 +1,83 @@
import React from 'react';
import "../scss/DesktopProfileSettings.scss";
class DesktopProfileSettings extends React.Component {
close = () => {
this.props.close();
}
render() {
return(
<div id="desktop-profile-settings-container" style={{display: this.props.display ? "grid" : "none"}}>
<div id="desktop-profile-settings">
<div>
<h2>Profile Settings</h2>
<svg onClick={this.close} className="close-profile-settings" xmlns="http://www.w3.org/2000/svg" x="0px" y="0px" width="438.533px" height="438.533px" viewBox="0 0 438.533 438.533">
<defs>
<linearGradient id="linear-gradient" x1="275.62" y1="495.12" x2="71.68" y2="291.18" gradientUnits="userSpaceOnUse">
<stop offset="0" stopColor="#eacc56"/>
<stop offset="1" stopColor="#ee64d1"/>
</linearGradient>
</defs>
<g>
<path d="M409.133,109.203c-19.608-33.592-46.205-60.189-79.798-79.796C295.736,9.801,259.058,0,219.273,0
c-39.781,0-76.47,9.801-110.063,29.407c-33.595,19.604-60.192,46.201-79.8,79.796C9.801,142.8,0,179.489,0,219.267
c0,39.78,9.804,76.463,29.407,110.062c19.607,33.592,46.204,60.189,79.799,79.798c33.597,19.605,70.283,29.407,110.063,29.407
s76.47-9.802,110.065-29.407c33.593-19.602,60.189-46.206,79.795-79.798c19.603-33.596,29.403-70.284,29.403-110.062
C438.533,179.485,428.732,142.795,409.133,109.203z M322.621,270.939c3.617,3.613,5.428,7.905,5.428,12.854
c0,5.133-1.811,9.514-5.428,13.127l-25.693,25.701c-3.614,3.613-7.994,5.42-13.135,5.42c-4.948,0-9.236-1.807-12.847-5.42
l-51.676-51.682l-51.678,51.682c-3.616,3.613-7.898,5.42-12.847,5.42c-5.14,0-9.517-1.807-13.134-5.42l-25.697-25.701
c-3.616-3.613-5.424-7.994-5.424-13.127c0-4.948,1.809-9.24,5.424-12.854l51.678-51.673l-51.678-51.678
c-3.616-3.612-5.424-7.898-5.424-12.847c0-5.14,1.809-9.517,5.424-13.134l25.697-25.693c3.617-3.616,7.994-5.424,13.134-5.424
c4.949,0,9.231,1.809,12.847,5.424l51.678,51.674l51.676-51.674c3.61-3.616,7.898-5.424,12.847-5.424
c5.141,0,9.521,1.809,13.135,5.424l25.693,25.693c3.617,3.617,5.428,7.994,5.428,13.134c0,4.948-1.811,9.235-5.428,12.847
l-51.675,51.678L322.621,270.939z"/>
</g>
</svg>
</div>
<div className="settings">
<div className="change-photo">
<h3>Change Profile Picture</h3>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1855 1855">
<defs>
<linearGradient id="linear-gradient" x1="-356" y1="927.47" x2="2276" y2="927.47" gradientUnits="userSpaceOnUse">
<stop offset="0" stopColor="#eacc56"/>
<stop offset="1" stopColor="#ee64d1"/>
</linearGradient>
</defs>
<path d="M1927,1000.5C1927,489.09,1510.91,73,999.5,73S72,489.09,72,1000.5c0,270.12,116.16,513.6,301.05,683.25l-.88.77,30.09,25.37c1.95,1.65,4.08,3,6,4.62,16,13.25,32.55,25.83,49.42,38,5.46,3.94,10.92,7.89,16.49,11.73q27,18.63,55.38,35.35c4.11,2.43,8.26,4.79,12.41,7.15,20.67,11.77,41.79,22.87,63.41,33,1.58.75,3.2,1.42,4.79,2.16a919,919,0,0,0,224.32,71l6.2,1.11c24.42,4.22,49.11,7.59,74.1,9.85,3,.27,6.07.44,9.14.71,24.89,2,50,3.37,75.55,3.37,25.26,0,50.19-1.32,74.94-3.31,3.14-.27,6.28-.43,9.41-.7q37.19-3.39,73.46-9.68c2.09-.37,4.22-.75,6.31-1.15a919.21,919.21,0,0,0,221.15-69.31c2.56-1.18,5.16-2.29,7.72-3.51q31.21-14.67,61.08-31.57c5-2.8,9.88-5.63,14.81-8.53,18.14-10.69,36-21.85,53.32-33.73,6.24-4.25,12.34-8.73,18.52-13.18,14.8-10.66,29.34-21.66,43.47-33.16,3.14-2.53,6.51-4.72,9.58-7.32l30.86-25.76-.91-.78C1809.73,1516.59,1927,1272,1927,1000.5Zm-1787.55,0c0-474.24,385.81-860,860.05-860s860.05,385.81,860.05,860.05c0,255.55-112.15,485.3-289.69,642.94a253.6,253.6,0,0,0-30.12-18.11l-285.57-142.77a74.75,74.75,0,0,1-41.55-67.21v-99.74c6.61-8.16,13.59-17.4,20.81-27.55a687.14,687.14,0,0,0,88.23-172.79A122.38,122.38,0,0,0,1392,1004.34V884.78a122.73,122.73,0,0,0-29.91-79.9V647.48c1.75-17.54,8-116.3-63.51-197.78-62.16-71-162.77-106.88-299.06-106.88S762.6,378.74,700.44,449.67C629,531.15,635.18,630,636.93,647.44V804.85A122.87,122.87,0,0,0,607,884.75v119.56a122.72,122.72,0,0,0,45.19,95.15c27.32,107,83.54,188,104.32,215.48v97.61a75.23,75.23,0,0,1-39.19,66L450.66,1624.05a244.6,244.6,0,0,0-25.37,16C250,1482.53,139.45,1254.2,139.45,1000.5Z" transform="translate(-72 -73)"/>
</svg>
<input type="file" accept="image/*"/>
<button className="btn btn-gradient">Change</button>
</div>
<div className="change-password">
<h3>Change Password</h3>
<form>
<input type="password" placeholder="Old Password"/>
<input type="password" placeholder="New Password"/>
<input type="password" placeholder="Confirm New Password"/>
</form>
<button className="btn btn-gradient">Change</button>
</div>
<div className="change-email">
<h3>Change Email</h3>
<form>
<input type="email" placeholder="Old Email"/>
<input type="email" placeholder="New Email"/>
<input type="email" placeholder="Confirm New Email"/>
</form>
<button className="btn btn-gradient">Change</button>
</div>
<div className="change-username">
<h3>Change Username</h3>
<input type="text" placeholder="New Username"/>
<button className="btn btn-gradient">Change</button>
</div>
</div>
</div>
</div>
);
}
}
export default DesktopProfileSettings;
+38
View File
@@ -0,0 +1,38 @@
import React from 'react';
import '../scss/Footer.scss';
class Footer extends React.Component {
render() {
return(
<footer>
<div className="container">
<svg className="footer-logo" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 758.29 291.67">
<defs>
<linearGradient id="linear-gradient" x1="275.62" y1="495.12" x2="71.68" y2="291.18" gradientUnits="userSpaceOnUse">
<stop offset="0" stopColor="#eacc56"/>
<stop offset="1" stopColor="#ee64d1"/>
</linearGradient>
</defs>
<path className="cls-1" d="M159.5,233.17A145.84,145.84,0,1,0,305.33,379,145.83,145.83,0,0,0,159.5,233.17ZM141.64,349.46l-14.15,101A12.41,12.41,0,1,1,102.92,447l14.14-101a12.41,12.41,0,0,1,24.58,3.44Zm44.85,57.13a50.23,50.23,0,0,1-8.82-.78L161,403.74a12.53,12.53,0,0,1-10.9-14h0a12.53,12.53,0,0,1,14-10.9l18.42,2.28c12.52,1.18,23.92-8,25.73-20.92,1.87-13.31-7.11-25.57-20-27.38-.41-.06-.82-.09-1.22-.12l0-.08-77-10.78a12.54,12.54,0,0,1-10.68-14.17h0A12.54,12.54,0,0,1,113.48,297l78.9,11.06a8.08,8.08,0,0,1,1,.19,49.39,49.39,0,0,1-6.87,98.34Z" transform="translate(-13.67 -233.17)"/>
<g>
<path className="cls-2" d="M401.21,340.1A37.87,37.87,0,0,1,417.85,355q5.79,9.67,5.79,23,0,13.14-5.79,22.9a37.68,37.68,0,0,1-16.64,14.95Q390.37,421,375.74,421h-25.4v34.91h-20.9v-121h46.3Q390.37,334.92,401.21,340.1Zm-5.7,55.65q7.07-6.22,7.07-17.8t-7.07-17.8q-7.08-6.22-20.74-6.22H350.34v48h24.43Q388.44,402,395.51,395.75Z" transform="translate(-13.67 -233.17)"/>
<path className="cls-2" d="M522.65,416.66H455.3a25.45,25.45,0,0,0,9.24,16.16q7.48,6,18.57,6,14.14,0,23.31-10l10.77,13.3a36.54,36.54,0,0,1-14.63,11.24,50.09,50.09,0,0,1-19.93,3.8q-14.14,0-24.92-6.05a41.88,41.88,0,0,1-16.63-16.85,50.29,50.29,0,0,1-5.87-24.45,51.09,51.09,0,0,1,5.71-24.28,42,42,0,0,1,15.83-16.85,43.67,43.67,0,0,1,22.82-6.05,42.62,42.62,0,0,1,22.43,6,41,41,0,0,1,15.43,16.76q5.54,10.81,5.54,25C523,411.76,522.87,413.9,522.65,416.66ZM463.26,386q-6.67,6.13-8.12,16.33h48.7A26.12,26.12,0,0,0,496,386.07a23,23,0,0,0-16.4-6.22A23.2,23.2,0,0,0,463.26,386Z" transform="translate(-13.67 -233.17)"/>
<path className="cls-2" d="M594.5,455.89l-22-32-22.18,32H528.12l33.43-46.83-32-45.45h22.35L573,393.85,594,363.61h21.7l-32.15,45.1,33.6,47.18Z" transform="translate(-13.67 -233.17)"/>
<path className="cls-2" d="M683.55,450.88a23,23,0,0,1-8.6,4.66,36.08,36.08,0,0,1-10.69,1.56q-14.14,0-21.86-8T634.69,426V381.58H620.54V364.3h14.15V343.21h20.09V364.3h23v17.28h-23v43.89q0,6.75,3.05,10.29t8.84,3.54a16.85,16.85,0,0,0,11.25-3.8Z" transform="translate(-13.67 -233.17)"/>
<path className="cls-2" d="M761.91,372.33Q772,382.1,772,401.8v54.09H753V444.66a23.88,23.88,0,0,1-10.53,9.24A38.69,38.69,0,0,1,726,457.1a37.92,37.92,0,0,1-16.87-3.54A26,26,0,0,1,694,429.45q0-12.45,8.6-20T729.68,402h22.18v-1.38q0-9.68-5.38-14.86t-16-5.19A43.29,43.29,0,0,0,716.26,383a34.29,34.29,0,0,0-11.81,6.74L696.57,374a47.42,47.42,0,0,1,16.23-8.47,67.53,67.53,0,0,1,20.1-2.94Q751.86,362.57,761.91,372.33Zm-18.33,65.33A19.86,19.86,0,0,0,751.86,427V416.31H731.13q-17.37,0-17.36,12.27a11.3,11.3,0,0,0,4.34,9.34q4.33,3.45,12,3.45A24.5,24.5,0,0,0,743.58,437.66Z" transform="translate(-13.67 -233.17)"/>
</g>
</svg>
<div className="copyright">
Copyright &copy; Pexta
</div>
<div className="footer-links">
<span>Terms of Use</span>
<span>Privacy Policies</span>
</div>
</div>
</footer>
);
}
}
export default Footer;
+149
View File
@@ -0,0 +1,149 @@
import React from 'react';
import { Link } from "react-router-dom";
import '../scss/HomeNav.scss';
const openMobileMenu = () => {
new Promise(resolve => {
document.querySelector(".mobile-menu").style.display = "block";
document.querySelector(".mobile-menu").animate([
{left: "100%"},
{left: "50%"}
], 100);
document.querySelector(".mobile-menu-overlay").style.display = "block";
document.querySelector(".mobile-menu-overlay").animate([
{opacity: 0},
{opacity: 1}
], 100);
resolve();
})
.then(() => {
document.querySelector(".mobile-menu").style.left = "50%";
document.querySelector(".mobile-menu-overlay").style.opacity = "1";
});
}
const closeMobileMenu = () => {
new Promise(resolve => {
document.querySelector(".mobile-menu").animate([
{left: "50%"},
{left: "100%"}
], 100);
resolve();
})
.then(() => document.querySelector(".mobile-menu").style.left = "100%")
new Promise(resolve => {
document.querySelector(".mobile-menu-overlay").animate([
{opacity: 1},
{opacity: 0}
], 100);
resolve();
})
.then(() => {
document.querySelector(".mobile-menu-overlay").style.opacity = "0";
});
setTimeout(() => {
document.querySelector(".mobile-menu").style.display = "none";
document.querySelector(".mobile-menu-overlay").style.display = "none";
}, 100);
}
class HomeNav extends React.Component {
constructor(props) {
super(props)
this.state = {
displayMobileMenu: false
}
}
toggleMobileMenu = () => {
setTimeout(() => {
this.setState({
displayMobileMenu: !this.state.displayMobileMenu
});
}, 70);
if (this.state.displayMobileMenu) {
openMobileMenu();
} else {
closeMobileMenu();
}
}
openAddPost = () => {
closeMobileMenu();
this.props.showAddPost();
}
openMobileProfileSettings = () => {
closeMobileMenu();
this.props.showMobileProfileSettings();
}
render() {
return(
<nav id="home-nav">
<svg className="nav-logo" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 758.29 291.67">
<defs>
<linearGradient id="linear-gradient" x1="275.62" y1="495.12" x2="71.68" y2="291.18" gradientUnits="userSpaceOnUse">
<stop offset="0" stopColor="#eacc56"/>
<stop offset="1" stopColor="#ee64d1"/>
</linearGradient>
</defs>
<path className="cls-1" d="M159.5,233.17A145.84,145.84,0,1,0,305.33,379,145.83,145.83,0,0,0,159.5,233.17ZM141.64,349.46l-14.15,101A12.41,12.41,0,1,1,102.92,447l14.14-101a12.41,12.41,0,0,1,24.58,3.44Zm44.85,57.13a50.23,50.23,0,0,1-8.82-.78L161,403.74a12.53,12.53,0,0,1-10.9-14h0a12.53,12.53,0,0,1,14-10.9l18.42,2.28c12.52,1.18,23.92-8,25.73-20.92,1.87-13.31-7.11-25.57-20-27.38-.41-.06-.82-.09-1.22-.12l0-.08-77-10.78a12.54,12.54,0,0,1-10.68-14.17h0A12.54,12.54,0,0,1,113.48,297l78.9,11.06a8.08,8.08,0,0,1,1,.19,49.39,49.39,0,0,1-6.87,98.34Z" transform="translate(-13.67 -233.17)"/>
<g>
<path className="cls-2" d="M401.21,340.1A37.87,37.87,0,0,1,417.85,355q5.79,9.67,5.79,23,0,13.14-5.79,22.9a37.68,37.68,0,0,1-16.64,14.95Q390.37,421,375.74,421h-25.4v34.91h-20.9v-121h46.3Q390.37,334.92,401.21,340.1Zm-5.7,55.65q7.07-6.22,7.07-17.8t-7.07-17.8q-7.08-6.22-20.74-6.22H350.34v48h24.43Q388.44,402,395.51,395.75Z" transform="translate(-13.67 -233.17)"/>
<path className="cls-2" d="M522.65,416.66H455.3a25.45,25.45,0,0,0,9.24,16.16q7.48,6,18.57,6,14.14,0,23.31-10l10.77,13.3a36.54,36.54,0,0,1-14.63,11.24,50.09,50.09,0,0,1-19.93,3.8q-14.14,0-24.92-6.05a41.88,41.88,0,0,1-16.63-16.85,50.29,50.29,0,0,1-5.87-24.45,51.09,51.09,0,0,1,5.71-24.28,42,42,0,0,1,15.83-16.85,43.67,43.67,0,0,1,22.82-6.05,42.62,42.62,0,0,1,22.43,6,41,41,0,0,1,15.43,16.76q5.54,10.81,5.54,25C523,411.76,522.87,413.9,522.65,416.66ZM463.26,386q-6.67,6.13-8.12,16.33h48.7A26.12,26.12,0,0,0,496,386.07a23,23,0,0,0-16.4-6.22A23.2,23.2,0,0,0,463.26,386Z" transform="translate(-13.67 -233.17)"/>
<path className="cls-2" d="M594.5,455.89l-22-32-22.18,32H528.12l33.43-46.83-32-45.45h22.35L573,393.85,594,363.61h21.7l-32.15,45.1,33.6,47.18Z" transform="translate(-13.67 -233.17)"/>
<path className="cls-2" d="M683.55,450.88a23,23,0,0,1-8.6,4.66,36.08,36.08,0,0,1-10.69,1.56q-14.14,0-21.86-8T634.69,426V381.58H620.54V364.3h14.15V343.21h20.09V364.3h23v17.28h-23v43.89q0,6.75,3.05,10.29t8.84,3.54a16.85,16.85,0,0,0,11.25-3.8Z" transform="translate(-13.67 -233.17)"/>
<path className="cls-2" d="M761.91,372.33Q772,382.1,772,401.8v54.09H753V444.66a23.88,23.88,0,0,1-10.53,9.24A38.69,38.69,0,0,1,726,457.1a37.92,37.92,0,0,1-16.87-3.54A26,26,0,0,1,694,429.45q0-12.45,8.6-20T729.68,402h22.18v-1.38q0-9.68-5.38-14.86t-16-5.19A43.29,43.29,0,0,0,716.26,383a34.29,34.29,0,0,0-11.81,6.74L696.57,374a47.42,47.42,0,0,1,16.23-8.47,67.53,67.53,0,0,1,20.1-2.94Q751.86,362.57,761.91,372.33Zm-18.33,65.33A19.86,19.86,0,0,0,751.86,427V416.31H731.13q-17.37,0-17.36,12.27a11.3,11.3,0,0,0,4.34,9.34q4.33,3.45,12,3.45A24.5,24.5,0,0,0,743.58,437.66Z" transform="translate(-13.67 -233.17)"/>
</g>
</svg>
<button className="btn btn-gradient" onClick={this.openAddPost}>Add Post</button>
<svg className="mobile-menu-btn" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 701 458" onClick={this.toggleMobileMenu}>
<defs>
<linearGradient id="linear-gradient" x1="1133.82" y1="598.18" x2="-208.55" y2="-34.48" gradientUnits="userSpaceOnUse">
<stop offset="0" stopColor="#ee64d1"/>
<stop offset="1" stopColor="#eacc56"/>
</linearGradient>
</defs>
<path className="cls-1" d="M50,279H651a50,50,0,0,0,0-100H50c-1,0-2,0-3,.1V99.9c1,.06,2,.1,3,.1H651A50,50,0,0,0,651,0H50a50,50,0,0,0-4,99.83v79.34a50,50,0,0,0,0,99.66v79.34A50,50,0,0,0,50,458H651a50,50,0,0,0,0-100H50c-1,0-2,0-3,.1V278.9C48,279,49,279,50,279Z"/>
</svg>
<div className="mobile-menu-overlay"></div>
<div className="mobile-menu">
<svg className="close-mobile-menu-btn" xmlns="http://www.w3.org/2000/svg" x="0px" y="0px" width="438.533px" height="438.533px" viewBox="0 0 438.533 438.533" onClick={this.toggleMobileMenu}>
<g>
<path d="M409.133,109.203c-19.608-33.592-46.205-60.189-79.798-79.796C295.736,9.801,259.058,0,219.273,0
c-39.781,0-76.47,9.801-110.063,29.407c-33.595,19.604-60.192,46.201-79.8,79.796C9.801,142.8,0,179.489,0,219.267
c0,39.78,9.804,76.463,29.407,110.062c19.607,33.592,46.204,60.189,79.799,79.798c33.597,19.605,70.283,29.407,110.063,29.407
s76.47-9.802,110.065-29.407c33.593-19.602,60.189-46.206,79.795-79.798c19.603-33.596,29.403-70.284,29.403-110.062
C438.533,179.485,428.732,142.795,409.133,109.203z M322.621,270.939c3.617,3.613,5.428,7.905,5.428,12.854
c0,5.133-1.811,9.514-5.428,13.127l-25.693,25.701c-3.614,3.613-7.994,5.42-13.135,5.42c-4.948,0-9.236-1.807-12.847-5.42
l-51.676-51.682l-51.678,51.682c-3.616,3.613-7.898,5.42-12.847,5.42c-5.14,0-9.517-1.807-13.134-5.42l-25.697-25.701
c-3.616-3.613-5.424-7.994-5.424-13.127c0-4.948,1.809-9.24,5.424-12.854l51.678-51.673l-51.678-51.678
c-3.616-3.612-5.424-7.898-5.424-12.847c0-5.14,1.809-9.517,5.424-13.134l25.697-25.693c3.617-3.616,7.994-5.424,13.134-5.424
c4.949,0,9.231,1.809,12.847,5.424l51.678,51.674l51.676-51.674c3.61-3.616,7.898-5.424,12.847-5.424
c5.141,0,9.521,1.809,13.135,5.424l25.693,25.693c3.617,3.617,5.428,7.994,5.428,13.134c0,4.948-1.811,9.235-5.428,12.847
l-51.675,51.678L322.621,270.939z"/>
</g>
</svg>
<div className="current-user">
<svg className="avatar" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1855 1855">
<path className="cls-1" d="M1927,1000.5C1927,489.09,1510.91,73,999.5,73S72,489.09,72,1000.5c0,270.12,116.16,513.6,301.05,683.25l-.88.77,30.09,25.37c1.95,1.65,4.08,3,6,4.62,16,13.25,32.55,25.83,49.42,38,5.46,3.94,10.92,7.89,16.49,11.73q27,18.63,55.38,35.35c4.11,2.43,8.26,4.79,12.41,7.15,20.67,11.77,41.79,22.87,63.41,33,1.58.75,3.2,1.42,4.79,2.16a919,919,0,0,0,224.32,71l6.2,1.11c24.42,4.22,49.11,7.59,74.1,9.85,3,.27,6.07.44,9.14.71,24.89,2,50,3.37,75.55,3.37,25.26,0,50.19-1.32,74.94-3.31,3.14-.27,6.28-.43,9.41-.7q37.19-3.39,73.46-9.68c2.09-.37,4.22-.75,6.31-1.15a919.21,919.21,0,0,0,221.15-69.31c2.56-1.18,5.16-2.29,7.72-3.51q31.21-14.67,61.08-31.57c5-2.8,9.88-5.63,14.81-8.53,18.14-10.69,36-21.85,53.32-33.73,6.24-4.25,12.34-8.73,18.52-13.18,14.8-10.66,29.34-21.66,43.47-33.16,3.14-2.53,6.51-4.72,9.58-7.32l30.86-25.76-.91-.78C1809.73,1516.59,1927,1272,1927,1000.5Zm-1787.55,0c0-474.24,385.81-860,860.05-860s860.05,385.81,860.05,860.05c0,255.55-112.15,485.3-289.69,642.94a253.6,253.6,0,0,0-30.12-18.11l-285.57-142.77a74.75,74.75,0,0,1-41.55-67.21v-99.74c6.61-8.16,13.59-17.4,20.81-27.55a687.14,687.14,0,0,0,88.23-172.79A122.38,122.38,0,0,0,1392,1004.34V884.78a122.73,122.73,0,0,0-29.91-79.9V647.48c1.75-17.54,8-116.3-63.51-197.78-62.16-71-162.77-106.88-299.06-106.88S762.6,378.74,700.44,449.67C629,531.15,635.18,630,636.93,647.44V804.85A122.87,122.87,0,0,0,607,884.75v119.56a122.72,122.72,0,0,0,45.19,95.15c27.32,107,83.54,188,104.32,215.48v97.61a75.23,75.23,0,0,1-39.19,66L450.66,1624.05a244.6,244.6,0,0,0-25.37,16C250,1482.53,139.45,1254.2,139.45,1000.5Z" transform="translate(-72 -73)"/>
</svg>
<h3>Username</h3>
</div>
<div>
<div className="small-btns">
<button className="btn-mobile" onClick={this.openAddPost}>Add a Post</button>
<button className="btn-mobile" onClick={this.openMobileProfileSettings}>Profile Settings</button>
<button className="btn-mobile">
<Link className="route-link" to="/">Log Out</Link>
</button>
</div>
</div>
</div>
</nav>
);
}
}
export default HomeNav;
+78
View File
@@ -0,0 +1,78 @@
import React from 'react';
import HomeNav from './HomeNav';
import Posts from './Posts';
import ProfileInfo from './ProfileInfo';
import Footer from './Footer';
import AddPost from './AddPost';
import DesktopProfileSettings from './DesktopProfileSettings';
import MobileProfileSettings from "./MobileProfileSettings";
import UserProfile from './UserProfile';
import '../scss/HomePage.scss';
class HomePage extends React.Component {
constructor(props) {
super(props);
this.state = {
displayAddPost: false,
displayDesktopProfileSettings: false,
displayMobileProfileSettings: false,
displayUserProfile: false
}
}
openAddPost = () => {
this.setState({
displayAddPost: true
});
}
openDesktopProfileSettings = () => {
this.setState({
displayDesktopProfileSettings: true
});
}
openMobileProfileSettings = () => {
this.setState({
displayMobileProfileSettings: true
});
}
openUserProfile = () => {
this.setState({
displayUserProfile: true
});
}
close = () => {
this.setState({
displayAddPost: false,
displayDesktopProfileSettings: false,
displayMobileProfileSettings: false,
displayUserProfile: false
});
}
render() {
return (
<React.Fragment>
<div id="home-page">
<div className="container">
<HomeNav showAddPost={this.openAddPost} showMobileProfileSettings={this.openMobileProfileSettings} />
<main>
<Posts />
<ProfileInfo showDesktopProfileSettings={this.openDesktopProfileSettings} showUserProfile={this.openUserProfile} />
</main>
</div>
</div>
<Footer />
<AddPost display={this.state.displayAddPost} close={this.close} />
<DesktopProfileSettings display={this.state.displayDesktopProfileSettings} close={this.close} />
<MobileProfileSettings display={this.state.displayMobileProfileSettings} close={this.close} />
<UserProfile display={this.state.displayUserProfile} close={this.close} />
</React.Fragment>
);
}
}
export default HomePage;
+142
View File
@@ -0,0 +1,142 @@
import React from 'react';
import '../scss/LandingNav.scss';
const openMobileMenu = () => {
new Promise(resolve => {
document.querySelector(".mobile-menu").style.display = "block";
document.querySelector(".mobile-menu").animate([
{left: "100%"},
{left: "50%"}
], 100);
document.querySelector(".mobile-menu-overlay").style.display = "block";
document.querySelector(".mobile-menu-overlay").animate([
{opacity: 0},
{opacity: 1}
], 100);
resolve();
})
.then(() => {
document.querySelector(".mobile-menu").style.left = "50%";
document.querySelector(".mobile-menu-overlay").style.opacity = "1";
});
}
const closeMobileMenu = () => {
new Promise(resolve => {
document.querySelector(".mobile-menu").animate([
{left: "50%"},
{left: "100%"}
], 100);
resolve();
})
.then(() => document.querySelector(".mobile-menu").style.left = "100%")
new Promise(resolve => {
document.querySelector(".mobile-menu-overlay").animate([
{opacity: 1},
{opacity: 0}
], 100);
resolve();
})
.then(() => {
document.querySelector(".mobile-menu-overlay").style.opacity = "0";
});
setTimeout(() => {
document.querySelector(".mobile-menu").style.display = "none";
document.querySelector(".mobile-menu-overlay").style.display = "none";
}, 100);
}
class LandingNav extends React.Component {
constructor(props) {
super(props)
this.state = {
displayMobileMenu: false
}
}
toggleMobileMenu = () => {
setTimeout(() => {
this.setState({
displayMobileMenu: !this.state.displayMobileMenu
});
}, 70);
if (this.state.displayMobileMenu) {
openMobileMenu();
} else {
closeMobileMenu();
}
}
openSignUp = () => {
closeMobileMenu();
this.props.showSignUp();
}
openLogin = () => {
closeMobileMenu();
this.props.showLogin();
}
render() {
return (
<nav id="landing-nav">
<svg className="nav-logo" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 758.29 291.67">
<defs>
<linearGradient id="linear-gradient" x1="275.62" y1="495.12" x2="71.68" y2="291.18" gradientUnits="userSpaceOnUse">
<stop offset="0" stopColor="#eacc56"/>
<stop offset="1" stopColor="#ee64d1"/>
</linearGradient>
</defs>
<path className="cls-1" d="M159.5,233.17A145.84,145.84,0,1,0,305.33,379,145.83,145.83,0,0,0,159.5,233.17ZM141.64,349.46l-14.15,101A12.41,12.41,0,1,1,102.92,447l14.14-101a12.41,12.41,0,0,1,24.58,3.44Zm44.85,57.13a50.23,50.23,0,0,1-8.82-.78L161,403.74a12.53,12.53,0,0,1-10.9-14h0a12.53,12.53,0,0,1,14-10.9l18.42,2.28c12.52,1.18,23.92-8,25.73-20.92,1.87-13.31-7.11-25.57-20-27.38-.41-.06-.82-.09-1.22-.12l0-.08-77-10.78a12.54,12.54,0,0,1-10.68-14.17h0A12.54,12.54,0,0,1,113.48,297l78.9,11.06a8.08,8.08,0,0,1,1,.19,49.39,49.39,0,0,1-6.87,98.34Z" transform="translate(-13.67 -233.17)"/>
<g>
<path className="cls-2" d="M401.21,340.1A37.87,37.87,0,0,1,417.85,355q5.79,9.67,5.79,23,0,13.14-5.79,22.9a37.68,37.68,0,0,1-16.64,14.95Q390.37,421,375.74,421h-25.4v34.91h-20.9v-121h46.3Q390.37,334.92,401.21,340.1Zm-5.7,55.65q7.07-6.22,7.07-17.8t-7.07-17.8q-7.08-6.22-20.74-6.22H350.34v48h24.43Q388.44,402,395.51,395.75Z" transform="translate(-13.67 -233.17)"/>
<path className="cls-2" d="M522.65,416.66H455.3a25.45,25.45,0,0,0,9.24,16.16q7.48,6,18.57,6,14.14,0,23.31-10l10.77,13.3a36.54,36.54,0,0,1-14.63,11.24,50.09,50.09,0,0,1-19.93,3.8q-14.14,0-24.92-6.05a41.88,41.88,0,0,1-16.63-16.85,50.29,50.29,0,0,1-5.87-24.45,51.09,51.09,0,0,1,5.71-24.28,42,42,0,0,1,15.83-16.85,43.67,43.67,0,0,1,22.82-6.05,42.62,42.62,0,0,1,22.43,6,41,41,0,0,1,15.43,16.76q5.54,10.81,5.54,25C523,411.76,522.87,413.9,522.65,416.66ZM463.26,386q-6.67,6.13-8.12,16.33h48.7A26.12,26.12,0,0,0,496,386.07a23,23,0,0,0-16.4-6.22A23.2,23.2,0,0,0,463.26,386Z" transform="translate(-13.67 -233.17)"/>
<path className="cls-2" d="M594.5,455.89l-22-32-22.18,32H528.12l33.43-46.83-32-45.45h22.35L573,393.85,594,363.61h21.7l-32.15,45.1,33.6,47.18Z" transform="translate(-13.67 -233.17)"/>
<path className="cls-2" d="M683.55,450.88a23,23,0,0,1-8.6,4.66,36.08,36.08,0,0,1-10.69,1.56q-14.14,0-21.86-8T634.69,426V381.58H620.54V364.3h14.15V343.21h20.09V364.3h23v17.28h-23v43.89q0,6.75,3.05,10.29t8.84,3.54a16.85,16.85,0,0,0,11.25-3.8Z" transform="translate(-13.67 -233.17)"/>
<path className="cls-2" d="M761.91,372.33Q772,382.1,772,401.8v54.09H753V444.66a23.88,23.88,0,0,1-10.53,9.24A38.69,38.69,0,0,1,726,457.1a37.92,37.92,0,0,1-16.87-3.54A26,26,0,0,1,694,429.45q0-12.45,8.6-20T729.68,402h22.18v-1.38q0-9.68-5.38-14.86t-16-5.19A43.29,43.29,0,0,0,716.26,383a34.29,34.29,0,0,0-11.81,6.74L696.57,374a47.42,47.42,0,0,1,16.23-8.47,67.53,67.53,0,0,1,20.1-2.94Q751.86,362.57,761.91,372.33Zm-18.33,65.33A19.86,19.86,0,0,0,751.86,427V416.31H731.13q-17.37,0-17.36,12.27a11.3,11.3,0,0,0,4.34,9.34q4.33,3.45,12,3.45A24.5,24.5,0,0,0,743.58,437.66Z" transform="translate(-13.67 -233.17)"/>
</g>
</svg>
<div className="big-btns">
<button className="btn btn-white" onClick={this.openLogin}>Login</button>
<button className="btn btn-gradient" onClick={this.openSignUp}>Sign Up</button>
</div>
<svg className="mobile-menu-btn" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 701 458" onClick={this.toggleMobileMenu}>
<defs>
<linearGradient id="linear-gradient" x1="1133.82" y1="598.18" x2="-208.55" y2="-34.48" gradientUnits="userSpaceOnUse">
<stop offset="0" stopColor="#ee64d1"/>
<stop offset="1" stopColor="#eacc56"/>
</linearGradient>
</defs>
<path className="cls-1" d="M50,279H651a50,50,0,0,0,0-100H50c-1,0-2,0-3,.1V99.9c1,.06,2,.1,3,.1H651A50,50,0,0,0,651,0H50a50,50,0,0,0-4,99.83v79.34a50,50,0,0,0,0,99.66v79.34A50,50,0,0,0,50,458H651a50,50,0,0,0,0-100H50c-1,0-2,0-3,.1V278.9C48,279,49,279,50,279Z"/>
</svg>
<div className="mobile-menu-overlay"></div>
<div className="mobile-menu">
<svg className="close-mobile-menu-btn" xmlns="http://www.w3.org/2000/svg" x="0px" y="0px" width="438.533px" height="438.533px" viewBox="0 0 438.533 438.533" onClick={this.toggleMobileMenu}>
<g>
<path d="M409.133,109.203c-19.608-33.592-46.205-60.189-79.798-79.796C295.736,9.801,259.058,0,219.273,0
c-39.781,0-76.47,9.801-110.063,29.407c-33.595,19.604-60.192,46.201-79.8,79.796C9.801,142.8,0,179.489,0,219.267
c0,39.78,9.804,76.463,29.407,110.062c19.607,33.592,46.204,60.189,79.799,79.798c33.597,19.605,70.283,29.407,110.063,29.407
s76.47-9.802,110.065-29.407c33.593-19.602,60.189-46.206,79.795-79.798c19.603-33.596,29.403-70.284,29.403-110.062
C438.533,179.485,428.732,142.795,409.133,109.203z M322.621,270.939c3.617,3.613,5.428,7.905,5.428,12.854
c0,5.133-1.811,9.514-5.428,13.127l-25.693,25.701c-3.614,3.613-7.994,5.42-13.135,5.42c-4.948,0-9.236-1.807-12.847-5.42
l-51.676-51.682l-51.678,51.682c-3.616,3.613-7.898,5.42-12.847,5.42c-5.14,0-9.517-1.807-13.134-5.42l-25.697-25.701
c-3.616-3.613-5.424-7.994-5.424-13.127c0-4.948,1.809-9.24,5.424-12.854l51.678-51.673l-51.678-51.678
c-3.616-3.612-5.424-7.898-5.424-12.847c0-5.14,1.809-9.517,5.424-13.134l25.697-25.693c3.617-3.616,7.994-5.424,13.134-5.424
c4.949,0,9.231,1.809,12.847,5.424l51.678,51.674l51.676-51.674c3.61-3.616,7.898-5.424,12.847-5.424
c5.141,0,9.521,1.809,13.135,5.424l25.693,25.693c3.617,3.617,5.428,7.994,5.428,13.134c0,4.948-1.811,9.235-5.428,12.847
l-51.675,51.678L322.621,270.939z"/>
</g>
</svg>
<div>
<div className="small-btns">
<button onClick={this.openSignUp} className="btn-mobile" id="sign-up-btn">Sign Up</button>
<button onClick={this.openLogin} className="btn-mobile">Login</button>
</div>
</div>
</div>
</nav>
);
}
}
export default LandingNav;
+52
View File
@@ -0,0 +1,52 @@
import React from 'react';
import LandingNav from './LandingNav';
import Showcase from './Showcase';
import SignUp from './SignUp';
import Login from './Login';
import '../scss/LandingPage.scss';
class LandingPage extends React.Component {
constructor(props) {
super(props);
this.state = {
displaySignUp: false,
displayLogin: false
}
}
openSignUp = () => {
this.setState({
displaySignUp: true
});
}
openLogin = () => {
this.setState({
displayLogin: true
});
}
close = () => {
this.setState({
displaySignUp: false,
displayLogin: false
});
}
render() {
return (
<div id="landing-page">
<div className="container">
<div id="landing-page-container">
<LandingNav showSignUp={this.openSignUp} showLogin={this.openLogin} />
<Showcase />
<SignUp display={this.state.displaySignUp} close={this.close} />
<Login display={this.state.displayLogin} close={this.close} />
</div>
</div>
</div>
);
}
}
export default LandingPage;
+50
View File
@@ -0,0 +1,50 @@
import React from 'react';
import { Link } from 'react-router-dom';
import '../scss/Login.scss';
class Login extends React.Component {
close = () => {
this.props.close();
}
render() {
return(
<div id="log-in-container" style={{display: this.props.display ? "grid" : "none"}} >
<div id="log-in">
<svg className="close-log-in" xmlns="http://www.w3.org/2000/svg" x="0px" y="0px" width="438.533px" height="438.533px" viewBox="0 0 438.533 438.533" onClick={this.close}>
<defs>
<linearGradient id="linear-gradient" x1="275.62" y1="495.12" x2="71.68" y2="291.18" gradientUnits="userSpaceOnUse">
<stop offset="0" stopColor="#eacc56"/>
<stop offset="1" stopColor="#ee64d1"/>
</linearGradient>
</defs>
<g>
<path d="M409.133,109.203c-19.608-33.592-46.205-60.189-79.798-79.796C295.736,9.801,259.058,0,219.273,0
c-39.781,0-76.47,9.801-110.063,29.407c-33.595,19.604-60.192,46.201-79.8,79.796C9.801,142.8,0,179.489,0,219.267
c0,39.78,9.804,76.463,29.407,110.062c19.607,33.592,46.204,60.189,79.799,79.798c33.597,19.605,70.283,29.407,110.063,29.407
s76.47-9.802,110.065-29.407c33.593-19.602,60.189-46.206,79.795-79.798c19.603-33.596,29.403-70.284,29.403-110.062
C438.533,179.485,428.732,142.795,409.133,109.203z M322.621,270.939c3.617,3.613,5.428,7.905,5.428,12.854
c0,5.133-1.811,9.514-5.428,13.127l-25.693,25.701c-3.614,3.613-7.994,5.42-13.135,5.42c-4.948,0-9.236-1.807-12.847-5.42
l-51.676-51.682l-51.678,51.682c-3.616,3.613-7.898,5.42-12.847,5.42c-5.14,0-9.517-1.807-13.134-5.42l-25.697-25.701
c-3.616-3.613-5.424-7.994-5.424-13.127c0-4.948,1.809-9.24,5.424-12.854l51.678-51.673l-51.678-51.678
c-3.616-3.612-5.424-7.898-5.424-12.847c0-5.14,1.809-9.517,5.424-13.134l25.697-25.693c3.617-3.616,7.994-5.424,13.134-5.424
c4.949,0,9.231,1.809,12.847,5.424l51.678,51.674l51.676-51.674c3.61-3.616,7.898-5.424,12.847-5.424
c5.141,0,9.521,1.809,13.135,5.424l25.693,25.693c3.617,3.617,5.428,7.994,5.428,13.134c0,4.948-1.811,9.235-5.428,12.847
l-51.675,51.678L322.621,270.939z"/>
</g>
</svg>
<h2>Login</h2>
<form>
<input type="text" placeholder="Username" />
<input type="password" placeholder="Password" />
<Link className="route-link" to="/home">
<button>Jump In</button>
</Link>
</form>
</div>
</div>
);
}
}
export default Login;
+136
View File
@@ -0,0 +1,136 @@
import React from 'react';
import '../scss/MobileProfileSettings.scss';
class MobileProfileSettings extends React.Component {
constructor(props) {
super(props);
this.state = {
mainSettings: true,
photoSettings: false,
passwordSettings: false,
emailSettings: false,
usernameSettings: false
}
}
openMainSettings = () => {
this.setState({
mainSettings: true,
photoSettings: false,
passwordSettings: false,
emailSettings: false,
usernameSettings: false
});
}
openSpeceficSettings = (event) => {
this.setState({
mainSettings: false,
photoSettings: event.target.id === "photo-settings" ? true : false,
passwordSettings: event.target.id === "password-settings" ? true : false,
emailSettings: event.target.id === "email-settings" ? true : false,
usernameSettings: event.target.id === "username-settings" ? true : false
});
}
close = () => {
this.props.close();
}
render() {
return(
<div id="mobile-profile-settings-container" style={{display: this.props.display ? "grid" : "none"}}>
<div id="mobile-profile-settings" style={{display: this.state.mainSettings ? "grid" : "none"}}>
<div>
<h2>Profile Settings</h2>
<svg onClick={this.close} className="close-profile-settings" xmlns="http://www.w3.org/2000/svg" x="0px" y="0px" width="438.533px" height="438.533px" viewBox="0 0 438.533 438.533">
<defs>
<linearGradient id="linear-gradient" x1="275.62" y1="495.12" x2="71.68" y2="291.18" gradientUnits="userSpaceOnUse">
<stop offset="0" stopColor="#eacc56"/>
<stop offset="1" stopColor="#ee64d1"/>
</linearGradient>
</defs>
<g>
<path d="M409.133,109.203c-19.608-33.592-46.205-60.189-79.798-79.796C295.736,9.801,259.058,0,219.273,0
c-39.781,0-76.47,9.801-110.063,29.407c-33.595,19.604-60.192,46.201-79.8,79.796C9.801,142.8,0,179.489,0,219.267
c0,39.78,9.804,76.463,29.407,110.062c19.607,33.592,46.204,60.189,79.799,79.798c33.597,19.605,70.283,29.407,110.063,29.407
s76.47-9.802,110.065-29.407c33.593-19.602,60.189-46.206,79.795-79.798c19.603-33.596,29.403-70.284,29.403-110.062
C438.533,179.485,428.732,142.795,409.133,109.203z M322.621,270.939c3.617,3.613,5.428,7.905,5.428,12.854
c0,5.133-1.811,9.514-5.428,13.127l-25.693,25.701c-3.614,3.613-7.994,5.42-13.135,5.42c-4.948,0-9.236-1.807-12.847-5.42
l-51.676-51.682l-51.678,51.682c-3.616,3.613-7.898,5.42-12.847,5.42c-5.14,0-9.517-1.807-13.134-5.42l-25.697-25.701
c-3.616-3.613-5.424-7.994-5.424-13.127c0-4.948,1.809-9.24,5.424-12.854l51.678-51.673l-51.678-51.678
c-3.616-3.612-5.424-7.898-5.424-12.847c0-5.14,1.809-9.517,5.424-13.134l25.697-25.693c3.617-3.616,7.994-5.424,13.134-5.424
c4.949,0,9.231,1.809,12.847,5.424l51.678,51.674l51.676-51.674c3.61-3.616,7.898-5.424,12.847-5.424
c5.141,0,9.521,1.809,13.135,5.424l25.693,25.693c3.617,3.617,5.428,7.994,5.428,13.134c0,4.948-1.811,9.235-5.428,12.847
l-51.675,51.678L322.621,270.939z"/>
</g>
</svg>
</div>
<h3 id="photo-settings" onClick={this.openSpeceficSettings}>Change Profile Picture</h3>
<h3 id="password-settings" onClick={this.openSpeceficSettings}>Change Password</h3>
<h3 id="email-settings" onClick={this.openSpeceficSettings}>Change Email</h3>
<h3 id="username-settings" onClick={this.openSpeceficSettings}>Change Username</h3>
</div>
<div className="change-photo" style={{display: this.state.photoSettings ? "grid" : "none"}}>
<div className="settings-return">
<h2 onClick={this.openMainSettings}>Return</h2>
</div>
<div className="settings">
<h3>Change Profile Picture</h3>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1855 1855">
<defs>
<linearGradient id="linear-gradient" x1="-356" y1="927.47" x2="2276" y2="927.47" gradientUnits="userSpaceOnUse">
<stop offset="0" stopColor="#eacc56"/>
<stop offset="1" stopColor="#ee64d1"/>
</linearGradient>
</defs>
<path d="M1927,1000.5C1927,489.09,1510.91,73,999.5,73S72,489.09,72,1000.5c0,270.12,116.16,513.6,301.05,683.25l-.88.77,30.09,25.37c1.95,1.65,4.08,3,6,4.62,16,13.25,32.55,25.83,49.42,38,5.46,3.94,10.92,7.89,16.49,11.73q27,18.63,55.38,35.35c4.11,2.43,8.26,4.79,12.41,7.15,20.67,11.77,41.79,22.87,63.41,33,1.58.75,3.2,1.42,4.79,2.16a919,919,0,0,0,224.32,71l6.2,1.11c24.42,4.22,49.11,7.59,74.1,9.85,3,.27,6.07.44,9.14.71,24.89,2,50,3.37,75.55,3.37,25.26,0,50.19-1.32,74.94-3.31,3.14-.27,6.28-.43,9.41-.7q37.19-3.39,73.46-9.68c2.09-.37,4.22-.75,6.31-1.15a919.21,919.21,0,0,0,221.15-69.31c2.56-1.18,5.16-2.29,7.72-3.51q31.21-14.67,61.08-31.57c5-2.8,9.88-5.63,14.81-8.53,18.14-10.69,36-21.85,53.32-33.73,6.24-4.25,12.34-8.73,18.52-13.18,14.8-10.66,29.34-21.66,43.47-33.16,3.14-2.53,6.51-4.72,9.58-7.32l30.86-25.76-.91-.78C1809.73,1516.59,1927,1272,1927,1000.5Zm-1787.55,0c0-474.24,385.81-860,860.05-860s860.05,385.81,860.05,860.05c0,255.55-112.15,485.3-289.69,642.94a253.6,253.6,0,0,0-30.12-18.11l-285.57-142.77a74.75,74.75,0,0,1-41.55-67.21v-99.74c6.61-8.16,13.59-17.4,20.81-27.55a687.14,687.14,0,0,0,88.23-172.79A122.38,122.38,0,0,0,1392,1004.34V884.78a122.73,122.73,0,0,0-29.91-79.9V647.48c1.75-17.54,8-116.3-63.51-197.78-62.16-71-162.77-106.88-299.06-106.88S762.6,378.74,700.44,449.67C629,531.15,635.18,630,636.93,647.44V804.85A122.87,122.87,0,0,0,607,884.75v119.56a122.72,122.72,0,0,0,45.19,95.15c27.32,107,83.54,188,104.32,215.48v97.61a75.23,75.23,0,0,1-39.19,66L450.66,1624.05a244.6,244.6,0,0,0-25.37,16C250,1482.53,139.45,1254.2,139.45,1000.5Z" transform="translate(-72 -73)"/>
</svg>
<input type="file" accept="image/*" align="center"/>
<button className="btn btn-gradient">Change</button>
</div>
</div>
<div className="change-password" style={{display: this.state.passwordSettings ? "grid" : "none"}}>
<div className="settings-return">
<h2 onClick={this.openMainSettings}>Return</h2>
</div>
<div className="settings">
<h3>Change Password</h3>
<form>
<input type="password" placeholder="Old Password"/>
<input type="password" placeholder="New Password"/>
<input type="password" placeholder="Confirm New Password"/>
</form>
<button className="btn btn-gradient">Change</button>
</div>
</div>
<div className="change-email" style={{display: this.state.emailSettings ? "grid" : "none"}}>
<div className="settings-return">
<h2 onClick={this.openMainSettings}>Return</h2>
</div>
<div className="settings">
<h3>Change Email</h3>
<form>
<input type="email" placeholder="Old Email"/>
<input type="email" placeholder="New Email"/>
<input type="email" placeholder="Confirm New Email"/>
</form>
<button className="btn btn-gradient">Change</button>
</div>
</div>
<div className="change-username" style={{display: this.state.usernameSettings ? "grid" : "none"}}>
<div className="settings-return">
<h2 onClick={this.openMainSettings}>Return</h2>
</div>
<div className="settings">
<h3>Change Username</h3>
<input type="text" placeholder="New Username"/>
<button className="btn btn-gradient">Change</button>
</div>
</div>
</div>
);
}
}
export default MobileProfileSettings;
+90
View File
@@ -0,0 +1,90 @@
import React from 'react';
import '../scss/Post.scss';
class Post extends React.Component {
openUserProfile = () => {
this.props.showUserProfile();
}
render() {
const otherComments = [0,1,2,3,4,5,6,7,8,9].map((comment, key) => {
return(
<div className="comment" key={key}>
<div className="other-user" onClick={this.openUserProfile}>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1855 1855">
<defs>
<linearGradient id="linear-gradient" x1="-356" y1="927.47" x2="2276" y2="927.47" gradientUnits="userSpaceOnUse">
<stop offset="0" stopColor="#eacc56"/>
<stop offset="1" stopColor="#ee64d1"/>
</linearGradient>
</defs>
<path d="M1927,1000.5C1927,489.09,1510.91,73,999.5,73S72,489.09,72,1000.5c0,270.12,116.16,513.6,301.05,683.25l-.88.77,30.09,25.37c1.95,1.65,4.08,3,6,4.62,16,13.25,32.55,25.83,49.42,38,5.46,3.94,10.92,7.89,16.49,11.73q27,18.63,55.38,35.35c4.11,2.43,8.26,4.79,12.41,7.15,20.67,11.77,41.79,22.87,63.41,33,1.58.75,3.2,1.42,4.79,2.16a919,919,0,0,0,224.32,71l6.2,1.11c24.42,4.22,49.11,7.59,74.1,9.85,3,.27,6.07.44,9.14.71,24.89,2,50,3.37,75.55,3.37,25.26,0,50.19-1.32,74.94-3.31,3.14-.27,6.28-.43,9.41-.7q37.19-3.39,73.46-9.68c2.09-.37,4.22-.75,6.31-1.15a919.21,919.21,0,0,0,221.15-69.31c2.56-1.18,5.16-2.29,7.72-3.51q31.21-14.67,61.08-31.57c5-2.8,9.88-5.63,14.81-8.53,18.14-10.69,36-21.85,53.32-33.73,6.24-4.25,12.34-8.73,18.52-13.18,14.8-10.66,29.34-21.66,43.47-33.16,3.14-2.53,6.51-4.72,9.58-7.32l30.86-25.76-.91-.78C1809.73,1516.59,1927,1272,1927,1000.5Zm-1787.55,0c0-474.24,385.81-860,860.05-860s860.05,385.81,860.05,860.05c0,255.55-112.15,485.3-289.69,642.94a253.6,253.6,0,0,0-30.12-18.11l-285.57-142.77a74.75,74.75,0,0,1-41.55-67.21v-99.74c6.61-8.16,13.59-17.4,20.81-27.55a687.14,687.14,0,0,0,88.23-172.79A122.38,122.38,0,0,0,1392,1004.34V884.78a122.73,122.73,0,0,0-29.91-79.9V647.48c1.75-17.54,8-116.3-63.51-197.78-62.16-71-162.77-106.88-299.06-106.88S762.6,378.74,700.44,449.67C629,531.15,635.18,630,636.93,647.44V804.85A122.87,122.87,0,0,0,607,884.75v119.56a122.72,122.72,0,0,0,45.19,95.15c27.32,107,83.54,188,104.32,215.48v97.61a75.23,75.23,0,0,1-39.19,66L450.66,1624.05a244.6,244.6,0,0,0-25.37,16C250,1482.53,139.45,1254.2,139.45,1000.5Z" transform="translate(-72 -73)"/>
</svg>
<span>Username</span>
</div>
<p>
Lorem ipsum dolor sit amet consectetur adipisicing elit. Quidem, sit?
</p>
</div>
);
})
return(
<div id="post">
<div className="info">
<div className="data">
<h2>Post</h2>
<p>
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Perspiciatis libero ipsa soluta enim vitae quas ex dolore nulla repudiandae eius?
</p>
</div>
<div className="stats">
<div className="user" onClick={this.openUserProfile}>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1855 1855">
<defs>
<linearGradient id="linear-gradient" x1="-356" y1="927.47" x2="2276" y2="927.47" gradientUnits="userSpaceOnUse">
<stop offset="0" stopColor="#eacc56"/>
<stop offset="1" stopColor="#ee64d1"/>
</linearGradient>
</defs>
<path d="M1927,1000.5C1927,489.09,1510.91,73,999.5,73S72,489.09,72,1000.5c0,270.12,116.16,513.6,301.05,683.25l-.88.77,30.09,25.37c1.95,1.65,4.08,3,6,4.62,16,13.25,32.55,25.83,49.42,38,5.46,3.94,10.92,7.89,16.49,11.73q27,18.63,55.38,35.35c4.11,2.43,8.26,4.79,12.41,7.15,20.67,11.77,41.79,22.87,63.41,33,1.58.75,3.2,1.42,4.79,2.16a919,919,0,0,0,224.32,71l6.2,1.11c24.42,4.22,49.11,7.59,74.1,9.85,3,.27,6.07.44,9.14.71,24.89,2,50,3.37,75.55,3.37,25.26,0,50.19-1.32,74.94-3.31,3.14-.27,6.28-.43,9.41-.7q37.19-3.39,73.46-9.68c2.09-.37,4.22-.75,6.31-1.15a919.21,919.21,0,0,0,221.15-69.31c2.56-1.18,5.16-2.29,7.72-3.51q31.21-14.67,61.08-31.57c5-2.8,9.88-5.63,14.81-8.53,18.14-10.69,36-21.85,53.32-33.73,6.24-4.25,12.34-8.73,18.52-13.18,14.8-10.66,29.34-21.66,43.47-33.16,3.14-2.53,6.51-4.72,9.58-7.32l30.86-25.76-.91-.78C1809.73,1516.59,1927,1272,1927,1000.5Zm-1787.55,0c0-474.24,385.81-860,860.05-860s860.05,385.81,860.05,860.05c0,255.55-112.15,485.3-289.69,642.94a253.6,253.6,0,0,0-30.12-18.11l-285.57-142.77a74.75,74.75,0,0,1-41.55-67.21v-99.74c6.61-8.16,13.59-17.4,20.81-27.55a687.14,687.14,0,0,0,88.23-172.79A122.38,122.38,0,0,0,1392,1004.34V884.78a122.73,122.73,0,0,0-29.91-79.9V647.48c1.75-17.54,8-116.3-63.51-197.78-62.16-71-162.77-106.88-299.06-106.88S762.6,378.74,700.44,449.67C629,531.15,635.18,630,636.93,647.44V804.85A122.87,122.87,0,0,0,607,884.75v119.56a122.72,122.72,0,0,0,45.19,95.15c27.32,107,83.54,188,104.32,215.48v97.61a75.23,75.23,0,0,1-39.19,66L450.66,1624.05a244.6,244.6,0,0,0-25.37,16C250,1482.53,139.45,1254.2,139.45,1000.5Z" transform="translate(-72 -73)"/>
</svg>
<span>Username</span>
</div>
<div className="stats">
<div className="likes">
<span>??</span>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1801 1656.95">
<path className="cls-1" d="M994.11,464.16C1066.8,291.88,1232.86,171.49,1426,171.49c260.18,0,447.56,222.58,471.12,487.83,0,0,12.71,65.85-15.27,184.39-38.11,161.45-127.7,304.88-248.48,414.35L994.11,1828.41,365.63,1258c-120.78-109.43-210.37-252.9-248.48-414.34-28-118.55-15.27-184.39-15.27-184.39C125.44,394,312.82,171.46,573,171.46,766.18,171.46,921.43,291.88,994.11,464.16Z" transform="translate(-99 -171.46)"/>
</svg>
</div>
<div className="dislikes">
<span>??</span>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1732 1732">
<path className="cls-1" d="M1000,134c-478.28,0-866,387.72-866,866s387.72,866,866,866,866-387.72,866-866S1478.28,134,1000,134ZM271,1000c0-402.62,326.38-729,729-729,194.94,0,372,76.51,502.8,201.15L735.65,1140.9,706.77,1109l647.34-564.31a288.44,288.44,0,0,0-71.35-8.85c-128,0-238.14,79.81-286.33,194-48.19-114.22-151.12-194-279.19-194-172.49,0-296.71,147.55-312.33,323.41,0,0-8.43,43.65,10.13,122.24,23.11,97.92,74.8,185.86,144.74,255.67l19.44-16.94h0l.06,0a4.24,4.24,0,0,1,1.19-1l126.14-110L735.5,1141,609.7,1250.7l-.23-.23h0l.23.23L408.46,1426.13A725.69,725.69,0,0,1,271,1000Zm729,729c-194.18,0-370.62-75.93-501.27-199.7l208.12-181.43.1.09h0l-.09-.09,120.72-105.23,28.88,31.86L737.33,1378.33l-.07-.07h0l.08.07-11.73,10.22,270.83,245.8,423.81-378.12c80.07-72.58,139.46-167.67,164.72-274.7,18.56-78.59,10.13-122.25,10.13-122.25-5.78-65-26.41-126.16-58.83-177.42L856.61,1274.35l-28.88-31.86,765-666.91A725.69,725.69,0,0,1,1729,1000C1729,1402.62,1402.62,1729,1000,1729Z" transform="translate(-134 -134)"/>
</svg>
</div>
<div className="comments">
<span>??</span>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1678 580.88">
<path className="cls-1" d="M1548.56,753.3c-145.88,0-266.62,107.54-287.3,247.67H1133.71c-19.46-99.21-106.88-174.07-211.79-174.07S729.59,901.76,710.13,1001H588.63C569.17,901.76,481.75,826.9,376.84,826.9,257.64,826.9,161,923.54,161,1042.74s96.64,215.85,215.84,215.85S592.68,1162,592.68,1042.74a216.62,216.62,0,0,0-3.86-40.78H709.94a216.62,216.62,0,0,0-3.86,40.78c0,119.21,96.63,215.85,215.84,215.85s215.84-96.64,215.84-215.85a217.45,217.45,0,0,0-3.86-40.78h127.22a292.26,292.26,0,0,0-3,41.78c0,160.41,130,290.44,290.44,290.44s290.44-130,290.44-290.44S1709,753.3,1548.56,753.3Z" transform="translate(-161 -753.3)"/>
</svg>
</div>
</div>
</div>
</div>
<div className="other-users-comments">
<h2>Comments</h2>
<div className="other-comments">
{otherComments}
</div>
<div className="add-comment">
<input type="text" placeholder="Type a Comment"/>
</div>
</div>
</div>
);
}
}
export default Post;
+153
View File
@@ -0,0 +1,153 @@
import React from 'react';
import { Link } from "react-router-dom";
import '../scss/PostNav.scss';
const openMobileMenu = () => {
new Promise(resolve => {
document.querySelector(".mobile-menu").style.display = "block";
document.querySelector(".mobile-menu").animate([
{left: "100%"},
{left: "50%"}
], 100);
document.querySelector(".mobile-menu-overlay").style.display = "block";
document.querySelector(".mobile-menu-overlay").animate([
{opacity: 0},
{opacity: 1}
], 100);
resolve();
})
.then(() => {
document.querySelector(".mobile-menu").style.left = "50%";
document.querySelector(".mobile-menu-overlay").style.opacity = "1";
});
}
const closeMobileMenu = () => {
new Promise(resolve => {
document.querySelector(".mobile-menu").animate([
{left: "50%"},
{left: "100%"}
], 100);
resolve();
})
.then(() => document.querySelector(".mobile-menu").style.left = "100%")
new Promise(resolve => {
document.querySelector(".mobile-menu-overlay").animate([
{opacity: 1},
{opacity: 0}
], 100);
resolve();
})
.then(() => {
document.querySelector(".mobile-menu-overlay").style.opacity = "0";
});
setTimeout(() => {
document.querySelector(".mobile-menu").style.display = "none";
document.querySelector(".mobile-menu-overlay").style.display = "none";
}, 100);
}
class PostNav extends React.Component {
constructor(props) {
super(props)
this.state = {
displayMobileMenu: false
}
}
toggleMobileMenu = () => {
setTimeout(() => {
this.setState({
displayMobileMenu: !this.state.displayMobileMenu
});
}, 70);
if (this.state.displayMobileMenu) {
openMobileMenu();
} else {
closeMobileMenu();
}
}
openAddPost = () => {
closeMobileMenu();
this.props.showAddPost();
}
openMobileProfileSettings = () => {
closeMobileMenu();
this.props.showMobileProfileSettings();
}
render() {
return(
<nav id="post-nav">
<svg className="nav-logo" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 758.29 291.67">
<defs>
<linearGradient id="linear-gradient" x1="275.62" y1="495.12" x2="71.68" y2="291.18" gradientUnits="userSpaceOnUse">
<stop offset="0" stopColor="#eacc56"/>
<stop offset="1" stopColor="#ee64d1"/>
</linearGradient>
</defs>
<path className="cls-1" d="M159.5,233.17A145.84,145.84,0,1,0,305.33,379,145.83,145.83,0,0,0,159.5,233.17ZM141.64,349.46l-14.15,101A12.41,12.41,0,1,1,102.92,447l14.14-101a12.41,12.41,0,0,1,24.58,3.44Zm44.85,57.13a50.23,50.23,0,0,1-8.82-.78L161,403.74a12.53,12.53,0,0,1-10.9-14h0a12.53,12.53,0,0,1,14-10.9l18.42,2.28c12.52,1.18,23.92-8,25.73-20.92,1.87-13.31-7.11-25.57-20-27.38-.41-.06-.82-.09-1.22-.12l0-.08-77-10.78a12.54,12.54,0,0,1-10.68-14.17h0A12.54,12.54,0,0,1,113.48,297l78.9,11.06a8.08,8.08,0,0,1,1,.19,49.39,49.39,0,0,1-6.87,98.34Z" transform="translate(-13.67 -233.17)"/>
<g>
<path className="cls-2" d="M401.21,340.1A37.87,37.87,0,0,1,417.85,355q5.79,9.67,5.79,23,0,13.14-5.79,22.9a37.68,37.68,0,0,1-16.64,14.95Q390.37,421,375.74,421h-25.4v34.91h-20.9v-121h46.3Q390.37,334.92,401.21,340.1Zm-5.7,55.65q7.07-6.22,7.07-17.8t-7.07-17.8q-7.08-6.22-20.74-6.22H350.34v48h24.43Q388.44,402,395.51,395.75Z" transform="translate(-13.67 -233.17)"/>
<path className="cls-2" d="M522.65,416.66H455.3a25.45,25.45,0,0,0,9.24,16.16q7.48,6,18.57,6,14.14,0,23.31-10l10.77,13.3a36.54,36.54,0,0,1-14.63,11.24,50.09,50.09,0,0,1-19.93,3.8q-14.14,0-24.92-6.05a41.88,41.88,0,0,1-16.63-16.85,50.29,50.29,0,0,1-5.87-24.45,51.09,51.09,0,0,1,5.71-24.28,42,42,0,0,1,15.83-16.85,43.67,43.67,0,0,1,22.82-6.05,42.62,42.62,0,0,1,22.43,6,41,41,0,0,1,15.43,16.76q5.54,10.81,5.54,25C523,411.76,522.87,413.9,522.65,416.66ZM463.26,386q-6.67,6.13-8.12,16.33h48.7A26.12,26.12,0,0,0,496,386.07a23,23,0,0,0-16.4-6.22A23.2,23.2,0,0,0,463.26,386Z" transform="translate(-13.67 -233.17)"/>
<path className="cls-2" d="M594.5,455.89l-22-32-22.18,32H528.12l33.43-46.83-32-45.45h22.35L573,393.85,594,363.61h21.7l-32.15,45.1,33.6,47.18Z" transform="translate(-13.67 -233.17)"/>
<path className="cls-2" d="M683.55,450.88a23,23,0,0,1-8.6,4.66,36.08,36.08,0,0,1-10.69,1.56q-14.14,0-21.86-8T634.69,426V381.58H620.54V364.3h14.15V343.21h20.09V364.3h23v17.28h-23v43.89q0,6.75,3.05,10.29t8.84,3.54a16.85,16.85,0,0,0,11.25-3.8Z" transform="translate(-13.67 -233.17)"/>
<path className="cls-2" d="M761.91,372.33Q772,382.1,772,401.8v54.09H753V444.66a23.88,23.88,0,0,1-10.53,9.24A38.69,38.69,0,0,1,726,457.1a37.92,37.92,0,0,1-16.87-3.54A26,26,0,0,1,694,429.45q0-12.45,8.6-20T729.68,402h22.18v-1.38q0-9.68-5.38-14.86t-16-5.19A43.29,43.29,0,0,0,716.26,383a34.29,34.29,0,0,0-11.81,6.74L696.57,374a47.42,47.42,0,0,1,16.23-8.47,67.53,67.53,0,0,1,20.1-2.94Q751.86,362.57,761.91,372.33Zm-18.33,65.33A19.86,19.86,0,0,0,751.86,427V416.31H731.13q-17.37,0-17.36,12.27a11.3,11.3,0,0,0,4.34,9.34q4.33,3.45,12,3.45A24.5,24.5,0,0,0,743.58,437.66Z" transform="translate(-13.67 -233.17)"/>
</g>
</svg>
<button className="btn btn-gradient">
<Link className="route-link" to="/home">Return</Link>
</button>
<svg className="mobile-menu-btn" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 701 458" onClick={this.toggleMobileMenu}>
<defs>
<linearGradient id="linear-gradient" x1="1133.82" y1="598.18" x2="-208.55" y2="-34.48" gradientUnits="userSpaceOnUse">
<stop offset="0" stopColor="#ee64d1"/>
<stop offset="1" stopColor="#eacc56"/>
</linearGradient>
</defs>
<path className="cls-1" d="M50,279H651a50,50,0,0,0,0-100H50c-1,0-2,0-3,.1V99.9c1,.06,2,.1,3,.1H651A50,50,0,0,0,651,0H50a50,50,0,0,0-4,99.83v79.34a50,50,0,0,0,0,99.66v79.34A50,50,0,0,0,50,458H651a50,50,0,0,0,0-100H50c-1,0-2,0-3,.1V278.9C48,279,49,279,50,279Z"/>
</svg>
<div className="mobile-menu-overlay"></div>
<div className="mobile-menu">
<svg className="close-mobile-menu-btn" xmlns="http://www.w3.org/2000/svg" x="0px" y="0px" width="438.533px" height="438.533px" viewBox="0 0 438.533 438.533" onClick={this.toggleMobileMenu}>
<g>
<path d="M409.133,109.203c-19.608-33.592-46.205-60.189-79.798-79.796C295.736,9.801,259.058,0,219.273,0
c-39.781,0-76.47,9.801-110.063,29.407c-33.595,19.604-60.192,46.201-79.8,79.796C9.801,142.8,0,179.489,0,219.267
c0,39.78,9.804,76.463,29.407,110.062c19.607,33.592,46.204,60.189,79.799,79.798c33.597,19.605,70.283,29.407,110.063,29.407
s76.47-9.802,110.065-29.407c33.593-19.602,60.189-46.206,79.795-79.798c19.603-33.596,29.403-70.284,29.403-110.062
C438.533,179.485,428.732,142.795,409.133,109.203z M322.621,270.939c3.617,3.613,5.428,7.905,5.428,12.854
c0,5.133-1.811,9.514-5.428,13.127l-25.693,25.701c-3.614,3.613-7.994,5.42-13.135,5.42c-4.948,0-9.236-1.807-12.847-5.42
l-51.676-51.682l-51.678,51.682c-3.616,3.613-7.898,5.42-12.847,5.42c-5.14,0-9.517-1.807-13.134-5.42l-25.697-25.701
c-3.616-3.613-5.424-7.994-5.424-13.127c0-4.948,1.809-9.24,5.424-12.854l51.678-51.673l-51.678-51.678
c-3.616-3.612-5.424-7.898-5.424-12.847c0-5.14,1.809-9.517,5.424-13.134l25.697-25.693c3.617-3.616,7.994-5.424,13.134-5.424
c4.949,0,9.231,1.809,12.847,5.424l51.678,51.674l51.676-51.674c3.61-3.616,7.898-5.424,12.847-5.424
c5.141,0,9.521,1.809,13.135,5.424l25.693,25.693c3.617,3.617,5.428,7.994,5.428,13.134c0,4.948-1.811,9.235-5.428,12.847
l-51.675,51.678L322.621,270.939z"/>
</g>
</svg>
<div className="current-user">
<svg className="avatar" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1855 1855">
<path className="cls-1" d="M1927,1000.5C1927,489.09,1510.91,73,999.5,73S72,489.09,72,1000.5c0,270.12,116.16,513.6,301.05,683.25l-.88.77,30.09,25.37c1.95,1.65,4.08,3,6,4.62,16,13.25,32.55,25.83,49.42,38,5.46,3.94,10.92,7.89,16.49,11.73q27,18.63,55.38,35.35c4.11,2.43,8.26,4.79,12.41,7.15,20.67,11.77,41.79,22.87,63.41,33,1.58.75,3.2,1.42,4.79,2.16a919,919,0,0,0,224.32,71l6.2,1.11c24.42,4.22,49.11,7.59,74.1,9.85,3,.27,6.07.44,9.14.71,24.89,2,50,3.37,75.55,3.37,25.26,0,50.19-1.32,74.94-3.31,3.14-.27,6.28-.43,9.41-.7q37.19-3.39,73.46-9.68c2.09-.37,4.22-.75,6.31-1.15a919.21,919.21,0,0,0,221.15-69.31c2.56-1.18,5.16-2.29,7.72-3.51q31.21-14.67,61.08-31.57c5-2.8,9.88-5.63,14.81-8.53,18.14-10.69,36-21.85,53.32-33.73,6.24-4.25,12.34-8.73,18.52-13.18,14.8-10.66,29.34-21.66,43.47-33.16,3.14-2.53,6.51-4.72,9.58-7.32l30.86-25.76-.91-.78C1809.73,1516.59,1927,1272,1927,1000.5Zm-1787.55,0c0-474.24,385.81-860,860.05-860s860.05,385.81,860.05,860.05c0,255.55-112.15,485.3-289.69,642.94a253.6,253.6,0,0,0-30.12-18.11l-285.57-142.77a74.75,74.75,0,0,1-41.55-67.21v-99.74c6.61-8.16,13.59-17.4,20.81-27.55a687.14,687.14,0,0,0,88.23-172.79A122.38,122.38,0,0,0,1392,1004.34V884.78a122.73,122.73,0,0,0-29.91-79.9V647.48c1.75-17.54,8-116.3-63.51-197.78-62.16-71-162.77-106.88-299.06-106.88S762.6,378.74,700.44,449.67C629,531.15,635.18,630,636.93,647.44V804.85A122.87,122.87,0,0,0,607,884.75v119.56a122.72,122.72,0,0,0,45.19,95.15c27.32,107,83.54,188,104.32,215.48v97.61a75.23,75.23,0,0,1-39.19,66L450.66,1624.05a244.6,244.6,0,0,0-25.37,16C250,1482.53,139.45,1254.2,139.45,1000.5Z" transform="translate(-72 -73)"/>
</svg>
<h3>Username</h3>
</div>
<div>
<div className="small-btns">
<button className="btn-mobile">
<Link className="route-link" to="/home">Return</Link>
</button>
<button className="btn-mobile" onClick={this.openMobileProfileSettings}>Profile Settings</button>
<button className="btn-mobile">
<Link className="route-link" to="/">Log Out</Link>
</button>
</div>
</div>
</div>
</nav>
);
}
}
export default PostNav
+68
View File
@@ -0,0 +1,68 @@
import React from 'react';
import PostNav from './PostNav';
import Post from './Post';
import ProfileInfo from './ProfileInfo';
import Footer from './Footer';
import DesktopProfileSettings from './DesktopProfileSettings';
import MobileProfileSettings from './MobileProfileSettings';
import UserProfile from './UserProfile';
import '../scss/PostPage.scss';
class PostPage extends React.Component {
constructor(props) {
super(props);
this.state = {
displayDesktopProfileSettings: false,
displayMobileProfileSettings: false,
displayUserProfile: false
}
}
openDesktopProfileSettings = () => {
this.setState({
displayDesktopProfileSettings: true
});
}
openMobileProfileSettings = () => {
this.setState({
displayMobileProfileSettings: true
});
}
openUserProfile = () => {
this.setState({
displayUserProfile: true
});
}
close = () => {
this.setState({
displayDesktopProfileSettings: false,
displayMobileProfileSettings: false,
displayUserProfile: false
});
}
render() {
return(
<React.Fragment>
<div id="post-page">
<div className="container">
<PostNav showMobileProfileSettings={this.openMobileProfileSettings} />
<main>
<Post showUserProfile={this.openUserProfile} />
<ProfileInfo showDesktopProfileSettings={this.openDesktopProfileSettings} showUserProfile={this.openUserProfile} />
</main>
</div>
</div>
<Footer />
<DesktopProfileSettings display={this.state.displayDesktopProfileSettings} close={this.close} />
<MobileProfileSettings display={this.state.displayMobileProfileSettings} close={this.close} />
<UserProfile display={this.state.displayUserProfile} close={this.close} />
</React.Fragment>
);
}
}
export default PostPage;
+64
View File
@@ -0,0 +1,64 @@
import React from 'react';
import { Link } from 'react-router-dom';
import '../scss/Posts.scss';
class Posts extends React.Component {
render() {
const posts = [1,2,3,4,5].map((post, key) => {
return(
<div className="post" key={key.toString()}>
<div className="info">
<div className="data">
<div className="user">User {post}</div>
<div className="title">
<h2>
<Link className="route-link" to="/post">Post {post}</Link>
</h2>
</div>
<div className="content">Content {post}</div>
</div>
<div className="stats">
<div className="likes">?? Likes</div>
<div className="dislikes">?? Dislikes</div>
<div className="comments">?? Comments</div>
</div>
</div>
<div className="interaction">
<button className="like">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1801 1656.95">
<path className="cls-1" d="M994.11,464.16C1066.8,291.88,1232.86,171.49,1426,171.49c260.18,0,447.56,222.58,471.12,487.83,0,0,12.71,65.85-15.27,184.39-38.11,161.45-127.7,304.88-248.48,414.35L994.11,1828.41,365.63,1258c-120.78-109.43-210.37-252.9-248.48-414.34-28-118.55-15.27-184.39-15.27-184.39C125.44,394,312.82,171.46,573,171.46,766.18,171.46,921.43,291.88,994.11,464.16Z" transform="translate(-99 -171.46)"/>
</svg>
<span>Like</span>
</button>
<button className="dislike">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1732 1732">
<path className="cls-1" d="M1000,134c-478.28,0-866,387.72-866,866s387.72,866,866,866,866-387.72,866-866S1478.28,134,1000,134ZM271,1000c0-402.62,326.38-729,729-729,194.94,0,372,76.51,502.8,201.15L735.65,1140.9,706.77,1109l647.34-564.31a288.44,288.44,0,0,0-71.35-8.85c-128,0-238.14,79.81-286.33,194-48.19-114.22-151.12-194-279.19-194-172.49,0-296.71,147.55-312.33,323.41,0,0-8.43,43.65,10.13,122.24,23.11,97.92,74.8,185.86,144.74,255.67l19.44-16.94h0l.06,0a4.24,4.24,0,0,1,1.19-1l126.14-110L735.5,1141,609.7,1250.7l-.23-.23h0l.23.23L408.46,1426.13A725.69,725.69,0,0,1,271,1000Zm729,729c-194.18,0-370.62-75.93-501.27-199.7l208.12-181.43.1.09h0l-.09-.09,120.72-105.23,28.88,31.86L737.33,1378.33l-.07-.07h0l.08.07-11.73,10.22,270.83,245.8,423.81-378.12c80.07-72.58,139.46-167.67,164.72-274.7,18.56-78.59,10.13-122.25,10.13-122.25-5.78-65-26.41-126.16-58.83-177.42L856.61,1274.35l-28.88-31.86,765-666.91A725.69,725.69,0,0,1,1729,1000C1729,1402.62,1402.62,1729,1000,1729Z" transform="translate(-134 -134)"/>
</svg>
<span>Dislike</span>
</button>
<button className="comment">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1678 580.88">
<path className="cls-1" d="M1548.56,753.3c-145.88,0-266.62,107.54-287.3,247.67H1133.71c-19.46-99.21-106.88-174.07-211.79-174.07S729.59,901.76,710.13,1001H588.63C569.17,901.76,481.75,826.9,376.84,826.9,257.64,826.9,161,923.54,161,1042.74s96.64,215.85,215.84,215.85S592.68,1162,592.68,1042.74a216.62,216.62,0,0,0-3.86-40.78H709.94a216.62,216.62,0,0,0-3.86,40.78c0,119.21,96.63,215.85,215.84,215.85s215.84-96.64,215.84-215.85a217.45,217.45,0,0,0-3.86-40.78h127.22a292.26,292.26,0,0,0-3,41.78c0,160.41,130,290.44,290.44,290.44s290.44-130,290.44-290.44S1709,753.3,1548.56,753.3Z" transform="translate(-161 -753.3)"/>
</svg>
<span>Comment</span>
</button>
</div>
</div>
);
});
return(
<div id="posts">
<div id="posts-filter">
<button className="filter active">Popular</button>
<button className="filter">Newest</button>
<button className="filter">Best</button>
</div>
<div id="posts-container">
{posts}
</div>
</div>
);
}
}
export default Posts;
+88
View File
@@ -0,0 +1,88 @@
import React from 'react';
import { Link } from 'react-router-dom';
import '../scss/ProfileInfo.scss';
class ProfileInfo extends React.Component {
openDesktopProfileSettings = () => {
this.props.showDesktopProfileSettings();
}
openUserProfile = () => {
this.props.showUserProfile();
}
render() {
return(
<div id="profile-info">
<div className="profile">
<svg onClick={this.openDesktopProfileSettings} className="settings-btn" version="1.1" xmlns="http://www.w3.org/2000/svg" x="0px" y="0px"viewBox="0 0 268.8 268.8">
<defs>
<linearGradient id="linear-gradient" gradientUnits="userSpaceOnUse" x1="-55.4026" y1="137.5011" x2="370.5974" y2="130.5011">
<stop offset="0" style={{stopColor:"#EACC56"}}/>
<stop offset="1" style={{stopColor:"#EE64D1"}}/>
</linearGradient>
</defs>
<path className="st0" d="M267.9,119.5c-0.4-3.8-4.8-6.6-8.6-6.6c-12.3,0-23.2-7.2-27.8-18.4c-4.7-11.5-1.7-24.8,7.5-33.2
c2.9-2.6,3.2-7.1,0.8-10.1c-6.3-8-13.5-15.2-21.3-21.5c-3.1-2.5-7.6-2.1-10.2,0.8c-8,8.9-22.4,12.2-33.5,7.5
c-11.6-4.9-18.9-16.6-18.2-29.2c0.2-4-2.7-7.4-6.6-7.8c-10-1.2-20.2-1.2-30.2-0.1c-3.9,0.4-6.8,3.8-6.7,7.7
c0.4,12.5-6.9,24-18.4,28.7c-11,4.5-25.3,1.2-33.3-7.6c-2.6-2.9-7.1-3.3-10.1-0.9c-8.1,6.3-15.4,13.6-21.7,21.5
c-2.5,3.1-2.1,7.6,0.8,10.2c9.4,8.5,12.4,21.9,7.5,33.5c-4.6,11-16.1,18.2-29.2,18.2c-4.3-0.1-7.3,2.7-7.8,6.6
c-1.2,10.1-1.2,20.4-0.1,30.6c0.4,3.8,5,6.6,8.8,6.6c11.7-0.3,22.9,6.9,27.6,18.4c4.7,11.5,1.7,24.8-7.5,33.2
c-2.9,2.6-3.2,7.1-0.8,10.1c6.2,8,13.4,15.2,21.3,21.5c3.1,2.5,7.6,2.1,10.2-0.8c8-8.9,22.4-12.2,33.5-7.5
c11.6,4.9,18.9,16.6,18.2,29.2c-0.2,4,2.7,7.4,6.6,7.9c5.1,0.6,10.3,0.9,15.5,0.9c4.9,0,9.8-0.3,14.8-0.8c3.9-0.4,6.8-3.8,6.7-7.7
c-0.5-12.5,6.9-24,18.4-28.7c11.1-4.5,25.3-1.2,33.3,7.6c2.7,2.9,7,3.2,10.1,0.8c8-6.3,15.3-13.5,21.7-21.5
c2.5-3.1,2.1-7.6-0.8-10.2c-9.4-8.5-12.4-21.9-7.5-33.5c4.6-10.9,15.6-18.2,27.5-18.2l1.7,0c3.9,0.3,7.4-2.7,7.9-6.6
C269,139.9,269.1,129.6,267.9,119.5z M134.6,179.5c-24.7,0-44.8-20.1-44.8-44.8c0-24.7,20.1-44.8,44.8-44.8
c24.7,0,44.8,20.1,44.8,44.8C179.4,159.4,159.3,179.5,134.6,179.5z"/>
</svg>
<div className="user">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1855 1855">
<defs>
<linearGradient id="linear-gradient" x1="-356" y1="927.47" x2="2276" y2="927.47" gradientUnits="userSpaceOnUse">
<stop offset="0" stopColor="#eacc56"/>
<stop offset="1" stopColor="#ee64d1"/>
</linearGradient>
</defs>
<path d="M1927,1000.5C1927,489.09,1510.91,73,999.5,73S72,489.09,72,1000.5c0,270.12,116.16,513.6,301.05,683.25l-.88.77,30.09,25.37c1.95,1.65,4.08,3,6,4.62,16,13.25,32.55,25.83,49.42,38,5.46,3.94,10.92,7.89,16.49,11.73q27,18.63,55.38,35.35c4.11,2.43,8.26,4.79,12.41,7.15,20.67,11.77,41.79,22.87,63.41,33,1.58.75,3.2,1.42,4.79,2.16a919,919,0,0,0,224.32,71l6.2,1.11c24.42,4.22,49.11,7.59,74.1,9.85,3,.27,6.07.44,9.14.71,24.89,2,50,3.37,75.55,3.37,25.26,0,50.19-1.32,74.94-3.31,3.14-.27,6.28-.43,9.41-.7q37.19-3.39,73.46-9.68c2.09-.37,4.22-.75,6.31-1.15a919.21,919.21,0,0,0,221.15-69.31c2.56-1.18,5.16-2.29,7.72-3.51q31.21-14.67,61.08-31.57c5-2.8,9.88-5.63,14.81-8.53,18.14-10.69,36-21.85,53.32-33.73,6.24-4.25,12.34-8.73,18.52-13.18,14.8-10.66,29.34-21.66,43.47-33.16,3.14-2.53,6.51-4.72,9.58-7.32l30.86-25.76-.91-.78C1809.73,1516.59,1927,1272,1927,1000.5Zm-1787.55,0c0-474.24,385.81-860,860.05-860s860.05,385.81,860.05,860.05c0,255.55-112.15,485.3-289.69,642.94a253.6,253.6,0,0,0-30.12-18.11l-285.57-142.77a74.75,74.75,0,0,1-41.55-67.21v-99.74c6.61-8.16,13.59-17.4,20.81-27.55a687.14,687.14,0,0,0,88.23-172.79A122.38,122.38,0,0,0,1392,1004.34V884.78a122.73,122.73,0,0,0-29.91-79.9V647.48c1.75-17.54,8-116.3-63.51-197.78-62.16-71-162.77-106.88-299.06-106.88S762.6,378.74,700.44,449.67C629,531.15,635.18,630,636.93,647.44V804.85A122.87,122.87,0,0,0,607,884.75v119.56a122.72,122.72,0,0,0,45.19,95.15c27.32,107,83.54,188,104.32,215.48v97.61a75.23,75.23,0,0,1-39.19,66L450.66,1624.05a244.6,244.6,0,0,0-25.37,16C250,1482.53,139.45,1254.2,139.45,1000.5Z" transform="translate(-72 -73)"/>
</svg>
<h3>Username</h3>
<div className="user-btns">
<button onClick={this.openUserProfile} >Profile</button>
<button>
<Link className="route-link" to="/">Log Out</Link>
</button>
</div>
</div>
</div>
<div className="profile-stats">
<h3>My Post Stats</h3>
<div className="stats">
<div className="likes">
<span>??</span>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1801 1656.95">
<path className="cls-1" d="M994.11,464.16C1066.8,291.88,1232.86,171.49,1426,171.49c260.18,0,447.56,222.58,471.12,487.83,0,0,12.71,65.85-15.27,184.39-38.11,161.45-127.7,304.88-248.48,414.35L994.11,1828.41,365.63,1258c-120.78-109.43-210.37-252.9-248.48-414.34-28-118.55-15.27-184.39-15.27-184.39C125.44,394,312.82,171.46,573,171.46,766.18,171.46,921.43,291.88,994.11,464.16Z" transform="translate(-99 -171.46)"/>
</svg>
</div>
<div className="dislikes">
<span>??</span>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1732 1732">
<path className="cls-1" d="M1000,134c-478.28,0-866,387.72-866,866s387.72,866,866,866,866-387.72,866-866S1478.28,134,1000,134ZM271,1000c0-402.62,326.38-729,729-729,194.94,0,372,76.51,502.8,201.15L735.65,1140.9,706.77,1109l647.34-564.31a288.44,288.44,0,0,0-71.35-8.85c-128,0-238.14,79.81-286.33,194-48.19-114.22-151.12-194-279.19-194-172.49,0-296.71,147.55-312.33,323.41,0,0-8.43,43.65,10.13,122.24,23.11,97.92,74.8,185.86,144.74,255.67l19.44-16.94h0l.06,0a4.24,4.24,0,0,1,1.19-1l126.14-110L735.5,1141,609.7,1250.7l-.23-.23h0l.23.23L408.46,1426.13A725.69,725.69,0,0,1,271,1000Zm729,729c-194.18,0-370.62-75.93-501.27-199.7l208.12-181.43.1.09h0l-.09-.09,120.72-105.23,28.88,31.86L737.33,1378.33l-.07-.07h0l.08.07-11.73,10.22,270.83,245.8,423.81-378.12c80.07-72.58,139.46-167.67,164.72-274.7,18.56-78.59,10.13-122.25,10.13-122.25-5.78-65-26.41-126.16-58.83-177.42L856.61,1274.35l-28.88-31.86,765-666.91A725.69,725.69,0,0,1,1729,1000C1729,1402.62,1402.62,1729,1000,1729Z" transform="translate(-134 -134)"/>
</svg>
</div>
<div className="comments">
<span>??</span>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1678 580.88">
<path className="cls-1" d="M1548.56,753.3c-145.88,0-266.62,107.54-287.3,247.67H1133.71c-19.46-99.21-106.88-174.07-211.79-174.07S729.59,901.76,710.13,1001H588.63C569.17,901.76,481.75,826.9,376.84,826.9,257.64,826.9,161,923.54,161,1042.74s96.64,215.85,215.84,215.85S592.68,1162,592.68,1042.74a216.62,216.62,0,0,0-3.86-40.78H709.94a216.62,216.62,0,0,0-3.86,40.78c0,119.21,96.63,215.85,215.84,215.85s215.84-96.64,215.84-215.85a217.45,217.45,0,0,0-3.86-40.78h127.22a292.26,292.26,0,0,0-3,41.78c0,160.41,130,290.44,290.44,290.44s290.44-130,290.44-290.44S1709,753.3,1548.56,753.3Z" transform="translate(-161 -753.3)"/>
</svg>
</div>
</div>
</div>
<div className="ad">
Advert
</div>
</div>
);
}
}
export default ProfileInfo;
+37
View File
@@ -0,0 +1,37 @@
import React from 'react';
import '../scss/Showcase.scss';
class Showcase extends React.Component {
render() {
return (
<main id="showcase">
<h1>
Fast, easy, simple. <br/>
Pexta for posts. <br/>
Make posts fast and easy. <br/>
</h1>
<div className="contact">
<svg className="facebook" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1668 1668">
<g>
<path className="cls-1" d="M1000,166c-460.58,0-834,373.42-834,834s373.42,834,834,834,834-373.42,834-834S1460.58,166,1000,166Zm215.59,833.89-136.67.11-.11,500.39H891.27V1000H766.17V827.57l125.1-.1-.21-101.54c0-140.74,38.15-226.33,203.81-226.33h138V672.14h-86.32c-64.53,0-67.65,24.08-67.65,69l-.21,86.32h155.12Z" transform="translate(-166 -166)"/>
</g>
</svg>
<svg className="instagram" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1818 1818">
<g>
<path d="M1174,1000a174,174,0,1,1-174-174A174,174,0,0,1,1174,1000Z" transform="translate(-91 -91)"/>
<path d="M1406.9,692.16a172.93,172.93,0,0,0-99.06-99.06c-18.4-7.14-46-15.64-96.92-18-55.05-2.51-71.55-3-210.92-3s-155.89.53-210.92,3c-50.89,2.33-78.54,10.83-96.92,18a173,173,0,0,0-99.07,99.06c-7.14,18.4-15.65,46-18,96.93-2.51,55-3,71.54-3,210.92s.54,155.88,3,210.93c2.31,50.89,10.82,78.52,18,96.91a172.78,172.78,0,0,0,99.06,99.06c18.39,7.16,46,15.66,96.93,18,55,2.51,71.52,3,210.91,3s155.9-.52,210.92-3c50.89-2.32,78.53-10.82,96.93-18a172.86,172.86,0,0,0,99.06-99.06c7.14-18.39,15.64-46,18-96.91,2.51-55,3-71.56,3-210.93s-.53-155.88-3-210.92C1422.56,738.2,1414.05,710.56,1406.9,692.16ZM1000,1268c-148,0-268-120-268-268s120-268,268-268,268,120,268,268S1148,1268,1000,1268Zm278.63-484a62.64,62.64,0,1,1,62.63-62.64A62.63,62.63,0,0,1,1278.63,784Z" transform="translate(-91 -91)"/>
<path d="M1000,91C498.05,91,91,498.05,91,1000s407.05,909,909,909,909-407,909-909S1502,91,1000,91Zm518.82,1124.2c-2.53,55.56-11.36,93.5-24.26,126.7a266.89,266.89,0,0,1-152.66,152.66c-33.19,12.9-71.14,21.72-126.69,24.26S1141.77,1522,1000,1522s-159.53-.61-215.21-3.14-93.5-11.36-126.69-24.26A266.84,266.84,0,0,1,505.46,1341.9c-12.9-33.19-21.74-71.14-24.26-126.69S478,1141.75,478,1000s.59-159.54,3.14-215.2,11.35-93.5,24.25-126.7A267,267,0,0,1,658.1,505.44c33.2-12.9,71.14-21.72,126.7-24.26S858.25,478,1000,478s159.54.61,215.2,3.16,93.5,11.34,126.7,24.23A266.95,266.95,0,0,1,1494.56,658.1c12.91,33.2,21.73,71.14,24.27,126.7S1522,858.25,1522,1000,1521.37,1159.54,1518.82,1215.2Z" transform="translate(-91 -91)"/>
</g>
</svg>
<svg className="mail" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1867.98 1868">
<g>
<path d="M1000,43C484.16,43,66,461.17,66,977s418.16,934,934,934,934-418.21,934-934S1515.79,43,1000,43Zm0,328.06,552.7,344.65H447.3Zm559.59,895h-.06a100.07,100.07,0,0,1-100.08,100.08H540.54a100.07,100.07,0,0,1-100.08-100.08V737.64A99.73,99.73,0,0,1,442,720.52l528.08,329.29c.65.41,1.34.68,2,1s1.41.76,2.12,1.12a55.93,55.93,0,0,0,11.5,4.49c.41.11.81.16,1.22.25a56.66,56.66,0,0,0,13,1.65h.09a55.67,55.67,0,0,0,13-1.65c.4-.1.8-.14,1.21-.25a56.6,56.6,0,0,0,11.5-4.49c.71-.36,1.42-.73,2.12-1.12s1.35-.64,2-1L1558,720.52a99.63,99.63,0,0,1,1.57,17.12v528.43Z" transform="translate(-66 -43)"/>
</g>
</svg>
</div>
</main>
);
}
}
export default Showcase;
+53
View File
@@ -0,0 +1,53 @@
import React from 'react';
import { Link } from 'react-router-dom';
import '../scss/SignUp.scss';
class SignUp extends React.Component {
close = () => {
this.props.close();
}
render() {
return(
<div id="sign-up-container" style={{display: this.props.display ? "grid" : "none"}}>
<div id="sign-up">
<svg className="close-sign-up" xmlns="http://www.w3.org/2000/svg" x="0px" y="0px" width="438.533px" height="438.533px" viewBox="0 0 438.533 438.533" onClick={this.close}>
<defs>
<linearGradient id="linear-gradient" x1="275.62" y1="495.12" x2="71.68" y2="291.18" gradientUnits="userSpaceOnUse">
<stop offset="0" stopColor="#eacc56"/>
<stop offset="1" stopColor="#ee64d1"/>
</linearGradient>
</defs>
<g>
<path d="M409.133,109.203c-19.608-33.592-46.205-60.189-79.798-79.796C295.736,9.801,259.058,0,219.273,0
c-39.781,0-76.47,9.801-110.063,29.407c-33.595,19.604-60.192,46.201-79.8,79.796C9.801,142.8,0,179.489,0,219.267
c0,39.78,9.804,76.463,29.407,110.062c19.607,33.592,46.204,60.189,79.799,79.798c33.597,19.605,70.283,29.407,110.063,29.407
s76.47-9.802,110.065-29.407c33.593-19.602,60.189-46.206,79.795-79.798c19.603-33.596,29.403-70.284,29.403-110.062
C438.533,179.485,428.732,142.795,409.133,109.203z M322.621,270.939c3.617,3.613,5.428,7.905,5.428,12.854
c0,5.133-1.811,9.514-5.428,13.127l-25.693,25.701c-3.614,3.613-7.994,5.42-13.135,5.42c-4.948,0-9.236-1.807-12.847-5.42
l-51.676-51.682l-51.678,51.682c-3.616,3.613-7.898,5.42-12.847,5.42c-5.14,0-9.517-1.807-13.134-5.42l-25.697-25.701
c-3.616-3.613-5.424-7.994-5.424-13.127c0-4.948,1.809-9.24,5.424-12.854l51.678-51.673l-51.678-51.678
c-3.616-3.612-5.424-7.898-5.424-12.847c0-5.14,1.809-9.517,5.424-13.134l25.697-25.693c3.617-3.616,7.994-5.424,13.134-5.424
c4.949,0,9.231,1.809,12.847,5.424l51.678,51.674l51.676-51.674c3.61-3.616,7.898-5.424,12.847-5.424
c5.141,0,9.521,1.809,13.135,5.424l25.693,25.693c3.617,3.617,5.428,7.994,5.428,13.134c0,4.948-1.811,9.235-5.428,12.847
l-51.675,51.678L322.621,270.939z"/>
</g>
</svg>
<h2>Sign Up</h2>
<form>
<input type="text" placeholder="Username" />
<input type="email" placeholder="Email" />
<input type="email" placeholder="Confirm Email" />
<input type="password" placeholder="Password" />
<input type="password" placeholder="Confirm Password" />
<Link className="route-link" to="/home">
<button>Join</button>
</Link>
</form>
</div>
</div>
);
}
}
export default SignUp;
+91
View File
@@ -0,0 +1,91 @@
import React from 'react';
import '../scss/UserProfile.scss';
class UserProfile extends React.Component {
close = () => {
this.props.close();
}
render() {
return(
<div id="user-profile-container" style={{display: this.props.display ? "grid" : "none"}}>
<div id="user-profile">
<svg className="close-user-profile" xmlns="http://www.w3.org/2000/svg" x="0px" y="0px" width="438.533px" height="438.533px" viewBox="0 0 438.533 438.533" onClick={this.close}>
<defs>
<linearGradient id="linear-gradient" x1="275.62" y1="495.12" x2="71.68" y2="291.18" gradientUnits="userSpaceOnUse">
<stop offset="0" stopColor="#eacc56"/>
<stop offset="1" stopColor="#ee64d1"/>
</linearGradient>
</defs>
<g>
<path d="M409.133,109.203c-19.608-33.592-46.205-60.189-79.798-79.796C295.736,9.801,259.058,0,219.273,0
c-39.781,0-76.47,9.801-110.063,29.407c-33.595,19.604-60.192,46.201-79.8,79.796C9.801,142.8,0,179.489,0,219.267
c0,39.78,9.804,76.463,29.407,110.062c19.607,33.592,46.204,60.189,79.799,79.798c33.597,19.605,70.283,29.407,110.063,29.407
s76.47-9.802,110.065-29.407c33.593-19.602,60.189-46.206,79.795-79.798c19.603-33.596,29.403-70.284,29.403-110.062
C438.533,179.485,428.732,142.795,409.133,109.203z M322.621,270.939c3.617,3.613,5.428,7.905,5.428,12.854
c0,5.133-1.811,9.514-5.428,13.127l-25.693,25.701c-3.614,3.613-7.994,5.42-13.135,5.42c-4.948,0-9.236-1.807-12.847-5.42
l-51.676-51.682l-51.678,51.682c-3.616,3.613-7.898,5.42-12.847,5.42c-5.14,0-9.517-1.807-13.134-5.42l-25.697-25.701
c-3.616-3.613-5.424-7.994-5.424-13.127c0-4.948,1.809-9.24,5.424-12.854l51.678-51.673l-51.678-51.678
c-3.616-3.612-5.424-7.898-5.424-12.847c0-5.14,1.809-9.517,5.424-13.134l25.697-25.693c3.617-3.616,7.994-5.424,13.134-5.424
c4.949,0,9.231,1.809,12.847,5.424l51.678,51.674l51.676-51.674c3.61-3.616,7.898-5.424,12.847-5.424
c5.141,0,9.521,1.809,13.135,5.424l25.693,25.693c3.617,3.617,5.428,7.994,5.428,13.134c0,4.948-1.811,9.235-5.428,12.847
l-51.675,51.678L322.621,270.939z"/>
</g>
</svg>
<div className="user">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1855 1855">
<defs>
<linearGradient id="linear-gradient" x1="-356" y1="927.47" x2="2276" y2="927.47" gradientUnits="userSpaceOnUse">
<stop offset="0" stopColor="#eacc56"/>
<stop offset="1" stopColor="#ee64d1"/>
</linearGradient>
</defs>
<path d="M1927,1000.5C1927,489.09,1510.91,73,999.5,73S72,489.09,72,1000.5c0,270.12,116.16,513.6,301.05,683.25l-.88.77,30.09,25.37c1.95,1.65,4.08,3,6,4.62,16,13.25,32.55,25.83,49.42,38,5.46,3.94,10.92,7.89,16.49,11.73q27,18.63,55.38,35.35c4.11,2.43,8.26,4.79,12.41,7.15,20.67,11.77,41.79,22.87,63.41,33,1.58.75,3.2,1.42,4.79,2.16a919,919,0,0,0,224.32,71l6.2,1.11c24.42,4.22,49.11,7.59,74.1,9.85,3,.27,6.07.44,9.14.71,24.89,2,50,3.37,75.55,3.37,25.26,0,50.19-1.32,74.94-3.31,3.14-.27,6.28-.43,9.41-.7q37.19-3.39,73.46-9.68c2.09-.37,4.22-.75,6.31-1.15a919.21,919.21,0,0,0,221.15-69.31c2.56-1.18,5.16-2.29,7.72-3.51q31.21-14.67,61.08-31.57c5-2.8,9.88-5.63,14.81-8.53,18.14-10.69,36-21.85,53.32-33.73,6.24-4.25,12.34-8.73,18.52-13.18,14.8-10.66,29.34-21.66,43.47-33.16,3.14-2.53,6.51-4.72,9.58-7.32l30.86-25.76-.91-.78C1809.73,1516.59,1927,1272,1927,1000.5Zm-1787.55,0c0-474.24,385.81-860,860.05-860s860.05,385.81,860.05,860.05c0,255.55-112.15,485.3-289.69,642.94a253.6,253.6,0,0,0-30.12-18.11l-285.57-142.77a74.75,74.75,0,0,1-41.55-67.21v-99.74c6.61-8.16,13.59-17.4,20.81-27.55a687.14,687.14,0,0,0,88.23-172.79A122.38,122.38,0,0,0,1392,1004.34V884.78a122.73,122.73,0,0,0-29.91-79.9V647.48c1.75-17.54,8-116.3-63.51-197.78-62.16-71-162.77-106.88-299.06-106.88S762.6,378.74,700.44,449.67C629,531.15,635.18,630,636.93,647.44V804.85A122.87,122.87,0,0,0,607,884.75v119.56a122.72,122.72,0,0,0,45.19,95.15c27.32,107,83.54,188,104.32,215.48v97.61a75.23,75.23,0,0,1-39.19,66L450.66,1624.05a244.6,244.6,0,0,0-25.37,16C250,1482.53,139.45,1254.2,139.45,1000.5Z" transform="translate(-72 -73)"/>
</svg>
<h3>Username</h3>
</div>
<div className="user-posts">
<h3>Posts</h3>
<div className="posts">
<div className="post">
<div className="info">
<h4>Post 1</h4>
<p>Lorem ipsum dolor sit amet consectetur</p>
</div>
<div className="stats">
<div className="likes">?? Likes</div>
<div className="dislikes">?? Dislikes</div>
<div className="comments">?? Comments</div>
</div>
</div>
<div className="post">
<div className="info">
<h4>Post 2</h4>
<p>Lorem ipsum dolor sit amet consectetur</p>
</div>
<div className="stats">
<div className="likes">?? Likes</div>
<div className="dislikes">?? Dislikes</div>
<div className="comments">?? Comments</div>
</div>
</div>
<div className="post">
<div className="info">
<h4>Post 3</h4>
<p>Lorem ipsum dolor sit amet consectetur</p>
</div>
<div className="stats">
<div className="likes">?? Likes</div>
<div className="dislikes">?? Dislikes</div>
<div className="comments">?? Comments</div>
</div>
</div>
</div>
</div>
</div>
</div>
);
}
}
export default UserProfile;
+23
View File
@@ -0,0 +1,23 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 1163.5 136">
<defs>
<style>
.cls-1 {
fill: url(#linear-gradient);
}
.cls-2 {
fill: url(#linear-gradient-2);
}
</style>
<linearGradient id="linear-gradient" x1="1204.93" y1="810.25" x2="-37.07" y2="808.25" gradientUnits="userSpaceOnUse">
<stop offset="0" stop-color="#eacc56"/>
<stop offset="1" stop-color="#ee64d1"/>
</linearGradient>
<linearGradient id="linear-gradient-2" x1="1205" y1="766.82" x2="-37" y2="764.82" xlink:href="#linear-gradient"/>
</defs>
<title>page 2 wave</title>
<g>
<path class="cls-1" d="M214,782.5c-83.1,3-152.76,22.34-214,52H456.5C368.08,801.5,286.08,781.77,214,782.5Z" transform="translate(0 -698.5)"/>
<path class="cls-2" d="M1072.5,736c-85.67-.62-158.27,41.05-226,98.48h317v-136C1150.79,717.78,1133.67,736,1072.5,736Z" transform="translate(0 -698.5)"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1001 B

+31
View File
@@ -0,0 +1,31 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1163.5 834.5">
<defs>
<style>
svg path {
fill: url(#linear-gradient);
box-shadow: ;
d: path("M756,1080l1163.5-.5v-834c-1.91,92.4-58.33,172.83-124.5,199.5-67,27-131,81-180,190-56.5,136.5-231,170-403.5,191.5S888,893,756,1080Z");
animation: morph 5s alternate infinite linear;
}
@keyframes morph {
from {
d: path("M756,1080l1163.5-.5v-834c-1.91,92.4-58.33,172.83-124.5,199.5-67,27-131,81-180,190-56.5,136.5-231,170-403.5,191.5S888,893,756,1080Z");
}
to {
d: path("M756,1080l1163.5-.5v-834C1900,264,1831,314,1808,386c-29,79,31,219-193,249-153,9-270,14-403.5,191.5S1139,998,756,1080Z");
}
}
</style>
<linearGradient id="linear-gradient" x1="1733.54" y1="394.22" x2="1141.12" y2="1420.33" gradientUnits="userSpaceOnUse">
<stop offset="0%" stop-color="#eacc56">
<animate attributeName="stop-color" values="#eacc56; #ee64d1; #eacc56" dur="5s" repeatCount="indefinite"></animate>
</stop>
<stop offset="100%" stop-color="#ee64d1">
<animate attributeName="stop-color" values="#ee64d1; #eacc56; #ee64d1" dur="5s" repeatCount="indefinite"></animate>
</stop>
</linearGradient>
</defs>
<path d="M756,1080l1163.5-.5v-834c-1.91,92.4-58.33,172.83-124.5,199.5-67,27-131,81-180,190-56.5,136.5-231,170-403.5,191.5S888,893,756,1080Z" transform="translate(-756 -245.5)" />
</svg>

After

Width:  |  Height:  |  Size: 1.6 KiB

+23
View File
@@ -0,0 +1,23 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 1163.5 87">
<defs>
<style>
.cls-1 {
fill: url(#linear-gradient);
}
.cls-2 {
fill: url(#linear-gradient-2);
}
</style>
<linearGradient id="linear-gradient" x1="-94.64" y1="812.53" x2="1573.28" y2="676.04" gradientUnits="userSpaceOnUse">
<stop offset="0" stop-color="#eacc56"/>
<stop offset="1" stop-color="#ee64d1"/>
</linearGradient>
<linearGradient id="linear-gradient-2" x1="-87.93" y1="894.49" x2="1579.98" y2="757.99" xlink:href="#linear-gradient"/>
</defs>
<title>page wave</title>
<g>
<path class="cls-1" d="M90.34,783.36C74.5,741.5,14.51,765.47,0,747.5v87H337C264.06,783.85,120.67,863.49,90.34,783.36Z" transform="translate(0 -747.5)"/>
<path class="cls-2" d="M951.5,767c-71.82,6.2-172.37,17.17-249.83,67.5H1163.5V786C1029.5,785.5,1034.5,762,951.5,767Z" transform="translate(0 -747.5)"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1018 B

+5
View File
@@ -0,0 +1,5 @@
import React from 'react';
import ReactDOM from 'react-dom';
import App from './App';
ReactDOM.render(<App />, document.getElementById('root'));
+97
View File
@@ -0,0 +1,97 @@
@import './variables';
#add-post-container {
position: fixed;
top: 0%;
left: 0%;
z-index: 3;
height: 100vh;
width: 100%;
background: #70707040;
justify-items: center;
align-items: center;
#add-post {
padding: 1rem;
border-radius: 15px;
box-shadow: 0px 0px 15px #707070;
background: white;
display: grid;
justify-items: center;
grid-row-gap: .5rem;
.close-add-post {
cursor: pointer;
width: 1rem;
height: 1rem;
// padding: .5rem;
justify-self: flex-end;
path {
fill: url(#linear-gradient);
}
}
h2 {
font-size: 1.5rem;
background: linear-gradient(#eacc56, #ee64d1);
background-clip: text;
-webkit-text-fill-color: transparent;
}
form {
width: 100%;
display: grid;
justify-items: center;
align-items: center;
grid-row-gap: .5rem;
input, textarea {
font-family: Montserrat;
width: 100%;
padding: .5rem;
border: none;
border-bottom: 1px solid #ee64d1;
&:focus {
outline: none;
}
}
}
}
}
@media #{$bigScreens} {
#add-post-container {
#add-post {
width: 70%;
padding: .5rem;
height: auto;
h2 {
font-size: 2rem;
}
.close-add-post {
width: 2.5rem;
height: 2.5rem;
padding: .5rem;
}
form {
grid-row-gap: 1rem;
input, textarea {
font-size: 1rem;
}
button {
padding: 1rem 1.5rem;
font-size: 1rem;
justify-self: flex-end;
}
}
}
}
}
+119
View File
@@ -0,0 +1,119 @@
@import './variables';
#desktop-profile-settings-container {
position: fixed;
top: 0%;
left: 0%;
z-index: 3;
height: 100vh;
width: 100%;
background: #70707040;
justify-items: center;
align-items: center;
#desktop-profile-settings {
width: auto;
padding: .8rem;
height: auto;
border-radius: 15px;
box-shadow: 0px 0px 15px #707070;
background: white;
display: grid;
grid-template-rows: auto 1fr;
grid-row-gap: .5rem;
& > div {
display: grid;
grid-template-columns: repeat(2, auto);
}
.close-profile-settings {
cursor: pointer;
width: 1.5rem;
height: 1.5rem;
justify-self: flex-end;
path {
fill: url(#linear-gradient);
}
}
h2 {
font-size: 1.5rem;
background: linear-gradient(#eacc56, #ee64d1);
background-clip: text;
-webkit-text-fill-color: transparent;
justify-self: flex-start;
}
.settings {
display: grid;
grid-template-columns: repeat(4, auto);
grid-gap: .5rem;
@media only screen and (max-width: 1440px) {
grid-template-columns: repeat(2, auto);
}
h3 {
font-size: 1rem;
color: #7D7D7D;
}
input[type="text"], input[type="email"], input[type="password"] {
padding: .5rem;
border: none;
border-bottom: 1px solid #ee64d1;
&:focus {
outline: none;
}
}
button:hover {
transform: none;
background: linear-gradient(60deg, #eacc56, #ee64d1);
}
input[type="file"]::-webkit-file-upload-button {
cursor: pointer;
outline: none;
border: none;
color: #7D7D7D;
background: none;
width: 100%;
}
.change-photo, .change-password, .change-email, .change-username {
padding: .5rem;
border-radius: 8px;
border: 1px solid #CFCBCB;
display: grid;
grid-template-rows: repeat(3, auto);
justify-items: flex-start;
align-items: center;
justify-items: center;
grid-row-gap: .5rem;
}
form {
display: grid;
justify-items: center;
align-items: center;
}
.change-photo {
grid-template-rows: repeat(4, auto);
svg {
width: 5rem;
height: 5rem;
path {
fill: url(#linear-gradient);
}
}
}
}
}
}
+61
View File
@@ -0,0 +1,61 @@
@import './variables';
footer {
height: auto;
background-color: #4e4e4e;
color: white;
font-size: 11px;
.container {
display: grid;
grid-template-columns: repeat(3, 1fr);
grid-template-rows: auto;
grid-column-gap: .1rem;
align-items: center;
justify-items: center;
}
.footer-logo {
fill: rgba(255,255,255,.75);
width: 5.5rem;
height: 5.5rem;
justify-self: flex-start;
}
.copyright {
justify-self: center;
text-align: center;
}
.footer-links {
display: grid;
grid-template-rows: repeat(2, auto);
text-align: right;
span {
cursor: pointer;
&:hover {
color: black;
font-weight: bold;
}
}
}
}
@media #{$bigScreens} {
footer {
font-size: 1rem;
.container {
grid-column-gap: 1rem;
}
.footer-links {
justify-self: flex-end;
grid-template-rows: none;
grid-template-columns: repeat(2, auto);
grid-column-gap: .5rem;
}
}
}
+103
View File
@@ -0,0 +1,103 @@
@import './variables';
#home-nav {
height: 10vh;
padding: .5rem 0rem;
display: flex;
flex-direction: row;
align-items: center;
justify-content: space-between;
.nav-logo {
width: 7rem;
height: 7rem;
.cls-1 {
fill: url(#linear-gradient);
}
}
.btn-gradient {
display: none;
@media #{$bigScreens} {
display: inline;
}
}
.mobile-menu-btn {
cursor: pointer;
width: 2rem;
height: 2rem;
.cls-1 {
fill: url(#linear-gradient);
}
@media #{$bigScreens} {
display: none;
}
}
.mobile-menu-overlay {
background: #70707040;
height: 100vh;
width: 100%;
position: fixed;
top: 0%;
left: 0%;
opacity: 0;
z-index: 1;
display: none;
}
.mobile-menu {
background: linear-gradient(120deg, #ee64d1, #eacc56);
height: 100vh;
width: 50%;
position: fixed;
top: 0%;
left: 100%;
z-index: 2;
display: none;
.current-user {
padding-top: 2rem;
display: grid;
grid-template-rows: repeat(2, auto);
justify-items: center;
h3 {
font-size: 1.7rem;
color: white;
}
.avatar {
width: 6rem;
height: 6rem;
.cls-1 {
fill: white;
}
}
}
.small-btns {
padding-top: 2.5rem;
display: grid;
grid-template-rows: repeat(2, auto);
justify-content: center;
text-align: center;
grid-row-gap: 3rem;
font-size: 1.3rem;
}
}
.close-mobile-menu-btn {
cursor: pointer;
width: 2.5rem;
height: 2.5rem;
padding: .5rem;
fill: white;
}
}
+52
View File
@@ -0,0 +1,52 @@
@import './variables';
#home-page {
background: 100% 100% / contain no-repeat url(../img/home-page-wave.svg) !important;
}
.btn-mobile {
cursor: pointer;
color: white;
display: block;
font-size: 1.5rem;
text-decoration: none;
}
.btn {
cursor: pointer;
color: $mainTextColor;
background-color: #fff;
font-weight: bold;
text-decoration: none;
text-align: center;
border: none;
border-radius: .3rem;
font-size: 1.1rem;
padding: .5rem 1rem;
}
.btn-gradient {
background: linear-gradient(60deg, #eacc56, #ee64d1);
transition: all .3s ease-in-out;
color: white !important;
&:hover {
transform: scale(1.05);
background: linear-gradient(150deg, #eacc56, #ee64d1);
}
}
main:not(#showcase) {
height: auto;
padding: 2rem 0rem;
padding-top: 0;
@media #{$bigScreens} {
height: auto;
padding: 2rem 0rem 7rem 0rem;
padding-top: none;
display: grid;
grid-template-columns: 1fr auto;
grid-column-gap: 2rem;
}
}
+91
View File
@@ -0,0 +1,91 @@
@import './variables';
#landing-nav {
height: 10vh;
padding: 1rem 0rem;
display: flex;
flex-direction: row;
align-items: center;
justify-content: space-between;
.nav-logo {
width: 7rem;
height: 7rem;
.cls-1 {
fill: url(#linear-gradient);
}
}
.big-btns {
display: none;
}
.mobile-menu-btn {
cursor: pointer;
width: 2rem;
height: 2rem;
.cls-1 {
fill: url(#linear-gradient);
}
}
.mobile-menu-overlay {
background: #70707040;
height: 100vh;
width: 100%;
position: fixed;
top: 0%;
left: 0%;
opacity: 0;
z-index: 1;
display: none;
}
.mobile-menu {
background: linear-gradient(120deg, #ee64d1, #eacc56);
height: 100vh;
width: 50%;
position: fixed;
top: 0%;
left: 100%;
z-index: 2;
display: none;
.small-btns {
padding-top: 10rem;
display: grid;
grid-template-rows: repeat(2, auto);
justify-content: center;
text-align: center;
grid-row-gap: 3rem;
}
#sign-up-btn {
font-size: 2.2rem;
}
}
.close-mobile-menu-btn {
cursor: pointer;
width: 2.5rem;
height: 2.5rem;
padding: .5rem;
fill: white;
}
}
@media only screen and (min-width: 768px) and (orientation: landscape) {
#landing-nav {
padding: 2.5rem 0rem;
.big-btns {
display: block;
}
.mobile-menu-btn {
display: none;
}
}
}
+48
View File
@@ -0,0 +1,48 @@
@import './variables';
#landing-page {
height: 100vh;
background: 100% 100% / contain no-repeat url(../img/landing-page-wave.svg) !important;
}
.btn {
cursor: pointer;
color: $mainTextColor;
background-color: #fff;
font-weight: bold;
text-decoration: none;
text-align: center;
border: none;
border-radius: .3rem;
font-size: 1.1rem;
margin: .5rem 1rem;
padding: .5rem 1rem;
}
.btn-mobile {
cursor: pointer;
color: white;
display: block;
font-size: 2rem;
text-decoration: none;
}
.btn-gradient {
background: linear-gradient(60deg, #eacc56, #ee64d1);
transition: all .3s ease-in-out;
color: white !important;
&:hover {
transform: scale(1.05);
background: linear-gradient(150deg, #eacc56, #ee64d1);
}
}
.btn-white {
background: white;
transition: all .3s ease-in-out;
&:hover {
transform: scale(1.05);
}
}
+93
View File
@@ -0,0 +1,93 @@
@import './variables';
#log-in-container {
position: fixed;
top: 0%;
left: 0%;
z-index: 3;
height: 100vh;
width: 100%;
background: #70707040;
justify-items: center;
align-items: center;
#log-in {
border-radius: 15px;
box-shadow: 0px 0px 15px #707070;
background: white;
display: grid;
justify-items: center;
grid-row-gap: .5rem;
.close-log-in {
cursor: pointer;
width: 2.5rem;
height: 2.5rem;
padding: .5rem;
justify-self: flex-end;
path {
fill: url(#linear-gradient);
}
}
h2 {
font-size: 1.5rem;
background: linear-gradient(#eacc56, #ee64d1);
background-clip: text;
-webkit-text-fill-color: transparent;
}
form {
padding: 2rem;
display: grid;
justify-items: center;
align-items: center;
grid-row-gap: .2rem;
input {
padding: .5rem;
border: none;
border-bottom: 1px solid #ee64d1;
&:focus {
outline: none;
}
}
button {
cursor: pointer;
padding: .5rem 1rem;
border: none;
border-radius: 4px;
margin-top: 1rem;
color: white;
background: linear-gradient(60deg, #eacc56, #ee64d1);
}
}
}
}
@media only screen and (min-width: 768px) and (orientation: landscape) {
#log-in {
position: absolute;
top: 12%;
right: 7%;
}
h2 {
font-size: 2.5;
}
form {
padding: 2rem 4rem;
input {
padding: 1rem;
}
button {
padding: 1rem 1.5rem;
}
}
}
+134
View File
@@ -0,0 +1,134 @@
@import './variables';
#mobile-profile-settings-container {
position: fixed;
top: 0%;
left: 0%;
z-index: 3;
height: 100vh;
width: 100%;
background: #70707040;
justify-items: center;
align-items: center;
#mobile-profile-settings {
width: 70%;
padding: 2rem 1rem;
height: auto;
border-radius: 15px;
box-shadow: 0px 0px 15px #707070;
background: white;
grid-row-gap: 1.5rem;
& > div {
display: grid;
grid-template-columns: repeat(2, auto);
.close-profile-settings {
cursor: pointer;
width: 1rem;
height: 1rem;
justify-self: flex-end;
path {
fill: url(#linear-gradient);
}
}
h2 {
font-size: 1.2rem;
background: linear-gradient(#eacc56, #ee64d1);
background-clip: text;
-webkit-text-fill-color: transparent;
justify-self: flex-start;
}
}
h3 {
cursor: pointer;
justify-self: center;
font-size: 1rem;
color: #7D7D7D;
}
}
.change-photo, .change-password, .change-email, .change-username {
grid-template-rows: repeat(2, auto);
grid-row-gap: 1rem;
align-items: center;
width: 70%;
padding: 2rem 1rem;
height: auto;
border-radius: 15px;
box-shadow: 0px 0px 15px #707070;
background: white;
display: none;
.settings-return {
cursor: pointer;
display: inline-block;
justify-self: flex-start;
h2 {
font-size: 1.3rem;
background: linear-gradient(#eacc56, #ee64d1);
background-clip: text;
-webkit-text-fill-color: transparent;
justify-self: flex-start;
}
}
.settings {
justify-self: center;
display: grid;
grid-template-rows: auto;
grid-row-gap: 1rem;
align-items: center;
justify-items: center;
h3 {
font-size: 1rem;
color: #7d7d7d;
}
svg {
width: 5rem;
height: 5rem;
path {
fill: url(#linear-gradient);
}
}
form {
display: grid;
justify-items: center;
align-items: center;
grid-row-gap: .5rem;
}
input[type="file"] {
width: 80%;
&::-webkit-file-upload-button {
cursor: pointer;
outline: none;
border: none;
color: #7D7D7D;
background: none;
}
}
input[type="text"], input[type="email"], input[type="password"] {
padding: .1rem;
border: none;
border-bottom: 1px solid #ee64d1;
&:focus {
outline: none;
}
}
}
}
}
+212
View File
@@ -0,0 +1,212 @@
@import './variables';
#post {
padding: .5rem 0rem;
display: grid;
grid-template-rows: repeat(2, auto);
grid-row-gap: .5rem;
@media #{$bigScreens} {
padding: 0rem;
border-radius: 8px;
border: 1px solid #CFCBCB;
box-shadow: 0px 0px 5px #17171777;
}
.info {
display: grid;
grid-template-rows: repeat(2, auto);
grid-row-gap: .5rem;
@media #{$bigScreens} {
padding: 1rem;
grid-row-gap: 1rem;
}
.data {
display: grid;
grid-template-rows: auto 1fr;
grid-row-gap: .5rem;
h2 {
font-size: 1.2rem;
color: #171717;
@media #{$bigScreens} {
font-size: 1.5rem;
}
}
p {
height: auto;
align-self: center;
font-size: 1rem;
line-height: 1.2;
@media #{$bigScreens} {
font-size: 1.2rem;
}
}
}
.stats {
display: grid;
grid-template-columns: repeat(2, 1fr);
.user {
cursor: pointer;
display: flex;
flex-direction: row;
justify-items: center;
align-items: center;
svg {
width: 2rem;
height: 2rem;
path {
fill: url(#linear-gradient);
}
}
span {
font-size: 1rem;
margin-left: .3rem;
@media #{$bigScreens} {
font-size: 1.2rem;
}
}
}
.stats {
justify-self: flex-end;
display: grid;
grid-template-columns: repeat(3, 1fr);
align-items: center;
grid-column-gap: .5rem;
.likes, .dislikes, .comments {
display: flex;
flex-direction: row;
align-items: center;
svg {
width: 1rem;
height: 1rem;
margin-right: .2rem;
@media #{$bigScreens} {
width: 1.5rem;
height: 1.5rem;
}
.cls-1 {
fill: #6A6A6A;
}
}
span {
margin-right: .2rem;
}
}
}
}
}
.other-users-comments {
background: linear-gradient(60deg, rgba(238, 119, 184, 0.2), rgba(235, 170, 126, 0.2));
border-radius: 8px;
display: grid;
grid-template-rows: repeat(3, auto);
grid-row-gap: 1rem;
@media #{$bigScreens} {
border-radius: 0px;
}
h2 {
display: inline-block;
padding: .5rem 0rem 0rem .5rem;
font-size: 1rem;
color: #6A6A6A;
@media #{$bigScreens} {
padding: 1rem 0rem 0rem 1rem;
}
}
.other-comments {
padding: 0rem 1.5rem;
display: grid;
align-items: center;
grid-row-gap: 1rem;
.comment {
display: grid;
grid-template-columns: auto 1fr;
align-items: center;
grid-column-gap: 1rem;
.other-user {
cursor: pointer;
display: flex;
flex-direction: row;
justify-items: center;
align-items: center;
svg {
width: 2rem;
height: 2rem;
path {
fill: url(#linear-gradient);
}
}
span {
font-size: .8rem;
margin-left: .3rem;
@media #{$bigScreens} {
font-size: 1rem;
}
}
}
p {
padding: .5rem;
height: auto;
font-size: .5rem;
line-height: 1.2;
border: 1px solid #B8B3B3;
border-radius: 6px;
@media #{$bigScreens} {
font-size: 1rem;
}
}
}
}
.add-comment {
padding: 0rem 1.5rem;
input {
width: 100%;
padding: .5rem;
border: 1px solid #B8B3B3;
border-radius: 6px;
background: none;
justify-self: center;
margin-bottom: 1rem;
outline: none;
@media #{$bigScreens} {
padding: .7rem;
}
}
}
}
}
+103
View File
@@ -0,0 +1,103 @@
@import './variables';
#post-nav {
height: 10vh;
padding: .5rem 0rem;
display: flex;
flex-direction: row;
align-items: center;
justify-content: space-between;
.nav-logo {
width: 7rem;
height: 7rem;
.cls-1 {
fill: url(#linear-gradient);
}
}
.btn-gradient {
display: none;
@media #{$bigScreens} {
display: inline;
}
}
.mobile-menu-btn {
cursor: pointer;
width: 2rem;
height: 2rem;
.cls-1 {
fill: url(#linear-gradient);
}
@media #{$bigScreens} {
display: none;
}
}
.mobile-menu-overlay {
background: #70707040;
height: 100vh;
width: 100%;
position: fixed;
top: 0%;
left: 0%;
opacity: 0;
z-index: 1;
display: none;
}
.mobile-menu {
background: linear-gradient(120deg, #ee64d1, #eacc56);
height: 100vh;
width: 50%;
position: fixed;
top: 0%;
left: 100%;
z-index: 2;
display: none;
.current-user {
padding-top: 2rem;
display: grid;
grid-template-rows: repeat(2, auto);
justify-items: center;
h3 {
font-size: 1.7rem;
color: white;
}
.avatar {
width: 6rem;
height: 6rem;
.cls-1 {
fill: white;
}
}
}
.small-btns {
padding-top: 2.5rem;
display: grid;
grid-template-rows: repeat(2, auto);
justify-content: center;
text-align: center;
grid-row-gap: 3rem;
font-size: 1.3rem;
}
}
.close-mobile-menu-btn {
cursor: pointer;
width: 2.5rem;
height: 2.5rem;
padding: .5rem;
fill: white;
}
}
+52
View File
@@ -0,0 +1,52 @@
@import './variables';
#post-page {
background: 100% 100% / contain no-repeat url(../img/post-page-wave.svg) !important;
}
.btn-mobile {
cursor: pointer;
color: white;
display: block;
font-size: 1.5rem;
text-decoration: none;
}
.btn {
cursor: pointer;
color: $mainTextColor;
background-color: #fff;
font-weight: bold;
text-decoration: none;
text-align: center;
border: none;
border-radius: .3rem;
font-size: 1.1rem;
padding: .5rem 1rem;
}
.btn-gradient {
background: linear-gradient(60deg, #eacc56, #ee64d1);
transition: all .3s ease-in-out;
color: white !important;
&:hover {
transform: scale(1.05);
background: linear-gradient(150deg, #eacc56, #ee64d1);
}
}
main:not(#showcase) {
height: auto;
padding: 2rem 0rem;
padding-top: 0;
@media #{$bigScreens} {
height: auto;
padding: 1rem 0rem 7rem 0rem;
padding-top: none;
display: grid;
grid-template-columns: 1fr auto;
grid-column-gap: 2rem;
}
}
+148
View File
@@ -0,0 +1,148 @@
@import './variables';
#posts {
display: grid;
grid-template-rows: auto 1fr;
grid-row-gap: 1.5rem;
@media #{$bigScreens} {
background: white;
border-radius: 8px;
border: 1px solid #CFCBCB;
box-shadow: 0px 0px 5px #17171777;
padding: 2rem;
grid-row-gap: 1rem;
}
#posts-filter {
font-size: 1rem;
display: grid;
grid-template-columns: repeat(3, 1fr);
justify-items: center;
align-items: center;
button {
cursor: pointer;
}
.active {
color: #EE72BF;
}
}
#posts-container {
display: grid;
grid-template-rows: auto;
grid-row-gap: 1rem;
.post {
background: white;
border-radius: 8px;
border: 1px solid #CFCBCB;
box-shadow: 0px 0px 5px #17171777;
@media #{$bigScreens} {
display: grid;
grid-template-columns: 1fr .3fr;
}
.info {
padding: .5rem 1rem;
display: grid;
grid-template-columns: 1fr auto;
align-items: center;
@media #{$bigScreens} {
padding: 1rem;
grid-template-columns: none;
grid-template-rows: 1fr auto;
grid-row-gap: 1rem;
}
.data {
justify-self: flex-start;
display: grid;
grid-template-rows: repeat(3, auto);
grid-row-gap: .1rem;
@media #{$bigScreens} {
grid-row-gap: .5rem;
}
h2 {
display: inline-block;
cursor: pointer;
font-weight: bold;
font-size: 1rem;
@media #{$bigScreens} {
font-size: 1.5rem;
}
}
}
.stats {
justify-self: flex-end;
@media #{$bigScreens} {
justify-self: flex-start;
display: grid;
grid-template-columns: repeat(3, 1fr);
grid-column-gap: 1rem;
}
}
}
.interaction {
padding: .2rem .5rem;
border-radius: 0px 0px 8px 8px;
background: #E3E3E3;
display: grid;
grid-template-columns: repeat(3, 1fr);
align-items: center;
justify-items: center;
@media #{$bigScreens} {
padding: .5rem;
border-radius: 0px 8px 8px 0px;
grid-template-columns: none;
grid-template-rows: repeat(3, 1fr);
}
.like, .dislike, .comment {
width: 100%;
height: 100%;
padding: .5rem 1rem;
cursor: pointer;
display: flex;
flex-direction: row;
align-items: center;
&:hover {
background: rgb(190, 189, 189);
border-radius: 8px;
.cls-1 {
fill: rgb(80, 78, 78);
}
}
svg {
width: 1rem;
height: 1rem;
margin-right: .2rem;
@media #{$bigScreens} {
width: 1.5rem;
height: 1.5rem;
}
.cls-1 {
fill: #6A6A6A;
}
}
}
}
}
}
}
+114
View File
@@ -0,0 +1,114 @@
@import './variables';
#profile-info {
display: none;
@media #{$bigScreens} {
display: grid;
grid-template-rows: repeat(2, auto) 1fr;
grid-row-gap: 1.5rem;
}
.profile-stats, .contact, .ad {
padding: 1rem 3rem;
background: white;
border-radius: 8px;
border: 1px solid #CFCBCB;
box-shadow: 0px 0px 5px #17171777;
}
.profile {
background: white;
border-radius: 8px;
border: 1px solid #CFCBCB;
box-shadow: 0px 0px 5px #17171777;
.settings-btn {
cursor: pointer;
width: 1rem;
height: 1rem;
margin: .5rem;
position: relative;
left: 85%;
.st0{
fill:url(#linear-gradient);
}
}
.user {
padding: 1rem 3rem;
padding-top: 0;
text-align: center;
svg {
width: 8rem;
height: 8rem;
path {
fill: url(#linear-gradient);
}
}
h3 {
font-size: 1.5rem;
font-weight: normal;
}
.user-btns {
margin-top: 1rem;
display: grid;
grid-row-gap: .3rem;
font-size: 1.1rem;
button {
cursor: pointer;
display: block;
}
}
}
}
.profile-stats {
display: grid;
grid-template-rows: repeat(2, 1fr);
grid-row-gap: 1rem;
h3 {
text-align: left;
font-size: 1.1rem;
}
.stats {
display: grid;
grid-template-columns: repeat(3, 1fr);
grid-column-gap: 1rem;
justify-items: center;
font-size: 1.1rem;
svg {
width: 1.5rem;
height: 1.5rem;
margin-left: .1rem;
.cls-1 {
fill: #6A6A6A;
}
}
.likes, .dislikes, .comments {
display: flex;
flex-direction: row;
align-items: center;
}
}
}
.ad {
display: grid;
align-items: center;
justify-items: center;
font-size: 2rem;
font-weight: bold;
}
}
+64
View File
@@ -0,0 +1,64 @@
@import './variables';
#showcase {
height: 85vh;
display: grid;
grid-template-rows: repeat(2, auto);
h1 {
text-align: center;
font-weight: bolder;
font-size: 2.5rem;
align-self: center;
}
.contact {
text-align: right;
align-self: flex-end;
svg {
cursor: pointer;
width: 2.5rem;
height: 2.5rem;
fill: #d3d3d3;
transition: fill .3s ease-in-out;
&:nth-child(2) {
margin-left: .2rem;
margin-right: .2rem;
}
}
.facebook:hover {
fill: #4267b2;
}
.instagram:hover {
fill: #e4405f;
}
.mail:hover {
fill: #dd4b39;
}
}
}
@media only screen and (min-width: 768px) and (orientation: landscape) {
#showcase {
h1 {
font-size: 3rem;
text-align: left;
align-self: center;
}
.contact {
text-align: left;
svg {
width: 3rem;
height: 3rem;
margin-bottom: 0rem;
}
}
}
}
+93
View File
@@ -0,0 +1,93 @@
@import './variables';
#sign-up-container {
position: fixed;
top: 0%;
left: 0%;
z-index: 3;
height: 100vh;
width: 100%;
background: #70707040;
justify-items: center;
align-items: center;
#sign-up {
border-radius: 15px;
box-shadow: 0px 0px 15px #707070;
background: white;
display: grid;
justify-items: center;
grid-row-gap: .5rem;
.close-sign-up {
cursor: pointer;
width: 2.5rem;
height: 2.5rem;
padding: .5rem;
justify-self: flex-end;
path {
fill: url(#linear-gradient);
}
}
h2 {
font-size: 1.5rem;
background: linear-gradient(#eacc56, #ee64d1);
background-clip: text;
-webkit-text-fill-color: transparent;
}
form {
padding: 2rem;
display: grid;
justify-items: center;
align-items: center;
grid-row-gap: .2rem;
input {
padding: .5rem;
border: none;
border-bottom: 1px solid #ee64d1;
&:focus {
outline: none;
}
}
button {
cursor: pointer;
padding: .5rem 1rem;
border: none;
border-radius: 4px;
margin-top: 1rem;
color: white;
background: linear-gradient(60deg, #eacc56, #ee64d1);
}
}
}
}
@media only screen and (min-width: 768px) and (orientation: landscape) {
#sign-up {
position: absolute;
top: 12%;
right: 7%;
}
h2 {
font-size: 2rem;
}
form {
padding: 2rem 4rem;
input {
padding: 1rem;
}
button {
padding: 1rem 1.5rem;
}
}
}
+133
View File
@@ -0,0 +1,133 @@
@import './variables';
#user-profile-container {
position: fixed;
top: 0%;
left: 0%;
z-index: 3;
height: 100vh;
width: 100%;
background: #70707040;
justify-items: center;
align-items: center;
#user-profile {
border-radius: 15px;
box-shadow: 0px 0px 15px #707070;
background: white;
display: grid;
grid-row-gap: .2rem;
.close-user-profile {
cursor: pointer;
width: 2rem;
height: 2rem;
padding: .5rem;
justify-self: flex-end;
@media #{$bigScreens} {
width: 2.5rem;
height: 2.5rem;
}
path {
fill: url(#linear-gradient);
}
}
.user {
display: grid;
grid-template-rows: auto;
grid-row-gap: .2rem;
justify-items: center;
align-items: center;
svg {
width: 5rem;
height: 5rem;
@media #{$bigScreens} {
width: 8rem;
height: 8rem;
}
path {
fill: url(#linear-gradient);
}
}
h3 {
font-size: 1.2rem;
@media #{$bigScreens} {
font-size: 1.5rem;
}
}
}
.user-posts {
padding: .5rem 2rem 2rem 2rem;
display: grid;
grid-row-gap: .5rem;
h3 {
font-size: 1rem;
@media #{$bigScreens} {
font-size: 1.2rem;
}
}
.posts {
padding: .1rem;
height: 150px;
overflow-y: scroll;
display: grid;
grid-row-gap: .5rem;
@media #{$bigScreens} {
padding: .3rem;
}
&::-webkit-scrollbar {
width: .2rem;
}
&::-webkit-scrollbar-thumb {
background: #707070;
}
.post {
background: white;
padding: .5rem;
border-radius: 5px;
border: 1px solid #CFCBCB;
box-shadow: 0px 0px 1px #17171777;
display: grid;
grid-row-gap: .3rem;
h4 {
font-size: .8rem;
@media #{$bigScreens} {
font-size: 1rem;
}
}
p {
@media #{$bigScreens} {
font-size: .8rem;
}
}
.stats {
display: grid;
grid-template-columns: repeat(3, auto);
justify-items: center;
align-items: center;
}
}
}
}
}
}
+2
View File
@@ -0,0 +1,2 @@
$mainTextColor: #1d1d1d;
$bigScreens: "only screen and (min-width:769px) and (orientation: landscape)";