diff --git a/package-lock.json b/package-lock.json index 15682a6..9e8a1ca 100644 --- a/package-lock.json +++ b/package-lock.json @@ -16,6 +16,7 @@ "mockman-js": "^1.1.5", "react": "^18.2.0", "react-dom": "^18.2.0", + "react-helmet-async": "^1.3.0", "react-icons": "^4.8.0", "react-router": "^6.11.2", "react-router-dom": "^6.11.2", @@ -8569,6 +8570,14 @@ "node": ">= 0.4" } }, + "node_modules/invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "dependencies": { + "loose-envify": "^1.0.0" + } + }, "node_modules/ipaddr.js": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz", @@ -14122,6 +14131,27 @@ "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.11.tgz", "integrity": "sha512-/6UZ2qgEyH2aqzYZgQPxEnz33NJ2gNsnHA2o5+o4wW9bLM/JYQitNP9xPhsXwC08hMMovfGe/8retsdDsczPRg==" }, + "node_modules/react-fast-compare": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.2.tgz", + "integrity": "sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ==" + }, + "node_modules/react-helmet-async": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/react-helmet-async/-/react-helmet-async-1.3.0.tgz", + "integrity": "sha512-9jZ57/dAn9t3q6hneQS0wukqC2ENOBgMNVEhb/ZG9ZSxUetzVIw4iAmEU38IaVg3QGYauQPhSeUTuIUtFglWpg==", + "dependencies": { + "@babel/runtime": "^7.12.5", + "invariant": "^2.2.4", + "prop-types": "^15.7.2", + "react-fast-compare": "^3.2.0", + "shallowequal": "^1.1.0" + }, + "peerDependencies": { + "react": "^16.6.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.6.0 || ^17.0.0 || ^18.0.0" + } + }, "node_modules/react-icons": { "version": "4.8.0", "resolved": "https://registry.npmjs.org/react-icons/-/react-icons-4.8.0.tgz", @@ -14999,6 +15029,11 @@ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" }, + "node_modules/shallowequal": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz", + "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==" + }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -23284,6 +23319,14 @@ "side-channel": "^1.0.4" } }, + "invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "requires": { + "loose-envify": "^1.0.0" + } + }, "ipaddr.js": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz", @@ -27167,6 +27210,23 @@ "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.11.tgz", "integrity": "sha512-/6UZ2qgEyH2aqzYZgQPxEnz33NJ2gNsnHA2o5+o4wW9bLM/JYQitNP9xPhsXwC08hMMovfGe/8retsdDsczPRg==" }, + "react-fast-compare": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.2.tgz", + "integrity": "sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ==" + }, + "react-helmet-async": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/react-helmet-async/-/react-helmet-async-1.3.0.tgz", + "integrity": "sha512-9jZ57/dAn9t3q6hneQS0wukqC2ENOBgMNVEhb/ZG9ZSxUetzVIw4iAmEU38IaVg3QGYauQPhSeUTuIUtFglWpg==", + "requires": { + "@babel/runtime": "^7.12.5", + "invariant": "^2.2.4", + "prop-types": "^15.7.2", + "react-fast-compare": "^3.2.0", + "shallowequal": "^1.1.0" + } + }, "react-icons": { "version": "4.8.0", "resolved": "https://registry.npmjs.org/react-icons/-/react-icons-4.8.0.tgz", @@ -27800,6 +27860,11 @@ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" }, + "shallowequal": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz", + "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==" + }, "shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", diff --git a/package.json b/package.json index e508a72..f1d0d78 100644 --- a/package.json +++ b/package.json @@ -11,6 +11,7 @@ "mockman-js": "^1.1.5", "react": "^18.2.0", "react-dom": "^18.2.0", + "react-helmet-async": "^1.3.0", "react-icons": "^4.8.0", "react-router": "^6.11.2", "react-router-dom": "^6.11.2", diff --git a/src/App.jsx b/src/App.jsx index 31818a0..ef39bd3 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -3,14 +3,17 @@ import "react-toastify/dist/ReactToastify.css"; import { Index as Route } from "./routes/index"; import "./custom.styles.css"; import { ToastContainer } from "react-toastify"; +import { HelmetProvider } from "react-helmet-async"; const App = () => { + const helmetContext = {}; return ( <> - - + + + + ); }; - export default App; diff --git a/src/pages/Cart.jsx b/src/pages/Cart.jsx index 7c4355b..3fa5e39 100644 --- a/src/pages/Cart.jsx +++ b/src/pages/Cart.jsx @@ -4,6 +4,7 @@ import { useCartContext } from "../contexts"; import { CartItemCard } from "../components"; import CartTotalCard from "../components/cart/CartTotalCard"; import { useNavigate } from "react-router"; +import { Helmet } from "react-helmet-async"; const Cart = () => { const { cart } = useCartContext(); @@ -11,8 +12,12 @@ const Cart = () => { return (
+ + Cart | eyesome + + {cart.length > 0 && ( -

Bag({cart.length})

+

Bag({cart.length})

)} {cart.length ? (
diff --git a/src/pages/Checkout.jsx b/src/pages/Checkout.jsx index 02fe598..3070b9e 100644 --- a/src/pages/Checkout.jsx +++ b/src/pages/Checkout.jsx @@ -4,6 +4,7 @@ import Address from "../components/address/Address"; import { useLocation, useNavigate } from "react-router"; import Modal from "../components/checkout/Modal"; import { useCartContext } from "../contexts"; +import { Helmet } from "react-helmet-async"; const Checkout = () => { const navigate = useNavigate(); @@ -20,6 +21,10 @@ const Checkout = () => { return ( <> + + Checkout | eyesome + +
{ return (
+ + Error 404 | eyesome + + error-image {
); }; - export default ErrorPage; diff --git a/src/pages/Home.jsx b/src/pages/Home.jsx index 88492d7..21ca3bb 100644 --- a/src/pages/Home.jsx +++ b/src/pages/Home.jsx @@ -1,10 +1,15 @@ import { useRef } from "react"; import { Banner, CategoryList, Footer, Trending } from "../components"; +import { Helmet } from "react-helmet-async"; const Home = () => { const catRef = useRef(null); return ( <> + + Home | eyesome + + diff --git a/src/pages/Login.jsx b/src/pages/Login.jsx index e375e46..ea11bd8 100644 --- a/src/pages/Login.jsx +++ b/src/pages/Login.jsx @@ -4,6 +4,7 @@ import { Link } from "react-router-dom"; import bannerHero from "../assets/bannerHero.jpg"; import { Logo } from "../components"; import { useAuthContext } from "../contexts"; +import { Helmet } from "react-helmet-async"; const Login = () => { const { loginHandler, token, loggingIn } = useAuthContext(); @@ -33,6 +34,10 @@ const Login = () => { }; return (
+ + Login | eyesome + +
diff --git a/src/pages/Orders.jsx b/src/pages/Orders.jsx index af68b4c..f2ae2de 100644 --- a/src/pages/Orders.jsx +++ b/src/pages/Orders.jsx @@ -1,6 +1,7 @@ import React, { useEffect } from "react"; import orderSuccess from "../assets/success-order.gif"; import { useLocation, useNavigate } from "react-router"; +import { Helmet } from "react-helmet-async"; const Orders = () => { const location = useLocation(); @@ -16,6 +17,10 @@ const Orders = () => { }, []); return (
+ + Orders | eyesome + +
{ const navigate = useNavigate(); @@ -40,6 +41,10 @@ const ProductDetails = () => { return (
+ + Product Details | eyesome + +
{ const userDetails = localStorage.getItem("userInfo") @@ -26,6 +27,10 @@ const Profile = () => { return (
+ + Profile | eyesome + +