// src/App.jsx — top-level Alcy Mémoires chatbot const TWEAK_DEFAULTS = /*EDITMODE-BEGIN*/{ "direction": "memoires", "kidMode": false, "textSize": 15, "showSidebar": true }/*EDITMODE-END*/; function nowTime() { const d = new Date(); return d.toLocaleTimeString("fr-FR", { hour: "2-digit", minute: "2-digit" }); } function App() { const [t, setTweak] = useTweaks(TWEAK_DEFAULTS); const [screen, setScreen] = React.useState("welcome"); // welcome | chat const [messages, setMessages] = React.useState([]); const [activeParcours, setActiveParcours] = React.useState("all"); const D = window.ALCY_DATA; // Apply text-size CSS var React.useEffect(() => { document.documentElement.style.setProperty("--text-base", `${t.textSize}px`); }, [t.textSize]); const askQuestion = React.useCallback(async (qText) => { // Move to chat screen if needed and add the welcome alcy message setScreen("chat"); setMessages((prev) => { const base = prev.length === 0 ? [{ role: "alcy", text: D.FLOWS.welcome.text, time: nowTime() }] : prev; return [ ...base, { role: "user", text: qText, time: nowTime() }, { role: "alcy", typing: true }, ]; }); // Simulate latency, then resolve try { const res = await fetch("https://n8n.bradbot.fr/webhook/88451171-6451-4cc9-93a3-3aad1692b585", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ message: qText }) }); const data = await res.json(); setMessages((prev) => { const out = prev.slice(0, -1); // drop typing out.push({ role: "alcy", text: data.output || "Je n’ai pas reçu de réponse d’Alcy.", followups: [ "Résoudre une photo mystère", "Explorer un lieu du village", "Découvrir un ancien métier", "Écouter une histoire courte", "Poser une question aux archives" ], time: nowTime(), }); return out; }); } catch (error) { setMessages((prev) => { const out = prev.slice(0, -1); // drop typing out.push({ role: "alcy", text: "Je n’arrive pas à joindre les archives pour le moment.", time: nowTime(), }); return out; }); } }, [D]); const handleFollowup = (q) => askQuestion(q); const handleParcours = (id) => { setActiveParcours(id); if (id === "forges") askQuestion("Quelles étaient les 5 forges du village ?"); if (id === "cyclisme") askQuestion("Quand Paris–Roubaix est-elle passée à Auchy ?"); if (id === "ecole") askQuestion("Photos d'école d'avant 1960"); }; const goHome = () => { setScreen("welcome"); setMessages([]); setActiveParcours("all"); }; return (