├── src
├── App.css
├── index.css
├── reportWebVitals.js
├── StateProvider.js
├── firebase.js
├── components
│ ├── Checkout.css
│ ├── Home.css
│ ├── Subtotal.css
│ ├── CheckoutProduct.css
│ ├── Subtotal.js
│ ├── CheckoutProduct.js
│ ├── Checkout.js
│ ├── Product.js
│ ├── Product.css
│ ├── Header.js
│ ├── Footer.js
│ ├── Header.css
│ ├── Footer.css
│ └── Home.js
├── App.js
├── index.js
└── reducer.js
├── public
├── robots.txt
├── banner2.jpg
├── banner3.jpg
├── favicon.ico
├── logo192.png
├── logo512.png
├── amazon-head.png
├── amazon-logo-main.png
├── manifest.json
└── index.html
├── .gitignore
├── README.md
└── package.json
/src/App.css:
--------------------------------------------------------------------------------
1 | .App {
2 | margin: 0;
3 | background: rgb(234, 237, 237);
4 | }
5 |
6 |
--------------------------------------------------------------------------------
/public/robots.txt:
--------------------------------------------------------------------------------
1 | # https://www.robotstxt.org/robotstxt.html
2 | User-agent: *
3 | Disallow:
4 |
--------------------------------------------------------------------------------
/public/banner2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Subhampreet/Amazon-Clone-ReactJS/HEAD/public/banner2.jpg
--------------------------------------------------------------------------------
/public/banner3.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Subhampreet/Amazon-Clone-ReactJS/HEAD/public/banner3.jpg
--------------------------------------------------------------------------------
/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Subhampreet/Amazon-Clone-ReactJS/HEAD/public/favicon.ico
--------------------------------------------------------------------------------
/public/logo192.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Subhampreet/Amazon-Clone-ReactJS/HEAD/public/logo192.png
--------------------------------------------------------------------------------
/public/logo512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Subhampreet/Amazon-Clone-ReactJS/HEAD/public/logo512.png
--------------------------------------------------------------------------------
/public/amazon-head.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Subhampreet/Amazon-Clone-ReactJS/HEAD/public/amazon-head.png
--------------------------------------------------------------------------------
/public/amazon-logo-main.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Subhampreet/Amazon-Clone-ReactJS/HEAD/public/amazon-logo-main.png
--------------------------------------------------------------------------------
/.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.css:
--------------------------------------------------------------------------------
1 | body {
2 | margin: 0;
3 | font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen',
4 | 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue',
5 | sans-serif;
6 | -webkit-font-smoothing: antialiased;
7 | -moz-osx-font-smoothing: grayscale;
8 | }
9 |
10 | code {
11 | font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New',
12 | monospace;
13 | }
14 |
--------------------------------------------------------------------------------
/src/reportWebVitals.js:
--------------------------------------------------------------------------------
1 | const reportWebVitals = onPerfEntry => {
2 | if (onPerfEntry && onPerfEntry instanceof Function) {
3 | import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {
4 | getCLS(onPerfEntry);
5 | getFID(onPerfEntry);
6 | getFCP(onPerfEntry);
7 | getLCP(onPerfEntry);
8 | getTTFB(onPerfEntry);
9 | });
10 | }
11 | };
12 |
13 | export default reportWebVitals;
14 |
--------------------------------------------------------------------------------
/src/StateProvider.js:
--------------------------------------------------------------------------------
1 | import React, {createContext, useContext, useReducer} from 'react';
2 |
3 | export const StateContext = createContext();
4 |
5 | export const StateProvider = ({reducer, initialState, children}) => (
6 |
7 | {children}
8 |
9 | );
10 |
11 |
12 | export const useStateValue = () => useContext(StateContext);
13 |
14 |
15 |
--------------------------------------------------------------------------------
/src/firebase.js:
--------------------------------------------------------------------------------
1 | // For Firebase JS SDK v7.20.0 and later, measurementId is optional
2 | const firebaseConfig = {
3 | apiKey: "AIzaSyAacwKOFoLRUEJ0crtHGjtQNBldUAF_uoM",
4 | authDomain: "clone-a6865.firebaseapp.com",
5 | databaseURL: "https://clone-a6865.firebaseio.com",
6 | projectId: "clone-a6865",
7 | storageBucket: "clone-a6865.appspot.com",
8 | messagingSenderId: "987512157755",
9 | appId: "1:987512157755:web:89a3bcd713f30861200e1e",
10 | measurementId: "G-RF6CBW0L0Z"
11 | };
--------------------------------------------------------------------------------
/src/components/Checkout.css:
--------------------------------------------------------------------------------
1 | .checkout{
2 | display: flex;
3 | padding: 20px;
4 | background-color: white;
5 | height: max-content;
6 | }
7 |
8 | .checkout-ad{
9 | margin-bottom: 10px;
10 | width: 100%;
11 | }
12 |
13 |
14 | .checkout-title{
15 | margin-right: 10px;
16 | padding: 10px;
17 | border-bottom: 1px solid lightgray;
18 | display: flex;
19 | align-items: center;
20 | color: rgb(53, 51, 51);
21 | }
22 |
23 | .checkout-basket-icon{
24 | font-size: 35px !important;
25 | margin-right: 10px;
26 | }
--------------------------------------------------------------------------------
/public/manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "short_name": "React App",
3 | "name": "Create React App Sample",
4 | "icons": [
5 | {
6 | "src": "favicon.ico",
7 | "sizes": "64x64 32x32 24x24 16x16",
8 | "type": "image/x-icon"
9 | },
10 | {
11 | "src": "logo192.png",
12 | "type": "image/png",
13 | "sizes": "192x192"
14 | },
15 | {
16 | "src": "logo512.png",
17 | "type": "image/png",
18 | "sizes": "512x512"
19 | }
20 | ],
21 | "start_url": ".",
22 | "display": "standalone",
23 | "theme_color": "#000000",
24 | "background_color": "#ffffff"
25 | }
26 |
--------------------------------------------------------------------------------
/src/components/Home.css:
--------------------------------------------------------------------------------
1 | .home{
2 | /* display: flex;
3 | justify-content: center;
4 | margin-left: auto;
5 | margin-right: auto;
6 | max-width: 1450px; */
7 | }
8 |
9 | .home {
10 | max-width: 1470px;
11 | margin-left: auto;
12 | margin-right: auto;
13 | }
14 |
15 | .home-image {
16 | width: 100%;
17 | mask-image: linear-gradient(to bottom, rgba(0, 0, 0, 1), rgba(0, 0 ,0, 0.15));
18 | z-index: -1;
19 | margin-bottom: -200px;
20 | }
21 |
22 | .home-row{
23 | display: flex;
24 | z-index: 1;
25 | margin-left: 5px;
26 | margin-right: 5px;
27 | }
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
--------------------------------------------------------------------------------
/src/App.js:
--------------------------------------------------------------------------------
1 | import "./App.css";
2 | import Header from "./components/Header";
3 | import Home from "./components/Home";
4 | import Footer from "./components/Footer";
5 | import Checkout from "./components/Checkout";
6 | import { BrowserRouter as Router, Switch, Route } from "react-router-dom";
7 |
8 | function App() {
9 | return (
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 | );
30 | }
31 |
32 | export default App;
33 |
--------------------------------------------------------------------------------
/src/index.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import ReactDOM from 'react-dom';
3 | import './index.css';
4 | import App from './App';
5 | import reportWebVitals from './reportWebVitals';
6 | import { StateProvider } from './StateProvider';
7 | import reducer, {initialState} from "./reducer";
8 |
9 | ReactDOM.render(
10 |
11 |
12 |
13 |
14 | ,
15 | document.getElementById('root')
16 | );
17 |
18 | // If you want to start measuring performance in your app, pass a function
19 | // to log results (for example: reportWebVitals(console.log))
20 | // or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals
21 | reportWebVitals();
22 |
--------------------------------------------------------------------------------
/src/components/Subtotal.css:
--------------------------------------------------------------------------------
1 | .subtotal{
2 | display: flex;
3 | flex-direction: column;
4 | justify-content: space-between;
5 | width: 400px;
6 | height: 100px;
7 | padding: 20px;
8 | background-color: #f3f3f3;
9 | border: 1px solid #dddddd;
10 | border-radius: 3px;
11 | margin-left: 20px;
12 | }
13 |
14 | .subtotal p{
15 | margin-top: 0px;
16 | }
17 |
18 | .subtotal_gift{
19 | display: flex;
20 | align-items: center;
21 | }
22 |
23 | .subtotal_gift > input{
24 | margin-right: 5px;
25 | }
26 |
27 | .subtotal > button {
28 | background: #f0c14b;
29 | border-radius: 2px;
30 | width: 100%;
31 | padding: 5px;
32 | height: 30px;
33 | border: 1px solid;
34 | margin-top: 10px;
35 | border-color: #a88734 #9c7e31 #846a29;
36 | color: #111;
37 | }
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Amazon Clone Application using React JS
2 |
3 |
4 |
5 | ### Features
6 |
7 | Here's the feature's included in this project
8 |
9 | - 🌐 FULL Ecommerce functionality which includes both back-end and front-end
10 | - 👨👩👧👦 Login Page
11 | - 📦 Products Page
12 | - 🛒 Cart and Checkout Page
13 | - 💳 REAL Payments (Stripe Credit Card Payments)
14 | - 📝 Order History Page (Real time database)
15 | - ❄ Awesome animations like React Hover effects
16 |
17 | ### Referances
18 |
19 | - [Amazon Clone Application Using React JS - Video Tutorial](https://www.youtube.com/watch?v=RDV3Z1KCBvo&t=6005s)
20 | - [The Amazon Clone Written Guide](https://medium.com/cleverprogrammer/amazon-clone-using-react-the-ultimate-guide-fba2b36f3458)
21 |
22 |
23 |
--------------------------------------------------------------------------------
/src/components/CheckoutProduct.css:
--------------------------------------------------------------------------------
1 | .checkoutProduct{
2 | display: flex;
3 | margin-top: 20px;
4 | margin-bottom: 20px;
5 | max-width: 800px;
6 | margin: auto;
7 | align-items: center;
8 | }
9 |
10 | .checkoutProduct_info{
11 | padding-left: 20px;
12 | }
13 |
14 | .checkoutProduct_info > button {
15 | background: #f0c14b;
16 | border: 1px solid;
17 | margin-top: 10px;
18 | border-color: #a88734 #9c7e31 #846a29;
19 | color: #111;
20 | margin-top: 5px;
21 | }
22 |
23 |
24 | .checkoutProduct_image{
25 | object-fit: contain;
26 | width: 180px;
27 | height: 180px;
28 | }
29 |
30 | .checkoutProduct_title{
31 | font-size: 15px;
32 | font-weight: 700;
33 | letter-spacing: 0.04rem;
34 | margin-bottom: 0px;
35 | }
36 |
37 | .checkoutProduct_rating{
38 | margin-top: 5px;
39 | }
40 |
41 | .checkoutProduct_price{
42 | margin-top: 0px;
43 | margin-bottom: 0px;
44 | }
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "amazon-clone",
3 | "version": "0.1.0",
4 | "private": true,
5 | "dependencies": {
6 | "@material-ui/core": "^4.11.0",
7 | "@material-ui/icons": "^4.9.1",
8 | "@testing-library/jest-dom": "^5.11.5",
9 | "@testing-library/react": "^11.1.1",
10 | "@testing-library/user-event": "^12.2.0",
11 | "react": "^17.0.1",
12 | "react-currency-format": "^1.0.0",
13 | "react-dom": "^17.0.1",
14 | "react-router-dom": "^5.2.0",
15 | "react-scripts": "4.0.0",
16 | "web-vitals": "^0.2.4"
17 | },
18 | "scripts": {
19 | "start": "react-scripts start",
20 | "build": "react-scripts build",
21 | "test": "react-scripts test",
22 | "eject": "react-scripts eject"
23 | },
24 | "eslintConfig": {
25 | "extends": [
26 | "react-app",
27 | "react-app/jest"
28 | ]
29 | },
30 | "browserslist": {
31 | "production": [
32 | ">0.2%",
33 | "not dead",
34 | "not op_mini all"
35 | ],
36 | "development": [
37 | "last 1 chrome version",
38 | "last 1 firefox version",
39 | "last 1 safari version"
40 | ]
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/src/reducer.js:
--------------------------------------------------------------------------------
1 | export const initialState = {
2 | basket: [],
3 | };
4 |
5 | export const getBasketTotal = (basket) =>
6 | basket?.reduce((amount, item) => item.price + amount, 0);
7 |
8 | const reducer = (state, action) => {
9 |
10 | console.log(action);
11 |
12 | switch(action.type){
13 | case 'ADD_TO_BASKET':
14 | return {
15 | ...state,
16 | basket: [...state.basket, action.item],
17 | };
18 |
19 | case 'REMOVE_FROM_BASKET':
20 | const index = state.basket.findIndex(
21 | (basketItem) => basketItem.id === action.id
22 | )
23 | let newBasket = [...state.basket]
24 |
25 | if(index >= 0){
26 | newBasket.splice(index, 1);
27 | } else{
28 | console.warn(
29 | `Can't remove the product (id: ${action.id}) as its not present in the basket!`
30 | )
31 | }
32 |
33 | return {...state, basket : newBasket}
34 |
35 | default:
36 | return state;
37 | }
38 | };
39 |
40 | export default reducer;
--------------------------------------------------------------------------------
/src/components/Subtotal.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import './Subtotal.css';
3 | import CurrencyFormat from "react-currency-format";
4 | import { ShoppingBasket } from '@material-ui/icons';
5 | import { useStateValue } from "../StateProvider";
6 | import {getBasketTotal} from "../reducer";
7 |
8 | function Subtotal() {
9 |
10 | const [{ basket}, dispatch] = useStateValue();
11 |
12 | return (
13 |
35 | )
36 | }
37 |
38 | export default Subtotal
39 |
--------------------------------------------------------------------------------
/src/components/CheckoutProduct.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import "./CheckoutProduct.css";
3 | import StarIcon from "@material-ui/icons/Star";
4 | import {useStateValue} from "../StateProvider";
5 |
6 | function CheckoutProduct({id, image, title, price, rating}) {
7 |
8 | const [{basket}, dispatch] = useStateValue();
9 |
10 | const removeFromBasket = () => {
11 | dispatch({
12 | type: 'REMOVE_FROM_BASKET',
13 | id: id,
14 | })
15 | }
16 |
17 | return (
18 |
19 |

20 |
21 |
22 |
{title}
23 |
24 | $
25 | {price}
26 |
27 |
28 | {Array(rating)
29 | .fill()
30 | .map((_, i) => (
31 |
32 | ))}
33 |
34 |
35 |
36 |
37 | )
38 | }
39 |
40 | export default CheckoutProduct
41 |
--------------------------------------------------------------------------------
/src/components/Checkout.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import './Checkout.css';
3 | import ShoppingCartOutlinedIcon from '@material-ui/icons/ShoppingCartOutlined';
4 | import Subtotal from './Subtotal';
5 | import CheckoutProduct from "./CheckoutProduct";
6 | import { useStateValue } from "../StateProvider";
7 |
8 |
9 | function Checkout() {
10 |
11 | const [{basket}, dispatch] = useStateValue();
12 |
13 | return (
14 |
15 |
16 |

17 |
18 |
19 |
Your Shopping Cart
20 |
21 | {basket.map(item => (
22 |
29 | ))}
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 | )
40 | }
41 |
42 | export default Checkout
43 |
--------------------------------------------------------------------------------
/src/components/Product.js:
--------------------------------------------------------------------------------
1 | // import { CenterFocusStrongOutlined } from "@material-ui/icons";s
2 | import React from "react";
3 | import "./Product.css";
4 | import StarIcon from "@material-ui/icons/Star";
5 | import { useStateValue } from "../StateProvider";
6 |
7 | function Product({id, title, image, price, rating, author, subtitle }) {
8 |
9 | const [{basket}, dispatch] = useStateValue();
10 |
11 | console.log("this is the basket >>> ", basket);
12 |
13 | const addToBasket = () => {
14 | dispatch({
15 | type: "ADD_TO_BASKET",
16 | item: {
17 | id: id,
18 | title: title,
19 | image: image,
20 | price: price,
21 | rating: rating,
22 | },
23 | });
24 | };
25 |
26 | return (
27 |
28 |
29 |
{title}
30 |
{subtitle}
31 |
{author}
32 |
33 |
34 | {Array(rating)
35 | .fill()
36 | .map((_, i) => (
37 |
38 | ))}
39 |
40 |
41 |
42 |
$ {price}
43 |
44 |
45 |
46 |
47 |

48 |
49 |
50 |
51 | );
52 | }
53 |
54 | export default Product;
55 |
--------------------------------------------------------------------------------
/src/components/Product.css:
--------------------------------------------------------------------------------
1 | .product{
2 | display: flex;
3 | flex-direction: column;
4 | align-items: center;
5 | justify-content: flex-end;
6 | margin: 10px;
7 | padding: 10px;
8 | width: 100%;
9 | max-height: 400px;
10 | min-width: 100px;
11 | background-color: white;
12 | z-index: 1;
13 | }
14 |
15 |
16 | .product-info{
17 | height: 100px;
18 | margin-bottom: 15px;
19 | width: 90%;
20 | }
21 |
22 | .product_price{
23 | color: rgb(221, 24, 24);
24 | }
25 |
26 | .product_price h2{
27 | font-weight: 500 !important;
28 | }
29 |
30 | .product > button{
31 | background: #f0c14b;
32 | border: 1px solid;
33 | padding: 3px 6px;
34 | margin-top: 0px;
35 | border-color: #a88734 #9c7e31 #846a29;
36 | color: #111;
37 | margin-bottom: 8px;
38 | margin-top: 10px;
39 | }
40 |
41 | .product > button:hover{
42 | background: #ebb839;
43 | }
44 |
45 |
46 | .product > img{
47 | max-height: 200px;
48 | width: 100%;
49 | object-fit: contain;
50 | margin-top: 25px;
51 | }
52 |
53 |
54 | .product-title{
55 | font-weight: 500;
56 | margin-bottom: -10px;
57 | }
58 |
59 |
60 | .product-author{
61 | color: rgb(141, 140, 140);
62 | font-size: 13.5px;
63 | }
64 |
65 | .product-subtitle{
66 | color: rgb(68, 66, 66);
67 | font-size: 13px;
68 | width: 95%;
69 | margin-bottom: -11px;
70 | }
71 |
72 | .star-icon{
73 | color: rgb(250, 194, 10);
74 | font-size: 22px !important;
75 | }
76 |
77 |
78 | .product-business{
79 | margin-top: -47px;
80 | display: flex;
81 | align-items: center;
82 | justify-content: space-between;
83 | width: 95%;
84 | }
--------------------------------------------------------------------------------
/public/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
12 |
13 |
17 |
18 |
27 |
28 |
29 |
30 | React App
31 |
32 |
33 |
34 |
35 |
45 |
46 |
47 |
--------------------------------------------------------------------------------
/src/components/Header.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import './Header.css';
3 | import SearchIcon from '@material-ui/icons/Search';
4 | import ShoppingCartOutlinedIcon from '@material-ui/icons/ShoppingCartOutlined';
5 | import {Link} from "react-router-dom";
6 | import { useStateValue } from '../StateProvider';
7 |
8 | function Header() {
9 | const [{ basket }, dispatch] = useStateValue();
10 |
11 | return (
12 |
13 |
14 |

15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 | Hello, Guest
26 | Sign In
27 |
28 |
29 |
30 | Returns
31 | & Orders
32 |
33 |
34 |
35 | Your
36 | Prime
37 |
38 |
39 |
40 |
41 |
42 |
43 | {basket?.length}
44 |
45 |
46 |
47 | )
48 | }
49 |
50 | export default Header
51 |
--------------------------------------------------------------------------------
/src/components/Footer.js:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import "./Footer.css";
3 |
4 | function Footer() {
5 | return (
6 |
7 |
8 |
Back to top
9 |
10 |
11 |
12 |
Get to Know Us
13 | About Us
14 | Careers
15 | Press Release
16 | Amazon Cities
17 | Gift a Smile
18 |
19 |
20 |
Connect with Us
21 | Facebook
22 | Twitter
23 | Instagram
24 |
25 |
26 |
Make Money with Us
27 | Sell on Amazon
28 | Sell under Amazon Accelerator
29 | Become an Affiliate
30 | Advertise Your Products
31 | Amazon Pau on Merchants
32 |
33 |
34 |
Let Us help You
35 | COVID-19 and Amazon
36 | Your Account
37 | Returns Centre
38 | 100% App Download
39 | Amazon App Download
40 |
41 |
42 |
43 |

44 |
45 |
Australia
46 | Brazil
47 | Canada
48 | China
49 | France
50 | Germany
51 | Italy
52 | Japan
53 | Mexico
54 | Netherlands
55 | Singapore
56 | Spain
57 | United Arab Emirates
58 | United Kingdom
59 | United States
60 |
61 |
62 |
63 | );
64 | }
65 |
66 | export default Footer;
67 |
--------------------------------------------------------------------------------
/src/components/Header.css:
--------------------------------------------------------------------------------
1 | .header{
2 | height: 60px;
3 | display: flex;
4 | align-items: center;
5 | background-color: #131921;
6 | position: sticky;
7 | top: 0;
8 | z-index: 100;
9 | font-family: 'Roboto', sans-serif;
10 | }
11 |
12 | .link{
13 | text-decoration: none ;
14 | }
15 |
16 |
17 | .header-logo{
18 | width: 100px;
19 | object-fit: contain;
20 | margin: 0 20px;
21 | margin-top: 18px;
22 | margin-bottom: 10px;
23 | }
24 |
25 |
26 |
27 | .header-search{
28 | display: flex;
29 | flex: 1;
30 | align-items: center;
31 | border-radius: 24px;
32 | }
33 |
34 | .header-searchInput{
35 | height: 12px;
36 | padding: 10px;
37 | border: none;
38 | width: 100%;
39 | border-top-left-radius: 2px;
40 | border-bottom-left-radius: 2px;
41 | }
42 |
43 | .header-search-icon{
44 | padding: 5px;
45 | height: 22px !important;
46 | background-color: #cd9042;
47 | border-bottom-right-radius: 2px;
48 | border-top-right-radius: 2px;
49 | }
50 |
51 |
52 | .header-nav{
53 | display: flex;
54 | justify-content: space-evenly;
55 | }
56 |
57 | .header-option-main{
58 | display: flex;
59 | flex-direction: column;
60 | margin-left: 20px;
61 | margin-right: 5px;
62 | color: white;
63 | }
64 |
65 |
66 | .header-option{
67 | display: flex;
68 | flex-direction: column;
69 | margin-left: 10px;
70 | margin-right: 5px;
71 | color: white;
72 | }
73 |
74 | .header-option-one{
75 | font-size: 12px;
76 | letter-spacing: 0.04rem;
77 | font-weight: 400;
78 | }
79 |
80 | .header-option-two{
81 | font-size: 15px;
82 | font-weight: 700;
83 | letter-spacing: 0.03rem;
84 | }
85 |
86 | .header-option-basket{
87 | display: flex;
88 | align-items: center;
89 | color: white;
90 | }
91 |
92 | .header-basket-icon{
93 | margin-left: 10px;
94 | font-size: 30px !important;
95 | }
96 |
97 | .header-basket-count{
98 | margin-right: 15px;
99 | margin-left: 5px;
100 | font-size: 20px;
101 | color: rgb(231, 80, 10);
102 | }
103 |
--------------------------------------------------------------------------------
/src/components/Footer.css:
--------------------------------------------------------------------------------
1 | .footer{
2 | width: 100%;
3 | display: flex;
4 | flex-direction: column;
5 | font-family: 'Roboto', sans-serif;
6 | }
7 |
8 |
9 | .footer1{
10 | background: rgb(60, 68, 102);
11 | width: 100%;
12 | height: 45px;
13 | color: white;
14 | display: flex;
15 | align-items: center;
16 | }
17 |
18 | .footer1 h4{
19 | margin: auto;
20 | font-weight: 400;
21 | letter-spacing: 0.04rem;
22 | font-size: 15px;
23 | }
24 |
25 | .footer-middle{
26 | background: rgb(38, 42, 61);
27 | width: 100%;
28 | color: white;
29 | display: flex;
30 | justify-content: space-evenly;
31 | padding: 40px 0;
32 | letter-spacing: 0.05rem;
33 | border-bottom: solid 0.1px lightgray;
34 | }
35 |
36 | .footer-row{
37 | margin-bottom: 25px;
38 | }
39 |
40 | .footer-middle h3{
41 | font-size: 17px;
42 | margin-bottom: -5px;
43 | }
44 |
45 | .footer-middle h5{
46 | font-weight: 400;
47 | font-size: 13.5px;
48 | margin-bottom: -12px;
49 | letter-spacing: 0.05rem;
50 | color: rgb(241, 237, 237);
51 | }
52 |
53 |
54 | .footer-bottom{
55 | width: 100%;
56 | background: rgb(38, 42, 61);
57 | color: white;
58 |
59 | }
60 |
61 | .footer-logo{
62 | width: 100px;
63 | margin: 20px 0 0 0;
64 | margin-left: 47%;
65 | }
66 |
67 |
68 | .footer-bottom-two{
69 | width: 70%;
70 | display: flex;
71 | justify-content: space-evenly;
72 | margin: auto;
73 | font-size: 18px;
74 | }
75 |
76 | .footer-bottom-two h6{
77 | font-weight: 300;
78 | letter-spacing: 0.05rem;
79 | }
80 |
81 | @media (max-width: 1100px) {
82 |
83 | .footer-bottom-two{
84 | width: 100%;
85 | font-size: 7px;
86 | margin-bottom: 20px;
87 | }
88 | }
89 |
90 | @media (max-width: 850px) {
91 |
92 | .footer-middle{
93 | margin: auto;
94 | }
95 |
96 | }
97 |
98 |
99 | @media (max-width: 600px) {
100 | .footer-middle{
101 | flex-direction: column;
102 | }
103 |
104 | .footer-row{
105 | margin-left: 30%;
106 | }
107 | }
108 |
109 |
110 |
111 |
112 |
--------------------------------------------------------------------------------
/src/components/Home.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import './Home.css';
3 | import Product from './Product';
4 |
5 | function Home() {
6 | return (
7 |
8 |
9 |

10 |
11 |
33 |
34 |
65 |
66 |
78 |
79 |
80 | )
81 | }
82 |
83 | export default Home;
84 |
85 |
86 |
--------------------------------------------------------------------------------