import { useState, useEffect } from 'react' import { useTranslation } from 'react-i18next'; import Hero from './Hero'; import About from './About'; import Experience from './Experience/Experience'; import Skills from './Skills'; import Education from './Education'; import Contact from './Contact'; import { ThemeMenu, ThemeType, ThemeSelected } from './ThemeMenu'; function App() { const { t, i18n } = useTranslation(); const [theme, setTheme] = useState(() => { const savedTheme = localStorage.getItem('theme'); return (savedTheme as ThemeType) || 'dark'; }); const [themeSelected, setThemeSelected] = useState(() => { const savedThemeSelected = localStorage.getItem('themeSelected'); return (savedThemeSelected as ThemeSelected) || 'system'; }); // Charger la langue sauvegardée au démarrage useEffect(() => { const savedLanguage = localStorage.getItem('language'); if (savedLanguage && (savedLanguage === 'fr' || savedLanguage === 'en')) { i18n.changeLanguage(savedLanguage); } }, [i18n]); useEffect(() => { if (themeSelected === 'system') { const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)'); const handleChange = () => { const systemTheme = mediaQuery.matches ? 'dark' : 'light'; setTheme(systemTheme); document.documentElement.className = `theme-${systemTheme}`; }; handleChange(); localStorage.setItem('themeSelected', themeSelected); mediaQuery.addEventListener('change', handleChange); return () => mediaQuery.removeEventListener('change', handleChange); } else { setTheme(themeSelected); document.documentElement.className = `theme-${themeSelected}`; } // Sauvegarder le thème sélectionné localStorage.setItem('themeSelected', themeSelected); localStorage.setItem('theme', theme); }, [themeSelected, theme]); const toggleLanguage = () => { const newLang = i18n.language === 'fr' ? 'en' : 'fr'; i18n.changeLanguage(newLang); localStorage.setItem('language', newLang); }; const handleThemeChange = (newTheme: ThemeSelected) => { setThemeSelected(newTheme); }; const scrollToSection = (e: React.MouseEvent, id: string) => { e.preventDefault(); const section = document.getElementById(id); if (section) { section.scrollIntoView({ behavior: 'smooth' }); window.history.pushState(null, '', `#${id}`); } } return (
{/* Background Blobs */}
{/* Header */}

Louis EMARD

{/* Main Content */}
{/* Footer */}
) } export default App