'use client'; import dynamic from 'next/dynamic'; import Navigation from '@/components/Navigation'; import LunarCalendar from '@/components/LunarCalendar'; import FullMoonDescriptions from '@/components/FullMoonDescriptions'; import PhaseSimulator from '@/components/PhaseSimulator'; import Quiz from '@/components/Quiz'; import Articles from '@/components/Articles'; import PDFDownload from '@/components/PDFDownload'; import { useLocale } from '@/components/LocaleProvider'; import { ts } from '@/lib/i18n'; // Lazy-load heavy canvas/3D components with loading placeholders const LoadingPlaceholder = () => (
🌙 Loading...
); const HeroSection = dynamic(() => import('@/components/HeroSection'), { ssr: false }); const VisibilityMap = dynamic(() => import('@/components/VisibilityMap'), { ssr: false, loading: LoadingPlaceholder }); const Infographics = dynamic(() => import('@/components/Infographics'), { ssr: false, loading: LoadingPlaceholder }); export default function Home() { const { locale } = useLocale(); return ( <> (e.currentTarget.style.top = '0.5rem')} onBlur={(e) => (e.currentTarget.style.top = '-100%')} > Skip to content

🌕

{ts('footer_text', locale)}

{ts('footer_description', locale)}

© {new Date().getFullYear()} Moon Phases · Next.js + Three.js · 11 {locale === 'fr' ? 'langues' : 'languages'}
); }