'use client'; import React, { useState, useEffect, useRef } from 'react'; import { resolveImage } from '@/data/stitch-images'; import translations, { Language } from '@/data/translations'; const MODULE_META = [ { id: 'map', icon: 'map', theme: 'rose' }, { id: 'quiz', icon: 'sports_esports', theme: 'rose' }, { id: 'video', icon: 'videocam', theme: 'rose' }, { id: 'article', icon: 'article', theme: 'rose' }, { id: 'agenda', icon: 'calendar_month', theme: 'rose' }, { id: 'offline', icon: 'download_for_offline', theme: 'rose' }, { id: 'web', icon: 'public', theme: 'rose' }, { id: 'stats', icon: 'monitoring', theme: 'rose' }, ]; 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() { const [formData, setFormData] = useState({ firstName: '', lastName: '', email: '', message: '' }); const [status, setStatus] = useState<'idle' | 'loading' | 'success' | 'error'>('idle'); 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]; const modules = MODULE_META.map((meta, i) => ({ ...meta, title: t.modules.items[i].title, description: t.modules.items[i].description, value: t.modules.items[i].value, })); // Lock body scroll when mobile menu is open useEffect(() => { if (isMenuOpen) { document.body.style.overflow = 'hidden'; } else { document.body.style.overflow = 'auto'; } return () => { document.body.style.overflow = 'auto'; }; }, [isMenuOpen]); // Update html lang attribute useEffect(() => { 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'); try { const response = await fetch("https://formspree.io/f/xbdaajlo", { method: "POST", headers: { "Content-Type": "application/json", "Accept": "application/json" }, body: JSON.stringify(formData) }); if (response.ok) { setStatus('success'); setFormData({ firstName: '', lastName: '', email: '', message: '' }); } else { setStatus('error'); } } catch (error) { setStatus('error'); } }; const handleChange = (e: React.ChangeEvent) => { const { name, value } = e.target; setFormData(prev => ({ ...prev, [name]: value })); }; const scrollToContact = (e: React.MouseEvent) => { e.preventDefault(); document.getElementById('contact')?.scrollIntoView({ behavior: 'smooth' }); }; return (
{/* Top Navigation */}
MyInfoMate Logo MyInfoMate
{t.nav.login} {/* Language selector - desktop */}
{isLangOpen && (
{LANGUAGES.map((l) => ( ))}
)}
{/* Mobile Menu Backdrop */}
setIsMenuOpen(false)} /> {/* Mobile Menu Sidebar */}
{/* Close Button Header */}
{/* Hero Section */}
{t.hero.badge}

{t.hero.titleBefore}{t.hero.titleHighlight}{t.hero.titleAfter}

{t.hero.subtitle}

{/* UI Mockup Group - Improved for Mobile */}
{/* Interactive Map Tablet Preview */}
Modern Interactive Map Interface

{t.mockup.mapTitle}

{t.mockup.mapSubtitle}

{/* Agenda Mobile Preview - Hidden or repositioned on very small screens */}

{t.mockup.agenda}

Mockup 1
{/* Tours Mobile Preview */}

{t.mockup.tours}

Mockup 2
{/* Strategic Points */}

{t.strategic.sectionLabel}

{t.strategic.sectionTitle}

{/* Feature 1 */}
sync

{t.strategic.feature1Title}

{t.strategic.feature1Desc}

{/* Feature 2 */}
code_off

{t.strategic.feature2Title}

{t.strategic.feature2Desc}

{/* Feature 3 */}
download_for_offline

{t.strategic.feature3Title}

{t.strategic.feature3Desc}

{/* Feature 4 */}
dashboard_customize

{t.strategic.feature4Title}

{t.strategic.feature4Desc}

{/* Deployment Modes Section */}

{t.deployment.sectionLabel}

{t.deployment.sectionTitle}

{t.deployment.sectionDesc}

{/* Mode 1: Mobile BYOD */}
smartphone

{t.deployment.mode1Title}

{t.deployment.mode1Desc}

{/* Mode 2: Kiosk Tablet */}
tablet_android

{t.deployment.mode2Title}

{t.deployment.mode2Desc}

{/* Mode 3: Web App */}
language

{t.deployment.mode3Title}

{t.deployment.mode3Desc}

{/* Mode 4: Future VR/AR */}
{t.deployment.comingSoon}
view_in_ar

{t.deployment.mode4Title}

{t.deployment.mode4Desc}

{/* Interactive Modules Section (Module Explorer) */}

{t.modules.sectionLabel}

{t.modules.sectionTitle}

{t.modules.sectionDesc}

{/* Sidebar (Tabs) */}
{modules.map((module, index) => ( ))}
{/* Main Display */}
{/* Mobile: single centered card */}
{modules[activeModule].icon} {modules[activeModule].title}

{modules[activeModule].title}

{modules[activeModule].description}

verified {modules[activeModule].value}

{modules[activeModule].icon}
{modules[activeModule].title}
{modules[activeModule].icon}
{/* Desktop: original layout + enobase-style 3D phone stack */}
{/* Description */}
{modules[activeModule].icon} {modules[activeModule].title}

{modules[activeModule].title}

{modules[activeModule].description}

verified {t.modules.valueLabel} {modules[activeModule].value}

{/* Enobase-style 3D horizontal perspective phone stack */}
{modules.map((module, index) => { const deckPos = (index - activeModule + modules.length) % modules.length; const isActive = deckPos === 0; return (
{module.icon}
{module.title}
{module.icon}
); })}
{/* AI Assistant */}
auto_awesome {t.ai.badge}

{t.ai.sectionLabel}

{t.ai.titleBefore}{t.ai.titleHighlight}{t.ai.titleAfter}

{t.ai.desc}

{/* Chat mockup */}
smart_toy

{t.ai.mockupName}

{t.ai.mockupOnline}

smart_toy
{t.ai.mockupMsg1}
{t.ai.mockupMsg2}
smart_toy
{t.ai.mockupMsg3}

{t.ai.mockupInputPlaceholder}

send
{/* Features grid */}
translate

{t.ai.feature1Title}

{t.ai.feature1Desc}

manage_search

{t.ai.feature2Title}

{t.ai.feature2Desc}

forum

{t.ai.feature3Title}

{t.ai.feature3Desc}

tune

{t.ai.feature4Title}

{t.ai.feature4Desc}

{/* White Label / Value Proposition */}
palette

{t.whitelabel.colorPalette}

{t.whitelabel.themeApplied}

{t.whitelabel.sectionLabel}

{t.whitelabel.title}

  • check_circle {t.whitelabel.item1}
  • check_circle {t.whitelabel.item2}
  • check_circle {t.whitelabel.item3}
{/* Target Audience */}

{t.audience.title}

{t.audience.subtitle}

museum

{t.audience.item1Title}

{t.audience.item1Desc}

travel_explore

{t.audience.item2Title}

{t.audience.item2Desc}

hotel

{t.audience.item3Title}

{t.audience.item3Desc}

{/* Final CTA */}

{t.cta.titleBefore}{t.cta.titleHighlight}{t.cta.titleAfter}

{t.cta.subtitle}

{t.cta.button2}
{/* Contact Form Section */}

{t.contact.sectionLabel}

{t.contact.title}

{t.contact.subtitle}

{status === 'success' ? (
task_alt

{t.contact.successTitle}

{t.contact.successDesc}

) : (
{status === 'error' && (
error {t.contact.errorMsg}
)}
)}
{/* Footer */}
); }