diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index ca6252e..0dbd854 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -1,45 +1,17 @@ -# Code of Conduct +# Contributor Covenant Code of Conduct -## Our Commitment -We are committed to providing a welcoming, respectful, and inclusive environment for everyone contributing to EduBridge. All contributors, maintainers, and participants are expected to uphold this code of conduct. +## Our Pledge ---- +We as members, contributors, and leaders pledge to make participation in our community a harassment-free experience for everyone. -## Expected Behavior -- Be respectful and considerate in all interactions -- Provide constructive feedback politely -- Encourage beginners and first-time contributors -- Respect differing viewpoints and experiences -- Follow project guidelines and admin instructions +## Our Standards ---- - -## Unacceptable Behavior -- Harassment, discrimination, or offensive language -- Plagiarism or submission of copied code -- Spam, low-effort, or irrelevant pull requests -- Disruptive behavior or repeated rule violations -- Any form of unethical or malicious activity - ---- - -## Responsibilities of Project Admin -- Review pull requests fairly and professionally -- Reject plagiarized or low-quality contributions -- Maintain project quality and standards -- Handle conflicts calmly and impartially -- Take appropriate action against misconduct - ---- +Examples of behavior that contributes to a positive environment: +- Using welcoming and inclusive language +- Being respectful of differing viewpoints +- Gracefully accepting constructive criticism +- Focusing on what is best for the community ## Enforcement -Project Admins have the right to remove, reject, or take action against any contribution that violates this Code of Conduct. Repeated or serious violations may result in permanent restriction from contributing. - ---- - -## Reporting Issues -If you experience or witness unacceptable behavior, please report it to the Project Admin. - ---- -By participating in this project, you agree to abide by this Code of Conduct. +Project maintainers are responsible for clarifying and enforcing our standards. diff --git a/Styles/auth.css b/Styles/auth.css index 2900de3..ffc69e8 100644 --- a/Styles/auth.css +++ b/Styles/auth.css @@ -115,6 +115,38 @@ margin-top: 0.25rem; } +/* Password Visibility Toggle */ +.password-wrapper { + position: relative; + display: flex; + align-items: center; +} + +.password-wrapper input { + width: 100%; + padding-right: 2.5rem; +} + +.password-toggle { + position: absolute; + right: 0.5rem; + background: none; + border: none; + cursor: pointer; + color: var(--text); + padding: 0.25rem; + font-size: 1.1rem; + display: flex; + align-items: center; + justify-content: center; + opacity: 0.6; + transition: opacity 0.2s; +} + +.password-toggle:hover { + opacity: 1; +} + /* Responsive Design */ @media (max-width: 480px) { .auth-card { diff --git a/Styles/main.css b/Styles/main.css index 83dd353..9ab1144 100644 --- a/Styles/main.css +++ b/Styles/main.css @@ -1138,6 +1138,40 @@ ul li i.fa-check { color: var(--light-text); } +/* Scroll to Top Button */ +#scrollToTop { + position: fixed; + bottom: 2rem; + right: 2rem; + width: 44px; + height: 44px; + background: var(--secondary-color); + color: white; + border: none; + border-radius: 50%; + cursor: pointer; + font-size: 1.25rem; + display: flex; + align-items: center; + justify-content: center; + box-shadow: 0 2px 10px rgba(0,0,0,0.2); + opacity: 0; + visibility: hidden; + transform: translateY(10px); + transition: opacity 0.3s ease, visibility 0.3s ease, transform 0.3s ease, background 0.3s ease; + z-index: 999; +} + +#scrollToTop.visible { + opacity: 1; + visibility: visible; + transform: translateY(0); +} + +#scrollToTop:hover { + background: var(--primary-color); +} + /* Responsive Modal */ @media (max-width: 768px) { .modal-content { diff --git a/admin.html b/admin.html index aa0c2b7..1067321 100644 --- a/admin.html +++ b/admin.html @@ -3,7 +3,7 @@ - EduBridge Admin Dashboard + EduBridge | Admin @@ -317,8 +317,24 @@

Follow Us

+ + + diff --git a/ai.html b/ai.html index b185ae7..6b9ccbd 100644 --- a/ai.html +++ b/ai.html @@ -3,7 +3,7 @@ - AI & Machine Learning - EduBridge + EduBridge | AI Assistant @@ -474,6 +474,21 @@

Follow Us

closeVideo(); } } + + // Scroll to Top + const scrollBtn = document.getElementById('scrollToTop'); + window.addEventListener('scroll', () => { + if (window.scrollY > 300) { + scrollBtn.classList.add('visible'); + } else { + scrollBtn.classList.remove('visible'); + } + }); + scrollBtn.addEventListener('click', () => { + window.scrollTo({ top: 0, behavior: 'smooth' }); + }); + + \ No newline at end of file diff --git a/career.html b/career.html index 0a840e8..f798815 100644 --- a/career.html +++ b/career.html @@ -3,7 +3,7 @@ - Career Guidance - EduBridge + EduBridge | Career Guidance @@ -516,6 +516,21 @@

Follow Us

closeVideo(); } } + + // Scroll to Top + const scrollBtn = document.getElementById('scrollToTop'); + window.addEventListener('scroll', () => { + if (window.scrollY > 300) { + scrollBtn.classList.add('visible'); + } else { + scrollBtn.classList.remove('visible'); + } + }); + scrollBtn.addEventListener('click', () => { + window.scrollTo({ top: 0, behavior: 'smooth' }); + }); + + \ No newline at end of file diff --git a/forgot-password.html b/forgot-password.html new file mode 100644 index 0000000..d67cd18 --- /dev/null +++ b/forgot-password.html @@ -0,0 +1,158 @@ + + + + + + EduBridge | Forgot Password + + + + + +
+ +
+ +
+
+

