├── src ├── Style │ ├── index.css │ └── Navbar.css ├── Pages │ ├── ProductCard │ │ ├── Filters │ │ │ ├── PriceRange.css │ │ │ ├── Filters.jsx │ │ │ ├── PriceRange.jsx │ │ │ └── Accordians.jsx │ │ ├── Skeleton │ │ │ └── dataSkeleton.jsx │ │ ├── carousel.jsx │ │ ├── Mobile.jsx │ │ ├── ProductCards.jsx │ │ ├── Computer.jsx │ │ ├── Personal.jsx │ │ ├── Kitchen.jsx │ │ └── HeadPhone.jsx │ ├── Payment │ │ ├── payment.module.css │ │ └── Dig_Xp.png │ ├── Wishlist │ │ ├── MywishList.jsx │ │ └── wish.module.css │ ├── Cart │ │ ├── EmptyCart.jsx │ │ ├── CartItem.jsx │ │ ├── Cart.jsx │ │ └── cart.module.css │ ├── Home │ │ ├── Heading.jsx │ │ ├── ViewButton.jsx │ │ ├── ImageSet.jsx │ │ ├── HomeCard1.jsx │ │ ├── Laptop2.jsx │ │ ├── BrandPromise.jsx │ │ ├── Slider3.jsx │ │ ├── Explore.jsx │ │ ├── Carousel.jsx │ │ ├── SliderFormat.jsx │ │ ├── Laptop.jsx │ │ ├── Refrigirator.jsx │ │ └── Home.jsx │ ├── Login.jsx │ ├── Register.jsx │ ├── AdminLogin.jsx │ └── productdetailpage │ │ ├── prod.module.css │ │ └── ProductDetailpage.jsx ├── Redux │ ├── auth │ │ ├── auth.actionTypes.js │ │ ├── auth.action.js │ │ └── auth.reducer.js │ ├── Products │ │ ├── Product.types.js │ │ ├── product.reducer.js │ │ ├── ProductApi.js │ │ └── Product.action.js │ ├── adminAuth │ │ ├── adminAuth.actionTypes.js │ │ ├── adminAuth.action.js │ │ └── adminAuth.reducer.js │ ├── admin │ │ ├── admin.actionTypes.js │ │ ├── admin.action.js │ │ └── admin.reducer.js │ ├── cart │ │ ├── cart.actionTypes.js │ │ ├── cart.action.js │ │ └── cart.reducer.js │ └── store.js ├── setupTests.js ├── App.test.js ├── reportWebVitals.js ├── Components │ ├── Loader.jsx │ ├── Style.jsx │ ├── NavComponents │ │ └── dropdown.css │ ├── PrivateRoute.jsx │ ├── AdminLoginForm.jsx │ ├── RegisterForm.jsx │ ├── LoginForm.jsx │ ├── Footer.jsx │ └── Navbar.jsx ├── Admin │ ├── AdminRequireAuth.jsx │ ├── Components │ │ ├── ProductsList.jsx │ │ ├── ProductItem.jsx │ │ └── AddProducts.jsx │ └── Admin.jsx ├── index.js ├── App.js ├── Routers │ ├── PrivateRoutes.jsx │ └── AllRoutes.jsx ├── index.css └── logo.svg ├── public ├── robots.txt ├── Digital.png ├── Digital1.png ├── favicon.ico ├── logo192.png ├── logo512.png ├── manifest.json └── index.html ├── .gitignore ├── package.json └── README.md /src/Style/index.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/Pages/ProductCard/Filters/PriceRange.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /public/robots.txt: -------------------------------------------------------------------------------- 1 | # https://www.robotstxt.org/robotstxt.html 2 | User-agent: * 3 | Disallow: 4 | -------------------------------------------------------------------------------- /src/Pages/Payment/payment.module.css: -------------------------------------------------------------------------------- 1 | 2 | .payhead{ 3 | margin: 30px auto; 4 | 5 | } 6 | -------------------------------------------------------------------------------- /public/Digital.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uttammane1/Reliance-Digital/HEAD/public/Digital.png -------------------------------------------------------------------------------- /public/Digital1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uttammane1/Reliance-Digital/HEAD/public/Digital1.png -------------------------------------------------------------------------------- /public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uttammane1/Reliance-Digital/HEAD/public/favicon.ico -------------------------------------------------------------------------------- /public/logo192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uttammane1/Reliance-Digital/HEAD/public/logo192.png -------------------------------------------------------------------------------- /public/logo512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uttammane1/Reliance-Digital/HEAD/public/logo512.png -------------------------------------------------------------------------------- /src/Pages/Payment/Dig_Xp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uttammane1/Reliance-Digital/HEAD/src/Pages/Payment/Dig_Xp.png -------------------------------------------------------------------------------- /src/Pages/Wishlist/MywishList.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | 3 | const MywishList = () => { 4 | return ( 5 |
6 | 7 |
8 | ) 9 | } 10 | 11 | export default MywishList -------------------------------------------------------------------------------- /src/Redux/auth/auth.actionTypes.js: -------------------------------------------------------------------------------- 1 | // Auth Action Type Code Here 2 | 3 | 4 | export const AUTH_LOGIN = "auth/login"; 5 | export const AUTH_LOGOUT = "auth/logout"; 6 | export const AUTH_SIGN_UP = "auth/signup"; 7 | -------------------------------------------------------------------------------- /src/Redux/Products/Product.types.js: -------------------------------------------------------------------------------- 1 | export const GET_POSTS_SUCCESS = "get/posts/success"; 2 | export const GET_POSTS_ERROR = "get/posts/error"; 3 | export const GET_POSTS_LOADING = "get/posts/loading"; 4 | export const GET_POSTS_RESET = "get/posts/reset"; 5 | 6 | //bm -------------------------------------------------------------------------------- /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/App.test.js: -------------------------------------------------------------------------------- 1 | import { render, screen } from '@testing-library/react'; 2 | import App from './App'; 3 | 4 | test('renders learn react link', () => { 5 | render(); 6 | const linkElement = screen.getByText(/learn react/i); 7 | expect(linkElement).toBeInTheDocument(); 8 | }); 9 | -------------------------------------------------------------------------------- /src/Redux/adminAuth/adminAuth.actionTypes.js: -------------------------------------------------------------------------------- 1 | export const LOGIN_LOADING = "auth/login/loading"; 2 | export const LOGIN_ERROR = "auth/login/error"; 3 | export const LOGIN_SUCCESS = "auth/login/success" 4 | 5 | export const LOGOUT = "auth/logout'"; 6 | 7 | export const RESET = "auth/reset" -------------------------------------------------------------------------------- /src/Pages/ProductCard/Filters/Filters.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import Accordians from './Accordians'; 3 | import PriceRange from "./PriceRange" 4 | const Filters = ({data}) => { 5 | 6 | return ( 7 |
8 | 9 | 10 | 11 |
12 | ) 13 | } 14 | 15 | export default Filters 16 | -------------------------------------------------------------------------------- /.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 | .vercel 25 | -------------------------------------------------------------------------------- /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/Redux/admin/admin.actionTypes.js: -------------------------------------------------------------------------------- 1 | export const GET_ADMIN_LOADING = "admin/loading"; 2 | export const GET_ADMIN_SUCCESS = "admin/success"; 3 | export const GET_ADMIN_ERROR = "admin/error"; 4 | 5 | export const DELETE_ADMIN_LOADING = "admin/delete/loading"; 6 | export const DELETE_ADMIN_SUCCESS = "admin/delete/success"; 7 | export const DELETE_ADMIN_ERROR = "admin/delete/error"; 8 | 9 | // Reset 10 | export const RESET_ADMIN_PRODUCTS = "admin/reset"; -------------------------------------------------------------------------------- /src/Redux/auth/auth.action.js: -------------------------------------------------------------------------------- 1 | // Auth Action Code Here 2 | import { AUTH_LOGIN, AUTH_LOGOUT, AUTH_SIGN_UP } from "./auth.actionTypes"; 3 | 4 | export const userSignUp = (data) => (dispatch) => { 5 | dispatch({ type: AUTH_SIGN_UP, payload: data }); 6 | }; 7 | export const userLogin = () => (dispatch) => { 8 | dispatch({ type: AUTH_LOGIN }); 9 | }; 10 | export const userLogout = () => (dispatch) => { 11 | dispatch({ type: AUTH_LOGOUT }); 12 | }; 13 | -------------------------------------------------------------------------------- /src/Components/Loader.jsx: -------------------------------------------------------------------------------- 1 | import { Image } from "@chakra-ui/react"; 2 | import { Load } from "./Style"; 3 | 4 | 5 | const Loader = () => { 6 | return ( 7 |
8 | 9 | logo 10 | 11 |
12 | ); 13 | }; 14 | 15 | export default Loader; -------------------------------------------------------------------------------- /src/Admin/AdminRequireAuth.jsx: -------------------------------------------------------------------------------- 1 | 2 | import React from "react"; 3 | import { useSelector } from "react-redux"; 4 | import { Navigate} from "react-router-dom"; 5 | 6 | 7 | const AdminRequireAuth = ({ children }) => { 8 | const {isAuth} = useSelector(store => store.adminAuthManager) 9 | 10 | if (isAuth) { 11 | return children; 12 | } else { 13 | return ( 14 | 17 | ); 18 | } 19 | }; 20 | 21 | 22 | export default AdminRequireAuth; 23 | -------------------------------------------------------------------------------- /src/Redux/adminAuth/adminAuth.action.js: -------------------------------------------------------------------------------- 1 | import axios from "axios"; 2 | import { LOGIN_ERROR, LOGIN_LOADING, LOGIN_SUCCESS, LOGOUT } from "./adminAuth.actionTypes"; 3 | 4 | 5 | 6 | export const loginAdmin = async (dispatch,creds) => { 7 | dispatch({ type: LOGIN_LOADING }); 8 | try { 9 | let response = await axios.post(`https://reqres.in/api/login`, creds); 10 | dispatch({ type: LOGIN_SUCCESS, payload: response.data }); 11 | } catch (e) { 12 | dispatch({ type: LOGIN_ERROR, payload: e.message }); 13 | } 14 | }; 15 | 16 | export const logoutAdmin = () => ({type : LOGOUT}); -------------------------------------------------------------------------------- /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 { BrowserRouter } from "react-router-dom"; 6 | import { ChakraProvider } from "@chakra-ui/react"; 7 | import { Provider } from "react-redux"; 8 | import { store } from "./Redux/store"; 9 | 10 | const root = ReactDOM.createRoot(document.getElementById("root")); 11 | root.render( 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | ); 20 | 21 | -------------------------------------------------------------------------------- /public/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "short_name": "React App", 3 | "name": "Create React App Sample", 4 | "icons": [ 5 | { 6 | "src": "favicon.ico", 7 | "sizes": "64x64 32x32 24x24 16x16", 8 | "type": "image/x-icon" 9 | }, 10 | { 11 | "src": "logo192.png", 12 | "type": "image/png", 13 | "sizes": "192x192" 14 | }, 15 | { 16 | "src": "logo512.png", 17 | "type": "image/png", 18 | "sizes": "512x512" 19 | } 20 | ], 21 | "start_url": ".", 22 | "display": "standalone", 23 | "theme_color": "#000000", 24 | "background_color": "#ffffff" 25 | } 26 | -------------------------------------------------------------------------------- /src/Redux/cart/cart.actionTypes.js: -------------------------------------------------------------------------------- 1 | // cart action types 2 | 3 | export const GET_CART_SUCCESS = "get/cart/success"; 4 | export const GET_CART_LOADING = "get/cart/loading"; 5 | export const GET_CART_ERROR = "get/cart/error"; 6 | 7 | export const ADD_TO_CART_SUCCESS = "add/cart/success"; 8 | export const ADD_TO_CART_LOADING = "add/cart/loading"; 9 | export const ADD_TO_CART_ERROR = "add/cart/error"; 10 | 11 | export const DELETE_CART_SUCCESS = "delete/cart/success"; 12 | export const DELETE_CART_LOADING = "delete/cart/loading"; 13 | export const DELETE_CART_ERROR = "delete/cart/error"; 14 | 15 | export const RESET_CART_PRODUCT = "cart/reset"; 16 | 17 | 18 | -------------------------------------------------------------------------------- /src/Pages/Cart/EmptyCart.jsx: -------------------------------------------------------------------------------- 1 | import { Box,Button, } from '@chakra-ui/react' 2 | 3 | import React from 'react' 4 | import { Link } from 'react-router-dom' 5 | 6 | 7 | 8 | const EmptyCart = () => { 9 | return ( 10 |
11 | 12 | cart 13 | 14 | 15 | 16 | 17 |
18 | ) 19 | } 20 | 21 | export default EmptyCart -------------------------------------------------------------------------------- /src/Pages/Home/Heading.jsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import { Flex, Text, Center } from "@chakra-ui/react"; 3 | import { Link } from "react-router-dom"; 4 | 5 | const Heading = ({ heading }) => { 6 | return ( 7 | 8 |
9 | {heading} 10 | 11 | VIEW ALL 18 | 19 | 20 |
21 |
22 | ); 23 | }; 24 | 25 | export default Heading; 26 | -------------------------------------------------------------------------------- /src/Pages/Home/ViewButton.jsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import { Text, Button } from "@chakra-ui/react"; 3 | 4 | const ViewButton = () => { 5 | return ( 6 | 26 | ); 27 | }; 28 | 29 | export default ViewButton; 30 | -------------------------------------------------------------------------------- /src/Components/Style.jsx: -------------------------------------------------------------------------------- 1 | import styled from 'styled-components'; 2 | 3 | export const Load = styled.div` 4 | color: #ff6188; 5 | width: 100vw; 6 | height: 100vh; 7 | font-family: Consolas, Menlo, Monaco, monospace; 8 | font-weight: bold; 9 | font-size: 30vh; 10 | opacity: 0.8; 11 | display: flex; 12 | justify-content: center; 13 | align-items: center; 14 | span { 15 | display: inline-block; 16 | animation: pulse 0.4s alternate infinite ease-in-out; 17 | &:nth-child(odd) { 18 | animation-delay: 0.4s; 19 | } 20 | } 21 | 22 | @keyframes pulse { 23 | to { 24 | transform: scale(0.8); 25 | opacity: 0.5; 26 | } 27 | } 28 | `; -------------------------------------------------------------------------------- /src/App.js: -------------------------------------------------------------------------------- 1 | import { useEffect, useState } from "react"; 2 | import Footer from "./Components/Footer"; 3 | import Loader from "./Components/Loader"; 4 | import { Navbar } from "./Components/Navbar"; 5 | 6 | import AllRoutes from "./Routers/AllRoutes"; 7 | 8 | function App() { 9 | const [isLoading, setIsLoading] = useState(true); 10 | useEffect(() => { 11 | setIsLoading(true); 12 | let timer = setTimeout(() => { 13 | setIsLoading(false); 14 | return () => clearInterval(timer); 15 | }, 1000); 16 | }, []); 17 | return isLoading?( 18 | 19 | ):( 20 | <> 21 | 22 |
23 | 24 | 25 | 26 | 27 |