4-19
This commit is contained in:
parent
45ef5a1a64
commit
8efa9abcc8
4 changed files with 461 additions and 77 deletions
98
index.html
98
index.html
|
@ -1,5 +1,6 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
@ -11,21 +12,29 @@
|
|||
|
||||
<body>
|
||||
<a href="#main-content" class="skip-link">Skip to main content</a>
|
||||
|
||||
|
||||
<header>
|
||||
<nav aria-label="Main navigation">
|
||||
<div class="container">
|
||||
<a href="/" class="logo">./charlotte.sh</a>
|
||||
|
||||
|
||||
<button class="menu-toggle" aria-expanded="false" aria-controls="primary-menu" aria-label="Toggle menu">
|
||||
<i data-lucide="menu" id="menu-icon" aria-hidden="true"></i>
|
||||
<i data-lucide="x" id="close-icon" style="display: none;" aria-hidden="true"></i>
|
||||
</button>
|
||||
|
||||
|
||||
<ul class="nav-links" id="primary-menu">
|
||||
<li><a href="https://github.com/charlottecroce" target="_blank" rel="noopener noreferrer">GitHub <i data-lucide="external-link" class="icon-small" aria-hidden="true"></i><span class="visually-hidden">(opens in new tab)</span></a></li>
|
||||
<li><a href="https://codeberg.org/charlottecroce" target="_blank" rel="noopener noreferrer">Codeberg <i data-lucide="external-link" class="icon-small" aria-hidden="true"></i><span class="visually-hidden">(opens in new tab)</span></a></li>
|
||||
<li><a href="https://linkedin.com/in/charlottecroce" target="_blank" rel="noopener noreferrer">LinkedIn <i data-lucide="external-link" class="icon-small" aria-hidden="true"></i><span class="visually-hidden">(opens in new tab)</span></a></li>
|
||||
<li><a href="/">Home</a></li>
|
||||
<li><a href="/resume" aria-current="page">Resume</a></li>
|
||||
<li><a href="https://github.com/charlottecroce" target="_blank" rel="noopener noreferrer">GitHub <i
|
||||
data-lucide="external-link" class="icon-small" aria-hidden="true"></i><span
|
||||
class="visually-hidden">(opens in new tab)</span></a></li>
|
||||
<li><a href="https://codeberg.org/charlottecroce" target="_blank" rel="noopener noreferrer">Codeberg <i
|
||||
data-lucide="external-link" class="icon-small" aria-hidden="true"></i><span
|
||||
class="visually-hidden">(opens in new tab)</span></a></li>
|
||||
<li><a href="https://linkedin.com/in/charlottecroce" target="_blank" rel="noopener noreferrer">LinkedIn <i
|
||||
data-lucide="external-link" class="icon-small" aria-hidden="true"></i><span
|
||||
class="visually-hidden">(opens in new tab)</span></a></li>
|
||||
<li>
|
||||
<button class="theme-toggle" aria-label="Toggle dark mode">
|
||||
<i data-lucide="moon" id="moon-icon" aria-hidden="true"></i>
|
||||
|
@ -42,23 +51,30 @@
|
|||
<section class="intro">
|
||||
<h1>Hi! I'm Charlotte</h1>
|
||||
<h2>About Me</h2>
|
||||
<p>I'm a cybersecurity student from the Northeast USA. I do security engineering at the Leahy Center in Burlington, VT.</p>
|
||||
<p>You can find most of my personal stuff on my <a href="https://codeberg.org/charlottecroce" target="_blank" rel="noopener noreferrer">Codeberg<i data-lucide="external-link" class="icon-small" aria-hidden="true"></i><span class="visually-hidden">(opens in new tab)</span></a> account.</p>
|
||||
<p>I'm a cybersecurity student from the Northeast USA. I do security engineering at the Leahy Center in
|
||||
Burlington, VT.</p>
|
||||
<p>You can find most of my personal stuff on my <a href="https://codeberg.org/charlottecroce" target="_blank"
|
||||
rel="noopener noreferrer">Codeberg<i data-lucide="external-link" class="icon-small"
|
||||
aria-hidden="true"></i><span class="visually-hidden">(opens in new tab)</span></a> account.</p>
|
||||
</section>
|
||||
|
||||
<section class="projects">
|
||||
<h2>Projects</h2>
|
||||
<h2>My Projects</h2>
|
||||
<div class="project-grid">
|
||||
<article class="project">
|
||||
<h3>Champlain Tech Journals</h3>
|
||||
<p>Notes, code, and lab write-ups from my Champlain College courses</p>
|
||||
<a href="https://codeberg.org/charlottecroce/ChamplainTechJournals" target="_blank" rel="noopener noreferrer">Source Code<i data-lucide="external-link" class="icon-small" aria-hidden="true"></i><span class="visually-hidden">(opens in new tab)</span></a>
|
||||
<a href="https://codeberg.org/charlottecroce/ChamplainTechJournals" target="_blank"
|
||||
rel="noopener noreferrer">Source Code<i data-lucide="external-link" class="icon-small"
|
||||
aria-hidden="true"></i><span class="visually-hidden">(opens in new tab)</span></a>
|
||||
</article>
|
||||
|
||||
|
||||
<article class="project">
|
||||
<h3>Nøkken Health</h3>
|
||||
<p>A Flutter app to track and analyze health data</p>
|
||||
<a href="https://codeberg.org/charlottecroce/nokken" target="_blank" rel="noopener noreferrer">Source Code<i data-lucide="external-link" class="icon-small" aria-hidden="true"></i><span class="visually-hidden">(opens in new tab)</span></a>
|
||||
<a href="https://codeberg.org/charlottecroce/nokken" target="_blank" rel="noopener noreferrer">Source Code<i
|
||||
data-lucide="external-link" class="icon-small" aria-hidden="true"></i><span
|
||||
class="visually-hidden">(opens in new tab)</span></a>
|
||||
</article>
|
||||
</div>
|
||||
</section>
|
||||
|
@ -75,60 +91,14 @@
|
|||
<li><a href="https://bookwyrm.social/user/lottie" target="_blank" rel="noopener noreferrer">BookWyrm</a></li>
|
||||
</ul>
|
||||
<p>©<span id="current-year"></span> Charlotte Croce</p>
|
||||
<p class="theme-note">If you like the colors of this website, check out my <a href="https://marketplace.visualstudio.com/items?itemName=charlotte-dev.fruitbasket-theme" target="_blank" rel="noopener noreferrer">VS Code Theme<i data-lucide="external-link" class="icon-small" aria-hidden="true"></i><span class="visually-hidden">(opens in new tab)</span></a></p>
|
||||
<p class="theme-note">If you like the colors of this website, check out my <a
|
||||
href="https://marketplace.visualstudio.com/items?itemName=charlotte-dev.fruitbasket-theme" target="_blank"
|
||||
rel="noopener noreferrer">VS Code Theme<i data-lucide="external-link" class="icon-small"
|
||||
aria-hidden="true"></i><span class="visually-hidden">(opens in new tab)</span></a></p>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
<script>
|
||||
// Initialize Lucide icons
|
||||
lucide.createIcons();
|
||||
|
||||
// Update copyright year
|
||||
document.getElementById('current-year').textContent = new Date().getFullYear();
|
||||
|
||||
// Theme toggle
|
||||
const themeToggle = document.querySelector('.theme-toggle');
|
||||
const moonIcon = document.getElementById('moon-icon');
|
||||
const sunIcon = document.getElementById('sun-icon');
|
||||
|
||||
// Check for saved preference
|
||||
if (localStorage.getItem('darkMode') === 'true') {
|
||||
document.body.classList.add('dark-mode');
|
||||
moonIcon.style.display = 'none';
|
||||
sunIcon.style.display = 'block';
|
||||
}
|
||||
|
||||
themeToggle.addEventListener('click', () => {
|
||||
document.body.classList.toggle('dark-mode');
|
||||
const isDark = document.body.classList.contains('dark-mode');
|
||||
moonIcon.style.display = isDark ? 'none' : 'block';
|
||||
sunIcon.style.display = isDark ? 'block' : 'none';
|
||||
localStorage.setItem('darkMode', isDark ? 'true' : 'false');
|
||||
});
|
||||
|
||||
// Mobile menu
|
||||
const menuToggle = document.querySelector('.menu-toggle');
|
||||
const navLinks = document.querySelector('.nav-links');
|
||||
const menuIcon = document.getElementById('menu-icon');
|
||||
const closeIcon = document.getElementById('close-icon');
|
||||
|
||||
menuToggle.addEventListener('click', () => {
|
||||
const isExpanded = menuToggle.getAttribute('aria-expanded') === 'true';
|
||||
menuToggle.setAttribute('aria-expanded', !isExpanded);
|
||||
navLinks.classList.toggle('menu-open');
|
||||
menuIcon.style.display = isExpanded ? 'block' : 'none';
|
||||
closeIcon.style.display = isExpanded ? 'none' : 'block';
|
||||
});
|
||||
|
||||
// Close menu when clicking outside
|
||||
document.addEventListener('click', (event) => {
|
||||
if (!event.target.closest('.menu-toggle') && !event.target.closest('.nav-links') && navLinks.classList.contains('menu-open')) {
|
||||
navLinks.classList.remove('menu-open');
|
||||
menuToggle.setAttribute('aria-expanded', 'false');
|
||||
menuIcon.style.display = 'block';
|
||||
closeIcon.style.display = 'none';
|
||||
}
|
||||
});
|
||||
</script>
|
||||
<script src="script.js"></script>
|
||||
</body>
|
||||
|
||||
</html>
|
Loading…
Add table
Add a link
Reference in a new issue