Forgot Password

+

Enter your registered email address and we'll send you a link to reset your password.

+
+
+ + +
+ +
+ +
+
+ + + + + + + + diff --git a/index.html b/index.html index edf7b35..d8f91c9 100644 --- a/index.html +++ b/index.html @@ -3,7 +3,7 @@ - EduBridge - Learn Tech Skills + EduBridge | Home @@ -243,7 +243,24 @@

Follow Us

// Load chatbot when the page is ready document.addEventListener('DOMContentLoaded', loadChatbot); + + // Scroll to Top + const scrollBtn = document.getElementById('scrollToTop'); + if (scrollBtn) { + window.addEventListener('scroll', () => { + if (window.scrollY > 300) { + scrollBtn.classList.add('visible'); + } else { + scrollBtn.classList.remove('visible'); + } + }); + scrollBtn.addEventListener('click', () => { + window.scrollTo({ top: 0, behavior: 'smooth' }); + }); + } + + diff --git a/login.html b/login.html index 6b8d607..ad1aeb7 100644 --- a/login.html +++ b/login.html @@ -3,7 +3,7 @@ - Login - EduBridge + EduBridge | Login @@ -51,7 +51,12 @@

Login to EduBridge

- +
+ + +
@@ -133,6 +138,36 @@

Follow Us

} }); } + + // Password Visibility Toggle + document.querySelectorAll('.password-toggle').forEach(btn => { + btn.addEventListener('click', () => { + const input = btn.closest('.password-wrapper').querySelector('input'); + const icon = btn.querySelector('i'); + if (input.type === 'password') { + input.type = 'text'; + icon.classList.replace('fa-eye', 'fa-eye-slash'); + } else { + input.type = 'password'; + icon.classList.replace('fa-eye-slash', 'fa-eye'); + } + }); + }); + + // Scroll to Top + const scrollBtn = document.getElementById('scrollToTop'); + window.addEventListener('scroll', () => { + if (window.scrollY > 300) { + scrollBtn.classList.add('visible'); + } else { + scrollBtn.classList.remove('visible'); + } + }); + scrollBtn.addEventListener('click', () => { + window.scrollTo({ top: 0, behavior: 'smooth' }); + }); + + \ No newline at end of file diff --git a/profile.html b/profile.html index cc0143b..d6636b4 100644 --- a/profile.html +++ b/profile.html @@ -3,7 +3,7 @@ - My Profile - EduBridge + EduBridge | Profile @@ -296,6 +296,21 @@

${course.name}

messageDiv.remove(); }, 3000); } + + // Scroll to Top + const scrollBtn = document.getElementById('scrollToTop'); + window.addEventListener('scroll', () => { + if (window.scrollY > 300) { + scrollBtn.classList.add('visible'); + } else { + scrollBtn.classList.remove('visible'); + } + }); + scrollBtn.addEventListener('click', () => { + window.scrollTo({ top: 0, behavior: 'smooth' }); + }); + + \ No newline at end of file diff --git a/quiz.html b/quiz.html index beb7c9d..8b94cde 100644 --- a/quiz.html +++ b/quiz.html @@ -3,7 +3,7 @@ - EduBridge - Course Quizzes + EduBridge | Quiz @@ -227,6 +227,21 @@

Follow Us

authButtons.style.display = 'block'; } }); + + // Scroll to Top + const scrollBtn = document.getElementById('scrollToTop'); + window.addEventListener('scroll', () => { + if (window.scrollY > 300) { + scrollBtn.classList.add('visible'); + } else { + scrollBtn.classList.remove('visible'); + } + }); + scrollBtn.addEventListener('click', () => { + window.scrollTo({ top: 0, behavior: 'smooth' }); + }); + + \ No newline at end of file diff --git a/register.html b/register.html index 4947545..9858d25 100644 --- a/register.html +++ b/register.html @@ -3,7 +3,7 @@ - Register - EduBridge + EduBridge | Register @@ -55,11 +55,21 @@

Create an Account

- +
+ + +
- +
+ + +
@@ -148,6 +158,36 @@

Follow Us

} }); } + + // Password Visibility Toggle + document.querySelectorAll('.password-toggle').forEach(btn => { + btn.addEventListener('click', () => { + const input = btn.closest('.password-wrapper').querySelector('input'); + const icon = btn.querySelector('i'); + if (input.type === 'password') { + input.type = 'text'; + icon.classList.replace('fa-eye', 'fa-eye-slash'); + } else { + input.type = 'password'; + icon.classList.replace('fa-eye-slash', 'fa-eye'); + } + }); + }); + + // Scroll to Top + const scrollBtn = document.getElementById('scrollToTop'); + window.addEventListener('scroll', () => { + if (window.scrollY > 300) { + scrollBtn.classList.add('visible'); + } else { + scrollBtn.classList.remove('visible'); + } + }); + scrollBtn.addEventListener('click', () => { + window.scrollTo({ top: 0, behavior: 'smooth' }); + }); + + \ No newline at end of file diff --git a/webdev.html b/webdev.html index 701d3a5..71bbdcb 100644 --- a/webdev.html +++ b/webdev.html @@ -3,7 +3,7 @@ - Web Development - EduBridge + EduBridge | Web Development @@ -414,6 +414,21 @@

Follow Us

closeVideo(); } } + + // Scroll to Top + const scrollBtn = document.getElementById('scrollToTop'); + window.addEventListener('scroll', () => { + if (window.scrollY > 300) { + scrollBtn.classList.add('visible'); + } else { + scrollBtn.classList.remove('visible'); + } + }); + scrollBtn.addEventListener('click', () => { + window.scrollTo({ top: 0, behavior: 'smooth' }); + }); + + \ No newline at end of file