Repository: ZainRk/Personal-Portfolio-React
Branch: master
Commit: 4017fd2a5dce
Files: 34
Total size: 38.4 KB
Directory structure:
gitextract_c_448bms/
├── .gitignore
├── README.md
├── package.json
├── public/
│ ├── index.html
│ └── robots.txt
└── src/
├── App.css
├── App.js
├── Context.js
├── components/
│ ├── Card/
│ │ ├── Card.css
│ │ └── Card.jsx
│ ├── Contact/
│ │ ├── Contact.css
│ │ └── Contact.jsx
│ ├── Experience/
│ │ ├── Experience.css
│ │ └── Experience.jsx
│ ├── FloatingDiv/
│ │ ├── FloatingDiv.css
│ │ └── FloatingDiv.jsx
│ ├── Footer/
│ │ ├── Footer.css
│ │ └── Footer.jsx
│ ├── Intro/
│ │ ├── Intro.css
│ │ └── Intro.jsx
│ ├── Navbar/
│ │ ├── Navbar.css
│ │ └── Navbar.jsx
│ ├── Portfolio/
│ │ ├── Portfolio.css
│ │ └── Portfolio.jsx
│ ├── Services/
│ │ ├── Services.css
│ │ └── Services.jsx
│ ├── Testimonials/
│ │ ├── Testimonial.css
│ │ └── Testimonial.jsx
│ ├── Toggle/
│ │ ├── Toggle.css
│ │ └── Toggle.jsx
│ └── Works/
│ ├── Works.css
│ └── Works.jsx
├── fonts/
│ └── Gumela Regular.otf
└── index.js
================================================
FILE CONTENTS
================================================
================================================
FILE: .gitignore
================================================
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
# dependencies
/node_modules
/.pnp
.pnp.js
# testing
/coverage
# production
/build
# misc
.DS_Store
.env.local
.env.development.local
.env.test.local
.env.production.local
npm-debug.log*
yarn-debug.log*
yarn-error.log*
================================================
FILE: README.md
================================================
# Getting Started with Create React App
This project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app).
## Available Scripts
In the project directory, you can run:
### `yarn start`
Runs the app in the development mode.\
Open [http://localhost:3000](http://localhost:3000) to view it in your browser.
The page will reload when you make changes.\
You may also see any lint errors in the console.
### `yarn test`
Launches the test runner in the interactive watch mode.\
See the section about [running tests](https://facebook.github.io/create-react-app/docs/running-tests) for more information.
### `yarn build`
Builds the app for production to the `build` folder.\
It correctly bundles React in production mode and optimizes the build for the best performance.
The build is minified and the filenames include the hashes.\
Your app is ready to be deployed!
See the section about [deployment](https://facebook.github.io/create-react-app/docs/deployment) for more information.
### `yarn eject`
**Note: this is a one-way operation. Once you `eject`, you can't go back!**
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.
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.
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.
## Learn More
You can learn more in the [Create React App documentation](https://facebook.github.io/create-react-app/docs/getting-started).
To learn React, check out the [React documentation](https://reactjs.org/).
### Code Splitting
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)
### Analyzing the Bundle Size
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)
### Making a Progressive Web App
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)
### Advanced Configuration
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)
### Deployment
This section has moved here: [https://facebook.github.io/create-react-app/docs/deployment](https://facebook.github.io/create-react-app/docs/deployment)
### `yarn build` fails to minify
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)
================================================
FILE: package.json
================================================
{
"name": "portofolio",
"version": "0.1.0",
"private": true,
"dependencies": {
"@emailjs/browser": "^3.4.0",
"@iconscout/react-unicons": "^1.1.6",
"@testing-library/jest-dom": "^5.14.1",
"@testing-library/react": "^12.0.0",
"@testing-library/user-event": "^13.2.1",
"framer-motion": "^6.2.8",
"react": "^17.0.2",
"react-dom": "^17.0.2",
"react-scripts": "5.0.0",
"react-scroll": "^1.8.6",
"swiper": "^8.0.7",
"web-vitals": "^2.1.0"
},
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build",
"test": "react-scripts test",
"eject": "react-scripts eject"
},
"eslintConfig": {
"extends": [
"react-app",
"react-app/jest"
]
},
"browserslist": {
"production": [
">0.2%",
"not dead",
"not op_mini all"
],
"development": [
"last 1 chrome version",
"last 1 firefox version",
"last 1 safari version"
]
}
}
================================================
FILE: public/index.html
================================================
React App
You need to enable JavaScript to run this app.
================================================
FILE: public/robots.txt
================================================
# https://www.robotstxt.org/robotstxt.html
User-agent: *
Disallow:
================================================
FILE: src/App.css
================================================
:root
{
--yellow: #F5C32C;
--orange : #FCA61F;
--black : #242D49;
--gray : #788097;
--blueCard : #DDF8FE;
--purple: rgb(238 210 255);
--boxShadow : 0px 19px 60px rgb(0 0 0 / 8%);
--orangeCard: rgba(252, 166, 31, 0.45);
--smboxShadow: -79px 51px 60px rgba(0, 0, 0, 0.08);
}
.App{
padding: 0.5rem 3.5rem;
overflow: hidden;
color: var(--black);
}
.button {
background: linear-gradient(180deg, #fdc50f 26.71%, #fb982f 99.36%);
box-shadow: 0px 20px 24px 3px rgba(251, 161, 40, 0.42);
border-radius: 34px;
border: none;
color: white;
font-size: 16px;
padding: 11px 26px 11px 26px;
}
.button:hover {
background: white;
cursor: pointer;
border: 1px solid var(--orange);
color: var(--orange);
}
@media screen and (max-width: 480px) {
.App {
padding: 0.5rem 1rem;
}
}
================================================
FILE: src/App.js
================================================
import Navbar from "./components/Navbar/Navbar";
import Intro from "./components/Intro/Intro";
import Services from "./components/Services/Services";
import "./App.css";
import Experience from "./components/Experience/Experience";
import Works from "./components/Works/Works";
import Portfolio from "./components/Portfolio/Portfolio";
import Testimonial from "./components/Testimonials/Testimonial";
import Contact from "./components/Contact/Contact";
import Footer from "./components/Footer/Footer";
import { useContext } from "react";
import { themeContext } from "./Context";
function App() {
const theme = useContext(themeContext);
const darkMode = theme.state.darkMode;
return (
);
}
export default App;
================================================
FILE: src/Context.js
================================================
import { createContext, useReducer } from "react";
export const themeContext = createContext();
const initialState = { darkMode: false };
const themeReducer = (state, action) => {
switch (action.type) {
case "toggle":
return { darkMode: !state.darkMode };
default:
return state;
}
};
export const ThemeProvider = (props) => {
const [state, dispatch] = useReducer(themeReducer, initialState);
return (
{props.children}
);
};
================================================
FILE: src/components/Card/Card.css
================================================
.card {
width: 10rem;
height: 13rem;
position: absolute;
display: flex;
flex-direction: column;
gap: 1rem;
align-items: center;
width: 10rem;
text-align: center;
background: rgba(255, 255, 255, 0.26);
border: 7px solid var(--orangeCard);
box-shadow: var(--boxShadow);
border-radius: 20px;
padding: 0px 26px 2rem 26px;
}
.card span:nth-of-type(2) {
color: var(--gray);
font-size: 16px;
}
.card > img {
transform: scale(0.6);
margin-bottom: -2rem;
}
.c-button {
background: #FFFFFF;
box-shadow: 0px 19px 60px rgba(0, 0, 0, 0.08);
border-radius: 7px;
border: none;
padding: 10px;
font-size: 16px;
color: #5290FD;
}
.c-button:hover{
transform: scale(1.1);
cursor: pointer;
}
/* cards */
@media screen and (max-width: 480px){
.card{
width: auto;
}
}
================================================
FILE: src/components/Card/Card.jsx
================================================
import React from "react";
import "./Card.css";
const Card = ({emoji, heading, detail, color}) => {
return (
{heading}
{detail}
LEARN MORE
);
};
export default Card;
================================================
FILE: src/components/Contact/Contact.css
================================================
.contact-form{
padding: 0 3rem 0 3rem;
display: flex;
height: 80vh;
margin-top: 4rem;
/* scroll */
padding-top: 3rem;
}
.c-right{
display: flex;
justify-content: center;
position: relative;
flex: 1;
}
.c-right>form
{
display: flex;
flex-direction: column;
gap: 2rem;
align-items: center;
}
.c-right .user{
width: 20rem;
height: 2rem;
padding: 0.3em;
outline: none;
border: 2px solid var(--orange);
border-radius: 8px;
font-size: 16px;
}
textarea{
height: 4rem!important;
}
.c-blur1{
top: 1rem;
left: 8rem;
}
@media screen and (max-width: 480px) {
.contact-form{
padding: 0;
flex-direction: column;
gap: 5rem;
height: 40rem;
}
.c-right .user{
width: 16rem;
}
}
================================================
FILE: src/components/Contact/Contact.jsx
================================================
import React, { useContext, useRef, useState } from "react";
import "./Contact.css";
import emailjs from "@emailjs/browser";
import { themeContext } from "../../Context";
const Contact = () => {
const theme = useContext(themeContext);
const darkMode = theme.state.darkMode;
const form = useRef();
const [done, setDone] = useState(false)
const sendEmail = (e) => {
e.preventDefault();
emailjs
.sendForm(
"service_2mu5xtl",
"template_m5udu2c",
form.current,
"VLwg1ltOWvnCYAiK_"
)
.then(
(result) => {
console.log(result.text);
setDone(true);
form.reset();
},
(error) => {
console.log(error.text);
}
);
};
return (
);
};
export default Contact;
================================================
FILE: src/components/Experience/Experience.css
================================================
.experience {
display: flex;
align-items: center;
justify-content: center;
gap: 5rem;
height: 30vh;
margin-bottom: 8rem;
/* darkmode */
color: var(--black);
}
.achievement{
display: flex;
flex-direction: column;
align-items: center;
}
.circle {
width: 4rem;
height: 4rem;
background: white;
border-radius: 100%;
position: relative;
display: flex;
align-items: center;
justify-content: center;
font-size: 1.5rem;
font-weight: bold;
margin-bottom: 2rem;
}
.circle::before {
border-radius: 100%;
content: '';
background-image: linear-gradient(to bottom, #87e6fb 0%, #ffc05c 100%);
top: -8px;
left: -8px;
bottom: -8px;
right: -8px;
position: absolute;
z-index:-1;
box-shadow: var(--boxShadow);
}
.achievement span:nth-of-type(2){
color: var(--orange);
}
@media screen and (max-width: 480px) {
.experience{
transform: scale(0.7);
}
}
================================================
FILE: src/components/Experience/Experience.jsx
================================================
import React, { useContext } from "react";
import { themeContext } from "../../Context";
import "./Experience.css";
const Experience = () => {
const theme = useContext(themeContext);
const darkMode = theme.state.darkMode;
return (
{/* darkMode */}
8+
years
Experience
);
};
export default Experience;
================================================
FILE: src/components/FloatingDiv/FloatingDiv.css
================================================
.floatingDiv {
justify-content: space-around;
background: white;
box-shadow: var(--boxShadow);
border-radius: 17px;
display: flex;
align-items: center;
padding: 0px 28px 0px 0px;
height: 4.5rem;
}
.floatingDiv > img {
transform: scale(0.4);
}
.floatingDiv > span {
font-family: sans-serif;
font-size: 16px;
/* yahan ye color add kia hy bad mein dark mode k waqt */
color: black;
}
================================================
FILE: src/components/FloatingDiv/FloatingDiv.jsx
================================================
import React from "react";
import './FloatingDiv.css'
const FloatinDiv = ({img, text1, text2}) => {
return (
// darkMode
{text1}
{text2}
);
};
export default FloatinDiv;
================================================
FILE: src/components/Footer/Footer.css
================================================
.footer {
display: flex;
align-items: center;
margin: -0.5rem -3.5rem;
position: relative;
margin-top: -7rem;
}
.f-content {
position: absolute;
display: flex;
align-items: center;
justify-content: center;
flex-direction: column;
width: 100%;
margin-top: 4rem;
gap: 4rem;
color: white;
}
.f-icons {
display: flex;
gap: 2rem;
}
@media screen and (max-width: 480px){
.f-content{
transform: scale(.5);
}
}
================================================
FILE: src/components/Footer/Footer.jsx
================================================
import React from "react";
import "./Footer.css";
import Wave from "../../img/wave.png";
import Insta from "@iconscout/react-unicons/icons/uil-instagram";
import Facebook from "@iconscout/react-unicons/icons/uil-facebook";
import Gitub from "@iconscout/react-unicons/icons/uil-github";
const Footer = () => {
return (
);
};
export default Footer;
================================================
FILE: src/components/Intro/Intro.css
================================================
.Intro {
display: flex;
height: 77vh;
margin-top: 6rem;
}
/* left side styling */
.i-left {
display: flex;
position: relative;
flex: 1;
flex-direction: column;
gap: 2rem;
}
.i-name {
display: flex;
flex-direction: column;
gap: 0.25rem;
}
.i-name > :nth-child(1) {
color: var(--black);
font-weight: bold;
font-size: 3rem;
}
.i-name > :nth-child(2) {
color: var(--orange);
font-weight: bold;
font-size: 3rem;
}
.i-name > :nth-child(3) {
font-weight: 100;
font-size: 14px;
color: var(--gray);
margin-top: 10px;
}
.i-button {
width: 6rem;
height: 2rem;
}
.i-icons {
margin-top: 3rem;
display: flex;
gap: 0rem;
}
.i-icons > * {
transform: scale(0.5);
}
.i-icons > *:hover {
cursor: pointer;
}
/* right side styling */
.i-right {
flex: 1;
position: relative;
}
.i-right > * {
position: absolute;
z-index: 1;
}
.i-right > :nth-child(1) {
transform: scale(0.69);
left: -15%;
top: -9%;
}
.i-right > :nth-child(2) {
top: -4.6rem;
transform: scale(0.67);
left: -3rem;
}
.i-right > :nth-child(3) {
transform: scale(1.4);
left: 28%;
}
.i-right > :nth-child(4) {
transform: scale(0.62);
top: -19%;
left: -24%;
border-radius: 50%;
padding: 0;
}
/* blur */
.blur {
position: absolute;
width: 22rem;
height: 14rem;
border-radius: 50%;
background: #edd0ff;
filter: blur(212px);
z-index: -9;
top: -18%;
left: 56%;
filter: blur(72px);
}
@media screen and (max-width: 480px) {
.Intro {
flex-direction: column;
gap: 7rem;
height: 64rem;
}
.i-right {
transform: scale(0.8);
left: -3rem;
}
.i-right .blur {
display: none;
}
.floating-div:nth-of-type(1){
/* display: none; */
top: -7rem !important;;
}
}
================================================
FILE: src/components/Intro/Intro.jsx
================================================
import React, { useContext } from "react";
import "./Intro.css";
import Vector1 from "../../img/Vector1.png";
import Vector2 from "../../img/Vector2.png";
import boy from "../../img/boy.png";
import glassesimoji from "../../img/glassesimoji.png";
import thumbup from "../../img/thumbup.png";
import crown from "../../img/crown.png";
import FloatinDiv from "../FloatingDiv/FloatingDiv";
import Github from "../../img/github.png";
import LinkedIn from "../../img/linkedin.png";
import Instagram from "../../img/instagram.png";
import { themeContext } from "../../Context";
import { motion } from "framer-motion";
import { Link } from "react-scroll";
const Intro = () => {
// Transition
const transition = { duration: 2, type: "spring" };
// context
const theme = useContext(themeContext);
const darkMode = theme.state.darkMode;
return (
{/* left name side */}
{/* yahan change hy darkmode ka */}
Hy! I Am
Andrew Thomas
Frontend Developer with high level of experience in web designing
and development, producting the Quality work
Hire me
{/* social icons */}
{/* right image side */}
{/* animation */}
{/* animation */}
{/* floatinDiv mein change hy dark mode ka */}
);
};
export default Intro;
================================================
FILE: src/components/Navbar/Navbar.css
================================================
.n-wrapper {
height: 10vh;
display: flex;
justify-content: space-between;
margin-bottom: 2rem;
top: 0;
}
.n-left {
flex: 1;
align-items: center;
justify-content: left;
display: flex;
gap: 2rem;
}
.n-name {
font-size: 1.3rem;
font-weight: bold;
}
.n-right {
flex: 1;
display: flex;
align-items: center;
justify-content: flex-end;
font-weight: 400;
}
.n-list {
flex: 10;
}
.n-list > ul {
display: flex;
gap: 2rem;
margin-right: 4rem;
}
.n-list > ul :hover {
color: var(--orange);
cursor: pointer;
}
.n-button {
flex: 2;
}
@media screen and (max-width: 480px) {
.n-list {
display: none;
}
}
================================================
FILE: src/components/Navbar/Navbar.jsx
================================================
import React from "react";
import Toggle from "../Toggle/Toggle";
import "./Navbar.css";
import { Link } from "react-scroll";
const navbar = () => {
return (
{/* left */}
{/* right */}
Home
Serivces
Experience
Protfolio
Testimonial
Contact
);
};
export default navbar;
================================================
FILE: src/components/Portfolio/Portfolio.css
================================================
.portfolio {
display: flex;
align-items: center;
justify-content: center;
flex-direction: column;
height: 70vh;
}
/* heading */
.portfolio span:nth-of-type(1) {
color: var(--black);
font-size: 2rem;
font-weight: bold;
}
.portfolio span:nth-of-type(2) {
color: var(--orange);
font-size: 2.5rem;
font-weight: bold;
}
/* slider */
.portfolio .swiper{
overflow: visible!important;
}
.portfolio-slider {
margin-top: 3rem;
width: 100%;
}
.portfolio-slider .swiper-slide {
width: 20rem;
}
.portfolio img {
width: 19rem;
filter: drop-shadow(-12px 15px 13px rgba(0, 0, 0, 0.25));
border-radius: 19px;
}
================================================
FILE: src/components/Portfolio/Portfolio.jsx
================================================
import React, { useContext } from "react";
import "./Portfolio.css";
import { Swiper, SwiperSlide } from "swiper/react"
import "swiper/css";
import Sidebar from "../../img/sidebar.png";
import Ecommerce from "../../img/ecommerce.png";
import HOC from "../../img/hoc.png";
import MusicApp from "../../img/musicapp.png";
import { themeContext } from "../../Context";
const Portfolio = () => {
const theme = useContext(themeContext);
const darkMode = theme.state.darkMode;
return (
);
};
export default Portfolio;
================================================
FILE: src/components/Services/Services.css
================================================
.services {
padding: 0 3rem 0 3rem;
display: flex;
height: 30rem;
margin-bottom: 8rem;
margin-top: 9rem;
margin-bottom: 13rem;
/* scroll view */
padding-top: 3rem;
}
/* left side */
.awesome {
display: flex;
flex-direction: column;
position: relative;
/* gap: 20px; */
}
.awesome > :nth-child(1) {
color: var(--black);
font-size: 2.5rem;
font-weight: bold;
}
.awesome > :nth-child(2) {
color: var(--orange);
font-size: 2.5rem;
font-weight: bold;
}
.awesome > :nth-child(3) {
color: var(--gray);
font-size: 14px;
margin-top: 1rem;
}
.s-button {
width: 8rem;
height: 2rem;
margin-top: 1rem;
}
/* right sided */
.cards {
position: relative;
}
.cards > * {
position: absolute;
}
/* blur */
.s-blur2 {
left: 14rem;
top: 8rem;
}
.s-blur1 {
top: 13rem;
left: -18rem;
}
@media screen and (max-width: 480px) {
.services {
margin-top: 0;
flex-direction: column;
gap: 5rem;
height: 66rem;
padding: 0;
}
.cards {
display: flex;
flex-direction: column;
gap: 17rem;
}
.cards > * {
position: static;
}
}
================================================
FILE: src/components/Services/Services.jsx
================================================
import React, { useContext } from "react";
import "./Services.css";
import Card from "../Card/Card";
import HeartEmoji from "../../img/heartemoji.png";
import Glasses from "../../img/glasses.png";
import Humble from "../../img/humble.png";
import { themeContext } from "../../Context";
import { motion } from "framer-motion";
import Resume from './resume.pdf';
const Services = () => {
// context
const theme = useContext(themeContext);
const darkMode = theme.state.darkMode;
// transition
const transition = {
duration: 1,
type: "spring",
};
return (
{/* left side */}
{/* dark mode */}
My Awesome
services
Lorem ispum is simpley dummy text of printing of printing Lorem
ispum is simpley dummy text of printing
Download CV
{/* right */}
{/* first card */}
{/* second card */}
{/* 3rd */}
);
};
export default Services;
================================================
FILE: src/components/Testimonials/Testimonial.css
================================================
.t-wrapper{
padding: 0 3rem 0 3rem;;
height: 100vh;
display: flex;
align-items: center;
justify-content: center;
margin-top: 7rem;
flex-direction: column;
gap: 2rem;
position: relative;
}
.t-heading{
align-self: start;
}
.t-heading>*{
font-size: 2rem;
font-weight: bold;
}
.t-heading span:nth-of-type(2){
color: var(--orange);
}
.t-blur1{
left: 38rem;
top: 16rem;
}
.t-blur2{
top: 9rem;
left: 0;
}
.testimonial{
display: flex;
flex-direction: column;
align-items: center;
justify-content: space-evenly;
padding: 2rem;
width: 30rem;
height: 12rem;
/* styles same as work.css */
background: rgba(255, 255, 255, 0.26);
border: 7px solid var(--blueCard);
box-shadow: var(--boxShadow);
border-radius: 20px;
}
.testimonial>img{
width: 6rem;
height: 6rem;
border-radius: 100%;
}
.testimonial>span{
color: var(--gray);
}
/* slider */
.t-wrapper .swiper {
width: 100%;
height: 70%;
}
.t-wrapper .swiper-slide{
display: flex;
align-items: center;
justify-content: center;
}
.t-wrapper .swiper-pagination-bullet-active{
background: var(--orange);
}
@media screen and (max-width: 480px){
.t-wrapper{
padding: 0;
}
.testimonial>img{
width: 70px;
height: 70px;
}
}
================================================
FILE: src/components/Testimonials/Testimonial.jsx
================================================
import React from "react";
import "./Testimonial.css";
import { Swiper, SwiperSlide } from "swiper/react";
import "swiper/css";
import { Pagination } from "swiper";
import "swiper/css/pagination";
import profilePic1 from "../../img/profile1.jpg";
import profilePic2 from "../../img/profile2.jpg";
import profilePic3 from "../../img/profile3.jpg";
import profilePic4 from "../../img/profile4.jpg";
const Testimonial = () => {
const clients = [
{
img: profilePic1,
review:
"Lorem ipsum dolor, sit amet consectetur adipisicing elit. Ex officiis molestiae quod tempora laudantium, cumque error a nisi placeat quae exercitationem, maiores reiciendis! Eaque dicta minima, iure maiores dolorum sed.",
},
{
img: profilePic2,
review:
"Lorem ipsum dolor, sit amet consectetur adipisicing elit. Ex officiis molestiae quod tempora laudantium, cumque error a nisi placeat quae exercitationem, maiores reiciendis! Eaque dicta minima, iure maiores dolorum sed.",
},
{
img: profilePic3,
review:
"Lorem ipsum dolor, sit amet consectetur adipisicing elit. Ex officiis molestiae quod tempora laudantium, cumque error a nisi placeat quae exercitationem, maiores reiciendis! Eaque dicta minima, iure maiores dolorum sed.",
},
{
img: profilePic4,
review:
"Lorem ipsum dolor, sit amet consectetur adipisicing elit. Ex officiis molestiae quod tempora laudantium, cumque error a nisi placeat quae exercitationem, maiores reiciendis! Eaque dicta minima, iure maiores dolorum sed.",
},
];
return (
Clients always get
Exceptional Work
from me...
{clients.map((client, index) => {
return (
{client.review}
);
})}
);
};
export default Testimonial;
================================================
FILE: src/components/Toggle/Toggle.css
================================================
.toggle{
display: flex;
justify-content:space-between;
border: 3px solid var(--orange);
border-radius: 1rem;
position: relative;
padding: 2px;
cursor: pointer;
}
.toggle>*{
width: 1rem;
height: 1rem;
color: var(--orange);
}
.t-button{
border-radius: 100%;
background: var(--orange);
position: absolute;
}
================================================
FILE: src/components/Toggle/Toggle.jsx
================================================
import React, { useContext } from "react";
import "./Toggle.css";
import Moon from "@iconscout/react-unicons/icons/uil-moon";
import Sun from "@iconscout/react-unicons/icons/uil-sun";
import { themeContext } from "../../Context";
const Toggle = () => {
const theme = useContext(themeContext);
const darkMode = theme.state.darkMode;
const handleClick = () => {
// debugger
theme.dispatch({ type: "toggle" });
};
return (
{/* toggle.css mein left ki property aik assign hy ussy delete
krna hy pehly */}
);
};
export default Toggle;
================================================
FILE: src/components/Works/Works.css
================================================
.works {
padding: 0 3rem 0 3rem;
display: flex;
height: 90vh;
margin-top: 4rem;
/* scroll */
align-items: center;
}
/* left side */
.awesome {
display: flex;
flex-direction: column;
position: relative;
}
.awesome > :nth-child(1) {
color: var(--black);
font-size: 2.5rem;
font-weight: bold;
}
.awesome > :nth-child(2) {
color: var(--orange);
font-size: 2.5rem;
font-weight: bold;
}
.awesome > :nth-child(3) {
color: var(--gray);
font-size: 14px;
margin-top: 1rem;
}
.s-button {
width: 8rem;
height: 2rem;
margin-top: 4rem;
}
/* right side */
.w-right {
position: relative;
}
.w-mainCircle {
left: 9rem;
position: relative;
width: 18rem;
height: 18rem;
border-radius: 100%;
box-shadow: var(--smboxShadow);
top: 2rem;
background: white;
/* darkMode */
z-index: 2;
}
.w-mainCircle > * {
position: absolute;
}
.w-mainCircle > :nth-child(1) {
top: -3rem;
left: 6rem;
}
.w-mainCircle > :nth-child(2) {
left: -3rem;
top: 5rem;
}
.w-mainCircle > :nth-child(3) {
left: 6rem;
top: 5rem;
}
.w-mainCircle > :nth-child(4) {
left: 15rem;
top: 5rem;
}
.w-mainCircle > :nth-child(5) {
left: 6rem;
top: 13rem;
}
.w-secCircle {
width: 6rem;
height: 6rem;
position: absolute;
border-radius: 100%;
border: 5px solid #ebebeb;
display: flex;
align-items: center;
justify-content: center;
background: "none";
box-shadow: var(--smboxShadow);
background: white;
}
.w-secCircle > img {
transform: scale(0.6);
}
.w-backCircle {
position: absolute;
height: 13rem;
width: 13rem;
border-radius: 100%;
/* darkMode */
z-index: 1;
}
.blueCircle {
background: #1949b8;
left: 18rem;
top: 0rem;
}
.yellowCircle {
background: #f5c32c;
left: 18rem;
top: 8rem;
}
@media screen and (max-width: 480px) {
.works {
flex-direction: column;
height: 55rem;
padding: 0;
gap: 5rem;
}
.w-right {
display: flex;
align-items: flex-start;
justify-content:start;
transform: scale(0.7);
}
.w-mainCircle{
position: static;
}
.w-backCircle{
left: 8rem!important;
}
}
================================================
FILE: src/components/Works/Works.jsx
================================================
import React, { useContext } from "react";
import "./Works.css";
import Upwork from "../../img/Upwork.png";
import Fiverr from "../../img/fiverr.png";
import Amazon from "../../img/amazon.png";
import Shopify from "../../img/Shopify.png";
import Facebook from "../../img/Facebook.png";
import { themeContext } from "../../Context";
import { motion } from "framer-motion";
import {Link} from 'react-scroll'
const Works = () => {
// context
const theme = useContext(themeContext);
const darkMode = theme.state.darkMode;
// transition
return (
{/* left side */}
{/* dark Mode */}
Works for All these
Brands & Clients
Lorem ispum is simpley dummy text of printing of printing Lorem
ispum is simpley dummy text of printingLorem ispum is simpley dummy
text
y dummy text of printingLorem
ispum is simpley dummy text of printing
Hire Me
{/* right side */}
{" "}
{/* background Circles */}
);
};
export default Works;
================================================
FILE: src/index.js
================================================
import React from 'react';
import ReactDOM from 'react-dom';
import App from './App';
import { ThemeProvider } from './Context';
ReactDOM.render(
,
document.getElementById('root')
);
// If you want to start measuring performance in your app, pass a function
// to log results (for example: reportWebVitals(console.log))
// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals