Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
48 changes: 10 additions & 38 deletions CODE_OF_CONDUCT.md
Original file line number Diff line number Diff line change
@@ -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.
32 changes: 32 additions & 0 deletions Styles/auth.css
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down
34 changes: 34 additions & 0 deletions Styles/main.css
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down
18 changes: 17 additions & 1 deletion admin.html
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>EduBridge Admin Dashboard</title>
<title>EduBridge | Admin</title>
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<link href="https://fonts.googleapis.com/css2?family=Fraunces:wght@500;700&family=Space+Grotesk:wght@400;500;600&display=swap" rel="stylesheet" />
Expand Down Expand Up @@ -317,8 +317,24 @@ <h3>Follow Us</h3>

<div class="toast-container" id="toastContainer" aria-live="polite" aria-atomic="true"></div>

<button id="scrollToTop" aria-label="Scroll to top"><i class="fas fa-arrow-up"></i></button>

<script src="scripts/content-data.js"></script>
<script src="scripts/quiz-data.js"></script>
<script src="scripts/admin.js"></script>
<script>
// 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' });
});
</script>
</body>
</html>
17 changes: 16 additions & 1 deletion ai.html
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>AI & Machine Learning - EduBridge</title>
<title>EduBridge | AI Assistant</title>
<!-- CSS Dependencies -->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0-beta3/css/all.min.css"/>
<link rel="stylesheet" href="https://unpkg.com/aos@2.3.4/dist/aos.css"/>
Expand Down Expand Up @@ -474,6 +474,21 @@ <h3>Follow Us</h3>
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' });
});
</script>

<button id="scrollToTop" aria-label="Scroll to top"><i class="fas fa-arrow-up"></i></button>
</body>
</html>
17 changes: 16 additions & 1 deletion career.html
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Career Guidance - EduBridge</title>
<title>EduBridge | Career Guidance</title>
<!-- CSS Dependencies -->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0-beta3/css/all.min.css"/>
<link rel="stylesheet" href="https://unpkg.com/aos@2.3.4/dist/aos.css"/>
Expand Down Expand Up @@ -516,6 +516,21 @@ <h3>Follow Us</h3>
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' });
});
</script>

<button id="scrollToTop" aria-label="Scroll to top"><i class="fas fa-arrow-up"></i></button>
</body>
</html>
158 changes: 158 additions & 0 deletions forgot-password.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,158 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>EduBridge | Forgot Password</title>
<link rel="stylesheet" href="Styles/main.css">
<link rel="stylesheet" href="Styles/auth.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0-beta3/css/all.min.css"/>
</head>
<body>
<header>
<nav class="navbar">
<a href="index.html" class="logo">EduBridge</a>
<ul class="nav-links">
<li><a href="index.html">Home</a></li>
<li><a href="webdev.html">Web Development</a></li>
<li><a href="ai.html">AI & ML</a></li>
<li><a href="career.html">Career</a></li>
<li>
<div class="theme-selector" id="themeSelector">
<button class="theme-selector-btn" id="themeButton">
<i class="fas fa-palette"></i>
Theme
</button>
<div class="theme-selector-dropdown">
<div class="theme-option" data-theme="light">
<i class="fas fa-sun"></i>
Light Mode
</div>
<div class="theme-option" data-theme="dark">
<i class="fas fa-moon"></i>
Dark Mode
</div>
</div>
</div>
</li>
</ul>
</nav>
</header>

<main class="auth-container">
<div class="auth-card">
<h2>Forgot Password</h2>
<p style="text-align:center;margin-bottom:1.5rem;color:var(--text);">Enter your registered email address and we'll send you a link to reset your password.</p>
<form id="forgotPasswordForm" class="auth-form">
<div class="form-group">
<label for="email">Email</label>
<input type="email" id="email" name="email" required>
</div>
<button type="submit" class="auth-button">Send Reset Link</button>
</form>
<div class="auth-links">
<p><a href="login.html">Back to Login</a></p>
</div>
</div>
</main>

<footer>
<div class="footer-content">
<div class="footer-section">
<h3>About Us</h3>
<p>EduBridge is dedicated to providing quality education in technology fields.</p>
</div>
<div class="footer-section">
<h3>Quick Links</h3>
<ul>
<li><a href="index.html">Home</a></li>
<li><a href="webdev.html">Web Development</a></li>
<li><a href="ai.html">AI & ML</a></li>
<li><a href="career.html">Career</a></li>
</ul>
</div>
<div class="footer-section">
<h3>Follow Us</h3>
<a href="https://x.com/shivam98997467" target="_blank" class="social-button" title="Follow us on Twitter">
<i class="fab fa-twitter"></i>
</a>
</div>
</div>
</footer>

<script>
const themeSelector = document.getElementById('themeSelector');
const themeButton = document.getElementById('themeButton');
const themeOptions = document.querySelectorAll('.theme-option');
const currentTheme = localStorage.getItem('theme') || 'light';

document.documentElement.setAttribute('data-theme', currentTheme);
updateActiveThemeOption(currentTheme);

themeButton.addEventListener('click', (e) => {
e.stopPropagation();
themeSelector.classList.toggle('active');
});

document.addEventListener('click', (e) => {
if (!themeSelector.contains(e.target)) {
themeSelector.classList.remove('active');
}
});

themeOptions.forEach(option => {
option.addEventListener('click', () => {
const theme = option.getAttribute('data-theme');
document.documentElement.setAttribute('data-theme', theme);
localStorage.setItem('theme', theme);
updateActiveThemeOption(theme);
themeSelector.classList.remove('active');
});
});

function updateActiveThemeOption(theme) {
themeOptions.forEach(option => {
if (option.getAttribute('data-theme') === theme) {
option.classList.add('active');
} else {
option.classList.remove('active');
}
});
}

document.getElementById('forgotPasswordForm').addEventListener('submit', function(e) {
e.preventDefault();
const email = this.email.value;
const btn = this.querySelector('.auth-button');
btn.textContent = 'Sending...';
btn.disabled = true;
setTimeout(() => {
btn.textContent = 'Send Reset Link';
btn.disabled = false;
const existing = this.querySelector('.success-message, .error-message');
if (existing) existing.remove();
const msg = document.createElement('div');
msg.className = 'success-message';
msg.textContent = 'If an account with that email exists, a reset link has been sent.';
msg.style.cssText = 'text-align:center;margin-top:1rem;color:#28a745;';
this.appendChild(msg);
}, 1500);
});

// 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' });
});
</script>

<button id="scrollToTop" aria-label="Scroll to top"><i class="fas fa-arrow-up"></i></button>
</body>
</html>
Loading