import { useEffect, useState } from "react"; import { useStore } from "../store"; import { SectionItem, QuestItem, CombatType } from "../types"; import QuestDetailPanel from "./QuestDetailPanel"; import { TextWithCoords } from "./TextWithCoords"; function useWindowWidth() { const [width, setWidth] = useState(window.innerWidth); useEffect(() => { const handler = () => setWidth(window.innerWidth); window.addEventListener("resize", handler); return () => window.removeEventListener("resize", handler); }, []); return width; } export function combatIcon(name: string): string { const l = name.toLowerCase(); if (l === "solo") return "🗡️"; if (l === "groupe") return "⚔️"; if (l === "donjon") return "💀"; if ( l === "combat_vagues" || l === "combat_tactique" || l === "combat_aleatoire" || l === "combat_zone" || l === "combat" ) return "🗡️"; if (l === "deplacement") return "🗺️"; if (l === "item") return "📦"; // Fallback — conserve l'ancienne logique pour les données CSV existantes if (l.includes("solo") || l.includes("seul")) return "🗡️"; if (l.includes("group") || l.includes("groupe")) return "⚔️"; if (l.includes("donjon") || l.includes("boss")) return "💀"; return "🗡️"; } export default function GuideView() { const { activeGuideData, completedQuests, toggleQuest, activeProfileId, resourcesPanelCollapsed, setResourcesPanelCollapsed, resourceInventory, setResourceQuantity } = useStore(); const resourcesCollapsed = resourcesPanelCollapsed; const setResourcesCollapsed = setResourcesPanelCollapsed; const [selectedQuest, setSelectedQuest] = useState<{ name: string; url: string | null } | null>(null); const windowWidth = useWindowWidth(); const resourcesIsOverlay = resourcesCollapsed || windowWidth < 500; if (!activeGuideData) return null; if (selectedQuest && activeProfileId) { return (