import React, { useState, useEffect } from 'react'; // Import pages import HomePage from './pages/HomePage'; import { Sun, Moon, Menu, X, ExternalLink } from 'lucide-react'; /* ============================================== Main App Component ============================================== */ const App = () => { /* ============================================== State Management ============================================== */ const [darkMode, setDarkMode] = useState(false); const [mobileMenuOpen, setMobileMenuOpen] = useState(false); const [isMobile, setIsMobile] = useState(window.innerWidth < 768); /* ============================================== Effects ============================================== */ // Handle dark mode useEffect(() => { if (darkMode) { document.body.classList.add('dark-mode'); } else { document.body.classList.remove('dark-mode'); } }, [darkMode]); // Add resize listener to handle responsive behavior useEffect(() => { const handleResize = () => { const mobile = window.innerWidth < 768; setIsMobile(mobile); // Close mobile menu on desktop if (!mobile && mobileMenuOpen) { setMobileMenuOpen(false); } }; window.addEventListener('resize', handleResize); return () => window.removeEventListener('resize', handleResize); }, [mobileMenuOpen]); /* ============================================== Event Handlers ============================================== */ const toggleDarkMode = () => { setDarkMode(!darkMode); }; // Function to open social links const openSocialLink = (url) => { window.open(url, '_blank', 'noopener,noreferrer'); }; // Social links data const socialLinks = [ { name: 'GitHub', url: 'https://github.com/charlottecroce' }, { name: 'Codeberg', url: 'https://codeberg.org/charlottecroce' }, { name: 'LinkedIn', url: 'https://linkedin.com/in/charlottecroce' }, { name: 'Mastodon', url: 'https://hachyderm.io/@charlotte200' } ]; return (
{/* ============================================== Navbar ============================================== */}
./charlotte.sh
{/* Desktop Navigation Links */}
{socialLinks.map((link) => ( ))}
{/* Mobile Menu Button */}
{/* ============================================== Mobile Menu ============================================== */}
{/* Social Links for Mobile */} {socialLinks.map((link) => ( ))}
{/* ============================================== Main Content ============================================== */}
{/* ============================================== Footer ============================================== */}
); }; export default App;