diff --git a/src/assets/images/404/doggo.webp b/src/assets/images/404/doggo.webp deleted file mode 100644 index 01a6f59..0000000 Binary files a/src/assets/images/404/doggo.webp and /dev/null differ diff --git a/src/assets/images/404/doggo_img.webp b/src/assets/images/404/doggo_img.webp new file mode 100644 index 0000000..71ca99d Binary files /dev/null and b/src/assets/images/404/doggo_img.webp differ diff --git a/src/assets/images/404/reversed_doggo_img.webp b/src/assets/images/404/reversed_doggo_img.webp new file mode 100644 index 0000000..807fd38 Binary files /dev/null and b/src/assets/images/404/reversed_doggo_img.webp differ diff --git a/src/components/shared/button/Button.jsx b/src/components/shared/button/Button.jsx index 474aaaa..a3212f6 100644 --- a/src/components/shared/button/Button.jsx +++ b/src/components/shared/button/Button.jsx @@ -1,9 +1,9 @@ import PropTypes from "prop-types"; import React from "react"; -import { Link } from "react-router-dom"; +import {Link} from "react-router-dom"; import "./Button.scss"; -const Button = ({ type, isLoading, isDisabled, to, onClick, children }) => { +const Button = ({type, isLoading, isDisabled, to, onClick, children}) => { const buttonClass = `button ${type} ${isLoading ? "loading" : ""}`; if (to) { diff --git a/src/pages/404/Notfound.jsx b/src/pages/404/Notfound.jsx index 1467cd9..c0aa142 100644 --- a/src/pages/404/Notfound.jsx +++ b/src/pages/404/Notfound.jsx @@ -1,44 +1,82 @@ -import React from "react"; - -import Crying_Doge_Image from "../../assets/images/404/doggo.webp"; -import {Button} from "../../components/shared"; +import React, {useState} from "react"; +import PropTypes from "prop-types"; +import {Link} from "react-router-dom"; +import DogeImage from "../../assets/images/404/doggo_img.webp"; +import ReversedDogeImage from "../../assets/images/404/reversed_doggo_img.webp"; import petHimCircle from "../../assets/images/404/petHimCircle.svg"; - import "./Notfound.scss"; +import "../../components/shared/button/Button.scss"; const Notfound = () => { - return ( - <> -
-
-
-

404!

+ const [isReversed, setIsReversed] = useState(false); + const [circlePosition, setCirclePosition] = useState({x: 0, y: 0}); + const [isHovering, setIsHovering] = useState(false); -

- This page was not found, but you can stay here and pet our dogo -

+ const toggleImage = () => { + setIsReversed(!isReversed); + }; - + const handleMouseMove = (e) => { + if (isHovering) { + const rect = e.target.getBoundingClientRect(); + setCirclePosition({ + x: e.clientX - rect.left, + y: e.clientY - rect.top, + }); + } + }; -
- -
-
+ const handleMouseEnter = (e) => { + setIsHovering(true); + const rect = e.target.getBoundingClientRect(); + setCirclePosition({ + x: e.clientX - rect.left, + y: e.clientY - rect.top, + }); + }; -
-
- -
+ const handleMouseLeave = () => { + setIsHovering(false); + }; -
- -
+ return ( +
+
+
+

404!

+

This page was not found, but you can stay here and pet our dogo

+
+ + Back to Homepage + +
+
+
+
+ Doge + {isHovering && ( +
+ Pet Him Circle +
+ )}
- +
); }; diff --git a/src/pages/404/Notfound.scss b/src/pages/404/Notfound.scss index 5aaa829..eb0407b 100644 --- a/src/pages/404/Notfound.scss +++ b/src/pages/404/Notfound.scss @@ -1,15 +1,20 @@ +html, +body { + margin: 0; + padding: 0; + overflow: hidden; + height: 100%; +} + .pageNotFound__container { padding: 4rem 7rem; - padding-bottom: 0; - margin-top: 5rem; - margin-bottom: 5rem; position: relative; overflow: hidden; + height: 100%; + box-sizing: border-box; @media screen and (max-width: 576px) { padding: 2rem 1.5rem; - margin-top: 2rem; - margin-bottom: 2rem; } .pageNotFound__content { @@ -18,13 +23,22 @@ gap: 5rem; @media screen and (max-width: 576px) { - display: flex; flex-direction: column; - gap: 2rem; + gap: 1rem; + } + + @media screen and (min-width: 1800px) { + gap: 5rem; } .pageNotFound__desc { - width: 60%; + width: 55%; + display: flex; + flex-direction: column; + text-align: left; + justify-content: center; + padding-top: 2rem; + padding-bottom: 2rem; @media screen and (max-width: 576px) { width: 100%; @@ -40,13 +54,16 @@ font-weight: 800; color: transparent; -webkit-text-stroke: 1px white; - margin-top: 3rem; margin-bottom: 2rem; @media screen and (max-width: 576px) { font-size: 50px; font-weight: 700; - margin-top: 2rem; + margin-bottom: 2rem; + } + + @media screen and (min-width: 1800px) { + font-size: 75px; } } @@ -59,30 +76,25 @@ @media screen and (max-width: 576px) { font-size: 25px; font-weight: 700; - } - } - - .notfound__petDogeCircle { - margin-top: 0rem; - display: flex; - justify-content: flex-end; - - @media screen and (max-width: 576px) { - display: none; + margin-bottom: 2rem; } @media screen and (min-width: 1800px) { - margin-top: 5rem; + font-size: 70px; } } + + .back_to_home_page_btn { + display: inline-block; + } } .notfound__doge_container { + width: 40%; display: flex; - flex-direction: column; + align-items: center; justify-content: center; - width: 40%; - height: 100%; + position: relative; @media screen and (max-width: 576px) { margin-top: 2rem; @@ -93,41 +105,57 @@ width: 50%; } - .notfound__petDogeCircle_mobile { + .doge__image { display: flex; - justify-content: flex-end; - margin-top: -4rem; + justify-content: center; + align-items: center; + width: 100%; + height: auto; + cursor: none; - @media screen and (min-width: 1200px) { - display: none; + @media screen and (max-width: 576px) { + width: 100%; + height: auto; } img { - width: 30%; + width: 100%; + height: auto; + object-fit: cover; + + @media screen and (max-width: 576px) { + width: 85%; + height: auto; + display: block; + } + + @media screen and (min-width: 1800px) { + width: 80%; + } } } - .doge__image { + .notfound__petDogeCircle { + margin-top: 0rem; display: flex; - justify-content: center; - align-items: center; - width: 100%; + justify-content: flex-end; + z-index: 1; img { width: 100%; - height: auto; - display: block; @media screen and (max-width: 576px) { - width: 80%; - height: auto; - display: block; + width: 85%; } @media screen and (min-width: 1800px) { - width: 75%; + width: 100%; } } + + @media screen and (min-width: 1800px) { + margin-top: 5rem; + } } } }