forked from Anjaliavv51/Retro
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[Feature Request]: Add a forgot password page (Anjaliavv51#398)
<!-- ISSUE & PR TITLE SHOULD BE SAME--> ## Description Added a forgot password page ## Related Issues <!--Cite any related issue(s) this pull request addresses. If none, simply state “None”--> - Closes Anjaliavv51#375 ## Type of PR <!-- Mention PR Type according to the issue in brackets below and check the below box --> - [ ] () ## Screenshots / videos (if applicable) ![Screenshot 2024-10-09 153508](https://github.com/user-attachments/assets/9ac6d00a-51ee-4cf8-99c7-94c0ebd6e2e9) ## Checklist <!-- [X] - put a cross/X inside [] to check the box --> - [x] I have gone through the [contributing guide](https://github.com/Anjaliavv51/Retro) - [x] I have updated my branch and synced it with project `main` branch before making this PR - [x] I have performed a self-review of my code - [x] I have tested the changes thoroughly before submitting this pull request. - [x] I have provided relevant issue numbers, screenshots, and videos after making the changes. - [x] I have commented my code, particularly in hard-to-understand areas. ## Additional context: <!--Include any additional information or context that might be helpful for reviewers.-->
- Loading branch information
Showing
3 changed files
with
288 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,145 @@ | ||
@import url('https://fonts.googleapis.com/css2?family=Noto+Sans:wght@400;700&display=swap'); | ||
@import url('https://fonts.googleapis.com/css2?family=Philosopher:ital,wght@0,400;0,700;1,400;1,700&display=swap'); | ||
@import url('https://fonts.googleapis.com/css2?family=Philosopher:ital,wght@0,400;0,700;1,400;1,700&family=Poppins:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&display=swap'); | ||
|
||
body { | ||
margin: 0; | ||
font-family: 'Noto Sans', sans-serif; | ||
overflow: hidden; | ||
display: flex; | ||
justify-content: center; | ||
align-items: center; | ||
height: 100vh; | ||
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='100%25' height='100%25' viewBox='0 0 1600 800'%3E%3Cg %3E%3Cpath fill='%23ffb9b0' d='M486 705.8c-109.3-21.8-223.4-32.2-335.3-19.4C99.5 692.1 49 703 0 719.8V800h843.8c-115.9-33.2-230.8-68.1-347.6-92.2C492.8 707.1 489.4 706.5 486 705.8z'/%3E%3Cpath fill='%23ffc1b7' d='M1600 0H0v719.8c49-16.8 99.5-27.8 150.7-33.5c111.9-12.7 226-2.4 335.3 19.4c3.4 0.7 6.8 1.4 10.2 2c116.8 24 231.7 59 347.6 92.2H1600V0z'/%3E%3Cpath fill='%23ffc8bf' d='M478.4 581c3.2 0.8 6.4 1.7 9.5 2.5c196.2 52.5 388.7 133.5 593.5 176.6c174.2 36.6 349.5 29.2 518.6-10.2V0H0v574.9c52.3-17.6 106.5-27.7 161.1-30.9C268.4 537.4 375.7 554.2 478.4 581z'/%3E%3Cpath fill='%23ffcfc6' d='M0 0v429.4c55.6-18.4 113.5-27.3 171.4-27.7c102.8-0.8 203.2 22.7 299.3 54.5c3 1 5.9 2 8.9 3c183.6 62 365.7 146.1 562.4 192.1c198.8 51.8 403.4 40.8 597.3-14.8V0H0z'/%3E%3Cpath fill='%23FFD6CE' d='M181.8 259.4c98.2 6 191.9 35.2 281.3 72.1c2.8 1.1 5.5 2.3 8.3 3.4c171 71.6 342.7 158.5 531.3 207.7c198.8 51.8 403.4 40.8 597.3-14.8V0H0v283.2C59 263.6 120.6 255.7 181.8 259.4z'/%3E%3Cpath fill='%23ffdcd4' d='M1600 0H0v136.3c62.3-20.9 127.7-27.5 192.2-19.2c93.6 12.1 180.5 47.7 263.3 89.6c2.6 1.3 5.1 2.6 7.7 3.9c158.4 81.1 319.7 170.9 500.3 223.2c210.5 61 430.8 49 636.6-16.6V0z'/%3E%3Cpath fill='%23ffe1d9' d='M454.9 86.3C600.7 177 751.6 269.3 924.1 325c208.6 67.4 431.3 60.8 637.9-5.3c12.8-4.1 25.4-8.4 38.1-12.9V0H288.1c56 21.3 108.7 50.6 159.7 82C450.2 83.4 452.5 84.9 454.9 86.3z'/%3E%3Cpath fill='%23ffe6df' d='M1600 0H498c118.1 85.8 243.5 164.5 386.8 216.2c191.8 69.2 400 74.7 595 21.1c40.8-11.2 81.1-25.2 120.3-41.7V0z'/%3E%3Cpath fill='%23ffebe4' d='M1397.5 154.8c47.2-10.6 93.6-25.3 138.6-43.8c21.7-8.9 43-18.8 63.9-29.5V0H643.4c62.9 41.7 129.7 78.2 202.1 107.4C1020.4 178.1 1214.2 196.1 1397.5 154.8z'/%3E%3Cpath fill='%23FFF0EA' d='M1315.3 72.4c75.3-12.6 148.9-37.1 216.8-72.4h-723C966.8 71 1144.7 101 1315.3 72.4z'/%3E%3C/g%3E%3C/svg%3E"); | ||
background-size: cover; | ||
} | ||
.circle { | ||
z-index: 998; | ||
width: 20px; | ||
height: 20px; | ||
border-radius: 50%; | ||
pointer-events: none; | ||
animation: colors 5s infinite; | ||
position: fixed; | ||
transform: translate(-50%, -50%); | ||
} | ||
.card-forgot { | ||
width: 60%; | ||
display: flex; | ||
justify-content: center; | ||
align-items: center; | ||
flex-direction: column; | ||
padding: 30px 35px; | ||
border-radius: 20px; | ||
box-shadow: 0px 10px 40px rgba(0, 0, 0, 0.15); | ||
background: rgba(236, 236, 236, 0.8); | ||
backdrop-filter: blur(10px); /* Soft background blur effect */ | ||
animation: fadeIn 2s ease-in-out; | ||
} | ||
|
||
@keyframes fadeIn { | ||
0% { | ||
opacity: 0; | ||
transform: translateY(30px); | ||
} | ||
100% { | ||
opacity: 1; | ||
transform: translateY(0); | ||
} | ||
} | ||
.card-forgot h1 { | ||
color: hsl(203, 30%,26%); | ||
font-family: "Philosopher", sans-serif; | ||
text-transform: uppercase; | ||
text-align: center; | ||
} | ||
|
||
.home-btn { | ||
position: absolute; | ||
top: 32px; | ||
font-family: "Philosopher", sans-serif; | ||
left: 30px; | ||
} | ||
|
||
.home-btn a { | ||
font-size: 30px; | ||
text-decoration: none; | ||
color: rgb(134, 78, 112); | ||
position: relative; | ||
transition: color 0.3s ease; /* Smooth color transition */ | ||
} | ||
|
||
.home-btn a:hover { | ||
color: rgb(141, 108, 108); /* Darken color on hover */ | ||
} | ||
|
||
.home-btn a::after { | ||
content: ''; | ||
position: absolute; | ||
width: 100%; | ||
height: 1.5px; | ||
bottom: -5px; | ||
left: 0; | ||
background-color: transparent; | ||
transition: background-color 0.3s ease; /* Smooth transition */ | ||
} | ||
|
||
.home-btn a:hover::after { | ||
background-color: rgb(141, 108, 108); | ||
} | ||
.textfield { | ||
width: 100%; | ||
margin-bottom: 15px; | ||
} | ||
|
||
.textfield > input { | ||
width: 100%; | ||
height: 45px; | ||
border-radius: 15px; | ||
border: 1px solid #b38484; | ||
padding-left: 10px; | ||
outline: none; | ||
transition: border 0.3s ease; /* Smooth border transition */ | ||
} | ||
|
||
.textfield > input:focus { | ||
border: 2px solid #a76666; /* Highlight border on focus */ | ||
} | ||
.btn-reset { | ||
width: 100%; | ||
padding: 10px 0; | ||
border: none; | ||
background-color: #e55d5d; | ||
color: #fff; | ||
font-size: 18px; | ||
font-weight: bold; | ||
border-radius: 10px; | ||
cursor: pointer; | ||
transition: background-color 0.3s ease; | ||
} | ||
|
||
.btn-reset:hover { | ||
background-color: #ff4a4a; | ||
} | ||
|
||
.error-message { | ||
color: red; | ||
font-family: "Poppins", sans-serif; | ||
margin-top: 10px; | ||
} | ||
.switch-link { | ||
text-align: center; | ||
margin-top: 20px; | ||
font-family: "Poppins", sans-serif; | ||
} | ||
|
||
.switch-link a { | ||
color: hsl(0, 100%, 50%); | ||
text-decoration: none; | ||
font-weight: bold; | ||
transition: color 0.3s ease; | ||
} | ||
|
||
.switch-link a:hover { | ||
color: hsl(203, 30%, 26%); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,131 @@ | ||
<!DOCTYPE html> | ||
<html lang="pt-BR"> | ||
<head> | ||
<meta charset="UTF-8"> | ||
<meta http-equiv="X-UA-Compatible" content="IE=edge"> | ||
<meta name="viewport" content="width=device-width, initial-scale=1.0"> | ||
<link rel="shortcut icon" type="image/x-icon" href="../Favicon image/favicon-32x32.png"> | ||
<link rel="stylesheet" href="../Css-files/forgotpass1.css"> | ||
<title>Retro - Forgot Password</title> | ||
</head> | ||
<body> | ||
<div class="circle-container"> | ||
<div class="circle" style="background-color: rgb(255, 181, 107) !important; left: 504px; top: 59px; scale: 1;"></div> | ||
<div class="circle" style="background-color: rgb(253, 175, 105) !important; left: 504px; top: 59px; scale: 0.95;"></div> | ||
<div class="circle" style="background-color: rgb(248, 157, 99) !important; left: 504px; top: 59px; scale: 0.9;"></div> | ||
<div class="circle" style="background-color: rgb(245, 151, 97) !important; left: 504px; top: 59px; scale: 0.85;"></div> | ||
<div class="circle" style="background-color: rgb(239, 134, 94) !important; left: 504px; top: 59px; scale: 0.8;"></div> | ||
<div class="circle" style="background-color: rgb(236, 128, 93) !important; left: 504px; top: 59px; scale: 0.75;"></div> | ||
<div class="circle" style="background-color: rgb(227, 110, 92) !important; left: 504px; top: 59px; scale: 0.7;"></div> | ||
<div class="circle" style="background-color: rgb(223, 104, 92) !important; left: 504px; top: 59px; scale: 0.65;"></div> | ||
<div class="circle" style="background-color: rgb(213, 88, 92) !important; left: 504px; top: 59px; scale: 0.6;"></div> | ||
<div class="circle" style="background-color: rgb(209, 82, 92) !important; left: 504px; top: 59px; scale: 0.55;"></div> | ||
<div class="circle" style="background-color: rgb(197, 65, 93) !important; left: 504px; top: 59px; scale: 0.5;"></div> | ||
<div class="circle" style="background-color: rgb(192, 59, 93) !important; left: 504px; top: 59px; scale: 0.45;"></div> | ||
<div class="circle" style="background-color: rgb(178, 44, 94) !important; left: 504px; top: 59px; scale: 0.4;"></div> | ||
<div class="circle" style="background-color: rgb(172, 38, 94) !important; left: 504px; top: 59px; scale: 0.35;"></div> | ||
<div class="circle" style="background-color: rgb(156, 21, 95) !important; left: 504px; top: 59px; scale: 0.3;"></div> | ||
<div class="circle" style="background-color: rgb(149, 15, 95) !important; left: 504px; top: 59px; scale: 0.25;"></div> | ||
<div class="circle" style="background-color: rgb(131, 0, 96) !important; left: 504px; top: 59px; scale: 0.2;"></div> | ||
<div class="circle" style="background-color: rgb(124, 0, 96) !important; left: 504px; top: 59px; scale: 0.15;"></div> | ||
<div class="circle" style="background-color: rgb(104, 0, 96) !important; left: 504px; top: 59px; scale: 0.1;"></div> | ||
<div class="circle" style="background-color: rgb(96, 0, 95) !important; left: 504px; top: 59px; scale: 0.05;"></div> | ||
</div> | ||
<div class="home-btn"><a href="../index.html" style="font-family: var(--ff-philosopher);"><b>Retro</b></a></div> | ||
<div class="container"> | ||
<div class="card-forgot"> | ||
<h1>Forgot Password</h1> | ||
<form id="forgotPassForm"> | ||
<div class="textfield"> | ||
<label for="email" style="color: black;">Email</label> | ||
<input type="email" id="email" name="email" placeholder="Enter your email" required> | ||
</div> | ||
<button type="submit" class="btn-reset">Reset Password</button> | ||
<p id="error-message" class="error-message"></p> | ||
</form> | ||
<p class="switch-link">Remembered your password? <a href="login.html">Login</a></p> | ||
</div> | ||
</div> | ||
|
||
<script> | ||
const coords = { x: 0, y: 0 }; | ||
const circles = document.querySelectorAll(".circle"); | ||
|
||
const colors = [ | ||
"#ffb56b", | ||
"#fdaf69", | ||
"#f89d63", | ||
"#f59761", | ||
"#ef865e", | ||
"#ec805d", | ||
"#e36e5c", | ||
"#df685c", | ||
"#d5585c", | ||
"#d1525c", | ||
"#c5415d", | ||
"#c03b5d", | ||
"#b22c5e", | ||
"#ac265e", | ||
"#9c155f", | ||
"#950f5f", | ||
"#830060", | ||
"#7c0060", | ||
"#680060", | ||
"#60005f", | ||
"#48005f", | ||
"#3d005e" | ||
]; | ||
|
||
circles.forEach(function (circle, index) { | ||
circle.x = 0; | ||
circle.y = 0; | ||
circle.style.backgroundColor = colors[index % colors.length]; | ||
}); | ||
|
||
window.addEventListener("mousemove", function (e) { | ||
coords.x = e.clientX; | ||
coords.y = e.clientY; | ||
|
||
}); | ||
|
||
function animateCircles() { | ||
|
||
let x = coords.x; | ||
let y = coords.y; | ||
|
||
circles.forEach(function (circle, index) { | ||
circle.style.left = x - 12 + "px"; | ||
circle.style.top = y - 12 + "px"; | ||
|
||
circle.style.scale = (circles.length - index) / circles.length; | ||
|
||
circle.x = x; | ||
circle.y = y; | ||
|
||
const nextCircle = circles[index + 1] || circles[0]; | ||
x += (nextCircle.x - x) * 0.3; | ||
y += (nextCircle.y - y) * 0.3; | ||
}); | ||
|
||
requestAnimationFrame(animateCircles); | ||
} | ||
|
||
animateCircles(); | ||
// Form submission event listener for password reset | ||
document.getElementById('forgotPassForm').addEventListener('submit', function(event) { | ||
event.preventDefault(); | ||
|
||
const emailInput = document.getElementById('email').value; | ||
const emailPattern = /^[^\\s@]+@[^\s@]+\\.[^\\s@]+$/; | ||
|
||
document.getElementById('error-message').textContent = ''; | ||
|
||
if (!emailPattern.test(emailInput)) { | ||
document.getElementById('error-message').textContent = 'Invalid email format.'; | ||
} else { | ||
window.location.assign('reset-confirmation.html'); | ||
} | ||
}); | ||
</script> | ||
</body> | ||
</html> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters