|
1 | 1 | import React, { useState, useEffect, useMemo } from 'react' |
| 2 | +import { CustomTooltip } from "@remix-ui/helper" |
2 | 3 | import { Link } from 'react-router-dom' |
3 | 4 | import { useAppSelector } from '../../redux/hooks' |
4 | 5 | import RepoImporter from '../../components/RepoImporter' |
@@ -60,6 +61,13 @@ function HomePage(): JSX.Element { |
60 | 61 | const [showFilters, setShowFilters] = useState(false) |
61 | 62 | const [selectedLevels, setSelectedLevels] = useState<number[]>([]) |
62 | 63 | const [selectedTags, setSelectedTags] = useState<string[]>([]) |
| 64 | + const [completedTutorials, setCompletedTutorials] = useState<Record<string, boolean>>({}) |
| 65 | + |
| 66 | + useEffect(() => { |
| 67 | + // Load completed tutorials from localStorage |
| 68 | + const completed = JSON.parse(localStorage.getItem('learneth_completed_tutorials') || '{}') |
| 69 | + setCompletedTutorials(completed) |
| 70 | + }, []) |
63 | 71 |
|
64 | 72 | const allTags = useMemo(() => { |
65 | 73 | if (!selectedRepo) return [] |
@@ -176,6 +184,14 @@ function HomePage(): JSX.Element { |
176 | 184 | <div className="d-flex align-items-center"> |
177 | 185 | <Antenna level={r.levelNum} /> |
178 | 186 | <span className="small fw-medium text-body-emphasis">{r.levelText}</span> |
| 187 | + {completedTutorials[r.id] && ( |
| 188 | + <CustomTooltip |
| 189 | + placement={"auto"} |
| 190 | + tooltipId="tutorialCompletedTooltip" |
| 191 | + tooltipClasses="text-nowrap" |
| 192 | + tooltipText={<span>{'Completed'}</span>} |
| 193 | + ><i className="text-success ms-2 fas fa-check"></i></CustomTooltip> |
| 194 | + )} |
179 | 195 | </div> |
180 | 196 | <MetaRight stepsLen={r.stepsLen} duration={r.duration} /> |
181 | 197 | </div> |
|
0 commit comments