From 784e859157814f6cf28ac6b9a1740b08052cad1d Mon Sep 17 00:00:00 2001 From: Thomas Fransolet Date: Wed, 11 Mar 2026 11:29:41 +0100 Subject: [PATCH] Better translations --- src/app/page.tsx | 77 ++++++++++++++++++++++++++++++++---------------- 1 file changed, 52 insertions(+), 25 deletions(-) diff --git a/src/app/page.tsx b/src/app/page.tsx index 26a47b0..4b6af85 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -1,6 +1,6 @@ 'use client'; -import React, { useState, useEffect } from 'react'; +import React, { useState, useEffect, useRef } from 'react'; import { resolveImage } from '@/data/stitch-images'; import translations, { Language } from '@/data/translations'; @@ -15,11 +15,11 @@ const MODULE_META = [ { id: 'stats', icon: 'monitoring', theme: 'rose' }, ]; -const LANGUAGES: { code: Language; label: string }[] = [ - { code: 'fr', label: 'FR' }, - { code: 'en', label: 'EN' }, - { code: 'nl', label: 'NL' }, - { code: 'de', label: 'DE' }, +const LANGUAGES: { code: Language; label: string; name: string }[] = [ + { code: 'fr', label: 'FR', name: 'Français' }, + { code: 'en', label: 'EN', name: 'English' }, + { code: 'nl', label: 'NL', name: 'Nederlands' }, + { code: 'de', label: 'DE', name: 'Deutsch' }, ]; export default function Home() { @@ -34,6 +34,8 @@ export default function Home() { const [activeModule, setActiveModule] = useState(0); const [isMenuOpen, setIsMenuOpen] = useState(false); const [lang, setLang] = useState('fr'); + const [isLangOpen, setIsLangOpen] = useState(false); + const langDropdownRef = useRef(null); const t = translations[lang]; @@ -59,6 +61,17 @@ export default function Home() { document.documentElement.lang = lang; }, [lang]); + // Close lang dropdown on outside click + useEffect(() => { + const handler = (e: MouseEvent) => { + if (langDropdownRef.current && !langDropdownRef.current.contains(e.target as Node)) { + setIsLangOpen(false); + } + }; + document.addEventListener('mousedown', handler); + return () => document.removeEventListener('mousedown', handler); + }, []); + const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); setStatus('loading'); @@ -107,24 +120,12 @@ export default function Home() { /> MyInfoMate -