import { useStore } from "../store";
import { DofusIcon, GID_TO_ICON } from "./DofusIconWidget";
export default function HomeView({ needsSync, onSync }: { needsSync?: boolean; onSync?: () => void }) {
const { guides, openGuide, profiles, activeProfileId, syncing } = useStore();
const activeProfile = profiles.find(p => p.id === activeProfileId);
const totalQuests = guides.reduce((s, g) => s + g.total_quests, 0);
const totalCompleted = guides.reduce((s, g) => s + g.completed_quests, 0);
const globalPct = totalQuests > 0 ? Math.round((totalCompleted / totalQuests) * 100) : 0;
const completedGuides = guides.filter(g => g.total_quests > 0 && g.completed_quests === g.total_quests);
const inProgressGuides = guides.filter(g => g.completed_quests > 0 && g.completed_quests < g.total_quests);
return (
{/* Header */}
Tougli — Guide Dofus
{activeProfile && (
Profil actif : {activeProfile.name}
)}
{/* First-time sync CTA */}
{needsSync && (
Première utilisation
Aucun guide chargé. Synchronisez pour récupérer les données depuis Google Sheets.
)}
{/* Global progress */}
{guides.length > 0 && (
Progression globale
{totalCompleted} / {totalQuests} quêtes ({globalPct}%)
)}
{/* En cours */}
{inProgressGuides.length > 0 && (
)}
{/* Tous les guides */}
);
}
function Stat({ label, value, color }: { label: string; value: number; color: string }) {
return (
{value}
{label}
);
}
function Section({ title, guides, onOpen }: {
title: string;
guides: import("../types").GuideListItem[];
onOpen: (gid: string) => void;
}) {
return (
{title}
{guides.map(g => )}
);
}
function GuideCard({ guide, onOpen }: {
guide: import("../types").GuideListItem;
onOpen: (gid: string) => void;
}) {
const pct = guide.total_quests > 0 ? Math.round((guide.completed_quests / guide.total_quests) * 100) : 0;
const isDone = pct === 100 && guide.total_quests > 0;
const inProgress = guide.completed_quests > 0 && !isDone;
const hasIcon = GID_TO_ICON[guide.gid] != null;
const accentColor = isDone ? "#4ade80" : inProgress ? "#f0c040" : "#4a9eff";
const borderColor = isDone ? "rgba(74,222,128,0.25)" : "#2d3748";
return (
// Wrapper pour permettre à l'icône de déborder vers le haut
);
}