diff --git a/public/mountains.jpg b/public/mountains.jpg new file mode 100644 index 0000000..edbea5e Binary files /dev/null and b/public/mountains.jpg differ diff --git a/src/pages/login/login.tsx b/src/pages/login/login.tsx index a86ee34..1a3a2ef 100644 --- a/src/pages/login/login.tsx +++ b/src/pages/login/login.tsx @@ -94,7 +94,7 @@ const Login = () => {

- Create account + Create account

diff --git a/src/pages/register/register.css b/src/pages/register/register.css new file mode 100644 index 0000000..643c342 --- /dev/null +++ b/src/pages/register/register.css @@ -0,0 +1,60 @@ +.register { + display: flex; + width: 100vw; + height: 100vh; + max-width:100%; +} + +.register-background { + opacity: 0.6; + position: absolute; + z-index: -1; + left: 0; + top: 0; + width: 100%; + height: 100%; +} + + +.register-block { + display: flex; + margin: auto; + flex-direction: column; + justify-content: center; + align-items: center; +} + + +.register-button { + margin-top: "10px"; + padding: 16px 32px; + font-size: 16px; + border-radius: 12px; + background-color: var(--buttons-main-color); + color: var(--text_dark); + border: none; + cursor: pointer; + text-align: center; + text-decoration: none; +} + +.register-button:hover { + background-color: var(--buttons-hover-color); + color: var(--text_dark); +} + +.register-button:active { + background-color: var(--buttons-press-color); + color: var(--text_dark); +} + + +.register-link { + color: var(--links-main-color); + text-decoration: none; +} + +.register-link:hover { + color: var(--links-hover-color); + text-decoration: none; +} diff --git a/src/pages/register/register.tsx b/src/pages/register/register.tsx index 65496f5..6030fc2 100644 --- a/src/pages/register/register.tsx +++ b/src/pages/register/register.tsx @@ -1,7 +1,86 @@ +import { useState } from "react"; +import { useNavigate, useLocation } from "react-router-dom"; + +import { toast } from "react-toastify" + +import useAuth from "../../auth/auth"; + +import FormField from "../../components/FormField" +import "./register.css" + + const Register = () => { + const { setToken } = useAuth(); + const [username, setUsername] = useState(""); + const [password, setPassword] = useState(""); + + const navigate = useNavigate(); + const location = useLocation(); + const searchPath = new URLSearchParams(location.search); + const redirectPath = searchPath.get('to') || "/"; + + const [usernameEmpty, setUsernameEmpty] = useState(false); + const [passwordEmpty, setPasswordEmpty] = useState(false); + + const handleSubmit = (e: React.FormEvent) => { + e.preventDefault(); + + setUsernameEmpty(!username); + setPasswordEmpty(!password); + + if (!username || !password) { + return; + } + + // TODO: request to API + if (username === "cat" && password === "cat") { + const token = "newusertodo.jwt.token"; + setToken(token); + navigate(redirectPath, { replace: true }); + } else { + toast.error("Wrong login or password"); + } + }; + return ( -
-

Register

+
+ +
+
+ setUsername(e.target.value)} + required + showError={usernameEmpty} + errorMessage="Please enter the username you want" + /> + setPassword(e.target.value)} + required + showError={passwordEmpty} + errorMessage="Please enter the password you want" + /> + +

+ Back to login +

+ +
) }