├── src
├── api
│ └── index.js
├── reducers
│ ├── index.js
│ ├── total.js
│ ├── cart.js
│ ├── products.js
│ └── wishlist.js
├── Redux
│ ├── Login
│ │ ├── Login.action.js
│ │ ├── Login.reducer.js
│ │ └── Login.type.js
│ └── Signup
│ │ ├── Signup.action.js
│ │ ├── Signup.type.js
│ │ └── Signup.reducer.js
├── components
│ ├── Address
│ │ ├── Address.jsx
│ │ ├── address.css
│ │ └── CheckOutHeader.jsx
│ ├── Assets
│ │ ├── Capture.PNG
│ │ └── Capture1.PNG
│ ├── Authentication
│ │ ├── google.png
│ │ ├── login.png
│ │ ├── Timer.jsx
│ │ ├── firebase.js
│ │ ├── Login.jsx
│ │ ├── login.css.js
│ │ ├── Front.jsx
│ │ ├── Register.jsx
│ │ ├── AuthOtp.jsx
│ │ └── ManualRegistration.jsx
│ ├── Profile
│ │ ├── Home.jsx
│ │ ├── Main.jsx
│ │ ├── Wishlist.jsx
│ │ ├── AllRoutesProfile.jsx
│ │ ├── SavedPayment.jsx
│ │ ├── Orders.jsx
│ │ ├── ProfileOption.jsx
│ │ ├── Myprofile.jsx
│ │ └── Wallet.jsx
│ ├── Navbar
│ │ ├── MainNavbar.jsx
│ │ ├── NavFold
│ │ │ ├── Navbar.module.css
│ │ │ ├── Navbar.jsx
│ │ │ └── SubNavbar.jsx
│ │ └── CatBar
│ │ │ ├── NavbarPopUpComponents.jsx
│ │ │ ├── Beauty.jsx
│ │ │ ├── Luxe.jsx
│ │ │ ├── Appliances.jsx
│ │ │ ├── Hair.jsx
│ │ │ ├── Fragrence.jsx
│ │ │ ├── MomBaby.jsx
│ │ │ ├── NykaaFashion.jsx
│ │ │ ├── Mens.jsx
│ │ │ ├── Makeup.jsx
│ │ │ ├── Skin.jsx
│ │ │ ├── BodyBath.jsx
│ │ │ ├── Natural.jsx
│ │ │ └── Brands.jsx
│ ├── Home
│ │ ├── HomePage.jsx
│ │ ├── Carousel.module.css
│ │ ├── ScrollButton.jsx
│ │ ├── Carousel1.1.jsx
│ │ ├── Horizontal.module.css
│ │ ├── Home.module.css
│ │ ├── Carousel3.jsx
│ │ ├── Carousel4.jsx
│ │ ├── Carousel6.jsx
│ │ ├── Carousel7.jsx
│ │ ├── Carousel8.jsx
│ │ └── Carousel9.jsx
│ ├── ProductPage
│ │ ├── DataNotFound.jsx
│ │ ├── ProductCard.jsx
│ │ ├── Skeleton.jsx
│ │ └── products.module.css
│ ├── Payment
│ │ ├── paymentComponent
│ │ │ ├── Thnks.jsx
│ │ │ ├── Cod.jsx
│ │ │ ├── GooglePay.jsx
│ │ │ ├── Upi.jsx
│ │ │ └── Card.jsx
│ │ └── payment.module.css
│ ├── Footer
│ │ └── Footer.module.css
│ └── SingleProduct
│ │ ├── product.module.css
│ │ └── SingleProduct.jsx
├── Login
│ ├── signup.jsx
│ └── signin.jsx
├── setupTests.js
├── App.js
├── Admin
│ ├── Admincomponents
│ │ ├── AdminFooter.jsx
│ │ └── AdminNavbar.jsx
│ ├── Admin.jsx
│ ├── Admin.module.css
│ └── AdminPages
│ │ ├── AdminUsersList.jsx
│ │ └── AdminLoginPage.jsx
├── index.css
├── reportWebVitals.js
├── actions
│ ├── products.js
│ ├── cart.js
│ └── wishlist.js
├── constants
│ └── actionTypes.js
├── store
│ └── store.js
├── App.css
├── Main.jsx
├── index.js
└── logs
│ ├── Signup.jsx
│ └── Signin.jsx
├── public
├── robots.txt
├── favicon.ico
├── logo192.webp
├── logo512.png
├── manifest.json
└── index.html
├── .gitignore
├── README.md
└── package.json
/src/api/index.js:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/reducers/index.js:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/reducers/total.js:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/Redux/Login/Login.action.js:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/Redux/Login/Login.reducer.js:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/Redux/Login/Login.type.js:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/Redux/Signup/Signup.action.js:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/Redux/Signup/Signup.type.js:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/Redux/Signup/Signup.reducer.js:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/components/Address/Address.jsx:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/components/Address/address.css:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/components/Address/CheckOutHeader.jsx:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/public/robots.txt:
--------------------------------------------------------------------------------
1 | # https://www.robotstxt.org/robotstxt.html
2 | User-agent: *
3 | Disallow:
4 |
--------------------------------------------------------------------------------
/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chandrashekharjoshi302/amazing-pocket-7061/HEAD/public/favicon.ico
--------------------------------------------------------------------------------
/public/logo192.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chandrashekharjoshi302/amazing-pocket-7061/HEAD/public/logo192.webp
--------------------------------------------------------------------------------
/public/logo512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chandrashekharjoshi302/amazing-pocket-7061/HEAD/public/logo512.png
--------------------------------------------------------------------------------
/src/components/Assets/Capture.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chandrashekharjoshi302/amazing-pocket-7061/HEAD/src/components/Assets/Capture.PNG
--------------------------------------------------------------------------------
/src/components/Assets/Capture1.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chandrashekharjoshi302/amazing-pocket-7061/HEAD/src/components/Assets/Capture1.PNG
--------------------------------------------------------------------------------
/src/components/Authentication/google.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chandrashekharjoshi302/amazing-pocket-7061/HEAD/src/components/Authentication/google.png
--------------------------------------------------------------------------------
/src/components/Authentication/login.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chandrashekharjoshi302/amazing-pocket-7061/HEAD/src/components/Authentication/login.png
--------------------------------------------------------------------------------
/src/components/Profile/Home.jsx:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 |
3 | const Home = () => {
4 | return (
5 |
Home
6 | )
7 | }
8 |
9 | export default Home
--------------------------------------------------------------------------------
/src/Login/signup.jsx:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 |
3 | function signup() {
4 | return (
5 |
6 |
signupdfafaa
7 |
8 | )
9 | }
10 |
11 | export default signup
--------------------------------------------------------------------------------
/src/Login/signin.jsx:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 |
3 | function signin() {
4 | return (
5 | signin
6 |
sadadadada
7 |
8 | )
9 | }
10 |
11 | export default signin
--------------------------------------------------------------------------------
/src/setupTests.js:
--------------------------------------------------------------------------------
1 | // jest-dom adds custom jest matchers for asserting on DOM nodes.
2 | // allows you to do things like:
3 | // expect(element).toHaveTextContent(/react/i)
4 | // learn more: https://github.com/testing-library/jest-dom
5 | import '@testing-library/jest-dom';
6 |
--------------------------------------------------------------------------------
/src/components/Navbar/MainNavbar.jsx:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import Navbar from "./NavFold/Navbar";
3 | import SubNavbar from "./NavFold/SubNavbar";
4 |
5 | const MainNavbar = () => {
6 | return (
7 |
8 |
9 |
10 |
11 | );
12 | };
13 |
14 | export default MainNavbar;
15 |
--------------------------------------------------------------------------------
/src/components/Home/HomePage.jsx:
--------------------------------------------------------------------------------
1 | import { ChakraProvider } from "@chakra-ui/react";
2 | import Home from "./Home.jsx";
3 | import ScrollButton from "./ScrollButton";
4 | function HomePage() {
5 | return (
6 |
7 |
8 |
9 |
10 | );
11 | }
12 | export default HomePage;
13 |
--------------------------------------------------------------------------------
/src/App.js:
--------------------------------------------------------------------------------
1 |
2 | import './App.css';
3 | import Footer from './components/Footer/Footer';
4 | import MainNavbar from './components/Navbar/MainNavbar';
5 |
6 | import Main from './Main';
7 |
8 | function App() {
9 | return (
10 |
11 |
12 |
13 |
14 |
15 | );
16 | }
17 |
18 | export default App;
19 |
--------------------------------------------------------------------------------
/.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/Admin/Admincomponents/AdminFooter.jsx:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import "../Admin.module.css"
3 | const AdminFooter = () => {
4 | return (
5 |
6 |
Design And Developed By : Chandrashekhar joshi
7 |
8 |
9 |
10 | All Rights Reserved © Chandrashekhar
11 |
12 | );
13 | };
14 |
15 | export default AdminFooter;
--------------------------------------------------------------------------------
/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 |
15 |
--------------------------------------------------------------------------------
/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/components/Home/Carousel.module.css:
--------------------------------------------------------------------------------
1 | .slidecontainer {
2 | width: 100%;
3 | margin: auto;
4 | margin-top: 20px;
5 | }
6 |
7 | .eachslide > div {
8 | align-items: center;
9 | justify-content: center;
10 | background-size: cover;
11 | height: 320px;
12 | }
13 |
14 | .eachslide span {
15 | padding: 20px;
16 | font-size: 20px;
17 | background: #efefef;
18 | text-align: center;
19 | }
20 | .sb_main{
21 | /* border: 3px solid blue; */
22 | width: 1440px;
23 | }
24 |
--------------------------------------------------------------------------------
/src/actions/products.js:
--------------------------------------------------------------------------------
1 | import { GET_PRODUCTS_ERROR, GET_PRODUCTS_LOADING, GET_PRODUCTS_SUCCESS } from "../constants/actionTypes"
2 | import axios from "axios";
3 | export const getProducts=(url)=>async (dispatch)=>{
4 | dispatch({type:GET_PRODUCTS_LOADING});
5 | try {
6 |
7 | const res=await axios.get(url);
8 |
9 | dispatch({type:GET_PRODUCTS_SUCCESS,payload:res.data});
10 | } catch (error) {
11 | dispatch({type:GET_PRODUCTS_ERROR,payload:error.message});
12 | }
13 | }
--------------------------------------------------------------------------------
/src/actions/cart.js:
--------------------------------------------------------------------------------
1 | import axios from "axios";
2 | import { ADDTO_CART_ERROR, ADDTO_CART_LOADING, ADDTO_CART_SUCCESS } from "../constants/actionTypes"
3 |
4 |
5 | export const addToCart=(data)=>async(dispatch)=>{
6 | dispatch({type:ADDTO_CART_LOADING});
7 | try {
8 | let res = await axios.post("https://nyka-json.onrender.com/carts",data);
9 | dispatch({type:ADDTO_CART_SUCCESS , payload:res.data});
10 | } catch (error) {
11 | dispatch({type:ADDTO_CART_ERROR, payload:error.message});
12 | }
13 | }
--------------------------------------------------------------------------------
/src/actions/wishlist.js:
--------------------------------------------------------------------------------
1 | import axios from "axios";
2 | import { ADDTO_WISHLIST_ERROR, ADDTO_WISHLIST_LOADING, ADDTO_WISHLIST_SUCCESS } from "../constants/actionTypes"
3 |
4 |
5 | export const addToWishlist=(data)=>async(dispatch)=>{
6 | dispatch({type:ADDTO_WISHLIST_LOADING});
7 | try {
8 | let res = await axios.post("https://nyka-json.onrender.com/wishlists",data);
9 | dispatch({type:ADDTO_WISHLIST_SUCCESS , payload:res.data});
10 | } catch (error) {
11 | dispatch({type:ADDTO_WISHLIST_ERROR, payload:error.message});
12 | }
13 | }
--------------------------------------------------------------------------------
/src/constants/actionTypes.js:
--------------------------------------------------------------------------------
1 | export const GET_PRODUCTS_LOADING="products/get/loading";
2 | export const GET_PRODUCTS_SUCCESS="products/get/success";
3 | export const GET_PRODUCTS_ERROR="products/get/error";
4 |
5 |
6 | export const ADDTO_CART_LOADING="cart/post/loading";
7 | export const ADDTO_CART_SUCCESS="cart/post/success";
8 | export const ADDTO_CART_ERROR="cart/post/error";
9 |
10 |
11 |
12 |
13 | export const ADDTO_WISHLIST_LOADING="wishlist/post/loading";
14 | export const ADDTO_WISHLIST_SUCCESS="wishlist/post/success";
15 | export const ADDTO_WISHLIST_ERROR="wishlist/post/error";
--------------------------------------------------------------------------------
/public/manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "short_name": "React App",
3 | "name": "Create React App Sample",
4 | "icons": [
5 | {
6 | "src": "logo192.webp",
7 | "sizes": "64x64 32x32 24x24 16x16",
8 | "type": "image/x-icon"
9 | },
10 | {
11 | "src": "logo192.webp",
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/store/store.js:
--------------------------------------------------------------------------------
1 | import {applyMiddleware, combineReducers, compose, legacy_createStore} from "redux"
2 | import { productReducer } from "../reducers/products";
3 | import thunk from "redux-thunk"
4 | import { cartReducer } from "../reducers/cart";
5 | import { wishListReducer } from "../reducers/wishlist";
6 |
7 | export const rootReducer=combineReducers({
8 | productsManager:productReducer,
9 | cartsManager:cartReducer,
10 | wishListsManager:wishListReducer
11 | });
12 |
13 |
14 | const composer=window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose();
15 |
16 | export const store=legacy_createStore(rootReducer,composer(applyMiddleware(thunk)));
--------------------------------------------------------------------------------
/src/components/ProductPage/DataNotFound.jsx:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import styles from '../ProductPage/products.module.css';
3 | const DataNotFound = () => {
4 | return (
5 |
6 |
7 |
Oops ! No more data found 🤒
8 |
9 |
window.location.reload()}>Go back
10 |
11 |
12 | )
13 | }
14 |
15 | export default DataNotFound
--------------------------------------------------------------------------------
/src/components/Authentication/Timer.jsx:
--------------------------------------------------------------------------------
1 | import React, { useState, useEffect, useRef } from "react";
2 | function Timer({ setAlert }) {
3 | const ref = useRef();
4 | const [count, setCounter] = useState(30);
5 | useEffect(() => {
6 | timer();
7 | return () => {
8 | clearInterval(ref.current);
9 | };
10 | }, []);
11 | const timer = () => {
12 | ref.current = setInterval(() => {
13 | setCounter((p) => {
14 | if (p === 1) {
15 | clearInterval(ref.current);
16 | setAlert(true);
17 | }
18 | return p - 1;
19 | });
20 | }, 1000);
21 | };
22 | return 0:{count}
;
23 | }
24 |
25 | export default Timer;
26 |
--------------------------------------------------------------------------------
/src/components/Authentication/firebase.js:
--------------------------------------------------------------------------------
1 | // Import the functions you need from the SDKs you need
2 | import { initializeApp } from "firebase/app";
3 | import { getAuth } from "firebase/auth";
4 | const firebaseConfig = {
5 | apiKey: "AIzaSyDPqBnM9g4zbWm7o37ur7Z-3U-1gPCO55s",
6 | authDomain: "nyka-clone.firebaseapp.com",
7 | projectId: "nyka-clone",
8 | storageBucket: "nyka-clone.appspot.com",
9 | messagingSenderId: "599053668129",
10 | appId: "1:599053668129:web:ee5249409f756d0227f860",
11 | measurementId: "G-0V6CEN6KP2",
12 | };
13 |
14 | // Initialize Firebase
15 | const app = initializeApp(firebaseConfig);
16 | const firebaseAuth = getAuth(app);
17 | export default firebaseAuth;
18 |
--------------------------------------------------------------------------------
/src/components/Profile/Main.jsx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | import { Box } from '@chakra-ui/react'
5 | import React from 'react'
6 | import AllRoutesProfile from './AllRoutesProfile'
7 | import ProfileOption from "./ProfileOption"
8 |
9 | const MAIN = () => {
10 | return (
11 |
19 | )
20 | }
21 |
22 | export default MAIN
--------------------------------------------------------------------------------
/src/components/Payment/paymentComponent/Thnks.jsx:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import {Alert,AlertIcon,AlertDescription,AlertTitle} from "@chakra-ui/react"
3 | function Thnks() {
4 | return (
5 |
6 |
7 |
8 |
17 |
18 |
19 |
20 | Payment Done!
21 |
22 |
23 | Thank you for your purchase!
24 |
25 |
26 |
27 | )
28 | }
29 |
30 | export default Thnks
--------------------------------------------------------------------------------
/src/App.css:
--------------------------------------------------------------------------------
1 | .App {
2 | text-align: center;
3 | }
4 |
5 | .App-logo {
6 | height: 40vmin;
7 | pointer-events: none;
8 | }
9 |
10 | @media (prefers-reduced-motion: no-preference) {
11 | .App-logo {
12 | animation: App-logo-spin infinite 20s linear;
13 | }
14 | }
15 |
16 | .App-header {
17 | background-color: #282c34;
18 | min-height: 100vh;
19 | display: flex;
20 | flex-direction: column;
21 | align-items: center;
22 | justify-content: center;
23 | font-size: calc(10px + 2vmin);
24 | color: white;
25 | }
26 |
27 | .App-link {
28 | color: #61dafb;
29 | }
30 |
31 | @keyframes App-logo-spin {
32 | from {
33 | transform: rotate(0deg);
34 | }
35 | to {
36 | transform: rotate(360deg);
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/src/Main.jsx:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import { Route, Routes } from 'react-router-dom'
3 | import Products from './components/ProductPage/Products'
4 | import MAIN from './components/Profile/Main'
5 | import HomePage from './components/Home/HomePage'
6 | import SingleProduct from './components/SingleProduct/SingleProduct'
7 | import Login from './components/Authentication/Login'
8 | const Main = () => {
9 | return(
10 |
11 | } />
12 | } />
13 | }>
14 | }>
15 | } />
16 |
17 | )
18 | }
19 |
20 | export default Main
--------------------------------------------------------------------------------
/src/components/Payment/paymentComponent/Cod.jsx:
--------------------------------------------------------------------------------
1 | import React, { useEffect } from "react";
2 | import { useDispatch, useSelector } from "react-redux";
3 | import { getAllCart } from "../../../actions/products";
4 | import Style from "../payment.module.css";
5 |
6 | export const Cod = () => {
7 | const { total } = useSelector((state) => state.cart);
8 | console.log(total);
9 | const dispatch = useDispatch();
10 |
11 | useEffect(() => {
12 | dispatch(getAllCart());
13 | }, [dispatch]);
14 | return (
15 |
16 |
17 |
CASH ON DELIVERY
18 |
19 |
20 |
21 | {`Pay By ₹${total} Cash`}
25 |
26 |
27 | );
28 | };
29 |
--------------------------------------------------------------------------------
/src/index.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import ReactDOM from 'react-dom/client';
3 | import './index.css';
4 | import App from './App';
5 | import reportWebVitals from './reportWebVitals';
6 | import { BrowserRouter } from 'react-router-dom';
7 | import { ChakraProvider } from '@chakra-ui/react';
8 | import { Provider } from 'react-redux';
9 | import {store} from "./store/store";
10 |
11 | const root = ReactDOM.createRoot(document.getElementById('root'));
12 | root.render(
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 | );
22 |
23 | // If you want to start measuring performance in your app, pass a function
24 | // to log results (for example: reportWebVitals(console.log))
25 | // or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals
26 | reportWebVitals();
27 |
--------------------------------------------------------------------------------
/src/components/Home/ScrollButton.jsx:
--------------------------------------------------------------------------------
1 | import React, { useState } from "react";
2 | import { FaArrowCircleUp } from "react-icons/fa";
3 | import styles from "./Home.module.css";
4 | const ScrollButton = () => {
5 | const [visible, setVisible] = useState(false);
6 |
7 | const toggleVisible = () => {
8 | const scrolled = document.documentElement.scrollTop;
9 | if (scrolled > 300) {
10 | setVisible(true);
11 | } else if (scrolled <= 300) {
12 | setVisible(false);
13 | }
14 | };
15 | const scrollToTop = () => {
16 | window.scrollTo({
17 | top: 0,
18 | behavior: "smooth",
19 | });
20 | };
21 | window.addEventListener("scroll", toggleVisible);
22 | return (
23 |
24 |
28 |
29 | );
30 | };
31 | export default ScrollButton;
32 |
--------------------------------------------------------------------------------
/src/components/Profile/Wishlist.jsx:
--------------------------------------------------------------------------------
1 | import { Box, Button, Center, Image,Text } from '@chakra-ui/react'
2 | import React from 'react'
3 | import Pic from "../Assets/Capture.PNG"
4 |
5 | const Wishlist = () => {
6 | return (
7 | <>
8 |
9 |
10 |
11 |
12 |
13 |
14 | NO ITEMS IN THE WISHLIST
15 |
16 |
17 | Add now, Buy Later.
18 |
19 |
20 | Save your favourite beauty items
21 |
22 |
23 | here!
24 |
25 |
26 | START SHOPPING
27 |
28 |
29 |
30 | >
31 | )
32 | }
33 |
34 | export default Wishlist
--------------------------------------------------------------------------------
/src/reducers/cart.js:
--------------------------------------------------------------------------------
1 | import { ADDTO_CART_ERROR, ADDTO_CART_LOADING, ADDTO_CART_SUCCESS } from "../constants/actionTypes"
2 |
3 |
4 | const cartState={
5 | carts:[],
6 | loading:false,
7 | error:false
8 | }
9 |
10 | export const cartReducer=(state=cartState,{type,payload})=>{
11 | switch(type){
12 | case ADDTO_CART_LOADING:{
13 | return {
14 | ...state,
15 | loading:true,
16 | error:false
17 | }
18 | }
19 | case ADDTO_CART_SUCCESS:{
20 | return {
21 | ...state,
22 | loading:false,
23 | carts:[...state.carts,payload]
24 | }
25 | }
26 | case ADDTO_CART_ERROR:{
27 | return {
28 | ...state,
29 | loading:false,
30 | error:payload
31 | }
32 | }
33 | default:{
34 | return state
35 | }
36 | }
37 | }
--------------------------------------------------------------------------------
/src/components/Profile/AllRoutesProfile.jsx:
--------------------------------------------------------------------------------
1 | import { Login } from '@mui/icons-material'
2 | import React from 'react'
3 | import { Route, Routes } from 'react-router-dom'
4 |
5 | import Home from './Home'
6 | import Myprofile from './Myprofile'
7 | import Orders from './Orders'
8 | import SavedPayment from './SavedPayment'
9 | import Wallet from './Wallet'
10 | import Wishlist from './Wishlist'
11 |
12 | const AllRoutesProfile = () => {
13 | return (
14 |
15 | }/>
16 | }/>
17 | }/>
18 | }/>
19 | }/>
20 | }/>
21 | } />
22 |
23 | {/* }/> */}
24 |
25 |
26 | )
27 | }
28 |
29 | export default AllRoutesProfile
--------------------------------------------------------------------------------
/src/reducers/products.js:
--------------------------------------------------------------------------------
1 | import { GET_PRODUCTS_ERROR, GET_PRODUCTS_LOADING, GET_PRODUCTS_SUCCESS } from "../constants/actionTypes"
2 |
3 | const productState={
4 | products:[],
5 | loading:false,
6 | error:false
7 | }
8 |
9 | export const productReducer=(state=productState,{type,payload})=>{
10 | switch(type){
11 | case GET_PRODUCTS_LOADING:{
12 | return {
13 | ...state,
14 | loading:true,
15 | error:false
16 | }
17 | }
18 | case GET_PRODUCTS_SUCCESS:{
19 | return {
20 | ...state,
21 | loading:false,
22 | products:payload,
23 |
24 | }
25 | }
26 | case GET_PRODUCTS_ERROR:{
27 | return {
28 | ...state,
29 | loading:false,
30 | error:payload
31 | }
32 | }
33 | default:{
34 | return state;
35 | }
36 | }
37 | }
--------------------------------------------------------------------------------
/src/reducers/wishlist.js:
--------------------------------------------------------------------------------
1 |
2 | import { ADDTO_WISHLIST_ERROR, ADDTO_WISHLIST_LOADING, ADDTO_WISHLIST_SUCCESS } from "../constants/actionTypes"
3 |
4 |
5 | const wishListState={
6 | wishlists:[],
7 | loading:false,
8 | error:false
9 | }
10 |
11 | export const wishListReducer=(state=wishListState,{type,payload})=>{
12 | switch(type){
13 | case ADDTO_WISHLIST_LOADING:{
14 | return {
15 | ...state,
16 | loading:true,
17 | error:false
18 | }
19 | }
20 | case ADDTO_WISHLIST_SUCCESS:{
21 | return {
22 | ...state,
23 | loading:false,
24 | wishlists:[...state.wishlists,payload]
25 | }
26 | }
27 | case ADDTO_WISHLIST_ERROR:{
28 | return {
29 | ...state,
30 | loading:false,
31 | error:payload
32 | }
33 | }
34 | default:{
35 | return state
36 | }
37 | }
38 | }
--------------------------------------------------------------------------------
/src/components/Payment/paymentComponent/GooglePay.jsx:
--------------------------------------------------------------------------------
1 | import { Box, TextField } from "@mui/material";
2 | import React from "react";
3 | import Style from "../payment.module.css";
4 |
5 | export const GooglePay = () => {
6 | return (
7 |
8 |
9 |
GooglePay
10 |
11 |
12 |
13 |
14 | :not(style)": { m: "0.5", width: "100%" },
18 | }}
19 | noValidate
20 | autoComplete="off"
21 | >
22 |
27 |
28 |
29 |
30 | SEND PAYMENT REQUEST
31 |
32 |
33 |
34 | );
35 | };
36 |
--------------------------------------------------------------------------------
/src/components/Authentication/Login.jsx:
--------------------------------------------------------------------------------
1 | import React,{useState} from 'react'
2 | import Front from './Front'
3 | import Register from './Register'
4 | import PhoneOTP from "./AuthOTP";
5 |
6 | import { container } from "./login.css"
7 | function Login() {
8 | const [view, setView] = useState("front");
9 | const [number, setNumber] = useState("");
10 | const [name, setName] = useState("")
11 | const [email, setEmail] = useState("")
12 | const [password, setPassword] = useState("")
13 | return (
14 |
15 | {view === "front" &&
}
16 | {view === "register" && (
17 |
25 | )}
26 |
27 |
28 | {view == "AuthOTP" &&
}
29 |
30 |
31 |
32 | );
33 | }
34 |
35 | export default Login
--------------------------------------------------------------------------------
/src/Admin/Admin.jsx:
--------------------------------------------------------------------------------
1 | import './Admin.module.css'
2 | import React from "react";
3 | import { Routes, Route } from "react-router-dom";
4 | import { ToastContainer } from "react-toastify";
5 |
6 |
7 | import "react-toastify/dist/ReactToastify.css";
8 |
9 |
10 | import AdminLoginPage from './AdminPages/AdminLoginPage'
11 | import AdminUsersList from "./AdminPages/AdminUsersList";
12 |
13 | import AdminHomePage from "./AdminPages/AdminHomePage";
14 | import AdminFooter from "./Admincomponents/AdminFooter";
15 | function Admin() {
16 | return (
17 | <>
18 |
33 |
34 |
35 |
36 |
37 | } />
38 | } />
39 | } />
40 |
41 |
42 | >
43 | );
44 | }
45 |
46 | export default Admin;
--------------------------------------------------------------------------------
/src/components/Profile/SavedPayment.jsx:
--------------------------------------------------------------------------------
1 | import { Box,Center,Image,Text } from '@chakra-ui/react'
2 | import React from 'react'
3 | import Pic from "../Assets/Capture1.PNG"
4 |
5 | const SavedPayment = () => {
6 | return (
7 |
8 |
9 |
10 | My Saved Payments
11 |
12 |
13 |
14 |
15 |
16 |
17 | You haved not saved any of your
18 |
19 |
20 | payment modes yet.
21 |
22 |
23 | After you make a purchase with Cards,
24 |
25 |
26 | UPI or PayTM they will appear here.
27 |
28 |
29 |
30 |
31 |
32 | )
33 | }
34 |
35 | export default SavedPayment
--------------------------------------------------------------------------------
/src/Admin/Admincomponents/AdminNavbar.jsx:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import { FaHouseUser } from "react-icons/fa";
3 | import { Link } from "react-router-dom";
4 | import "../Admin.module.css"
5 | const AdminNavbar = () => {
6 | return (
7 |
8 |
9 |
10 |
11 | {" "}
12 | User Managment System{" "}
13 |
14 |
15 |
16 |
17 |
18 | Add New
19 |
20 |
21 |
22 |
23 | Users
24 |
25 |
26 |
27 |
28 | Logout{" "}
29 |
30 |
31 |
32 |
33 |
34 |
35 | );
36 | };
37 |
38 | export default AdminNavbar
--------------------------------------------------------------------------------
/src/Admin/Admin.module.css:
--------------------------------------------------------------------------------
1 | @import url("https://fonts.googleapis.com/css2?family=Dancing+Script:wght@600&display=swap");
2 | body {
3 | margin: 0;
4 | font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen",
5 | "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue",
6 | sans-serif;
7 | -webkit-font-smoothing: antialiased;
8 | -moz-osx-font-smoothing: grayscale;
9 | }
10 |
11 | .form__container {
12 | min-height: 100vh;
13 | background: linear-gradient(90deg, #00c9ff 0%, #92fe9d 100%);
14 | }
15 | .form__container form {
16 | box-shadow: rgba(60, 64, 67, 0.3) 0px 1px 2px 0px,
17 | rgba(60, 64, 67, 0.15) 0px 1px 3px 1px;
18 | padding: 20px;
19 | }
20 | .form__heading {
21 | font-family: "Dancing Script", cursive;
22 | margin-bottom: 10px;
23 | }
24 | .form__button {
25 | width: 100%;
26 | background-color: black;
27 | color: white;
28 | padding: 5px;
29 | }
30 | .form__button:hover {
31 | background-color: rgba(0, 0, 0, 0.795);
32 | }
33 | .form__submit-btn {
34 | margin-top: 20px;
35 | width: 100%;
36 | color: white;
37 | background-color: black;
38 | padding: 10px 0px;
39 | }
40 | .form__submit-btn:hover {
41 | opacity: 0.9;
42 | }
43 | .content {
44 | min-height: 73vh !important;
45 | }
46 |
--------------------------------------------------------------------------------
/src/components/Navbar/NavFold/Navbar.module.css:
--------------------------------------------------------------------------------
1 | .container {
2 | position: fixed;
3 | z-index: 100000;
4 | width: 100vw;
5 | margin-top: -63px;
6 | }
7 | .card {
8 | display: flex;
9 | justify-content: space-evenly;
10 | align-items: center;
11 | height: 8vh;
12 | /* background-color: #ffffff; */
13 | }
14 | .card > div {
15 | display: flex;
16 | gap: 2vw;
17 | align-items: center;
18 | }
19 |
20 | .inputContainer {
21 | position: relative;
22 | }
23 | .inputContainer > p {
24 | position: absolute;
25 | top: -8px;
26 | left: 5px;
27 | }
28 | .input {
29 | width: 15vw;
30 | height: 4.5vh;
31 | padding-left: 30px;
32 | font-size: 15px;
33 | outline: none;
34 | background: #f4f4f4;
35 | border: 1px solid rgb(212, 212, 212);
36 | border-radius: 5px;
37 | }
38 | .input:focus {
39 | border: 2px solid #fc3581;
40 | }
41 | .card2 {
42 | display: flex;
43 | gap: 0.5vw;
44 | cursor: pointer;
45 | }
46 | .card3 {
47 | display: flex;
48 | gap: 1.4vw;
49 | }
50 | .card4 {
51 | height: 12vh;
52 | color: white;
53 | cursor: pointer;
54 | }
55 | .card4 ~ p {
56 | font-weight: 600;
57 | }
58 | .card4 ~ p:hover {
59 | color: #fc3581;
60 | cursor: pointer;
61 | }
62 | .content {
63 | position: absolute;
64 | z-index: 100000;
65 | width: 100vw;
66 | }
67 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Nyka- Project..
2 | "Nykaa.com" (Collaborative)
3 |
4 |
5 | About
6 |
7 | Nykaa is an Indian e-commerce company, founded by Falguni Nayar in 2012 and headquartered in Mumbai. It sells beauty, wellness and fashion products across websites, mobile apps and 100+ offline stores. In 2020, it became the first Indian unicorn startup headed by a woman
8 | Nykaa sells products which are manufactured in India as well as internationally. In 2015, the company expanded from online-only to an omnichannel model and began selling products apart from beauty. As of 2020, it retails over 2,000 brands and 200,000 products across its platforms.
9 |
10 |
11 | **Original website link** : https://www.nykaa.com/
12 |
13 | Link of My deployed project : https://63ada1475ad13e35586e0a54--ornate-cupcake-fb26b5.netlify.app/
14 |
15 |
16 |
17 | ## Tech Stack and features
18 |
19 | - Javascript
20 | - React
21 | - Chakra-UI
22 | - HTML
23 | - CSS
24 |
25 |
26 |
27 |
28 |
29 |
30 | Team Of 4 Members.
31 | build this website clone during construct week in just 5 days.
32 | Most focused on UI part.
33 |
34 |
35 |
36 |
--------------------------------------------------------------------------------
/src/components/Payment/paymentComponent/Upi.jsx:
--------------------------------------------------------------------------------
1 | import { Box, TextField } from "@mui/material";
2 | import React, { useEffect } from "react";
3 | import { useDispatch, useSelector } from "react-redux";
4 | import { getAllCart } from "../../../actions/products";
5 | import Style from "../payment.module.css";
6 | export const Upi = () => {
7 | const { total } = useSelector((state) => state.cart);
8 | console.log(total);
9 | const dispatch = useDispatch();
10 |
11 | useEffect(() => {
12 | dispatch(getAllCart());
13 | }, [dispatch]);
14 | return (
15 |
16 |
17 |
BHIM UPI
18 |
19 |
20 |
21 |
22 | :not(style)": { m: "0.5", width: "95%" },
26 | }}
27 | noValidate
28 | autoComplete="off"
29 | >
30 |
35 |
36 |
37 |
38 | {`Pay ₹${total} Now`}
39 |
40 |
41 |
42 | );
43 | };
44 |
--------------------------------------------------------------------------------
/src/components/Navbar/CatBar/NavbarPopUpComponents.jsx:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import {Fade} from '@mui/material'
3 | import Brands from './Brands'
4 | import Luxe from './Luxe'
5 | import NykaaFashion from './NykaaFashion'
6 | import Beauty from './Beauty'
7 | import Makeup from './Makeup'
8 | import Hair from './Hair'
9 | import Appliances from './Appliances'
10 | import BodyBath from './BodyBath'
11 | import Natural from './Natural'
12 | import MomBaby from './MomBaby'
13 | import Mens from './Mens'
14 | import Fragrence from './Fragrence'
15 | import Skin from './Skin'
16 |
17 |
18 | const NavbarPopUpComponents = ({type}) => {
19 | return (
20 |
21 |
22 | {type==='BRANDS' &&
}
23 | {type==='LUXE' &&
}
24 | {type==='NYKAA' &&
}
25 | {type==='BEAUTY' &&
}
26 | {type==="MAKEUP" &&
}
27 | {type==="SKIN" &&
}
28 | {type==="HAIR" &&
}
29 | {type==="APPLIANCES" &&
}
30 | {type==="BATH&BODY" &&
}
31 | {type==="NATURAL" &&
}
32 | {type==="MOM&BABY" &&
}
33 | {type==="HEALTH" &&
}
34 | {type==="MEN" &&
}
35 | {type==="FRAGRENCE" &&
}
36 | {type==="POPUPS" &&
}
37 |
38 |
39 |
40 | )
41 | }
42 |
43 | export default NavbarPopUpComponents;
44 |
--------------------------------------------------------------------------------
/src/components/Profile/Orders.jsx:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import {Box,Text,Image, Center} from "@chakra-ui/react"
3 | import { NavLink } from 'react-router-dom'
4 |
5 | const Orders = () => {
6 | return (
7 | <>
8 |
9 |
10 | ⇐
11 |
12 | My Orders
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 | No recent orders
22 |
23 |
24 | Start Shopping
25 |
26 |
27 | >
28 | )
29 | }
30 |
31 | export default Orders
--------------------------------------------------------------------------------
/src/components/Navbar/CatBar/Beauty.jsx:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import styled from "styled-components";
3 |
4 | const BeautyPop = styled.div`
5 | width: 74%;
6 | display: flex;
7 | justify-content: center;
8 | margin: auto;
9 | text-align: left;
10 | padding: 5vh 0 7vh 0;
11 | border-bottom-left-radius: 5px;
12 | border-bottom-right-radius: 5px;
13 | border: 1px solid #e6dede;
14 | background-color: #fafafa;
15 | .beauty_bar {
16 | display: flex;
17 | justify-content: center;
18 | margin: auto;
19 | gap: 8vw;
20 | }
21 | .beauty_bar > div > img {
22 | height: 20vh;
23 | width: 33vh;
24 | border-radius: 5px;
25 | }
26 | .beauty_bar > div {
27 | line-height: 1.2;
28 | font-size: 14px;
29 | }
30 | `;
31 |
32 | const Beauty = () => {
33 | return (
34 |
35 |
36 |
37 |
41 |
BEAUTY BOOK
42 |
Nykaa's Digital Magazine
43 |
44 |
45 |
49 |
NYKAA TV
50 |
Masterclasses By Experts & Vloggers
51 |
52 |
53 |
57 |
BEAUTY BUYING GUIDES
58 |
Tips To Explore While You Shop
59 |
60 |
61 |
62 | );
63 | };
64 |
65 | export default Beauty;
66 |
--------------------------------------------------------------------------------
/src/components/Footer/Footer.module.css:
--------------------------------------------------------------------------------
1 | * {
2 | text-align: left;
3 | }
4 | .box {
5 | display: flex;
6 | justify-content: center;
7 | gap: 5vw;
8 | background: #3f414d;
9 | padding: 2vh 0 2vh 0;
10 | height: 130px;
11 | }
12 | .box > div {
13 | height: 19vh;
14 | }
15 | .box1 {
16 | display: flex;
17 | gap: 0.5vw;
18 | font-weight: 600;
19 | color: white;
20 | font-size: 14px;
21 | }
22 | .box3 > input {
23 | height: 3vh;
24 | width: 13vw;
25 | outline: 0;
26 | border-width: 0 0 2px;
27 | border-color: rgb(232, 232, 235);
28 | margin-right: 1vw;
29 | padding-left: 1.5vw;
30 | background-color: #3f414d;
31 | color: white;
32 | }
33 | .box3 > button {
34 | height: 5vh;
35 | width: 5vw;
36 | background: #3f414d;
37 | color: white;
38 | border-radius: 5px;
39 | border: 1px solid white;
40 | text-align: center;
41 | }
42 | .box4 {
43 | display: flex;
44 | gap: 1vw;
45 | justify-content: center;
46 | }
47 | .box4 > img {
48 | height: 5vh;
49 | width: 9vw;
50 | }
51 | .box5 {
52 | display: flex;
53 | justify-content: center;
54 | margin: auto;
55 | gap: 7vw;
56 | background: #8c8d94;
57 | padding: 3vh 0 3vh 0;
58 | }
59 | .box5 > div > p {
60 | line-height: 2.5vh;
61 | font-size: 13px;
62 | color: white;
63 | }
64 | .box5 > div > h4 {
65 | color: white;
66 | }
67 | .box5 > div > p:hover {
68 | color: #fc3581;
69 | cursor: pointer;
70 | }
71 | .box6 {
72 | display: flex;
73 | justify-content: center;
74 | margin: auto;
75 | gap: 3vw;
76 | padding: 5vh 5vw 5vh 5vw;
77 | }
78 | .box6 > div {
79 | display: flex;
80 | line-height: 15px;
81 | gap: 1.5vw;
82 | font-size: 14px;
83 | }
84 | .box7 {
85 | display: flex;
86 | justify-content: center;
87 | margin: auto;
88 | gap: 3vw;
89 | }
90 | .box7 > p {
91 | cursor: pointer;
92 | }
93 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "main",
3 | "version": "0.1.0",
4 | "private": true,
5 | "dependencies": {
6 | "@chakra-ui/icons": "^2.0.15",
7 | "@chakra-ui/react": "^2.2.4",
8 | "@emotion/react": "^11.9.3",
9 | "@emotion/styled": "^11.9.3",
10 | "@fontsource/roboto": "^4.5.8",
11 | "@material-ui/core": "^4.12.4",
12 | "@material-ui/icons": "^4.11.3",
13 | "@mui/icons-material": "^5.8.4",
14 | "@mui/material": "^5.9.1",
15 | "@testing-library/jest-dom": "^5.16.4",
16 | "@testing-library/react": "^13.3.0",
17 | "@testing-library/user-event": "^13.5.0",
18 | "axios": "^0.27.2",
19 | "firebase": "^9.9.0",
20 | "framer-motion": "^6.5.1",
21 | "react": "^18.2.0",
22 | "react-dom": "^18.2.0",
23 | "react-icons": "^4.4.0",
24 | "react-multi-carousel": "^2.8.2",
25 | "react-redux": "^8.0.2",
26 | "react-responsive-carousel": "^3.2.23",
27 | "react-router-dom": "^6.3.0",
28 | "react-scripts": "^5.0.1",
29 | "react-simple-image-slider": "^2.4.1",
30 | "react-slick": "^0.29.0",
31 | "react-slideshow-image": "^4.0.3",
32 | "react-toastify": "^9.0.7",
33 | "redux": "^4.2.0",
34 | "redux-thunk": "^2.4.1",
35 | "slick-carousel": "^1.8.1",
36 | "styled-components": "^5.3.5",
37 | "web-vitals": "^2.1.4"
38 | },
39 | "scripts": {
40 | "start": "react-scripts start",
41 | "build": "react-scripts build",
42 | "test": "react-scripts test",
43 | "eject": "react-scripts eject"
44 | },
45 | "eslintConfig": {
46 | "extends": [
47 | "react-app",
48 | "react-app/jest"
49 | ]
50 | },
51 | "browserslist": {
52 | "production": [
53 | ">0.2%",
54 | "not dead",
55 | "not op_mini all"
56 | ],
57 | "development": [
58 | "last 1 chrome version",
59 | "last 1 firefox version",
60 | "last 1 safari version"
61 | ]
62 | }
63 | }
64 |
--------------------------------------------------------------------------------
/public/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
12 |
13 |
17 |
18 |
27 | Buy Cosmetics Products & Beauty Products Online in India at Best Price |Nykaa
28 |
29 |
30 | You need to enable JavaScript to run this app.
31 |
32 |
42 |
43 |
44 |
--------------------------------------------------------------------------------
/src/components/Home/Carousel1.1.jsx:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import { Slide } from "react-slideshow-image";
3 | import "react-slideshow-image/dist/styles.css";
4 | import styles from "./Carousel.module.css";
5 | const slideImages = [
6 | {
7 | url: "https://images-static.nykaa.com/uploads/db2d5607-d968-45f6-ba39-6b8eac6a54e4.jpg?tr=w-1200,cm-pad_resize",
8 | },
9 | {
10 | url: "https://images-static.nykaa.com/uploads/1b502856-27fa-4013-b7ed-dedb07ab0f1a.jpg?tr=w-1200,cm-pad_resize",
11 | },
12 | {
13 | url: "https://images-static.nykaa.com/uploads/ae238ad7-9d3a-48ec-b143-a9af8e1f1a0c.jpg?tr=w-1200,cm-pad_resize",
14 | },
15 | {
16 | url: "https://images-static.nykaa.com/uploads/fe616105-d856-4ef7-9a91-22a68a988094.png?tr=w-1200,cm-pad_resize",
17 | },
18 | {
19 | url: "https://images-static.nykaa.com/uploads/b5e477cd-478c-4f1d-b1a5-c2030c3d0615.jpg?tr=w-1200,cm-pad_resize",
20 | },
21 | {
22 | url: "https://images-static.nykaa.com/uploads/7250c4ef-daf6-4f77-ab9d-ea897b773904.jpg?tr=w-1200,cm-pad_resize",
23 | },
24 | {
25 | url: "https://images-static.nykaa.com/uploads/41cab243-d530-4f83-b083-6352b09f3a13.jpg?tr=w-1200,cm-pad_resize",
26 | },
27 | ];
28 |
29 | const properties = {
30 | duration: 2000,
31 | transitionDuration: 500,
32 | infinite: true,
33 | indicators: true,
34 | arrows: true,
35 | pauseOnHover: true,
36 | onChange: (oldIndex, newIndex) => {
37 | console.log(`slide transition from ${oldIndex} to ${newIndex}`);
38 | },
39 | };
40 | const Carousel1 = () => {
41 | return (
42 |
43 |
44 | {slideImages.map((slideImage, index) => (
45 |
55 | ))}
56 |
57 |
58 | );
59 | };
60 |
61 | export default Carousel1;
62 |
--------------------------------------------------------------------------------
/src/Admin/AdminPages/AdminUsersList.jsx:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import AdminNavbar from '../Admincomponents/AdminNavbar'
3 | import "../Admin.module.css"
4 | const AdminUsersList = () => {
5 | const profilePIcDefault =
6 | "https://static.vecteezy.com/system/resources/previews/002/318/271/non_2x/user-profile-icon-free-vector.jpg";
7 | return (
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 | Welcome To User Management System
18 |
19 |
20 |
21 |
22 |
23 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 | Name :{" "}
43 | {localStorage.getItem("name")
44 | ? localStorage.getItem("name")
45 | : "NA"}
46 |
47 |
48 | Email :{" "}
49 | {localStorage.getItem("email")
50 | ? localStorage.getItem("email")
51 | : "NA"}
52 |
53 |
54 | Gender :{" "}
55 | {localStorage.getItem("gender")
56 | ? localStorage.getItem("gender")
57 | : "NA"}
58 |
59 |
60 | Accepted Terms And Conditions :{" "}
61 | {localStorage.getItem("terms") ? "YES" : "No"}
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 | );
70 | };
71 |
72 | export default AdminUsersList;
--------------------------------------------------------------------------------
/src/components/Profile/ProfileOption.jsx:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import {Button,Text, VStack} from "@chakra-ui/react"
3 | import {CgProfile} from "react-icons/cg"
4 | import {FaWallet,FaTruck} from "react-icons/fa"
5 | import {RiLogoutCircleRLine} from "react-icons/ri"
6 | import {AiTwotoneHeart} from "react-icons/ai"
7 | import {RxDashboard} from "react-icons/rx"
8 | import {NavLink} from "react-router-dom"
9 |
10 | const ProfileOption = () => {
11 | return (
12 | <>
13 |
14 |
15 |
16 | Dashboard
17 |
18 |
19 |
20 |
21 | My Profile
22 |
23 |
24 |
25 |
26 | My Wallet
27 |
28 |
29 |
30 |
31 | My Orders
32 |
33 |
34 |
35 |
36 | My Wishlist
37 |
38 |
39 |
40 |
41 | My Saved Payment
42 |
43 |
44 |
45 |
46 | Logout
47 |
48 |
49 |
50 | >
51 | )
52 | }
53 |
54 | export default ProfileOption
--------------------------------------------------------------------------------
/src/components/Navbar/CatBar/Luxe.jsx:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import styled from "styled-components";
3 |
4 | const LuxePopup = styled.div`
5 | width: 70%;
6 | display: flex;
7 | justify-content: center;
8 | margin: auto;
9 | text-align: left;
10 | padding: 2vh 0 3vh 0;
11 | border-bottom-left-radius: 5px;
12 | border-bottom-right-radius: 5px;
13 | border: 1px solid #e6dede;
14 | background-color: #fafafa;
15 | .luxe {
16 | display: flex;
17 | justify-content: center;
18 | margin: auto;
19 | gap: 4.5vw;
20 | }
21 | .luxe > div:nth-child(even) {
22 | background-color: #f4f4f4;
23 | padding: 0px 14px 0px 14px;
24 | }
25 |
26 | .luxe > div > p {
27 | line-height: 1.2;
28 | font-size: 15px;
29 | }
30 | .luxe > div > p:hover {
31 | color: #fc3581;
32 | cursor: pointer;
33 | }
34 | `;
35 |
36 | const Luxe = () => {
37 | return (
38 |
39 |
40 |
41 |
Face
42 |
Face Wash & Cleansers
43 |
Toner
44 |
Exfoliators
45 |
Serum
46 |
Moisturisers
47 |
Day Cream
48 |
Night Cream
49 |
Masks
50 |
Sunscreen
51 |
Face Mist
52 |
Makeup Remover
53 |
Tools & Appliances
54 |
55 |
56 |
Fragrance
57 |
Perfumes (EDP/EDT)
58 |
Aftershave
59 |
Face & Body Mists
60 |
Candles & Incense
61 |
Gifts
62 |
63 |
64 |
Lip Care
65 |
Eye Care
66 |
Eye Cream
67 |
Serum
68 |
Dark Circles
69 |
70 |
71 |
EYES
72 |
Eyeliner & Kajal
73 |
Mascara
74 |
Eye Shadow
75 |
Brows
76 |
Lashes
77 |
Eye Primer
78 |
Corrector & Conclealer
79 |
Customize Your Palette
80 |
81 |
82 |
Tools & Brushes
83 |
Face Brush
84 |
Eye Brush
85 |
Lip Brush
86 |
Applicators
87 |
88 |
89 |
90 | );
91 | };
92 |
93 | export default Luxe;
94 |
--------------------------------------------------------------------------------
/src/components/Navbar/CatBar/Appliances.jsx:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import styled from "styled-components";
3 |
4 | const Popup = styled.div`
5 | width: 75%;
6 | display: flex;
7 | justify-content: center;
8 | margin: auto;
9 | text-align: left;
10 | padding: 2vh 0 3vh 0;
11 | border-bottom-left-radius: 5px;
12 | border-bottom-right-radius: 5px;
13 | border: 1px solid #e6dede;
14 | background-color: #fafafa;
15 | .all_items_in_appli {
16 | display: flex;
17 | justify-content: center;
18 | margin: auto;
19 | gap: 4vw;
20 | }
21 | .all_items_in_appli > div:nth-child(even) {
22 | background-color: #f4f4f4;
23 | padding: 0px 14px 0px 14px;
24 | }
25 |
26 | .all_items_in_appli > div > p {
27 | line-height: 1.2;
28 | font-size: 15px;
29 | }
30 | .all_items_in_appli > div > p:hover {
31 | color: #fc3581;
32 | cursor: pointer;
33 | }
34 | `;
35 |
36 | const Appliances = () => {
37 | return (
38 |
39 |
40 |
41 |
Hair Styling Tools
42 |
Hair Dryers
43 |
Straighteners
44 |
Curling Iron/Stylers
45 |
Multi Stylers
46 |
47 |
48 |
Hair Removal Tools
49 |
Epilators
50 |
Body Groomers
51 |
Bikini Trimmers
52 |
53 |
54 |
Shaving Tools
55 |
Shavers
56 |
Trimmers
57 |
Face/Skin Tools
58 |
Face Epilator
59 |
Dermarollers
60 |
Cleansing Brushes
61 |
Acne Removal
62 |
Massage Tools
63 |
Massagers
64 |
Foot Care
65 |
66 |
67 |
Top Brands
68 |
Philips
69 |
Alan Truman
70 |
Dyson
71 |
VEGA
72 |
Braun
73 |
Ikonic Professional
74 |
Nova
75 |
Flawless
76 |
77 |
78 |
Quick Links
79 |
Combos @ Nykaa
80 |
New Launches
81 |
NFBA Nominees 2020
82 |
Gifts @ Nykaa
83 |
Herbal Hair Care
84 |
Routine Finder
85 |
86 |
87 |
88 | );
89 | };
90 |
91 | export default Appliances;
92 |
--------------------------------------------------------------------------------
/src/components/ProductPage/ProductCard.jsx:
--------------------------------------------------------------------------------
1 | import { Box, Image, Text } from "@chakra-ui/react";
2 | import React, { useState } from "react";
3 | import { BsHeart } from "react-icons/bs";
4 | import { FaStar } from "react-icons/fa";
5 | import { useDispatch, useSelector } from "react-redux";
6 | import { useNavigate } from "react-router-dom";
7 | import { addToCart } from "../../actions/cart";
8 | import styles from "../ProductPage/products.module.css";
9 | import { useToast } from "@chakra-ui/react";
10 | const ProductCard = ({ product }) => {
11 | const [stars, setStars] = useState(Number(product.rating));
12 | const dispatch = useDispatch();
13 | const data = useSelector((state) => state);
14 | console.log(data);
15 | const navigate = useNavigate();
16 | const starArr = new Array(Math.floor(stars)).fill(0);
17 | const handleClick = (id) => {
18 | navigate(`/products/${id}`);
19 | };
20 |
21 | const handleCart = (product) => {
22 | toast({
23 | title: "Item Added To Bag",
24 | description: "Added Successfully.",
25 | status: "success",
26 | duration: 4000,
27 | isClosable: true,
28 | });
29 | dispatch(addToCart(product));
30 | };
31 | const toast = useToast();
32 | return (
33 |
34 | handleClick(product.id)}
38 | w="250px"
39 | />
40 |
41 |
42 | {product.title}
43 |
44 |
45 | MRP :{" "}
46 |
47 | ₹{product.price}{" "}
48 | {" "}
49 | ₹{product.off_price} |{" "}
50 |
51 | {product.offer}% OFF
52 |
53 |
54 |
55 |
56 | {starArr?.map((e) => {
57 | return ;
58 | })}
59 |
60 |
61 |
62 |
63 |
64 | handleCart(product)}>
65 | Add To Bag
66 |
67 |
68 |
69 | );
70 | };
71 |
72 | export default ProductCard;
73 |
--------------------------------------------------------------------------------
/src/components/Profile/Myprofile.jsx:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import {Box, Button, HStack, Image, Input, Text, useDisclosure, VStack} from "@chakra-ui/react"
3 | import {AiFillHome,AiTwotoneEdit} from "react-icons/ai"
4 | import { useState } from 'react'
5 | import {
6 | Modal,
7 | ModalOverlay,
8 | ModalContent,
9 | ModalHeader,
10 | ModalFooter,
11 | ModalBody,
12 | ModalCloseButton,
13 | } from '@chakra-ui/react'
14 |
15 | const Myprofile = () => {
16 | const { isOpen, onOpen, onClose } = useDisclosure()
17 | const [address, setaddress] = useState("")
18 | const [update,setupdate]=useState("")
19 | // console.log(update)
20 | const handleChange=async()=>{
21 | setaddress(update)
22 | }
23 | return (
24 | <>
25 |
26 |
27 |
28 |
29 |
30 |
31 | Arihant Jain
32 | Mobile: 9958394688
33 | Date Of Birth: dd-mm-yyyy
34 |
35 |
36 |
37 |
38 |
39 | MY ADDRESSES
40 | {address===""?"Add Address":"Edit"}
41 |
42 |
43 |
44 | New Address
45 |
46 |
47 | setupdate(e.target.value)}/>
48 |
49 |
50 |
51 | Close
52 |
53 | Update Address
54 |
55 |
56 |
57 |
58 | {address===""? "No Address has been added add now!":address}
59 |
60 |
61 |
62 | >
63 | )
64 | }
65 |
66 | export default Myprofile
--------------------------------------------------------------------------------
/src/components/Payment/paymentComponent/Card.jsx:
--------------------------------------------------------------------------------
1 | import { Box, ListItem, Stack, TextField } from "@mui/material";
2 | import React, { useEffect } from "react";
3 | import { useDispatch, useSelector } from "react-redux";
4 | import { getAllCart } from "../../../actions/products";
5 | import { useNavigate } from "react-router-dom";
6 | import Style from "../payment.module.css";
7 |
8 | export const Card = () => {
9 | const navigate = useNavigate();
10 | const { total } = useSelector((state) => state.cart);
11 | console.log(total);
12 | const dispatch = useDispatch();
13 |
14 | useEffect(() => {
15 | dispatch(getAllCart());
16 | }, [dispatch]);
17 | return (
18 |
19 |
20 |
Credit/Debit Card
21 |
22 |
23 |
24 |
:not(style)": { width: "90%" },
28 | }}
29 | noValidate
30 | autoComplete="off"
31 | >
32 |
39 |
40 |
41 |
44 |
45 |
59 |
60 | navigate("/thanks")}
62 | style={{
63 | width: "100%",
64 | height: "50px",
65 | color: "#fff",
66 | backgroundColor: "#fc2779",
67 | fontWeight: "500",
68 | marginTop: "35px",
69 | cursor: "pointer",
70 | }}
71 | type="submit"
72 | name=""
73 | id=""
74 | >{`PAY ₹${total} NOW >`}
75 |
76 |
77 |
78 |
79 | );
80 | };
81 |
--------------------------------------------------------------------------------
/src/Admin/AdminPages/AdminLoginPage.jsx:
--------------------------------------------------------------------------------
1 | import React, { useState } from "react";
2 | import { Link, useNavigate } from "react-router-dom";
3 | import { toast } from "react-toastify";
4 | import "../Admin.module.css"
5 | const AdminLoginPage = () => {
6 | const [email, setEmail] = useState("");
7 | const [password, setPassword] = useState("");
8 | const navigate = useNavigate();
9 | //getting email password
10 | const userName = localStorage.getItem("email")
11 | ? localStorage.getItem("email")
12 | : "chandrashekharjoshi02@gmail.com";
13 | const userPassword = localStorage.getItem("password")
14 | ? localStorage.getItem("password")
15 | : "abc";
16 |
17 | //submit function
18 | const handleSubmit = (e) => {
19 | e.preventDefault();
20 | if (email === userName && password === userPassword) {
21 | toast.success("Login Success");
22 | navigate("/profile");
23 | } else {
24 | toast.error("Invalid Email OR password");
25 | }
26 | };
27 | return (
28 | <>
29 |
71 | >
72 | );
73 | };
74 |
75 | export default AdminLoginPage;
--------------------------------------------------------------------------------
/src/components/ProductPage/Skeleton.jsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import styles from "../ProductPage/products.module.css";
3 | import { Box, SkeletonCircle, SkeletonText } from "@chakra-ui/react";
4 | const Skeleton = () => {
5 | return (
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 | )
69 | }
70 |
71 | export default Skeleton;
--------------------------------------------------------------------------------
/src/components/Profile/Wallet.jsx:
--------------------------------------------------------------------------------
1 | import { Box, Image,Text } from '@chakra-ui/react'
2 | import React from 'react'
3 |
4 | const Wallet = () => {
5 | return (
6 | <>
7 |
8 |
9 |
10 |
11 |
12 |
13 | Nykaa Wallet
14 |
15 |
16 | A purse you can carry to shop Beauty.
17 |
18 |
19 |
20 |
21 |
22 |
23 | Wallet Balanace
24 | ₹ 20
25 |
26 |
27 | NYKAA CASH
28 | ₹ 0
29 |
30 |
31 | REWARD POINTS
32 | ₹ 20
33 |
34 |
35 |
36 |
37 |
38 |
39 | >
40 | )
41 | }
42 |
43 | export default Wallet
--------------------------------------------------------------------------------
/src/components/Payment/payment.module.css:
--------------------------------------------------------------------------------
1 | .pcnt {
2 | width: 75%;
3 | margin: auto;
4 | position: relative;
5 | top: 120px;
6 | }
7 |
8 | .phe {
9 | text-align: left;
10 | margin: 0px;
11 | padding-left: 20px;
12 | font-size: 16px;
13 | font-weight: 600;
14 | }
15 |
16 | .Psidebar {
17 | display: flex;
18 | margin-top: 10px;
19 | }
20 |
21 | .pTab {
22 | background-color: #fff;
23 | box-shadow: rgba(0, 0, 0, 0.24) 0px 3px 8px;
24 | border-radius: 2px;
25 | padding-left: 5px;
26 | position: fixed;
27 | width: 18.5%;
28 | font-size: 16px;
29 | text-align: left;
30 | }
31 |
32 | .pTabpanel {
33 | background-color: #fff;
34 | box-shadow: rgba(0, 0, 0, 0.24) 0px 3px 8px;
35 | border-radius: 2px;
36 | position: relative;
37 | height: max-content;
38 | left: 315px;
39 | width: 465px;
40 | text-align: left;
41 | }
42 |
43 | .pSubdetail {
44 | background-color: #fff;
45 | box-shadow: rgba(0, 0, 0, 0.24) 0px 3px 8px;
46 | padding: 10px 23px 15px 23px;
47 | border-radius: 2px;
48 | position: relative;
49 | height: max-content;
50 | left: 350px;
51 | width: 325px;
52 | text-align: left;
53 | }
54 |
55 | .cbutton {
56 | width: 100%;
57 | height: 50px;
58 | color: #fff;
59 | background-color: #fc2779;
60 | font-weight: 600;
61 | margin-top: 35px;
62 | cursor: pointer;
63 | font-size: 16px;
64 | }
65 |
66 | .shipAdd {
67 | width: 325px;
68 | background-color: #f3f3f3;
69 | padding: 10px 23px 15px 23px;
70 | box-shadow: rgba(0, 0, 0, 0.24) 0px 3px 8px;
71 | border-radius: 2px;
72 | position: relative;
73 | left: 350px;
74 | text-align: left;
75 | }
76 |
77 | .shipAdd h3 {
78 | font-size: 16px;
79 | font-weight: 550;
80 | letter-spacing: 0.5px;
81 | }
82 |
83 | .shipAdd p {
84 | font-size: 16px;
85 | font-weight: 450;
86 | letter-spacing: 0.5px;
87 | line-height: 1.5;
88 | }
89 |
90 | /*---------------------cardstyle-------------*/
91 | .lae p {
92 | margin-top: 20px;
93 | color: #8c8d94;
94 | font-size: 16px;
95 | font-weight: 450;
96 | }
97 |
98 | .cardInput input {
99 | width: 25%;
100 | margin-right: 10px;
101 | border: none;
102 | border-bottom: 1px solid #8c8d94;
103 | font-size: 15px;
104 | }
105 |
106 | .cardInput input + input {
107 | width: 15%;
108 | margin: 0px 10px;
109 | border: none;
110 | border-bottom: 1px solid #8c8d94;
111 | }
112 |
113 | .cardInput input:focus {
114 | border: none;
115 | outline: none;
116 | border-bottom: 1px solid #8c8d94;
117 | }
118 |
119 | .cardInput span + span {
120 | color: #8c8d94;
121 | padding-bottom: 5px;
122 | padding-left: 10px;
123 | vertical-align: middle;
124 | width: 120px;
125 | box-sizing: border-box;
126 | position: absolute;
127 | margin-top: -15px;
128 | }
129 |
130 | /*---------------------gpay style-------------*/
131 | .gpayh {
132 | padding: 0px;
133 | margin: 0px;
134 | font-size: 16px;
135 | font-weight: 550;
136 | margin-bottom: 5px;
137 | }
138 |
139 | hr {
140 | margin-bottom: 8px;
141 | }
142 |
--------------------------------------------------------------------------------
/src/components/Authentication/login.css.js:
--------------------------------------------------------------------------------
1 | const container = {
2 | boxShadow:
3 | "rgba(60, 64, 67, 0.3) 0px 1px 2px 0px, rgba(60, 64, 67, 0.15) 0px 2px 6px 2px",
4 | width: "27%",
5 | height: "800px",
6 | margin: "80px auto 0px auto",
7 | borderRadius: "15px 15px 0px 0px",
8 | background: "white",
9 | position: "relative",
10 | textAlign: "center",
11 | };
12 | const crossButton = {
13 | border: "none",
14 | background: "white",
15 | cursor: "pointer",
16 | fontSize: "25px",
17 | fontWeight: "100",
18 | color: "gray",
19 | position: "absolute",
20 | left: "20px",
21 | top: "20px",
22 | };
23 | const Signin = {
24 | margin: "45px auto",
25 | textAlign: "left",
26 | width: "80%",
27 | };
28 | const h1 = {
29 | fontSize: "36px",
30 | };
31 | const p = {
32 | textAlign: "justify",
33 | fontSize: "18px",
34 | color: "#595959",
35 | };
36 | const input = {
37 | textAlign: "center",
38 | border: "none",
39 | background: "#fc2779",
40 | width: "100%",
41 | padding: "10px 10px",
42 | borderRadius: "5px",
43 | color: "white",
44 | cursor: "pointer",
45 | fontSize: "20px",
46 | };
47 | const para = {
48 | width: "80%",
49 | margin: "auto",
50 | textAlign: "justify",
51 | color: "gray",
52 | fontSize: "20px",
53 | lineHeight: "1.3",
54 | };
55 | const a = {
56 | color: "gray",
57 | fontSize: "20px",
58 | };
59 | const grayBox = {
60 | width: "80%",
61 | background: "#dbdbdb",
62 | margin: "10px auto",
63 | padding: "15px",
64 | fontWeight: "300",
65 | textAlign: "center",
66 | };
67 | const inputOTP = {
68 | textAlign: "left",
69 | outline: "none",
70 | border: "none",
71 | borderBottom: "1px solid red",
72 | width: "150px",
73 | height: "30px",
74 | };
75 | const submitButton = {
76 | border: "none",
77 | background: "#dbdbdb",
78 | width: "100%",
79 | padding: "10px 10px",
80 | borderRadius: "5px",
81 | color: "white",
82 | cursor: "pointer",
83 | fontSize: "20px",
84 | };
85 | const alertPopup = {
86 | width: "100%",
87 | height: "150px",
88 | margin: "auto",
89 | position: "sticky",
90 | top: "300px",
91 | background: "#e9d8ce",
92 | borderRadius: "10px",
93 | display: "flex",
94 | justifyContent: "center",
95 | alignItems: "center",
96 | };
97 | const googlecss = { width: "100%", cursor: "pointer", marginTop: "20px" };
98 | const submit = {
99 | color: "white",
100 | background: "#fc2779",
101 | padding: "10px",
102 | border: "none",
103 | borderRadius: "10px",
104 | cursor: "pointer",
105 | width: "90%",
106 | margin: "auto",
107 | };
108 | const inputReg = {
109 | width: "90%",
110 | height: "35px",
111 | outline: "none",
112 | border: "1px solid gray",
113 | };
114 | const h2Reg = {
115 | color: "gray",
116 | };
117 | export {
118 | container,
119 | crossButton,
120 | Signin,
121 | h1,
122 | p,
123 | input,
124 | para,
125 | a,
126 | googlecss,
127 | grayBox,
128 | inputOTP,
129 | submitButton,
130 | alertPopup,
131 | submit,
132 | inputReg,
133 | h2Reg,
134 | };
135 |
--------------------------------------------------------------------------------
/src/components/Navbar/NavFold/Navbar.jsx:
--------------------------------------------------------------------------------
1 | import React, { useState, useEffect } from "react";
2 | import style from "./Navbar.module.css";
3 | import { FaRegUser } from "react-icons/fa";
4 | import { NavLink, useNavigate } from "react-router-dom";
5 | import { AiFillShopping } from "react-icons/ai";
6 | import NavbarPopUpComponents from "../CatBar/NavbarPopUpComponents";
7 | import { ShoppingBag } from "@mui/icons-material";
8 | import { Route, Routes } from 'react-router-dom'
9 | import MAIN from '../../../components/Profile/Main'
10 | import Signin from "../../../logs/Signin";
11 | const Navbar = () => {
12 | const navigate = useNavigate();
13 | const [howerState, setHowerState] = useState("");
14 | const [login, setLogin] = useState(false);
15 | const hoverHandler = (type) => {
16 | setHowerState(type);
17 | };
18 | const handleLogin = () => {
19 | if (login) {
20 | setLogin(false);
21 | localStorage.removeItem("user");
22 | localStorage.removeItem("oAuth");
23 | window.location.reload();
24 | } else {
25 | navigate("/login");
26 | }
27 | };
28 |
29 | useEffect(() => {
30 | const data =
31 | JSON.parse(localStorage.getItem("user")) ||
32 | JSON.parse(localStorage.getItem("oAuth"));
33 |
34 | if (data) setLogin(true);
35 | }, []);
36 | return (
37 | <>
38 |
39 |
40 |
41 |
navigate("/")}
44 | src="https://cdn.iconscout.com/icon/free/png-256/nykaa-3384872-2822953.png"
45 | className={style.card4}
46 | alt="nykka"
47 | />
48 |
navigate("/products")}>Categories
49 |
hoverHandler("BRANDS")}>Brands
50 |
hoverHandler("LUXE")}>Luxe
51 |
hoverHandler("NYKAA")}>Nykaa Fashion
52 |
hoverHandler("BEAUTY")}>Beauty Advice
53 |
54 |
55 |
56 |
62 |
63 |
64 |
65 |
66 |
67 |
handleLogin()}>{!login ? "Login" : "Logout"}
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
setHowerState("")}>
79 | {howerState && }
80 |
81 |
82 | >
83 | );
84 | };
85 |
86 | export default Navbar;
87 |
--------------------------------------------------------------------------------
/src/components/ProductPage/products.module.css:
--------------------------------------------------------------------------------
1 | .productMain {
2 | display: flex;
3 | width: 100%;
4 |
5 | justify-content: space-around;
6 | }
7 |
8 | .filterBoxs {
9 | width: 25%;
10 | height: 300px;
11 | margin-top: 100px;
12 | position: sticky;
13 | top: 100px;
14 | }
15 |
16 | .productsContainer {
17 | height: auto;
18 | width: 65%;
19 | }
20 |
21 | .prodHeading {
22 | margin: 25px auto;
23 | text-align: center;
24 | font-size: 30px;
25 | font-weight: bold;
26 | }
27 |
28 | .products {
29 | width: 90%;
30 | height: auto;
31 | margin: auto;
32 | margin-bottom: 30px;
33 | display: grid;
34 | grid-template-columns: repeat(3, 1fr);
35 | grid-template-rows: repeat(auto, 1fr);
36 | gap: 20px;
37 | }
38 |
39 | .title {
40 | font-weight: 600;
41 | font-size: medium;
42 | }
43 | .productCard {
44 | box-shadow: rgba(99, 99, 99, 0.2) 0px 2px 8px 0px;
45 | border-radius: 20px;
46 | }
47 |
48 | .stars {
49 | display: flex;
50 | justify-content: center;
51 | /* border: 1px solid blue; */
52 | gap: 0px 5px;
53 | }
54 |
55 | .btns {
56 | width: 100%;
57 | position: relative;
58 | display: flex;
59 | justify-content: space-between;
60 | align-items: center;
61 | margin-top: 20px;
62 | visibility: hidden;
63 | top: 0;
64 | }
65 | .productCard:hover .btns {
66 | visibility: visible;
67 | }
68 | .btns button {
69 | text-align: center;
70 | }
71 | .btns .heartbtn {
72 | text-align: center;
73 | font-size: 30px;
74 | padding: 6px 8px;
75 | color: #fc2779;
76 | border-top: 1px solid rgb(232, 232, 232);
77 | border-bottom: 1px solid rgb(232, 232, 232);
78 | }
79 | .btns .primary {
80 | width: 90%;
81 | font-size: 26px;
82 | padding: 4px 8px;
83 | background-color: #fc2779;
84 | color: white;
85 | border-radius: 5px;
86 | }
87 |
88 | .paginate {
89 | display: flex;
90 | align-items: center;
91 | justify-content: center;
92 | font-size: 30px;
93 | gap: 0px 30px;
94 | margin: 5px 0px 20px 0px;
95 | color: #fc2779;
96 | }
97 |
98 | .paginate button {
99 | border: 1px solid #fc2779;
100 | padding: 0px 15px;
101 | border-radius: 30%;
102 | }
103 | .paginate button:hover {
104 | background-color: #fc2779;
105 | color: aliceblue;
106 | }
107 | .stBtn {
108 | background-color: #fc2779;
109 | color: aliceblue;
110 | }
111 |
112 | .skeleton {
113 | width: 70%;
114 | display: grid;
115 | grid-template-columns: repeat(3, 1fr);
116 | grid-template-rows: repeat(auto, 1fr);
117 | gap: 0px 30px;
118 | margin: auto;
119 | }
120 |
121 | .notFound {
122 | width: 60%;
123 | margin: auto;
124 | margin-bottom: 60px;
125 | height: auto;
126 | text-align: center;
127 | }
128 |
129 | .notFound > img {
130 | height: 500px;
131 | width: 70%;
132 |
133 | margin: auto;
134 | }
135 |
136 | .notFound > button {
137 | background-color: #ff5697;
138 | color: aliceblue;
139 | width: 20%;
140 | padding: 10px;
141 | text-align: center;
142 | border-radius: 5px;
143 | border: 1px solid aliceblue;
144 | font-size: large;
145 | margin: 15px 0px;
146 | }
147 |
148 | .notFound > button:hover {
149 | background-color: #fc2779;
150 | color: azure;
151 | }
152 |
--------------------------------------------------------------------------------
/src/components/Navbar/CatBar/Hair.jsx:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import styled from 'styled-components'
3 |
4 | const Hairpopup = styled.div`
5 | width: 80%;
6 | display: flex;
7 | justify-content: center;
8 | margin: auto;
9 | text-align: left;
10 | padding: 2vh 0 3vh 0;
11 | border-bottom-left-radius: 5px;
12 | border-bottom-right-radius: 5px;
13 | border: 1px solid #e6dede;
14 | background-color: #fafafa;
15 | .hair {
16 | display: flex;
17 | justify-content: center;
18 | margin: auto;
19 | gap: 1.8vw;
20 | }
21 | .hair > div:nth-child(even) {
22 | background-color: #f4f4f4;
23 | padding: 0px 14px 0px 14px;
24 | }
25 |
26 | .hair > div > p {
27 | line-height: 1.2;
28 | font-size: 14px;
29 | }
30 | .hair > div > p:hover {
31 | color: #fc3581;
32 | cursor: pointer;
33 | }
34 | `;
35 |
36 | const Hair = () => {
37 | return (
38 |
39 |
40 |
41 |
Hair Care
42 |
Shampoo
43 |
Dry Shampoo NEW
44 |
Conditioner
45 |
Hair Oil
46 |
Hair Serum
47 |
Hair Creams & Masks
48 |
Nutritional Supplements
49 |
50 |
51 |
Tools & Accessories
52 |
Hair Brushes
53 |
Hair Combs
54 |
Dryers & Stylers
55 |
Straighteners
56 |
Rollers & Curlers
57 |
Hair Extensions
58 |
Hair Accessories
59 |
60 |
61 |
Hair Styling
62 |
Hair Color
63 |
Hair Spray
64 |
Gels & Waxes
65 |
Shop By Hair Type
66 |
Straight
67 |
Curly & Wavy
68 |
Professional Brands
69 |
70 |
71 |
Shop By Concern
72 |
Hairfall & Thinning
73 |
Dandruff
74 |
Dry & Frizzy Hair
75 |
Split Ends
76 |
Color Protection
77 |
Trending Searches
78 |
Hair Growth Oil
79 |
Dandruff Shampoo
80 |
Castor Oil For Hair
81 |
Sulphate Free Shampoo
82 |
Hair Straightener Brush
83 |
84 |
85 |
Top Brands
86 |
Nykaa Naturals
87 |
L'Oreal Paris
88 |
Wella Professionals
89 |
L'Oreal Professionnel
90 |
BBlunt
91 |
Herbal Essences
92 |
Schwarzkopf Professional
93 |
94 |
95 |
Quick Links
96 |
Combos @ Nykaa
97 |
New Launches
98 |
NFBA Nominees 2020
99 |
Herbal Hair Care
100 |
Routine Finder
101 |
The Beauty Ingredient Edit
102 |
The Safe Beauty Edit
103 |
The Gift Store
104 |
105 |
106 |
107 | )
108 | }
109 |
110 | export default Hair
111 |
--------------------------------------------------------------------------------
/src/components/Navbar/CatBar/Fragrence.jsx:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import styled from "styled-components";
3 |
4 | const FragrancePopup = styled.div`
5 | width: 80%;
6 | display: flex;
7 | justify-content: center;
8 | margin: auto;
9 | text-align: left;
10 | padding: 2vh 0 3vh 0;
11 | border-bottom-left-radius: 5px;
12 | border-bottom-right-radius: 5px;
13 | border: 1px solid #e6dede;
14 | background-color: #fafafa;
15 | .fragrance {
16 | display: flex;
17 | justify-content: center;
18 | margin: auto;
19 | gap: 1.4vw;
20 | }
21 | .fragrance > div:nth-child(even) {
22 | background-color: #f4f4f4;
23 | padding: 5px 14px 5px 14px;
24 | }
25 |
26 | .fragrance > div > p {
27 | line-height: 1.2;
28 | font-size: 14px;
29 | }
30 | .fragrance > div > p:hover {
31 | color: #fc3581;
32 | cursor: pointer;
33 | }
34 | `;
35 |
36 | const Fragrence = () => {
37 | return (
38 |
39 |
40 |
41 |
Womens Fragrance
42 |
Perfumes (EDT / EDP)
43 |
Body Mists / Sprays
44 |
Deodorants / Roll-Ons
45 |
Mens Fragrance
46 |
Perfumes (EDT / EDP)
47 |
Body Mists / Sprays
48 |
Deodorants / Roll-Ons
49 |
Colognes & After Shaves
50 |
51 |
52 |
Giftsets & Combos
53 |
Shop By Fragrance Family
54 |
Earthy & Woody
55 |
Floral
56 |
Fresh & Aquatic
57 |
Spicy & Warm
58 |
Oud Collection
59 |
Fruity
60 |
61 |
62 |
The Parcos Store
63 |
64 | Candles
65 |
66 |
67 |
Top Brands
68 |
Nykaa Cosmetics
69 |
Masaba By Nykaa
70 |
Dior
71 |
Gucci
72 |
Calvin Klein
73 |
Davidoff
74 |
Hermes
75 |
Bvlgari
76 |
Versace
77 |
Skinn By Titan
78 |
Paco Rabanne
79 |
Giorgio Armani
80 |
81 |
82 |
83 | PREMIUM AND DESIGNER BRANDS
84 |
85 |
Explore All
86 |
Dior
87 |
Hermès
88 |
Jo Malone London
89 |
Guerlain
90 |
BVLGARI
91 |
Salvatore Ferragamo
92 |
Calvin Klein
93 |
Giorgio Armani
94 |
Davidoff
95 |
Paco Rabanne
96 |
Carolina Herrera
97 |
Yves Saint Laurent
98 |
Elie Saab
99 |
100 |
101 |
Dolce & Gabbana
102 |
Narciso Rodrigue
103 |
Hugo Boss
104 |
Montblanc
105 |
Quick Links
106 |
Combos @ Nykaa
107 |
New Launches
108 |
NFBA Nominees 2020
109 |
Help Me Choose - Fragrance Finder
110 |
Gifts @ Nykaa
111 |
The Gift Store
112 |
113 |
114 |
115 | );
116 | };
117 |
118 | export default Fragrence;
119 |
--------------------------------------------------------------------------------
/src/components/Navbar/NavFold/SubNavbar.jsx:
--------------------------------------------------------------------------------
1 | import React, { useState } from "react";
2 | import styled from "styled-components";
3 |
4 | import { useNavigate } from "react-router-dom";
5 | import NavbarPopUpComponents from "../CatBar/NavbarPopUpComponents";
6 |
7 | const SubNavbar = () => {
8 | const navigate = useNavigate();
9 | const [State, setState] = useState("");
10 |
11 | const hoverHandler = (type) => {
12 | setState(type);
13 | };
14 |
15 | const handleNoHover = () => {
16 | setState("");
17 | };
18 | return (
19 | <>
20 |
21 | navigate("/face")}
23 | onMouseOver={() => hoverHandler("MAKEUP")}
24 | >
25 | Makeup{" "}
26 |
27 | navigate("/face")}
29 | onMouseEnter={() => hoverHandler("SKIN")}
30 | >
31 | Skin
32 |
33 | navigate("/face")}
35 | onMouseEnter={() => hoverHandler("HAIR")}
36 | >
37 | Hair
38 |
39 | navigate("/face")}
41 | onMouseEnter={() => hoverHandler("APPLIANCES")}
42 | >
43 | Appliances
44 |
45 | navigate("/face")}
47 | onMouseEnter={() => hoverHandler("BATH&BODY")}
48 | >
49 | Bath & Body
50 |
51 | navigate("/face")}
53 | onMouseEnter={() => hoverHandler("NATURAL")}
54 | >
55 | Natural
56 |
57 | navigate("/face")}
59 | onMouseEnter={() => hoverHandler("MOM&BABY")}
60 | >
61 | Mom & Baby
62 |
63 | navigate("/face")}
65 | onMouseEnter={() => hoverHandler("HEALTH")}
66 | >
67 | Health & Wellness
68 |
69 | navigate("/face")}
71 | onMouseEnter={() => hoverHandler("MEN")}
72 | >
73 | Men
74 |
75 | navigate("/face")}
77 | onMouseEnter={() => hoverHandler("FRAGRENCE")}
78 | >
79 | Fragrance
80 |
81 | navigate("/face")}
83 | onMouseEnter={() => hoverHandler("POPUPS")}
84 | >
85 | Pop Ups
86 |
87 |
88 |
89 |
90 | {State && }
91 |
92 |
93 | >
94 | );
95 | };
96 |
97 | export default SubNavbar;
98 |
99 | const Subnav = styled.div`
100 | display: flex;
101 | justify-content: center;
102 | margin: auto;
103 | border: 1px solid #e6dede;
104 | align-items: center;
105 | height: 6.3vh;
106 | background-color: #ffffff;
107 | gap: 2vw;
108 | font-weight: 400;
109 | color: gray;
110 | font-size: 15px;
111 | margin-top: 63px;
112 | p:hover {
113 | border-bottom: 3px solid #fc3581;
114 | cursor: pointer;
115 | padding: 1.7vh 0 1.7vh 0;
116 | color: #fc3581;
117 | font-weight: 600;
118 | }
119 | `;
120 | const Content = styled.div`
121 | .content {
122 | position: absolute;
123 | z-index: 100000;
124 | width: 100vw;
125 | }
126 | `;
127 |
--------------------------------------------------------------------------------
/src/components/SingleProduct/product.module.css:
--------------------------------------------------------------------------------
1 |
2 |
3 | .singleProdCont{
4 | width: 85%;
5 |
6 | margin: 30px auto;
7 | height: 600px;
8 |
9 | }
10 |
11 | .singleMain{
12 | width: 100%;
13 | margin: auto;
14 | display: flex;
15 | align-items: center;
16 |
17 | }
18 | .imageCard{
19 | width: 50%;
20 |
21 | height: 420px;
22 | margin: 10px auto;
23 | display: flex;
24 | align-items: center;
25 | justify-content: center;
26 | gap: 0px 12px;
27 | padding: 20px ;
28 | }
29 |
30 | .multiImg{
31 |
32 | width: 20%;
33 | height: 100%;
34 | display: flex;
35 | flex-direction: column;
36 | align-items: center;
37 | justify-content: space-evenly;
38 | border-radius: 4px;
39 | }
40 |
41 | .multiImg>img{
42 | background-position: center;
43 | border-radius: 4px;
44 | }
45 |
46 | .multiImg>img:hover{
47 | cursor: pointer;
48 | }
49 |
50 |
51 | .singleImage{
52 | border: 1px solid rgb(161, 161, 161);
53 | width: 70%;
54 | height: 100%;
55 | text-align: center;
56 | border-radius: 4px;
57 | }
58 |
59 | .singleImage>img{
60 | width: 100%;
61 | height: 100%;
62 | background-position: center;
63 | background-size: cover;
64 | background-repeat: no-repeat;
65 | border-radius: 4px;
66 | }
67 |
68 | .detailsCard{
69 | height: 420px;
70 | width: 50%;
71 | border-left: 1px solid rgb(136, 136, 136);
72 | padding: 20px 0px;
73 | }
74 |
75 | .detailsCard>div{
76 |
77 | width: 100%;
78 | height: 50%;
79 | padding:0px 20px;
80 | }
81 | .starRating{
82 | display: flex;
83 | align-items: center;
84 | font-size: large;
85 | font-weight: 600;
86 | margin-bottom: 5px;
87 | color: rgb(94, 94, 94);
88 | }
89 | .stars{
90 | display: flex;
91 | gap: 0px 3px;
92 | margin-right: 20px;
93 | }
94 |
95 | .mrp,.inc{
96 | font-size: large;
97 | margin-bottom: 5px;
98 | }
99 |
100 |
101 | .btnAddress{
102 |
103 | display: flex;
104 | align-items: center;
105 | }
106 |
107 |
108 | .btn{
109 | width: 40%;
110 | }
111 | .address{
112 | width: 60%;
113 | border-left: 1px solid grey;
114 | height: 100%;
115 | padding-left: 7px;
116 | }
117 |
118 | .cart{
119 | width: 80%;
120 | border: 1px solid rgb(98, 98, 98);
121 | padding: 10px 15px;
122 | margin: auto;
123 | margin-right: 10px;
124 | text-align: center;
125 | background-color: #f337c7;
126 | color: azure;
127 | font-size: large;
128 | border-radius: 5px;
129 | }
130 | .cart:hover{
131 | color: #f8e0f2;
132 | background-color: #f414c0;
133 | }
134 | .pin{
135 | display: flex;
136 | align-items: center;
137 | font-size: larger;
138 | margin: 10px 0px;
139 | }
140 |
141 | .inputPin{
142 | width: 100%;
143 | border: 1px solid blue;
144 | height: 100px;
145 | display: flex;
146 | align-items: center;
147 | gap: 0px 5px;
148 | }
149 |
150 | .inputPin input{
151 | width: 65%;
152 | height: 50px;
153 | border: 1px solid rgb(79, 79, 79);
154 | border-radius: 5px;
155 | padding: 3px 15px;
156 | }
157 |
158 | .inputPin button{
159 | width: 30%;
160 | border: 1px solid green;
161 | height: 50px;
162 | border-radius: 5px;
163 | text-align: center;
164 | background-color: #f73bcb;
165 | color: aliceblue;
166 | font-weight: bold;
167 | }
168 |
169 | .inputPin button:hover{
170 | color: #f8e0f2;
171 | background-color: #f414c0;
172 | }
--------------------------------------------------------------------------------
/src/components/Navbar/CatBar/MomBaby.jsx:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import styled from "styled-components";
3 |
4 | const MomBabyPopup = styled.div`
5 | width: 82%;
6 | display: flex;
7 | justify-content: center;
8 | margin: auto;
9 | text-align: left;
10 | padding: 2vh 0 3vh 0;
11 | border-bottom-left-radius: 5px;
12 | border-bottom-right-radius: 5px;
13 | border: 1px solid #e6dede;
14 | background-color: #fafafa;
15 | .mombaby {
16 | display: flex;
17 | justify-content: center;
18 | margin: auto;
19 | gap: 1vw;
20 | }
21 | .mombaby > div:nth-child(even) {
22 | background-color: #f4f4f4;
23 | padding: 5px 14px 5px 14px;
24 | }
25 |
26 | .mombaby > div > p {
27 | line-height: 1.2;
28 | font-size: 14px;
29 | }
30 | .mombaby > div > p:hover {
31 | color: #fc3581;
32 | cursor: pointer;
33 | }
34 | `;
35 |
36 | const MomBaby = () => {
37 | return (
38 |
39 |
40 |
41 |
Baby Care
42 |
Body Wash & Soaps
43 |
Baby Oil
44 |
Hair Oil
45 |
Lotions & Creams
46 |
Baby Powder
47 |
Shampoo & Conditioner
48 |
Sunscreen
49 |
Wipes & Buds
50 |
Teeth & Dental Care
51 |
Rash Cream
52 |
Diapers
53 |
Diaper Accessories
54 |
Bath Accessories
55 |
Baby Grooming
56 |
Baby Bedding
57 |
58 |
59 |
Kids Care
60 |
Nutritional Supplement
61 |
Body Wash & Soaps
62 |
Lotions & Creams
63 |
Hair Care
64 |
Sunscreen
65 |
Dental Care
66 |
Kids Makeup
67 |
68 |
69 |
Maternity Care
70 |
Stretch Mark Creams & Oils
71 |
Breast Firming Gels & Creams
72 |
Nipple Creams
73 |
Nutritional Supplements
74 |
Maternity Pillows
75 |
76 |
77 |
Nursing & Feeding
78 |
Feeding Bottle & Nipples
79 |
Teethers & Soothers
80 |
Breast Pumps
81 |
Breast Pads
82 |
83 | Cleaning & Feeding Accessories
84 |
85 |
Bibs
86 |
Sippers & Cups
87 |
88 |
89 |
Health & Safety
90 |
Nose & Ear Care
91 |
92 | Gripe Water & Tummy Roll On
93 |
94 |
Detergents & Cleansers
95 |
Handwash & Sanitizer
96 |
Mosquito
97 |
Maternity Wear
98 |
Maternity Bra
99 |
Maternity Dress
100 |
Maternity Tops
101 |
102 |
103 |
Baby Toys
104 |
Gift Sets
105 |
Shop By Concerns
106 |
Baby Dry Skin
107 |
Cracked Nipple Cream
108 |
Scalp Treatment
109 |
Coconut Oil
110 |
Almond Oil
111 |
Heat Rash
112 |
Body Toning & Firming
113 |
Baby Skin Concerns
114 |
Combos @ Nykaa
115 |
116 |
117 |
118 | );
119 | };
120 |
121 | export default MomBaby;
122 |
--------------------------------------------------------------------------------
/src/components/Authentication/Front.jsx:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import {
3 | crossButton,
4 | Signin,
5 | h1,
6 | p,
7 | input,
8 | para,
9 | a,
10 | googlecss,
11 | } from "./login.css";
12 | import { useNavigate } from "react-router-dom";
13 | import loginImage from "./login.png";
14 | import google from "./google.png";
15 | import firebaseAuth from "./firebase";
16 | import { GoogleAuthProvider, signInWithPopup } from "firebase/auth";
17 | import axios from "axios";
18 | import { v4 } from "uuid";
19 | function Front({ setView }) {
20 | const navigate = useNavigate();
21 | const signInWithFirebase = () => {
22 | var googleProvider = new GoogleAuthProvider();
23 | signInWithPopup(firebaseAuth, googleProvider)
24 | .then((response) => {
25 | const user = {
26 | ID: v4(),
27 | Email: response._tokenResponse.email,
28 | Photo: response._tokenResponse.photoUrl,
29 | Name: response._tokenResponse.displayName,
30 | Token: response._tokenResponse.oauthAccessToken,
31 | Password: response._tokenResponse.email,
32 | };
33 | axios
34 | .post("https://mock-server-686g.onrender.com/register", user)
35 | .then((res) => {
36 | const localData = {
37 | ID: res.data.data,
38 | Email: response._tokenResponse.email,
39 | Name: response._tokenResponse.displayName,
40 | Token: response._tokenResponse.oauthAccessToken,
41 | Photo: response._tokenResponse.photoUrl,
42 | };
43 | localStorage.setItem("oAuth", JSON.stringify(localData));
44 | navigate("/");
45 | });
46 | })
47 | .catch((error) => {
48 | console.log(error);
49 | });
50 | };
51 | return (
52 |
53 |
{
55 | navigate("/");
56 | }}
57 | style={crossButton}
58 | >
59 | X
60 |
61 |
62 |
63 |
Sign in
64 |
65 | To quickly find your favourites items, saved addresses and payments.
66 |
67 |
74 |
Register and earn 2000 reward points
75 |
76 |
77 |
78 |
setView("register")} style={input}>
79 | Login By OTP
80 |
81 |
82 |
83 |
navigate("/register")} style={input}>
84 | register
85 |
86 |
87 |
93 |
94 |
114 |
115 | );
116 | }
117 |
118 | export default Front;
119 |
--------------------------------------------------------------------------------
/src/components/Navbar/CatBar/NykaaFashion.jsx:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import styled from "styled-components";
3 |
4 | const Nyaka = styled.div`
5 | width: 80%;
6 | display: flex;
7 | justify-content: center;
8 | margin: auto;
9 | text-align: left;
10 | padding: 2vh 0 3vh 0;
11 | border-bottom-left-radius: 5px;
12 | border-bottom-right-radius: 5px;
13 | border: 1px solid #e6dede;
14 | background-color: #fafafa;
15 | .nyaka {
16 | display: flex;
17 | justify-content: center;
18 | margin: auto;
19 | gap: 2vw;
20 | }
21 | .nyaka > div:nth-child(even) {
22 | background-color: #f4f4f4;
23 | padding: 0px 10px 0px 10px;
24 | }
25 | .nyaka > div:nth-child(5) > img {
26 | height: 53vh;
27 | }
28 | .nyaka > div > p {
29 | line-height: 1.2;
30 | font-size: 15px;
31 | }
32 | .nyaka > div > p:hover {
33 | color: #fc3581;
34 | cursor: pointer;
35 | }
36 | `;
37 |
38 | const NykaaFashion = () => {
39 | return (
40 |
41 |
42 |
43 |
What's New
44 |
Recently Added
45 |
Women
46 |
Indianwear
47 |
Westernwear
48 |
Footwear
49 |
Bags
50 |
Lingerie
51 |
Sportswear
52 |
Sleep & Lounge
53 |
Jewellery
54 |
Watches
55 |
Accessories
56 |
Men
57 |
Topwear
58 |
Bottomwear
59 |
Ethnicwear
60 |
Topwear
61 |
62 |
63 |
Bottomwear
64 |
Ethnicwear
65 |
Footwear
66 |
Atheisure
67 |
Innerwear & Sleepwear
68 |
Watches
69 |
Accessories
70 |
Bags
71 |
Style Guide
72 |
73 |
Tech
74 |
Smart Wearables
75 |
Headphones
76 |
Speakers
77 |
Chargers & Cables
78 |
Power Banks
79 |
Kids
80 |
Westernwear
81 |
Indianwear
82 |
83 |
84 |
Winterwear
85 |
Footwear
86 |
Toys & Games
87 |
Feeding
88 |
Sportswear
89 |
Sleep & Lounge
90 |
Home
91 |
Kitchen & Dining
92 |
Decor
93 |
Bedding
94 |
Bath
95 |
Storage
96 |
Floor Coverings
97 |
Kitchen Appliances
98 |
99 |
House Of Nykaa
100 |
Twenty Dresses
101 |
Nykaa Fashion
102 |
RSVP By Nykaa Fashion
103 |
104 |
105 |
Gajra Gang
106 |
Nykd By Nykaa
107 |
Pipa Bella
108 |
IYKYK By Nykaa Fashion
109 |
Kica
110 |
Twig And Twine
111 |
Likha By Nykaa Fashion
112 |
Top Brands
113 |
Vero Moda
114 |
Fabindia
115 |
Na-Kd
116 |
Koton
117 |
I Saw It First
118 |
Swtantra
119 |
Biba
120 |
Forever New
121 |
122 |
123 |
127 |
128 |
129 |
130 | );
131 | };
132 |
133 | export default NykaaFashion;
134 |
--------------------------------------------------------------------------------
/src/components/Home/Horizontal.module.css:
--------------------------------------------------------------------------------
1 | .media_scroller {
2 | --_spacer: var(--size-3);
3 | display: grid;
4 | gap: var(--_spacer);
5 | grid-auto-flow: column;
6 | grid-auto-columns: 21%;
7 | padding: 0 var(--_spacer) var(--_spacer);
8 | overflow-x: auto;
9 | overscroll-behavior-inline: contain;
10 | width: 90%;
11 | margin: auto;
12 | }
13 |
14 | .media_element {
15 | display: grid;
16 | grid-template-rows: min-content;
17 | gap: var(--_spacer);
18 | padding: var(--_spacer);
19 | background: var(--surface-2);
20 | border-radius: var(--radius-2);
21 | box-shadow: var(--shadow-2);
22 | position: relative;
23 | height: 300px;
24 | display: inline-block;
25 | background: rgb(255, 255, 255);
26 | width: 217px;
27 | min-width: 218px;
28 | max-height: 600px;
29 | vertical-align: top;
30 | cursor: pointer;
31 | border-top: 1px solid rgb(225, 225, 225);
32 | border-right: 1px solid rgb(225, 225, 225);
33 | border-bottom: 1px solid rgb(225, 225, 225);
34 | border-image: initial;
35 | border-left: none;
36 | }
37 | .detail {
38 | font-size: 14px;
39 | font-weight: 400;
40 | line-height: 20px;
41 | letter-spacing: 0px;
42 | overflow: hidden;
43 | height: 40px;
44 | display: block;
45 | margin: 0px 0px 0px -10px;
46 | color: rgb(0, 19, 37);
47 | text-overflow: ellipsis;
48 | text-align: left;
49 | }
50 | .subtittle {
51 | font-size: 12px;
52 | text-align: left;
53 | font-weight: 400;
54 | line-height: 16px;
55 | letter-spacing: 0px;
56 | color: rgb(117, 117, 117);
57 | margin: 0px 0px 0px -10px;
58 | padding: 0px;
59 | text-transform: capitalize;
60 | }
61 | .viewbtn {
62 | width: 100px;
63 | height: 32px;
64 | font-size: 14px;
65 | font-weight: 600;
66 | line-height: 2;
67 | letter-spacing: 0.57px;
68 | text-align: center;
69 | position: absolute;
70 | bottom: 0px;
71 | cursor: pointer;
72 | margin-bottom: 2px;
73 | color: rgb(252, 39, 121);
74 | margin-left: 50px;
75 | }
76 | .media_element img {
77 | width: 156px;
78 | height: 156px;
79 | }
80 | .snaps_inline > * {
81 | scroll-snap-align: start;
82 | }
83 | .reviewstar {
84 | line-height: 12px;
85 | margin-bottom: 0.25rem;
86 | display: flex;
87 | margin-left: -10px;
88 | }
89 | .starwrap {
90 | display: inline-block;
91 | margin-right: 2px;
92 | }
93 | .reviewcount {
94 | margin-left: 5px;
95 | font-size: 12px;
96 | color: rgb(117, 117, 117);
97 | }
98 | .pricediscountprice {
99 | color: rgb(0, 19, 37);
100 | font-size: 14px;
101 | font-weight: 400;
102 | line-height: 20px;
103 | letter-spacing: 0px;
104 | }
105 | .priceoffer {
106 | color: rgb(0, 137, 69);
107 | margin-left: 4px;
108 | padding-left: 4px;
109 | border-left: 1px solid rgb(238, 238, 238);
110 | font-size: 14px;
111 | font-weight: 400;
112 | line-height: 20px;
113 | letter-spacing: 0px;
114 | }
115 | .offprice {
116 | margin-right: 4px;
117 | color: rgba(0, 19, 37, 0.64);
118 | font-size: 14px;
119 | font-weight: 400;
120 | line-height: 20px;
121 | letter-spacing: 0px;
122 |
123 | text-decoration-line: line-through;
124 | }
125 | .price1 {
126 | line-height: 20px;
127 | margin-bottom: 0.25rem;
128 | margin-left: -10px;
129 | text-align: left;
130 | }
131 | .badgediv {
132 | margin: 0.5rem;
133 | position: absolute;
134 | top: 0px;
135 | left: 0px;
136 | z-index: 1;
137 | }
138 | .badgeul {
139 | width: 80px;
140 | padding-left: 0px;
141 | list-style: none;
142 | margin: 0px 0px 0px -19px;
143 | display: flex;
144 | }
145 | .badgeli {
146 | margin-right: 4px;
147 | border: none;
148 | display: inline-block;
149 | padding: 0px 5px;
150 | text-transform: capitalize;
151 | font-size: 10px;
152 | font-weight: 600;
153 | line-height: 12px;
154 | letter-spacing: 0.9px;
155 | background-color: rgb(223, 249, 229);
156 | border: 1px solid rgb(195, 231, 206);
157 | color: rgb(104, 166, 119);
158 | }
159 |
--------------------------------------------------------------------------------
/src/components/Navbar/CatBar/Mens.jsx:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import styled from "styled-components";
3 |
4 | const MensPopup = styled.div`
5 | width: 80%;
6 | display: flex;
7 | justify-content: center;
8 | margin: auto;
9 | text-align: left;
10 | padding: 2vh 0 3vh 0;
11 | border-bottom-left-radius: 5px;
12 | border-bottom-right-radius: 5px;
13 | border: 1px solid #e6dede;
14 | background-color: #fafafa;
15 | .mens {
16 | display: flex;
17 | justify-content: center;
18 | margin: auto;
19 | gap: 1.8vw;
20 | }
21 | .mens > div:nth-child(even) {
22 | background-color: #f4f4f4;
23 | padding: 0px 14px 0px 14px;
24 | }
25 |
26 | .mens > div > p {
27 | line-height: 1.2;
28 | font-size: 14px;
29 | }
30 | .mens > div > p:hover {
31 | color: #fc3581;
32 | cursor: pointer;
33 | }
34 | `;
35 |
36 | const Mens = () => {
37 | return (
38 |
39 |
40 |
41 |
Shaving
42 |
Razors & Cartridges
43 |
Shavers
44 |
Trimmers
45 |
Shaving Creams
46 |
Shaving Foams
47 |
Shaving Gels
48 |
Pre & Post Shaves
49 |
Aftershave Lotion
50 |
Shaving Brushes
51 |
52 |
53 |
Beard Care
54 |
Beard Oil
55 |
Beard Butter
56 |
Beard Softener
57 |
Beard Wash
58 |
Beard Wax
59 |
Moustache Oil
60 |
Beard Comb
61 |
Moustache Wax
62 |
Beard Kits
63 |
Beard Gel
64 |
Beard Balm
65 |
Beard Cream
66 |
Beard Serum
67 |
Beard Mist
68 |
Beard Colour
69 |
Beard Shampoo
70 |
71 |
72 |
Hair Care
73 |
Shampoo
74 | Conditioner
75 |
Hair Styling
76 | Hair Color
77 |
Hair Oils
78 |
Professional Products
79 |
Skin Care
80 |
Face Wash
81 |
Moisturizers
82 |
Sunscreen
83 |
Masks & Peels
84 |
Scrubs & Exfoliators
85 |
Fairness
86 |
87 |
88 |
Bath & Body
89 |
Bath/Shower Gels
90 |
Soaps
91 |
Body Scrubs
92 |
Talc
93 |
Dental Care
94 |
Body Lotions
95 |
Intimate Care
96 |
Grooming Kits
97 |
Fragrance
98 |
Deodorants/Roll Ons
99 |
Colognes & Perfumes (EDT & EDP)
100 |
Luxe Fragrances
101 |
102 |
103 |
Shop By Concern
104 |
Anti Dandruff
105 |
Anti Hairfall
106 |
Scalp Treatment
107 |
Anti Acne
108 |
Anti Ageing
109 |
Wellness
110 |
Sexual Wellness
111 |
Health Supplements
112 |
Weight Management
113 |
Sports Nutrition
114 |
115 |
116 |
Top Brands
117 |
Beardo
118 |
Gilette
119 |
Livon
120 |
Nivea
121 |
Park Avenue
122 |
Quick Links
123 |
Combos @ Nykaa
124 |
New Launches
125 |
Gifts @ Nykaa
126 |
Routine Finder
127 |
The Gift Store
128 |
129 |
130 |
131 | );
132 | };
133 |
134 | export default Mens;
135 |
--------------------------------------------------------------------------------
/src/components/Navbar/CatBar/Makeup.jsx:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import styled from "styled-components";
3 |
4 | const MakeupPopup = styled.div`
5 | width: 80%;
6 | display: flex;
7 | justify-content: center;
8 | margin: auto;
9 | text-align: left;
10 | padding: 2vh 0 3vh 0;
11 | border-bottom-left-radius: 5px;
12 | border-bottom-right-radius: 5px;
13 | border: 1px solid #e6dede;
14 | background-color: #fafafa;
15 | .makup {
16 | display: flex;
17 | justify-content: center;
18 | margin: auto;
19 | gap: 2.4vw;
20 | }
21 | .makup > div:nth-child(even) {
22 | background-color: #f4f4f4;
23 | padding: 0px 14px 0px 14px;
24 | }
25 |
26 | .makup > div > p {
27 | line-height: 1.2;
28 | font-size: 14px;
29 | }
30 | .makup > div > p:hover {
31 | color: #fc3581;
32 | cursor: pointer;
33 | }
34 | `;
35 |
36 | const Makeup = () => {
37 | return (
38 |
39 |
40 |
41 |
Face
42 |
Face Primer
43 |
Concealer
44 |
Foundation
45 |
Compact
46 |
Contour
47 |
Loose Powder
48 |
Tinted Moisturizer
49 |
Blush
50 |
Bronzer
51 |
BB & CC Cream
52 |
Highlighters
53 |
Setting Spray
54 |
Makeup Remover
55 |
Sindoor
56 |
57 |
58 |
Eyes
59 |
Kajal
60 |
Eyeliner
61 |
Mascara
62 |
Eye Shadow
63 |
Eye Brow Enhancers
64 |
Eye Primer
65 |
False Eyelashes
66 |
Eye Makeup Remover
67 |
Under Eye Concealer
68 |
Contact Lenses
69 |
70 |
Makeup Kits & Combos
71 |
Makeup Kits
72 |
Makeup Combos
73 |
74 |
75 |
Lips
76 |
Lipstick
77 |
Liquid Lipstick
78 |
Lip Crayon
79 |
Lip Gloss
80 |
Lip Liner
81 |
Lip Plumper
82 |
Lip Stain
83 |
Nails
84 |
Nail Polish
85 |
Nail Art Kits
86 |
Nail Care
87 |
Nail Polish Remover
88 |
89 |
90 |
Tools & Brushes
91 |
Face Brush
92 |
Eye Brush
93 |
Lip Brush
94 |
Brush Sets
95 |
Brush Cleaners
96 |
Sponges & Applicators
97 |
Eyelash Curlers
98 |
Tweezers
99 |
Sharpeners
100 |
Mirrors
101 |
Makeup Pouches
102 |
103 | Multi-Functional Makeup Palettes
104 |
105 |
106 |
107 |
Top Brands
108 |
Kay Beauty
109 |
Huda Beauty
110 |
Charlotte Tilbury
111 |
M.A.C
112 |
Maybelline New York
113 |
L'Oreal Paris
114 |
Lakme
115 |
Nykaa Cosmetics
116 |
Nyx Pro.Makeup
117 |
118 |
119 |
Quick Links
120 |
Combos @ Nykaa
121 |
New Launches
122 |
NFBA Nominees 2020
123 |
Gifts @ Nykaa
124 |
The Gift Store
125 |
Trending Searches
126 |
Nude Lipstick
127 |
Matte Lipstick
128 |
Red Lipstick
129 |
Pink Lipstick
130 |
131 |
132 |
133 | );
134 | };
135 |
136 | export default Makeup;
137 |
--------------------------------------------------------------------------------
/src/components/Navbar/CatBar/Skin.jsx:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import styled from 'styled-components'
3 |
4 | const SkinPopup = styled.div`
5 | width: 80%;
6 | display: flex;
7 | justify-content: center;
8 | margin: auto;
9 | text-align: left;
10 | padding: 2vh 0 3vh 0;
11 | border-bottom-left-radius: 5px;
12 | border-bottom-right-radius: 5px;
13 | border: 1px solid #e6dede;
14 | background-color: #fafafa;
15 | .skin {
16 | display: flex;
17 | justify-content: center;
18 | margin: auto;
19 | gap: 1.8vw;
20 | }
21 | .skin > div:nth-child(even) {
22 | background-color: #f4f4f4;
23 | padding: 0px 14px 0px 14px;
24 | }
25 |
26 | .skin > div > p {
27 | line-height: 1.2;
28 | font-size: 14px;
29 | }
30 | .skin > div > p:hover {
31 | color: #fc3581;
32 | cursor: pointer;
33 | }
34 | `;
35 |
36 | const Skin = () => {
37 | return (
38 | <>
39 |
40 |
41 |
42 |
Moisturizers
43 |
Face Moisturizer
44 |
Night Cream
45 |
Face Oils
46 |
All Purpose Gels/Creams
47 |
Face Serums
48 |
Cleansers
49 |
Face Wash & Cleanser
50 |
Cleansing Oils & Balm
51 |
Micellar Water
52 |
Face Wipes
53 |
Makeup Remover
54 |
Face Scrub
55 |
56 |
57 |
Trending Searches
58 |
Toners Under 1000
59 |
Face Wash For Oily Skin
60 |
Oil Free Face Moisturizers
61 |
Lip Balm Under 500
62 |
Vitamin C Serum
63 |
Masks
64 |
Sheet Masks
65 |
Sleeping Masks
66 |
Face Masks & Packs
67 |
Face Packs
68 |
Face Bleach
69 |
70 |
71 |
Toners & Mists
72 |
Toners
73 |
Facial Mists
74 |
Rose Water
75 |
Bath & Body
76 |
Body Lotions
77 |
Body Butter
78 |
Body Oils
79 |
Shower Gels And Body Wash
80 |
Soaps
81 |
Body Scrubs
82 |
Bath Salts
83 |
Scrubs And Loofahs
84 |
Hands And Feet
85 |
Hand Creams
86 |
Foot Creams
87 |
Hand & Foot Masks
88 |
89 |
90 |
Specialised Skincare
91 |
Acne Spot Correctors
92 |
Neck Creams
93 |
Nose Strips
94 |
Facial Peels
95 |
Eye Care
96 |
Eye Serums & Creams
97 |
Eye Masks
98 |
Lip Care
99 |
Lip Balm
100 |
Lip Scrubs
101 |
Lip Masks
102 |
Sunscreen
103 |
Face Sunscreen
104 |
Body Sunscreen
105 |
106 |
107 |
Kits And Combos
108 |
Facial Kits
109 |
Kits & Combos
110 |
Gift Sets
111 |
Skin Tools
112 |
Face Massagers
113 |
Cleansing Brushes
114 |
Blackhead Remover
115 |
Dermarollers
116 |
Skin Supplements
117 |
Vitamins & Minerals
118 |
Ayurvedic Herbs
119 |
120 |
121 |
Shop By Concern
122 |
Acne
123 |
Dull Skin
124 |
Pigmentation
125 |
Wrinkles & Fine Lines
126 |
Pores
127 |
Dark Spots
128 |
Face Tan
129 |
Oil Control
130 |
New Launches
131 |
Quick Links
132 |
The Gift Store
133 |
134 |
135 |
136 | >
137 | )
138 | }
139 |
140 | export default Skin;
141 |
--------------------------------------------------------------------------------
/src/components/Navbar/CatBar/BodyBath.jsx:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import styled from "styled-components";
3 |
4 | const Bodybath = styled.div`
5 | width: 82%;
6 | display: flex;
7 | justify-content: center;
8 | margin: auto;
9 | text-align: left;
10 | padding: 2vh 0 3vh 0;
11 | border-bottom-left-radius: 5px;
12 | border-bottom-right-radius: 5px;
13 | border: 1px solid #e6dede;
14 | background-color: #fafafa;
15 | .bodybath {
16 | display: flex;
17 | justify-content: center;
18 | margin: auto;
19 | gap: 1vw;
20 | }
21 | .bodybath > div:nth-child(even) {
22 | background-color: #f4f4f4;
23 | padding: 5px 14px 5px 14px;
24 | }
25 |
26 | .bodybath > div > p {
27 | line-height: 1.2;
28 | font-size: 14px;
29 | }
30 | .bodybath > div > p:hover {
31 | color: #fc3581;
32 | cursor: pointer;
33 | }
34 | `;
35 | const BodyBath = () => {
36 | return (
37 |
38 |
39 |
40 |
Bath & Shower
41 |
Shower Gels & Body Wash
42 |
Body Scrubs & Exfoliants
43 |
Soaps
44 |
Bath Salts
45 |
Bath Accessories
46 |
Body Care
47 |
Body Lotions & Moisturizers
48 |
Deodorants/Roll Ons
49 |
Body Butters
50 |
Massage Oils
51 |
Essential Oils
52 |
Talcum Powder
53 |
Intimate Care
54 |
55 |
56 |
Feminine Hygiene
57 |
Sanitary Napkins
58 |
Menstrual Cups
59 |
Tampons
60 |
Pantyliners
61 |
Intimate Wash
62 |
Other Period Essentials
63 |
Shaving & Hair Removal
64 |
Body Razors & Cartridges
65 |
Face & Eyebrow Razors
66 |
Wax & Wax Strips
67 |
Hair Removal Creams
68 |
Epilators & Bikini Trimmers
69 |
Pre & Post Wax Essentials
70 |
71 |
72 |
Men's Grooming
73 |
Razors & Catridges
74 |
Shaving Cream, Foams & Gels
75 |
Pre & Post Shaves
76 |
Shavers & Trimmers
77 |
Beard & Moustache Care
78 |
Intimate Care
79 |
Hands & Feet
80 |
Hand Wash
81 |
Hand Creams & Masks
82 |
Foot Care
83 |
Manicure Pedicure Tools & Kits
84 |
85 |
86 |
Hygiene Essentials
87 |
Face Mask
88 |
Hand Sanitizer
89 |
Gloves, PPE & Face Shields
90 |
Oral Care
91 |
Toothpaste
92 |
Electric Toothbrush
93 |
Manual Toothbrush
94 |
Mouthwash
95 |
Floss & Tongue Cleaners
96 |
97 |
98 |
Kits & Combos
99 |
Bath & Body Kits
100 |
Bath & Body Combos
101 |
Top Brands
102 |
MCaffeine
103 |
Wanderlust
104 |
Gillette
105 |
Whisper
106 |
Dove
107 |
Sanfe
108 |
109 |
110 |
Quick Links
111 |
Combos @ Nykaa
112 |
New Launches
113 |
NFBA Nominees 2020
114 |
Gifts @ Nykaa
115 |
Routine Finder
116 |
The Gift Store
117 |
Trending Searches
118 |
Body Wash
119 |
Body Lotions
120 |
Face Razors For Women
121 |
Sanitary Napkins
122 |
Body Scrubs
123 |
Deodorants
124 |
125 |
126 |
127 | );
128 | };
129 |
130 | export default BodyBath;
--------------------------------------------------------------------------------
/src/logs/Signup.jsx:
--------------------------------------------------------------------------------
1 | import {
2 | Flex,
3 | Box,
4 | FormControl,
5 | FormLabel,
6 | Input,
7 | InputGroup,
8 | HStack,
9 | InputRightElement,
10 | Stack,
11 | Button,
12 | Heading,
13 | Text,
14 | useColorModeValue,
15 | Link
16 | } from '@chakra-ui/react';
17 | import { useState } from 'react';
18 | import { ViewIcon, ViewOffIcon } from '@chakra-ui/icons';
19 | import {useDispatch, useSelector} from "react-redux";
20 | // import { signup } from '../../Redux/Signup/Signup.action';
21 | // import Navbar from '../../compounts/navbar/Navbar';
22 | import { signup } from "../Redux/Signup/Signup.action"
23 |
24 | function Signup() {
25 | const [showPassword, setShowPassword] = useState(false);
26 | const [user,setUser]= useState({name:"",email:"",password:""});
27 |
28 |
29 | const dispatch = useDispatch();
30 |
31 |
32 | const handleChange=(e)=>{
33 | const {name,value}=e.target;
34 | setUser({...user,[name]:value})
35 | }
36 | const state= useSelector((store)=>store.signupManager);
37 |
38 |
39 |
40 | const handleSignup=()=>{
41 | dispatch(signup(user));
42 | }
43 |
44 | return (
45 | <>
46 | {/* */}
47 |
48 |
53 |
54 |
55 |
56 | Sign up
57 |
58 |
59 |
64 |
65 |
66 |
67 |
68 | First Name
69 |
70 |
71 |
72 |
73 |
74 | Last Name
75 |
76 |
77 |
78 |
79 |
80 | Email address
81 |
82 |
83 |
84 | Create Password
85 |
86 |
87 |
88 |
91 | setShowPassword((showPassword) => !showPassword)
92 | }>
93 | {showPassword ? : }
94 |
95 |
96 |
97 |
98 |
99 |
108 | Submit
109 |
110 |
111 |
112 |
113 | Already a user? Login
114 |
115 |
116 |
117 |
118 |
119 |
120 | >
121 | )
122 | }
123 |
124 | export default Signup
125 |
--------------------------------------------------------------------------------
/src/components/Navbar/CatBar/Natural.jsx:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import styled from "styled-components";
3 |
4 | const NaturalPopup = styled.div`
5 | width: 80%;
6 | display: flex;
7 | justify-content: center;
8 | margin: auto;
9 | text-align: left;
10 | padding: 2vh 0 3vh 0;
11 | border-bottom-left-radius: 5px;
12 | border-bottom-right-radius: 5px;
13 | border: 1px solid #e6dede;
14 | background-color: #fafafa;
15 | .natural {
16 | display: flex;
17 | justify-content: center;
18 | margin: auto;
19 | gap: 1.8vw;
20 | }
21 | .natural > div:nth-child(even) {
22 | background-color: #f4f4f4;
23 | padding: 0px 14px 0px 14px;
24 | }
25 |
26 | .natural > div > p {
27 | line-height: 1.2;
28 | font-size: 14px;
29 | }
30 | .natural > div > p:hover {
31 | color: #fc3581;
32 | cursor: pointer;
33 | }
34 | `;
35 |
36 | const Natural = () => {
37 | return (
38 |
39 |
40 |
41 |
Skin
42 |
Face Wash
43 |
Cleanser
44 |
Moisturizer
45 |
Face Cream
46 |
Face Mist
47 |
Facial Kits
48 |
Toner
49 |
Face Oils
50 |
Sunscreen
51 |
Night Cream
52 |
Day Cream
53 |
Under Eye Care
54 |
Face Bleach
55 |
Serums
56 |
57 |
58 |
Skin
59 |
Sheet Masks
60 |
Masks & Peels
61 |
Scrubs & Exfoliators
62 |
Face Tools
63 |
Face Gel
64 |
Lip Scrub
65 |
Body Care
66 |
Shower Gels & Body Wash
67 |
Soaps
68 |
Body Lotions
69 |
Body Scrubs
70 |
Bath Salts & Bath Bombs
71 |
Hands & Feet Care
72 |
Bath Tools & Accessories
73 |
Oral Care
74 |
75 |
76 |
Hair
77 |
Shampoo & Cleanser
78 |
Conditioner
79 |
Hair Masks
80 |
Hair Oil
81 |
Hair Serum
82 |
Hair Color
83 |
Tools & Accessories
84 |
Aromatherapy
85 |
Massage Oils
86 |
Carrier Oils
87 |
Essential Oils
88 |
Candles
89 |
Diffuser
90 |
Incense Sticks
91 |
92 |
93 |
Makeup
94 |
Lipstick
95 |
Kajal
96 |
Eyeliner
97 |
Mascara
98 |
Nail Polish
99 |
Lip Balm & Gloss
100 |
Foundation & Concealer
101 |
Blush & Highlighter
102 |
Makeup Remover
103 |
Tools & Brushes
104 |
Trending Search
105 |
Tea Tree Oil
106 |
Eucalyptus Oil
107 |
Rosemary Oil
108 |
Jojoba Oil
109 |
Peppermint Oil
110 |
111 |
112 |
Top Brands
113 |
Biotique
114 |
Lotus Herbals
115 |
The Body Shop
116 |
Nykaa Naturals
117 |
Kama Ayurveda
118 |
Forest Essentials
119 |
Khadi Natural
120 |
Himalaya
121 |
VLCC
122 |
Baby Care
123 |
Types Of Skin
124 |
Dry Skin
125 |
Normal Skin
126 |
Oily Skin
127 |
Combination Skin
128 |
129 |
130 |
Shop By Concern
131 |
Tan Removal
132 |
Pigmentation
133 |
Acne Treatment
134 |
Skin Lightening
135 |
Anti Aging
136 |
Dark Circles
137 |
Hairfall
138 |
Dandruff
139 |
Dry & Frizzy Hair
140 |
QUICK LINKS
141 |
New Launches
142 |
Combos @ Nykaa
143 |
Gifts @ Nykaa
144 |
The Safe Beauty Edit
145 |
146 |
147 |
148 | );
149 | };
150 |
151 | export default Natural;
152 |
--------------------------------------------------------------------------------
/src/components/Home/Home.module.css:
--------------------------------------------------------------------------------
1 | .banner {
2 | width: 90%;
3 | height: auto;
4 | margin: auto;
5 | margin-top: 15px;
6 | margin-bottom: 20px;
7 | border-radius: 3px;
8 | }
9 | .banner:hover {
10 | box-shadow: rgba(14, 30, 37, 0.12) 0px 2px 4px 0px,
11 | rgba(14, 30, 37, 0.32) 0px 2px 16px 0px;
12 | }
13 | .bigheader {
14 | font-size: 24px;
15 | font-weight: normal;
16 | color: black;
17 | text-align: center;
18 | margin: auto;
19 | margin-top: 20px;
20 | margin-bottom: 10px;
21 | text-transform: uppercase;
22 | }
23 | .card {
24 | border: 2px solid blue;
25 | display: grid;
26 | grid-template-columns: repeat(3, 300px);
27 | grid-template-rows: auto;
28 | width: 89%;
29 | margin: auto;
30 | gap: 20px;
31 | }
32 | .discount {
33 | /* border: 2px solid red; */
34 | width: 300px;
35 | margin: auto;
36 | text-align: center;
37 | }
38 | .card2 {
39 | /* border: 2px solid green; */
40 | display: flex;
41 | flex-wrap: wrap;
42 | box-sizing: border-box;
43 | width: auto;
44 | margin-top: 50px;
45 | height: auto;
46 | margin-top: 20px;
47 | /* width: 89%;
48 | margin: auto; */
49 | }
50 | .card2hovereffect {
51 | margin: auto;
52 | }
53 | .card2hovereffect:hover {
54 | box-shadow: rgba(14, 30, 37, 0.12) 0px 2px 4px 0px,
55 | rgba(14, 30, 37, 0.32) 0px 2px 16px 0px;
56 | }
57 | .desimcal {
58 | width: 400px;
59 | height: 350px;
60 | object-fit: cover;
61 | border-radius: 3px;
62 | }
63 | .desimcal:hover {
64 | box-shadow: rgba(14, 30, 37, 0.12) 0px 2px 4px 0px,
65 | rgba(14, 30, 37, 0.32) 0px 2px 16px 0px;
66 | }
67 | .banner2 {
68 | width: 89%;
69 | height: auto;
70 | margin: auto;
71 | margin-top: 15px;
72 | border-radius: 5px;
73 | }
74 | .banner2:hover {
75 | box-shadow: rgba(14, 30, 37, 0.12) 0px 2px 4px 0px,
76 | rgba(14, 30, 37, 0.32) 0px 2px 16px 0px;
77 | }
78 | .banner3 {
79 | width: 89%;
80 | height: auto;
81 | margin: auto;
82 | margin-top: 15px;
83 | border-radius: 3px;
84 | }
85 | .banner3:hover {
86 | box-shadow: rgba(14, 30, 37, 0.12) 0px 2px 4px 0px,
87 | rgba(14, 30, 37, 0.32) 0px 2px 16px 0px;
88 | }
89 | .cardwidth {
90 | width: 250px;
91 | /* border: 2px solid red; */
92 | }
93 | .cardsquare {
94 | display: flex;
95 | width: 1140px;
96 | margin-left: 70px;
97 | gap: 20px;
98 | margin-top: 30px;
99 | }
100 | .cardhovereffect {
101 | box-shadow: 0 2px 3px 0 rgb(0 0 0 / 10%);
102 | }
103 | .cardhovereffect:hover {
104 | box-shadow: rgba(14, 30, 37, 0.12) 0px 2px 4px 0px,
105 | rgba(14, 30, 37, 0.32) 0px 2px 16px 0px;
106 | }
107 |
108 | .cardsquare img:hover {
109 | box-shadow: rgba(14, 30, 37, 0.12) 0px 2px 4px 0px,
110 | rgba(14, 30, 37, 0.32) 0px 2px 16px 0px;
111 | }
112 | .setcontainer {
113 | position: relative;
114 | display: inline-block;
115 | }
116 | .setdiv {
117 | position: absolute;
118 | padding: 5px;
119 | width: 535px;
120 | height: 74px;
121 | margin-top: -74px;
122 | margin-left: 10px;
123 | text-align: center;
124 | border-radius: 3px;
125 | background: rgba(255, 255, 255, 1);
126 | word-wrap: break-word;
127 | text-transform: capitalize;
128 | box-shadow: 0 2px 3px 0 rgb(0 0 0 / 10%);
129 | }
130 | .tittle {
131 | color: #fc2779;
132 | font-size: 18px;
133 | font-weight: 400;
134 | line-height: 1.2;
135 | }
136 | .scrollbtn {
137 | position: fixed;
138 | width: 100%;
139 | left: 94%;
140 | bottom: 40px;
141 | height: 20px;
142 | font-size: 3rem;
143 | z-index: 1;
144 | cursor: pointer;
145 | color: #fc2779;
146 | height: 45px;
147 | }
148 | .bahaar {
149 | padding: 0px 30px;
150 | }
151 | .top_brands {
152 | display: grid;
153 | grid-template-columns: repeat(3, 455px);
154 | gap: 30px;
155 | margin-top: 10px;
156 | }
157 | .top_cont {
158 | box-shadow: rgba(0, 0, 0, 0.02) 0px 1px 3px 0px,
159 | rgba(27, 31, 35, 0.15) 0px 0px 0px 1px;
160 | border-radius: 10px;
161 | }
162 | .top_content {
163 | text-align: center;
164 | margin: 10px 0px 10px 30px;
165 | background-color: white;
166 | }
167 | .only_nyka {
168 | text-align: center;
169 | margin: 10px 0px 10px 30px;
170 | background-color: #fff6f9;
171 | }
172 | .f_brands {
173 | display: grid;
174 | grid-template-columns: repeat(5, 1fr);
175 | gap: 20px;
176 | margin-top: 10px;
177 | }
178 | .f_inner {
179 | box-shadow: rgba(0, 0, 0, 0.02) 0px 1px 3px 0px,
180 | rgba(27, 31, 35, 0.15) 0px 0px 0px 1px;
181 | border-radius: 10px;
182 | }
183 | .influe {
184 | border: 1px solid gray;
185 | border-radius: 10px;
186 | }
187 | .dis_nyka {
188 | display: flex;
189 | gap: 30px;
190 | }
191 | .dis_cont {
192 | border: 1px solid gray;
193 | border-radius: 10px;
194 | }
195 |
--------------------------------------------------------------------------------
/src/components/Navbar/CatBar/Brands.jsx:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import styled from "styled-components";
3 |
4 | const Popup = styled.div`
5 | width: 65%;
6 | display: flex;
7 | justify-content: center;
8 | margin: auto;
9 | padding: 3vh 0px 3vh 0px;
10 | border-bottom-left-radius: 5px;
11 | border-bottom-right-radius: 5px;
12 | border: 1px solid #e6dede;
13 | background-color: #fafafa;
14 | .style {
15 | display: grid;
16 | grid-template-columns: repeat(5, 1fr);
17 | gap: 2.5vh 2vw;
18 | }
19 | `;
20 |
21 | const Brands = () => {
22 | return (
23 | <>
24 |
25 |
26 |
30 |
34 |
38 |
42 |
46 |
50 |
54 |
58 |
62 |
66 |
70 |
74 |
78 |
82 |
86 |
90 |
94 |
98 |
102 |
106 |
110 |
114 |
118 |
122 |
126 |
127 |
128 | >
129 | );
130 | };
131 |
132 | export default Brands;
133 |
--------------------------------------------------------------------------------
/src/components/Authentication/Register.jsx:
--------------------------------------------------------------------------------
1 | import React, { useState, useRef } from "react";
2 | import { crossButton, input } from "./login.css";
3 | import { signInWithPhoneNumber } from "firebase/auth";
4 | import firebaseAuth from "./firebase";
5 | import { RecaptchaVerifier } from "firebase/auth";
6 |
7 | function Register({
8 | setView,
9 | number,
10 | setNumber,
11 | setPassword,
12 | setName,
13 | setEmail,
14 | }) {
15 | //ReCaptcha
16 | const generateReCaptcha = () => {
17 | window.recaptchaVerifier = new RecaptchaVerifier(
18 | "recaptcha-Div",
19 | {
20 | //size: "invisible",
21 | callback: (response) => {
22 | // reCAPTCHA solved, allow signInWithPhoneNumber.
23 | },
24 | },
25 | firebaseAuth
26 | );
27 | };
28 | const handleClick = (e) => {
29 | e.preventDefault();
30 | var phone = "+91" + number;
31 | generateReCaptcha();
32 | const appVerifier = window.recaptchaVerifier;
33 | signInWithPhoneNumber(firebaseAuth, phone, appVerifier)
34 | .then((confirmation) => {
35 | window.confirmation = confirmation;
36 | setView("AuthOTP");
37 | })
38 | .catch((error) => {
39 | console.log(error);
40 | });
41 | };
42 |
43 | return (
44 |
45 |
setView("front")} style={crossButton}>
46 | X
47 |
48 |
55 | LOGIN / REGISTER
56 |
57 |
58 |
59 |
60 |
61 |
69 |
70 |
157 |
158 | );
159 | }
160 |
161 | export default Register;
162 |
--------------------------------------------------------------------------------
/src/components/Authentication/AuthOtp.jsx:
--------------------------------------------------------------------------------
1 | import React, { useState, useEffect } from "react";
2 | import { useNavigate } from "react-router-dom";
3 | import {
4 | crossButton,
5 | grayBox,
6 | inputOTP,
7 | submitButton,
8 | input,
9 | alertPopup,
10 | } from "./login.css";
11 | import Timer from "./Timer";
12 | import axios from "axios";
13 | import { v4 } from "uuid";
14 |
15 | function AuthOTP({ setView, number, name, password, email }) {
16 | const navigate = useNavigate();
17 | const [otp, setOtp] = useState("");
18 | const [Alert, setAlert] = useState(false);
19 | const [popUp, setPopUp] = useState(true);
20 | //<---------------------------------------------------------------->//SetInterval for 30 sec timer
21 | useEffect(() => {
22 | setTimeout(() => {
23 | setAlert(false);
24 | setView("front");
25 | }, 35000);
26 | }, []);
27 | const handleSubmit = (e) => {
28 | e.preventDefault();
29 | //<-----------------------------> //OTP Logic for verification
30 | const result = window.confirmation;
31 | result
32 | .confirm(otp)
33 | .then((result) => {
34 | // User signed in successfully.
35 | const user = result.user;
36 | const userData = {
37 | ID: v4(),
38 | Email: email,
39 | Password: password,
40 | Name: name,
41 | Phone: number,
42 | };
43 | axios
44 | .post("https://mock-server-686g.onrender.com/register", userData)
45 | .then((response) => {
46 | const localData = {
47 | ID: response.data.ID,
48 | Email: email,
49 | Name: name,
50 | Token: user.accessToken,
51 | Photo:
52 | "https://cdn.pixabay.com/photo/2015/10/05/22/37/blank-profile-picture-973460__340.png",
53 | };
54 | localStorage.setItem("oAuth", JSON.stringify(localData));
55 | alert("Login Successful");
56 | navigate("/");
57 | });
58 | })
59 | .catch((error) => {
60 | // User couldn't sign in (bad verification code?)
61 | alert("Wrong verification code");
62 | setView("front");
63 | });
64 | };
65 |
66 | //<---------------------------------------------------------------------------->*****
67 | return (
68 | <>
69 | {Alert && (
70 |
71 | OTP Expired. Try to register here :
72 |
navigate("/register")}
75 | >
76 | Register
77 |
78 |
79 | )}
80 |
81 |
setView("front")} style={crossButton}>
82 | X
83 |
84 |
91 | REGISTER
92 |
93 |
94 |
95 |
96 |
104 |
Welcome to Nykaa!
105 |
106 |
113 | Register now and get ,
114 |
2000 Reward Points!
115 |
116 |
{number}
117 |
118 |
119 |
120 | Please enter the OTP sent to verify your phone number
121 |
122 |
123 |
124 |
156 |
157 |
158 | {popUp &&
OTP sent successfully!
}
159 |
160 |
161 | >
162 | );
163 | }
164 |
165 | export default AuthOTP;
166 |
--------------------------------------------------------------------------------
/src/components/Home/Carousel3.jsx:
--------------------------------------------------------------------------------
1 | import { Box, Image, Text } from "@chakra-ui/react";
2 | import Carousel from "react-multi-carousel";
3 | import "react-multi-carousel/lib/styles.css";
4 | import styles from "./Carousel.module.css";
5 | const responsive = {
6 | superLargeDesktop: {
7 | // the naming can be any, depends on you.
8 | breakpoint: { max: 4000, min: 3000 },
9 | items: 5,
10 | },
11 | desktop: {
12 | breakpoint: { max: 3000, min: 1024 },
13 | items: 5,
14 | },
15 | tablet: {
16 | breakpoint: { max: 1024, min: 464 },
17 | items: 2,
18 | },
19 | mobile: {
20 | breakpoint: { max: 464, min: 0 },
21 | items: 1,
22 | },
23 | };
24 |
25 | const Carousel3 = () => {
26 | return (
27 |
28 |
29 |
30 |
35 |
43 |
50 | Moisturisers
51 |
52 |
53 |
54 |
55 |
60 |
68 |
75 | Bath & Body
76 |
77 |
78 |
79 |
80 |
85 |
93 |
100 | Face Washes
101 |
102 |
103 |
104 |
105 |
110 |
118 |
125 | Budget Makeup
126 |
127 |
128 |
129 |
130 |
135 |
143 |
150 | Value Combos
151 |
152 |
153 |
154 |
155 |
160 |
168 |
175 | Shampoos
176 |
177 |
178 |
179 |
180 |
181 | );
182 | };
183 |
184 | export default Carousel3;
185 |
--------------------------------------------------------------------------------
/src/components/SingleProduct/SingleProduct.jsx:
--------------------------------------------------------------------------------
1 | import axios from 'axios';
2 | import React from 'react';
3 | import {FcCheckmark} from "react-icons/fc"
4 | import { useEffect } from 'react';
5 | import { useState } from 'react';
6 | import {CiLocationOn} from "react-icons/ci/"
7 | import { FaStar } from 'react-icons/fa';
8 | import { useParams } from 'react-router-dom';
9 | import style from "../ProductPage/products.module.css";
10 | import styles from "../SingleProduct/product.module.css";
11 | import { Box, SkeletonCircle, SkeletonText } from '@chakra-ui/react';
12 | import { useDispatch } from 'react-redux';
13 | import { addToCart } from '../../actions/cart';
14 |
15 | const SingleProduct = () => {
16 | const params = useParams();
17 | console.log(params);
18 | const [product, setProduct] = useState({});
19 | const [loading, setLoading] = useState(false);
20 | const [active, setActive] = useState(0);
21 | const dispatch=useDispatch();
22 |
23 | const handleCart=(product)=>{
24 | dispatch(addToCart(product));
25 |
26 | }
27 |
28 | let id = Number(params.id);
29 | const getProduct = async (id) => {
30 | try {
31 | setLoading(true)
32 | let res = await axios.get(`https://nyka-json.onrender.com/products/${id}`);
33 | setLoading(false);
34 | let data = res.data;
35 |
36 | setProduct(data);
37 | } catch (error) {
38 | setLoading(false);
39 | console.log(error)
40 | }
41 | }
42 |
43 | let images = [product.image1, product.image2, product.image3];
44 | let stars = Math.floor(product.rating);
45 | let starArr;
46 | if (stars) {
47 | starArr = new Array(stars).fill(1);
48 | }
49 |
50 |
51 |
52 |
53 | useEffect(() => {
54 | getProduct(id)
55 | }, []);
56 |
57 |
58 |
59 | if (loading) {
60 | return
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 | }
78 |
79 | return (
80 |
81 |
82 |
83 |
84 |
85 |
86 | {
87 | images?.map((image, ind) => {
88 | return
setActive(ind)} />
89 | })
90 | }
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
{product.title}
100 |
101 |
102 | {
103 | starArr?.map((star) => {
104 | return
105 | })
106 | }
107 |
108 |
{product.rating}/5 {product.ratingNum} ratings & {product.reviews} reviews Q&As
109 |
110 |
111 | MRP: {product.price} ₹{product.off_price} {product.offer}% Off
112 |
113 |
inclusive all taxes
114 |
115 |
116 |
117 | handleCart(product)}>Add to cart
118 |
119 |
120 |
121 |
Delivery options for: 752031
122 |
123 |
Shipping to Balugaon , India
124 |
125 |
126 |
Delivery by 25th Dec
127 |
128 |
129 |
Cash on Delivery available on orders above 499/-
130 |
131 |
132 |
133 |
134 |
135 |
136 |
137 | )
138 | }
139 |
140 | export default SingleProduct
--------------------------------------------------------------------------------
/src/logs/Signin.jsx:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import {
3 | Flex,
4 | Box,
5 | FormControl,
6 | FormLabel,
7 | Input,
8 | Checkbox,
9 | Stack,
10 | Link,
11 | Button,
12 | Heading,
13 | Text,
14 | useColorModeValue,
15 | useDisclosure,
16 | Modal,
17 | ModalOverlay,
18 | ModalContent,
19 | ModalFooter,
20 | ModalBody,
21 | ModalCloseButton,
22 | } from '@chakra-ui/react';
23 | import { useEffect, useState } from 'react';
24 | import { useDispatch, useSelector } from 'react-redux';
25 | import { Navigate } from 'react-router-dom';
26 | // import Navbar from '../../compounts/navbar/Navbar';
27 | // import { login } from '../../Redux/Login/Login.action';
28 | import { login } from "../Redux/Login/Login.action"
29 |
30 | function Signin() {
31 | const { isOpen, onOpen, onClose } = useDisclosure()
32 | const [user,setUser]= useState({email:"",password:""});
33 | const dispatch = useDispatch();
34 | const state= useSelector((store)=>store.loginManager);
35 |
36 |
37 | const handleChange=(e)=>{
38 | const {name,value}=e.target;
39 | setUser({...user,[name]:value})
40 | }
41 |
42 | const handleLogin=()=>{
43 | dispatch(login(user));
44 |
45 | }
46 |
47 | useEffect(() => {
48 |
49 | if(state.existingUser){
50 |
51 | }
52 | }, [state])
53 | return (
54 | <>
55 | {/* */}
56 |
57 |
63 |
64 |
65 | Login to your account
66 |
67 |
72 |
73 |
74 | Email address
75 |
76 |
77 |
78 | Password
79 |
80 |
81 |
82 |
86 | Remember me
87 | Forgot password?
88 |
89 |
90 |
91 |
92 |
93 |
94 |
98 |
107 |
108 | Forgot your password?
109 |
110 |
113 | You'll get an email with a reset link
114 |
115 |
116 |
121 |
122 |
123 |
129 | Request Reset
130 |
131 |
132 |
133 |
134 |
135 |
136 |
137 | Close
138 |
139 |
140 |
141 |
142 |
143 |
151 | Login
152 |
153 |
154 |
155 | Didn't signup? Create an Account
156 |
157 |
158 |
159 |
160 |
161 |
162 |
163 | >
164 | )
165 | }
166 |
167 | export default Signin
168 |
--------------------------------------------------------------------------------
/src/components/Home/Carousel4.jsx:
--------------------------------------------------------------------------------
1 | import { Box, Image, Text } from "@chakra-ui/react";
2 | import Carousel from "react-multi-carousel";
3 | import "react-multi-carousel/lib/styles.css";
4 | import styles from "./Carousel.module.css";
5 | const responsive = {
6 | superLargeDesktop: {
7 | // the naming can be any, depends on you.
8 | breakpoint: { max: 4000, min: 3000 },
9 | items: 5,
10 | },
11 | desktop: {
12 | breakpoint: { max: 3000, min: 1024 },
13 | items: 5,
14 | },
15 | tablet: {
16 | breakpoint: { max: 1024, min: 464 },
17 | items: 2,
18 | },
19 | mobile: {
20 | breakpoint: { max: 464, min: 0 },
21 | items: 1,
22 | },
23 | };
24 |
25 | const Carousel4 = () => {
26 | return (
27 |
28 |
29 |
30 |
36 |
43 |
50 | Makeup
51 |
52 |
53 | Up To 30% Off
54 |
55 |
56 |
57 |
58 |
64 |
71 |
78 | Skincare
79 |
80 |
81 | Up To 30% Off
82 |
83 |
84 |
85 |
86 |
92 |
99 |
106 | New Arrivals
107 |
108 |
109 | Up To 50% Off
110 |
111 |
112 |
113 |
114 |
120 |
127 |
134 | Luke Minis
135 |
136 |
137 | Free Shipping
138 |
139 |
140 |
141 |
142 |
148 |
155 |
162 | Hair
163 |
164 |
165 | Up To 30% Off
166 |
167 |
168 |
169 |
170 |
176 |
183 |
190 | Bestsellers
191 |
192 |
193 | Up To 30% Off
194 |
195 |
196 |
197 |
198 |
199 | );
200 | };
201 |
202 | export default Carousel4;
203 |
--------------------------------------------------------------------------------
/src/components/Authentication/ManualRegistration.jsx:
--------------------------------------------------------------------------------
1 | import React, { useState } from "react";
2 | import { container, crossButton, submit, inputReg, h2Reg } from "./login.css";
3 | import { useNavigate } from "react-router-dom";
4 | import axios from "axios";
5 | import { v4 } from "uuid";
6 |
7 | function ManualRegistration() {
8 | const navigate = useNavigate();
9 | const [login, setLogin] = useState(false);
10 | const [email, setEmail] = useState("");
11 | const [password, setPassword] = useState("");
12 | const [name, setName] = useState("");
13 | const [phone, setPhone] = useState("");
14 | const handleSubmit = (e, i) => {
15 | e.preventDefault();
16 | if (i === "login") {
17 | const data = {
18 | Email: email,
19 | Password: password,
20 | };
21 | axios
22 | .post("https://mock-server-686g.onrender.com/login", data)
23 | .then((response) => {
24 | console.log(response);
25 | if (response.data.Message === "Account does not exist") {
26 | alert("Account does not exist, please create one");
27 | setLogin(false);
28 | }
29 | if (response.data.Message === "Password doesn't match!") {
30 | alert("Password doesn't match, Try once again");
31 | setPassword("");
32 | } else {
33 | const localData = {
34 | ID: response.data.ID,
35 | Email: email,
36 | Name: response.data.Name,
37 | Token: response.data.Token,
38 | Photo:
39 | "https://cdn.pixabay.com/photo/2015/10/05/22/37/blank-profile-picture-973460__340.png",
40 | };
41 | localStorage.setItem("user", JSON.stringify(localData));
42 | }
43 | })
44 | .catch((error) => {
45 | console.log(error);
46 | });
47 | } else {
48 | const data = {
49 | ID: v4(),
50 | Email: email,
51 | Password: password,
52 | Name: name,
53 | Phone: phone,
54 | };
55 | axios
56 | .post("https://mock-server-686g.onrender.com/register", data)
57 | .then((response) => {
58 | const localData = {
59 | ID: response.data.ID,
60 | Email: email,
61 | Name: name,
62 | Token: response.data.Token,
63 | Photo:
64 | "https://cdn.pixabay.com/photo/2015/10/05/22/37/blank-profile-picture-973460__340.png",
65 | };
66 | localStorage.setItem("user", JSON.stringify(localData));
67 | alert("Login Successful");
68 | navigate("/");
69 | })
70 | .catch((error) => {
71 | console.log(error);
72 | });
73 | }
74 | };
75 | return (
76 |
77 |
navigate("/")} style={crossButton}>
78 | X
79 |
80 |
87 | {login ? "SIGN IN" : "SIGN UP"}
88 |
89 |
90 |
91 |
92 |
93 |
101 |
102 | {login ? (
103 | <>
104 |
105 |
129 |
setLogin(false)}
131 | style={{ color: "#fc2779", cursor: "pointer" }}
132 | >
133 | New user? Register here
134 |
135 |
136 | >
137 | ) : (
138 | <>
139 |
140 |
182 |
setLogin(true)}
184 | style={{ color: "#fc2779", cursor: "pointer" }}
185 | >
186 | Already an user? Please Login
187 |
188 |
189 | >
190 | )}
191 |
192 | );
193 | }
194 |
195 | export default ManualRegistration;
196 |
--------------------------------------------------------------------------------
/src/components/Home/Carousel6.jsx:
--------------------------------------------------------------------------------
1 | import { Box, Image, Text } from "@chakra-ui/react";
2 | import Carousel from "react-multi-carousel";
3 | import "react-multi-carousel/lib/styles.css";
4 | import styles from "./Carousel.module.css";
5 | const responsive = {
6 | superLargeDesktop: {
7 | // the naming can be any, depends on you.
8 | breakpoint: { max: 4000, min: 3000 },
9 | items: 5,
10 | },
11 | desktop: {
12 | breakpoint: { max: 3000, min: 1024 },
13 | items: 5,
14 | },
15 | tablet: {
16 | breakpoint: { max: 1024, min: 464 },
17 | items: 2,
18 | },
19 | mobile: {
20 | breakpoint: { max: 464, min: 0 },
21 | items: 1,
22 | },
23 | };
24 |
25 | const Carousel6 = () => {
26 | return (
27 |
28 |
29 |
30 |
36 |
43 |
50 | Up To 40% Off
51 |
52 |
53 | On Entire Range
54 |
55 |
56 |
57 |
58 |
64 |
72 |
79 | Up To 30% Off
80 |
81 |
82 | On All Orders
83 |
84 |
85 |
86 |
87 |
93 |
101 |
108 | Up To 20% Off
109 |
110 |
111 | On Bestsellers
112 |
113 |
114 |
115 |
116 |
122 |
130 |
137 | Up To 20% Off
138 |
139 |
140 | Huda & MonaKattan
141 |
142 |
143 |
144 |
145 |
151 |
159 |
166 | Up To 40% Off+
167 |
168 |
169 | On Rs.900
170 |
171 |
172 |
173 |
174 |
180 |
188 |
195 | View All
196 |
197 |
198 | Makeup
199 |
200 |
201 |
202 |
203 |
204 | );
205 | };
206 |
207 | export default Carousel6;
208 |
--------------------------------------------------------------------------------
/src/components/Home/Carousel7.jsx:
--------------------------------------------------------------------------------
1 | import { Box, Image, Text } from "@chakra-ui/react";
2 | import Carousel from "react-multi-carousel";
3 | import "react-multi-carousel/lib/styles.css";
4 | import styles from "./Carousel.module.css";
5 | const responsive = {
6 | superLargeDesktop: {
7 | // the naming can be any, depends on you.
8 | breakpoint: { max: 4000, min: 3000 },
9 | items: 5,
10 | },
11 | desktop: {
12 | breakpoint: { max: 3000, min: 1024 },
13 | items: 5,
14 | },
15 | tablet: {
16 | breakpoint: { max: 1024, min: 464 },
17 | items: 2,
18 | },
19 | mobile: {
20 | breakpoint: { max: 464, min: 0 },
21 | items: 1,
22 | },
23 | };
24 |
25 | const Carousel7 = () => {
26 | return (
27 |
28 |
29 |
30 |
36 |
43 |
50 | Up To 40% Off
51 |
52 |
53 | On Entire Range
54 |
55 |
56 |
57 |
58 |
64 |
72 |
79 | Up To 30% Off
80 |
81 |
82 | On All Orders
83 |
84 |
85 |
86 |
87 |
93 |
101 |
108 | Up To 20% Off
109 |
110 |
111 | On Bestsellers
112 |
113 |
114 |
115 |
116 |
122 |
130 |
137 | Up To 20% Off
138 |
139 |
140 | Huda & MonaKattan
141 |
142 |
143 |
144 |
145 |
151 |
159 |
166 | Up To 40% Off+
167 |
168 |
169 | On Rs.900
170 |
171 |
172 |
173 |
174 |
180 |
188 |
195 | View All
196 |
197 |
198 | Skincare
199 |
200 |
201 |
202 |
203 |
204 | );
205 | };
206 |
207 | export default Carousel7;
208 |
--------------------------------------------------------------------------------
/src/components/Home/Carousel8.jsx:
--------------------------------------------------------------------------------
1 | import { Box, Image, Text } from "@chakra-ui/react";
2 | import Carousel from "react-multi-carousel";
3 | import "react-multi-carousel/lib/styles.css";
4 | import styles from "./Carousel.module.css";
5 | const responsive = {
6 | superLargeDesktop: {
7 | // the naming can be any, depends on you.
8 | breakpoint: { max: 4000, min: 3000 },
9 | items: 5,
10 | },
11 | desktop: {
12 | breakpoint: { max: 3000, min: 1024 },
13 | items: 5,
14 | },
15 | tablet: {
16 | breakpoint: { max: 1024, min: 464 },
17 | items: 2,
18 | },
19 | mobile: {
20 | breakpoint: { max: 464, min: 0 },
21 | items: 1,
22 | },
23 | };
24 |
25 | const Carousel8 = () => {
26 | return (
27 |
28 |
29 |
30 |
36 |
43 |
50 | Up To 40% Off
51 |
52 |
53 | On Entire Range
54 |
55 |
56 |
57 |
58 |
64 |
72 |
79 | Up To 30% Off
80 |
81 |
82 | On All Orders
83 |
84 |
85 |
86 |
87 |
93 |
101 |
108 | Up To 20% Off
109 |
110 |
111 | On Bestsellers
112 |
113 |
114 |
115 |
116 |
122 |
130 |
137 | Up To 20% Off
138 |
139 |
140 | Huda & MonaKattan
141 |
142 |
143 |
144 |
145 |
151 |
159 |
166 | Up To 40% Off+
167 |
168 |
169 | On Rs.900
170 |
171 |
172 |
173 |
174 |
180 |
188 |
195 | View All
196 |
197 |
198 | More Beauty
199 |
200 |
201 |
202 |
203 |
204 | );
205 | };
206 |
207 | export default Carousel8;
208 |
--------------------------------------------------------------------------------
/src/components/Home/Carousel9.jsx:
--------------------------------------------------------------------------------
1 | import { Box, Image, Text } from "@chakra-ui/react";
2 | import Carousel from "react-multi-carousel";
3 | import "react-multi-carousel/lib/styles.css";
4 | import styles from "./Carousel.module.css";
5 | const responsive = {
6 | superLargeDesktop: {
7 | // the naming can be any, depends on you.
8 | breakpoint: { max: 4000, min: 3000 },
9 | items: 5,
10 | },
11 | desktop: {
12 | breakpoint: { max: 3000, min: 1024 },
13 | items: 5,
14 | },
15 | tablet: {
16 | breakpoint: { max: 1024, min: 464 },
17 | items: 2,
18 | },
19 | mobile: {
20 | breakpoint: { max: 464, min: 0 },
21 | items: 1,
22 | },
23 | };
24 |
25 | const Carousel9 = () => {
26 | return (
27 |
28 |
29 |
30 |
36 |
43 |
50 | Up To 40% Off
51 |
52 |
53 | On Entire Range
54 |
55 |
56 |
57 |
58 |
64 |
72 |
79 | Up To 30% Off
80 |
81 |
82 | On All Orders
83 |
84 |
85 |
86 |
87 |
93 |
101 |
108 | Up To 20% Off
109 |
110 |
111 | On Bestsellers
112 |
113 |
114 |
115 |
116 |
122 |
130 |
137 | Up To 20% Off
138 |
139 |
140 | Huda & MonaKattan
141 |
142 |
143 |
144 |
145 |
151 |
159 |
166 | Up To 40% Off+
167 |
168 |
169 | On Rs.900
170 |
171 |
172 |
173 |
174 |
180 |
188 |
195 | View All
196 |
197 |
198 | Global Faves
199 |
200 |
201 |
202 |
203 |
204 | );
205 | };
206 |
207 | export default Carousel9;
208 |
--------------------------------------------------------------------------------