├── src ├── components │ ├── ProfileLeft │ │ ├── ProfileLeft.css │ │ └── ProfileLeft.jsx │ ├── Posts │ │ ├── Posts.css │ │ └── Posts.jsx │ ├── PostSide │ │ ├── PostSide.css │ │ └── PostSide.jsx │ ├── profileSide │ │ ├── ProfileSide.css │ │ └── ProfileSide.jsx │ ├── RightSide │ │ ├── RightSide.css │ │ └── RightSide.jsx │ ├── Post │ │ ├── Post.css │ │ └── Post.jsx │ ├── TrendCard │ │ ├── TrendCard.css │ │ └── TrendCard.jsx │ ├── InfoCard │ │ ├── InfoCard.css │ │ └── InfoCard.jsx │ ├── LogoSearch │ │ ├── LogoSearch.jsx │ │ └── LogoSearch.css │ ├── ShareModal │ │ └── ShareModal.jsx │ ├── FollowersCard │ │ ├── FollowersCard.css │ │ └── FollowersCard.jsx │ ├── ProfileCard.jsx │ │ ├── ProfileCard.jsx │ │ └── ProfileCard.css │ ├── PostShare │ │ ├── PostShare.css │ │ └── PostShare.jsx │ └── ProfileModal.jsx │ │ └── ProfileModal.jsx ├── img │ ├── cover.jpg │ ├── home.png │ ├── img1.png │ ├── img2.png │ ├── img3.png │ ├── img4.jpg │ ├── like.png │ ├── logo.png │ ├── noti.png │ ├── share.png │ ├── comment.png │ ├── notlike.png │ ├── postpic1.jpg │ ├── postpic2.jpg │ ├── postpic3.JPG │ └── profileImg.jpg ├── pages │ ├── home │ │ ├── Home.css │ │ └── Home.jsx │ ├── Profile │ │ ├── Profile.css │ │ └── Profile.jsx │ └── Auth │ │ ├── Auth.css │ │ └── Auth.jsx ├── index.js ├── Data │ ├── FollowersData.js │ ├── TrendData.js │ └── PostsData.js ├── App.js └── App.css ├── public ├── robots.txt └── index.html ├── .gitignore ├── package.json └── README.md /src/components/ProfileLeft/ProfileLeft.css: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /public/robots.txt: -------------------------------------------------------------------------------- 1 | # https://www.robotstxt.org/robotstxt.html 2 | User-agent: * 3 | Disallow: 4 | -------------------------------------------------------------------------------- /src/img/cover.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZainRk/SocialMedia-Frontend/HEAD/src/img/cover.jpg -------------------------------------------------------------------------------- /src/img/home.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZainRk/SocialMedia-Frontend/HEAD/src/img/home.png -------------------------------------------------------------------------------- /src/img/img1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZainRk/SocialMedia-Frontend/HEAD/src/img/img1.png -------------------------------------------------------------------------------- /src/img/img2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZainRk/SocialMedia-Frontend/HEAD/src/img/img2.png -------------------------------------------------------------------------------- /src/img/img3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZainRk/SocialMedia-Frontend/HEAD/src/img/img3.png -------------------------------------------------------------------------------- /src/img/img4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZainRk/SocialMedia-Frontend/HEAD/src/img/img4.jpg -------------------------------------------------------------------------------- /src/img/like.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZainRk/SocialMedia-Frontend/HEAD/src/img/like.png -------------------------------------------------------------------------------- /src/img/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZainRk/SocialMedia-Frontend/HEAD/src/img/logo.png -------------------------------------------------------------------------------- /src/img/noti.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZainRk/SocialMedia-Frontend/HEAD/src/img/noti.png -------------------------------------------------------------------------------- /src/img/share.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZainRk/SocialMedia-Frontend/HEAD/src/img/share.png -------------------------------------------------------------------------------- /src/img/comment.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZainRk/SocialMedia-Frontend/HEAD/src/img/comment.png -------------------------------------------------------------------------------- /src/img/notlike.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZainRk/SocialMedia-Frontend/HEAD/src/img/notlike.png -------------------------------------------------------------------------------- /src/img/postpic1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZainRk/SocialMedia-Frontend/HEAD/src/img/postpic1.jpg -------------------------------------------------------------------------------- /src/img/postpic2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZainRk/SocialMedia-Frontend/HEAD/src/img/postpic2.jpg -------------------------------------------------------------------------------- /src/img/postpic3.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZainRk/SocialMedia-Frontend/HEAD/src/img/postpic3.JPG -------------------------------------------------------------------------------- /src/img/profileImg.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZainRk/SocialMedia-Frontend/HEAD/src/img/profileImg.jpg -------------------------------------------------------------------------------- /src/components/Posts/Posts.css: -------------------------------------------------------------------------------- 1 | .Posts{ 2 | display: flex; 3 | flex-direction: column; 4 | gap: 1rem; 5 | 6 | } -------------------------------------------------------------------------------- /src/pages/home/Home.css: -------------------------------------------------------------------------------- 1 | .Home{ 2 | position: relative; 3 | display: grid; 4 | grid-template-columns: 18rem auto 20rem; 5 | gap: 1rem; 6 | } -------------------------------------------------------------------------------- /src/components/PostSide/PostSide.css: -------------------------------------------------------------------------------- 1 | .PostSide{ 2 | display: flex; 3 | flex-direction: column; 4 | gap: 1rem; 5 | height: 100vh; 6 | overflow: auto; 7 | } -------------------------------------------------------------------------------- /src/components/profileSide/ProfileSide.css: -------------------------------------------------------------------------------- 1 | .ProfileSide{ 2 | display: flex; 3 | flex-direction: column; 4 | gap: 1rem; 5 | align-items: center; 6 | overflow: auto; 7 | } -------------------------------------------------------------------------------- /src/pages/Profile/Profile.css: -------------------------------------------------------------------------------- 1 | .Profile{ 2 | position: relative; 3 | display: grid; 4 | grid-template-columns: 18rem auto 20rem; 5 | gap: 1rem; 6 | } 7 | 8 | .Profile-center{ 9 | display: flex; 10 | flex-direction: column; 11 | gap: 1rem; 12 | } -------------------------------------------------------------------------------- /src/components/PostSide/PostSide.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import Posts from '../Posts/Posts' 3 | import PostShare from '../PostShare/PostShare' 4 | import './PostSide.css' 5 | const PostSide = () => { 6 | return ( 7 |
8 | 9 | 10 |
11 | ) 12 | } 13 | 14 | export default PostSide -------------------------------------------------------------------------------- /src/components/Posts/Posts.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import './Posts.css' 3 | import { PostsData } from '../../Data/PostsData' 4 | import Post from '../Post/Post' 5 | const Posts = () => { 6 | return ( 7 |
8 | {PostsData.map((post, id)=>{ 9 | return 10 | })} 11 |
12 | ) 13 | } 14 | 15 | export default Posts -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | /.pnp 6 | .pnp.js 7 | 8 | # testing 9 | /coverage 10 | 11 | # production 12 | /build 13 | 14 | # misc 15 | .DS_Store 16 | .env.local 17 | .env.development.local 18 | .env.test.local 19 | .env.production.local 20 | 21 | npm-debug.log* 22 | yarn-debug.log* 23 | yarn-error.log* 24 | -------------------------------------------------------------------------------- /src/index.js: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import ReactDOM from "react-dom"; 3 | import App from "./App"; 4 | 5 | ReactDOM.render( 6 | , 7 | document.getElementById("root") 8 | ); 9 | 10 | // If you want to start measuring performance in your app, pass a function 11 | // to log results (for example: reportWebVitals(console.log)) 12 | // or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals 13 | -------------------------------------------------------------------------------- /src/components/RightSide/RightSide.css: -------------------------------------------------------------------------------- 1 | .RightSide{ 2 | display: flex; 3 | flex-direction: column; 4 | gap: 2rem; 5 | } 6 | 7 | 8 | .navIcons{ 9 | margin-top: 1rem; 10 | display: flex; 11 | justify-content: space-between; 12 | } 13 | 14 | 15 | .navIcons>img{ 16 | width: 1.5rem; 17 | height: 1.5rem; 18 | } 19 | 20 | 21 | .r-button{ 22 | height: 3rem; 23 | width: 80%; 24 | align-self: center; 25 | } 26 | -------------------------------------------------------------------------------- /src/components/Post/Post.css: -------------------------------------------------------------------------------- 1 | .Post 2 | { 3 | display: flex; 4 | flex-direction: column; 5 | padding: 1rem; 6 | background-color: var(--cardColor); 7 | border-radius: 1rem; 8 | gap: 1rem; 9 | } 10 | 11 | .Post>img{ 12 | width: 100%; 13 | max-height: 20rem; 14 | object-fit: cover; 15 | border-radius: 0.5rem; 16 | } 17 | 18 | .postReact{ 19 | display: flex; 20 | align-items: flex-start; 21 | gap: 1.5rem; 22 | } -------------------------------------------------------------------------------- /src/components/ProfileLeft/ProfileLeft.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import FollowersCard from '../FollowersCard/FollowersCard' 3 | import InfoCard from '../InfoCard/InfoCard' 4 | import LogoSearch from '../LogoSearch/LogoSearch' 5 | const ProfileLeft = () => { 6 | return ( 7 |
8 | 9 | 10 | 11 |
12 | ) 13 | } 14 | 15 | export default ProfileLeft -------------------------------------------------------------------------------- /src/Data/FollowersData.js: -------------------------------------------------------------------------------- 1 | import img1 from "../img/img1.png"; 2 | import img2 from "../img/img2.png"; 3 | import img3 from "../img/img3.png"; 4 | import img4 from "../img/img4.jpg"; 5 | 6 | export const Followers = [ 7 | { name: "Andrew Thomas", username: "AndrewThomas", img: img1 }, 8 | { name: "Hulk Buster", username: "HulkBuster", img: img2 }, 9 | { name: "Thor", username: "ThunderMaster", img: img3 }, 10 | { name: "Natasha", username: "Natasha", img: img4 }, 11 | ]; -------------------------------------------------------------------------------- /src/pages/home/Home.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import PostSide from '../../components/PostSide/PostSide' 3 | import ProfileSide from '../../components/profileSide/ProfileSide' 4 | import RightSide from '../../components/RightSide/RightSide' 5 | import './Home.css' 6 | const Home = () => { 7 | return ( 8 |
9 | 10 | 11 | 12 |
13 | ) 14 | } 15 | 16 | export default Home -------------------------------------------------------------------------------- /src/Data/TrendData.js: -------------------------------------------------------------------------------- 1 | export const TrendData= [ 2 | { 3 | name: "Minions", 4 | shares: 97, 5 | }, 6 | { 7 | name: "Avangers", 8 | shares: 80.5, 9 | }, 10 | { 11 | name: "Zainkeepscode", 12 | shares: 75.5, 13 | }, 14 | { 15 | name: "Reactjs", 16 | shares: 72, 17 | }, 18 | { 19 | name: "Elon Musk", 20 | shares: 71.9, 21 | }, 22 | { 23 | name: "Need for Speed", 24 | shares: 20, 25 | }, 26 | ]; 27 | -------------------------------------------------------------------------------- /src/components/TrendCard/TrendCard.css: -------------------------------------------------------------------------------- 1 | .TrendCard{ 2 | display: flex; 3 | flex-direction: column; 4 | gap: 1rem; 5 | background-color: var(--cardColor); 6 | padding: 1rem; 7 | border-radius: 1rem; 8 | padding-left: 2rem; 9 | } 10 | 11 | 12 | .trend{ 13 | display: flex; 14 | flex-direction: column; 15 | gap: 0.5rem; 16 | } 17 | 18 | 19 | .trend>span:nth-of-type(1) 20 | { 21 | font-weight: bold; 22 | } 23 | .trend>span:nth-of-type(2) 24 | { 25 | font-size: 13px; 26 | } -------------------------------------------------------------------------------- /src/components/profileSide/ProfileSide.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import FollowersCard from '../FollowersCard/FollowersCard' 3 | import LogoSearch from '../LogoSearch/LogoSearch' 4 | import ProfileCard from '../ProfileCard.jsx/ProfileCard' 5 | 6 | import "./ProfileSide.css" 7 | const ProfileSide = () => { 8 | return ( 9 |
10 | 11 | 12 | 13 |
14 | ) 15 | } 16 | 17 | export default ProfileSide -------------------------------------------------------------------------------- /src/App.js: -------------------------------------------------------------------------------- 1 | import "./App.css" 2 | import Auth from "./pages/Auth/Auth"; 3 | import Home from "./pages/home/Home"; 4 | import Profile from "./pages/Profile/Profile"; 5 | function App() { 6 | return ( 7 |
8 |
9 |
10 | {/* */} 11 | 12 | {/* */} 13 |
14 | ); 15 | } 16 | 17 | export default App; 18 | -------------------------------------------------------------------------------- /src/components/InfoCard/InfoCard.css: -------------------------------------------------------------------------------- 1 | .InfoCard 2 | { 3 | display: flex; 4 | flex-direction: column; 5 | gap: 0.75rem; 6 | background-color: var(--cardColor); 7 | padding: 1rem; 8 | border-radius: 1rem; 9 | width: 90%; 10 | } 11 | 12 | .infoHead{ 13 | display: flex; 14 | justify-content: space-between; 15 | align-items: center; 16 | } 17 | 18 | .infoHead>div:hover{ 19 | cursor: pointer; 20 | } 21 | 22 | .logout-button{ 23 | width: 7rem; 24 | height: 2rem; 25 | margin-top: 6rem; 26 | align-self: flex-end; 27 | } -------------------------------------------------------------------------------- /src/components/LogoSearch/LogoSearch.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import Logo from '../../img/logo.png' 3 | import {UilSearch} from '@iconscout/react-unicons' 4 | import './LogoSearch.css' 5 | const LogoSearch = () => { 6 | return ( 7 |
8 | 9 |
10 | 11 |
12 | 13 |
14 |
15 |
16 | ) 17 | } 18 | 19 | export default LogoSearch -------------------------------------------------------------------------------- /src/components/TrendCard/TrendCard.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import './TrendCard.css' 3 | 4 | import {TrendData} from '../../Data/TrendData.js' 5 | const TrendCard = () => { 6 | return ( 7 |
8 |

Trends for you

9 | {TrendData.map((trend)=>{ 10 | return( 11 |
12 | #{trend.name} 13 | {trend.shares}k shares 14 |
15 | ) 16 | })} 17 | 18 |
19 | ) 20 | } 21 | 22 | export default TrendCard -------------------------------------------------------------------------------- /src/components/LogoSearch/LogoSearch.css: -------------------------------------------------------------------------------- 1 | .LogoSearch{ 2 | display: flex; 3 | gap: 0.75rem; 4 | } 5 | 6 | .Search{ 7 | display: flex; 8 | background-color: var(--inputColor); 9 | border-radius: 10px; 10 | padding: 5px; 11 | } 12 | 13 | .Search>input{ 14 | background-color: transparent; 15 | border:none; 16 | outline: none; 17 | } 18 | 19 | .s-icon{ 20 | display: flex; 21 | align-items: center; 22 | justify-content: center; 23 | background: linear-gradient(106.23deg, #f99827, #f95f35 100%); 24 | border-radius: 5px; 25 | padding: 4px; 26 | color: white; 27 | } 28 | 29 | .s-icon:hover{ 30 | cursor: pointer; 31 | } -------------------------------------------------------------------------------- /src/pages/Profile/Profile.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import PostSide from '../../components/PostSide/PostSide' 3 | import ProfileCard from '../../components/ProfileCard.jsx/ProfileCard' 4 | import ProfileLeft from '../../components/ProfileLeft/ProfileLeft' 5 | import RightSide from '../../components/RightSide/RightSide' 6 | import './Profile.css' 7 | const Profile = () => { 8 | return ( 9 |
10 | 11 | 12 |
13 | 14 | 15 |
16 | 17 | 18 |
19 | ) 20 | } 21 | 22 | export default Profile -------------------------------------------------------------------------------- /src/components/ShareModal/ShareModal.jsx: -------------------------------------------------------------------------------- 1 | import { Modal, useMantineTheme } from "@mantine/core"; 2 | import PostShare from "../PostShare/PostShare"; 3 | 4 | function ShareModal({ modalOpened, setModalOpened }) { 5 | const theme = useMantineTheme(); 6 | 7 | return ( 8 | setModalOpened(false)} 19 | > 20 | 21 | 22 | ); 23 | } 24 | 25 | export default ShareModal; 26 | -------------------------------------------------------------------------------- /src/Data/PostsData.js: -------------------------------------------------------------------------------- 1 | import postPic1 from '../img/postpic1.jpg' 2 | import postPic2 from '../img/postpic2.jpg' 3 | import postPic3 from '../img/postpic3.JPG' 4 | 5 | 6 | export const PostsData = [ 7 | { 8 | img: postPic1, 9 | name: 'Tzuyu', 10 | desc: "Happy New Year all friends! #2023", 11 | likes: 2300, 12 | liked: true 13 | }, 14 | { 15 | img: postPic2, 16 | name: 'Maryam', 17 | desc: "Party time :)", 18 | likes: 2300, 19 | liked: false 20 | 21 | }, 22 | { 23 | img:postPic3, 24 | name: "Salena Gomez", 25 | desc: "At Archery Festival", 26 | likes: 800, 27 | liked: false 28 | } 29 | ] -------------------------------------------------------------------------------- /src/components/FollowersCard/FollowersCard.css: -------------------------------------------------------------------------------- 1 | 2 | .FollowersCard{ 3 | width: 100%; 4 | border-radius: 0.7rem; 5 | gap: 1rem; 6 | display: flex; 7 | flex-direction: column; 8 | font-size: 13px; 9 | } 10 | 11 | .follower{ 12 | display: flex; 13 | justify-content: space-between; 14 | align-items: center; 15 | } 16 | 17 | .follower>div{ 18 | display: flex; 19 | gap: 10px; 20 | } 21 | 22 | 23 | .followerImage{ 24 | width: 3.2rem; 25 | height: 3.2rem; 26 | border-radius: 50%; 27 | } 28 | 29 | .name{ 30 | display: flex; 31 | flex-direction: column; 32 | align-items: flex-start; 33 | justify-content: center; 34 | } 35 | 36 | .name>span:nth-of-type(1){ 37 | font-weight: bold; 38 | } 39 | 40 | 41 | .fc-button{ 42 | height: 2rem; 43 | padding-left: 20px; 44 | padding-right: 20px; 45 | } 46 | 47 | 48 | 49 | 50 | 51 | -------------------------------------------------------------------------------- /src/components/Post/Post.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import './Post.css' 3 | import Comment from '../../img/comment.png' 4 | import Share from '../../img/share.png' 5 | import Heart from '../../img/like.png' 6 | import NotLike from '../../img/notlike.png' 7 | 8 | 9 | const Post = ({data}) => { 10 | return ( 11 |
12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 |
20 | 21 | 22 | {data.likes} likes 23 | 24 |
25 | {data.name} 26 | {data.desc} 27 |
28 |
29 | ) 30 | } 31 | 32 | export default Post -------------------------------------------------------------------------------- /src/components/FollowersCard/FollowersCard.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import './FollowersCard.css' 3 | 4 | import { Followers } from '../../Data/FollowersData' 5 | const FollowersCard = () => { 6 | return ( 7 |
8 |

Who is following you

9 | 10 | {Followers. map((follower, id)=>{ 11 | return( 12 |
13 |
14 | 15 |
16 | {follower.name} 17 | @{follower.username} 18 |
19 |
20 | 23 |
24 | ) 25 | })} 26 |
27 | ) 28 | } 29 | 30 | export default FollowersCard -------------------------------------------------------------------------------- /src/components/RightSide/RightSide.jsx: -------------------------------------------------------------------------------- 1 | import React, { useState } from "react"; 2 | import "./RightSide.css"; 3 | import Home from "../../img/home.png"; 4 | import Noti from "../../img/noti.png"; 5 | import Comment from "../../img/comment.png"; 6 | import { UilSetting } from "@iconscout/react-unicons"; 7 | import TrendCard from "../TrendCard/TrendCard"; 8 | import ShareModal from "../ShareModal/ShareModal"; 9 | 10 | const RightSide = () => { 11 | const [modalOpened, setModalOpened] = useState(false); 12 | return ( 13 |
14 |
15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 26 | 27 |
28 | ); 29 | }; 30 | 31 | export default RightSide; 32 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "starter", 3 | "version": "0.1.0", 4 | "private": true, 5 | "dependencies": { 6 | "@iconscout/react-unicons": "^1.1.6", 7 | "@mantine/core": "^4.2.1", 8 | "@mantine/hooks": "^4.2.1", 9 | "@testing-library/jest-dom": "^5.14.1", 10 | "@testing-library/react": "^12.0.0", 11 | "@testing-library/user-event": "^13.2.1", 12 | "axios": "^0.27.2", 13 | "react": "^17.0.2", 14 | "react-dom": "^17.0.2", 15 | "react-router-dom": "6", 16 | "react-scripts": "5.0.0", 17 | "web-vitals": "^2.1.0" 18 | }, 19 | "scripts": { 20 | "start": "react-scripts start", 21 | "build": "react-scripts build", 22 | "test": "react-scripts test", 23 | "eject": "react-scripts eject" 24 | }, 25 | "eslintConfig": { 26 | "extends": [ 27 | "react-app", 28 | "react-app/jest" 29 | ] 30 | }, 31 | "browserslist": { 32 | "production": [ 33 | ">0.2%", 34 | "not dead", 35 | "not op_mini all" 36 | ], 37 | "development": [ 38 | "last 1 chrome version", 39 | "last 1 firefox version", 40 | "last 1 safari version" 41 | ] 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /src/App.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --yellow: #f5c32c; 3 | --orange: #fca61f; 4 | --black: #242d49; 5 | --gray: rgba(36, 45, 73, 0.65); 6 | --profileShadow: 0px 4px 17px 2px rgba(0, 0, 0, 0.25); 7 | --hrColor: #cfcdcd; 8 | --cardColor: rgba(255, 255, 255, 0.64); 9 | --buttonBg: linear-gradient(98.63deg, #f9a225 0%, #f95f35 100%); 10 | --inputColor: rgba(40, 52, 62, 0.07); 11 | --photo: #4CB256; 12 | --video: #4A4EB7; 13 | --location: #EF5757; 14 | --shedule: #E1AE4A; 15 | } 16 | 17 | .App{ 18 | overflow: hidden; 19 | color: var(--black); 20 | background: #f3f3f3; 21 | padding: 1rem 1rem; 22 | } 23 | 24 | .blur{ 25 | position: absolute; 26 | width: 22rem; 27 | height: 14rem; 28 | border-radius: 50%; 29 | background: #a6ddf0; 30 | filter: blur(72px) 31 | } 32 | 33 | .button{ 34 | display: flex; 35 | align-items: center; 36 | justify-content: center; 37 | color: white; 38 | border:none; 39 | border-radius: 0.5rem; 40 | background: var(--buttonBg); 41 | transition:all 100ms ease-out; 42 | } 43 | 44 | .button:hover{ 45 | cursor: pointer; 46 | color: var(--orange); 47 | background: transparent; 48 | border: 2px solid var(--orange); 49 | } 50 | 51 | ::-webkit-scrollbar{ 52 | display: none; 53 | } -------------------------------------------------------------------------------- /src/components/InfoCard/InfoCard.jsx: -------------------------------------------------------------------------------- 1 | import React, { useState } from "react"; 2 | import "./InfoCard.css"; 3 | import { UilPen } from "@iconscout/react-unicons"; 4 | import ProfileModal from "../ProfileModal.jsx/ProfileModal"; 5 | 6 | const InfoCard = () => { 7 | const [modalOpened, setModalOpened] = useState(false); 8 | return ( 9 |
10 |
11 |

Your Info

12 |
13 | setModalOpened(true)} 17 | /> 18 | 22 |
23 |
24 | 25 |
26 | 27 | Status 28 | 29 | in Relationship 30 |
31 | 32 |
33 | 34 | Lives in 35 | 36 | Multan 37 |
38 | 39 |
40 | 41 | Works at 42 | 43 | Zainkeepscode inst 44 |
45 | 46 | 47 |
48 | ); 49 | }; 50 | 51 | export default InfoCard; 52 | -------------------------------------------------------------------------------- /src/components/ProfileCard.jsx/ProfileCard.jsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import Cover from "../../img/cover.jpg"; 3 | import Profile from "../../img/profileImg.jpg"; 4 | import "./ProfileCard.css"; 5 | 6 | const ProfileCard = () => { 7 | const ProfilePage = true; 8 | return ( 9 |
10 |
11 | 12 | 13 |
14 | 15 |
16 | Zendaya MJ 17 | Senior UI/UX Designer 18 |
19 | 20 |
21 |
22 |
23 |
24 | 6,890 25 | Followings 26 |
27 |
28 |
29 | 1 30 | Followers 31 |
32 | 33 | {ProfilePage && ( 34 | <> 35 |
36 |
37 | 3 38 | Posts 39 |
40 | 41 | )} 42 |
43 |
44 |
45 | {ProfilePage ? "" : My Profile} 46 |
47 | ); 48 | }; 49 | 50 | export default ProfileCard; 51 | -------------------------------------------------------------------------------- /src/components/PostShare/PostShare.css: -------------------------------------------------------------------------------- 1 | .PostShare{ 2 | display: flex; 3 | gap: 1rem; 4 | background-color: var(--cardColor); 5 | padding: 1rem; 6 | border-radius: 1rem; 7 | } 8 | 9 | .PostShare>img{ 10 | border-radius: 50%; 11 | width: 3rem; 12 | height: 3rem; 13 | } 14 | 15 | .PostShare>div{ 16 | display: flex; 17 | flex-direction: column; 18 | width: 90%; 19 | gap: 1rem; 20 | } 21 | 22 | .PostShare>div>input{ 23 | background-color: var(--inputColor); 24 | border-radius: 10px; 25 | padding: 10px; 26 | font-size: 17px; 27 | border: none; 28 | outline: none; 29 | } 30 | 31 | 32 | 33 | 34 | 35 | .postOptions{ 36 | display: flex; 37 | justify-content: space-around; 38 | } 39 | 40 | .option{ 41 | padding: 5px; 42 | padding-left: 10px; 43 | padding-right: 10px; 44 | border-radius: 10px; 45 | display: flex; 46 | align-items: center; 47 | justify-content: center; 48 | font-size: 12px; 49 | } 50 | 51 | .option:hover{ 52 | cursor: pointer; 53 | } 54 | 55 | .ps-button{ 56 | padding: 5px; 57 | padding-left: 20px; 58 | padding-right: 20px; 59 | font-size: 12px 60 | } 61 | 62 | 63 | .previewImage{ 64 | position: relative; 65 | } 66 | 67 | .previewImage>svg{ 68 | position: absolute; 69 | right: 1rem; 70 | top: 0.5rem; 71 | cursor: pointer; 72 | } 73 | 74 | .previewImage>img{ 75 | width: 100%; 76 | max-height: 20rem; 77 | object-fit: cover; 78 | border-radius: 0.5rem; 79 | } 80 | 81 | 82 | -------------------------------------------------------------------------------- /src/components/ProfileCard.jsx/ProfileCard.css: -------------------------------------------------------------------------------- 1 | .ProfileCard{ 2 | border-radius: 1.5rem; 3 | display: flex; 4 | flex-direction: column; 5 | position: relative; 6 | gap: 1rem; 7 | overflow-x: clip; 8 | background: var(--cardColor); 9 | } 10 | 11 | .ProfileImages{ 12 | position: relative; 13 | display: flex; 14 | flex-direction: column; 15 | align-items: center; 16 | justify-content: center; 17 | } 18 | 19 | .ProfileImages>img:nth-of-type(1){ 20 | width: 100%; 21 | } 22 | 23 | .ProfileImages>img:nth-of-type(2) 24 | { 25 | width: 6rem; 26 | border-radius: 50%; 27 | position: absolute; 28 | bottom: -3rem; 29 | box-shadow: var(--profileShadow); 30 | } 31 | 32 | .ProfileName{ 33 | display: flex; 34 | flex-direction: column; 35 | align-items: center; 36 | margin-top: 3rem; 37 | gap: 10px; 38 | } 39 | 40 | .ProfileName>span:nth-of-type(1) 41 | { 42 | font-weight: bold; 43 | } 44 | 45 | /* Follow Status */ 46 | .followStatus { 47 | display: flex; 48 | flex-direction: column; 49 | align-items: center; 50 | justify-content: center; 51 | gap: 0.75rem; 52 | } 53 | 54 | .followStatus > hr { 55 | width: 85%; 56 | border: 1px solid var(--hrColor); 57 | } 58 | 59 | .followStatus > div { 60 | display: flex; 61 | gap: 1rem; 62 | width: 80%; 63 | justify-content: space-around; 64 | align-items: center; 65 | } 66 | 67 | .follow { 68 | display: flex; 69 | flex-direction: column; 70 | gap: 0.4rem; 71 | align-items: center; 72 | justify-content: center; 73 | } 74 | .follow > span:nth-of-type(1) { 75 | font-weight: bold; 76 | } 77 | 78 | .follow > span:nth-of-type(2) { 79 | color: var(--gray); 80 | font-size: 13px; 81 | } 82 | 83 | .vl { 84 | height: 150%; 85 | border-left: 2px solid var(--hrColor); 86 | } 87 | 88 | 89 | .ProfileCard>span{ 90 | font-weight: bold; 91 | color: orange; 92 | align-self: center; 93 | margin-bottom: 1rem; 94 | cursor: pointer; 95 | } -------------------------------------------------------------------------------- /src/pages/Auth/Auth.css: -------------------------------------------------------------------------------- 1 | .Auth { 2 | display: flex; 3 | align-items: center; 4 | justify-content: center; 5 | height: 100vh; 6 | gap: 4rem; 7 | position: relative; 8 | } 9 | 10 | .Auth > div { 11 | display: flex; 12 | align-items: center; 13 | justify-content: center; 14 | } 15 | 16 | 17 | 18 | /* left side */ 19 | .a-left{ 20 | gap: 2rem; 21 | } 22 | 23 | .a-left > img { 24 | width: 4rem; 25 | height: 4rem; 26 | } 27 | 28 | .Webname > h1 { 29 | font-size: 3rem; 30 | background-color: red; 31 | 32 | /* Create the gradient. */ 33 | background-image: var(--buttonBg); 34 | 35 | /* Set the background size and repeat properties. */ 36 | background-size: 100%; 37 | background-repeat: repeat; 38 | 39 | /* Use the text as a mask for the background. */ 40 | /* This will show the gradient as a text color rather than element bg. */ 41 | -webkit-background-clip: text; 42 | -webkit-text-fill-color: transparent; 43 | -moz-background-clip: text; 44 | -moz-text-fill-color: transparent; 45 | } 46 | 47 | .Webname>h6{ 48 | font-size: 0.85rem; 49 | } 50 | 51 | 52 | 53 | .infoForm{ 54 | display: flex; 55 | flex-direction: column; 56 | justify-content: center; 57 | align-items: center; 58 | gap: 2rem; 59 | } 60 | 61 | .infoInput{ 62 | border: none; 63 | outline: none; 64 | background-color: var(--inputColor); 65 | border-radius: 8px; 66 | padding: 20px; 67 | flex:1; 68 | } 69 | 70 | .infoForm>div{ 71 | display: flex; 72 | gap: 1rem; 73 | height: 2rem; 74 | width: 90%; 75 | } 76 | 77 | .infoButton{ 78 | width: 6rem; 79 | height: 2rem; 80 | align-self: flex-end; 81 | } 82 | 83 | 84 | .authForm{ 85 | background-color: var(--cardColor); 86 | border-radius: 1rem; 87 | padding: 1rem; 88 | } 89 | 90 | .authForm>div{ 91 | width: 100%; 92 | align-items: center; 93 | justify-content: center; 94 | } -------------------------------------------------------------------------------- /public/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 11 | 12 | 13 | 17 | 23 | 27 | 36 | React App 37 | 38 | 39 | 40 |
41 | 51 | 52 | 53 | -------------------------------------------------------------------------------- /src/components/ProfileModal.jsx/ProfileModal.jsx: -------------------------------------------------------------------------------- 1 | import { Modal, useMantineTheme } from "@mantine/core"; 2 | 3 | function ProfileModal({ modalOpened, setModalOpened }) { 4 | const theme = useMantineTheme(); 5 | 6 | return ( 7 | setModalOpened(false)} 18 | > 19 |
20 |

Your info

21 | 22 |
23 | 29 | 30 | 36 |
37 | 38 |
39 | 45 |
46 | 47 |
48 | 54 | 55 | 61 |
62 | 63 |
64 | 69 |
70 | 71 | 72 |
73 | Profile Image 74 | 75 | Cover Image 76 | 77 |
78 | 79 | 80 |
81 |
82 | ); 83 | } 84 | 85 | export default ProfileModal; 86 | -------------------------------------------------------------------------------- /src/components/PostShare/PostShare.jsx: -------------------------------------------------------------------------------- 1 | import React, { useState, useRef } from "react"; 2 | import ProfileImage from "../../img/profileImg.jpg"; 3 | import "./PostShare.css"; 4 | import { UilScenery } from "@iconscout/react-unicons"; 5 | import { UilPlayCircle } from "@iconscout/react-unicons"; 6 | import { UilLocationPoint } from "@iconscout/react-unicons"; 7 | import { UilSchedule } from "@iconscout/react-unicons"; 8 | import { UilTimes } from "@iconscout/react-unicons"; 9 | 10 | 11 | const PostShare = () => { 12 | const [image, setImage] = useState(null); 13 | const imageRef = useRef(); 14 | 15 | const onImageChange = (event) => { 16 | if (event.target.files && event.target.files[0]) { 17 | let img = event.target.files[0]; 18 | setImage({ 19 | image: URL.createObjectURL(img), 20 | }); 21 | } 22 | }; 23 | return ( 24 |
25 | 26 |
27 | 28 |
29 |
imageRef.current.click()} 31 | > 32 | 33 | Photo 34 |
35 |
36 | 37 | Video 38 |
{" "} 39 |
40 | 41 | Location 42 |
{" "} 43 |
44 | 45 | Shedule 46 |
47 | 48 |
49 | 55 |
56 |
57 | {image && ( 58 | 59 |
60 | setImage(null)}/> 61 | 62 |
63 | 64 | )} 65 | 66 | 67 |
68 |
69 | ); 70 | }; 71 | 72 | export default PostShare; 73 | -------------------------------------------------------------------------------- /src/pages/Auth/Auth.jsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import "./Auth.css"; 3 | import Logo from "../../img/logo.png"; 4 | 5 | const Auth = () => { 6 | return ( 7 |
8 |
9 | 10 |
11 |

ZKC Media

12 |
Explore the ideas throughout the world
13 |
14 |
15 | 16 | 17 |
18 | ); 19 | }; 20 | function LogIn() { 21 | return ( 22 |
23 |
24 |

Log In

25 | 26 |
27 | 33 |
34 | 35 |
36 | 42 |
43 | 44 |
45 | 46 | Don't have an account Sign up 47 | 48 | 49 |
50 |
51 |
52 | ); 53 | } 54 | function SignUp() { 55 | return ( 56 |
57 |
58 |

Sign up

59 | 60 |
61 | 67 | 73 |
74 | 75 |
76 | 82 |
83 | 84 |
85 | 91 | 97 |
98 | 99 |
100 | Already have an account. Login! 101 |
102 | 103 |
104 |
105 | ); 106 | } 107 | 108 | export default Auth; 109 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Getting Started with Create React App 2 | 3 | This project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app). 4 | 5 | ## Available Scripts 6 | 7 | In the project directory, you can run: 8 | 9 | ### `yarn start` 10 | 11 | Runs the app in the development mode.\ 12 | Open [http://localhost:3000](http://localhost:3000) to view it in your browser. 13 | 14 | The page will reload when you make changes.\ 15 | You may also see any lint errors in the console. 16 | 17 | ### `yarn test` 18 | 19 | Launches the test runner in the interactive watch mode.\ 20 | See the section about [running tests](https://facebook.github.io/create-react-app/docs/running-tests) for more information. 21 | 22 | ### `yarn build` 23 | 24 | Builds the app for production to the `build` folder.\ 25 | It correctly bundles React in production mode and optimizes the build for the best performance. 26 | 27 | The build is minified and the filenames include the hashes.\ 28 | Your app is ready to be deployed! 29 | 30 | See the section about [deployment](https://facebook.github.io/create-react-app/docs/deployment) for more information. 31 | 32 | ### `yarn eject` 33 | 34 | **Note: this is a one-way operation. Once you `eject`, you can't go back!** 35 | 36 | If you aren't satisfied with the build tool and configuration choices, you can `eject` at any time. This command will remove the single build dependency from your project. 37 | 38 | Instead, it will copy all the configuration files and the transitive dependencies (webpack, Babel, ESLint, etc) right into your project so you have full control over them. All of the commands except `eject` will still work, but they will point to the copied scripts so you can tweak them. At this point you're on your own. 39 | 40 | You don't have to ever use `eject`. The curated feature set is suitable for small and middle deployments, and you shouldn't feel obligated to use this feature. However we understand that this tool wouldn't be useful if you couldn't customize it when you are ready for it. 41 | 42 | ## Learn More 43 | 44 | You can learn more in the [Create React App documentation](https://facebook.github.io/create-react-app/docs/getting-started). 45 | 46 | To learn React, check out the [React documentation](https://reactjs.org/). 47 | 48 | ### Code Splitting 49 | 50 | This section has moved here: [https://facebook.github.io/create-react-app/docs/code-splitting](https://facebook.github.io/create-react-app/docs/code-splitting) 51 | 52 | ### Analyzing the Bundle Size 53 | 54 | This section has moved here: [https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size](https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size) 55 | 56 | ### Making a Progressive Web App 57 | 58 | This section has moved here: [https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app](https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app) 59 | 60 | ### Advanced Configuration 61 | 62 | This section has moved here: [https://facebook.github.io/create-react-app/docs/advanced-configuration](https://facebook.github.io/create-react-app/docs/advanced-configuration) 63 | 64 | ### Deployment 65 | 66 | This section has moved here: [https://facebook.github.io/create-react-app/docs/deployment](https://facebook.github.io/create-react-app/docs/deployment) 67 | 68 | ### `yarn build` fails to minify 69 | 70 | This section has moved here: [https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify](https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify) 71 | --------------------------------------------------------------------------------