import { useMemo } from "react"; import ReactMarkdown from "react-markdown"; import { useDashboardStore } from "../store"; import { useI18n } from "../contexts/I18nContext"; export default function LearnPanel() { const graph = useDashboardStore((s) => s.graph); const tourActive = useDashboardStore((s) => s.tourActive); const currentTourStep = useDashboardStore((s) => s.currentTourStep); const startTour = useDashboardStore((s) => s.startTour); const stopTour = useDashboardStore((s) => s.stopTour); const setTourStep = useDashboardStore((s) => s.setTourStep); const nextTourStep = useDashboardStore((s) => s.nextTourStep); const prevTourStep = useDashboardStore((s) => s.prevTourStep); const selectNode = useDashboardStore((s) => s.selectNode); const { t } = useI18n(); const tourSteps = useMemo( () => graph?.tour ? [...graph.tour].sort((a, b) => a.order - b.order) : [], [graph?.tour] ); const hasTour = tourSteps.length > 0; // State 1: No tour available if (!hasTour) { return (
{t.learnPanel.noTour}
{t.learnPanel.noTourHint}
{tourSteps.length} {t.learnPanel.steps} · {t.learnPanel.guidedWalkthrough}
{children}
), strong: ({ children }) => ( {children} ), code: ({ className, children }) => { const isBlock = className?.includes("language-"); return isBlock ? (
{children}
) : (
{children}
);
},
ul: ({ children }) => (
{step.languageLesson}