├── 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 |
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 |
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 |
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 |
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 |
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 |
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 |
21 | Follow
22 |
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 |
20 |
21 |
22 |
23 |
setModalOpened(true)}>
24 | Share
25 |
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 |
Logout
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 | You need to enable JavaScript to run this app.
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 |
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 |
Share
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 |
52 | );
53 | }
54 | function SignUp() {
55 | return (
56 |
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 |
--------------------------------------------------------------------------------